Changeset 8cc5cb0


Ignore:
Timestamp:
Aug 11, 2016, 6:09:33 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, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
1ca15c1
Parents:
6f7424a
Message:

more refactoring of parser code

Location:
src/Parser
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ParseNode.h

    r6f7424a r8cc5cb0  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 10 21:51:49 2016
    13 // Update Count     : 437
     12// Last Modified On : Thu Aug 11 12:24:11 2016
     13// Update Count     : 443
    1414//
    1515
     
    363363        // StatementNode *add_controlexp( ExpressionNode * );
    364364        StatementNode *append_block( StatementNode * );
    365         StatementNode *append_last_case( StatementNode * );
     365        virtual StatementNode *append_last_case( StatementNode * );
    366366
    367367        void print( std::ostream &os, int indent = 0) const;
     
    392392                return this;
    393393        }
     394        virtual StatementNode *append_last_case( StatementNode * );
    394395        virtual std::list<std::string> get_labels() const { assert( false ); return StatementNode::get_labels(); }
    395396
     
    411412};
    412413
     414Statement *build_expr( ExpressionNode *ctl );
    413415Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt );
    414416Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt );
     417Statement *build_case( ExpressionNode *ctl );
     418Statement *build_default();
    415419Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false );
    416420Statement *build_for( ForCtl *forctl, StatementNode *stmt );
    417421Statement *build_branch( std::string identifier, BranchStmt::Type kind );
    418 Statement *build_case( ExpressionNode *ctl );
    419 Statement *build_default();
     422Statement *build_computedgoto( ExpressionNode *ctl );
     423Statement *build_return( ExpressionNode *ctl );
     424Statement *build_throw( ExpressionNode *ctl );
    420425
    421426//##############################################################################
  • src/Parser/StatementNode.cc

    r6f7424a r8cc5cb0  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 10 22:08:38 2016
    13 // Update Count     : 173
     12// Last Modified On : Thu Aug 11 16:19:45 2016
     13// Update Count     : 210
    1414//
    1515
     
    118118
    119119StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
     120        assert( false );
    120121        if ( stmt != 0 ) {
    121122                StatementNode *next = ( StatementNode *)get_link();
    122123                if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )
    123                         next->append_last_case ( stmt );
     124                        next->append_last_case( stmt );
    124125                else
    125126                        if ( block == 0 )
     
    128129                                block->set_link( stmt );
    129130        } // if
     131        return this;
     132}
     133
     134StatementNode *StatementNode2::append_last_case( StatementNode *stmt ) {
     135        StatementNode *prev = this;
     136        for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_link() ) {
     137                StatementNode2 *node = dynamic_cast<StatementNode2 *>(curr);
     138                assert( node );
     139                assert( dynamic_cast<CaseStmt *>(node->stmt) );
     140                prev = curr;
     141        } // for
     142        StatementNode2 *node = dynamic_cast<StatementNode2 *>(prev);
     143        std::list<Statement *> stmts;
     144        buildList( stmt, stmts );
     145        CaseStmt * caseStmt;
     146        caseStmt = dynamic_cast<CaseStmt *>(node->stmt);
     147        caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
    130148        return this;
    131149}
     
    205223                                return new NullStmt( labs );
    206224                }
     225                assert( false );
    207226          case If:
    208227                // {
     
    220239                assert( false );
    221240          case Switch:
    222                 //return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
     241                // return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    223242                assert( false );
    224243          case Case:
    225                 return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
     244                //return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
    226245                assert( false );
    227246          case Default:
    228                 return new CaseStmt( labs, 0, branches, true );
     247                //return new CaseStmt( labs, 0, branches, true );
    229248                assert( false );
    230249          case While:
     
    260279                assert( false );
    261280          case Goto:
    262                 {
    263                         if ( get_target() == "" ) {                                     // computed goto
    264                                 assert( get_control() != 0 );
    265                                 return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
    266                         } // if
    267 
    268                         return new BranchStmt( labs, get_target(), BranchStmt::Goto );
    269                 }
     281                // {
     282                //      if ( get_target() == "" ) {                                     // computed goto
     283                //              assert( get_control() != 0 );
     284                //              return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
     285                //      } // if
     286
     287                //      return new BranchStmt( labs, get_target(), BranchStmt::Goto );
     288                // }
     289                assert( false );
    270290          case Break:
    271                 return new BranchStmt( labs, get_target(), BranchStmt::Break );
     291                // return new BranchStmt( labs, get_target(), BranchStmt::Break );
    272292                assert( false );
    273293          case Continue:
    274                 return new BranchStmt( labs, get_target(), BranchStmt::Continue );
     294                // return new BranchStmt( labs, get_target(), BranchStmt::Continue );
    275295                assert( false );
    276296          case Return:
    277297          case Throw :
    278                 buildList( get_control(), exps );
    279                 if ( exps.size() ==0 )
    280                         return new ReturnStmt( labs, 0, type == Throw );
    281                 if ( exps.size() > 0 )
    282                         return new ReturnStmt( labs, exps.back(), type == Throw );
     298                // buildList( get_control(), exps );
     299                // if ( exps.size() ==0 )
     300                //      return new ReturnStmt( labs, 0, type == Throw );
     301                // if ( exps.size() > 0 )
     302                //      return new ReturnStmt( labs, exps.back(), type == Throw );
     303                assert( false );
    283304          case Try:
    284305                {
     
    314335}
    315336
     337Statement *build_expr( ExpressionNode *ctl ) {
     338        Expression *e = maybeBuild< Expression >( ctl );
     339
     340        if ( e )
     341                return new ExprStmt( noLabels, e );
     342        else
     343                return new NullStmt( noLabels );
     344}
     345
    316346Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
    317347        Statement *thenb, *elseb = 0;
     
    338368Statement *build_case( ExpressionNode *ctl ) {
    339369        std::list<Statement *> branches;
    340         buildList<Statement, StatementNode>( nullptr, branches );
    341370        return new CaseStmt( noLabels, maybeBuild<Expression>(ctl), branches );
    342371}
     
    377406Statement *build_branch( std::string identifier, BranchStmt::Type kind ) {
    378407        return new BranchStmt( noLabels, identifier, kind );
     408}
     409Statement *build_computedgoto( ExpressionNode *ctl ) {
     410        return new BranchStmt( noLabels, maybeBuild<Expression>(ctl), BranchStmt::Goto );
     411}
     412
     413Statement *build_return( ExpressionNode *ctl ) {
     414        std::list<Expression *> exps;
     415        buildList( ctl, exps );
     416        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
     417}
     418Statement *build_throw( ExpressionNode *ctl ) {
     419        std::list<Expression *> exps;
     420        buildList( ctl, exps );
     421        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true );
    379422}
    380423
  • src/Parser/parser.cc

    r6f7424a r8cc5cb0  
    10351035     657,   658,   659,   660,   661,   662,   663,   673,   680,   682,
    10361036     692,   693,   698,   700,   706,   708,   712,   713,   718,   723,
    1037      726,   728,   730,   740,   742,   753,   754,   756,   760,   762,
    1038      766,   767,   772,   773,   777,   782,   783,   787,   789,   795,
    1039      796,   800,   802,   804,   806,   812,   813,   817,   819,   824,
    1040      826,   828,   833,   835,   840,   843,   847,   851,   856,   860,
    1041      865,   867,   871,   873,   880,   882,   884,   893,   895,   897,
    1042      899,   901,   906,   908,   910,   912,   917,   930,   931,   936,
    1043      938,   943,   947,   949,   951,   953,   955,   961,   962,   968,
    1044      969,   973,   974,   979,   981,   987,   988,   990,   995,   997,
    1045     1004,  1006,  1010,  1011,  1016,  1018,  1022,  1023,  1027,  1029,
    1046     1033,  1034,  1038,  1039,  1043,  1044,  1059,  1060,  1061,  1062,
    1047     1063,  1067,  1072,  1079,  1089,  1094,  1099,  1107,  1112,  1117,
    1048     1122,  1127,  1135,  1157,  1162,  1169,  1171,  1178,  1183,  1188,
    1049     1199,  1204,  1209,  1214,  1219,  1228,  1233,  1241,  1242,  1243,
    1050     1244,  1250,  1255,  1263,  1264,  1265,  1266,  1270,  1271,  1272,
    1051     1273,  1278,  1279,  1288,  1289,  1294,  1295,  1300,  1302,  1304,
    1052     1306,  1308,  1311,  1310,  1322,  1323,  1325,  1335,  1336,  1341,
    1053     1345,  1347,  1349,  1351,  1353,  1355,  1357,  1359,  1364,  1366,
    1054     1368,  1370,  1372,  1374,  1376,  1378,  1380,  1382,  1384,  1386,
    1055     1388,  1394,  1395,  1397,  1399,  1401,  1406,  1407,  1413,  1414,
    1056     1416,  1418,  1423,  1425,  1427,  1429,  1434,  1435,  1437,  1439,
    1057     1444,  1445,  1447,  1452,  1453,  1455,  1457,  1462,  1464,  1466,
    1058     1471,  1472,  1476,  1478,  1484,  1483,  1487,  1489,  1494,  1496,
    1059     1502,  1503,  1508,  1509,  1511,  1512,  1521,  1522,  1524,  1526,
    1060     1531,  1533,  1539,  1540,  1542,  1545,  1548,  1553,  1554,  1559,
    1061     1564,  1568,  1570,  1576,  1575,  1582,  1584,  1590,  1591,  1599,
    1062     1600,  1604,  1605,  1606,  1608,  1610,  1617,  1618,  1620,  1622,
    1063     1627,  1628,  1634,  1635,  1639,  1640,  1645,  1646,  1647,  1649,
    1064     1657,  1658,  1660,  1663,  1665,  1669,  1670,  1671,  1673,  1675,
    1065     1679,  1684,  1692,  1693,  1702,  1704,  1709,  1710,  1711,  1715,
    1066     1716,  1717,  1721,  1722,  1723,  1727,  1728,  1729,  1734,  1735,
    1067     1736,  1737,  1743,  1744,  1746,  1751,  1752,  1757,  1758,  1759,
    1068     1760,  1761,  1776,  1777,  1782,  1783,  1789,  1791,  1794,  1796,
    1069     1798,  1821,  1822,  1824,  1826,  1831,  1832,  1834,  1839,  1844,
    1070     1845,  1851,  1850,  1854,  1858,  1860,  1862,  1868,  1869,  1874,
    1071     1879,  1881,  1886,  1888,  1889,  1891,  1896,  1898,  1900,  1905,
    1072     1907,  1912,  1917,  1925,  1931,  1930,  1944,  1945,  1950,  1951,
    1073     1955,  1960,  1965,  1973,  1978,  1989,  1990,  2001,  2002,  2008,
    1074     2009,  2013,  2014,  2015,  2018,  2017,  2028,  2037,  2043,  2049,
    1075     2058,  2064,  2070,  2076,  2082,  2090,  2096,  2104,  2110,  2119,
    1076     2120,  2121,  2125,  2129,  2131,  2136,  2137,  2141,  2142,  2147,
    1077     2153,  2154,  2157,  2159,  2160,  2164,  2165,  2166,  2167,  2201,
    1078     2203,  2204,  2206,  2211,  2216,  2221,  2223,  2225,  2230,  2232,
    1079     2234,  2236,  2241,  2243,  2252,  2254,  2255,  2260,  2262,  2264,
    1080     2269,  2271,  2273,  2278,  2280,  2282,  2291,  2292,  2293,  2297,
    1081     2299,  2301,  2306,  2308,  2310,  2315,  2317,  2319,  2334,  2336,
    1082     2337,  2339,  2344,  2345,  2350,  2352,  2354,  2359,  2361,  2363,
    1083     2365,  2370,  2372,  2374,  2384,  2386,  2387,  2389,  2394,  2396,
    1084     2398,  2403,  2405,  2407,  2409,  2414,  2416,  2418,  2449,  2451,
    1085     2452,  2454,  2459,  2464,  2472,  2474,  2476,  2481,  2483,  2488,
    1086     2490,  2504,  2505,  2507,  2512,  2514,  2516,  2518,  2520,  2525,
    1087     2526,  2528,  2530,  2535,  2537,  2539,  2545,  2547,  2549,  2553,
    1088     2555,  2557,  2559,  2573,  2574,  2576,  2581,  2583,  2585,  2587,
    1089     2589,  2594,  2595,  2597,  2599,  2604,  2606,  2608,  2614,  2615,
    1090     2617,  2626,  2629,  2631,  2634,  2636,  2638,  2651,  2652,  2654,
    1091     2659,  2661,  2663,  2665,  2667,  2672,  2673,  2675,  2677,  2682,
    1092     2684,  2692,  2693,  2694,  2699,  2700,  2704,  2706,  2708,  2710,
    1093     2712,  2714,  2721,  2723,  2725,  2727,  2729,  2731,  2733,  2735,
    1094     2737,  2739,  2744,  2746,  2748,  2753,  2779,  2780,  2782,  2786,
    1095     2787,  2791,  2793,  2795,  2797,  2799,  2801,  2808,  2810,  2812,
    1096     2814,  2816,  2818,  2823,  2828,  2830,  2832,  2850,  2852,  2857,
    1097     2858
     1037     726,   728,   730,   740,   742,   753,   754,   756,   761,   763,
     1038     767,   768,   773,   774,   778,   783,   784,   788,   790,   796,
     1039     797,   801,   803,   805,   807,   813,   814,   818,   820,   825,
     1040     827,   829,   834,   836,   841,   843,   847,   850,   854,   857,
     1041     861,   863,   865,   867,   872,   874,   876,   885,   887,   889,
     1042     891,   893,   898,   900,   902,   904,   909,   922,   923,   928,
     1043     930,   935,   939,   941,   943,   945,   947,   953,   954,   960,
     1044     961,   965,   966,   971,   973,   979,   980,   982,   987,   989,
     1045     996,   998,  1002,  1003,  1008,  1010,  1014,  1015,  1019,  1021,
     1046    1025,  1026,  1030,  1031,  1035,  1036,  1051,  1052,  1053,  1054,
     1047    1055,  1059,  1064,  1071,  1081,  1086,  1091,  1099,  1104,  1109,
     1048    1114,  1119,  1127,  1149,  1154,  1161,  1163,  1170,  1175,  1180,
     1049    1191,  1196,  1201,  1206,  1211,  1220,  1225,  1233,  1234,  1235,
     1050    1236,  1242,  1247,  1255,  1256,  1257,  1258,  1262,  1263,  1264,
     1051    1265,  1270,  1271,  1280,  1281,  1286,  1287,  1292,  1294,  1296,
     1052    1298,  1300,  1303,  1302,  1314,  1315,  1317,  1327,  1328,  1333,
     1053    1337,  1339,  1341,  1343,  1345,  1347,  1349,  1351,  1356,  1358,
     1054    1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
     1055    1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,  1406,
     1056    1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,  1431,
     1057    1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,  1458,
     1058    1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,  1488,
     1059    1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,  1518,
     1060    1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,  1551,
     1061    1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,  1591,
     1062    1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,  1614,
     1063    1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,  1641,
     1064    1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,  1667,
     1065    1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,  1707,
     1066    1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,  1727,
     1067    1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,  1751,
     1068    1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,  1788,
     1069    1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,  1836,
     1070    1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,  1866,
     1071    1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,  1897,
     1072    1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,  1943,
     1073    1947,  1952,  1957,  1965,  1970,  1981,  1982,  1993,  1994,  2000,
     1074    2001,  2005,  2006,  2007,  2010,  2009,  2020,  2029,  2035,  2041,
     1075    2050,  2056,  2062,  2068,  2074,  2082,  2088,  2096,  2102,  2111,
     1076    2112,  2113,  2117,  2121,  2123,  2128,  2129,  2133,  2134,  2139,
     1077    2145,  2146,  2149,  2151,  2152,  2156,  2157,  2158,  2159,  2193,
     1078    2195,  2196,  2198,  2203,  2208,  2213,  2215,  2217,  2222,  2224,
     1079    2226,  2228,  2233,  2235,  2244,  2246,  2247,  2252,  2254,  2256,
     1080    2261,  2263,  2265,  2270,  2272,  2274,  2283,  2284,  2285,  2289,
     1081    2291,  2293,  2298,  2300,  2302,  2307,  2309,  2311,  2326,  2328,
     1082    2329,  2331,  2336,  2337,  2342,  2344,  2346,  2351,  2353,  2355,
     1083    2357,  2362,  2364,  2366,  2376,  2378,  2379,  2381,  2386,  2388,
     1084    2390,  2395,  2397,  2399,  2401,  2406,  2408,  2410,  2441,  2443,
     1085    2444,  2446,  2451,  2456,  2464,  2466,  2468,  2473,  2475,  2480,
     1086    2482,  2496,  2497,  2499,  2504,  2506,  2508,  2510,  2512,  2517,
     1087    2518,  2520,  2522,  2527,  2529,  2531,  2537,  2539,  2541,  2545,
     1088    2547,  2549,  2551,  2565,  2566,  2568,  2573,  2575,  2577,  2579,
     1089    2581,  2586,  2587,  2589,  2591,  2596,  2598,  2600,  2606,  2607,
     1090    2609,  2618,  2621,  2623,  2626,  2628,  2630,  2643,  2644,  2646,
     1091    2651,  2653,  2655,  2657,  2659,  2664,  2665,  2667,  2669,  2674,
     1092    2676,  2684,  2685,  2686,  2691,  2692,  2696,  2698,  2700,  2702,
     1093    2704,  2706,  2713,  2715,  2717,  2719,  2721,  2723,  2725,  2727,
     1094    2729,  2731,  2736,  2738,  2740,  2745,  2771,  2772,  2774,  2778,
     1095    2779,  2783,  2785,  2787,  2789,  2791,  2793,  2800,  2802,  2804,
     1096    2806,  2808,  2810,  2815,  2820,  2822,  2824,  2842,  2844,  2849,
     1097    2850
    10981098};
    10991099#endif
     
    56385638                        Token fn;
    56395639                        fn.str = new std::string( "^?{}" ); // location undefined
    5640                         (yyval.sn) = new StatementNode( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ), 0 );
     5640                        (yyval.sn) = new StatementNode2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ) ) );
    56415641                }
    56425642    break;
     
    57085708/* Line 1806 of yacc.c  */
    57095709#line 719 "parser.yy"
    5710     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5710    { (yyval.sn) = new StatementNode2( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57115711    break;
    57125712
     
    57815781
    57825782/* Line 1806 of yacc.c  */
    5783 #line 760 "parser.yy"
    5784     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
     5783#line 761 "parser.yy"
     5784    { (yyval.sn) = new StatementNode2( build_case( (yyvsp[(1) - (1)].en) ) ); }
    57855785    break;
    57865786
     
    57885788
    57895789/* Line 1806 of yacc.c  */
    5790 #line 762 "parser.yy"
    5791     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
     5790#line 763 "parser.yy"
     5791    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode2( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    57925792    break;
    57935793
     
    57955795
    57965796/* Line 1806 of yacc.c  */
    5797 #line 766 "parser.yy"
     5797#line 767 "parser.yy"
    57985798    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    57995799    break;
     
    58025802
    58035803/* Line 1806 of yacc.c  */
    5804 #line 767 "parser.yy"
    5805     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     5804#line 768 "parser.yy"
     5805    { (yyval.sn) = new StatementNode2( build_default() ); }
    58065806    break;
    58075807
     
    58095809
    58105810/* Line 1806 of yacc.c  */
    5811 #line 773 "parser.yy"
     5811#line 774 "parser.yy"
    58125812    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58135813    break;
     
    58165816
    58175817/* Line 1806 of yacc.c  */
    5818 #line 777 "parser.yy"
     5818#line 778 "parser.yy"
    58195819    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    58205820    break;
     
    58235823
    58245824/* Line 1806 of yacc.c  */
    5825 #line 782 "parser.yy"
     5825#line 783 "parser.yy"
    58265826    { (yyval.sn) = 0; }
    58275827    break;
     
    58305830
    58315831/* Line 1806 of yacc.c  */
    5832 #line 788 "parser.yy"
     5832#line 789 "parser.yy"
    58335833    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    58345834    break;
     
    58375837
    58385838/* Line 1806 of yacc.c  */
    5839 #line 790 "parser.yy"
     5839#line 791 "parser.yy"
    58405840    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58415841    break;
     
    58445844
    58455845/* Line 1806 of yacc.c  */
    5846 #line 795 "parser.yy"
     5846#line 796 "parser.yy"
    58475847    { (yyval.sn) = 0; }
    58485848    break;
     
    58515851
    58525852/* Line 1806 of yacc.c  */
    5853 #line 801 "parser.yy"
     5853#line 802 "parser.yy"
    58545854    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58555855    break;
     
    58585858
    58595859/* Line 1806 of yacc.c  */
    5860 #line 803 "parser.yy"
     5860#line 804 "parser.yy"
    58615861    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    58625862    break;
     
    58655865
    58665866/* Line 1806 of yacc.c  */
    5867 #line 805 "parser.yy"
     5867#line 806 "parser.yy"
    58685868    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58695869    break;
     
    58725872
    58735873/* Line 1806 of yacc.c  */
    5874 #line 807 "parser.yy"
     5874#line 808 "parser.yy"
    58755875    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    58765876    break;
     
    58795879
    58805880/* Line 1806 of yacc.c  */
    5881 #line 812 "parser.yy"
    5882     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     5881#line 813 "parser.yy"
     5882    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
    58835883    break;
    58845884
     
    58865886
    58875887/* Line 1806 of yacc.c  */
    5888 #line 818 "parser.yy"
     5888#line 819 "parser.yy"
    58895889    { (yyval.sn) = 0; }
    58905890    break;
     
    58935893
    58945894/* Line 1806 of yacc.c  */
    5895 #line 820 "parser.yy"
     5895#line 821 "parser.yy"
    58965896    { (yyval.sn) = 0; }
    58975897    break;
     
    59005900
    59015901/* Line 1806 of yacc.c  */
    5902 #line 825 "parser.yy"
     5902#line 826 "parser.yy"
    59035903    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59045904    break;
     
    59075907
    59085908/* Line 1806 of yacc.c  */
    5909 #line 827 "parser.yy"
     5909#line 828 "parser.yy"
    59105910    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
    59115911    break;
     
    59145914
    59155915/* Line 1806 of yacc.c  */
    5916 #line 829 "parser.yy"
     5916#line 830 "parser.yy"
    59175917    { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59185918    break;
     
    59215921
    59225922/* Line 1806 of yacc.c  */
    5923 #line 834 "parser.yy"
     5923#line 835 "parser.yy"
    59245924    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59255925    break;
     
    59285928
    59295929/* Line 1806 of yacc.c  */
    5930 #line 836 "parser.yy"
     5930#line 837 "parser.yy"
    59315931    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59325932    break;
     
    59435943/* Line 1806 of yacc.c  */
    59445944#line 846 "parser.yy"
    5945     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     5945    { (yyval.sn) = new StatementNode2( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59465946    break;
    59475947
     
    59495949
    59505950/* Line 1806 of yacc.c  */
    5951 #line 850 "parser.yy"
     5951#line 849 "parser.yy"
    59525952    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
    59535953    break;
     
    59565956
    59575957/* Line 1806 of yacc.c  */
    5958 #line 855 "parser.yy"
     5958#line 853 "parser.yy"
    59595959    { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
    59605960    break;
     
    59635963
    59645964/* Line 1806 of yacc.c  */
    5965 #line 859 "parser.yy"
     5965#line 856 "parser.yy"
    59665966    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
    59675967    break;
     
    59705970
    59715971/* Line 1806 of yacc.c  */
     5972#line 860 "parser.yy"
     5973    { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
     5974    break;
     5975
     5976  case 190:
     5977
     5978/* Line 1806 of yacc.c  */
     5979#line 862 "parser.yy"
     5980    { (yyval.sn) = new StatementNode2( build_return( (yyvsp[(2) - (3)].en) ) ); }
     5981    break;
     5982
     5983  case 191:
     5984
     5985/* Line 1806 of yacc.c  */
    59725986#line 864 "parser.yy"
    5973     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
    5974     break;
    5975 
    5976   case 190:
     5987    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5988    break;
     5989
     5990  case 192:
    59775991
    59785992/* Line 1806 of yacc.c  */
    59795993#line 866 "parser.yy"
    5980     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    5981     break;
    5982 
    5983   case 191:
     5994    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5995    break;
     5996
     5997  case 193:
    59845998
    59855999/* Line 1806 of yacc.c  */
    59866000#line 868 "parser.yy"
    5987     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    5988     break;
    5989 
    5990   case 192:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 872 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    5995     break;
    5996 
    5997   case 193:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 874 "parser.yy"
    6001     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     6001    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60026002    break;
    60036003
     
    60056005
    60066006/* Line 1806 of yacc.c  */
    6007 #line 881 "parser.yy"
     6007#line 873 "parser.yy"
    60086008    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60096009    break;
     
    60126012
    60136013/* Line 1806 of yacc.c  */
    6014 #line 883 "parser.yy"
     6014#line 875 "parser.yy"
    60156015    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60166016    break;
     
    60196019
    60206020/* Line 1806 of yacc.c  */
    6021 #line 885 "parser.yy"
     6021#line 877 "parser.yy"
    60226022    {
    60236023                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60296029
    60306030/* Line 1806 of yacc.c  */
    6031 #line 896 "parser.yy"
     6031#line 888 "parser.yy"
    60326032    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60336033    break;
     
    60366036
    60376037/* Line 1806 of yacc.c  */
    6038 #line 898 "parser.yy"
     6038#line 890 "parser.yy"
    60396039    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60406040    break;
     
    60436043
    60446044/* Line 1806 of yacc.c  */
    6045 #line 900 "parser.yy"
     6045#line 892 "parser.yy"
    60466046    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60476047    break;
     
    60506050
    60516051/* Line 1806 of yacc.c  */
    6052 #line 902 "parser.yy"
     6052#line 894 "parser.yy"
    60536053    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60546054    break;
     
    60576057
    60586058/* Line 1806 of yacc.c  */
    6059 #line 907 "parser.yy"
     6059#line 899 "parser.yy"
    60606060    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60616061    break;
     
    60646064
    60656065/* Line 1806 of yacc.c  */
    6066 #line 909 "parser.yy"
     6066#line 901 "parser.yy"
    60676067    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60686068    break;
     
    60716071
    60726072/* Line 1806 of yacc.c  */
    6073 #line 911 "parser.yy"
     6073#line 903 "parser.yy"
    60746074    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60756075    break;
     
    60786078
    60796079/* Line 1806 of yacc.c  */
    6080 #line 913 "parser.yy"
     6080#line 905 "parser.yy"
    60816081    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60826082    break;
     
    60856085
    60866086/* Line 1806 of yacc.c  */
    6087 #line 918 "parser.yy"
     6087#line 910 "parser.yy"
    60886088    {
    60896089                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60956095
    60966096/* Line 1806 of yacc.c  */
    6097 #line 932 "parser.yy"
     6097#line 924 "parser.yy"
    60986098    {
    60996099                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61056105
    61066106/* Line 1806 of yacc.c  */
    6107 #line 937 "parser.yy"
     6107#line 929 "parser.yy"
    61086108    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61096109    break;
     
    61126112
    61136113/* Line 1806 of yacc.c  */
    6114 #line 939 "parser.yy"
     6114#line 931 "parser.yy"
    61156115    {
    61166116                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61226122
    61236123/* Line 1806 of yacc.c  */
     6124#line 940 "parser.yy"
     6125    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6126    break;
     6127
     6128  case 213:
     6129
     6130/* Line 1806 of yacc.c  */
     6131#line 942 "parser.yy"
     6132    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6133    break;
     6134
     6135  case 214:
     6136
     6137/* Line 1806 of yacc.c  */
     6138#line 944 "parser.yy"
     6139    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6140    break;
     6141
     6142  case 215:
     6143
     6144/* Line 1806 of yacc.c  */
     6145#line 946 "parser.yy"
     6146    { (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)].en) ); }
     6147    break;
     6148
     6149  case 216:
     6150
     6151/* Line 1806 of yacc.c  */
    61246152#line 948 "parser.yy"
    6125     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    6126     break;
    6127 
    6128   case 213:
    6129 
    6130 /* Line 1806 of yacc.c  */
    6131 #line 950 "parser.yy"
    6132     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    6133     break;
    6134 
    6135   case 214:
    6136 
    6137 /* Line 1806 of yacc.c  */
    6138 #line 952 "parser.yy"
    6139     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    6140     break;
    6141 
    6142   case 215:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 954 "parser.yy"
    6146     { (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)].en) ); }
    6147     break;
    6148 
    6149   case 216:
    6150 
    6151 /* Line 1806 of yacc.c  */
    6152 #line 956 "parser.yy"
    61536153    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
    61546154    break;
     
    61576157
    61586158/* Line 1806 of yacc.c  */
    6159 #line 961 "parser.yy"
     6159#line 953 "parser.yy"
    61606160    { (yyval.flag) = false; }
    61616161    break;
     
    61646164
    61656165/* Line 1806 of yacc.c  */
    6166 #line 963 "parser.yy"
     6166#line 955 "parser.yy"
    61676167    { (yyval.flag) = true; }
    61686168    break;
     
    61716171
    61726172/* Line 1806 of yacc.c  */
    6173 #line 968 "parser.yy"
     6173#line 960 "parser.yy"
    61746174    { (yyval.en) = 0; }
    61756175    break;
     
    61786178
    61796179/* Line 1806 of yacc.c  */
    6180 #line 975 "parser.yy"
     6180#line 967 "parser.yy"
    61816181    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    61826182    break;
     
    61856185
    61866186/* Line 1806 of yacc.c  */
    6187 #line 980 "parser.yy"
     6187#line 972 "parser.yy"
    61886188    { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    61896189    break;
     
    61926192
    61936193/* Line 1806 of yacc.c  */
    6194 #line 982 "parser.yy"
     6194#line 974 "parser.yy"
    61956195    { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    61966196    break;
     
    61996199
    62006200/* Line 1806 of yacc.c  */
    6201 #line 987 "parser.yy"
     6201#line 979 "parser.yy"
    62026202    { (yyval.en) = 0; }
    62036203    break;
     
    62066206
    62076207/* Line 1806 of yacc.c  */
    6208 #line 989 "parser.yy"
     6208#line 981 "parser.yy"
    62096209    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62106210    break;
     
    62136213
    62146214/* Line 1806 of yacc.c  */
    6215 #line 991 "parser.yy"
     6215#line 983 "parser.yy"
    62166216    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62176217    break;
     
    62206220
    62216221/* Line 1806 of yacc.c  */
    6222 #line 996 "parser.yy"
     6222#line 988 "parser.yy"
    62236223    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62246224    break;
     
    62276227
    62286228/* Line 1806 of yacc.c  */
    6229 #line 998 "parser.yy"
     6229#line 990 "parser.yy"
    62306230    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62316231    break;
     
    62346234
    62356235/* Line 1806 of yacc.c  */
    6236 #line 1005 "parser.yy"
     6236#line 997 "parser.yy"
    62376237    { (yyval.decl) = 0; }
    62386238    break;
     
    62416241
    62426242/* Line 1806 of yacc.c  */
    6243 #line 1012 "parser.yy"
     6243#line 1004 "parser.yy"
    62446244    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62456245    break;
     
    62486248
    62496249/* Line 1806 of yacc.c  */
    6250 #line 1017 "parser.yy"
     6250#line 1009 "parser.yy"
    62516251    { (yyval.decl) = 0; }
    62526252    break;
     
    62556255
    62566256/* Line 1806 of yacc.c  */
    6257 #line 1024 "parser.yy"
     6257#line 1016 "parser.yy"
    62586258    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62596259    break;
     
    62626262
    62636263/* Line 1806 of yacc.c  */
    6264 #line 1038 "parser.yy"
     6264#line 1030 "parser.yy"
    62656265    {}
    62666266    break;
     
    62696269
    62706270/* Line 1806 of yacc.c  */
    6271 #line 1039 "parser.yy"
     6271#line 1031 "parser.yy"
    62726272    {}
    62736273    break;
     
    62766276
    62776277/* Line 1806 of yacc.c  */
    6278 #line 1068 "parser.yy"
     6278#line 1060 "parser.yy"
    62796279    {
    62806280                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62866286
    62876287/* Line 1806 of yacc.c  */
    6288 #line 1075 "parser.yy"
     6288#line 1067 "parser.yy"
    62896289    {
    62906290                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62966296
    62976297/* Line 1806 of yacc.c  */
    6298 #line 1080 "parser.yy"
     6298#line 1072 "parser.yy"
    62996299    {
    63006300                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63066306
    63076307/* Line 1806 of yacc.c  */
    6308 #line 1090 "parser.yy"
     6308#line 1082 "parser.yy"
    63096309    {
    63106310                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63166316
    63176317/* Line 1806 of yacc.c  */
    6318 #line 1095 "parser.yy"
     6318#line 1087 "parser.yy"
    63196319    {
    63206320                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63266326
    63276327/* Line 1806 of yacc.c  */
    6328 #line 1100 "parser.yy"
     6328#line 1092 "parser.yy"
    63296329    {
    63306330                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63366336
    63376337/* Line 1806 of yacc.c  */
    6338 #line 1108 "parser.yy"
     6338#line 1100 "parser.yy"
    63396339    {
    63406340                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63466346
    63476347/* Line 1806 of yacc.c  */
    6348 #line 1113 "parser.yy"
     6348#line 1105 "parser.yy"
    63496349    {
    63506350                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63566356
    63576357/* Line 1806 of yacc.c  */
    6358 #line 1118 "parser.yy"
     6358#line 1110 "parser.yy"
    63596359    {
    63606360                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63666366
    63676367/* Line 1806 of yacc.c  */
    6368 #line 1123 "parser.yy"
     6368#line 1115 "parser.yy"
    63696369    {
    63706370                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63766376
    63776377/* Line 1806 of yacc.c  */
    6378 #line 1128 "parser.yy"
     6378#line 1120 "parser.yy"
    63796379    {
    63806380                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63866386
    63876387/* Line 1806 of yacc.c  */
    6388 #line 1136 "parser.yy"
     6388#line 1128 "parser.yy"
    63896389    {
    63906390                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63956395
    63966396/* Line 1806 of yacc.c  */
    6397 #line 1159 "parser.yy"
     6397#line 1151 "parser.yy"
    63986398    {
    63996399                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64046404
    64056405/* Line 1806 of yacc.c  */
    6406 #line 1163 "parser.yy"
     6406#line 1155 "parser.yy"
    64076407    {
    64086408                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64136413
    64146414/* Line 1806 of yacc.c  */
    6415 #line 1170 "parser.yy"
     6415#line 1162 "parser.yy"
    64166416    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64176417    break;
     
    64206420
    64216421/* Line 1806 of yacc.c  */
    6422 #line 1174 "parser.yy"
     6422#line 1166 "parser.yy"
    64236423    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64246424    break;
     
    64276427
    64286428/* Line 1806 of yacc.c  */
    6429 #line 1179 "parser.yy"
     6429#line 1171 "parser.yy"
    64306430    {
    64316431                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64376437
    64386438/* Line 1806 of yacc.c  */
    6439 #line 1184 "parser.yy"
     6439#line 1176 "parser.yy"
    64406440    {
    64416441                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64476447
    64486448/* Line 1806 of yacc.c  */
    6449 #line 1189 "parser.yy"
     6449#line 1181 "parser.yy"
    64506450    {
    64516451                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64576457
    64586458/* Line 1806 of yacc.c  */
    6459 #line 1200 "parser.yy"
     6459#line 1192 "parser.yy"
    64606460    {
    64616461                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64676467
    64686468/* Line 1806 of yacc.c  */
    6469 #line 1205 "parser.yy"
     6469#line 1197 "parser.yy"
    64706470    {
    64716471                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64776477
    64786478/* Line 1806 of yacc.c  */
    6479 #line 1210 "parser.yy"
     6479#line 1202 "parser.yy"
    64806480    {
    64816481                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64876487
    64886488/* Line 1806 of yacc.c  */
    6489 #line 1215 "parser.yy"
     6489#line 1207 "parser.yy"
    64906490    {
    64916491                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64976497
    64986498/* Line 1806 of yacc.c  */
    6499 #line 1220 "parser.yy"
     6499#line 1212 "parser.yy"
    65006500    {
    65016501                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65076507
    65086508/* Line 1806 of yacc.c  */
    6509 #line 1229 "parser.yy"
     6509#line 1221 "parser.yy"
    65106510    {
    65116511                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65176517
    65186518/* Line 1806 of yacc.c  */
    6519 #line 1234 "parser.yy"
     6519#line 1226 "parser.yy"
    65206520    {
    65216521                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65276527
    65286528/* Line 1806 of yacc.c  */
    6529 #line 1251 "parser.yy"
     6529#line 1243 "parser.yy"
    65306530    {
    65316531                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65376537
    65386538/* Line 1806 of yacc.c  */
    6539 #line 1256 "parser.yy"
     6539#line 1248 "parser.yy"
    65406540    {
    65416541                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65476547
    65486548/* Line 1806 of yacc.c  */
    6549 #line 1278 "parser.yy"
     6549#line 1270 "parser.yy"
    65506550    { (yyval.decl) = 0; }
    65516551    break;
     
    65546554
    65556555/* Line 1806 of yacc.c  */
    6556 #line 1290 "parser.yy"
     6556#line 1282 "parser.yy"
    65576557    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65586558    break;
     
    65616561
    65626562/* Line 1806 of yacc.c  */
     6563#line 1293 "parser.yy"
     6564    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6565    break;
     6566
     6567  case 298:
     6568
     6569/* Line 1806 of yacc.c  */
     6570#line 1295 "parser.yy"
     6571    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6572    break;
     6573
     6574  case 299:
     6575
     6576/* Line 1806 of yacc.c  */
     6577#line 1297 "parser.yy"
     6578    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6579    break;
     6580
     6581  case 300:
     6582
     6583/* Line 1806 of yacc.c  */
     6584#line 1299 "parser.yy"
     6585    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6586    break;
     6587
     6588  case 301:
     6589
     6590/* Line 1806 of yacc.c  */
    65636591#line 1301 "parser.yy"
    6564     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    6565     break;
    6566 
    6567   case 298:
     6592    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     6593    break;
     6594
     6595  case 302:
    65686596
    65696597/* Line 1806 of yacc.c  */
    65706598#line 1303 "parser.yy"
    6571     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6572     break;
    6573 
    6574   case 299:
    6575 
    6576 /* Line 1806 of yacc.c  */
    6577 #line 1305 "parser.yy"
    6578     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6579     break;
    6580 
    6581   case 300:
    6582 
    6583 /* Line 1806 of yacc.c  */
    6584 #line 1307 "parser.yy"
    6585     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6586     break;
    6587 
    6588   case 301:
    6589 
    6590 /* Line 1806 of yacc.c  */
    6591 #line 1309 "parser.yy"
    6592     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6593     break;
    6594 
    6595   case 302:
    6596 
    6597 /* Line 1806 of yacc.c  */
    6598 #line 1311 "parser.yy"
    65996599    {
    66006600                        typedefTable.enterScope();
     
    66056605
    66066606/* Line 1806 of yacc.c  */
    6607 #line 1315 "parser.yy"
     6607#line 1307 "parser.yy"
    66086608    {
    66096609                        typedefTable.leaveScope();
     
    66156615
    66166616/* Line 1806 of yacc.c  */
    6617 #line 1324 "parser.yy"
     6617#line 1316 "parser.yy"
    66186618    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66196619    break;
     
    66226622
    66236623/* Line 1806 of yacc.c  */
    6624 #line 1326 "parser.yy"
     6624#line 1318 "parser.yy"
    66256625    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66266626    break;
     
    66296629
    66306630/* Line 1806 of yacc.c  */
    6631 #line 1337 "parser.yy"
     6631#line 1329 "parser.yy"
    66326632    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66336633    break;
     
    66366636
    66376637/* Line 1806 of yacc.c  */
     6638#line 1338 "parser.yy"
     6639    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6640    break;
     6641
     6642  case 311:
     6643
     6644/* Line 1806 of yacc.c  */
     6645#line 1340 "parser.yy"
     6646    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6647    break;
     6648
     6649  case 312:
     6650
     6651/* Line 1806 of yacc.c  */
     6652#line 1342 "parser.yy"
     6653    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6654    break;
     6655
     6656  case 313:
     6657
     6658/* Line 1806 of yacc.c  */
     6659#line 1344 "parser.yy"
     6660    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6661    break;
     6662
     6663  case 314:
     6664
     6665/* Line 1806 of yacc.c  */
    66386666#line 1346 "parser.yy"
    6639     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6640     break;
    6641 
    6642   case 311:
     6667    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6668    break;
     6669
     6670  case 315:
    66436671
    66446672/* Line 1806 of yacc.c  */
    66456673#line 1348 "parser.yy"
    6646     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6647     break;
    6648 
    6649   case 312:
     6674    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6675    break;
     6676
     6677  case 316:
    66506678
    66516679/* Line 1806 of yacc.c  */
    66526680#line 1350 "parser.yy"
    6653     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6654     break;
    6655 
    6656   case 313:
     6681    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6682    break;
     6683
     6684  case 317:
    66576685
    66586686/* Line 1806 of yacc.c  */
    66596687#line 1352 "parser.yy"
    6660     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6661     break;
    6662 
    6663   case 314:
    6664 
    6665 /* Line 1806 of yacc.c  */
    6666 #line 1354 "parser.yy"
    6667     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6668     break;
    6669 
    6670   case 315:
    6671 
    6672 /* Line 1806 of yacc.c  */
    6673 #line 1356 "parser.yy"
    6674     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6675     break;
    6676 
    6677   case 316:
    6678 
    6679 /* Line 1806 of yacc.c  */
    6680 #line 1358 "parser.yy"
    6681     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6682     break;
    6683 
    6684   case 317:
    6685 
    6686 /* Line 1806 of yacc.c  */
    6687 #line 1360 "parser.yy"
    66886688    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66896689    break;
     
    66926692
    66936693/* Line 1806 of yacc.c  */
     6694#line 1357 "parser.yy"
     6695    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6696    break;
     6697
     6698  case 319:
     6699
     6700/* Line 1806 of yacc.c  */
     6701#line 1359 "parser.yy"
     6702    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6703    break;
     6704
     6705  case 320:
     6706
     6707/* Line 1806 of yacc.c  */
     6708#line 1361 "parser.yy"
     6709    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6710    break;
     6711
     6712  case 321:
     6713
     6714/* Line 1806 of yacc.c  */
     6715#line 1363 "parser.yy"
     6716    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6717    break;
     6718
     6719  case 322:
     6720
     6721/* Line 1806 of yacc.c  */
    66946722#line 1365 "parser.yy"
    6695     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6696     break;
    6697 
    6698   case 319:
     6723    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6724    break;
     6725
     6726  case 323:
    66996727
    67006728/* Line 1806 of yacc.c  */
    67016729#line 1367 "parser.yy"
    6702     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6703     break;
    6704 
    6705   case 320:
     6730    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6731    break;
     6732
     6733  case 324:
    67066734
    67076735/* Line 1806 of yacc.c  */
    67086736#line 1369 "parser.yy"
    6709     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6710     break;
    6711 
    6712   case 321:
     6737    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6738    break;
     6739
     6740  case 325:
    67136741
    67146742/* Line 1806 of yacc.c  */
    67156743#line 1371 "parser.yy"
    6716     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6717     break;
    6718 
    6719   case 322:
     6744    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6745    break;
     6746
     6747  case 326:
    67206748
    67216749/* Line 1806 of yacc.c  */
    67226750#line 1373 "parser.yy"
    6723     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6724     break;
    6725 
    6726   case 323:
     6751    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6752    break;
     6753
     6754  case 327:
    67276755
    67286756/* Line 1806 of yacc.c  */
    67296757#line 1375 "parser.yy"
    6730     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6731     break;
    6732 
    6733   case 324:
     6758    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6759    break;
     6760
     6761  case 328:
    67346762
    67356763/* Line 1806 of yacc.c  */
    67366764#line 1377 "parser.yy"
    6737     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6738     break;
    6739 
    6740   case 325:
     6765    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6766    break;
     6767
     6768  case 329:
    67416769
    67426770/* Line 1806 of yacc.c  */
    67436771#line 1379 "parser.yy"
    6744     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6745     break;
    6746 
    6747   case 326:
     6772    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6773    break;
     6774
     6775  case 330:
    67486776
    67496777/* Line 1806 of yacc.c  */
    67506778#line 1381 "parser.yy"
    6751     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6752     break;
    6753 
    6754   case 327:
    6755 
    6756 /* Line 1806 of yacc.c  */
    6757 #line 1383 "parser.yy"
    6758     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6759     break;
    6760 
    6761   case 328:
    6762 
    6763 /* Line 1806 of yacc.c  */
    6764 #line 1385 "parser.yy"
    6765     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6766     break;
    6767 
    6768   case 329:
    6769 
    6770 /* Line 1806 of yacc.c  */
    6771 #line 1387 "parser.yy"
    6772     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6773     break;
    6774 
    6775   case 330:
    6776 
    6777 /* Line 1806 of yacc.c  */
    6778 #line 1389 "parser.yy"
    67796779    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    67806780    break;
     
    67836783
    67846784/* Line 1806 of yacc.c  */
    6785 #line 1396 "parser.yy"
     6785#line 1388 "parser.yy"
    67866786    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67876787    break;
     
    67906790
    67916791/* Line 1806 of yacc.c  */
    6792 #line 1398 "parser.yy"
     6792#line 1390 "parser.yy"
    67936793    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67946794    break;
     
    67976797
    67986798/* Line 1806 of yacc.c  */
     6799#line 1392 "parser.yy"
     6800    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6801    break;
     6802
     6803  case 335:
     6804
     6805/* Line 1806 of yacc.c  */
     6806#line 1394 "parser.yy"
     6807    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6808    break;
     6809
     6810  case 337:
     6811
     6812/* Line 1806 of yacc.c  */
    67996813#line 1400 "parser.yy"
     6814    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6815    break;
     6816
     6817  case 339:
     6818
     6819/* Line 1806 of yacc.c  */
     6820#line 1407 "parser.yy"
     6821    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6822    break;
     6823
     6824  case 340:
     6825
     6826/* Line 1806 of yacc.c  */
     6827#line 1409 "parser.yy"
     6828    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6829    break;
     6830
     6831  case 341:
     6832
     6833/* Line 1806 of yacc.c  */
     6834#line 1411 "parser.yy"
     6835    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6836    break;
     6837
     6838  case 342:
     6839
     6840/* Line 1806 of yacc.c  */
     6841#line 1416 "parser.yy"
     6842    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6843    break;
     6844
     6845  case 343:
     6846
     6847/* Line 1806 of yacc.c  */
     6848#line 1418 "parser.yy"
     6849    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6850    break;
     6851
     6852  case 344:
     6853
     6854/* Line 1806 of yacc.c  */
     6855#line 1420 "parser.yy"
     6856    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6857    break;
     6858
     6859  case 345:
     6860
     6861/* Line 1806 of yacc.c  */
     6862#line 1422 "parser.yy"
     6863    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6864    break;
     6865
     6866  case 347:
     6867
     6868/* Line 1806 of yacc.c  */
     6869#line 1428 "parser.yy"
     6870    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6871    break;
     6872
     6873  case 348:
     6874
     6875/* Line 1806 of yacc.c  */
     6876#line 1430 "parser.yy"
     6877    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6878    break;
     6879
     6880  case 349:
     6881
     6882/* Line 1806 of yacc.c  */
     6883#line 1432 "parser.yy"
    68006884    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68016885    break;
    68026886
    6803   case 335:
    6804 
    6805 /* Line 1806 of yacc.c  */
    6806 #line 1402 "parser.yy"
    6807     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6808     break;
    6809 
    6810   case 337:
    6811 
    6812 /* Line 1806 of yacc.c  */
    6813 #line 1408 "parser.yy"
    6814     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6815     break;
    6816 
    6817   case 339:
    6818 
    6819 /* Line 1806 of yacc.c  */
    6820 #line 1415 "parser.yy"
     6887  case 351:
     6888
     6889/* Line 1806 of yacc.c  */
     6890#line 1438 "parser.yy"
    68216891    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68226892    break;
    68236893
    6824   case 340:
    6825 
    6826 /* Line 1806 of yacc.c  */
    6827 #line 1417 "parser.yy"
     6894  case 352:
     6895
     6896/* Line 1806 of yacc.c  */
     6897#line 1440 "parser.yy"
    68286898    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68296899    break;
    68306900
    6831   case 341:
    6832 
    6833 /* Line 1806 of yacc.c  */
    6834 #line 1419 "parser.yy"
    6835     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6836     break;
    6837 
    6838   case 342:
    6839 
    6840 /* Line 1806 of yacc.c  */
    6841 #line 1424 "parser.yy"
    6842     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6843     break;
    6844 
    6845   case 343:
    6846 
    6847 /* Line 1806 of yacc.c  */
    6848 #line 1426 "parser.yy"
    6849     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6850     break;
    6851 
    6852   case 344:
    6853 
    6854 /* Line 1806 of yacc.c  */
    6855 #line 1428 "parser.yy"
    6856     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6857     break;
    6858 
    6859   case 345:
    6860 
    6861 /* Line 1806 of yacc.c  */
    6862 #line 1430 "parser.yy"
    6863     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6864     break;
    6865 
    6866   case 347:
    6867 
    6868 /* Line 1806 of yacc.c  */
    6869 #line 1436 "parser.yy"
    6870     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6871     break;
    6872 
    6873   case 348:
    6874 
    6875 /* Line 1806 of yacc.c  */
    6876 #line 1438 "parser.yy"
    6877     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6878     break;
    6879 
    6880   case 349:
    6881 
    6882 /* Line 1806 of yacc.c  */
    6883 #line 1440 "parser.yy"
    6884     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6885     break;
    6886 
    6887   case 351:
     6901  case 354:
    68886902
    68896903/* Line 1806 of yacc.c  */
     
    68926906    break;
    68936907
    6894   case 352:
     6908  case 355:
    68956909
    68966910/* Line 1806 of yacc.c  */
     
    68996913    break;
    69006914
    6901   case 354:
    6902 
    6903 /* Line 1806 of yacc.c  */
    6904 #line 1454 "parser.yy"
    6905     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6906     break;
    6907 
    6908   case 355:
    6909 
    6910 /* Line 1806 of yacc.c  */
    6911 #line 1456 "parser.yy"
     6915  case 356:
     6916
     6917/* Line 1806 of yacc.c  */
     6918#line 1450 "parser.yy"
     6919    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6920    break;
     6921
     6922  case 357:
     6923
     6924/* Line 1806 of yacc.c  */
     6925#line 1455 "parser.yy"
     6926    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6927    break;
     6928
     6929  case 358:
     6930
     6931/* Line 1806 of yacc.c  */
     6932#line 1457 "parser.yy"
     6933    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6934    break;
     6935
     6936  case 359:
     6937
     6938/* Line 1806 of yacc.c  */
     6939#line 1459 "parser.yy"
    69126940    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69136941    break;
    69146942
    6915   case 356:
    6916 
    6917 /* Line 1806 of yacc.c  */
    6918 #line 1458 "parser.yy"
    6919     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6920     break;
    6921 
    6922   case 357:
    6923 
    6924 /* Line 1806 of yacc.c  */
    6925 #line 1463 "parser.yy"
    6926     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6927     break;
    6928 
    6929   case 358:
    6930 
    6931 /* Line 1806 of yacc.c  */
    6932 #line 1465 "parser.yy"
    6933     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6934     break;
    6935 
    6936   case 359:
    6937 
    6938 /* Line 1806 of yacc.c  */
    6939 #line 1467 "parser.yy"
    6940     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6941     break;
    6942 
    69436943  case 362:
    69446944
    69456945/* Line 1806 of yacc.c  */
    6946 #line 1477 "parser.yy"
     6946#line 1469 "parser.yy"
    69476947    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    69486948    break;
     
    69516951
    69526952/* Line 1806 of yacc.c  */
    6953 #line 1479 "parser.yy"
     6953#line 1471 "parser.yy"
    69546954    {
    69556955                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69616961
    69626962/* Line 1806 of yacc.c  */
    6963 #line 1484 "parser.yy"
     6963#line 1476 "parser.yy"
    69646964    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69656965    break;
     
    69686968
    69696969/* Line 1806 of yacc.c  */
    6970 #line 1486 "parser.yy"
     6970#line 1478 "parser.yy"
    69716971    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
    69726972    break;
     
    69756975
    69766976/* Line 1806 of yacc.c  */
    6977 #line 1488 "parser.yy"
     6977#line 1480 "parser.yy"
    69786978    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    69796979    break;
     
    69826982
    69836983/* Line 1806 of yacc.c  */
    6984 #line 1490 "parser.yy"
     6984#line 1482 "parser.yy"
    69856985    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69866986    break;
     
    69896989
    69906990/* Line 1806 of yacc.c  */
    6991 #line 1495 "parser.yy"
     6991#line 1487 "parser.yy"
    69926992    { (yyval.aggKey) = DeclarationNode::Struct; }
    69936993    break;
     
    69966996
    69976997/* Line 1806 of yacc.c  */
    6998 #line 1497 "parser.yy"
     6998#line 1489 "parser.yy"
    69996999    { (yyval.aggKey) = DeclarationNode::Union; }
    70007000    break;
     
    70037003
    70047004/* Line 1806 of yacc.c  */
     7005#line 1494 "parser.yy"
     7006    { (yyval.decl) = 0; }
     7007    break;
     7008
     7009  case 371:
     7010
     7011/* Line 1806 of yacc.c  */
     7012#line 1496 "parser.yy"
     7013    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7014    break;
     7015
     7016  case 373:
     7017
     7018/* Line 1806 of yacc.c  */
    70057019#line 1502 "parser.yy"
    7006     { (yyval.decl) = 0; }
    7007     break;
    7008 
    7009   case 371:
    7010 
    7011 /* Line 1806 of yacc.c  */
    7012 #line 1504 "parser.yy"
    7013     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7014     break;
    7015 
    7016   case 373:
    7017 
    7018 /* Line 1806 of yacc.c  */
    7019 #line 1510 "parser.yy"
    70207020    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70217021    break;
     
    70247024
    70257025/* Line 1806 of yacc.c  */
    7026 #line 1513 "parser.yy"
     7026#line 1505 "parser.yy"
    70277027    {   // mark all fields in list
    70287028                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    70357035
    70367036/* Line 1806 of yacc.c  */
    7037 #line 1523 "parser.yy"
     7037#line 1515 "parser.yy"
    70387038    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70397039    break;
     
    70427042
    70437043/* Line 1806 of yacc.c  */
    7044 #line 1525 "parser.yy"
     7044#line 1517 "parser.yy"
    70457045    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70467046    break;
     
    70497049
    70507050/* Line 1806 of yacc.c  */
    7051 #line 1527 "parser.yy"
     7051#line 1519 "parser.yy"
    70527052    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70537053    break;
     
    70567056
    70577057/* Line 1806 of yacc.c  */
    7058 #line 1532 "parser.yy"
     7058#line 1524 "parser.yy"
    70597059    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70607060    break;
     
    70637063
    70647064/* Line 1806 of yacc.c  */
    7065 #line 1534 "parser.yy"
     7065#line 1526 "parser.yy"
    70667066    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70677067    break;
     
    70707070
    70717071/* Line 1806 of yacc.c  */
     7072#line 1531 "parser.yy"
     7073    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7074    break;
     7075
     7076  case 383:
     7077
     7078/* Line 1806 of yacc.c  */
     7079#line 1533 "parser.yy"
     7080    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7081    break;
     7082
     7083  case 384:
     7084
     7085/* Line 1806 of yacc.c  */
     7086#line 1536 "parser.yy"
     7087    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7088    break;
     7089
     7090  case 385:
     7091
     7092/* Line 1806 of yacc.c  */
    70727093#line 1539 "parser.yy"
    7073     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7074     break;
    7075 
    7076   case 383:
    7077 
    7078 /* Line 1806 of yacc.c  */
    7079 #line 1541 "parser.yy"
    7080     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7081     break;
    7082 
    7083   case 384:
    7084 
    7085 /* Line 1806 of yacc.c  */
    7086 #line 1544 "parser.yy"
    70877094    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70887095    break;
    70897096
    7090   case 385:
     7097  case 387:
     7098
     7099/* Line 1806 of yacc.c  */
     7100#line 1545 "parser.yy"
     7101    { (yyval.en) = 0; }
     7102    break;
     7103
     7104  case 388:
    70917105
    70927106/* Line 1806 of yacc.c  */
    70937107#line 1547 "parser.yy"
    7094     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7095     break;
    7096 
    7097   case 387:
    7098 
    7099 /* Line 1806 of yacc.c  */
    7100 #line 1553 "parser.yy"
    7101     { (yyval.en) = 0; }
    7102     break;
    7103 
    7104   case 388:
    7105 
    7106 /* Line 1806 of yacc.c  */
    7107 #line 1555 "parser.yy"
    71087108    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71097109    break;
     
    71127112
    71137113/* Line 1806 of yacc.c  */
    7114 #line 1560 "parser.yy"
     7114#line 1552 "parser.yy"
    71157115    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71167116    break;
     
    71197119
    71207120/* Line 1806 of yacc.c  */
    7121 #line 1569 "parser.yy"
     7121#line 1561 "parser.yy"
    71227122    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71237123    break;
     
    71267126
    71277127/* Line 1806 of yacc.c  */
    7128 #line 1571 "parser.yy"
     7128#line 1563 "parser.yy"
    71297129    {
    71307130                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71367136
    71377137/* Line 1806 of yacc.c  */
    7138 #line 1576 "parser.yy"
     7138#line 1568 "parser.yy"
    71397139    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71407140    break;
     
    71437143
    71447144/* Line 1806 of yacc.c  */
    7145 #line 1578 "parser.yy"
     7145#line 1570 "parser.yy"
    71467146    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71477147    break;
     
    71507150
    71517151/* Line 1806 of yacc.c  */
    7152 #line 1583 "parser.yy"
     7152#line 1575 "parser.yy"
    71537153    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71547154    break;
     
    71577157
    71587158/* Line 1806 of yacc.c  */
    7159 #line 1585 "parser.yy"
     7159#line 1577 "parser.yy"
    71607160    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71617161    break;
     
    71647164
    71657165/* Line 1806 of yacc.c  */
    7166 #line 1590 "parser.yy"
     7166#line 1582 "parser.yy"
    71677167    { (yyval.en) = 0; }
    71687168    break;
     
    71717171
    71727172/* Line 1806 of yacc.c  */
    7173 #line 1592 "parser.yy"
     7173#line 1584 "parser.yy"
    71747174    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71757175    break;
     
    71787178
    71797179/* Line 1806 of yacc.c  */
     7180#line 1591 "parser.yy"
     7181    { (yyval.decl) = 0; }
     7182    break;
     7183
     7184  case 403:
     7185
     7186/* Line 1806 of yacc.c  */
    71807187#line 1599 "parser.yy"
    7181     { (yyval.decl) = 0; }
    7182     break;
    7183 
    7184   case 403:
    7185 
    7186 /* Line 1806 of yacc.c  */
    7187 #line 1607 "parser.yy"
    71887188    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71897189    break;
     
    71927192
    71937193/* Line 1806 of yacc.c  */
    7194 #line 1609 "parser.yy"
     7194#line 1601 "parser.yy"
    71957195    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71967196    break;
     
    71997199
    72007200/* Line 1806 of yacc.c  */
     7201#line 1603 "parser.yy"
     7202    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7203    break;
     7204
     7205  case 407:
     7206
     7207/* Line 1806 of yacc.c  */
    72017208#line 1611 "parser.yy"
    7202     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7203     break;
    7204 
    7205   case 407:
    7206 
    7207 /* Line 1806 of yacc.c  */
    7208 #line 1619 "parser.yy"
    72097209    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72107210    break;
    72117211
    72127212  case 408:
     7213
     7214/* Line 1806 of yacc.c  */
     7215#line 1613 "parser.yy"
     7216    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7217    break;
     7218
     7219  case 409:
     7220
     7221/* Line 1806 of yacc.c  */
     7222#line 1615 "parser.yy"
     7223    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7224    break;
     7225
     7226  case 411:
    72137227
    72147228/* Line 1806 of yacc.c  */
     
    72177231    break;
    72187232
    7219   case 409:
    7220 
    7221 /* Line 1806 of yacc.c  */
    7222 #line 1623 "parser.yy"
    7223     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7224     break;
    7225 
    7226   case 411:
    7227 
    7228 /* Line 1806 of yacc.c  */
    7229 #line 1629 "parser.yy"
     7233  case 412:
     7234
     7235/* Line 1806 of yacc.c  */
     7236#line 1626 "parser.yy"
     7237    { (yyval.decl) = 0; }
     7238    break;
     7239
     7240  case 415:
     7241
     7242/* Line 1806 of yacc.c  */
     7243#line 1633 "parser.yy"
     7244    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7245    break;
     7246
     7247  case 418:
     7248
     7249/* Line 1806 of yacc.c  */
     7250#line 1640 "parser.yy"
    72307251    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72317252    break;
    72327253
    7233   case 412:
    7234 
    7235 /* Line 1806 of yacc.c  */
    7236 #line 1634 "parser.yy"
    7237     { (yyval.decl) = 0; }
    7238     break;
    7239 
    7240   case 415:
    7241 
    7242 /* Line 1806 of yacc.c  */
    7243 #line 1641 "parser.yy"
    7244     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7245     break;
    7246 
    7247   case 418:
    7248 
    7249 /* Line 1806 of yacc.c  */
    7250 #line 1648 "parser.yy"
     7254  case 419:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1642 "parser.yy"
    72517258    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72527259    break;
    72537260
    7254   case 419:
    7255 
    7256 /* Line 1806 of yacc.c  */
    7257 #line 1650 "parser.yy"
    7258     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7259     break;
    7260 
    72617261  case 421:
    72627262
    72637263/* Line 1806 of yacc.c  */
    7264 #line 1659 "parser.yy"
     7264#line 1651 "parser.yy"
    72657265    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72667266    break;
     
    72697269
    72707270/* Line 1806 of yacc.c  */
    7271 #line 1662 "parser.yy"
     7271#line 1654 "parser.yy"
    72727272    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72737273    break;
     
    72767276
    72777277/* Line 1806 of yacc.c  */
    7278 #line 1664 "parser.yy"
     7278#line 1656 "parser.yy"
    72797279    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72807280    break;
     
    72837283
    72847284/* Line 1806 of yacc.c  */
    7285 #line 1674 "parser.yy"
     7285#line 1666 "parser.yy"
    72867286    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72877287    break;
     
    72907290
    72917291/* Line 1806 of yacc.c  */
    7292 #line 1680 "parser.yy"
     7292#line 1672 "parser.yy"
    72937293    {
    72947294                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73007300
    73017301/* Line 1806 of yacc.c  */
    7302 #line 1685 "parser.yy"
     7302#line 1677 "parser.yy"
    73037303    {
    73047304                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73107310
    73117311/* Line 1806 of yacc.c  */
    7312 #line 1694 "parser.yy"
     7312#line 1686 "parser.yy"
    73137313    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73147314    break;
     
    73177317
    73187318/* Line 1806 of yacc.c  */
    7319 #line 1703 "parser.yy"
     7319#line 1695 "parser.yy"
    73207320    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73217321    break;
     
    73247324
    73257325/* Line 1806 of yacc.c  */
    7326 #line 1705 "parser.yy"
     7326#line 1697 "parser.yy"
    73277327    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73287328    break;
    73297329
    73307330  case 447:
     7331
     7332/* Line 1806 of yacc.c  */
     7333#line 1722 "parser.yy"
     7334    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7335    break;
     7336
     7337  case 451:
    73317338
    73327339/* Line 1806 of yacc.c  */
     
    73357342    break;
    73367343
    7337   case 451:
    7338 
    7339 /* Line 1806 of yacc.c  */
    7340 #line 1738 "parser.yy"
    7341     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7342     break;
    7343 
    73447344  case 452:
    73457345
    73467346/* Line 1806 of yacc.c  */
     7347#line 1735 "parser.yy"
     7348    { (yyval.in) = 0; }
     7349    break;
     7350
     7351  case 453:
     7352
     7353/* Line 1806 of yacc.c  */
     7354#line 1737 "parser.yy"
     7355    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7356    break;
     7357
     7358  case 454:
     7359
     7360/* Line 1806 of yacc.c  */
     7361#line 1739 "parser.yy"
     7362    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7363    break;
     7364
     7365  case 455:
     7366
     7367/* Line 1806 of yacc.c  */
    73477368#line 1743 "parser.yy"
     7369    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7370    break;
     7371
     7372  case 456:
     7373
     7374/* Line 1806 of yacc.c  */
     7375#line 1744 "parser.yy"
     7376    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7377    break;
     7378
     7379  case 457:
     7380
     7381/* Line 1806 of yacc.c  */
     7382#line 1749 "parser.yy"
    73487383    { (yyval.in) = 0; }
    73497384    break;
    73507385
    7351   case 453:
    7352 
    7353 /* Line 1806 of yacc.c  */
    7354 #line 1745 "parser.yy"
    7355     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7356     break;
    7357 
    7358   case 454:
    7359 
    7360 /* Line 1806 of yacc.c  */
    7361 #line 1747 "parser.yy"
    7362     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7363     break;
    7364 
    7365   case 455:
     7386  case 459:
    73667387
    73677388/* Line 1806 of yacc.c  */
    73687389#line 1751 "parser.yy"
    7369     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7370     break;
    7371 
    7372   case 456:
     7390    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7391    break;
     7392
     7393  case 460:
    73737394
    73747395/* Line 1806 of yacc.c  */
    73757396#line 1752 "parser.yy"
    7376     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7377     break;
    7378 
    7379   case 457:
    7380 
    7381 /* Line 1806 of yacc.c  */
    7382 #line 1757 "parser.yy"
    7383     { (yyval.in) = 0; }
    7384     break;
    7385 
    7386   case 459:
    7387 
    7388 /* Line 1806 of yacc.c  */
    7389 #line 1759 "parser.yy"
    7390     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7391     break;
    7392 
    7393   case 460:
    7394 
    7395 /* Line 1806 of yacc.c  */
    7396 #line 1760 "parser.yy"
    73977397    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    73987398    break;
     
    74017401
    74027402/* Line 1806 of yacc.c  */
    7403 #line 1762 "parser.yy"
     7403#line 1754 "parser.yy"
    74047404    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74057405    break;
     
    74087408
    74097409/* Line 1806 of yacc.c  */
    7410 #line 1778 "parser.yy"
     7410#line 1770 "parser.yy"
    74117411    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74127412    break;
     
    74157415
    74167416/* Line 1806 of yacc.c  */
    7417 #line 1784 "parser.yy"
     7417#line 1776 "parser.yy"
    74187418    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) ) ); }
    74197419    break;
     
    74227422
    74237423/* Line 1806 of yacc.c  */
    7424 #line 1790 "parser.yy"
     7424#line 1782 "parser.yy"
    74257425    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74267426    break;
     
    74297429
    74307430/* Line 1806 of yacc.c  */
    7431 #line 1793 "parser.yy"
     7431#line 1785 "parser.yy"
    74327432    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74337433    break;
     
    74367436
    74377437/* Line 1806 of yacc.c  */
    7438 #line 1795 "parser.yy"
     7438#line 1787 "parser.yy"
    74397439    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74407440    break;
     
    74437443
    74447444/* Line 1806 of yacc.c  */
    7445 #line 1797 "parser.yy"
     7445#line 1789 "parser.yy"
    74467446    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74477447    break;
     
    74507450
    74517451/* Line 1806 of yacc.c  */
    7452 #line 1799 "parser.yy"
     7452#line 1791 "parser.yy"
    74537453    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74547454    break;
     
    74577457
    74587458/* Line 1806 of yacc.c  */
    7459 #line 1823 "parser.yy"
     7459#line 1815 "parser.yy"
    74607460    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74617461    break;
     
    74647464
    74657465/* Line 1806 of yacc.c  */
     7466#line 1817 "parser.yy"
     7467    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7468    break;
     7469
     7470  case 474:
     7471
     7472/* Line 1806 of yacc.c  */
     7473#line 1819 "parser.yy"
     7474    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7475    break;
     7476
     7477  case 476:
     7478
     7479/* Line 1806 of yacc.c  */
    74667480#line 1825 "parser.yy"
     7481    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7482    break;
     7483
     7484  case 477:
     7485
     7486/* Line 1806 of yacc.c  */
     7487#line 1827 "parser.yy"
    74677488    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74687489    break;
    74697490
    7470   case 474:
    7471 
    7472 /* Line 1806 of yacc.c  */
    7473 #line 1827 "parser.yy"
    7474     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7475     break;
    7476 
    7477   case 476:
    7478 
    7479 /* Line 1806 of yacc.c  */
    7480 #line 1833 "parser.yy"
    7481     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7482     break;
    7483 
    7484   case 477:
    7485 
    7486 /* Line 1806 of yacc.c  */
    7487 #line 1835 "parser.yy"
    7488     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7489     break;
    7490 
    74917491  case 478:
    74927492
    74937493/* Line 1806 of yacc.c  */
    7494 #line 1840 "parser.yy"
     7494#line 1832 "parser.yy"
    74957495    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74967496    break;
     
    74997499
    75007500/* Line 1806 of yacc.c  */
    7501 #line 1846 "parser.yy"
     7501#line 1838 "parser.yy"
    75027502    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75037503    break;
     
    75067506
    75077507/* Line 1806 of yacc.c  */
     7508#line 1843 "parser.yy"
     7509    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7510    break;
     7511
     7512  case 482:
     7513
     7514/* Line 1806 of yacc.c  */
     7515#line 1845 "parser.yy"
     7516    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7517    break;
     7518
     7519  case 484:
     7520
     7521/* Line 1806 of yacc.c  */
    75087522#line 1851 "parser.yy"
    7509     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7510     break;
    7511 
    7512   case 482:
     7523    { (yyval.tclass) = DeclarationNode::Type; }
     7524    break;
     7525
     7526  case 485:
    75137527
    75147528/* Line 1806 of yacc.c  */
    75157529#line 1853 "parser.yy"
    7516     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7517     break;
    7518 
    7519   case 484:
    7520 
    7521 /* Line 1806 of yacc.c  */
    7522 #line 1859 "parser.yy"
    7523     { (yyval.tclass) = DeclarationNode::Type; }
    7524     break;
    7525 
    7526   case 485:
    7527 
    7528 /* Line 1806 of yacc.c  */
    7529 #line 1861 "parser.yy"
    75307530    { (yyval.tclass) = DeclarationNode::Ftype; }
    75317531    break;
     
    75347534
    75357535/* Line 1806 of yacc.c  */
    7536 #line 1863 "parser.yy"
     7536#line 1855 "parser.yy"
    75377537    { (yyval.tclass) = DeclarationNode::Dtype; }
    75387538    break;
     
    75417541
    75427542/* Line 1806 of yacc.c  */
    7543 #line 1868 "parser.yy"
     7543#line 1860 "parser.yy"
    75447544    { (yyval.decl) = 0; }
    75457545    break;
     
    75487548
    75497549/* Line 1806 of yacc.c  */
    7550 #line 1870 "parser.yy"
     7550#line 1862 "parser.yy"
    75517551    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75527552    break;
     
    75557555
    75567556/* Line 1806 of yacc.c  */
    7557 #line 1875 "parser.yy"
     7557#line 1867 "parser.yy"
    75587558    {
    75597559                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75657565
    75667566/* Line 1806 of yacc.c  */
    7567 #line 1880 "parser.yy"
     7567#line 1872 "parser.yy"
    75687568    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75697569    break;
     
    75727572
    75737573/* Line 1806 of yacc.c  */
     7574#line 1874 "parser.yy"
     7575    { (yyval.decl) = 0; }
     7576    break;
     7577
     7578  case 492:
     7579
     7580/* Line 1806 of yacc.c  */
     7581#line 1879 "parser.yy"
     7582    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7583    break;
     7584
     7585  case 494:
     7586
     7587/* Line 1806 of yacc.c  */
    75747588#line 1882 "parser.yy"
    7575     { (yyval.decl) = 0; }
    7576     break;
    7577 
    7578   case 492:
    7579 
    7580 /* Line 1806 of yacc.c  */
    7581 #line 1887 "parser.yy"
    7582     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    7583     break;
    7584 
    7585   case 494:
    7586 
    7587 /* Line 1806 of yacc.c  */
    7588 #line 1890 "parser.yy"
    75897589    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    75907590    break;
     
    75937593
    75947594/* Line 1806 of yacc.c  */
    7595 #line 1892 "parser.yy"
     7595#line 1884 "parser.yy"
    75967596    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    75977597    break;
     
    76007600
    76017601/* Line 1806 of yacc.c  */
    7602 #line 1897 "parser.yy"
     7602#line 1889 "parser.yy"
    76037603    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76047604    break;
     
    76077607
    76087608/* Line 1806 of yacc.c  */
    7609 #line 1899 "parser.yy"
     7609#line 1891 "parser.yy"
    76107610    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76117611    break;
     
    76147614
    76157615/* Line 1806 of yacc.c  */
    7616 #line 1901 "parser.yy"
     7616#line 1893 "parser.yy"
    76177617    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76187618    break;
     
    76217621
    76227622/* Line 1806 of yacc.c  */
    7623 #line 1906 "parser.yy"
     7623#line 1898 "parser.yy"
    76247624    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76257625    break;
     
    76287628
    76297629/* Line 1806 of yacc.c  */
    7630 #line 1908 "parser.yy"
     7630#line 1900 "parser.yy"
    76317631    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76327632    break;
     
    76357635
    76367636/* Line 1806 of yacc.c  */
    7637 #line 1913 "parser.yy"
     7637#line 1905 "parser.yy"
    76387638    {
    76397639                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76457645
    76467646/* Line 1806 of yacc.c  */
    7647 #line 1918 "parser.yy"
     7647#line 1910 "parser.yy"
    76487648    {
    76497649                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76557655
    76567656/* Line 1806 of yacc.c  */
    7657 #line 1926 "parser.yy"
     7657#line 1918 "parser.yy"
    76587658    {
    76597659                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76657665
    76667666/* Line 1806 of yacc.c  */
    7667 #line 1931 "parser.yy"
     7667#line 1923 "parser.yy"
    76687668    {
    76697669                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76757675
    76767676/* Line 1806 of yacc.c  */
    7677 #line 1936 "parser.yy"
     7677#line 1928 "parser.yy"
    76787678    {
    76797679                        typedefTable.leaveTrait();
     
    76867686
    76877687/* Line 1806 of yacc.c  */
    7688 #line 1946 "parser.yy"
     7688#line 1938 "parser.yy"
    76897689    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76907690    break;
     
    76937693
    76947694/* Line 1806 of yacc.c  */
    7695 #line 1956 "parser.yy"
     7695#line 1948 "parser.yy"
    76967696    {
    76977697                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77037703
    77047704/* Line 1806 of yacc.c  */
    7705 #line 1961 "parser.yy"
     7705#line 1953 "parser.yy"
    77067706    {
    77077707                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77137713
    77147714/* Line 1806 of yacc.c  */
    7715 #line 1966 "parser.yy"
     7715#line 1958 "parser.yy"
    77167716    {
    77177717                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77237723
    77247724/* Line 1806 of yacc.c  */
    7725 #line 1974 "parser.yy"
     7725#line 1966 "parser.yy"
    77267726    {
    77277727                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77337733
    77347734/* Line 1806 of yacc.c  */
    7735 #line 1979 "parser.yy"
     7735#line 1971 "parser.yy"
    77367736    {
    77377737                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77437743
    77447744/* Line 1806 of yacc.c  */
    7745 #line 1989 "parser.yy"
     7745#line 1981 "parser.yy"
    77467746    {}
    77477747    break;
     
    77507750
    77517751/* Line 1806 of yacc.c  */
    7752 #line 1991 "parser.yy"
     7752#line 1983 "parser.yy"
    77537753    {
    77547754                        if ( theTree ) {
     
    77637763
    77647764/* Line 1806 of yacc.c  */
    7765 #line 2003 "parser.yy"
     7765#line 1995 "parser.yy"
    77667766    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77677767    break;
     
    77707770
    77717771/* Line 1806 of yacc.c  */
     7772#line 2000 "parser.yy"
     7773    { (yyval.decl) = 0; }
     7774    break;
     7775
     7776  case 523:
     7777
     7778/* Line 1806 of yacc.c  */
    77727779#line 2008 "parser.yy"
    7773     { (yyval.decl) = 0; }
    7774     break;
    7775 
    7776   case 523:
    7777 
    7778 /* Line 1806 of yacc.c  */
    7779 #line 2016 "parser.yy"
    77807780    {}
    77817781    break;
     
    77847784
    77857785/* Line 1806 of yacc.c  */
    7786 #line 2018 "parser.yy"
     7786#line 2010 "parser.yy"
    77877787    {
    77887788                        linkageStack.push( linkage );
     
    77947794
    77957795/* Line 1806 of yacc.c  */
    7796 #line 2023 "parser.yy"
     7796#line 2015 "parser.yy"
    77977797    {
    77987798                        linkage = linkageStack.top();
     
    78057805
    78067806/* Line 1806 of yacc.c  */
    7807 #line 2029 "parser.yy"
     7807#line 2021 "parser.yy"
    78087808    {   // mark all fields in list
    78097809                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     
    78167816
    78177817/* Line 1806 of yacc.c  */
    7818 #line 2044 "parser.yy"
     7818#line 2036 "parser.yy"
    78197819    {
    78207820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78277827
    78287828/* Line 1806 of yacc.c  */
    7829 #line 2050 "parser.yy"
     7829#line 2042 "parser.yy"
    78307830    {
    78317831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78387838
    78397839/* Line 1806 of yacc.c  */
    7840 #line 2059 "parser.yy"
     7840#line 2051 "parser.yy"
    78417841    {
    78427842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78497849
    78507850/* Line 1806 of yacc.c  */
    7851 #line 2065 "parser.yy"
     7851#line 2057 "parser.yy"
    78527852    {
    78537853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78607860
    78617861/* Line 1806 of yacc.c  */
    7862 #line 2071 "parser.yy"
     7862#line 2063 "parser.yy"
    78637863    {
    78647864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78717871
    78727872/* Line 1806 of yacc.c  */
    7873 #line 2077 "parser.yy"
     7873#line 2069 "parser.yy"
    78747874    {
    78757875                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78827882
    78837883/* Line 1806 of yacc.c  */
    7884 #line 2083 "parser.yy"
     7884#line 2075 "parser.yy"
    78857885    {
    78867886                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78937893
    78947894/* Line 1806 of yacc.c  */
    7895 #line 2091 "parser.yy"
     7895#line 2083 "parser.yy"
    78967896    {
    78977897                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79027902
    79037903  case 536:
     7904
     7905/* Line 1806 of yacc.c  */
     7906#line 2089 "parser.yy"
     7907    {
     7908                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7909                        typedefTable.leaveScope();
     7910                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7911                }
     7912    break;
     7913
     7914  case 537:
    79047915
    79057916/* Line 1806 of yacc.c  */
     
    79127923    break;
    79137924
    7914   case 537:
    7915 
    7916 /* Line 1806 of yacc.c  */
    7917 #line 2105 "parser.yy"
    7918     {
    7919                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7920                         typedefTable.leaveScope();
    7921                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
    7922                 }
    7923     break;
    7924 
    79257925  case 538:
    79267926
    79277927/* Line 1806 of yacc.c  */
    7928 #line 2111 "parser.yy"
     7928#line 2103 "parser.yy"
    79297929    {
    79307930                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79377937
    79387938/* Line 1806 of yacc.c  */
    7939 #line 2126 "parser.yy"
     7939#line 2118 "parser.yy"
    79407940    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79417941    break;
     
    79447944
    79457945/* Line 1806 of yacc.c  */
    7946 #line 2136 "parser.yy"
     7946#line 2128 "parser.yy"
    79477947    { (yyval.decl) = 0; }
    79487948    break;
     
    79517951
    79527952/* Line 1806 of yacc.c  */
    7953 #line 2143 "parser.yy"
     7953#line 2135 "parser.yy"
    79547954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79557955    break;
     
    79587958
    79597959/* Line 1806 of yacc.c  */
    7960 #line 2149 "parser.yy"
     7960#line 2141 "parser.yy"
    79617961    { (yyval.decl) = 0; }
    79627962    break;
     
    79657965
    79667966/* Line 1806 of yacc.c  */
    7967 #line 2164 "parser.yy"
     7967#line 2156 "parser.yy"
    79687968    {}
    79697969    break;
     
    79727972
    79737973/* Line 1806 of yacc.c  */
    7974 #line 2165 "parser.yy"
     7974#line 2157 "parser.yy"
    79757975    {}
    79767976    break;
     
    79797979
    79807980/* Line 1806 of yacc.c  */
    7981 #line 2166 "parser.yy"
     7981#line 2158 "parser.yy"
    79827982    {}
    79837983    break;
     
    79867986
    79877987/* Line 1806 of yacc.c  */
    7988 #line 2167 "parser.yy"
     7988#line 2159 "parser.yy"
    79897989    {}
    79907990    break;
     
    79937993
    79947994/* Line 1806 of yacc.c  */
    7995 #line 2202 "parser.yy"
     7995#line 2194 "parser.yy"
    79967996    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79977997    break;
     
    80008000
    80018001/* Line 1806 of yacc.c  */
    8002 #line 2205 "parser.yy"
     8002#line 2197 "parser.yy"
    80038003    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80048004    break;
     
    80078007
    80088008/* Line 1806 of yacc.c  */
    8009 #line 2207 "parser.yy"
     8009#line 2199 "parser.yy"
    80108010    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80118011    break;
     
    80148014
    80158015/* Line 1806 of yacc.c  */
    8016 #line 2212 "parser.yy"
     8016#line 2204 "parser.yy"
    80178017    {
    80188018                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80248024
    80258025/* Line 1806 of yacc.c  */
    8026 #line 2217 "parser.yy"
     8026#line 2209 "parser.yy"
    80278027    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80288028    break;
     
    80318031
    80328032/* Line 1806 of yacc.c  */
    8033 #line 2222 "parser.yy"
     8033#line 2214 "parser.yy"
    80348034    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80358035    break;
     
    80388038
    80398039/* Line 1806 of yacc.c  */
    8040 #line 2224 "parser.yy"
     8040#line 2216 "parser.yy"
    80418041    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80428042    break;
     
    80458045
    80468046/* Line 1806 of yacc.c  */
    8047 #line 2226 "parser.yy"
     8047#line 2218 "parser.yy"
    80488048    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80498049    break;
     
    80528052
    80538053/* Line 1806 of yacc.c  */
    8054 #line 2231 "parser.yy"
     8054#line 2223 "parser.yy"
    80558055    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80568056    break;
     
    80598059
    80608060/* Line 1806 of yacc.c  */
    8061 #line 2233 "parser.yy"
     8061#line 2225 "parser.yy"
    80628062    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80638063    break;
     
    80668066
    80678067/* Line 1806 of yacc.c  */
    8068 #line 2235 "parser.yy"
     8068#line 2227 "parser.yy"
    80698069    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80708070    break;
     
    80738073
    80748074/* Line 1806 of yacc.c  */
    8075 #line 2237 "parser.yy"
     8075#line 2229 "parser.yy"
    80768076    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80778077    break;
     
    80808080
    80818081/* Line 1806 of yacc.c  */
    8082 #line 2242 "parser.yy"
     8082#line 2234 "parser.yy"
    80838083    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80848084    break;
     
    80878087
    80888088/* Line 1806 of yacc.c  */
    8089 #line 2244 "parser.yy"
     8089#line 2236 "parser.yy"
    80908090    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80918091    break;
     
    80948094
    80958095/* Line 1806 of yacc.c  */
     8096#line 2245 "parser.yy"
     8097    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8098    break;
     8099
     8100  case 576:
     8101
     8102/* Line 1806 of yacc.c  */
     8103#line 2248 "parser.yy"
     8104    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8105    break;
     8106
     8107  case 577:
     8108
     8109/* Line 1806 of yacc.c  */
    80968110#line 2253 "parser.yy"
     8111    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8112    break;
     8113
     8114  case 578:
     8115
     8116/* Line 1806 of yacc.c  */
     8117#line 2255 "parser.yy"
     8118    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8119    break;
     8120
     8121  case 579:
     8122
     8123/* Line 1806 of yacc.c  */
     8124#line 2257 "parser.yy"
     8125    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8126    break;
     8127
     8128  case 580:
     8129
     8130/* Line 1806 of yacc.c  */
     8131#line 2262 "parser.yy"
     8132    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8133    break;
     8134
     8135  case 581:
     8136
     8137/* Line 1806 of yacc.c  */
     8138#line 2264 "parser.yy"
     8139    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8140    break;
     8141
     8142  case 582:
     8143
     8144/* Line 1806 of yacc.c  */
     8145#line 2266 "parser.yy"
     8146    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8147    break;
     8148
     8149  case 583:
     8150
     8151/* Line 1806 of yacc.c  */
     8152#line 2271 "parser.yy"
     8153    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8154    break;
     8155
     8156  case 584:
     8157
     8158/* Line 1806 of yacc.c  */
     8159#line 2273 "parser.yy"
     8160    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8161    break;
     8162
     8163  case 585:
     8164
     8165/* Line 1806 of yacc.c  */
     8166#line 2275 "parser.yy"
     8167    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8168    break;
     8169
     8170  case 589:
     8171
     8172/* Line 1806 of yacc.c  */
     8173#line 2290 "parser.yy"
     8174    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8175    break;
     8176
     8177  case 590:
     8178
     8179/* Line 1806 of yacc.c  */
     8180#line 2292 "parser.yy"
     8181    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8182    break;
     8183
     8184  case 591:
     8185
     8186/* Line 1806 of yacc.c  */
     8187#line 2294 "parser.yy"
     8188    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8189    break;
     8190
     8191  case 592:
     8192
     8193/* Line 1806 of yacc.c  */
     8194#line 2299 "parser.yy"
     8195    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8196    break;
     8197
     8198  case 593:
     8199
     8200/* Line 1806 of yacc.c  */
     8201#line 2301 "parser.yy"
     8202    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8203    break;
     8204
     8205  case 594:
     8206
     8207/* Line 1806 of yacc.c  */
     8208#line 2303 "parser.yy"
     8209    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8210    break;
     8211
     8212  case 595:
     8213
     8214/* Line 1806 of yacc.c  */
     8215#line 2308 "parser.yy"
     8216    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8217    break;
     8218
     8219  case 596:
     8220
     8221/* Line 1806 of yacc.c  */
     8222#line 2310 "parser.yy"
     8223    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8224    break;
     8225
     8226  case 597:
     8227
     8228/* Line 1806 of yacc.c  */
     8229#line 2312 "parser.yy"
     8230    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8231    break;
     8232
     8233  case 598:
     8234
     8235/* Line 1806 of yacc.c  */
     8236#line 2327 "parser.yy"
    80978237    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80988238    break;
    80998239
    8100   case 576:
    8101 
    8102 /* Line 1806 of yacc.c  */
    8103 #line 2256 "parser.yy"
     8240  case 600:
     8241
     8242/* Line 1806 of yacc.c  */
     8243#line 2330 "parser.yy"
    81048244    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81058245    break;
    81068246
    8107   case 577:
    8108 
    8109 /* Line 1806 of yacc.c  */
    8110 #line 2261 "parser.yy"
     8247  case 601:
     8248
     8249/* Line 1806 of yacc.c  */
     8250#line 2332 "parser.yy"
     8251    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8252    break;
     8253
     8254  case 603:
     8255
     8256/* Line 1806 of yacc.c  */
     8257#line 2338 "parser.yy"
     8258    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8259    break;
     8260
     8261  case 604:
     8262
     8263/* Line 1806 of yacc.c  */
     8264#line 2343 "parser.yy"
     8265    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8266    break;
     8267
     8268  case 605:
     8269
     8270/* Line 1806 of yacc.c  */
     8271#line 2345 "parser.yy"
     8272    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8273    break;
     8274
     8275  case 606:
     8276
     8277/* Line 1806 of yacc.c  */
     8278#line 2347 "parser.yy"
     8279    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8280    break;
     8281
     8282  case 607:
     8283
     8284/* Line 1806 of yacc.c  */
     8285#line 2352 "parser.yy"
     8286    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8287    break;
     8288
     8289  case 608:
     8290
     8291/* Line 1806 of yacc.c  */
     8292#line 2354 "parser.yy"
     8293    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8294    break;
     8295
     8296  case 609:
     8297
     8298/* Line 1806 of yacc.c  */
     8299#line 2356 "parser.yy"
     8300    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8301    break;
     8302
     8303  case 610:
     8304
     8305/* Line 1806 of yacc.c  */
     8306#line 2358 "parser.yy"
     8307    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8308    break;
     8309
     8310  case 611:
     8311
     8312/* Line 1806 of yacc.c  */
     8313#line 2363 "parser.yy"
    81118314    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81128315    break;
    81138316
    8114   case 578:
    8115 
    8116 /* Line 1806 of yacc.c  */
    8117 #line 2263 "parser.yy"
     8317  case 612:
     8318
     8319/* Line 1806 of yacc.c  */
     8320#line 2365 "parser.yy"
    81188321    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81198322    break;
    81208323
    8121   case 579:
    8122 
    8123 /* Line 1806 of yacc.c  */
    8124 #line 2265 "parser.yy"
     8324  case 613:
     8325
     8326/* Line 1806 of yacc.c  */
     8327#line 2367 "parser.yy"
    81258328    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81268329    break;
    81278330
    8128   case 580:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2270 "parser.yy"
     8331  case 614:
     8332
     8333/* Line 1806 of yacc.c  */
     8334#line 2377 "parser.yy"
     8335    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8336    break;
     8337
     8338  case 616:
     8339
     8340/* Line 1806 of yacc.c  */
     8341#line 2380 "parser.yy"
     8342    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8343    break;
     8344
     8345  case 617:
     8346
     8347/* Line 1806 of yacc.c  */
     8348#line 2382 "parser.yy"
     8349    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8350    break;
     8351
     8352  case 618:
     8353
     8354/* Line 1806 of yacc.c  */
     8355#line 2387 "parser.yy"
    81328356    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81338357    break;
    81348358
    8135   case 581:
    8136 
    8137 /* Line 1806 of yacc.c  */
    8138 #line 2272 "parser.yy"
     8359  case 619:
     8360
     8361/* Line 1806 of yacc.c  */
     8362#line 2389 "parser.yy"
    81398363    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81408364    break;
    81418365
    8142   case 582:
    8143 
    8144 /* Line 1806 of yacc.c  */
    8145 #line 2274 "parser.yy"
     8366  case 620:
     8367
     8368/* Line 1806 of yacc.c  */
     8369#line 2391 "parser.yy"
    81468370    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81478371    break;
    81488372
    8149   case 583:
    8150 
    8151 /* Line 1806 of yacc.c  */
    8152 #line 2279 "parser.yy"
     8373  case 621:
     8374
     8375/* Line 1806 of yacc.c  */
     8376#line 2396 "parser.yy"
     8377    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8378    break;
     8379
     8380  case 622:
     8381
     8382/* Line 1806 of yacc.c  */
     8383#line 2398 "parser.yy"
    81538384    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81548385    break;
    81558386
    8156   case 584:
    8157 
    8158 /* Line 1806 of yacc.c  */
    8159 #line 2281 "parser.yy"
     8387  case 623:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2400 "parser.yy"
    81608391    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81618392    break;
    81628393
    8163   case 585:
    8164 
    8165 /* Line 1806 of yacc.c  */
    8166 #line 2283 "parser.yy"
     8394  case 624:
     8395
     8396/* Line 1806 of yacc.c  */
     8397#line 2402 "parser.yy"
    81678398    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81688399    break;
    81698400
    8170   case 589:
    8171 
    8172 /* Line 1806 of yacc.c  */
    8173 #line 2298 "parser.yy"
    8174     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8175     break;
    8176 
    8177   case 590:
    8178 
    8179 /* Line 1806 of yacc.c  */
    8180 #line 2300 "parser.yy"
    8181     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8182     break;
    8183 
    8184   case 591:
    8185 
    8186 /* Line 1806 of yacc.c  */
    8187 #line 2302 "parser.yy"
     8401  case 625:
     8402
     8403/* Line 1806 of yacc.c  */
     8404#line 2407 "parser.yy"
     8405    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8406    break;
     8407
     8408  case 626:
     8409
     8410/* Line 1806 of yacc.c  */
     8411#line 2409 "parser.yy"
     8412    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8413    break;
     8414
     8415  case 627:
     8416
     8417/* Line 1806 of yacc.c  */
     8418#line 2411 "parser.yy"
    81888419    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81898420    break;
    81908421
    8191   case 592:
    8192 
    8193 /* Line 1806 of yacc.c  */
    8194 #line 2307 "parser.yy"
    8195     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8196     break;
    8197 
    8198   case 593:
    8199 
    8200 /* Line 1806 of yacc.c  */
    8201 #line 2309 "parser.yy"
    8202     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8203     break;
    8204 
    8205   case 594:
    8206 
    8207 /* Line 1806 of yacc.c  */
    8208 #line 2311 "parser.yy"
    8209     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8210     break;
    8211 
    8212   case 595:
    8213 
    8214 /* Line 1806 of yacc.c  */
    8215 #line 2316 "parser.yy"
    8216     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8217     break;
    8218 
    8219   case 596:
    8220 
    8221 /* Line 1806 of yacc.c  */
    8222 #line 2318 "parser.yy"
    8223     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8224     break;
    8225 
    8226   case 597:
    8227 
    8228 /* Line 1806 of yacc.c  */
    8229 #line 2320 "parser.yy"
    8230     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8231     break;
    8232 
    8233   case 598:
    8234 
    8235 /* Line 1806 of yacc.c  */
    8236 #line 2335 "parser.yy"
     8422  case 628:
     8423
     8424/* Line 1806 of yacc.c  */
     8425#line 2442 "parser.yy"
    82378426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82388427    break;
    82398428
    8240   case 600:
    8241 
    8242 /* Line 1806 of yacc.c  */
    8243 #line 2338 "parser.yy"
     8429  case 630:
     8430
     8431/* Line 1806 of yacc.c  */
     8432#line 2445 "parser.yy"
    82448433    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82458434    break;
    82468435
    8247   case 601:
    8248 
    8249 /* Line 1806 of yacc.c  */
    8250 #line 2340 "parser.yy"
     8436  case 631:
     8437
     8438/* Line 1806 of yacc.c  */
     8439#line 2447 "parser.yy"
    82518440    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82528441    break;
    82538442
    8254   case 603:
    8255 
    8256 /* Line 1806 of yacc.c  */
    8257 #line 2346 "parser.yy"
    8258     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8259     break;
    8260 
    8261   case 604:
    8262 
    8263 /* Line 1806 of yacc.c  */
    8264 #line 2351 "parser.yy"
    8265     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8266     break;
    8267 
    8268   case 605:
    8269 
    8270 /* Line 1806 of yacc.c  */
    8271 #line 2353 "parser.yy"
    8272     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8273     break;
    8274 
    8275   case 606:
    8276 
    8277 /* Line 1806 of yacc.c  */
    8278 #line 2355 "parser.yy"
    8279     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8280     break;
    8281 
    8282   case 607:
    8283 
    8284 /* Line 1806 of yacc.c  */
    8285 #line 2360 "parser.yy"
    8286     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8287     break;
    8288 
    8289   case 608:
    8290 
    8291 /* Line 1806 of yacc.c  */
    8292 #line 2362 "parser.yy"
    8293     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8294     break;
    8295 
    8296   case 609:
    8297 
    8298 /* Line 1806 of yacc.c  */
    8299 #line 2364 "parser.yy"
    8300     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8301     break;
    8302 
    8303   case 610:
    8304 
    8305 /* Line 1806 of yacc.c  */
    8306 #line 2366 "parser.yy"
    8307     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8308     break;
    8309 
    8310   case 611:
    8311 
    8312 /* Line 1806 of yacc.c  */
    8313 #line 2371 "parser.yy"
    8314     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8315     break;
    8316 
    8317   case 612:
    8318 
    8319 /* Line 1806 of yacc.c  */
    8320 #line 2373 "parser.yy"
    8321     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8322     break;
    8323 
    8324   case 613:
    8325 
    8326 /* Line 1806 of yacc.c  */
    8327 #line 2375 "parser.yy"
    8328     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8329     break;
    8330 
    8331   case 614:
    8332 
    8333 /* Line 1806 of yacc.c  */
    8334 #line 2385 "parser.yy"
    8335     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8336     break;
    8337 
    8338   case 616:
    8339 
    8340 /* Line 1806 of yacc.c  */
    8341 #line 2388 "parser.yy"
    8342     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8343     break;
    8344 
    8345   case 617:
    8346 
    8347 /* Line 1806 of yacc.c  */
    8348 #line 2390 "parser.yy"
    8349     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8350     break;
    8351 
    8352   case 618:
    8353 
    8354 /* Line 1806 of yacc.c  */
    8355 #line 2395 "parser.yy"
    8356     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8357     break;
    8358 
    8359   case 619:
    8360 
    8361 /* Line 1806 of yacc.c  */
    8362 #line 2397 "parser.yy"
    8363     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8364     break;
    8365 
    8366   case 620:
    8367 
    8368 /* Line 1806 of yacc.c  */
    8369 #line 2399 "parser.yy"
    8370     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8371     break;
    8372 
    8373   case 621:
    8374 
    8375 /* Line 1806 of yacc.c  */
    8376 #line 2404 "parser.yy"
    8377     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8378     break;
    8379 
    8380   case 622:
    8381 
    8382 /* Line 1806 of yacc.c  */
    8383 #line 2406 "parser.yy"
    8384     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8385     break;
    8386 
    8387   case 623:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2408 "parser.yy"
    8391     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8392     break;
    8393 
    8394   case 624:
    8395 
    8396 /* Line 1806 of yacc.c  */
    8397 #line 2410 "parser.yy"
    8398     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8399     break;
    8400 
    8401   case 625:
    8402 
    8403 /* Line 1806 of yacc.c  */
    8404 #line 2415 "parser.yy"
    8405     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8406     break;
    8407 
    8408   case 626:
    8409 
    8410 /* Line 1806 of yacc.c  */
    8411 #line 2417 "parser.yy"
    8412     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8413     break;
    8414 
    8415   case 627:
    8416 
    8417 /* Line 1806 of yacc.c  */
    8418 #line 2419 "parser.yy"
    8419     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8420     break;
    8421 
    8422   case 628:
    8423 
    8424 /* Line 1806 of yacc.c  */
    8425 #line 2450 "parser.yy"
    8426     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8427     break;
    8428 
    8429   case 630:
    8430 
    8431 /* Line 1806 of yacc.c  */
    8432 #line 2453 "parser.yy"
    8433     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8434     break;
    8435 
    8436   case 631:
    8437 
    8438 /* Line 1806 of yacc.c  */
    8439 #line 2455 "parser.yy"
    8440     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8441     break;
    8442 
    84438443  case 632:
    84448444
    84458445/* Line 1806 of yacc.c  */
    8446 #line 2460 "parser.yy"
     8446#line 2452 "parser.yy"
    84478447    {
    84488448                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84548454
    84558455/* Line 1806 of yacc.c  */
    8456 #line 2465 "parser.yy"
     8456#line 2457 "parser.yy"
    84578457    {
    84588458                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84648464
    84658465/* Line 1806 of yacc.c  */
    8466 #line 2473 "parser.yy"
     8466#line 2465 "parser.yy"
    84678467    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84688468    break;
     
    84718471
    84728472/* Line 1806 of yacc.c  */
    8473 #line 2475 "parser.yy"
     8473#line 2467 "parser.yy"
    84748474    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84758475    break;
     
    84788478
    84798479/* Line 1806 of yacc.c  */
    8480 #line 2477 "parser.yy"
     8480#line 2469 "parser.yy"
    84818481    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84828482    break;
     
    84858485
    84868486/* Line 1806 of yacc.c  */
    8487 #line 2482 "parser.yy"
     8487#line 2474 "parser.yy"
    84888488    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84898489    break;
     
    84928492
    84938493/* Line 1806 of yacc.c  */
    8494 #line 2484 "parser.yy"
     8494#line 2476 "parser.yy"
    84958495    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84968496    break;
     
    84998499
    85008500/* Line 1806 of yacc.c  */
    8501 #line 2489 "parser.yy"
     8501#line 2481 "parser.yy"
    85028502    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85038503    break;
     
    85068506
    85078507/* Line 1806 of yacc.c  */
    8508 #line 2491 "parser.yy"
     8508#line 2483 "parser.yy"
    85098509    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85108510    break;
     
    85138513
    85148514/* Line 1806 of yacc.c  */
    8515 #line 2506 "parser.yy"
     8515#line 2498 "parser.yy"
    85168516    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85178517    break;
     
    85208520
    85218521/* Line 1806 of yacc.c  */
    8522 #line 2508 "parser.yy"
     8522#line 2500 "parser.yy"
    85238523    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85248524    break;
     
    85278527
    85288528/* Line 1806 of yacc.c  */
     8529#line 2505 "parser.yy"
     8530    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8531    break;
     8532
     8533  case 645:
     8534
     8535/* Line 1806 of yacc.c  */
     8536#line 2507 "parser.yy"
     8537    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8538    break;
     8539
     8540  case 646:
     8541
     8542/* Line 1806 of yacc.c  */
     8543#line 2509 "parser.yy"
     8544    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8545    break;
     8546
     8547  case 647:
     8548
     8549/* Line 1806 of yacc.c  */
     8550#line 2511 "parser.yy"
     8551    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8552    break;
     8553
     8554  case 648:
     8555
     8556/* Line 1806 of yacc.c  */
    85298557#line 2513 "parser.yy"
     8558    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8559    break;
     8560
     8561  case 650:
     8562
     8563/* Line 1806 of yacc.c  */
     8564#line 2519 "parser.yy"
     8565    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8566    break;
     8567
     8568  case 651:
     8569
     8570/* Line 1806 of yacc.c  */
     8571#line 2521 "parser.yy"
     8572    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8573    break;
     8574
     8575  case 652:
     8576
     8577/* Line 1806 of yacc.c  */
     8578#line 2523 "parser.yy"
     8579    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8580    break;
     8581
     8582  case 653:
     8583
     8584/* Line 1806 of yacc.c  */
     8585#line 2528 "parser.yy"
     8586    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8587    break;
     8588
     8589  case 654:
     8590
     8591/* Line 1806 of yacc.c  */
     8592#line 2530 "parser.yy"
     8593    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8594    break;
     8595
     8596  case 655:
     8597
     8598/* Line 1806 of yacc.c  */
     8599#line 2532 "parser.yy"
     8600    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8601    break;
     8602
     8603  case 656:
     8604
     8605/* Line 1806 of yacc.c  */
     8606#line 2538 "parser.yy"
     8607    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8608    break;
     8609
     8610  case 657:
     8611
     8612/* Line 1806 of yacc.c  */
     8613#line 2540 "parser.yy"
     8614    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8615    break;
     8616
     8617  case 659:
     8618
     8619/* Line 1806 of yacc.c  */
     8620#line 2546 "parser.yy"
     8621    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8622    break;
     8623
     8624  case 660:
     8625
     8626/* Line 1806 of yacc.c  */
     8627#line 2548 "parser.yy"
     8628    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8629    break;
     8630
     8631  case 661:
     8632
     8633/* Line 1806 of yacc.c  */
     8634#line 2550 "parser.yy"
     8635    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8636    break;
     8637
     8638  case 662:
     8639
     8640/* Line 1806 of yacc.c  */
     8641#line 2552 "parser.yy"
     8642    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8643    break;
     8644
     8645  case 664:
     8646
     8647/* Line 1806 of yacc.c  */
     8648#line 2567 "parser.yy"
     8649    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8650    break;
     8651
     8652  case 665:
     8653
     8654/* Line 1806 of yacc.c  */
     8655#line 2569 "parser.yy"
     8656    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8657    break;
     8658
     8659  case 666:
     8660
     8661/* Line 1806 of yacc.c  */
     8662#line 2574 "parser.yy"
    85308663    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85318664    break;
    85328665
    8533   case 645:
    8534 
    8535 /* Line 1806 of yacc.c  */
    8536 #line 2515 "parser.yy"
     8666  case 667:
     8667
     8668/* Line 1806 of yacc.c  */
     8669#line 2576 "parser.yy"
    85378670    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85388671    break;
    85398672
    8540   case 646:
    8541 
    8542 /* Line 1806 of yacc.c  */
    8543 #line 2517 "parser.yy"
     8673  case 668:
     8674
     8675/* Line 1806 of yacc.c  */
     8676#line 2578 "parser.yy"
    85448677    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85458678    break;
    85468679
    8547   case 647:
    8548 
    8549 /* Line 1806 of yacc.c  */
    8550 #line 2519 "parser.yy"
     8680  case 669:
     8681
     8682/* Line 1806 of yacc.c  */
     8683#line 2580 "parser.yy"
    85518684    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85528685    break;
    85538686
    8554   case 648:
    8555 
    8556 /* Line 1806 of yacc.c  */
    8557 #line 2521 "parser.yy"
     8687  case 670:
     8688
     8689/* Line 1806 of yacc.c  */
     8690#line 2582 "parser.yy"
    85588691    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85598692    break;
    85608693
    8561   case 650:
    8562 
    8563 /* Line 1806 of yacc.c  */
    8564 #line 2527 "parser.yy"
     8694  case 672:
     8695
     8696/* Line 1806 of yacc.c  */
     8697#line 2588 "parser.yy"
    85658698    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85668699    break;
    85678700
    8568   case 651:
    8569 
    8570 /* Line 1806 of yacc.c  */
    8571 #line 2529 "parser.yy"
     8701  case 673:
     8702
     8703/* Line 1806 of yacc.c  */
     8704#line 2590 "parser.yy"
    85728705    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85738706    break;
    85748707
    8575   case 652:
    8576 
    8577 /* Line 1806 of yacc.c  */
    8578 #line 2531 "parser.yy"
     8708  case 674:
     8709
     8710/* Line 1806 of yacc.c  */
     8711#line 2592 "parser.yy"
    85798712    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85808713    break;
    85818714
    8582   case 653:
    8583 
    8584 /* Line 1806 of yacc.c  */
    8585 #line 2536 "parser.yy"
     8715  case 675:
     8716
     8717/* Line 1806 of yacc.c  */
     8718#line 2597 "parser.yy"
    85868719    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85878720    break;
    85888721
    8589   case 654:
    8590 
    8591 /* Line 1806 of yacc.c  */
    8592 #line 2538 "parser.yy"
     8722  case 676:
     8723
     8724/* Line 1806 of yacc.c  */
     8725#line 2599 "parser.yy"
    85938726    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85948727    break;
    85958728
    8596   case 655:
    8597 
    8598 /* Line 1806 of yacc.c  */
    8599 #line 2540 "parser.yy"
     8729  case 677:
     8730
     8731/* Line 1806 of yacc.c  */
     8732#line 2601 "parser.yy"
    86008733    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86018734    break;
    86028735
    8603   case 656:
    8604 
    8605 /* Line 1806 of yacc.c  */
    8606 #line 2546 "parser.yy"
     8736  case 679:
     8737
     8738/* Line 1806 of yacc.c  */
     8739#line 2608 "parser.yy"
     8740    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8741    break;
     8742
     8743  case 681:
     8744
     8745/* Line 1806 of yacc.c  */
     8746#line 2619 "parser.yy"
    86078747    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86088748    break;
    86098749
    8610   case 657:
    8611 
    8612 /* Line 1806 of yacc.c  */
    8613 #line 2548 "parser.yy"
    8614     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8615     break;
    8616 
    8617   case 659:
    8618 
    8619 /* Line 1806 of yacc.c  */
    8620 #line 2554 "parser.yy"
    8621     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8622     break;
    8623 
    8624   case 660:
    8625 
    8626 /* Line 1806 of yacc.c  */
    8627 #line 2556 "parser.yy"
    8628     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8629     break;
    8630 
    8631   case 661:
    8632 
    8633 /* Line 1806 of yacc.c  */
    8634 #line 2558 "parser.yy"
    8635     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8636     break;
    8637 
    8638   case 662:
    8639 
    8640 /* Line 1806 of yacc.c  */
    8641 #line 2560 "parser.yy"
    8642     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8643     break;
    8644 
    8645   case 664:
    8646 
    8647 /* Line 1806 of yacc.c  */
    8648 #line 2575 "parser.yy"
     8750  case 682:
     8751
     8752/* Line 1806 of yacc.c  */
     8753#line 2622 "parser.yy"
     8754    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8755    break;
     8756
     8757  case 683:
     8758
     8759/* Line 1806 of yacc.c  */
     8760#line 2624 "parser.yy"
     8761    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8762    break;
     8763
     8764  case 684:
     8765
     8766/* Line 1806 of yacc.c  */
     8767#line 2627 "parser.yy"
     8768    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8769    break;
     8770
     8771  case 685:
     8772
     8773/* Line 1806 of yacc.c  */
     8774#line 2629 "parser.yy"
     8775    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8776    break;
     8777
     8778  case 686:
     8779
     8780/* Line 1806 of yacc.c  */
     8781#line 2631 "parser.yy"
     8782    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8783    break;
     8784
     8785  case 688:
     8786
     8787/* Line 1806 of yacc.c  */
     8788#line 2645 "parser.yy"
    86498789    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86508790    break;
    86518791
    8652   case 665:
    8653 
    8654 /* Line 1806 of yacc.c  */
    8655 #line 2577 "parser.yy"
     8792  case 689:
     8793
     8794/* Line 1806 of yacc.c  */
     8795#line 2647 "parser.yy"
    86568796    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86578797    break;
    86588798
    8659   case 666:
    8660 
    8661 /* Line 1806 of yacc.c  */
    8662 #line 2582 "parser.yy"
     8799  case 690:
     8800
     8801/* Line 1806 of yacc.c  */
     8802#line 2652 "parser.yy"
    86638803    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86648804    break;
    86658805
    8666   case 667:
    8667 
    8668 /* Line 1806 of yacc.c  */
    8669 #line 2584 "parser.yy"
     8806  case 691:
     8807
     8808/* Line 1806 of yacc.c  */
     8809#line 2654 "parser.yy"
    86708810    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86718811    break;
    86728812
    8673   case 668:
    8674 
    8675 /* Line 1806 of yacc.c  */
    8676 #line 2586 "parser.yy"
     8813  case 692:
     8814
     8815/* Line 1806 of yacc.c  */
     8816#line 2656 "parser.yy"
    86778817    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86788818    break;
    86798819
    8680   case 669:
    8681 
    8682 /* Line 1806 of yacc.c  */
    8683 #line 2588 "parser.yy"
     8820  case 693:
     8821
     8822/* Line 1806 of yacc.c  */
     8823#line 2658 "parser.yy"
    86848824    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86858825    break;
    86868826
    8687   case 670:
    8688 
    8689 /* Line 1806 of yacc.c  */
    8690 #line 2590 "parser.yy"
     8827  case 694:
     8828
     8829/* Line 1806 of yacc.c  */
     8830#line 2660 "parser.yy"
    86918831    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86928832    break;
    86938833
    8694   case 672:
    8695 
    8696 /* Line 1806 of yacc.c  */
    8697 #line 2596 "parser.yy"
     8834  case 696:
     8835
     8836/* Line 1806 of yacc.c  */
     8837#line 2666 "parser.yy"
    86988838    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86998839    break;
    87008840
    8701   case 673:
    8702 
    8703 /* Line 1806 of yacc.c  */
    8704 #line 2598 "parser.yy"
     8841  case 697:
     8842
     8843/* Line 1806 of yacc.c  */
     8844#line 2668 "parser.yy"
    87058845    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87068846    break;
    87078847
    8708   case 674:
    8709 
    8710 /* Line 1806 of yacc.c  */
    8711 #line 2600 "parser.yy"
     8848  case 698:
     8849
     8850/* Line 1806 of yacc.c  */
     8851#line 2670 "parser.yy"
    87128852    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87138853    break;
    87148854
    8715   case 675:
    8716 
    8717 /* Line 1806 of yacc.c  */
    8718 #line 2605 "parser.yy"
    8719     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8720     break;
    8721 
    8722   case 676:
    8723 
    8724 /* Line 1806 of yacc.c  */
    8725 #line 2607 "parser.yy"
     8855  case 699:
     8856
     8857/* Line 1806 of yacc.c  */
     8858#line 2675 "parser.yy"
    87268859    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87278860    break;
    87288861
    8729   case 677:
    8730 
    8731 /* Line 1806 of yacc.c  */
    8732 #line 2609 "parser.yy"
     8862  case 700:
     8863
     8864/* Line 1806 of yacc.c  */
     8865#line 2677 "parser.yy"
    87338866    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87348867    break;
    87358868
    8736   case 679:
    8737 
    8738 /* Line 1806 of yacc.c  */
    8739 #line 2616 "parser.yy"
    8740     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8741     break;
    8742 
    8743   case 681:
    8744 
    8745 /* Line 1806 of yacc.c  */
    8746 #line 2627 "parser.yy"
    8747     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8748     break;
    8749 
    8750   case 682:
    8751 
    8752 /* Line 1806 of yacc.c  */
    8753 #line 2630 "parser.yy"
    8754     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8755     break;
    8756 
    8757   case 683:
    8758 
    8759 /* Line 1806 of yacc.c  */
    8760 #line 2632 "parser.yy"
    8761     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8762     break;
    8763 
    8764   case 684:
    8765 
    8766 /* Line 1806 of yacc.c  */
    8767 #line 2635 "parser.yy"
    8768     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8769     break;
    8770 
    8771   case 685:
    8772 
    8773 /* Line 1806 of yacc.c  */
    8774 #line 2637 "parser.yy"
    8775     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8776     break;
    8777 
    8778   case 686:
    8779 
    8780 /* Line 1806 of yacc.c  */
    8781 #line 2639 "parser.yy"
    8782     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8783     break;
    8784 
    8785   case 688:
    8786 
    8787 /* Line 1806 of yacc.c  */
    8788 #line 2653 "parser.yy"
    8789     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8790     break;
    8791 
    8792   case 689:
    8793 
    8794 /* Line 1806 of yacc.c  */
    8795 #line 2655 "parser.yy"
    8796     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8797     break;
    8798 
    8799   case 690:
    8800 
    8801 /* Line 1806 of yacc.c  */
    8802 #line 2660 "parser.yy"
    8803     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8804     break;
    8805 
    8806   case 691:
    8807 
    8808 /* Line 1806 of yacc.c  */
    8809 #line 2662 "parser.yy"
    8810     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8811     break;
    8812 
    8813   case 692:
    8814 
    8815 /* Line 1806 of yacc.c  */
    8816 #line 2664 "parser.yy"
    8817     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8818     break;
    8819 
    8820   case 693:
    8821 
    8822 /* Line 1806 of yacc.c  */
    8823 #line 2666 "parser.yy"
    8824     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8825     break;
    8826 
    8827   case 694:
    8828 
    8829 /* Line 1806 of yacc.c  */
    8830 #line 2668 "parser.yy"
    8831     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8832     break;
    8833 
    8834   case 696:
    8835 
    8836 /* Line 1806 of yacc.c  */
    8837 #line 2674 "parser.yy"
    8838     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8839     break;
    8840 
    8841   case 697:
    8842 
    8843 /* Line 1806 of yacc.c  */
    8844 #line 2676 "parser.yy"
    8845     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8846     break;
    8847 
    8848   case 698:
    8849 
    8850 /* Line 1806 of yacc.c  */
    8851 #line 2678 "parser.yy"
    8852     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8853     break;
    8854 
    8855   case 699:
    8856 
    8857 /* Line 1806 of yacc.c  */
    8858 #line 2683 "parser.yy"
    8859     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8860     break;
    8861 
    8862   case 700:
    8863 
    8864 /* Line 1806 of yacc.c  */
    8865 #line 2685 "parser.yy"
    8866     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8867     break;
    8868 
    88698869  case 703:
    88708870
    88718871/* Line 1806 of yacc.c  */
    8872 #line 2695 "parser.yy"
     8872#line 2687 "parser.yy"
    88738873    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88748874    break;
    88758875
    88768876  case 706:
     8877
     8878/* Line 1806 of yacc.c  */
     8879#line 2697 "parser.yy"
     8880    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8881    break;
     8882
     8883  case 707:
     8884
     8885/* Line 1806 of yacc.c  */
     8886#line 2699 "parser.yy"
     8887    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8888    break;
     8889
     8890  case 708:
     8891
     8892/* Line 1806 of yacc.c  */
     8893#line 2701 "parser.yy"
     8894    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8895    break;
     8896
     8897  case 709:
     8898
     8899/* Line 1806 of yacc.c  */
     8900#line 2703 "parser.yy"
     8901    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8902    break;
     8903
     8904  case 710:
    88778905
    88788906/* Line 1806 of yacc.c  */
     
    88818909    break;
    88828910
    8883   case 707:
     8911  case 711:
    88848912
    88858913/* Line 1806 of yacc.c  */
     
    88888916    break;
    88898917
    8890   case 708:
    8891 
    8892 /* Line 1806 of yacc.c  */
    8893 #line 2709 "parser.yy"
     8918  case 712:
     8919
     8920/* Line 1806 of yacc.c  */
     8921#line 2714 "parser.yy"
     8922    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8923    break;
     8924
     8925  case 713:
     8926
     8927/* Line 1806 of yacc.c  */
     8928#line 2716 "parser.yy"
     8929    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8930    break;
     8931
     8932  case 714:
     8933
     8934/* Line 1806 of yacc.c  */
     8935#line 2718 "parser.yy"
     8936    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8937    break;
     8938
     8939  case 715:
     8940
     8941/* Line 1806 of yacc.c  */
     8942#line 2720 "parser.yy"
     8943    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8944    break;
     8945
     8946  case 716:
     8947
     8948/* Line 1806 of yacc.c  */
     8949#line 2722 "parser.yy"
     8950    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8951    break;
     8952
     8953  case 717:
     8954
     8955/* Line 1806 of yacc.c  */
     8956#line 2724 "parser.yy"
     8957    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8958    break;
     8959
     8960  case 718:
     8961
     8962/* Line 1806 of yacc.c  */
     8963#line 2726 "parser.yy"
     8964    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8965    break;
     8966
     8967  case 719:
     8968
     8969/* Line 1806 of yacc.c  */
     8970#line 2728 "parser.yy"
     8971    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8972    break;
     8973
     8974  case 720:
     8975
     8976/* Line 1806 of yacc.c  */
     8977#line 2730 "parser.yy"
     8978    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8979    break;
     8980
     8981  case 721:
     8982
     8983/* Line 1806 of yacc.c  */
     8984#line 2732 "parser.yy"
     8985    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8986    break;
     8987
     8988  case 722:
     8989
     8990/* Line 1806 of yacc.c  */
     8991#line 2737 "parser.yy"
     8992    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8993    break;
     8994
     8995  case 723:
     8996
     8997/* Line 1806 of yacc.c  */
     8998#line 2739 "parser.yy"
     8999    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     9000    break;
     9001
     9002  case 724:
     9003
     9004/* Line 1806 of yacc.c  */
     9005#line 2744 "parser.yy"
     9006    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9007    break;
     9008
     9009  case 725:
     9010
     9011/* Line 1806 of yacc.c  */
     9012#line 2746 "parser.yy"
     9013    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9014    break;
     9015
     9016  case 727:
     9017
     9018/* Line 1806 of yacc.c  */
     9019#line 2773 "parser.yy"
     9020    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9021    break;
     9022
     9023  case 731:
     9024
     9025/* Line 1806 of yacc.c  */
     9026#line 2784 "parser.yy"
    88949027    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88959028    break;
    88969029
    8897   case 709:
    8898 
    8899 /* Line 1806 of yacc.c  */
    8900 #line 2711 "parser.yy"
     9030  case 732:
     9031
     9032/* Line 1806 of yacc.c  */
     9033#line 2786 "parser.yy"
    89019034    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89029035    break;
    89039036
    8904   case 710:
    8905 
    8906 /* Line 1806 of yacc.c  */
    8907 #line 2713 "parser.yy"
     9037  case 733:
     9038
     9039/* Line 1806 of yacc.c  */
     9040#line 2788 "parser.yy"
    89089041    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89099042    break;
    89109043
    8911   case 711:
    8912 
    8913 /* Line 1806 of yacc.c  */
    8914 #line 2715 "parser.yy"
     9044  case 734:
     9045
     9046/* Line 1806 of yacc.c  */
     9047#line 2790 "parser.yy"
    89159048    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89169049    break;
    89179050
    8918   case 712:
    8919 
    8920 /* Line 1806 of yacc.c  */
    8921 #line 2722 "parser.yy"
    8922     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8923     break;
    8924 
    8925   case 713:
    8926 
    8927 /* Line 1806 of yacc.c  */
    8928 #line 2724 "parser.yy"
    8929     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8930     break;
    8931 
    8932   case 714:
    8933 
    8934 /* Line 1806 of yacc.c  */
    8935 #line 2726 "parser.yy"
    8936     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8937     break;
    8938 
    8939   case 715:
    8940 
    8941 /* Line 1806 of yacc.c  */
    8942 #line 2728 "parser.yy"
    8943     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8944     break;
    8945 
    8946   case 716:
    8947 
    8948 /* Line 1806 of yacc.c  */
    8949 #line 2730 "parser.yy"
    8950     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8951     break;
    8952 
    8953   case 717:
    8954 
    8955 /* Line 1806 of yacc.c  */
    8956 #line 2732 "parser.yy"
    8957     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8958     break;
    8959 
    8960   case 718:
    8961 
    8962 /* Line 1806 of yacc.c  */
    8963 #line 2734 "parser.yy"
    8964     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8965     break;
    8966 
    8967   case 719:
    8968 
    8969 /* Line 1806 of yacc.c  */
    8970 #line 2736 "parser.yy"
    8971     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8972     break;
    8973 
    8974   case 720:
    8975 
    8976 /* Line 1806 of yacc.c  */
    8977 #line 2738 "parser.yy"
    8978     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8979     break;
    8980 
    8981   case 721:
    8982 
    8983 /* Line 1806 of yacc.c  */
    8984 #line 2740 "parser.yy"
    8985     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8986     break;
    8987 
    8988   case 722:
    8989 
    8990 /* Line 1806 of yacc.c  */
    8991 #line 2745 "parser.yy"
    8992     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8993     break;
    8994 
    8995   case 723:
    8996 
    8997 /* Line 1806 of yacc.c  */
    8998 #line 2747 "parser.yy"
    8999     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9000     break;
    9001 
    9002   case 724:
    9003 
    9004 /* Line 1806 of yacc.c  */
    9005 #line 2752 "parser.yy"
    9006     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9007     break;
    9008 
    9009   case 725:
    9010 
    9011 /* Line 1806 of yacc.c  */
    9012 #line 2754 "parser.yy"
    9013     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9014     break;
    9015 
    9016   case 727:
    9017 
    9018 /* Line 1806 of yacc.c  */
    9019 #line 2781 "parser.yy"
    9020     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9021     break;
    9022 
    9023   case 731:
     9051  case 735:
    90249052
    90259053/* Line 1806 of yacc.c  */
     
    90289056    break;
    90299057
    9030   case 732:
     9058  case 736:
    90319059
    90329060/* Line 1806 of yacc.c  */
     
    90359063    break;
    90369064
    9037   case 733:
    9038 
    9039 /* Line 1806 of yacc.c  */
    9040 #line 2796 "parser.yy"
    9041     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9042     break;
    9043 
    9044   case 734:
    9045 
    9046 /* Line 1806 of yacc.c  */
    9047 #line 2798 "parser.yy"
    9048     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9049     break;
    9050 
    9051   case 735:
    9052 
    9053 /* Line 1806 of yacc.c  */
    9054 #line 2800 "parser.yy"
    9055     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9056     break;
    9057 
    9058   case 736:
    9059 
    9060 /* Line 1806 of yacc.c  */
    9061 #line 2802 "parser.yy"
    9062     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9063     break;
    9064 
    90659065  case 737:
    90669066
    90679067/* Line 1806 of yacc.c  */
     9068#line 2801 "parser.yy"
     9069    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9070    break;
     9071
     9072  case 738:
     9073
     9074/* Line 1806 of yacc.c  */
     9075#line 2803 "parser.yy"
     9076    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9077    break;
     9078
     9079  case 739:
     9080
     9081/* Line 1806 of yacc.c  */
     9082#line 2805 "parser.yy"
     9083    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9084    break;
     9085
     9086  case 740:
     9087
     9088/* Line 1806 of yacc.c  */
     9089#line 2807 "parser.yy"
     9090    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9091    break;
     9092
     9093  case 741:
     9094
     9095/* Line 1806 of yacc.c  */
    90689096#line 2809 "parser.yy"
    9069     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9070     break;
    9071 
    9072   case 738:
     9097    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9098    break;
     9099
     9100  case 742:
    90739101
    90749102/* Line 1806 of yacc.c  */
    90759103#line 2811 "parser.yy"
    9076     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9077     break;
    9078 
    9079   case 739:
    9080 
    9081 /* Line 1806 of yacc.c  */
    9082 #line 2813 "parser.yy"
    90839104    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90849105    break;
    90859106
    9086   case 740:
    9087 
    9088 /* Line 1806 of yacc.c  */
    9089 #line 2815 "parser.yy"
    9090     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9091     break;
    9092 
    9093   case 741:
    9094 
    9095 /* Line 1806 of yacc.c  */
    9096 #line 2817 "parser.yy"
    9097     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9098     break;
    9099 
    9100   case 742:
    9101 
    9102 /* Line 1806 of yacc.c  */
    9103 #line 2819 "parser.yy"
    9104     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9105     break;
    9106 
    91079107  case 743:
    91089108
    91099109/* Line 1806 of yacc.c  */
    9110 #line 2824 "parser.yy"
     9110#line 2816 "parser.yy"
    91119111    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91129112    break;
     
    91159115
    91169116/* Line 1806 of yacc.c  */
    9117 #line 2829 "parser.yy"
     9117#line 2821 "parser.yy"
    91189118    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91199119    break;
     
    91229122
    91239123/* Line 1806 of yacc.c  */
    9124 #line 2831 "parser.yy"
     9124#line 2823 "parser.yy"
    91259125    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91269126    break;
     
    91299129
    91309130/* Line 1806 of yacc.c  */
    9131 #line 2833 "parser.yy"
     9131#line 2825 "parser.yy"
    91329132    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91339133    break;
     
    91369136
    91379137/* Line 1806 of yacc.c  */
    9138 #line 2857 "parser.yy"
     9138#line 2849 "parser.yy"
    91399139    { (yyval.en) = 0; }
    91409140    break;
     
    91439143
    91449144/* Line 1806 of yacc.c  */
    9145 #line 2859 "parser.yy"
     9145#line 2851 "parser.yy"
    91469146    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91479147    break;
     
    93819381
    93829382/* Line 2067 of yacc.c  */
    9383 #line 2862 "parser.yy"
     9383#line 2854 "parser.yy"
    93849384
    93859385// ----end of grammar----
  • src/Parser/parser.yy

    r6f7424a r8cc5cb0  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 10 23:03:05 2016
    13 // Update Count     : 1846
     12// Last Modified On : Thu Aug 11 18:02:57 2016
     13// Update Count     : 1861
    1414//
    1515
     
    665665                        Token fn;
    666666                        fn.str = new std::string( "^?{}" ); // location undefined
    667                         $$ = new StatementNode( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0 );
     667                        $$ = new StatementNode2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ) ) );
    668668                }
    669669        ;
     
    717717expression_statement:
    718718        comma_expression_opt ';'
    719                 { $$ = new StatementNode( StatementNode::Exp, $1, 0 ); }
     719                { $$ = new StatementNode2( build_expr( $1 ) ); }
    720720        ;
    721721
     
    758758
    759759case_value_list:                                                                                // CFA
    760         case_value                                                                      { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
     760        //case_value                                                                    { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
     761        case_value                                                                      { $$ = new StatementNode2( build_case( $1 ) ); }
    761762                // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5"
    762         | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode( StatementNode::Case, $3, 0 ) ) ); }
     763        | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode2( build_case( $3 ) ) ) ); }
    763764        ;
    764765
    765766case_label:                                                                                             // CFA
    766767        CASE case_value_list ':'                                        { $$ = $2; }
    767         | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
     768        | DEFAULT ':'                                                           { $$ = new StatementNode2( build_default() ); }
    768769                // A semantic check is required to ensure only one default clause per switch/choose statement.
    769770        ;
     
    810811fall_through_opt:                                                                               // CFA
    811812        // empty
    812                 { $$ = new StatementNode( StatementNode::Break ); }     // insert implicit break
     813                { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); } // insert implicit break
    813814        | fall_through
    814815        ;
     
    839840jump_statement:
    840841        GOTO IDENTIFIER ';'
    841                 //{ $$ = new StatementNode( StatementNode::Goto, $2 ); }
    842842                { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Goto ) ); }
    843843        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    844844                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
    845845                // whereas normal operator precedence yields goto (*i)+3;
    846                 { $$ = new StatementNode( StatementNode::Goto, $3 ); }
     846                { $$ = new StatementNode2( build_computedgoto( $3 ) ); }
    847847        | CONTINUE ';'
    848848                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    849                 //{ $$ = new StatementNode( StatementNode::Continue ); }
    850849                { $$ = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
    851850        | CONTINUE IDENTIFIER ';'                                                       // CFA, multi-level continue
    852851                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    853852                // the target of the transfer appears only at the start of an iteration statement.
    854                 //{ $$ = new StatementNode( StatementNode::Continue, $2 ); }
    855853                { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Continue ) ); delete $2; }
    856854        | BREAK ';'
    857855                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    858                 //{ $$ = new StatementNode( StatementNode::Break ); }
    859856                { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
    860857        | BREAK IDENTIFIER ';'                                                          // CFA, multi-level exit
    861858                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    862859                // the target of the transfer appears only at the start of an iteration statement.
    863                 //{ $$ = new StatementNode( StatementNode::Break, $2 ); }
    864860                { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Break ) ); delete $2; }
    865861        | RETURN comma_expression_opt ';'
    866                 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    867         | THROW assignment_expression_opt ';'
    868                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    869 //      | THROW ';'
    870 //              { $$ = new StatementNode( StatementNode::Throw ); }
    871         | THROWRESUME assignment_expression_opt ';'
    872                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    873         | THROWRESUME assignment_expression_opt AT assignment_expression ';'
    874                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    875 //      | THROWRESUME ';'
    876 //              { $$ = new StatementNode( StatementNode::Throw ); }
     862                { $$ = new StatementNode2( build_return( $2 ) ); }
     863        | THROW assignment_expression_opt ';'                           // handles rethrow
     864                { $$ = new StatementNode2( build_throw( $2 ) ); }
     865        | THROWRESUME assignment_expression_opt ';'                     // handles reresume
     866                { $$ = new StatementNode2( build_throw( $2 ) ); }
     867        | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume
     868                { $$ = new StatementNode2( build_throw( $2 ) ); }
    877869        ;
    878870
Note: See TracChangeset for help on using the changeset viewer.