Changeset 8780e30
- Timestamp:
- Nov 9, 2016, 1:55:46 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- b3b2077
- Parents:
- dc86541
- Location:
- src/Parser
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
rdc86541 r8780e30 172 172 } // build_constantStr 173 173 174 Expression * build_field_name_FLOATINGconstant( const std::string & str ) { 175 // str is of the form A.B -> separate at the . and return member expression 176 int a, b; 177 char dot; 178 std::stringstream ss( str ); 179 ss >> a >> dot >> b; 180 UntypedMemberExpr * ret = new UntypedMemberExpr( 181 new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::SignedInt ), toString( b ) ) ), 182 new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::SignedInt ), toString( a ) ) ) ); 183 delete &str; 184 return ret; 185 } // build_field_name_FLOATINGconstant 186 187 Expression * make_field_name_fraction_constants( Expression * fieldName, Expression * fracts ) { 188 if ( fracts ) { 189 if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * >( fracts ) ) { 190 memberExpr->set_member( make_field_name_fraction_constants( fieldName, memberExpr->get_aggregate() ) ); 191 return memberExpr; 192 } else { 193 return new UntypedMemberExpr( fracts, fieldName ); 194 } 195 } 196 return fieldName; 197 } // make_field_name_fraction_constants 198 199 Expression * build_field_name_fraction_constants( Expression * fieldName, ExpressionNode * fracts ) { 200 return make_field_name_fraction_constants( fieldName, maybeMoveBuild< Expression >( fracts ) ); 201 } // build_field_name_fraction_constants 202 203 Expression * build_field_name_REALFRACTIONconstant( const std::string & str ) { 204 assert( str[0] == '.' ); 205 Expression * ret = build_constantInteger( *new std::string( str.substr(1) ) ); 206 delete &str; 207 return ret; 208 } // build_field_name_REALFRACTIONconstant 209 210 Expression * build_field_name_REALDECIMALconstant( const std::string & str ) { 211 assert( str[str.size()-1] == '.' ); 212 Expression * ret = build_constantInteger( *new std::string( str.substr( 0, str.size()-1 ) ) ); 213 delete &str; 214 return ret; 215 } // build_field_name_REALDECIMALconstant 216 174 217 NameExpr * build_varref( const string *name, bool labelp ) { 175 218 NameExpr *expr = new NameExpr( *name, nullptr ); -
src/Parser/ParseNode.h
rdc86541 r8780e30 155 155 Expression * build_constantChar( const std::string &str ); 156 156 ConstantExpr * build_constantStr( const std::string &str ); 157 Expression * build_field_name_FLOATINGconstant( const std::string & str ); 158 Expression * build_field_name_fraction_constants( Expression * fieldName, ExpressionNode * fracts ); 159 Expression * build_field_name_REALFRACTIONconstant( const std::string & str ); 160 Expression * build_field_name_REALDECIMALconstant( const std::string & str ); 157 161 158 162 NameExpr * build_varref( const std::string * name, bool labelp = false ); -
src/Parser/parser.cc
rdc86541 r8780e30 1031 1031 384, 386, 388, 390, 392, 394, 396, 398, 407, 408, 1032 1032 414, 415, 419, 420, 424, 425, 427, 429, 431, 433, 1033 435, 440, 442, 444, 4 48, 450, 454, 457, 459, 461,1034 4 66, 479, 481, 483, 485, 487, 489, 491, 493, 495,1035 497, 499, 506, 507, 513, 514, 515, 516, 520, 521,1036 5 28, 529, 531, 533, 538, 539, 541, 546, 547, 549,1037 55 4, 555, 557, 559, 561, 566, 567, 569, 574, 575,1038 58 0, 581, 586, 587, 592, 593, 598, 599, 604, 605,1039 6 08, 615, 620, 621, 629, 630, 634, 635, 636, 637,1040 6 38, 639, 640, 641, 642, 643, 644, 645, 655, 657,1041 66 2, 663, 668, 669, 675, 676, 682, 683, 684, 685,1042 6 86, 687, 688, 689, 690, 700, 707, 709, 719, 720,1043 7 25, 727, 733, 735, 739, 740, 745, 750, 753, 755,1044 7 57, 767, 769, 780, 781, 783, 787, 789, 793, 794,1045 799, 800, 804, 809, 810, 814, 816, 822, 823, 827,1046 8 29, 831, 833, 839, 840, 844, 846, 851, 853, 855,1047 86 0, 862, 867, 869, 873, 876, 880, 883, 887, 889,1048 89 1, 893, 898, 900, 902, 907, 909, 911, 913, 915,1049 92 0, 922, 924, 926, 931, 943, 944, 949, 951, 956,1050 96 0, 962, 964, 966, 968, 974, 975, 981, 982, 986,1051 9 87, 992, 994, 1000, 1001, 1003, 1008, 1013, 1023, 1025,1052 10 29, 1030, 1035, 1037, 1041, 1042, 1046, 1048, 1052, 1053,1053 10 57, 1058, 1062, 1063, 1078, 1079, 1080, 1081, 1082, 1086,1054 109 1, 1098, 1108, 1113, 1118, 1126, 1131, 1136, 1141, 1146,1055 11 76, 1181, 1188, 1190, 1197, 1202, 1207, 1218, 1223, 1228,1056 123 3, 1238, 1247, 1252, 1260, 1261, 1262, 1263, 1269, 1274,1057 128 2, 1283, 1284, 1285, 1289, 1290, 1291, 1292, 1297, 1298,1058 13 07, 1308, 1313, 1314, 1319, 1321, 1323, 1325, 1327, 1330,1059 13 29, 1341, 1342, 1344, 1354, 1355, 1360, 1362, 1364, 1366,1060 13 68, 1371, 1373, 1376, 1381, 1383, 1385, 1387, 1389, 1391,1061 139 3, 1395, 1397, 1399, 1401, 1403, 1405, 1411, 1412, 1414,1062 14 16, 1418, 1423, 1424, 1430, 1431, 1433, 1435, 1440, 1442,1063 144 4, 1446, 1451, 1452, 1454, 1456, 1461, 1462, 1464, 1469,1064 147 0, 1472, 1474, 1479, 1481, 1483, 1488, 1489, 1493, 1495,1065 150 1, 1500, 1504, 1506, 1511, 1513, 1519, 1520, 1525, 1526,1066 15 28, 1529, 1538, 1539, 1541, 1543, 1548, 1550, 1556, 1557,1067 15 59, 1562, 1565, 1570, 1571, 1576, 1581, 1585, 1587, 1593,1068 159 2, 1599, 1601, 1607, 1608, 1616, 1617, 1621, 1622, 1623,1069 16 25, 1627, 1634, 1635, 1637, 1639, 1644, 1645, 1651, 1652,1070 16 56, 1657, 1662, 1663, 1664, 1666, 1674, 1675, 1677, 1680,1071 168 2, 1686, 1687, 1688, 1690, 1692, 1696, 1701, 1709, 1710,1072 17 19, 1721, 1726, 1727, 1728, 1732, 1733, 1734, 1738, 1739,1073 174 0, 1744, 1745, 1746, 1751, 1752, 1753, 1754, 1760, 1761,1074 176 3, 1768, 1769, 1774, 1775, 1776, 1777, 1778, 1793, 1794,1075 1 799, 1800, 1806, 1808, 1811, 1813, 1815, 1838, 1839, 1841,1076 184 3, 1848, 1849, 1851, 1856, 1861, 1862, 1868, 1867, 1871,1077 18 75, 1877, 1879, 1885, 1886, 1891, 1896, 1898, 1903, 1905,1078 19 06, 1908, 1913, 1915, 1917, 1922, 1924, 1929, 1934, 1942,1079 19 48, 1947, 1961, 1962, 1967, 1968, 1972, 1977, 1982, 1990,1080 1995, 2006, 2007, 2012, 2013, 2019, 2020, 2024, 2025, 2026,1081 20 29, 2028, 2039, 2048, 2054, 2060, 2069, 2075, 2081, 2087,1082 209 3, 2101, 2107, 2115, 2121, 2130, 2131, 2132, 2136, 2140,1083 214 2, 2147, 2148, 2152, 2153, 2158, 2164, 2165, 2168, 2170,1084 217 1, 2175, 2176, 2177, 2178, 2212, 2214, 2215, 2217, 2222,1085 22 27, 2232, 2234, 2236, 2241, 2243, 2245, 2247, 2252, 2254,1086 226 3, 2265, 2266, 2271, 2273, 2275, 2280, 2282, 2284, 2289,1087 229 1, 2293, 2302, 2303, 2304, 2308, 2310, 2312, 2317, 2319,1088 232 1, 2326, 2328, 2330, 2345, 2347, 2348, 2350, 2355, 2356,1089 236 1, 2363, 2365, 2370, 2372, 2374, 2376, 2381, 2383, 2385,1090 2 395, 2397, 2398, 2400, 2405, 2407, 2409, 2414, 2416, 2418,1091 242 0, 2425, 2427, 2429, 2460, 2462, 2463, 2465, 2470, 2475,1092 248 3, 2485, 2487, 2492, 2494, 2499, 2501, 2515, 2516, 2518,1093 252 3, 2525, 2527, 2529, 2531, 2536, 2537, 2539, 2541, 2546,1094 25 48, 2550, 2556, 2558, 2560, 2564, 2566, 2568, 2570, 2584,1095 25 85, 2587, 2592, 2594, 2596, 2598, 2600, 2605, 2606, 2608,1096 261 0, 2615, 2617, 2619, 2625, 2626, 2628, 2637, 2640, 2642,1097 26 45, 2647, 2649, 2662, 2663, 2665, 2670, 2672, 2674, 2676,1098 26 78, 2683, 2684, 2686, 2688, 2693, 2695, 2703, 2704, 2705,1099 271 0, 2711, 2715, 2717, 2719, 2721, 2723, 2725, 2732, 2734,1100 27 36, 2738, 2740, 2743, 2745, 2747, 2749, 2751, 2756, 2758,1101 276 0, 2765, 2791, 2792, 2794, 2798, 2799, 2803, 2805, 2807,1102 28 09, 2811, 2813, 2820, 2822, 2824, 2826, 2828, 2830, 2835,1103 284 2, 2844, 2862, 2864, 2869, 28701033 435, 440, 442, 444, 450, 451, 459, 462, 464, 466, 1034 471, 484, 486, 488, 490, 492, 494, 496, 498, 500, 1035 502, 504, 511, 512, 518, 519, 520, 521, 525, 526, 1036 533, 534, 536, 538, 543, 544, 546, 551, 552, 554, 1037 559, 560, 562, 564, 566, 571, 572, 574, 579, 580, 1038 585, 586, 591, 592, 597, 598, 603, 604, 609, 610, 1039 613, 620, 625, 626, 634, 635, 639, 640, 641, 642, 1040 643, 644, 645, 646, 647, 648, 649, 650, 660, 662, 1041 667, 668, 673, 674, 680, 681, 687, 688, 689, 690, 1042 691, 692, 693, 694, 695, 705, 712, 714, 724, 725, 1043 730, 732, 738, 740, 744, 745, 750, 755, 758, 760, 1044 762, 772, 774, 785, 786, 788, 792, 794, 798, 799, 1045 804, 805, 809, 814, 815, 819, 821, 827, 828, 832, 1046 834, 836, 838, 844, 845, 849, 851, 856, 858, 860, 1047 865, 867, 872, 874, 878, 881, 885, 888, 892, 894, 1048 896, 898, 903, 905, 907, 912, 914, 916, 918, 920, 1049 925, 927, 929, 931, 936, 948, 949, 954, 956, 961, 1050 965, 967, 969, 971, 973, 979, 980, 986, 987, 991, 1051 992, 997, 999, 1005, 1006, 1008, 1013, 1018, 1028, 1030, 1052 1034, 1035, 1040, 1042, 1046, 1047, 1051, 1053, 1057, 1058, 1053 1062, 1063, 1067, 1068, 1083, 1084, 1085, 1086, 1087, 1091, 1054 1096, 1103, 1113, 1118, 1123, 1131, 1136, 1141, 1146, 1151, 1055 1181, 1186, 1193, 1195, 1202, 1207, 1212, 1223, 1228, 1233, 1056 1238, 1243, 1252, 1257, 1265, 1266, 1267, 1268, 1274, 1279, 1057 1287, 1288, 1289, 1290, 1294, 1295, 1296, 1297, 1302, 1303, 1058 1312, 1313, 1318, 1319, 1324, 1326, 1328, 1330, 1332, 1335, 1059 1334, 1346, 1347, 1349, 1359, 1360, 1365, 1367, 1369, 1371, 1060 1373, 1376, 1378, 1381, 1386, 1388, 1390, 1392, 1394, 1396, 1061 1398, 1400, 1402, 1404, 1406, 1408, 1410, 1416, 1417, 1419, 1062 1421, 1423, 1428, 1429, 1435, 1436, 1438, 1440, 1445, 1447, 1063 1449, 1451, 1456, 1457, 1459, 1461, 1466, 1467, 1469, 1474, 1064 1475, 1477, 1479, 1484, 1486, 1488, 1493, 1494, 1498, 1500, 1065 1506, 1505, 1509, 1511, 1516, 1518, 1524, 1525, 1530, 1531, 1066 1533, 1534, 1543, 1544, 1546, 1548, 1553, 1555, 1561, 1562, 1067 1564, 1567, 1570, 1575, 1576, 1581, 1586, 1590, 1592, 1598, 1068 1597, 1604, 1606, 1612, 1613, 1621, 1622, 1626, 1627, 1628, 1069 1630, 1632, 1639, 1640, 1642, 1644, 1649, 1650, 1656, 1657, 1070 1661, 1662, 1667, 1668, 1669, 1671, 1679, 1680, 1682, 1685, 1071 1687, 1691, 1692, 1693, 1695, 1697, 1701, 1706, 1714, 1715, 1072 1724, 1726, 1731, 1732, 1733, 1737, 1738, 1739, 1743, 1744, 1073 1745, 1749, 1750, 1751, 1756, 1757, 1758, 1759, 1765, 1766, 1074 1768, 1773, 1774, 1779, 1780, 1781, 1782, 1783, 1798, 1799, 1075 1804, 1805, 1811, 1813, 1816, 1818, 1820, 1843, 1844, 1846, 1076 1848, 1853, 1854, 1856, 1861, 1866, 1867, 1873, 1872, 1876, 1077 1880, 1882, 1884, 1890, 1891, 1896, 1901, 1903, 1908, 1910, 1078 1911, 1913, 1918, 1920, 1922, 1927, 1929, 1934, 1939, 1947, 1079 1953, 1952, 1966, 1967, 1972, 1973, 1977, 1982, 1987, 1995, 1080 2000, 2011, 2012, 2017, 2018, 2024, 2025, 2029, 2030, 2031, 1081 2034, 2033, 2044, 2053, 2059, 2065, 2074, 2080, 2086, 2092, 1082 2098, 2106, 2112, 2120, 2126, 2135, 2136, 2137, 2141, 2145, 1083 2147, 2152, 2153, 2157, 2158, 2163, 2169, 2170, 2173, 2175, 1084 2176, 2180, 2181, 2182, 2183, 2217, 2219, 2220, 2222, 2227, 1085 2232, 2237, 2239, 2241, 2246, 2248, 2250, 2252, 2257, 2259, 1086 2268, 2270, 2271, 2276, 2278, 2280, 2285, 2287, 2289, 2294, 1087 2296, 2298, 2307, 2308, 2309, 2313, 2315, 2317, 2322, 2324, 1088 2326, 2331, 2333, 2335, 2350, 2352, 2353, 2355, 2360, 2361, 1089 2366, 2368, 2370, 2375, 2377, 2379, 2381, 2386, 2388, 2390, 1090 2400, 2402, 2403, 2405, 2410, 2412, 2414, 2419, 2421, 2423, 1091 2425, 2430, 2432, 2434, 2465, 2467, 2468, 2470, 2475, 2480, 1092 2488, 2490, 2492, 2497, 2499, 2504, 2506, 2520, 2521, 2523, 1093 2528, 2530, 2532, 2534, 2536, 2541, 2542, 2544, 2546, 2551, 1094 2553, 2555, 2561, 2563, 2565, 2569, 2571, 2573, 2575, 2589, 1095 2590, 2592, 2597, 2599, 2601, 2603, 2605, 2610, 2611, 2613, 1096 2615, 2620, 2622, 2624, 2630, 2631, 2633, 2642, 2645, 2647, 1097 2650, 2652, 2654, 2667, 2668, 2670, 2675, 2677, 2679, 2681, 1098 2683, 2688, 2689, 2691, 2693, 2698, 2700, 2708, 2709, 2710, 1099 2715, 2716, 2720, 2722, 2724, 2726, 2728, 2730, 2737, 2739, 1100 2741, 2743, 2745, 2748, 2750, 2752, 2754, 2756, 2761, 2763, 1101 2765, 2770, 2796, 2797, 2799, 2803, 2804, 2808, 2810, 2812, 1102 2814, 2816, 2818, 2825, 2827, 2829, 2831, 2833, 2835, 2840, 1103 2847, 2849, 2867, 2869, 2874, 2875 1104 1104 }; 1105 1105 #endif … … 4982 4982 /* Line 1806 of yacc.c */ 4983 4983 #line 387 "parser.yy" 4984 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_ constantInteger( *(yyvsp[(2) - (2)].tok) ) ) ); }4984 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); } 4985 4985 break; 4986 4986 … … 5056 5056 /* Line 1806 of yacc.c */ 5057 5057 #line 426 "parser.yy" 5058 { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_ constantInteger( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }5058 { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); } 5059 5059 break; 5060 5060 … … 5063 5063 /* Line 1806 of yacc.c */ 5064 5064 #line 428 "parser.yy" 5065 { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_ constantInteger( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }5065 { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); } 5066 5066 break; 5067 5067 … … 5098 5098 /* Line 1806 of yacc.c */ 5099 5099 #line 441 "parser.yy" 5100 { (yyval.en) = new ExpressionNode( build_ constantInteger( *(yyvsp[(1) - (2)].tok) ) ); }5100 { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); } 5101 5101 break; 5102 5102 … … 5105 5105 /* Line 1806 of yacc.c */ 5106 5106 #line 443 "parser.yy" 5107 { (yyval.en) = new ExpressionNode( build_ constantInteger( *(yyvsp[(1) - (2)].tok) ) ); }5107 { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); } 5108 5108 break; 5109 5109 … … 5112 5112 /* Line 1806 of yacc.c */ 5113 5113 #line 445 "parser.yy" 5114 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); } 5114 { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); } 5115 break; 5116 5117 case 54: 5118 5119 /* Line 1806 of yacc.c */ 5120 #line 450 "parser.yy" 5121 { (yyval.en) = nullptr; } 5122 break; 5123 5124 case 55: 5125 5126 /* Line 1806 of yacc.c */ 5127 #line 452 "parser.yy" 5128 { 5129 Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ); 5130 (yyval.en) = (yyvsp[(1) - (2)].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), constant ) ) : new ExpressionNode( constant ); 5131 } 5115 5132 break; 5116 5133 … … 5118 5135 5119 5136 /* Line 1806 of yacc.c */ 5120 #line 4 58"parser.yy"5137 #line 463 "parser.yy" 5121 5138 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5122 5139 break; … … 5125 5142 5126 5143 /* Line 1806 of yacc.c */ 5127 #line 46 0"parser.yy"5144 #line 465 "parser.yy" 5128 5145 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 5129 5146 break; … … 5132 5149 5133 5150 /* Line 1806 of yacc.c */ 5134 #line 46 2"parser.yy"5151 #line 467 "parser.yy" 5135 5152 { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); } 5136 5153 break; … … 5139 5156 5140 5157 /* Line 1806 of yacc.c */ 5141 #line 4 67"parser.yy"5158 #line 472 "parser.yy" 5142 5159 { 5143 5160 switch ( (yyvsp[(1) - (2)].op) ) { … … 5157 5174 5158 5175 /* Line 1806 of yacc.c */ 5159 #line 48 0"parser.yy"5176 #line 485 "parser.yy" 5160 5177 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); } 5161 5178 break; … … 5164 5181 5165 5182 /* Line 1806 of yacc.c */ 5166 #line 48 2"parser.yy"5183 #line 487 "parser.yy" 5167 5184 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); } 5168 5185 break; … … 5171 5188 5172 5189 /* Line 1806 of yacc.c */ 5173 #line 48 4"parser.yy"5190 #line 489 "parser.yy" 5174 5191 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); } 5175 5192 break; … … 5178 5195 5179 5196 /* Line 1806 of yacc.c */ 5180 #line 4 86"parser.yy"5197 #line 491 "parser.yy" 5181 5198 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5182 5199 break; … … 5185 5202 5186 5203 /* Line 1806 of yacc.c */ 5187 #line 4 88"parser.yy"5204 #line 493 "parser.yy" 5188 5205 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); } 5189 5206 break; … … 5192 5209 5193 5210 /* Line 1806 of yacc.c */ 5194 #line 49 0"parser.yy"5211 #line 495 "parser.yy" 5195 5212 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5196 5213 break; … … 5199 5216 5200 5217 /* Line 1806 of yacc.c */ 5201 #line 49 2"parser.yy"5218 #line 497 "parser.yy" 5202 5219 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); } 5203 5220 break; … … 5206 5223 5207 5224 /* Line 1806 of yacc.c */ 5208 #line 49 4"parser.yy"5225 #line 499 "parser.yy" 5209 5226 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); } 5210 5227 break; … … 5213 5230 5214 5231 /* Line 1806 of yacc.c */ 5215 #line 496"parser.yy"5232 #line 501 "parser.yy" 5216 5233 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); } 5217 5234 break; … … 5220 5237 5221 5238 /* Line 1806 of yacc.c */ 5222 #line 498"parser.yy"5239 #line 503 "parser.yy" 5223 5240 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); } 5224 5241 break; … … 5227 5244 5228 5245 /* Line 1806 of yacc.c */ 5229 #line 50 0"parser.yy"5246 #line 505 "parser.yy" 5230 5247 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); } 5231 5248 break; … … 5234 5251 5235 5252 /* Line 1806 of yacc.c */ 5236 #line 5 06"parser.yy"5253 #line 511 "parser.yy" 5237 5254 { (yyval.op) = OperKinds::PointTo; } 5238 5255 break; … … 5241 5258 5242 5259 /* Line 1806 of yacc.c */ 5243 #line 5 07"parser.yy"5260 #line 512 "parser.yy" 5244 5261 { (yyval.op) = OperKinds::AddressOf; } 5245 5262 break; … … 5248 5265 5249 5266 /* Line 1806 of yacc.c */ 5250 #line 51 3"parser.yy"5267 #line 518 "parser.yy" 5251 5268 { (yyval.op) = OperKinds::UnPlus; } 5252 5269 break; … … 5255 5272 5256 5273 /* Line 1806 of yacc.c */ 5257 #line 51 4"parser.yy"5274 #line 519 "parser.yy" 5258 5275 { (yyval.op) = OperKinds::UnMinus; } 5259 5276 break; … … 5262 5279 5263 5280 /* Line 1806 of yacc.c */ 5264 #line 5 15"parser.yy"5281 #line 520 "parser.yy" 5265 5282 { (yyval.op) = OperKinds::Neg; } 5266 5283 break; … … 5269 5286 5270 5287 /* Line 1806 of yacc.c */ 5271 #line 5 16"parser.yy"5288 #line 521 "parser.yy" 5272 5289 { (yyval.op) = OperKinds::BitNeg; } 5273 5290 break; … … 5276 5293 5277 5294 /* Line 1806 of yacc.c */ 5278 #line 52 2"parser.yy"5295 #line 527 "parser.yy" 5279 5296 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5280 5297 break; … … 5283 5300 5284 5301 /* Line 1806 of yacc.c */ 5285 #line 53 0"parser.yy"5302 #line 535 "parser.yy" 5286 5303 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5287 5304 break; … … 5290 5307 5291 5308 /* Line 1806 of yacc.c */ 5292 #line 53 2"parser.yy"5309 #line 537 "parser.yy" 5293 5310 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5294 5311 break; … … 5297 5314 5298 5315 /* Line 1806 of yacc.c */ 5299 #line 53 4"parser.yy"5316 #line 539 "parser.yy" 5300 5317 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5301 5318 break; … … 5304 5321 5305 5322 /* Line 1806 of yacc.c */ 5306 #line 54 0"parser.yy"5323 #line 545 "parser.yy" 5307 5324 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5308 5325 break; … … 5311 5328 5312 5329 /* Line 1806 of yacc.c */ 5313 #line 54 2"parser.yy"5330 #line 547 "parser.yy" 5314 5331 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5315 5332 break; … … 5318 5335 5319 5336 /* Line 1806 of yacc.c */ 5320 #line 5 48"parser.yy"5337 #line 553 "parser.yy" 5321 5338 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5322 5339 break; … … 5325 5342 5326 5343 /* Line 1806 of yacc.c */ 5327 #line 55 0"parser.yy"5344 #line 555 "parser.yy" 5328 5345 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5329 5346 break; … … 5332 5349 5333 5350 /* Line 1806 of yacc.c */ 5334 #line 5 56"parser.yy"5351 #line 561 "parser.yy" 5335 5352 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5336 5353 break; … … 5339 5356 5340 5357 /* Line 1806 of yacc.c */ 5341 #line 5 58"parser.yy"5358 #line 563 "parser.yy" 5342 5359 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5343 5360 break; … … 5346 5363 5347 5364 /* Line 1806 of yacc.c */ 5348 #line 56 0"parser.yy"5365 #line 565 "parser.yy" 5349 5366 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5350 5367 break; … … 5353 5370 5354 5371 /* Line 1806 of yacc.c */ 5355 #line 56 2"parser.yy"5372 #line 567 "parser.yy" 5356 5373 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5357 5374 break; … … 5360 5377 5361 5378 /* Line 1806 of yacc.c */ 5362 #line 5 68"parser.yy"5379 #line 573 "parser.yy" 5363 5380 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5364 5381 break; … … 5367 5384 5368 5385 /* Line 1806 of yacc.c */ 5369 #line 57 0"parser.yy"5386 #line 575 "parser.yy" 5370 5387 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5371 5388 break; … … 5374 5391 5375 5392 /* Line 1806 of yacc.c */ 5376 #line 5 76"parser.yy"5393 #line 581 "parser.yy" 5377 5394 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5378 5395 break; … … 5381 5398 5382 5399 /* Line 1806 of yacc.c */ 5383 #line 58 2"parser.yy"5400 #line 587 "parser.yy" 5384 5401 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5385 5402 break; … … 5388 5405 5389 5406 /* Line 1806 of yacc.c */ 5390 #line 5 88"parser.yy"5407 #line 593 "parser.yy" 5391 5408 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5392 5409 break; … … 5395 5412 5396 5413 /* Line 1806 of yacc.c */ 5397 #line 59 4"parser.yy"5414 #line 599 "parser.yy" 5398 5415 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); } 5399 5416 break; … … 5402 5419 5403 5420 /* Line 1806 of yacc.c */ 5404 #line 60 0"parser.yy"5421 #line 605 "parser.yy" 5405 5422 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); } 5406 5423 break; … … 5409 5426 5410 5427 /* Line 1806 of yacc.c */ 5411 #line 6 06"parser.yy"5428 #line 611 "parser.yy" 5412 5429 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5413 5430 break; … … 5416 5433 5417 5434 /* Line 1806 of yacc.c */ 5418 #line 6 09"parser.yy"5435 #line 614 "parser.yy" 5419 5436 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); } 5420 5437 break; … … 5423 5440 5424 5441 /* Line 1806 of yacc.c */ 5425 #line 62 2"parser.yy"5442 #line 627 "parser.yy" 5426 5443 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5427 5444 break; … … 5430 5447 5431 5448 /* Line 1806 of yacc.c */ 5432 #line 6 29"parser.yy"5449 #line 634 "parser.yy" 5433 5450 { (yyval.en) = nullptr; } 5434 5451 break; … … 5437 5454 5438 5455 /* Line 1806 of yacc.c */ 5439 #line 63 4"parser.yy"5456 #line 639 "parser.yy" 5440 5457 { (yyval.op) = OperKinds::Assign; } 5441 5458 break; … … 5444 5461 5445 5462 /* Line 1806 of yacc.c */ 5446 #line 6 35"parser.yy"5463 #line 640 "parser.yy" 5447 5464 { (yyval.op) = OperKinds::AtAssn; } 5448 5465 break; … … 5451 5468 5452 5469 /* Line 1806 of yacc.c */ 5453 #line 6 36"parser.yy"5470 #line 641 "parser.yy" 5454 5471 { (yyval.op) = OperKinds::MulAssn; } 5455 5472 break; … … 5458 5475 5459 5476 /* Line 1806 of yacc.c */ 5460 #line 6 37"parser.yy"5477 #line 642 "parser.yy" 5461 5478 { (yyval.op) = OperKinds::DivAssn; } 5462 5479 break; … … 5465 5482 5466 5483 /* Line 1806 of yacc.c */ 5467 #line 6 38"parser.yy"5484 #line 643 "parser.yy" 5468 5485 { (yyval.op) = OperKinds::ModAssn; } 5469 5486 break; … … 5472 5489 5473 5490 /* Line 1806 of yacc.c */ 5474 #line 6 39"parser.yy"5491 #line 644 "parser.yy" 5475 5492 { (yyval.op) = OperKinds::PlusAssn; } 5476 5493 break; … … 5479 5496 5480 5497 /* Line 1806 of yacc.c */ 5481 #line 64 0"parser.yy"5498 #line 645 "parser.yy" 5482 5499 { (yyval.op) = OperKinds::MinusAssn; } 5483 5500 break; … … 5486 5503 5487 5504 /* Line 1806 of yacc.c */ 5488 #line 64 1"parser.yy"5505 #line 646 "parser.yy" 5489 5506 { (yyval.op) = OperKinds::LSAssn; } 5490 5507 break; … … 5493 5510 5494 5511 /* Line 1806 of yacc.c */ 5495 #line 64 2"parser.yy"5512 #line 647 "parser.yy" 5496 5513 { (yyval.op) = OperKinds::RSAssn; } 5497 5514 break; … … 5500 5517 5501 5518 /* Line 1806 of yacc.c */ 5502 #line 64 3"parser.yy"5519 #line 648 "parser.yy" 5503 5520 { (yyval.op) = OperKinds::AndAssn; } 5504 5521 break; … … 5507 5524 5508 5525 /* Line 1806 of yacc.c */ 5509 #line 64 4"parser.yy"5526 #line 649 "parser.yy" 5510 5527 { (yyval.op) = OperKinds::ERAssn; } 5511 5528 break; … … 5514 5531 5515 5532 /* Line 1806 of yacc.c */ 5516 #line 6 45"parser.yy"5533 #line 650 "parser.yy" 5517 5534 { (yyval.op) = OperKinds::OrAssn; } 5518 5535 break; … … 5521 5538 5522 5539 /* Line 1806 of yacc.c */ 5523 #line 6 56"parser.yy"5540 #line 661 "parser.yy" 5524 5541 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); } 5525 5542 break; … … 5528 5545 5529 5546 /* Line 1806 of yacc.c */ 5530 #line 6 58"parser.yy"5547 #line 663 "parser.yy" 5531 5548 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); } 5532 5549 break; … … 5535 5552 5536 5553 /* Line 1806 of yacc.c */ 5537 #line 66 4"parser.yy"5554 #line 669 "parser.yy" 5538 5555 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5539 5556 break; … … 5542 5559 5543 5560 /* Line 1806 of yacc.c */ 5544 #line 67 0"parser.yy"5561 #line 675 "parser.yy" 5545 5562 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5546 5563 break; … … 5549 5566 5550 5567 /* Line 1806 of yacc.c */ 5551 #line 6 75"parser.yy"5568 #line 680 "parser.yy" 5552 5569 { (yyval.en) = 0; } 5553 5570 break; … … 5556 5573 5557 5574 /* Line 1806 of yacc.c */ 5558 #line 68 4"parser.yy"5575 #line 689 "parser.yy" 5559 5576 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5560 5577 break; … … 5563 5580 5564 5581 /* Line 1806 of yacc.c */ 5565 #line 69 1"parser.yy"5582 #line 696 "parser.yy" 5566 5583 { 5567 5584 Token fn; … … 5574 5591 5575 5592 /* Line 1806 of yacc.c */ 5576 #line 70 1"parser.yy"5593 #line 706 "parser.yy" 5577 5594 { 5578 5595 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5583 5600 5584 5601 /* Line 1806 of yacc.c */ 5585 #line 7 08"parser.yy"5602 #line 713 "parser.yy" 5586 5603 { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); } 5587 5604 break; … … 5590 5607 5591 5608 /* Line 1806 of yacc.c */ 5592 #line 7 15"parser.yy"5609 #line 720 "parser.yy" 5593 5610 { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); } 5594 5611 break; … … 5597 5614 5598 5615 /* Line 1806 of yacc.c */ 5599 #line 72 1"parser.yy"5616 #line 726 "parser.yy" 5600 5617 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5601 5618 break; … … 5604 5621 5605 5622 /* Line 1806 of yacc.c */ 5606 #line 7 26"parser.yy"5623 #line 731 "parser.yy" 5607 5624 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5608 5625 break; … … 5611 5628 5612 5629 /* Line 1806 of yacc.c */ 5613 #line 7 28"parser.yy"5630 #line 733 "parser.yy" 5614 5631 { // mark all fields in list 5615 5632 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 5622 5639 5623 5640 /* Line 1806 of yacc.c */ 5624 #line 73 4"parser.yy"5641 #line 739 "parser.yy" 5625 5642 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5626 5643 break; … … 5629 5646 5630 5647 /* Line 1806 of yacc.c */ 5631 #line 74 1"parser.yy"5648 #line 746 "parser.yy" 5632 5649 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5633 5650 break; … … 5636 5653 5637 5654 /* Line 1806 of yacc.c */ 5638 #line 7 46"parser.yy"5655 #line 751 "parser.yy" 5639 5656 { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); } 5640 5657 break; … … 5643 5660 5644 5661 /* Line 1806 of yacc.c */ 5645 #line 75 2"parser.yy"5662 #line 757 "parser.yy" 5646 5663 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); } 5647 5664 break; … … 5650 5667 5651 5668 /* Line 1806 of yacc.c */ 5652 #line 75 4"parser.yy"5669 #line 759 "parser.yy" 5653 5670 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); } 5654 5671 break; … … 5657 5674 5658 5675 /* Line 1806 of yacc.c */ 5659 #line 7 56"parser.yy"5676 #line 761 "parser.yy" 5660 5677 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5661 5678 break; … … 5664 5681 5665 5682 /* Line 1806 of yacc.c */ 5666 #line 7 58"parser.yy"5683 #line 763 "parser.yy" 5667 5684 { 5668 5685 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); … … 5679 5696 5680 5697 /* Line 1806 of yacc.c */ 5681 #line 7 68"parser.yy"5698 #line 773 "parser.yy" 5682 5699 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5683 5700 break; … … 5686 5703 5687 5704 /* Line 1806 of yacc.c */ 5688 #line 77 0"parser.yy"5705 #line 775 "parser.yy" 5689 5706 { 5690 5707 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); … … 5696 5713 5697 5714 /* Line 1806 of yacc.c */ 5698 #line 78 0"parser.yy"5715 #line 785 "parser.yy" 5699 5716 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5700 5717 break; … … 5703 5720 5704 5721 /* Line 1806 of yacc.c */ 5705 #line 78 2"parser.yy"5722 #line 787 "parser.yy" 5706 5723 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5707 5724 break; … … 5710 5727 5711 5728 /* Line 1806 of yacc.c */ 5712 #line 7 87"parser.yy"5729 #line 792 "parser.yy" 5713 5730 { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); } 5714 5731 break; … … 5717 5734 5718 5735 /* Line 1806 of yacc.c */ 5719 #line 7 89"parser.yy"5736 #line 794 "parser.yy" 5720 5737 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); } 5721 5738 break; … … 5724 5741 5725 5742 /* Line 1806 of yacc.c */ 5726 #line 79 3"parser.yy"5743 #line 798 "parser.yy" 5727 5744 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 5728 5745 break; … … 5731 5748 5732 5749 /* Line 1806 of yacc.c */ 5733 #line 79 4"parser.yy"5750 #line 799 "parser.yy" 5734 5751 { (yyval.sn) = new StatementNode( build_default() ); } 5735 5752 break; … … 5738 5755 5739 5756 /* Line 1806 of yacc.c */ 5740 #line 80 0"parser.yy"5757 #line 805 "parser.yy" 5741 5758 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); } 5742 5759 break; … … 5745 5762 5746 5763 /* Line 1806 of yacc.c */ 5747 #line 80 4"parser.yy"5764 #line 809 "parser.yy" 5748 5765 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5749 5766 break; … … 5752 5769 5753 5770 /* Line 1806 of yacc.c */ 5754 #line 8 09"parser.yy"5771 #line 814 "parser.yy" 5755 5772 { (yyval.sn) = 0; } 5756 5773 break; … … 5759 5776 5760 5777 /* Line 1806 of yacc.c */ 5761 #line 8 15"parser.yy"5778 #line 820 "parser.yy" 5762 5779 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5763 5780 break; … … 5766 5783 5767 5784 /* Line 1806 of yacc.c */ 5768 #line 8 17"parser.yy"5785 #line 822 "parser.yy" 5769 5786 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); } 5770 5787 break; … … 5773 5790 5774 5791 /* Line 1806 of yacc.c */ 5775 #line 82 2"parser.yy"5792 #line 827 "parser.yy" 5776 5793 { (yyval.sn) = 0; } 5777 5794 break; … … 5780 5797 5781 5798 /* Line 1806 of yacc.c */ 5782 #line 8 28"parser.yy"5799 #line 833 "parser.yy" 5783 5800 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5784 5801 break; … … 5787 5804 5788 5805 /* Line 1806 of yacc.c */ 5789 #line 83 0"parser.yy"5806 #line 835 "parser.yy" 5790 5807 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); } 5791 5808 break; … … 5794 5811 5795 5812 /* Line 1806 of yacc.c */ 5796 #line 83 2"parser.yy"5813 #line 837 "parser.yy" 5797 5814 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5798 5815 break; … … 5801 5818 5802 5819 /* Line 1806 of yacc.c */ 5803 #line 83 4"parser.yy"5820 #line 839 "parser.yy" 5804 5821 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); } 5805 5822 break; … … 5808 5825 5809 5826 /* Line 1806 of yacc.c */ 5810 #line 8 39"parser.yy"5827 #line 844 "parser.yy" 5811 5828 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5812 5829 break; … … 5815 5832 5816 5833 /* Line 1806 of yacc.c */ 5817 #line 8 45"parser.yy"5834 #line 850 "parser.yy" 5818 5835 { (yyval.sn) = 0; } 5819 5836 break; … … 5822 5839 5823 5840 /* Line 1806 of yacc.c */ 5824 #line 8 47"parser.yy"5841 #line 852 "parser.yy" 5825 5842 { (yyval.sn) = 0; } 5826 5843 break; … … 5829 5846 5830 5847 /* Line 1806 of yacc.c */ 5831 #line 85 2"parser.yy"5848 #line 857 "parser.yy" 5832 5849 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5833 5850 break; … … 5836 5853 5837 5854 /* Line 1806 of yacc.c */ 5838 #line 85 4"parser.yy"5855 #line 859 "parser.yy" 5839 5856 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); } 5840 5857 break; … … 5843 5860 5844 5861 /* Line 1806 of yacc.c */ 5845 #line 8 56"parser.yy"5862 #line 861 "parser.yy" 5846 5863 { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); } 5847 5864 break; … … 5850 5867 5851 5868 /* Line 1806 of yacc.c */ 5852 #line 86 1"parser.yy"5869 #line 866 "parser.yy" 5853 5870 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5854 5871 break; … … 5857 5874 5858 5875 /* Line 1806 of yacc.c */ 5859 #line 86 3"parser.yy"5876 #line 868 "parser.yy" 5860 5877 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5861 5878 break; … … 5864 5881 5865 5882 /* Line 1806 of yacc.c */ 5866 #line 8 68"parser.yy"5883 #line 873 "parser.yy" 5867 5884 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); } 5868 5885 break; … … 5871 5888 5872 5889 /* Line 1806 of yacc.c */ 5873 #line 87 2"parser.yy"5890 #line 877 "parser.yy" 5874 5891 { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); } 5875 5892 break; … … 5878 5895 5879 5896 /* Line 1806 of yacc.c */ 5880 #line 8 75"parser.yy"5897 #line 880 "parser.yy" 5881 5898 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); } 5882 5899 break; … … 5885 5902 5886 5903 /* Line 1806 of yacc.c */ 5887 #line 8 79"parser.yy"5904 #line 884 "parser.yy" 5888 5905 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); } 5889 5906 break; … … 5892 5909 5893 5910 /* Line 1806 of yacc.c */ 5894 #line 88 2"parser.yy"5911 #line 887 "parser.yy" 5895 5912 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5896 5913 break; … … 5899 5916 5900 5917 /* Line 1806 of yacc.c */ 5901 #line 8 86"parser.yy"5918 #line 891 "parser.yy" 5902 5919 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); } 5903 5920 break; … … 5906 5923 5907 5924 /* Line 1806 of yacc.c */ 5908 #line 8 88"parser.yy"5925 #line 893 "parser.yy" 5909 5926 { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); } 5910 5927 break; … … 5913 5930 5914 5931 /* Line 1806 of yacc.c */ 5915 #line 89 0"parser.yy"5932 #line 895 "parser.yy" 5916 5933 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 5917 5934 break; … … 5920 5937 5921 5938 /* Line 1806 of yacc.c */ 5922 #line 89 2"parser.yy"5939 #line 897 "parser.yy" 5923 5940 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 5924 5941 break; … … 5927 5944 5928 5945 /* Line 1806 of yacc.c */ 5929 #line 89 4"parser.yy"5946 #line 899 "parser.yy" 5930 5947 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); } 5931 5948 break; … … 5934 5951 5935 5952 /* Line 1806 of yacc.c */ 5936 #line 899"parser.yy"5953 #line 904 "parser.yy" 5937 5954 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); } 5938 5955 break; … … 5941 5958 5942 5959 /* Line 1806 of yacc.c */ 5943 #line 90 1"parser.yy"5960 #line 906 "parser.yy" 5944 5961 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); } 5945 5962 break; … … 5948 5965 5949 5966 /* Line 1806 of yacc.c */ 5950 #line 90 3"parser.yy"5967 #line 908 "parser.yy" 5951 5968 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); } 5952 5969 break; … … 5955 5972 5956 5973 /* Line 1806 of yacc.c */ 5957 #line 91 0"parser.yy"5974 #line 915 "parser.yy" 5958 5975 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 5959 5976 break; … … 5962 5979 5963 5980 /* Line 1806 of yacc.c */ 5964 #line 91 2"parser.yy"5981 #line 917 "parser.yy" 5965 5982 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 5966 5983 break; … … 5969 5986 5970 5987 /* Line 1806 of yacc.c */ 5971 #line 91 4"parser.yy"5988 #line 919 "parser.yy" 5972 5989 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 5973 5990 break; … … 5976 5993 5977 5994 /* Line 1806 of yacc.c */ 5978 #line 9 16"parser.yy"5995 #line 921 "parser.yy" 5979 5996 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 5980 5997 break; … … 5983 6000 5984 6001 /* Line 1806 of yacc.c */ 5985 #line 92 1"parser.yy"6002 #line 926 "parser.yy" 5986 6003 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 5987 6004 break; … … 5990 6007 5991 6008 /* Line 1806 of yacc.c */ 5992 #line 92 3"parser.yy"6009 #line 928 "parser.yy" 5993 6010 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 5994 6011 break; … … 5997 6014 5998 6015 /* Line 1806 of yacc.c */ 5999 #line 9 25"parser.yy"6016 #line 930 "parser.yy" 6000 6017 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 6001 6018 break; … … 6004 6021 6005 6022 /* Line 1806 of yacc.c */ 6006 #line 9 27"parser.yy"6023 #line 932 "parser.yy" 6007 6024 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 6008 6025 break; … … 6011 6028 6012 6029 /* Line 1806 of yacc.c */ 6013 #line 93 2"parser.yy"6030 #line 937 "parser.yy" 6014 6031 { 6015 6032 (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) ); … … 6020 6037 6021 6038 /* Line 1806 of yacc.c */ 6022 #line 9 45"parser.yy"6039 #line 950 "parser.yy" 6023 6040 { 6024 6041 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6030 6047 6031 6048 /* Line 1806 of yacc.c */ 6032 #line 95 0"parser.yy"6049 #line 955 "parser.yy" 6033 6050 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6034 6051 break; … … 6037 6054 6038 6055 /* Line 1806 of yacc.c */ 6039 #line 95 2"parser.yy"6056 #line 957 "parser.yy" 6040 6057 { 6041 6058 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6047 6064 6048 6065 /* Line 1806 of yacc.c */ 6049 #line 96 1"parser.yy"6066 #line 966 "parser.yy" 6050 6067 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); } 6051 6068 break; … … 6054 6071 6055 6072 /* Line 1806 of yacc.c */ 6056 #line 96 3"parser.yy"6073 #line 968 "parser.yy" 6057 6074 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); } 6058 6075 break; … … 6061 6078 6062 6079 /* Line 1806 of yacc.c */ 6063 #line 9 65"parser.yy"6080 #line 970 "parser.yy" 6064 6081 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); } 6065 6082 break; … … 6068 6085 6069 6086 /* Line 1806 of yacc.c */ 6070 #line 9 67"parser.yy"6087 #line 972 "parser.yy" 6071 6088 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); } 6072 6089 break; … … 6075 6092 6076 6093 /* Line 1806 of yacc.c */ 6077 #line 9 69"parser.yy"6094 #line 974 "parser.yy" 6078 6095 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); } 6079 6096 break; … … 6082 6099 6083 6100 /* Line 1806 of yacc.c */ 6084 #line 97 4"parser.yy"6101 #line 979 "parser.yy" 6085 6102 { (yyval.flag) = false; } 6086 6103 break; … … 6089 6106 6090 6107 /* Line 1806 of yacc.c */ 6091 #line 9 76"parser.yy"6108 #line 981 "parser.yy" 6092 6109 { (yyval.flag) = true; } 6093 6110 break; … … 6096 6113 6097 6114 /* Line 1806 of yacc.c */ 6098 #line 98 1"parser.yy"6115 #line 986 "parser.yy" 6099 6116 { (yyval.en) = 0; } 6100 6117 break; … … 6103 6120 6104 6121 /* Line 1806 of yacc.c */ 6105 #line 9 88"parser.yy"6122 #line 993 "parser.yy" 6106 6123 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 6107 6124 break; … … 6110 6127 6111 6128 /* Line 1806 of yacc.c */ 6112 #line 99 3"parser.yy"6129 #line 998 "parser.yy" 6113 6130 { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); } 6114 6131 break; … … 6117 6134 6118 6135 /* Line 1806 of yacc.c */ 6119 #line 995"parser.yy"6136 #line 1000 "parser.yy" 6120 6137 { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); } 6121 6138 break; … … 6124 6141 6125 6142 /* Line 1806 of yacc.c */ 6126 #line 100 0"parser.yy"6143 #line 1005 "parser.yy" 6127 6144 { (yyval.en) = 0; } 6128 6145 break; … … 6131 6148 6132 6149 /* Line 1806 of yacc.c */ 6133 #line 100 2"parser.yy"6150 #line 1007 "parser.yy" 6134 6151 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 6135 6152 break; … … 6138 6155 6139 6156 /* Line 1806 of yacc.c */ 6140 #line 100 4"parser.yy"6157 #line 1009 "parser.yy" 6141 6158 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 6142 6159 break; … … 6145 6162 6146 6163 /* Line 1806 of yacc.c */ 6147 #line 10 09"parser.yy"6164 #line 1014 "parser.yy" 6148 6165 { 6149 6166 (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); … … 6155 6172 6156 6173 /* Line 1806 of yacc.c */ 6157 #line 101 4"parser.yy"6174 #line 1019 "parser.yy" 6158 6175 { 6159 6176 (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); … … 6165 6182 6166 6183 /* Line 1806 of yacc.c */ 6167 #line 102 4"parser.yy"6184 #line 1029 "parser.yy" 6168 6185 { (yyval.decl) = 0; } 6169 6186 break; … … 6172 6189 6173 6190 /* Line 1806 of yacc.c */ 6174 #line 103 1"parser.yy"6191 #line 1036 "parser.yy" 6175 6192 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6176 6193 break; … … 6179 6196 6180 6197 /* Line 1806 of yacc.c */ 6181 #line 10 36"parser.yy"6198 #line 1041 "parser.yy" 6182 6199 { (yyval.decl) = 0; } 6183 6200 break; … … 6186 6203 6187 6204 /* Line 1806 of yacc.c */ 6188 #line 104 3"parser.yy"6205 #line 1048 "parser.yy" 6189 6206 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6190 6207 break; … … 6193 6210 6194 6211 /* Line 1806 of yacc.c */ 6195 #line 10 57"parser.yy"6212 #line 1062 "parser.yy" 6196 6213 {} 6197 6214 break; … … 6200 6217 6201 6218 /* Line 1806 of yacc.c */ 6202 #line 10 58"parser.yy"6219 #line 1063 "parser.yy" 6203 6220 {} 6204 6221 break; … … 6207 6224 6208 6225 /* Line 1806 of yacc.c */ 6209 #line 10 87"parser.yy"6226 #line 1092 "parser.yy" 6210 6227 { 6211 6228 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6217 6234 6218 6235 /* Line 1806 of yacc.c */ 6219 #line 109 4"parser.yy"6236 #line 1099 "parser.yy" 6220 6237 { 6221 6238 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6227 6244 6228 6245 /* Line 1806 of yacc.c */ 6229 #line 1 099"parser.yy"6246 #line 1104 "parser.yy" 6230 6247 { 6231 6248 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6235 6252 6236 6253 case 262: 6237 6238 /* Line 1806 of yacc.c */6239 #line 1109 "parser.yy"6240 {6241 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );6242 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );6243 }6244 break;6245 6246 case 263:6247 6254 6248 6255 /* Line 1806 of yacc.c */ … … 6254 6261 break; 6255 6262 6263 case 263: 6264 6265 /* Line 1806 of yacc.c */ 6266 #line 1119 "parser.yy" 6267 { 6268 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); 6269 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); 6270 } 6271 break; 6272 6256 6273 case 264: 6257 6274 6258 6275 /* Line 1806 of yacc.c */ 6259 #line 11 19"parser.yy"6276 #line 1124 "parser.yy" 6260 6277 { 6261 6278 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6267 6284 6268 6285 /* Line 1806 of yacc.c */ 6269 #line 11 27"parser.yy"6286 #line 1132 "parser.yy" 6270 6287 { 6271 6288 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6275 6292 6276 6293 case 266: 6277 6278 /* Line 1806 of yacc.c */6279 #line 1132 "parser.yy"6280 {6281 typedefTable.addToEnclosingScope( TypedefTable::ID );6282 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );6283 }6284 break;6285 6286 case 267:6287 6294 6288 6295 /* Line 1806 of yacc.c */ … … 6294 6301 break; 6295 6302 6303 case 267: 6304 6305 /* Line 1806 of yacc.c */ 6306 #line 1142 "parser.yy" 6307 { 6308 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6309 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); 6310 } 6311 break; 6312 6296 6313 case 268: 6297 6314 6298 6315 /* Line 1806 of yacc.c */ 6299 #line 114 2"parser.yy"6316 #line 1147 "parser.yy" 6300 6317 { 6301 6318 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6307 6324 6308 6325 /* Line 1806 of yacc.c */ 6309 #line 11 47"parser.yy"6326 #line 1152 "parser.yy" 6310 6327 { 6311 6328 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6317 6334 6318 6335 /* Line 1806 of yacc.c */ 6319 #line 11 78"parser.yy"6336 #line 1183 "parser.yy" 6320 6337 { 6321 6338 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6326 6343 6327 6344 /* Line 1806 of yacc.c */ 6328 #line 118 2"parser.yy"6345 #line 1187 "parser.yy" 6329 6346 { 6330 6347 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6335 6352 6336 6353 /* Line 1806 of yacc.c */ 6337 #line 11 89"parser.yy"6354 #line 1194 "parser.yy" 6338 6355 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6339 6356 break; … … 6342 6359 6343 6360 /* Line 1806 of yacc.c */ 6344 #line 119 3"parser.yy"6361 #line 1198 "parser.yy" 6345 6362 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6346 6363 break; 6347 6364 6348 6365 case 274: 6349 6350 /* Line 1806 of yacc.c */6351 #line 1198 "parser.yy"6352 {6353 typedefTable.addToEnclosingScope( TypedefTable::TD );6354 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();6355 }6356 break;6357 6358 case 275:6359 6366 6360 6367 /* Line 1806 of yacc.c */ … … 6366 6373 break; 6367 6374 6375 case 275: 6376 6377 /* Line 1806 of yacc.c */ 6378 #line 1208 "parser.yy" 6379 { 6380 typedefTable.addToEnclosingScope( TypedefTable::TD ); 6381 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef(); 6382 } 6383 break; 6384 6368 6385 case 276: 6369 6386 6370 6387 /* Line 1806 of yacc.c */ 6371 #line 12 08"parser.yy"6388 #line 1213 "parser.yy" 6372 6389 { 6373 6390 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6379 6396 6380 6397 /* Line 1806 of yacc.c */ 6381 #line 12 19"parser.yy"6398 #line 1224 "parser.yy" 6382 6399 { 6383 6400 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6389 6406 6390 6407 /* Line 1806 of yacc.c */ 6391 #line 122 4"parser.yy"6408 #line 1229 "parser.yy" 6392 6409 { 6393 6410 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6399 6416 6400 6417 /* Line 1806 of yacc.c */ 6401 #line 12 29"parser.yy"6418 #line 1234 "parser.yy" 6402 6419 { 6403 6420 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6409 6426 6410 6427 /* Line 1806 of yacc.c */ 6411 #line 123 4"parser.yy"6428 #line 1239 "parser.yy" 6412 6429 { 6413 6430 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6419 6436 6420 6437 /* Line 1806 of yacc.c */ 6421 #line 12 39"parser.yy"6438 #line 1244 "parser.yy" 6422 6439 { 6423 6440 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6429 6446 6430 6447 /* Line 1806 of yacc.c */ 6431 #line 12 48"parser.yy"6448 #line 1253 "parser.yy" 6432 6449 { 6433 6450 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6439 6456 6440 6457 /* Line 1806 of yacc.c */ 6441 #line 125 3"parser.yy"6458 #line 1258 "parser.yy" 6442 6459 { 6443 6460 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6449 6466 6450 6467 /* Line 1806 of yacc.c */ 6451 #line 127 0"parser.yy"6468 #line 1275 "parser.yy" 6452 6469 { 6453 6470 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6459 6476 6460 6477 /* Line 1806 of yacc.c */ 6461 #line 12 75"parser.yy"6478 #line 1280 "parser.yy" 6462 6479 { 6463 6480 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6469 6486 6470 6487 /* Line 1806 of yacc.c */ 6471 #line 1 297"parser.yy"6488 #line 1302 "parser.yy" 6472 6489 { (yyval.decl) = 0; } 6473 6490 break; … … 6476 6493 6477 6494 /* Line 1806 of yacc.c */ 6478 #line 13 09"parser.yy"6495 #line 1314 "parser.yy" 6479 6496 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6480 6497 break; … … 6483 6500 6484 6501 /* Line 1806 of yacc.c */ 6485 #line 132 0"parser.yy"6502 #line 1325 "parser.yy" 6486 6503 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6487 6504 break; … … 6490 6507 6491 6508 /* Line 1806 of yacc.c */ 6492 #line 132 2"parser.yy"6509 #line 1327 "parser.yy" 6493 6510 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6494 6511 break; … … 6497 6514 6498 6515 /* Line 1806 of yacc.c */ 6499 #line 132 4"parser.yy"6516 #line 1329 "parser.yy" 6500 6517 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6501 6518 break; … … 6504 6521 6505 6522 /* Line 1806 of yacc.c */ 6506 #line 13 26"parser.yy"6523 #line 1331 "parser.yy" 6507 6524 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6508 6525 break; … … 6511 6528 6512 6529 /* Line 1806 of yacc.c */ 6513 #line 13 28"parser.yy"6530 #line 1333 "parser.yy" 6514 6531 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6515 6532 break; … … 6518 6535 6519 6536 /* Line 1806 of yacc.c */ 6520 #line 133 0"parser.yy"6537 #line 1335 "parser.yy" 6521 6538 { 6522 6539 typedefTable.enterScope(); … … 6527 6544 6528 6545 /* Line 1806 of yacc.c */ 6529 #line 133 4"parser.yy"6546 #line 1339 "parser.yy" 6530 6547 { 6531 6548 typedefTable.leaveScope(); … … 6537 6554 6538 6555 /* Line 1806 of yacc.c */ 6539 #line 134 3"parser.yy"6556 #line 1348 "parser.yy" 6540 6557 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6541 6558 break; … … 6544 6561 6545 6562 /* Line 1806 of yacc.c */ 6546 #line 13 45"parser.yy"6563 #line 1350 "parser.yy" 6547 6564 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6548 6565 break; … … 6551 6568 6552 6569 /* Line 1806 of yacc.c */ 6553 #line 13 56"parser.yy"6570 #line 1361 "parser.yy" 6554 6571 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6555 6572 break; … … 6558 6575 6559 6576 /* Line 1806 of yacc.c */ 6560 #line 136 1"parser.yy"6577 #line 1366 "parser.yy" 6561 6578 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6562 6579 break; … … 6565 6582 6566 6583 /* Line 1806 of yacc.c */ 6567 #line 136 3"parser.yy"6584 #line 1368 "parser.yy" 6568 6585 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6569 6586 break; … … 6572 6589 6573 6590 /* Line 1806 of yacc.c */ 6574 #line 13 65"parser.yy"6591 #line 1370 "parser.yy" 6575 6592 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6576 6593 break; … … 6579 6596 6580 6597 /* Line 1806 of yacc.c */ 6581 #line 13 67"parser.yy"6598 #line 1372 "parser.yy" 6582 6599 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6583 6600 break; … … 6586 6603 6587 6604 /* Line 1806 of yacc.c */ 6588 #line 137 0"parser.yy"6605 #line 1375 "parser.yy" 6589 6606 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; } 6590 6607 break; … … 6593 6610 6594 6611 /* Line 1806 of yacc.c */ 6595 #line 137 2"parser.yy"6612 #line 1377 "parser.yy" 6596 6613 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6597 6614 break; … … 6600 6617 6601 6618 /* Line 1806 of yacc.c */ 6602 #line 13 75"parser.yy"6619 #line 1380 "parser.yy" 6603 6620 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; } 6604 6621 break; … … 6607 6624 6608 6625 /* Line 1806 of yacc.c */ 6609 #line 13 77"parser.yy"6626 #line 1382 "parser.yy" 6610 6627 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6611 6628 break; … … 6614 6631 6615 6632 /* Line 1806 of yacc.c */ 6616 #line 138 2"parser.yy"6633 #line 1387 "parser.yy" 6617 6634 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6618 6635 break; … … 6621 6638 6622 6639 /* Line 1806 of yacc.c */ 6623 #line 138 4"parser.yy"6640 #line 1389 "parser.yy" 6624 6641 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6625 6642 break; … … 6628 6645 6629 6646 /* Line 1806 of yacc.c */ 6630 #line 13 86"parser.yy"6647 #line 1391 "parser.yy" 6631 6648 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6632 6649 break; … … 6635 6652 6636 6653 /* Line 1806 of yacc.c */ 6637 #line 13 88"parser.yy"6654 #line 1393 "parser.yy" 6638 6655 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6639 6656 break; … … 6642 6659 6643 6660 /* Line 1806 of yacc.c */ 6644 #line 139 0"parser.yy"6661 #line 1395 "parser.yy" 6645 6662 { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); } 6646 6663 break; … … 6649 6666 6650 6667 /* Line 1806 of yacc.c */ 6651 #line 139 2"parser.yy"6668 #line 1397 "parser.yy" 6652 6669 { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); } 6653 6670 break; … … 6656 6673 6657 6674 /* Line 1806 of yacc.c */ 6658 #line 139 4"parser.yy"6675 #line 1399 "parser.yy" 6659 6676 { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); } 6660 6677 break; … … 6663 6680 6664 6681 /* Line 1806 of yacc.c */ 6665 #line 1 396"parser.yy"6682 #line 1401 "parser.yy" 6666 6683 { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); } 6667 6684 break; … … 6670 6687 6671 6688 /* Line 1806 of yacc.c */ 6672 #line 1 398"parser.yy"6689 #line 1403 "parser.yy" 6673 6690 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6674 6691 break; … … 6677 6694 6678 6695 /* Line 1806 of yacc.c */ 6679 #line 140 0"parser.yy"6696 #line 1405 "parser.yy" 6680 6697 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6681 6698 break; … … 6684 6701 6685 6702 /* Line 1806 of yacc.c */ 6686 #line 140 2"parser.yy"6703 #line 1407 "parser.yy" 6687 6704 { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); } 6688 6705 break; … … 6691 6708 6692 6709 /* Line 1806 of yacc.c */ 6693 #line 140 4"parser.yy"6710 #line 1409 "parser.yy" 6694 6711 { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); } 6695 6712 break; … … 6698 6715 6699 6716 /* Line 1806 of yacc.c */ 6700 #line 14 06"parser.yy"6717 #line 1411 "parser.yy" 6701 6718 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 6702 6719 break; … … 6705 6722 6706 6723 /* Line 1806 of yacc.c */ 6707 #line 141 3"parser.yy"6724 #line 1418 "parser.yy" 6708 6725 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6709 6726 break; … … 6712 6729 6713 6730 /* Line 1806 of yacc.c */ 6714 #line 14 15"parser.yy"6731 #line 1420 "parser.yy" 6715 6732 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6716 6733 break; … … 6719 6736 6720 6737 /* Line 1806 of yacc.c */ 6721 #line 14 17"parser.yy"6738 #line 1422 "parser.yy" 6722 6739 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6723 6740 break; … … 6726 6743 6727 6744 /* Line 1806 of yacc.c */ 6728 #line 14 19"parser.yy"6745 #line 1424 "parser.yy" 6729 6746 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6730 6747 break; … … 6733 6750 6734 6751 /* Line 1806 of yacc.c */ 6735 #line 14 25"parser.yy"6752 #line 1430 "parser.yy" 6736 6753 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6737 6754 break; … … 6740 6757 6741 6758 /* Line 1806 of yacc.c */ 6742 #line 143 2"parser.yy"6759 #line 1437 "parser.yy" 6743 6760 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6744 6761 break; … … 6747 6764 6748 6765 /* Line 1806 of yacc.c */ 6749 #line 143 4"parser.yy"6766 #line 1439 "parser.yy" 6750 6767 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6751 6768 break; … … 6754 6771 6755 6772 /* Line 1806 of yacc.c */ 6756 #line 14 36"parser.yy"6773 #line 1441 "parser.yy" 6757 6774 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6758 6775 break; … … 6761 6778 6762 6779 /* Line 1806 of yacc.c */ 6763 #line 144 1"parser.yy"6780 #line 1446 "parser.yy" 6764 6781 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6765 6782 break; … … 6768 6785 6769 6786 /* Line 1806 of yacc.c */ 6770 #line 144 3"parser.yy"6787 #line 1448 "parser.yy" 6771 6788 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6772 6789 break; … … 6775 6792 6776 6793 /* Line 1806 of yacc.c */ 6777 #line 14 45"parser.yy"6794 #line 1450 "parser.yy" 6778 6795 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6779 6796 break; … … 6782 6799 6783 6800 /* Line 1806 of yacc.c */ 6784 #line 14 47"parser.yy"6801 #line 1452 "parser.yy" 6785 6802 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6786 6803 break; … … 6789 6806 6790 6807 /* Line 1806 of yacc.c */ 6791 #line 145 3"parser.yy"6808 #line 1458 "parser.yy" 6792 6809 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6793 6810 break; … … 6796 6813 6797 6814 /* Line 1806 of yacc.c */ 6798 #line 14 55"parser.yy"6815 #line 1460 "parser.yy" 6799 6816 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6800 6817 break; … … 6803 6820 6804 6821 /* Line 1806 of yacc.c */ 6805 #line 14 57"parser.yy"6822 #line 1462 "parser.yy" 6806 6823 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6807 6824 break; … … 6810 6827 6811 6828 /* Line 1806 of yacc.c */ 6812 #line 146 3"parser.yy"6829 #line 1468 "parser.yy" 6813 6830 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6814 6831 break; … … 6817 6834 6818 6835 /* Line 1806 of yacc.c */ 6819 #line 14 65"parser.yy"6836 #line 1470 "parser.yy" 6820 6837 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6821 6838 break; … … 6824 6841 6825 6842 /* Line 1806 of yacc.c */ 6826 #line 147 1"parser.yy"6843 #line 1476 "parser.yy" 6827 6844 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6828 6845 break; … … 6831 6848 6832 6849 /* Line 1806 of yacc.c */ 6833 #line 147 3"parser.yy"6850 #line 1478 "parser.yy" 6834 6851 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6835 6852 break; … … 6838 6855 6839 6856 /* Line 1806 of yacc.c */ 6840 #line 14 75"parser.yy"6857 #line 1480 "parser.yy" 6841 6858 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6842 6859 break; … … 6845 6862 6846 6863 /* Line 1806 of yacc.c */ 6847 #line 148 0"parser.yy"6864 #line 1485 "parser.yy" 6848 6865 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6849 6866 break; … … 6852 6869 6853 6870 /* Line 1806 of yacc.c */ 6854 #line 148 2"parser.yy"6871 #line 1487 "parser.yy" 6855 6872 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6856 6873 break; … … 6859 6876 6860 6877 /* Line 1806 of yacc.c */ 6861 #line 148 4"parser.yy"6878 #line 1489 "parser.yy" 6862 6879 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6863 6880 break; … … 6866 6883 6867 6884 /* Line 1806 of yacc.c */ 6868 #line 149 4"parser.yy"6885 #line 1499 "parser.yy" 6869 6886 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); } 6870 6887 break; … … 6873 6890 6874 6891 /* Line 1806 of yacc.c */ 6875 #line 1 496"parser.yy"6892 #line 1501 "parser.yy" 6876 6893 { 6877 6894 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 6883 6900 6884 6901 /* Line 1806 of yacc.c */ 6885 #line 150 1"parser.yy"6902 #line 1506 "parser.yy" 6886 6903 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 6887 6904 break; … … 6890 6907 6891 6908 /* Line 1806 of yacc.c */ 6892 #line 150 3"parser.yy"6909 #line 1508 "parser.yy" 6893 6910 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); } 6894 6911 break; … … 6897 6914 6898 6915 /* Line 1806 of yacc.c */ 6899 #line 15 05"parser.yy"6916 #line 1510 "parser.yy" 6900 6917 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); } 6901 6918 break; … … 6904 6921 6905 6922 /* Line 1806 of yacc.c */ 6906 #line 15 07"parser.yy"6923 #line 1512 "parser.yy" 6907 6924 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6908 6925 break; … … 6911 6928 6912 6929 /* Line 1806 of yacc.c */ 6913 #line 151 2"parser.yy"6930 #line 1517 "parser.yy" 6914 6931 { (yyval.aggKey) = DeclarationNode::Struct; } 6915 6932 break; … … 6918 6935 6919 6936 /* Line 1806 of yacc.c */ 6920 #line 151 4"parser.yy"6937 #line 1519 "parser.yy" 6921 6938 { (yyval.aggKey) = DeclarationNode::Union; } 6922 6939 break; … … 6925 6942 6926 6943 /* Line 1806 of yacc.c */ 6927 #line 15 19"parser.yy"6944 #line 1524 "parser.yy" 6928 6945 { (yyval.decl) = 0; } 6929 6946 break; … … 6932 6949 6933 6950 /* Line 1806 of yacc.c */ 6934 #line 152 1"parser.yy"6951 #line 1526 "parser.yy" 6935 6952 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 6936 6953 break; … … 6939 6956 6940 6957 /* Line 1806 of yacc.c */ 6941 #line 15 27"parser.yy"6958 #line 1532 "parser.yy" 6942 6959 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); } 6943 6960 break; … … 6946 6963 6947 6964 /* Line 1806 of yacc.c */ 6948 #line 153 0"parser.yy"6965 #line 1535 "parser.yy" 6949 6966 { // mark all fields in list 6950 6967 for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 6957 6974 6958 6975 /* Line 1806 of yacc.c */ 6959 #line 154 0"parser.yy"6976 #line 1545 "parser.yy" 6960 6977 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 6961 6978 break; … … 6964 6981 6965 6982 /* Line 1806 of yacc.c */ 6966 #line 154 2"parser.yy"6983 #line 1547 "parser.yy" 6967 6984 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 6968 6985 break; … … 6971 6988 6972 6989 /* Line 1806 of yacc.c */ 6973 #line 154 4"parser.yy"6990 #line 1549 "parser.yy" 6974 6991 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 6975 6992 break; … … 6978 6995 6979 6996 /* Line 1806 of yacc.c */ 6980 #line 15 49"parser.yy"6997 #line 1554 "parser.yy" 6981 6998 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6982 6999 break; … … 6985 7002 6986 7003 /* Line 1806 of yacc.c */ 6987 #line 155 1"parser.yy"7004 #line 1556 "parser.yy" 6988 7005 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 6989 7006 break; … … 6992 7009 6993 7010 /* Line 1806 of yacc.c */ 6994 #line 15 56"parser.yy"7011 #line 1561 "parser.yy" 6995 7012 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 6996 7013 break; … … 6999 7016 7000 7017 /* Line 1806 of yacc.c */ 7001 #line 15 58"parser.yy"7018 #line 1563 "parser.yy" 7002 7019 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7003 7020 break; … … 7006 7023 7007 7024 /* Line 1806 of yacc.c */ 7008 #line 156 1"parser.yy"7025 #line 1566 "parser.yy" 7009 7026 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7010 7027 break; … … 7013 7030 7014 7031 /* Line 1806 of yacc.c */ 7015 #line 156 4"parser.yy"7032 #line 1569 "parser.yy" 7016 7033 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7017 7034 break; … … 7020 7037 7021 7038 /* Line 1806 of yacc.c */ 7022 #line 157 0"parser.yy"7039 #line 1575 "parser.yy" 7023 7040 { (yyval.en) = 0; } 7024 7041 break; … … 7027 7044 7028 7045 /* Line 1806 of yacc.c */ 7029 #line 157 2"parser.yy"7046 #line 1577 "parser.yy" 7030 7047 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7031 7048 break; … … 7034 7051 7035 7052 /* Line 1806 of yacc.c */ 7036 #line 15 77"parser.yy"7053 #line 1582 "parser.yy" 7037 7054 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7038 7055 break; … … 7041 7058 7042 7059 /* Line 1806 of yacc.c */ 7043 #line 15 86"parser.yy"7060 #line 1591 "parser.yy" 7044 7061 { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); } 7045 7062 break; … … 7048 7065 7049 7066 /* Line 1806 of yacc.c */ 7050 #line 15 88"parser.yy"7067 #line 1593 "parser.yy" 7051 7068 { 7052 7069 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 7058 7075 7059 7076 /* Line 1806 of yacc.c */ 7060 #line 159 3"parser.yy"7077 #line 1598 "parser.yy" 7061 7078 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 7062 7079 break; … … 7065 7082 7066 7083 /* Line 1806 of yacc.c */ 7067 #line 1 595"parser.yy"7084 #line 1600 "parser.yy" 7068 7085 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); } 7069 7086 break; … … 7072 7089 7073 7090 /* Line 1806 of yacc.c */ 7074 #line 160 0"parser.yy"7091 #line 1605 "parser.yy" 7075 7092 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7076 7093 break; … … 7079 7096 7080 7097 /* Line 1806 of yacc.c */ 7081 #line 160 2"parser.yy"7098 #line 1607 "parser.yy" 7082 7099 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7083 7100 break; … … 7086 7103 7087 7104 /* Line 1806 of yacc.c */ 7088 #line 16 07"parser.yy"7105 #line 1612 "parser.yy" 7089 7106 { (yyval.en) = 0; } 7090 7107 break; … … 7093 7110 7094 7111 /* Line 1806 of yacc.c */ 7095 #line 16 09"parser.yy"7112 #line 1614 "parser.yy" 7096 7113 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7097 7114 break; … … 7100 7117 7101 7118 /* Line 1806 of yacc.c */ 7102 #line 16 16"parser.yy"7119 #line 1621 "parser.yy" 7103 7120 { (yyval.decl) = 0; } 7104 7121 break; … … 7107 7124 7108 7125 /* Line 1806 of yacc.c */ 7109 #line 162 4"parser.yy"7126 #line 1629 "parser.yy" 7110 7127 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7111 7128 break; … … 7114 7131 7115 7132 /* Line 1806 of yacc.c */ 7116 #line 16 26"parser.yy"7133 #line 1631 "parser.yy" 7117 7134 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7118 7135 break; … … 7121 7138 7122 7139 /* Line 1806 of yacc.c */ 7123 #line 16 28"parser.yy"7140 #line 1633 "parser.yy" 7124 7141 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7125 7142 break; … … 7128 7145 7129 7146 /* Line 1806 of yacc.c */ 7130 #line 16 36"parser.yy"7147 #line 1641 "parser.yy" 7131 7148 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7132 7149 break; … … 7135 7152 7136 7153 /* Line 1806 of yacc.c */ 7137 #line 16 38"parser.yy"7154 #line 1643 "parser.yy" 7138 7155 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7139 7156 break; … … 7142 7159 7143 7160 /* Line 1806 of yacc.c */ 7144 #line 164 0"parser.yy"7161 #line 1645 "parser.yy" 7145 7162 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7146 7163 break; … … 7149 7166 7150 7167 /* Line 1806 of yacc.c */ 7151 #line 16 46"parser.yy"7168 #line 1651 "parser.yy" 7152 7169 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7153 7170 break; … … 7156 7173 7157 7174 /* Line 1806 of yacc.c */ 7158 #line 165 1"parser.yy"7175 #line 1656 "parser.yy" 7159 7176 { (yyval.decl) = 0; } 7160 7177 break; … … 7163 7180 7164 7181 /* Line 1806 of yacc.c */ 7165 #line 16 58"parser.yy"7182 #line 1663 "parser.yy" 7166 7183 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7167 7184 break; … … 7170 7187 7171 7188 /* Line 1806 of yacc.c */ 7172 #line 16 65"parser.yy"7189 #line 1670 "parser.yy" 7173 7190 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7174 7191 break; … … 7177 7194 7178 7195 /* Line 1806 of yacc.c */ 7179 #line 16 67"parser.yy"7196 #line 1672 "parser.yy" 7180 7197 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7181 7198 break; … … 7184 7201 7185 7202 /* Line 1806 of yacc.c */ 7186 #line 16 76"parser.yy"7203 #line 1681 "parser.yy" 7187 7204 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7188 7205 break; … … 7191 7208 7192 7209 /* Line 1806 of yacc.c */ 7193 #line 16 79"parser.yy"7210 #line 1684 "parser.yy" 7194 7211 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7195 7212 break; … … 7198 7215 7199 7216 /* Line 1806 of yacc.c */ 7200 #line 168 1"parser.yy"7217 #line 1686 "parser.yy" 7201 7218 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7202 7219 break; … … 7205 7222 7206 7223 /* Line 1806 of yacc.c */ 7207 #line 169 1"parser.yy"7224 #line 1696 "parser.yy" 7208 7225 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7209 7226 break; 7210 7227 7211 7228 case 436: 7212 7213 /* Line 1806 of yacc.c */7214 #line 1697 "parser.yy"7215 {7216 typedefTable.addToEnclosingScope( TypedefTable::ID );7217 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );7218 }7219 break;7220 7221 case 437:7222 7229 7223 7230 /* Line 1806 of yacc.c */ … … 7229 7236 break; 7230 7237 7238 case 437: 7239 7240 /* Line 1806 of yacc.c */ 7241 #line 1707 "parser.yy" 7242 { 7243 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7244 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) ); 7245 } 7246 break; 7247 7231 7248 case 439: 7232 7249 7233 7250 /* Line 1806 of yacc.c */ 7234 #line 171 1"parser.yy"7251 #line 1716 "parser.yy" 7235 7252 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7236 7253 break; … … 7239 7256 7240 7257 /* Line 1806 of yacc.c */ 7241 #line 172 0"parser.yy"7258 #line 1725 "parser.yy" 7242 7259 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7243 7260 break; … … 7246 7263 7247 7264 /* Line 1806 of yacc.c */ 7248 #line 172 2"parser.yy"7265 #line 1727 "parser.yy" 7249 7266 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7250 7267 break; … … 7253 7270 7254 7271 /* Line 1806 of yacc.c */ 7255 #line 17 47"parser.yy"7272 #line 1752 "parser.yy" 7256 7273 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7257 7274 break; … … 7260 7277 7261 7278 /* Line 1806 of yacc.c */ 7262 #line 17 55"parser.yy"7279 #line 1760 "parser.yy" 7263 7280 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7264 7281 break; … … 7267 7284 7268 7285 /* Line 1806 of yacc.c */ 7269 #line 176 0"parser.yy"7286 #line 1765 "parser.yy" 7270 7287 { (yyval.in) = 0; } 7271 7288 break; … … 7274 7291 7275 7292 /* Line 1806 of yacc.c */ 7276 #line 176 2"parser.yy"7293 #line 1767 "parser.yy" 7277 7294 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7278 7295 break; … … 7281 7298 7282 7299 /* Line 1806 of yacc.c */ 7283 #line 176 4"parser.yy"7300 #line 1769 "parser.yy" 7284 7301 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); } 7285 7302 break; … … 7288 7305 7289 7306 /* Line 1806 of yacc.c */ 7290 #line 17 68"parser.yy"7307 #line 1773 "parser.yy" 7291 7308 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7292 7309 break; … … 7295 7312 7296 7313 /* Line 1806 of yacc.c */ 7297 #line 17 69"parser.yy"7314 #line 1774 "parser.yy" 7298 7315 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7299 7316 break; … … 7302 7319 7303 7320 /* Line 1806 of yacc.c */ 7304 #line 177 4"parser.yy"7321 #line 1779 "parser.yy" 7305 7322 { (yyval.in) = 0; } 7306 7323 break; … … 7309 7326 7310 7327 /* Line 1806 of yacc.c */ 7311 #line 17 76"parser.yy"7328 #line 1781 "parser.yy" 7312 7329 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7313 7330 break; … … 7316 7333 7317 7334 /* Line 1806 of yacc.c */ 7318 #line 17 77"parser.yy"7335 #line 1782 "parser.yy" 7319 7336 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); } 7320 7337 break; … … 7323 7340 7324 7341 /* Line 1806 of yacc.c */ 7325 #line 17 79"parser.yy"7342 #line 1784 "parser.yy" 7326 7343 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7327 7344 break; … … 7330 7347 7331 7348 /* Line 1806 of yacc.c */ 7332 #line 1 795"parser.yy"7349 #line 1800 "parser.yy" 7333 7350 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); } 7334 7351 break; … … 7337 7354 7338 7355 /* Line 1806 of yacc.c */ 7339 #line 180 1"parser.yy"7356 #line 1806 "parser.yy" 7340 7357 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); } 7341 7358 break; … … 7344 7361 7345 7362 /* Line 1806 of yacc.c */ 7346 #line 18 07"parser.yy"7363 #line 1812 "parser.yy" 7347 7364 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); } 7348 7365 break; … … 7351 7368 7352 7369 /* Line 1806 of yacc.c */ 7353 #line 181 0"parser.yy"7370 #line 1815 "parser.yy" 7354 7371 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7355 7372 break; … … 7358 7375 7359 7376 /* Line 1806 of yacc.c */ 7360 #line 181 2"parser.yy"7377 #line 1817 "parser.yy" 7361 7378 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7362 7379 break; … … 7365 7382 7366 7383 /* Line 1806 of yacc.c */ 7367 #line 181 4"parser.yy"7384 #line 1819 "parser.yy" 7368 7385 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); } 7369 7386 break; … … 7372 7389 7373 7390 /* Line 1806 of yacc.c */ 7374 #line 18 16"parser.yy"7391 #line 1821 "parser.yy" 7375 7392 { (yyval.en) = (yyvsp[(4) - (6)].en); } 7376 7393 break; … … 7379 7396 7380 7397 /* Line 1806 of yacc.c */ 7381 #line 184 0"parser.yy"7398 #line 1845 "parser.yy" 7382 7399 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7383 7400 break; … … 7386 7403 7387 7404 /* Line 1806 of yacc.c */ 7388 #line 184 2"parser.yy"7405 #line 1847 "parser.yy" 7389 7406 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7390 7407 break; … … 7393 7410 7394 7411 /* Line 1806 of yacc.c */ 7395 #line 184 4"parser.yy"7412 #line 1849 "parser.yy" 7396 7413 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7397 7414 break; … … 7400 7417 7401 7418 /* Line 1806 of yacc.c */ 7402 #line 185 0"parser.yy"7419 #line 1855 "parser.yy" 7403 7420 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7404 7421 break; … … 7407 7424 7408 7425 /* Line 1806 of yacc.c */ 7409 #line 185 2"parser.yy"7426 #line 1857 "parser.yy" 7410 7427 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7411 7428 break; … … 7414 7431 7415 7432 /* Line 1806 of yacc.c */ 7416 #line 18 57"parser.yy"7433 #line 1862 "parser.yy" 7417 7434 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7418 7435 break; … … 7421 7438 7422 7439 /* Line 1806 of yacc.c */ 7423 #line 186 3"parser.yy"7440 #line 1868 "parser.yy" 7424 7441 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7425 7442 break; … … 7428 7445 7429 7446 /* Line 1806 of yacc.c */ 7430 #line 18 68"parser.yy"7447 #line 1873 "parser.yy" 7431 7448 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7432 7449 break; … … 7435 7452 7436 7453 /* Line 1806 of yacc.c */ 7437 #line 187 0"parser.yy"7454 #line 1875 "parser.yy" 7438 7455 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7439 7456 break; … … 7442 7459 7443 7460 /* Line 1806 of yacc.c */ 7444 #line 18 76"parser.yy"7461 #line 1881 "parser.yy" 7445 7462 { (yyval.tclass) = DeclarationNode::Otype; } 7446 7463 break; … … 7449 7466 7450 7467 /* Line 1806 of yacc.c */ 7451 #line 18 78"parser.yy"7468 #line 1883 "parser.yy" 7452 7469 { (yyval.tclass) = DeclarationNode::Ftype; } 7453 7470 break; … … 7456 7473 7457 7474 /* Line 1806 of yacc.c */ 7458 #line 188 0"parser.yy"7475 #line 1885 "parser.yy" 7459 7476 { (yyval.tclass) = DeclarationNode::Dtype; } 7460 7477 break; … … 7463 7480 7464 7481 /* Line 1806 of yacc.c */ 7465 #line 18 85"parser.yy"7482 #line 1890 "parser.yy" 7466 7483 { (yyval.decl) = 0; } 7467 7484 break; … … 7470 7487 7471 7488 /* Line 1806 of yacc.c */ 7472 #line 18 87"parser.yy"7489 #line 1892 "parser.yy" 7473 7490 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7474 7491 break; … … 7477 7494 7478 7495 /* Line 1806 of yacc.c */ 7479 #line 189 2"parser.yy"7496 #line 1897 "parser.yy" 7480 7497 { 7481 7498 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); … … 7487 7504 7488 7505 /* Line 1806 of yacc.c */ 7489 #line 1 897"parser.yy"7506 #line 1902 "parser.yy" 7490 7507 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7491 7508 break; … … 7494 7511 7495 7512 /* Line 1806 of yacc.c */ 7496 #line 1 899"parser.yy"7513 #line 1904 "parser.yy" 7497 7514 { (yyval.decl) = 0; } 7498 7515 break; … … 7501 7518 7502 7519 /* Line 1806 of yacc.c */ 7503 #line 190 4"parser.yy"7520 #line 1909 "parser.yy" 7504 7521 { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); } 7505 7522 break; … … 7508 7525 7509 7526 /* Line 1806 of yacc.c */ 7510 #line 19 07"parser.yy"7527 #line 1912 "parser.yy" 7511 7528 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); } 7512 7529 break; … … 7515 7532 7516 7533 /* Line 1806 of yacc.c */ 7517 #line 19 09"parser.yy"7534 #line 1914 "parser.yy" 7518 7535 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 7519 7536 break; … … 7522 7539 7523 7540 /* Line 1806 of yacc.c */ 7524 #line 191 4"parser.yy"7541 #line 1919 "parser.yy" 7525 7542 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7526 7543 break; … … 7529 7546 7530 7547 /* Line 1806 of yacc.c */ 7531 #line 19 16"parser.yy"7548 #line 1921 "parser.yy" 7532 7549 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7533 7550 break; … … 7536 7553 7537 7554 /* Line 1806 of yacc.c */ 7538 #line 19 18"parser.yy"7555 #line 1923 "parser.yy" 7539 7556 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7540 7557 break; … … 7543 7560 7544 7561 /* Line 1806 of yacc.c */ 7545 #line 192 3"parser.yy"7562 #line 1928 "parser.yy" 7546 7563 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7547 7564 break; … … 7550 7567 7551 7568 /* Line 1806 of yacc.c */ 7552 #line 19 25"parser.yy"7569 #line 1930 "parser.yy" 7553 7570 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7554 7571 break; … … 7557 7574 7558 7575 /* Line 1806 of yacc.c */ 7559 #line 193 0"parser.yy"7576 #line 1935 "parser.yy" 7560 7577 { 7561 7578 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7567 7584 7568 7585 /* Line 1806 of yacc.c */ 7569 #line 19 35"parser.yy"7586 #line 1940 "parser.yy" 7570 7587 { 7571 7588 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7577 7594 7578 7595 /* Line 1806 of yacc.c */ 7579 #line 194 3"parser.yy"7596 #line 1948 "parser.yy" 7580 7597 { 7581 7598 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7587 7604 7588 7605 /* Line 1806 of yacc.c */ 7589 #line 19 48"parser.yy"7606 #line 1953 "parser.yy" 7590 7607 { 7591 7608 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); … … 7597 7614 7598 7615 /* Line 1806 of yacc.c */ 7599 #line 195 3"parser.yy"7616 #line 1958 "parser.yy" 7600 7617 { 7601 7618 typedefTable.leaveTrait(); … … 7608 7625 7609 7626 /* Line 1806 of yacc.c */ 7610 #line 196 3"parser.yy"7627 #line 1968 "parser.yy" 7611 7628 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7612 7629 break; 7613 7630 7614 7631 case 516: 7615 7616 /* Line 1806 of yacc.c */7617 #line 1973 "parser.yy"7618 {7619 typedefTable.addToEnclosingScope2( TypedefTable::ID );7620 (yyval.decl) = (yyvsp[(1) - (1)].decl);7621 }7622 break;7623 7624 case 517:7625 7632 7626 7633 /* Line 1806 of yacc.c */ … … 7632 7639 break; 7633 7640 7641 case 517: 7642 7643 /* Line 1806 of yacc.c */ 7644 #line 1983 "parser.yy" 7645 { 7646 typedefTable.addToEnclosingScope2( TypedefTable::ID ); 7647 (yyval.decl) = (yyvsp[(1) - (1)].decl); 7648 } 7649 break; 7650 7634 7651 case 518: 7635 7652 7636 7653 /* Line 1806 of yacc.c */ 7637 #line 198 3"parser.yy"7654 #line 1988 "parser.yy" 7638 7655 { 7639 7656 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7645 7662 7646 7663 /* Line 1806 of yacc.c */ 7647 #line 199 1"parser.yy"7664 #line 1996 "parser.yy" 7648 7665 { 7649 7666 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7655 7672 7656 7673 /* Line 1806 of yacc.c */ 7657 #line 1996"parser.yy"7674 #line 2001 "parser.yy" 7658 7675 { 7659 7676 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7665 7682 7666 7683 /* Line 1806 of yacc.c */ 7667 #line 20 06"parser.yy"7684 #line 2011 "parser.yy" 7668 7685 {} 7669 7686 break; … … 7672 7689 7673 7690 /* Line 1806 of yacc.c */ 7674 #line 20 08"parser.yy"7691 #line 2013 "parser.yy" 7675 7692 { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl); } 7676 7693 break; … … 7679 7696 7680 7697 /* Line 1806 of yacc.c */ 7681 #line 201 4"parser.yy"7698 #line 2019 "parser.yy" 7682 7699 { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7683 7700 break; … … 7686 7703 7687 7704 /* Line 1806 of yacc.c */ 7688 #line 20 19"parser.yy"7705 #line 2024 "parser.yy" 7689 7706 { (yyval.decl) = 0; } 7690 7707 break; … … 7693 7710 7694 7711 /* Line 1806 of yacc.c */ 7695 #line 20 27"parser.yy"7712 #line 2032 "parser.yy" 7696 7713 {} 7697 7714 break; … … 7700 7717 7701 7718 /* Line 1806 of yacc.c */ 7702 #line 20 29"parser.yy"7719 #line 2034 "parser.yy" 7703 7720 { 7704 7721 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" … … 7710 7727 7711 7728 /* Line 1806 of yacc.c */ 7712 #line 203 4"parser.yy"7729 #line 2039 "parser.yy" 7713 7730 { 7714 7731 linkage = linkageStack.top(); … … 7721 7738 7722 7739 /* Line 1806 of yacc.c */ 7723 #line 204 0"parser.yy"7740 #line 2045 "parser.yy" 7724 7741 { // mark all fields in list 7725 7742 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 7732 7749 7733 7750 /* Line 1806 of yacc.c */ 7734 #line 20 55"parser.yy"7751 #line 2060 "parser.yy" 7735 7752 { 7736 7753 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7743 7760 7744 7761 /* Line 1806 of yacc.c */ 7745 #line 206 1"parser.yy"7762 #line 2066 "parser.yy" 7746 7763 { 7747 7764 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7754 7771 7755 7772 /* Line 1806 of yacc.c */ 7756 #line 207 0"parser.yy"7773 #line 2075 "parser.yy" 7757 7774 { 7758 7775 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7765 7782 7766 7783 /* Line 1806 of yacc.c */ 7767 #line 20 76"parser.yy"7784 #line 2081 "parser.yy" 7768 7785 { 7769 7786 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7776 7793 7777 7794 /* Line 1806 of yacc.c */ 7778 #line 208 2"parser.yy"7795 #line 2087 "parser.yy" 7779 7796 { 7780 7797 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7787 7804 7788 7805 /* Line 1806 of yacc.c */ 7789 #line 20 88"parser.yy"7806 #line 2093 "parser.yy" 7790 7807 { 7791 7808 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7798 7815 7799 7816 /* Line 1806 of yacc.c */ 7800 #line 209 4"parser.yy"7817 #line 2099 "parser.yy" 7801 7818 { 7802 7819 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7809 7826 7810 7827 /* Line 1806 of yacc.c */ 7811 #line 210 2"parser.yy"7828 #line 2107 "parser.yy" 7812 7829 { 7813 7830 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7820 7837 7821 7838 /* Line 1806 of yacc.c */ 7822 #line 21 08"parser.yy"7839 #line 2113 "parser.yy" 7823 7840 { 7824 7841 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7831 7848 7832 7849 /* Line 1806 of yacc.c */ 7833 #line 21 16"parser.yy"7850 #line 2121 "parser.yy" 7834 7851 { 7835 7852 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7842 7859 7843 7860 /* Line 1806 of yacc.c */ 7844 #line 212 2"parser.yy"7861 #line 2127 "parser.yy" 7845 7862 { 7846 7863 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7853 7870 7854 7871 /* Line 1806 of yacc.c */ 7855 #line 21 37"parser.yy"7872 #line 2142 "parser.yy" 7856 7873 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 7857 7874 break; … … 7860 7877 7861 7878 /* Line 1806 of yacc.c */ 7862 #line 214 2"parser.yy"7879 #line 2147 "parser.yy" 7863 7880 { delete (yyvsp[(3) - (5)].str); } 7864 7881 break; … … 7867 7884 7868 7885 /* Line 1806 of yacc.c */ 7869 #line 21 47"parser.yy"7886 #line 2152 "parser.yy" 7870 7887 { (yyval.decl) = 0; } 7871 7888 break; … … 7874 7891 7875 7892 /* Line 1806 of yacc.c */ 7876 #line 215 4"parser.yy"7893 #line 2159 "parser.yy" 7877 7894 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7878 7895 break; … … 7881 7898 7882 7899 /* Line 1806 of yacc.c */ 7883 #line 216 0"parser.yy"7900 #line 2165 "parser.yy" 7884 7901 { (yyval.decl) = 0; } 7885 7902 break; … … 7888 7905 7889 7906 /* Line 1806 of yacc.c */ 7890 #line 217 1"parser.yy"7907 #line 2176 "parser.yy" 7891 7908 { delete (yyvsp[(3) - (4)].en); } 7892 7909 break; … … 7895 7912 7896 7913 /* Line 1806 of yacc.c */ 7897 #line 21 75"parser.yy"7914 #line 2180 "parser.yy" 7898 7915 { delete (yyvsp[(1) - (1)].tok); } 7899 7916 break; … … 7902 7919 7903 7920 /* Line 1806 of yacc.c */ 7904 #line 21 76"parser.yy"7921 #line 2181 "parser.yy" 7905 7922 { delete (yyvsp[(1) - (1)].decl); } 7906 7923 break; … … 7909 7926 7910 7927 /* Line 1806 of yacc.c */ 7911 #line 21 77"parser.yy"7928 #line 2182 "parser.yy" 7912 7929 { delete (yyvsp[(1) - (1)].decl); } 7913 7930 break; … … 7916 7933 7917 7934 /* Line 1806 of yacc.c */ 7918 #line 21 78"parser.yy"7935 #line 2183 "parser.yy" 7919 7936 { delete (yyvsp[(1) - (1)].decl); } 7920 7937 break; 7921 7938 7922 7939 case 565: 7923 7924 /* Line 1806 of yacc.c */7925 #line 2213 "parser.yy"7926 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7927 break;7928 7929 case 567:7930 7931 /* Line 1806 of yacc.c */7932 #line 2216 "parser.yy"7933 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7934 break;7935 7936 case 568:7937 7940 7938 7941 /* Line 1806 of yacc.c */ … … 7941 7944 break; 7942 7945 7946 case 567: 7947 7948 /* Line 1806 of yacc.c */ 7949 #line 2221 "parser.yy" 7950 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7951 break; 7952 7953 case 568: 7954 7955 /* Line 1806 of yacc.c */ 7956 #line 2223 "parser.yy" 7957 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7958 break; 7959 7943 7960 case 569: 7944 7961 7945 7962 /* Line 1806 of yacc.c */ 7946 #line 222 3"parser.yy"7963 #line 2228 "parser.yy" 7947 7964 { 7948 7965 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 7954 7971 7955 7972 /* Line 1806 of yacc.c */ 7956 #line 22 28"parser.yy"7973 #line 2233 "parser.yy" 7957 7974 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7958 7975 break; … … 7961 7978 7962 7979 /* Line 1806 of yacc.c */ 7963 #line 223 3"parser.yy"7980 #line 2238 "parser.yy" 7964 7981 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7965 7982 break; … … 7968 7985 7969 7986 /* Line 1806 of yacc.c */ 7970 #line 22 35"parser.yy"7987 #line 2240 "parser.yy" 7971 7988 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7972 7989 break; … … 7975 7992 7976 7993 /* Line 1806 of yacc.c */ 7977 #line 22 37"parser.yy"7994 #line 2242 "parser.yy" 7978 7995 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7979 7996 break; … … 7982 7999 7983 8000 /* Line 1806 of yacc.c */ 7984 #line 224 2"parser.yy"8001 #line 2247 "parser.yy" 7985 8002 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7986 8003 break; … … 7989 8006 7990 8007 /* Line 1806 of yacc.c */ 7991 #line 224 4"parser.yy"8008 #line 2249 "parser.yy" 7992 8009 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7993 8010 break; … … 7996 8013 7997 8014 /* Line 1806 of yacc.c */ 7998 #line 22 46"parser.yy"8015 #line 2251 "parser.yy" 7999 8016 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8000 8017 break; … … 8003 8020 8004 8021 /* Line 1806 of yacc.c */ 8005 #line 22 48"parser.yy"8022 #line 2253 "parser.yy" 8006 8023 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8007 8024 break; … … 8010 8027 8011 8028 /* Line 1806 of yacc.c */ 8012 #line 225 3"parser.yy"8029 #line 2258 "parser.yy" 8013 8030 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8014 8031 break; … … 8017 8034 8018 8035 /* Line 1806 of yacc.c */ 8019 #line 22 55"parser.yy"8036 #line 2260 "parser.yy" 8020 8037 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8021 8038 break; … … 8024 8041 8025 8042 /* Line 1806 of yacc.c */ 8026 #line 226 4"parser.yy"8043 #line 2269 "parser.yy" 8027 8044 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8028 8045 break; … … 8031 8048 8032 8049 /* Line 1806 of yacc.c */ 8033 #line 22 67"parser.yy"8050 #line 2272 "parser.yy" 8034 8051 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8035 8052 break; … … 8038 8055 8039 8056 /* Line 1806 of yacc.c */ 8040 #line 227 2"parser.yy"8057 #line 2277 "parser.yy" 8041 8058 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8042 8059 break; … … 8045 8062 8046 8063 /* Line 1806 of yacc.c */ 8047 #line 227 4"parser.yy"8064 #line 2279 "parser.yy" 8048 8065 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8049 8066 break; … … 8052 8069 8053 8070 /* Line 1806 of yacc.c */ 8054 #line 22 76"parser.yy"8071 #line 2281 "parser.yy" 8055 8072 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8056 8073 break; … … 8059 8076 8060 8077 /* Line 1806 of yacc.c */ 8061 #line 228 1"parser.yy"8078 #line 2286 "parser.yy" 8062 8079 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8063 8080 break; … … 8066 8083 8067 8084 /* Line 1806 of yacc.c */ 8068 #line 228 3"parser.yy"8085 #line 2288 "parser.yy" 8069 8086 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8070 8087 break; … … 8073 8090 8074 8091 /* Line 1806 of yacc.c */ 8075 #line 22 85"parser.yy"8092 #line 2290 "parser.yy" 8076 8093 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8077 8094 break; … … 8080 8097 8081 8098 /* Line 1806 of yacc.c */ 8082 #line 229 0"parser.yy"8099 #line 2295 "parser.yy" 8083 8100 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8084 8101 break; … … 8087 8104 8088 8105 /* Line 1806 of yacc.c */ 8089 #line 229 2"parser.yy"8106 #line 2297 "parser.yy" 8090 8107 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8091 8108 break; … … 8094 8111 8095 8112 /* Line 1806 of yacc.c */ 8096 #line 229 4"parser.yy"8113 #line 2299 "parser.yy" 8097 8114 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8098 8115 break; … … 8101 8118 8102 8119 /* Line 1806 of yacc.c */ 8103 #line 23 09"parser.yy"8120 #line 2314 "parser.yy" 8104 8121 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8105 8122 break; … … 8108 8125 8109 8126 /* Line 1806 of yacc.c */ 8110 #line 231 1"parser.yy"8127 #line 2316 "parser.yy" 8111 8128 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8112 8129 break; … … 8115 8132 8116 8133 /* Line 1806 of yacc.c */ 8117 #line 231 3"parser.yy"8134 #line 2318 "parser.yy" 8118 8135 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8119 8136 break; … … 8122 8139 8123 8140 /* Line 1806 of yacc.c */ 8124 #line 23 18"parser.yy"8141 #line 2323 "parser.yy" 8125 8142 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8126 8143 break; … … 8129 8146 8130 8147 /* Line 1806 of yacc.c */ 8131 #line 232 0"parser.yy"8148 #line 2325 "parser.yy" 8132 8149 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8133 8150 break; … … 8136 8153 8137 8154 /* Line 1806 of yacc.c */ 8138 #line 232 2"parser.yy"8155 #line 2327 "parser.yy" 8139 8156 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8140 8157 break; … … 8143 8160 8144 8161 /* Line 1806 of yacc.c */ 8145 #line 23 27"parser.yy"8162 #line 2332 "parser.yy" 8146 8163 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8147 8164 break; … … 8150 8167 8151 8168 /* Line 1806 of yacc.c */ 8152 #line 23 29"parser.yy"8169 #line 2334 "parser.yy" 8153 8170 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8154 8171 break; … … 8157 8174 8158 8175 /* Line 1806 of yacc.c */ 8159 #line 233 1"parser.yy"8176 #line 2336 "parser.yy" 8160 8177 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8161 8178 break; 8162 8179 8163 8180 case 604: 8164 8165 /* Line 1806 of yacc.c */8166 #line 2346 "parser.yy"8167 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8168 break;8169 8170 case 606:8171 8172 /* Line 1806 of yacc.c */8173 #line 2349 "parser.yy"8174 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8175 break;8176 8177 case 607:8178 8181 8179 8182 /* Line 1806 of yacc.c */ … … 8182 8185 break; 8183 8186 8187 case 606: 8188 8189 /* Line 1806 of yacc.c */ 8190 #line 2354 "parser.yy" 8191 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8192 break; 8193 8194 case 607: 8195 8196 /* Line 1806 of yacc.c */ 8197 #line 2356 "parser.yy" 8198 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8199 break; 8200 8184 8201 case 609: 8185 8202 8186 8203 /* Line 1806 of yacc.c */ 8187 #line 23 57"parser.yy"8204 #line 2362 "parser.yy" 8188 8205 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8189 8206 break; … … 8192 8209 8193 8210 /* Line 1806 of yacc.c */ 8194 #line 236 2"parser.yy"8211 #line 2367 "parser.yy" 8195 8212 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8196 8213 break; … … 8199 8216 8200 8217 /* Line 1806 of yacc.c */ 8201 #line 236 4"parser.yy"8218 #line 2369 "parser.yy" 8202 8219 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8203 8220 break; … … 8206 8223 8207 8224 /* Line 1806 of yacc.c */ 8208 #line 23 66"parser.yy"8225 #line 2371 "parser.yy" 8209 8226 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8210 8227 break; … … 8213 8230 8214 8231 /* Line 1806 of yacc.c */ 8215 #line 237 1"parser.yy"8232 #line 2376 "parser.yy" 8216 8233 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8217 8234 break; … … 8220 8237 8221 8238 /* Line 1806 of yacc.c */ 8222 #line 237 3"parser.yy"8239 #line 2378 "parser.yy" 8223 8240 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8224 8241 break; … … 8227 8244 8228 8245 /* Line 1806 of yacc.c */ 8229 #line 23 75"parser.yy"8246 #line 2380 "parser.yy" 8230 8247 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8231 8248 break; … … 8234 8251 8235 8252 /* Line 1806 of yacc.c */ 8236 #line 23 77"parser.yy"8253 #line 2382 "parser.yy" 8237 8254 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8238 8255 break; … … 8241 8258 8242 8259 /* Line 1806 of yacc.c */ 8243 #line 238 2"parser.yy"8260 #line 2387 "parser.yy" 8244 8261 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8245 8262 break; … … 8248 8265 8249 8266 /* Line 1806 of yacc.c */ 8250 #line 238 4"parser.yy"8267 #line 2389 "parser.yy" 8251 8268 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8252 8269 break; … … 8255 8272 8256 8273 /* Line 1806 of yacc.c */ 8257 #line 23 86"parser.yy"8274 #line 2391 "parser.yy" 8258 8275 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8259 8276 break; 8260 8277 8261 8278 case 620: 8262 8263 /* Line 1806 of yacc.c */8264 #line 2396 "parser.yy"8265 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8266 break;8267 8268 case 622:8269 8270 /* Line 1806 of yacc.c */8271 #line 2399 "parser.yy"8272 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8273 break;8274 8275 case 623:8276 8279 8277 8280 /* Line 1806 of yacc.c */ … … 8280 8283 break; 8281 8284 8285 case 622: 8286 8287 /* Line 1806 of yacc.c */ 8288 #line 2404 "parser.yy" 8289 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8290 break; 8291 8292 case 623: 8293 8294 /* Line 1806 of yacc.c */ 8295 #line 2406 "parser.yy" 8296 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8297 break; 8298 8282 8299 case 624: 8283 8300 8284 8301 /* Line 1806 of yacc.c */ 8285 #line 24 06"parser.yy"8302 #line 2411 "parser.yy" 8286 8303 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8287 8304 break; … … 8290 8307 8291 8308 /* Line 1806 of yacc.c */ 8292 #line 24 08"parser.yy"8309 #line 2413 "parser.yy" 8293 8310 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8294 8311 break; … … 8297 8314 8298 8315 /* Line 1806 of yacc.c */ 8299 #line 241 0"parser.yy"8316 #line 2415 "parser.yy" 8300 8317 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8301 8318 break; … … 8304 8321 8305 8322 /* Line 1806 of yacc.c */ 8306 #line 24 15"parser.yy"8323 #line 2420 "parser.yy" 8307 8324 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8308 8325 break; … … 8311 8328 8312 8329 /* Line 1806 of yacc.c */ 8313 #line 24 17"parser.yy"8330 #line 2422 "parser.yy" 8314 8331 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8315 8332 break; … … 8318 8335 8319 8336 /* Line 1806 of yacc.c */ 8320 #line 24 19"parser.yy"8337 #line 2424 "parser.yy" 8321 8338 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8322 8339 break; … … 8325 8342 8326 8343 /* Line 1806 of yacc.c */ 8327 #line 242 1"parser.yy"8344 #line 2426 "parser.yy" 8328 8345 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8329 8346 break; … … 8332 8349 8333 8350 /* Line 1806 of yacc.c */ 8334 #line 24 26"parser.yy"8351 #line 2431 "parser.yy" 8335 8352 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8336 8353 break; … … 8339 8356 8340 8357 /* Line 1806 of yacc.c */ 8341 #line 24 28"parser.yy"8358 #line 2433 "parser.yy" 8342 8359 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8343 8360 break; … … 8346 8363 8347 8364 /* Line 1806 of yacc.c */ 8348 #line 243 0"parser.yy"8365 #line 2435 "parser.yy" 8349 8366 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8350 8367 break; 8351 8368 8352 8369 case 634: 8353 8354 /* Line 1806 of yacc.c */8355 #line 2461 "parser.yy"8356 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8357 break;8358 8359 case 636:8360 8361 /* Line 1806 of yacc.c */8362 #line 2464 "parser.yy"8363 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8364 break;8365 8366 case 637:8367 8370 8368 8371 /* Line 1806 of yacc.c */ … … 8371 8374 break; 8372 8375 8376 case 636: 8377 8378 /* Line 1806 of yacc.c */ 8379 #line 2469 "parser.yy" 8380 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8381 break; 8382 8383 case 637: 8384 8385 /* Line 1806 of yacc.c */ 8386 #line 2471 "parser.yy" 8387 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8388 break; 8389 8373 8390 case 638: 8374 8375 /* Line 1806 of yacc.c */8376 #line 2471 "parser.yy"8377 {8378 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );8379 (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );8380 }8381 break;8382 8383 case 639:8384 8391 8385 8392 /* Line 1806 of yacc.c */ … … 8391 8398 break; 8392 8399 8400 case 639: 8401 8402 /* Line 1806 of yacc.c */ 8403 #line 2481 "parser.yy" 8404 { 8405 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); 8406 (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); 8407 } 8408 break; 8409 8393 8410 case 640: 8394 8411 8395 8412 /* Line 1806 of yacc.c */ 8396 #line 248 4"parser.yy"8413 #line 2489 "parser.yy" 8397 8414 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8398 8415 break; … … 8401 8418 8402 8419 /* Line 1806 of yacc.c */ 8403 #line 24 86"parser.yy"8420 #line 2491 "parser.yy" 8404 8421 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8405 8422 break; … … 8408 8425 8409 8426 /* Line 1806 of yacc.c */ 8410 #line 24 88"parser.yy"8427 #line 2493 "parser.yy" 8411 8428 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8412 8429 break; … … 8415 8432 8416 8433 /* Line 1806 of yacc.c */ 8417 #line 249 3"parser.yy"8434 #line 2498 "parser.yy" 8418 8435 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8419 8436 break; … … 8422 8439 8423 8440 /* Line 1806 of yacc.c */ 8424 #line 2 495"parser.yy"8441 #line 2500 "parser.yy" 8425 8442 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8426 8443 break; … … 8429 8446 8430 8447 /* Line 1806 of yacc.c */ 8431 #line 250 0"parser.yy"8448 #line 2505 "parser.yy" 8432 8449 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8433 8450 break; … … 8436 8453 8437 8454 /* Line 1806 of yacc.c */ 8438 #line 250 2"parser.yy"8455 #line 2507 "parser.yy" 8439 8456 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8440 8457 break; … … 8443 8460 8444 8461 /* Line 1806 of yacc.c */ 8445 #line 25 17"parser.yy"8462 #line 2522 "parser.yy" 8446 8463 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8447 8464 break; … … 8450 8467 8451 8468 /* Line 1806 of yacc.c */ 8452 #line 25 19"parser.yy"8469 #line 2524 "parser.yy" 8453 8470 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8454 8471 break; … … 8457 8474 8458 8475 /* Line 1806 of yacc.c */ 8459 #line 252 4"parser.yy"8476 #line 2529 "parser.yy" 8460 8477 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8461 8478 break; … … 8464 8481 8465 8482 /* Line 1806 of yacc.c */ 8466 #line 25 26"parser.yy"8483 #line 2531 "parser.yy" 8467 8484 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8468 8485 break; … … 8471 8488 8472 8489 /* Line 1806 of yacc.c */ 8473 #line 25 28"parser.yy"8490 #line 2533 "parser.yy" 8474 8491 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8475 8492 break; … … 8478 8495 8479 8496 /* Line 1806 of yacc.c */ 8480 #line 253 0"parser.yy"8497 #line 2535 "parser.yy" 8481 8498 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8482 8499 break; … … 8485 8502 8486 8503 /* Line 1806 of yacc.c */ 8487 #line 253 2"parser.yy"8504 #line 2537 "parser.yy" 8488 8505 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8489 8506 break; … … 8492 8509 8493 8510 /* Line 1806 of yacc.c */ 8494 #line 25 38"parser.yy"8511 #line 2543 "parser.yy" 8495 8512 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8496 8513 break; … … 8499 8516 8500 8517 /* Line 1806 of yacc.c */ 8501 #line 254 0"parser.yy"8518 #line 2545 "parser.yy" 8502 8519 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8503 8520 break; … … 8506 8523 8507 8524 /* Line 1806 of yacc.c */ 8508 #line 254 2"parser.yy"8525 #line 2547 "parser.yy" 8509 8526 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8510 8527 break; … … 8513 8530 8514 8531 /* Line 1806 of yacc.c */ 8515 #line 25 47"parser.yy"8532 #line 2552 "parser.yy" 8516 8533 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); } 8517 8534 break; … … 8520 8537 8521 8538 /* Line 1806 of yacc.c */ 8522 #line 25 49"parser.yy"8539 #line 2554 "parser.yy" 8523 8540 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8524 8541 break; … … 8527 8544 8528 8545 /* Line 1806 of yacc.c */ 8529 #line 255 1"parser.yy"8546 #line 2556 "parser.yy" 8530 8547 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8531 8548 break; … … 8534 8551 8535 8552 /* Line 1806 of yacc.c */ 8536 #line 25 57"parser.yy"8553 #line 2562 "parser.yy" 8537 8554 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8538 8555 break; … … 8541 8558 8542 8559 /* Line 1806 of yacc.c */ 8543 #line 25 59"parser.yy"8560 #line 2564 "parser.yy" 8544 8561 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8545 8562 break; … … 8548 8565 8549 8566 /* Line 1806 of yacc.c */ 8550 #line 25 65"parser.yy"8567 #line 2570 "parser.yy" 8551 8568 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8552 8569 break; … … 8555 8572 8556 8573 /* Line 1806 of yacc.c */ 8557 #line 25 67"parser.yy"8574 #line 2572 "parser.yy" 8558 8575 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8559 8576 break; … … 8562 8579 8563 8580 /* Line 1806 of yacc.c */ 8564 #line 25 69"parser.yy"8581 #line 2574 "parser.yy" 8565 8582 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8566 8583 break; … … 8569 8586 8570 8587 /* Line 1806 of yacc.c */ 8571 #line 257 1"parser.yy"8588 #line 2576 "parser.yy" 8572 8589 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8573 8590 break; … … 8576 8593 8577 8594 /* Line 1806 of yacc.c */ 8578 #line 25 86"parser.yy"8595 #line 2591 "parser.yy" 8579 8596 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8580 8597 break; … … 8583 8600 8584 8601 /* Line 1806 of yacc.c */ 8585 #line 25 88"parser.yy"8602 #line 2593 "parser.yy" 8586 8603 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8587 8604 break; … … 8590 8607 8591 8608 /* Line 1806 of yacc.c */ 8592 #line 259 3"parser.yy"8609 #line 2598 "parser.yy" 8593 8610 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8594 8611 break; … … 8597 8614 8598 8615 /* Line 1806 of yacc.c */ 8599 #line 2 595"parser.yy"8616 #line 2600 "parser.yy" 8600 8617 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8601 8618 break; … … 8604 8621 8605 8622 /* Line 1806 of yacc.c */ 8606 #line 2 597"parser.yy"8623 #line 2602 "parser.yy" 8607 8624 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8608 8625 break; … … 8611 8628 8612 8629 /* Line 1806 of yacc.c */ 8613 #line 2 599"parser.yy"8630 #line 2604 "parser.yy" 8614 8631 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8615 8632 break; … … 8618 8635 8619 8636 /* Line 1806 of yacc.c */ 8620 #line 260 1"parser.yy"8637 #line 2606 "parser.yy" 8621 8638 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8622 8639 break; … … 8625 8642 8626 8643 /* Line 1806 of yacc.c */ 8627 #line 26 07"parser.yy"8644 #line 2612 "parser.yy" 8628 8645 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8629 8646 break; … … 8632 8649 8633 8650 /* Line 1806 of yacc.c */ 8634 #line 26 09"parser.yy"8651 #line 2614 "parser.yy" 8635 8652 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8636 8653 break; … … 8639 8656 8640 8657 /* Line 1806 of yacc.c */ 8641 #line 261 1"parser.yy"8658 #line 2616 "parser.yy" 8642 8659 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8643 8660 break; … … 8646 8663 8647 8664 /* Line 1806 of yacc.c */ 8648 #line 26 16"parser.yy"8665 #line 2621 "parser.yy" 8649 8666 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); } 8650 8667 break; … … 8653 8670 8654 8671 /* Line 1806 of yacc.c */ 8655 #line 26 18"parser.yy"8672 #line 2623 "parser.yy" 8656 8673 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8657 8674 break; … … 8660 8677 8661 8678 /* Line 1806 of yacc.c */ 8662 #line 262 0"parser.yy"8679 #line 2625 "parser.yy" 8663 8680 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8664 8681 break; … … 8667 8684 8668 8685 /* Line 1806 of yacc.c */ 8669 #line 26 27"parser.yy"8686 #line 2632 "parser.yy" 8670 8687 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8671 8688 break; … … 8674 8691 8675 8692 /* Line 1806 of yacc.c */ 8676 #line 26 38"parser.yy"8693 #line 2643 "parser.yy" 8677 8694 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8678 8695 break; … … 8681 8698 8682 8699 /* Line 1806 of yacc.c */ 8683 #line 264 1"parser.yy"8700 #line 2646 "parser.yy" 8684 8701 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8685 8702 break; … … 8688 8705 8689 8706 /* Line 1806 of yacc.c */ 8690 #line 264 3"parser.yy"8707 #line 2648 "parser.yy" 8691 8708 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8692 8709 break; … … 8695 8712 8696 8713 /* Line 1806 of yacc.c */ 8697 #line 26 46"parser.yy"8714 #line 2651 "parser.yy" 8698 8715 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8699 8716 break; … … 8702 8719 8703 8720 /* Line 1806 of yacc.c */ 8704 #line 26 48"parser.yy"8721 #line 2653 "parser.yy" 8705 8722 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8706 8723 break; … … 8709 8726 8710 8727 /* Line 1806 of yacc.c */ 8711 #line 265 0"parser.yy"8728 #line 2655 "parser.yy" 8712 8729 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8713 8730 break; … … 8716 8733 8717 8734 /* Line 1806 of yacc.c */ 8718 #line 266 4"parser.yy"8735 #line 2669 "parser.yy" 8719 8736 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8720 8737 break; … … 8723 8740 8724 8741 /* Line 1806 of yacc.c */ 8725 #line 26 66"parser.yy"8742 #line 2671 "parser.yy" 8726 8743 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8727 8744 break; … … 8730 8747 8731 8748 /* Line 1806 of yacc.c */ 8732 #line 267 1"parser.yy"8749 #line 2676 "parser.yy" 8733 8750 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8734 8751 break; … … 8737 8754 8738 8755 /* Line 1806 of yacc.c */ 8739 #line 267 3"parser.yy"8756 #line 2678 "parser.yy" 8740 8757 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8741 8758 break; … … 8744 8761 8745 8762 /* Line 1806 of yacc.c */ 8746 #line 26 75"parser.yy"8763 #line 2680 "parser.yy" 8747 8764 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8748 8765 break; … … 8751 8768 8752 8769 /* Line 1806 of yacc.c */ 8753 #line 26 77"parser.yy"8770 #line 2682 "parser.yy" 8754 8771 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8755 8772 break; … … 8758 8775 8759 8776 /* Line 1806 of yacc.c */ 8760 #line 26 79"parser.yy"8777 #line 2684 "parser.yy" 8761 8778 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8762 8779 break; … … 8765 8782 8766 8783 /* Line 1806 of yacc.c */ 8767 #line 26 85"parser.yy"8784 #line 2690 "parser.yy" 8768 8785 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8769 8786 break; … … 8772 8789 8773 8790 /* Line 1806 of yacc.c */ 8774 #line 26 87"parser.yy"8791 #line 2692 "parser.yy" 8775 8792 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8776 8793 break; … … 8779 8796 8780 8797 /* Line 1806 of yacc.c */ 8781 #line 26 89"parser.yy"8798 #line 2694 "parser.yy" 8782 8799 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8783 8800 break; … … 8786 8803 8787 8804 /* Line 1806 of yacc.c */ 8788 #line 269 4"parser.yy"8805 #line 2699 "parser.yy" 8789 8806 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8790 8807 break; … … 8793 8810 8794 8811 /* Line 1806 of yacc.c */ 8795 #line 2 696"parser.yy"8812 #line 2701 "parser.yy" 8796 8813 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8797 8814 break; … … 8800 8817 8801 8818 /* Line 1806 of yacc.c */ 8802 #line 27 06"parser.yy"8819 #line 2711 "parser.yy" 8803 8820 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8804 8821 break; … … 8807 8824 8808 8825 /* Line 1806 of yacc.c */ 8809 #line 27 16"parser.yy"8826 #line 2721 "parser.yy" 8810 8827 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8811 8828 break; … … 8814 8831 8815 8832 /* Line 1806 of yacc.c */ 8816 #line 27 18"parser.yy"8833 #line 2723 "parser.yy" 8817 8834 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8818 8835 break; … … 8821 8838 8822 8839 /* Line 1806 of yacc.c */ 8823 #line 272 0"parser.yy"8840 #line 2725 "parser.yy" 8824 8841 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8825 8842 break; … … 8828 8845 8829 8846 /* Line 1806 of yacc.c */ 8830 #line 272 2"parser.yy"8847 #line 2727 "parser.yy" 8831 8848 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8832 8849 break; … … 8835 8852 8836 8853 /* Line 1806 of yacc.c */ 8837 #line 272 4"parser.yy"8854 #line 2729 "parser.yy" 8838 8855 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8839 8856 break; … … 8842 8859 8843 8860 /* Line 1806 of yacc.c */ 8844 #line 27 26"parser.yy"8861 #line 2731 "parser.yy" 8845 8862 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8846 8863 break; … … 8849 8866 8850 8867 /* Line 1806 of yacc.c */ 8851 #line 273 3"parser.yy"8868 #line 2738 "parser.yy" 8852 8869 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8853 8870 break; … … 8856 8873 8857 8874 /* Line 1806 of yacc.c */ 8858 #line 27 35"parser.yy"8875 #line 2740 "parser.yy" 8859 8876 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8860 8877 break; … … 8863 8880 8864 8881 /* Line 1806 of yacc.c */ 8865 #line 27 37"parser.yy"8882 #line 2742 "parser.yy" 8866 8883 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8867 8884 break; … … 8870 8887 8871 8888 /* Line 1806 of yacc.c */ 8872 #line 27 39"parser.yy"8889 #line 2744 "parser.yy" 8873 8890 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8874 8891 break; 8875 8892 8876 8893 case 722: 8877 8878 /* Line 1806 of yacc.c */8879 #line 2741 "parser.yy"8880 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }8881 break;8882 8883 case 723:8884 8885 /* Line 1806 of yacc.c */8886 #line 2744 "parser.yy"8887 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8888 break;8889 8890 case 724:8891 8894 8892 8895 /* Line 1806 of yacc.c */ … … 8895 8898 break; 8896 8899 8900 case 723: 8901 8902 /* Line 1806 of yacc.c */ 8903 #line 2749 "parser.yy" 8904 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8905 break; 8906 8907 case 724: 8908 8909 /* Line 1806 of yacc.c */ 8910 #line 2751 "parser.yy" 8911 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8912 break; 8913 8897 8914 case 725: 8898 8915 8899 8916 /* Line 1806 of yacc.c */ 8900 #line 27 48"parser.yy"8917 #line 2753 "parser.yy" 8901 8918 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8902 8919 break; … … 8905 8922 8906 8923 /* Line 1806 of yacc.c */ 8907 #line 275 0"parser.yy"8924 #line 2755 "parser.yy" 8908 8925 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8909 8926 break; … … 8912 8929 8913 8930 /* Line 1806 of yacc.c */ 8914 #line 275 2"parser.yy"8931 #line 2757 "parser.yy" 8915 8932 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8916 8933 break; … … 8919 8936 8920 8937 /* Line 1806 of yacc.c */ 8921 #line 27 57"parser.yy"8938 #line 2762 "parser.yy" 8922 8939 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8923 8940 break; … … 8926 8943 8927 8944 /* Line 1806 of yacc.c */ 8928 #line 27 59"parser.yy"8945 #line 2764 "parser.yy" 8929 8946 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8930 8947 break; … … 8933 8950 8934 8951 /* Line 1806 of yacc.c */ 8935 #line 276 4"parser.yy"8952 #line 2769 "parser.yy" 8936 8953 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8937 8954 break; … … 8940 8957 8941 8958 /* Line 1806 of yacc.c */ 8942 #line 27 66"parser.yy"8959 #line 2771 "parser.yy" 8943 8960 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8944 8961 break; … … 8947 8964 8948 8965 /* Line 1806 of yacc.c */ 8949 #line 279 3"parser.yy"8966 #line 2798 "parser.yy" 8950 8967 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8951 8968 break; … … 8954 8971 8955 8972 /* Line 1806 of yacc.c */ 8956 #line 280 4"parser.yy"8973 #line 2809 "parser.yy" 8957 8974 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8958 8975 break; … … 8961 8978 8962 8979 /* Line 1806 of yacc.c */ 8963 #line 28 06"parser.yy"8980 #line 2811 "parser.yy" 8964 8981 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8965 8982 break; … … 8968 8985 8969 8986 /* Line 1806 of yacc.c */ 8970 #line 28 08"parser.yy"8987 #line 2813 "parser.yy" 8971 8988 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8972 8989 break; … … 8975 8992 8976 8993 /* Line 1806 of yacc.c */ 8977 #line 281 0"parser.yy"8994 #line 2815 "parser.yy" 8978 8995 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8979 8996 break; … … 8982 8999 8983 9000 /* Line 1806 of yacc.c */ 8984 #line 281 2"parser.yy"9001 #line 2817 "parser.yy" 8985 9002 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8986 9003 break; … … 8989 9006 8990 9007 /* Line 1806 of yacc.c */ 8991 #line 281 4"parser.yy"9008 #line 2819 "parser.yy" 8992 9009 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8993 9010 break; … … 8996 9013 8997 9014 /* Line 1806 of yacc.c */ 8998 #line 282 1"parser.yy"9015 #line 2826 "parser.yy" 8999 9016 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9000 9017 break; … … 9003 9020 9004 9021 /* Line 1806 of yacc.c */ 9005 #line 282 3"parser.yy"9022 #line 2828 "parser.yy" 9006 9023 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9007 9024 break; … … 9010 9027 9011 9028 /* Line 1806 of yacc.c */ 9012 #line 28 25"parser.yy"9029 #line 2830 "parser.yy" 9013 9030 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9014 9031 break; … … 9017 9034 9018 9035 /* Line 1806 of yacc.c */ 9019 #line 28 27"parser.yy"9036 #line 2832 "parser.yy" 9020 9037 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9021 9038 break; … … 9024 9041 9025 9042 /* Line 1806 of yacc.c */ 9026 #line 28 29"parser.yy"9043 #line 2834 "parser.yy" 9027 9044 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9028 9045 break; … … 9031 9048 9032 9049 /* Line 1806 of yacc.c */ 9033 #line 283 1"parser.yy"9050 #line 2836 "parser.yy" 9034 9051 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9035 9052 break; … … 9038 9055 9039 9056 /* Line 1806 of yacc.c */ 9040 #line 28 36"parser.yy"9057 #line 2841 "parser.yy" 9041 9058 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9042 9059 break; … … 9045 9062 9046 9063 /* Line 1806 of yacc.c */ 9047 #line 284 3"parser.yy"9064 #line 2848 "parser.yy" 9048 9065 { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); } 9049 9066 break; … … 9052 9069 9053 9070 /* Line 1806 of yacc.c */ 9054 #line 28 45"parser.yy"9071 #line 2850 "parser.yy" 9055 9072 { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); } 9056 9073 break; … … 9059 9076 9060 9077 /* Line 1806 of yacc.c */ 9061 #line 28 69"parser.yy"9078 #line 2874 "parser.yy" 9062 9079 { (yyval.en) = 0; } 9063 9080 break; … … 9066 9083 9067 9084 /* Line 1806 of yacc.c */ 9068 #line 287 1"parser.yy"9085 #line 2876 "parser.yy" 9069 9086 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9070 9087 break; … … 9073 9090 9074 9091 /* Line 1806 of yacc.c */ 9075 #line 90 76"Parser/parser.cc"9092 #line 9093 "Parser/parser.cc" 9076 9093 default: break; 9077 9094 } … … 9304 9321 9305 9322 /* Line 2067 of yacc.c */ 9306 #line 287 4"parser.yy"9323 #line 2879 "parser.yy" 9307 9324 9308 9325 // ----end of grammar---- -
src/Parser/parser.yy
rdc86541 r8780e30 199 199 200 200 %type<decl> field_declaration field_declaration_list field_declarator field_declaring_list 201 %type<en> field field_list field_name 201 %type<en> field field_list field_name fraction_constants 202 202 203 203 %type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr … … 385 385 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); } 386 386 | postfix_expression REALFRACTIONconstant // CFA, tuple index 387 { $$ = new ExpressionNode( build_fieldSel( $1, build_ constantInteger( *$2 ) ) ); }387 { $$ = new ExpressionNode( build_fieldSel( $1, build_field_name_REALFRACTIONconstant( *$2 ) ) ); } 388 388 | postfix_expression ARROW no_attr_identifier 389 389 { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); } … … 424 424 field_name 425 425 | REALDECIMALconstant field 426 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_ constantInteger( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); }426 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); } 427 427 | REALDECIMALconstant '[' push field_list pop ']' 428 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_ constantInteger( *$1 ) ), build_tuple( $4 ) ) ); }428 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *$1 ) ), build_tuple( $4 ) ) ); } 429 429 | field_name '.' field 430 430 { $$ = new ExpressionNode( build_fieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); } … … 437 437 ; 438 438 439 field_name: // ... use $2439 field_name: 440 440 INTEGERconstant fraction_constants 441 { $$ = new ExpressionNode( build_ constantInteger( *$1) ); }441 { $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *$1 ), $2 ) ); } 442 442 | FLOATINGconstant fraction_constants 443 { $$ = new ExpressionNode( build_ constantInteger( *$1) ); }443 { $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); } 444 444 | no_attr_identifier fraction_constants 445 { $$ = new ExpressionNode( build_ varref( $1) ); }445 { $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); } 446 446 ; 447 447 448 448 fraction_constants: 449 449 // empty 450 { $$ = nullptr; } 450 451 | fraction_constants REALFRACTIONconstant 452 { 453 Expression * constant = build_field_name_REALFRACTIONconstant( *$2 ); 454 $$ = $1 != nullptr ? new ExpressionNode( build_fieldSel( $1, constant ) ) : new ExpressionNode( constant ); 455 } 451 456 ; 452 457
Note:
See TracChangeset
for help on using the changeset viewer.