Changeset 3b58d91
- Timestamp:
- Sep 8, 2016, 10:51:07 AM (7 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:
- cd14861
- Parents:
- 4e7f0f1
- Location:
- src
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
r4e7f0f1 r3b58d91 200 200 } 201 201 202 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) { 203 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) ); 204 delete member; 205 return ret; 206 } 207 208 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) { 202 Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) { 203 UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) ); 204 return ret; 205 } 206 207 Expression *build_pfieldSel( ExpressionNode *expr_node, Expression *member ) { 209 208 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 210 209 deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) ); 211 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref ); 212 delete member; 210 UntypedMemberExpr *ret = new UntypedMemberExpr( member, deref ); 213 211 return ret; 214 212 } -
src/Parser/ParseNode.h
r4e7f0f1 r3b58d91 165 165 166 166 Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node ); 167 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr*member );168 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr*member );167 Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ); 168 Expression *build_pfieldSel( ExpressionNode *expr_node, Expression *member ); 169 169 Expression *build_addressOf( ExpressionNode *expr_node ); 170 170 Expression *build_sizeOfexpr( ExpressionNode *expr_node ); -
src/Parser/parser.cc
r4e7f0f1 r3b58d91 1023 1023 0, 300, 300, 304, 311, 312, 313, 317, 318, 319, 1024 1024 323, 324, 328, 329, 333, 334, 338, 342, 343, 354, 1025 356, 358, 360, 365, 366, 372, 376, 378, 3 79, 381,1026 38 2, 384, 386, 388, 397, 398, 404, 405, 409, 410,1027 41 4, 418, 420, 422, 424, 429, 432, 434, 436, 441,1028 45 4, 456, 458, 460, 462, 464, 466, 468, 470, 472,1029 47 4, 481, 482, 488, 489, 490, 491, 495, 496, 498,1030 50 3, 504, 506, 508, 513, 514, 516, 521, 522, 524,1031 5 29, 530, 532, 534, 536, 541, 542, 544, 549, 550,1032 55 5, 556, 561, 562, 567, 568, 573, 574, 579, 580,1033 58 3, 585, 590, 595, 596, 598, 604, 605, 609, 610,1034 61 1, 612, 613, 614, 615, 616, 617, 618, 619, 620,1035 62 6, 628, 630, 632, 637, 638, 643, 644, 650, 651,1036 65 7, 658, 659, 660, 661, 662, 663, 664, 665, 675,1037 68 2, 684, 694, 695, 700, 702, 708, 710, 714, 715,1038 72 0, 725, 728, 730, 732, 742, 744, 755, 756, 758,1039 76 2, 764, 768, 769, 774, 775, 779, 784, 785, 789,1040 79 1, 797, 798, 802, 804, 806, 808, 814, 815, 819,1041 82 1, 826, 828, 830, 835, 837, 842, 844, 848, 851,1042 85 5, 858, 862, 864, 866, 868, 873, 875, 877, 882,1043 88 4, 886, 888, 890, 895, 897, 899, 901, 906, 918,1044 9 19, 924, 926, 931, 935, 937, 939, 941, 943, 949,1045 95 0, 956, 957, 961, 962, 967, 969, 975, 976, 978,1046 98 3, 988, 998, 1000, 1004, 1005, 1010, 1012, 1016, 1017,1047 102 1, 1023, 1027, 1028, 1032, 1033, 1037, 1038, 1053, 1054,1048 105 5, 1056, 1057, 1061, 1066, 1073, 1083, 1088, 1093, 1101,1049 110 6, 1111, 1116, 1121, 1129, 1151, 1156, 1163, 1165, 1172,1050 117 7, 1182, 1193, 1198, 1203, 1208, 1213, 1222, 1227, 1235,1051 123 6, 1237, 1238, 1244, 1249, 1257, 1258, 1259, 1260, 1264,1052 126 5, 1266, 1267, 1272, 1273, 1282, 1283, 1288, 1289, 1294,1053 129 6, 1298, 1300, 1302, 1305, 1304, 1316, 1317, 1319, 1329,1054 133 0, 1335, 1337, 1339, 1341, 1343, 1346, 1348, 1351, 1356,1055 13 58, 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376,1056 13 78, 1380, 1386, 1387, 1389, 1391, 1393, 1398, 1399, 1405,1057 140 6, 1408, 1410, 1415, 1417, 1419, 1421, 1426, 1427, 1429,1058 143 1, 1436, 1437, 1439, 1444, 1445, 1447, 1449, 1454, 1456,1059 14 58, 1463, 1464, 1468, 1470, 1476, 1475, 1479, 1481, 1486,1060 14 88, 1494, 1495, 1500, 1501, 1503, 1504, 1513, 1514, 1516,1061 15 18, 1523, 1525, 1531, 1532, 1534, 1537, 1540, 1545, 1546,1062 155 1, 1556, 1560, 1562, 1568, 1567, 1574, 1576, 1582, 1583,1063 159 1, 1592, 1596, 1597, 1598, 1600, 1602, 1609, 1610, 1612,1064 161 4, 1619, 1620, 1626, 1627, 1631, 1632, 1637, 1638, 1639,1065 164 1, 1649, 1650, 1652, 1655, 1657, 1661, 1662, 1663, 1665,1066 166 7, 1671, 1676, 1684, 1685, 1694, 1696, 1701, 1702, 1703,1067 170 7, 1708, 1709, 1713, 1714, 1715, 1719, 1720, 1721, 1726,1068 172 7, 1728, 1729, 1735, 1736, 1738, 1743, 1744, 1749, 1750,1069 175 1, 1752, 1753, 1768, 1769, 1774, 1775, 1781, 1783, 1786,1070 17 88, 1790, 1813, 1814, 1816, 1818, 1823, 1824, 1826, 1831,1071 183 6, 1837, 1843, 1842, 1846, 1850, 1852, 1854, 1860, 1861,1072 186 6, 1871, 1873, 1878, 1880, 1881, 1883, 1888, 1890, 1892,1073 189 7, 1899, 1904, 1909, 1917, 1923, 1922, 1936, 1937, 1942,1074 194 3, 1947, 1952, 1957, 1965, 1970, 1981, 1982, 1987, 1988,1075 199 4, 1995, 1999, 2000, 2001, 2004, 2003, 2014, 2023, 2029,1076 203 5, 2044, 2050, 2056, 2062, 2068, 2076, 2082, 2090, 2096,1077 210 5, 2106, 2107, 2111, 2115, 2117, 2122, 2123, 2127, 2128,1078 213 3, 2139, 2140, 2143, 2145, 2146, 2150, 2151, 2152, 2153,1079 218 7, 2189, 2190, 2192, 2197, 2202, 2207, 2209, 2211, 2216,1080 22 18, 2220, 2222, 2227, 2229, 2238, 2240, 2241, 2246, 2248,1081 225 0, 2255, 2257, 2259, 2264, 2266, 2268, 2277, 2278, 2279,1082 228 3, 2285, 2287, 2292, 2294, 2296, 2301, 2303, 2305, 2320,1083 232 2, 2323, 2325, 2330, 2331, 2336, 2338, 2340, 2345, 2347,1084 23 49, 2351, 2356, 2358, 2360, 2370, 2372, 2373, 2375, 2380,1085 238 2, 2384, 2389, 2391, 2393, 2395, 2400, 2402, 2404, 2435,1086 243 7, 2438, 2440, 2445, 2450, 2458, 2460, 2462, 2467, 2469,1087 247 4, 2476, 2490, 2491, 2493, 2498, 2500, 2502, 2504, 2506,1088 251 1, 2512, 2514, 2516, 2521, 2523, 2525, 2531, 2533, 2535,1089 25 39, 2541, 2543, 2545, 2559, 2560, 2562, 2567, 2569, 2571,1090 257 3, 2575, 2580, 2581, 2583, 2585, 2590, 2592, 2594, 2600,1091 260 1, 2603, 2612, 2615, 2617, 2620, 2622, 2624, 2637, 2638,1092 264 0, 2645, 2647, 2649, 2651, 2653, 2658, 2659, 2661, 2663,1093 26 68, 2670, 2678, 2679, 2680, 2685, 2686, 2690, 2692, 2694,1094 269 6, 2698, 2700, 2707, 2709, 2711, 2713, 2715, 2717, 2719,1095 272 1, 2723, 2725, 2730, 2732, 2734, 2739, 2765, 2766, 2768,1096 277 2, 2773, 2777, 2779, 2781, 2783, 2785, 2787, 2794, 2796,1097 2 798, 2800, 2802, 2804, 2809, 2814, 2816, 2818, 2836, 2838,1098 284 3, 28441025 356, 358, 360, 365, 366, 372, 376, 378, 380, 382, 1026 384, 386, 388, 390, 399, 400, 406, 407, 411, 412, 1027 416, 420, 422, 424, 426, 431, 434, 436, 438, 443, 1028 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 1029 476, 483, 484, 490, 491, 492, 493, 497, 498, 500, 1030 505, 506, 508, 510, 515, 516, 518, 523, 524, 526, 1031 531, 532, 534, 536, 538, 543, 544, 546, 551, 552, 1032 557, 558, 563, 564, 569, 570, 575, 576, 581, 582, 1033 585, 587, 592, 597, 598, 600, 606, 607, 611, 612, 1034 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 1035 628, 630, 632, 634, 639, 640, 645, 646, 652, 653, 1036 659, 660, 661, 662, 663, 664, 665, 666, 667, 677, 1037 684, 686, 696, 697, 702, 704, 710, 712, 716, 717, 1038 722, 727, 730, 732, 734, 744, 746, 757, 758, 760, 1039 764, 766, 770, 771, 776, 777, 781, 786, 787, 791, 1040 793, 799, 800, 804, 806, 808, 810, 816, 817, 821, 1041 823, 828, 830, 832, 837, 839, 844, 846, 850, 853, 1042 857, 860, 864, 866, 868, 870, 875, 877, 879, 884, 1043 886, 888, 890, 892, 897, 899, 901, 903, 908, 920, 1044 921, 926, 928, 933, 937, 939, 941, 943, 945, 951, 1045 952, 958, 959, 963, 964, 969, 971, 977, 978, 980, 1046 985, 990, 1000, 1002, 1006, 1007, 1012, 1014, 1018, 1019, 1047 1023, 1025, 1029, 1030, 1034, 1035, 1039, 1040, 1055, 1056, 1048 1057, 1058, 1059, 1063, 1068, 1075, 1085, 1090, 1095, 1103, 1049 1108, 1113, 1118, 1123, 1131, 1153, 1158, 1165, 1167, 1174, 1050 1179, 1184, 1195, 1200, 1205, 1210, 1215, 1224, 1229, 1237, 1051 1238, 1239, 1240, 1246, 1251, 1259, 1260, 1261, 1262, 1266, 1052 1267, 1268, 1269, 1274, 1275, 1284, 1285, 1290, 1291, 1296, 1053 1298, 1300, 1302, 1304, 1307, 1306, 1318, 1319, 1321, 1331, 1054 1332, 1337, 1339, 1341, 1343, 1345, 1348, 1350, 1353, 1358, 1055 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1056 1380, 1382, 1388, 1389, 1391, 1393, 1395, 1400, 1401, 1407, 1057 1408, 1410, 1412, 1417, 1419, 1421, 1423, 1428, 1429, 1431, 1058 1433, 1438, 1439, 1441, 1446, 1447, 1449, 1451, 1456, 1458, 1059 1460, 1465, 1466, 1470, 1472, 1478, 1477, 1481, 1483, 1488, 1060 1490, 1496, 1497, 1502, 1503, 1505, 1506, 1515, 1516, 1518, 1061 1520, 1525, 1527, 1533, 1534, 1536, 1539, 1542, 1547, 1548, 1062 1553, 1558, 1562, 1564, 1570, 1569, 1576, 1578, 1584, 1585, 1063 1593, 1594, 1598, 1599, 1600, 1602, 1604, 1611, 1612, 1614, 1064 1616, 1621, 1622, 1628, 1629, 1633, 1634, 1639, 1640, 1641, 1065 1643, 1651, 1652, 1654, 1657, 1659, 1663, 1664, 1665, 1667, 1066 1669, 1673, 1678, 1686, 1687, 1696, 1698, 1703, 1704, 1705, 1067 1709, 1710, 1711, 1715, 1716, 1717, 1721, 1722, 1723, 1728, 1068 1729, 1730, 1731, 1737, 1738, 1740, 1745, 1746, 1751, 1752, 1069 1753, 1754, 1755, 1770, 1771, 1776, 1777, 1783, 1785, 1788, 1070 1790, 1792, 1815, 1816, 1818, 1820, 1825, 1826, 1828, 1833, 1071 1838, 1839, 1845, 1844, 1848, 1852, 1854, 1856, 1862, 1863, 1072 1868, 1873, 1875, 1880, 1882, 1883, 1885, 1890, 1892, 1894, 1073 1899, 1901, 1906, 1911, 1919, 1925, 1924, 1938, 1939, 1944, 1074 1945, 1949, 1954, 1959, 1967, 1972, 1983, 1984, 1989, 1990, 1075 1996, 1997, 2001, 2002, 2003, 2006, 2005, 2016, 2025, 2031, 1076 2037, 2046, 2052, 2058, 2064, 2070, 2078, 2084, 2092, 2098, 1077 2107, 2108, 2109, 2113, 2117, 2119, 2124, 2125, 2129, 2130, 1078 2135, 2141, 2142, 2145, 2147, 2148, 2152, 2153, 2154, 2155, 1079 2189, 2191, 2192, 2194, 2199, 2204, 2209, 2211, 2213, 2218, 1080 2220, 2222, 2224, 2229, 2231, 2240, 2242, 2243, 2248, 2250, 1081 2252, 2257, 2259, 2261, 2266, 2268, 2270, 2279, 2280, 2281, 1082 2285, 2287, 2289, 2294, 2296, 2298, 2303, 2305, 2307, 2322, 1083 2324, 2325, 2327, 2332, 2333, 2338, 2340, 2342, 2347, 2349, 1084 2351, 2353, 2358, 2360, 2362, 2372, 2374, 2375, 2377, 2382, 1085 2384, 2386, 2391, 2393, 2395, 2397, 2402, 2404, 2406, 2437, 1086 2439, 2440, 2442, 2447, 2452, 2460, 2462, 2464, 2469, 2471, 1087 2476, 2478, 2492, 2493, 2495, 2500, 2502, 2504, 2506, 2508, 1088 2513, 2514, 2516, 2518, 2523, 2525, 2527, 2533, 2535, 2537, 1089 2541, 2543, 2545, 2547, 2561, 2562, 2564, 2569, 2571, 2573, 1090 2575, 2577, 2582, 2583, 2585, 2587, 2592, 2594, 2596, 2602, 1091 2603, 2605, 2614, 2617, 2619, 2622, 2624, 2626, 2639, 2640, 1092 2642, 2647, 2649, 2651, 2653, 2655, 2660, 2661, 2663, 2665, 1093 2670, 2672, 2680, 2681, 2682, 2687, 2688, 2692, 2694, 2696, 1094 2698, 2700, 2702, 2709, 2711, 2713, 2715, 2717, 2719, 2721, 1095 2723, 2725, 2727, 2732, 2734, 2736, 2741, 2767, 2768, 2770, 1096 2774, 2775, 2779, 2781, 2783, 2785, 2787, 2789, 2796, 2798, 1097 2800, 2802, 2804, 2806, 2811, 2816, 2818, 2820, 2838, 2840, 1098 2845, 2846 1099 1099 }; 1100 1100 #endif … … 5077 5077 break; 5078 5078 5079 case 27: 5080 5081 /* Line 1806 of yacc.c */ 5082 #line 379 "parser.yy" 5083 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); } 5084 break; 5085 5079 5086 case 28: 5080 5087 5081 5088 /* Line 1806 of yacc.c */ 5082 #line 38 0"parser.yy"5089 #line 381 "parser.yy" 5083 5090 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 5084 5091 break; 5085 5092 5093 case 29: 5094 5095 /* Line 1806 of yacc.c */ 5096 #line 383 "parser.yy" 5097 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); } 5098 break; 5099 5086 5100 case 30: 5087 5101 5088 5102 /* Line 1806 of yacc.c */ 5089 #line 38 3"parser.yy"5103 #line 385 "parser.yy" 5090 5104 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); } 5091 5105 break; … … 5094 5108 5095 5109 /* Line 1806 of yacc.c */ 5096 #line 38 5"parser.yy"5110 #line 387 "parser.yy" 5097 5111 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); } 5098 5112 break; … … 5101 5115 5102 5116 /* Line 1806 of yacc.c */ 5103 #line 38 7"parser.yy"5117 #line 389 "parser.yy" 5104 5118 { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); } 5105 5119 break; … … 5108 5122 5109 5123 /* Line 1806 of yacc.c */ 5110 #line 3 89"parser.yy"5124 #line 391 "parser.yy" 5111 5125 { 5112 5126 Token fn; … … 5119 5133 5120 5134 /* Line 1806 of yacc.c */ 5121 #line 399"parser.yy"5135 #line 401 "parser.yy" 5122 5136 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 5123 5137 break; … … 5126 5140 5127 5141 /* Line 1806 of yacc.c */ 5128 #line 40 4"parser.yy"5142 #line 406 "parser.yy" 5129 5143 { (yyval.en) = 0; } 5130 5144 break; … … 5133 5147 5134 5148 /* Line 1806 of yacc.c */ 5135 #line 41 0"parser.yy"5149 #line 412 "parser.yy" 5136 5150 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5137 5151 break; … … 5140 5154 5141 5155 /* Line 1806 of yacc.c */ 5142 #line 41 5"parser.yy"5156 #line 417 "parser.yy" 5143 5157 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5144 5158 break; … … 5147 5161 5148 5162 /* Line 1806 of yacc.c */ 5149 #line 4 19"parser.yy"5163 #line 421 "parser.yy" 5150 5164 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5151 5165 break; … … 5154 5168 5155 5169 /* Line 1806 of yacc.c */ 5156 #line 42 1"parser.yy"5170 #line 423 "parser.yy" 5157 5171 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5158 5172 break; … … 5161 5175 5162 5176 /* Line 1806 of yacc.c */ 5163 #line 42 3"parser.yy"5177 #line 425 "parser.yy" 5164 5178 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5165 5179 break; … … 5168 5182 5169 5183 /* Line 1806 of yacc.c */ 5170 #line 42 5"parser.yy"5184 #line 427 "parser.yy" 5171 5185 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5172 5186 break; … … 5175 5189 5176 5190 /* Line 1806 of yacc.c */ 5177 #line 43 3"parser.yy"5191 #line 435 "parser.yy" 5178 5192 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5179 5193 break; … … 5182 5196 5183 5197 /* Line 1806 of yacc.c */ 5184 #line 43 5"parser.yy"5198 #line 437 "parser.yy" 5185 5199 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 5186 5200 break; … … 5189 5203 5190 5204 /* Line 1806 of yacc.c */ 5191 #line 43 7"parser.yy"5205 #line 439 "parser.yy" 5192 5206 { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); } 5193 5207 break; … … 5196 5210 5197 5211 /* Line 1806 of yacc.c */ 5198 #line 44 2"parser.yy"5212 #line 444 "parser.yy" 5199 5213 { 5200 5214 switch ( (yyvsp[(1) - (2)].op) ) { … … 5214 5228 5215 5229 /* Line 1806 of yacc.c */ 5216 #line 45 5"parser.yy"5230 #line 457 "parser.yy" 5217 5231 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); } 5218 5232 break; … … 5221 5235 5222 5236 /* Line 1806 of yacc.c */ 5223 #line 45 7"parser.yy"5237 #line 459 "parser.yy" 5224 5238 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); } 5225 5239 break; … … 5228 5242 5229 5243 /* Line 1806 of yacc.c */ 5230 #line 4 59"parser.yy"5244 #line 461 "parser.yy" 5231 5245 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); } 5232 5246 break; … … 5235 5249 5236 5250 /* Line 1806 of yacc.c */ 5237 #line 46 1"parser.yy"5251 #line 463 "parser.yy" 5238 5252 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5239 5253 break; … … 5242 5256 5243 5257 /* Line 1806 of yacc.c */ 5244 #line 46 3"parser.yy"5258 #line 465 "parser.yy" 5245 5259 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); } 5246 5260 break; … … 5249 5263 5250 5264 /* Line 1806 of yacc.c */ 5251 #line 46 5"parser.yy"5265 #line 467 "parser.yy" 5252 5266 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5253 5267 break; … … 5256 5270 5257 5271 /* Line 1806 of yacc.c */ 5258 #line 46 7"parser.yy"5272 #line 469 "parser.yy" 5259 5273 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); } 5260 5274 break; … … 5263 5277 5264 5278 /* Line 1806 of yacc.c */ 5265 #line 4 69"parser.yy"5279 #line 471 "parser.yy" 5266 5280 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); } 5267 5281 break; … … 5270 5284 5271 5285 /* Line 1806 of yacc.c */ 5272 #line 47 1"parser.yy"5286 #line 473 "parser.yy" 5273 5287 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); } 5274 5288 break; … … 5277 5291 5278 5292 /* Line 1806 of yacc.c */ 5279 #line 47 3"parser.yy"5293 #line 475 "parser.yy" 5280 5294 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); } 5281 5295 break; … … 5284 5298 5285 5299 /* Line 1806 of yacc.c */ 5286 #line 47 5"parser.yy"5300 #line 477 "parser.yy" 5287 5301 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); } 5288 5302 break; … … 5291 5305 5292 5306 /* Line 1806 of yacc.c */ 5293 #line 48 1"parser.yy"5307 #line 483 "parser.yy" 5294 5308 { (yyval.op) = OperKinds::PointTo; } 5295 5309 break; … … 5298 5312 5299 5313 /* Line 1806 of yacc.c */ 5300 #line 48 2"parser.yy"5314 #line 484 "parser.yy" 5301 5315 { (yyval.op) = OperKinds::AddressOf; } 5302 5316 break; … … 5305 5319 5306 5320 /* Line 1806 of yacc.c */ 5307 #line 4 88"parser.yy"5321 #line 490 "parser.yy" 5308 5322 { (yyval.op) = OperKinds::UnPlus; } 5309 5323 break; … … 5312 5326 5313 5327 /* Line 1806 of yacc.c */ 5314 #line 4 89"parser.yy"5328 #line 491 "parser.yy" 5315 5329 { (yyval.op) = OperKinds::UnMinus; } 5316 5330 break; … … 5319 5333 5320 5334 /* Line 1806 of yacc.c */ 5321 #line 49 0"parser.yy"5335 #line 492 "parser.yy" 5322 5336 { (yyval.op) = OperKinds::Neg; } 5323 5337 break; … … 5326 5340 5327 5341 /* Line 1806 of yacc.c */ 5328 #line 49 1"parser.yy"5342 #line 493 "parser.yy" 5329 5343 { (yyval.op) = OperKinds::BitNeg; } 5330 5344 break; 5331 5345 5332 5346 case 68: 5333 5334 /* Line 1806 of yacc.c */5335 #line 497 "parser.yy"5336 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }5337 break;5338 5339 case 69:5340 5347 5341 5348 /* Line 1806 of yacc.c */ … … 5344 5351 break; 5345 5352 5353 case 69: 5354 5355 /* Line 1806 of yacc.c */ 5356 #line 501 "parser.yy" 5357 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5358 break; 5359 5346 5360 case 71: 5347 5361 5348 5362 /* Line 1806 of yacc.c */ 5349 #line 50 5"parser.yy"5363 #line 507 "parser.yy" 5350 5364 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5351 5365 break; … … 5354 5368 5355 5369 /* Line 1806 of yacc.c */ 5356 #line 50 7"parser.yy"5370 #line 509 "parser.yy" 5357 5371 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5358 5372 break; … … 5361 5375 5362 5376 /* Line 1806 of yacc.c */ 5363 #line 5 09"parser.yy"5377 #line 511 "parser.yy" 5364 5378 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5365 5379 break; … … 5368 5382 5369 5383 /* Line 1806 of yacc.c */ 5370 #line 51 5"parser.yy"5384 #line 517 "parser.yy" 5371 5385 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5372 5386 break; … … 5375 5389 5376 5390 /* Line 1806 of yacc.c */ 5377 #line 51 7"parser.yy"5391 #line 519 "parser.yy" 5378 5392 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5379 5393 break; … … 5382 5396 5383 5397 /* Line 1806 of yacc.c */ 5384 #line 52 3"parser.yy"5398 #line 525 "parser.yy" 5385 5399 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5386 5400 break; … … 5389 5403 5390 5404 /* Line 1806 of yacc.c */ 5391 #line 52 5"parser.yy"5405 #line 527 "parser.yy" 5392 5406 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5393 5407 break; … … 5396 5410 5397 5411 /* Line 1806 of yacc.c */ 5398 #line 53 1"parser.yy"5412 #line 533 "parser.yy" 5399 5413 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5400 5414 break; … … 5403 5417 5404 5418 /* Line 1806 of yacc.c */ 5405 #line 53 3"parser.yy"5419 #line 535 "parser.yy" 5406 5420 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5407 5421 break; … … 5410 5424 5411 5425 /* Line 1806 of yacc.c */ 5412 #line 53 5"parser.yy"5426 #line 537 "parser.yy" 5413 5427 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5414 5428 break; … … 5417 5431 5418 5432 /* Line 1806 of yacc.c */ 5419 #line 53 7"parser.yy"5433 #line 539 "parser.yy" 5420 5434 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5421 5435 break; … … 5424 5438 5425 5439 /* Line 1806 of yacc.c */ 5426 #line 54 3"parser.yy"5440 #line 545 "parser.yy" 5427 5441 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5428 5442 break; … … 5431 5445 5432 5446 /* Line 1806 of yacc.c */ 5433 #line 54 5"parser.yy"5447 #line 547 "parser.yy" 5434 5448 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5435 5449 break; … … 5438 5452 5439 5453 /* Line 1806 of yacc.c */ 5440 #line 55 1"parser.yy"5454 #line 553 "parser.yy" 5441 5455 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5442 5456 break; … … 5445 5459 5446 5460 /* Line 1806 of yacc.c */ 5447 #line 55 7"parser.yy"5461 #line 559 "parser.yy" 5448 5462 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5449 5463 break; … … 5452 5466 5453 5467 /* Line 1806 of yacc.c */ 5454 #line 56 3"parser.yy"5468 #line 565 "parser.yy" 5455 5469 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5456 5470 break; … … 5459 5473 5460 5474 /* Line 1806 of yacc.c */ 5461 #line 5 69"parser.yy"5475 #line 571 "parser.yy" 5462 5476 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); } 5463 5477 break; … … 5466 5480 5467 5481 /* Line 1806 of yacc.c */ 5468 #line 57 5"parser.yy"5482 #line 577 "parser.yy" 5469 5483 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); } 5470 5484 break; … … 5473 5487 5474 5488 /* Line 1806 of yacc.c */ 5475 #line 58 1"parser.yy"5489 #line 583 "parser.yy" 5476 5490 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5477 5491 break; … … 5480 5494 5481 5495 /* Line 1806 of yacc.c */ 5482 #line 58 4"parser.yy"5496 #line 586 "parser.yy" 5483 5497 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); } 5484 5498 break; … … 5487 5501 5488 5502 /* Line 1806 of yacc.c */ 5489 #line 58 6"parser.yy"5503 #line 588 "parser.yy" 5490 5504 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5491 5505 break; … … 5494 5508 5495 5509 /* Line 1806 of yacc.c */ 5496 #line 59 7"parser.yy"5510 #line 599 "parser.yy" 5497 5511 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5498 5512 break; … … 5501 5515 5502 5516 /* Line 1806 of yacc.c */ 5503 #line 599"parser.yy"5517 #line 601 "parser.yy" 5504 5518 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); } 5505 5519 break; … … 5508 5522 5509 5523 /* Line 1806 of yacc.c */ 5510 #line 60 4"parser.yy"5524 #line 606 "parser.yy" 5511 5525 { (yyval.en) = nullptr; } 5512 5526 break; … … 5515 5529 5516 5530 /* Line 1806 of yacc.c */ 5517 #line 6 09"parser.yy"5531 #line 611 "parser.yy" 5518 5532 { (yyval.op) = OperKinds::Assign; } 5519 5533 break; … … 5522 5536 5523 5537 /* Line 1806 of yacc.c */ 5524 #line 61 0"parser.yy"5538 #line 612 "parser.yy" 5525 5539 { (yyval.op) = OperKinds::AtAssn; } 5526 5540 break; … … 5529 5543 5530 5544 /* Line 1806 of yacc.c */ 5531 #line 61 1"parser.yy"5545 #line 613 "parser.yy" 5532 5546 { (yyval.op) = OperKinds::MulAssn; } 5533 5547 break; … … 5536 5550 5537 5551 /* Line 1806 of yacc.c */ 5538 #line 61 2"parser.yy"5552 #line 614 "parser.yy" 5539 5553 { (yyval.op) = OperKinds::DivAssn; } 5540 5554 break; … … 5543 5557 5544 5558 /* Line 1806 of yacc.c */ 5545 #line 61 3"parser.yy"5559 #line 615 "parser.yy" 5546 5560 { (yyval.op) = OperKinds::ModAssn; } 5547 5561 break; … … 5550 5564 5551 5565 /* Line 1806 of yacc.c */ 5552 #line 61 4"parser.yy"5566 #line 616 "parser.yy" 5553 5567 { (yyval.op) = OperKinds::PlusAssn; } 5554 5568 break; … … 5557 5571 5558 5572 /* Line 1806 of yacc.c */ 5559 #line 61 5"parser.yy"5573 #line 617 "parser.yy" 5560 5574 { (yyval.op) = OperKinds::MinusAssn; } 5561 5575 break; … … 5564 5578 5565 5579 /* Line 1806 of yacc.c */ 5566 #line 61 6"parser.yy"5580 #line 618 "parser.yy" 5567 5581 { (yyval.op) = OperKinds::LSAssn; } 5568 5582 break; … … 5571 5585 5572 5586 /* Line 1806 of yacc.c */ 5573 #line 61 7"parser.yy"5587 #line 619 "parser.yy" 5574 5588 { (yyval.op) = OperKinds::RSAssn; } 5575 5589 break; … … 5578 5592 5579 5593 /* Line 1806 of yacc.c */ 5580 #line 6 18"parser.yy"5594 #line 620 "parser.yy" 5581 5595 { (yyval.op) = OperKinds::AndAssn; } 5582 5596 break; … … 5585 5599 5586 5600 /* Line 1806 of yacc.c */ 5587 #line 6 19"parser.yy"5601 #line 621 "parser.yy" 5588 5602 { (yyval.op) = OperKinds::ERAssn; } 5589 5603 break; … … 5592 5606 5593 5607 /* Line 1806 of yacc.c */ 5594 #line 62 0"parser.yy"5608 #line 622 "parser.yy" 5595 5609 { (yyval.op) = OperKinds::OrAssn; } 5596 5610 break; … … 5599 5613 5600 5614 /* Line 1806 of yacc.c */ 5601 #line 62 7"parser.yy"5615 #line 629 "parser.yy" 5602 5616 { (yyval.en) = new ExpressionNode( build_tuple() ); } 5603 5617 break; … … 5606 5620 5607 5621 /* Line 1806 of yacc.c */ 5608 #line 6 29"parser.yy"5622 #line 631 "parser.yy" 5609 5623 { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); } 5610 5624 break; … … 5613 5627 5614 5628 /* Line 1806 of yacc.c */ 5615 #line 63 1"parser.yy"5629 #line 633 "parser.yy" 5616 5630 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); } 5617 5631 break; … … 5620 5634 5621 5635 /* Line 1806 of yacc.c */ 5622 #line 63 3"parser.yy"5636 #line 635 "parser.yy" 5623 5637 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); } 5624 5638 break; … … 5627 5641 5628 5642 /* Line 1806 of yacc.c */ 5629 #line 6 39"parser.yy"5643 #line 641 "parser.yy" 5630 5644 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5631 5645 break; … … 5634 5648 5635 5649 /* Line 1806 of yacc.c */ 5636 #line 64 5"parser.yy"5650 #line 647 "parser.yy" 5637 5651 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5638 5652 break; … … 5641 5655 5642 5656 /* Line 1806 of yacc.c */ 5643 #line 65 0"parser.yy"5657 #line 652 "parser.yy" 5644 5658 { (yyval.en) = 0; } 5645 5659 break; … … 5648 5662 5649 5663 /* Line 1806 of yacc.c */ 5650 #line 6 59"parser.yy"5664 #line 661 "parser.yy" 5651 5665 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5652 5666 break; … … 5655 5669 5656 5670 /* Line 1806 of yacc.c */ 5657 #line 66 6"parser.yy"5671 #line 668 "parser.yy" 5658 5672 { 5659 5673 Token fn; … … 5666 5680 5667 5681 /* Line 1806 of yacc.c */ 5668 #line 67 6"parser.yy"5682 #line 678 "parser.yy" 5669 5683 { 5670 5684 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5675 5689 5676 5690 /* Line 1806 of yacc.c */ 5677 #line 68 3"parser.yy"5691 #line 685 "parser.yy" 5678 5692 { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); } 5679 5693 break; … … 5682 5696 5683 5697 /* Line 1806 of yacc.c */ 5684 #line 69 0"parser.yy"5698 #line 692 "parser.yy" 5685 5699 { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); } 5686 5700 break; … … 5689 5703 5690 5704 /* Line 1806 of yacc.c */ 5691 #line 69 6"parser.yy"5705 #line 698 "parser.yy" 5692 5706 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5693 5707 break; … … 5696 5710 5697 5711 /* Line 1806 of yacc.c */ 5698 #line 70 1"parser.yy"5712 #line 703 "parser.yy" 5699 5713 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5700 5714 break; … … 5703 5717 5704 5718 /* Line 1806 of yacc.c */ 5705 #line 70 3"parser.yy"5719 #line 705 "parser.yy" 5706 5720 { // mark all fields in list 5707 5721 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 5714 5728 5715 5729 /* Line 1806 of yacc.c */ 5716 #line 7 09"parser.yy"5730 #line 711 "parser.yy" 5717 5731 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5718 5732 break; … … 5721 5735 5722 5736 /* Line 1806 of yacc.c */ 5723 #line 71 6"parser.yy"5737 #line 718 "parser.yy" 5724 5738 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5725 5739 break; … … 5728 5742 5729 5743 /* Line 1806 of yacc.c */ 5730 #line 72 1"parser.yy"5744 #line 723 "parser.yy" 5731 5745 { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); } 5732 5746 break; … … 5735 5749 5736 5750 /* Line 1806 of yacc.c */ 5737 #line 72 7"parser.yy"5751 #line 729 "parser.yy" 5738 5752 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); } 5739 5753 break; … … 5742 5756 5743 5757 /* Line 1806 of yacc.c */ 5744 #line 7 29"parser.yy"5758 #line 731 "parser.yy" 5745 5759 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); } 5746 5760 break; … … 5749 5763 5750 5764 /* Line 1806 of yacc.c */ 5751 #line 73 1"parser.yy"5765 #line 733 "parser.yy" 5752 5766 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5753 5767 break; … … 5756 5770 5757 5771 /* Line 1806 of yacc.c */ 5758 #line 73 3"parser.yy"5772 #line 735 "parser.yy" 5759 5773 { 5760 5774 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); … … 5771 5785 5772 5786 /* Line 1806 of yacc.c */ 5773 #line 74 3"parser.yy"5787 #line 745 "parser.yy" 5774 5788 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5775 5789 break; … … 5778 5792 5779 5793 /* Line 1806 of yacc.c */ 5780 #line 74 5"parser.yy"5794 #line 747 "parser.yy" 5781 5795 { 5782 5796 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); … … 5788 5802 5789 5803 /* Line 1806 of yacc.c */ 5790 #line 75 5"parser.yy"5804 #line 757 "parser.yy" 5791 5805 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5792 5806 break; … … 5795 5809 5796 5810 /* Line 1806 of yacc.c */ 5797 #line 75 7"parser.yy"5811 #line 759 "parser.yy" 5798 5812 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5799 5813 break; … … 5802 5816 5803 5817 /* Line 1806 of yacc.c */ 5804 #line 76 2"parser.yy"5818 #line 764 "parser.yy" 5805 5819 { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); } 5806 5820 break; … … 5809 5823 5810 5824 /* Line 1806 of yacc.c */ 5811 #line 76 4"parser.yy"5825 #line 766 "parser.yy" 5812 5826 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); } 5813 5827 break; … … 5816 5830 5817 5831 /* Line 1806 of yacc.c */ 5818 #line 7 68"parser.yy"5832 #line 770 "parser.yy" 5819 5833 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 5820 5834 break; … … 5823 5837 5824 5838 /* Line 1806 of yacc.c */ 5825 #line 7 69"parser.yy"5839 #line 771 "parser.yy" 5826 5840 { (yyval.sn) = new StatementNode( build_default() ); } 5827 5841 break; … … 5830 5844 5831 5845 /* Line 1806 of yacc.c */ 5832 #line 77 5"parser.yy"5846 #line 777 "parser.yy" 5833 5847 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); } 5834 5848 break; … … 5837 5851 5838 5852 /* Line 1806 of yacc.c */ 5839 #line 7 79"parser.yy"5853 #line 781 "parser.yy" 5840 5854 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5841 5855 break; … … 5844 5858 5845 5859 /* Line 1806 of yacc.c */ 5846 #line 78 4"parser.yy"5860 #line 786 "parser.yy" 5847 5861 { (yyval.sn) = 0; } 5848 5862 break; … … 5851 5865 5852 5866 /* Line 1806 of yacc.c */ 5853 #line 79 0"parser.yy"5867 #line 792 "parser.yy" 5854 5868 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5855 5869 break; … … 5858 5872 5859 5873 /* Line 1806 of yacc.c */ 5860 #line 79 2"parser.yy"5874 #line 794 "parser.yy" 5861 5875 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); } 5862 5876 break; … … 5865 5879 5866 5880 /* Line 1806 of yacc.c */ 5867 #line 79 7"parser.yy"5881 #line 799 "parser.yy" 5868 5882 { (yyval.sn) = 0; } 5869 5883 break; … … 5872 5886 5873 5887 /* Line 1806 of yacc.c */ 5874 #line 80 3"parser.yy"5888 #line 805 "parser.yy" 5875 5889 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5876 5890 break; … … 5879 5893 5880 5894 /* Line 1806 of yacc.c */ 5881 #line 80 5"parser.yy"5895 #line 807 "parser.yy" 5882 5896 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); } 5883 5897 break; … … 5886 5900 5887 5901 /* Line 1806 of yacc.c */ 5888 #line 80 7"parser.yy"5902 #line 809 "parser.yy" 5889 5903 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5890 5904 break; … … 5893 5907 5894 5908 /* Line 1806 of yacc.c */ 5895 #line 8 09"parser.yy"5909 #line 811 "parser.yy" 5896 5910 { (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) ) ) ) ) ) ); } 5897 5911 break; … … 5900 5914 5901 5915 /* Line 1806 of yacc.c */ 5902 #line 81 4"parser.yy"5916 #line 816 "parser.yy" 5903 5917 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5904 5918 break; 5905 5919 5906 5920 case 179: 5907 5908 /* Line 1806 of yacc.c */5909 #line 820 "parser.yy"5910 { (yyval.sn) = 0; }5911 break;5912 5913 case 180:5914 5921 5915 5922 /* Line 1806 of yacc.c */ … … 5918 5925 break; 5919 5926 5927 case 180: 5928 5929 /* Line 1806 of yacc.c */ 5930 #line 824 "parser.yy" 5931 { (yyval.sn) = 0; } 5932 break; 5933 5920 5934 case 181: 5921 5935 5922 5936 /* Line 1806 of yacc.c */ 5923 #line 82 7"parser.yy"5937 #line 829 "parser.yy" 5924 5938 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5925 5939 break; … … 5928 5942 5929 5943 /* Line 1806 of yacc.c */ 5930 #line 8 29"parser.yy"5944 #line 831 "parser.yy" 5931 5945 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); } 5932 5946 break; … … 5935 5949 5936 5950 /* Line 1806 of yacc.c */ 5937 #line 83 1"parser.yy"5951 #line 833 "parser.yy" 5938 5952 { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); } 5939 5953 break; … … 5942 5956 5943 5957 /* Line 1806 of yacc.c */ 5944 #line 83 6"parser.yy"5958 #line 838 "parser.yy" 5945 5959 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5946 5960 break; … … 5949 5963 5950 5964 /* Line 1806 of yacc.c */ 5951 #line 8 38"parser.yy"5965 #line 840 "parser.yy" 5952 5966 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5953 5967 break; … … 5956 5970 5957 5971 /* Line 1806 of yacc.c */ 5958 #line 84 3"parser.yy"5972 #line 845 "parser.yy" 5959 5973 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); } 5960 5974 break; … … 5963 5977 5964 5978 /* Line 1806 of yacc.c */ 5965 #line 84 7"parser.yy"5979 #line 849 "parser.yy" 5966 5980 { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); } 5967 5981 break; … … 5970 5984 5971 5985 /* Line 1806 of yacc.c */ 5972 #line 85 0"parser.yy"5986 #line 852 "parser.yy" 5973 5987 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); } 5974 5988 break; … … 5977 5991 5978 5992 /* Line 1806 of yacc.c */ 5979 #line 85 4"parser.yy"5993 #line 856 "parser.yy" 5980 5994 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); } 5981 5995 break; … … 5984 5998 5985 5999 /* Line 1806 of yacc.c */ 5986 #line 85 7"parser.yy"6000 #line 859 "parser.yy" 5987 6001 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5988 6002 break; … … 5991 6005 5992 6006 /* Line 1806 of yacc.c */ 5993 #line 86 1"parser.yy"6007 #line 863 "parser.yy" 5994 6008 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); } 5995 6009 break; … … 5998 6012 5999 6013 /* Line 1806 of yacc.c */ 6000 #line 86 3"parser.yy"6014 #line 865 "parser.yy" 6001 6015 { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); } 6002 6016 break; 6003 6017 6004 6018 case 193: 6005 6006 /* Line 1806 of yacc.c */6007 #line 865 "parser.yy"6008 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }6009 break;6010 6011 case 194:6012 6019 6013 6020 /* Line 1806 of yacc.c */ … … 6016 6023 break; 6017 6024 6025 case 194: 6026 6027 /* Line 1806 of yacc.c */ 6028 #line 869 "parser.yy" 6029 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 6030 break; 6031 6018 6032 case 195: 6019 6033 6020 6034 /* Line 1806 of yacc.c */ 6021 #line 8 69"parser.yy"6035 #line 871 "parser.yy" 6022 6036 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); } 6023 6037 break; … … 6026 6040 6027 6041 /* Line 1806 of yacc.c */ 6028 #line 87 4"parser.yy"6042 #line 876 "parser.yy" 6029 6043 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); } 6030 6044 break; … … 6033 6047 6034 6048 /* Line 1806 of yacc.c */ 6035 #line 87 6"parser.yy"6049 #line 878 "parser.yy" 6036 6050 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); } 6037 6051 break; … … 6040 6054 6041 6055 /* Line 1806 of yacc.c */ 6042 #line 8 78"parser.yy"6056 #line 880 "parser.yy" 6043 6057 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); } 6044 6058 break; … … 6047 6061 6048 6062 /* Line 1806 of yacc.c */ 6049 #line 88 5"parser.yy"6063 #line 887 "parser.yy" 6050 6064 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 6051 6065 break; … … 6054 6068 6055 6069 /* Line 1806 of yacc.c */ 6056 #line 88 7"parser.yy"6070 #line 889 "parser.yy" 6057 6071 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 6058 6072 break; … … 6061 6075 6062 6076 /* Line 1806 of yacc.c */ 6063 #line 8 89"parser.yy"6077 #line 891 "parser.yy" 6064 6078 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 6065 6079 break; … … 6068 6082 6069 6083 /* Line 1806 of yacc.c */ 6070 #line 89 1"parser.yy"6084 #line 893 "parser.yy" 6071 6085 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 6072 6086 break; … … 6075 6089 6076 6090 /* Line 1806 of yacc.c */ 6077 #line 89 6"parser.yy"6091 #line 898 "parser.yy" 6078 6092 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 6079 6093 break; … … 6082 6096 6083 6097 /* Line 1806 of yacc.c */ 6084 #line 898"parser.yy"6098 #line 900 "parser.yy" 6085 6099 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 6086 6100 break; … … 6089 6103 6090 6104 /* Line 1806 of yacc.c */ 6091 #line 90 0"parser.yy"6105 #line 902 "parser.yy" 6092 6106 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 6093 6107 break; … … 6096 6110 6097 6111 /* Line 1806 of yacc.c */ 6098 #line 90 2"parser.yy"6112 #line 904 "parser.yy" 6099 6113 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 6100 6114 break; … … 6103 6117 6104 6118 /* Line 1806 of yacc.c */ 6105 #line 90 7"parser.yy"6119 #line 909 "parser.yy" 6106 6120 { 6107 6121 (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) ); … … 6112 6126 6113 6127 /* Line 1806 of yacc.c */ 6114 #line 92 0"parser.yy"6128 #line 922 "parser.yy" 6115 6129 { 6116 6130 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6122 6136 6123 6137 /* Line 1806 of yacc.c */ 6124 #line 92 5"parser.yy"6138 #line 927 "parser.yy" 6125 6139 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6126 6140 break; … … 6129 6143 6130 6144 /* Line 1806 of yacc.c */ 6131 #line 92 7"parser.yy"6145 #line 929 "parser.yy" 6132 6146 { 6133 6147 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6139 6153 6140 6154 /* Line 1806 of yacc.c */ 6141 #line 93 6"parser.yy"6155 #line 938 "parser.yy" 6142 6156 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); } 6143 6157 break; … … 6146 6160 6147 6161 /* Line 1806 of yacc.c */ 6148 #line 9 38"parser.yy"6162 #line 940 "parser.yy" 6149 6163 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); } 6150 6164 break; … … 6153 6167 6154 6168 /* Line 1806 of yacc.c */ 6155 #line 94 0"parser.yy"6169 #line 942 "parser.yy" 6156 6170 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); } 6157 6171 break; … … 6160 6174 6161 6175 /* Line 1806 of yacc.c */ 6162 #line 94 2"parser.yy"6176 #line 944 "parser.yy" 6163 6177 { (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) ) ); } 6164 6178 break; … … 6167 6181 6168 6182 /* Line 1806 of yacc.c */ 6169 #line 94 4"parser.yy"6183 #line 946 "parser.yy" 6170 6184 { (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) ) ); } 6171 6185 break; … … 6174 6188 6175 6189 /* Line 1806 of yacc.c */ 6176 #line 9 49"parser.yy"6190 #line 951 "parser.yy" 6177 6191 { (yyval.flag) = false; } 6178 6192 break; … … 6181 6195 6182 6196 /* Line 1806 of yacc.c */ 6183 #line 95 1"parser.yy"6197 #line 953 "parser.yy" 6184 6198 { (yyval.flag) = true; } 6185 6199 break; … … 6188 6202 6189 6203 /* Line 1806 of yacc.c */ 6190 #line 95 6"parser.yy"6204 #line 958 "parser.yy" 6191 6205 { (yyval.en) = 0; } 6192 6206 break; … … 6195 6209 6196 6210 /* Line 1806 of yacc.c */ 6197 #line 96 3"parser.yy"6211 #line 965 "parser.yy" 6198 6212 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 6199 6213 break; … … 6202 6216 6203 6217 /* Line 1806 of yacc.c */ 6204 #line 9 68"parser.yy"6218 #line 970 "parser.yy" 6205 6219 { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); } 6206 6220 break; … … 6209 6223 6210 6224 /* Line 1806 of yacc.c */ 6211 #line 97 0"parser.yy"6225 #line 972 "parser.yy" 6212 6226 { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); } 6213 6227 break; … … 6216 6230 6217 6231 /* Line 1806 of yacc.c */ 6218 #line 97 5"parser.yy"6232 #line 977 "parser.yy" 6219 6233 { (yyval.en) = 0; } 6220 6234 break; … … 6223 6237 6224 6238 /* Line 1806 of yacc.c */ 6225 #line 97 7"parser.yy"6239 #line 979 "parser.yy" 6226 6240 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 6227 6241 break; … … 6230 6244 6231 6245 /* Line 1806 of yacc.c */ 6232 #line 9 79"parser.yy"6246 #line 981 "parser.yy" 6233 6247 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 6234 6248 break; … … 6237 6251 6238 6252 /* Line 1806 of yacc.c */ 6239 #line 98 4"parser.yy"6253 #line 986 "parser.yy" 6240 6254 { 6241 6255 (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); … … 6247 6261 6248 6262 /* Line 1806 of yacc.c */ 6249 #line 9 89"parser.yy"6263 #line 991 "parser.yy" 6250 6264 { 6251 6265 (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); … … 6257 6271 6258 6272 /* Line 1806 of yacc.c */ 6259 #line 999"parser.yy"6273 #line 1001 "parser.yy" 6260 6274 { (yyval.decl) = 0; } 6261 6275 break; … … 6264 6278 6265 6279 /* Line 1806 of yacc.c */ 6266 #line 100 6"parser.yy"6280 #line 1008 "parser.yy" 6267 6281 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6268 6282 break; … … 6271 6285 6272 6286 /* Line 1806 of yacc.c */ 6273 #line 101 1"parser.yy"6287 #line 1013 "parser.yy" 6274 6288 { (yyval.decl) = 0; } 6275 6289 break; … … 6278 6292 6279 6293 /* Line 1806 of yacc.c */ 6280 #line 10 18"parser.yy"6294 #line 1020 "parser.yy" 6281 6295 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6282 6296 break; … … 6285 6299 6286 6300 /* Line 1806 of yacc.c */ 6287 #line 103 2"parser.yy"6301 #line 1034 "parser.yy" 6288 6302 {} 6289 6303 break; … … 6292 6306 6293 6307 /* Line 1806 of yacc.c */ 6294 #line 103 3"parser.yy"6308 #line 1035 "parser.yy" 6295 6309 {} 6296 6310 break; … … 6299 6313 6300 6314 /* Line 1806 of yacc.c */ 6301 #line 106 2"parser.yy"6315 #line 1064 "parser.yy" 6302 6316 { 6303 6317 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6309 6323 6310 6324 /* Line 1806 of yacc.c */ 6311 #line 10 69"parser.yy"6325 #line 1071 "parser.yy" 6312 6326 { 6313 6327 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6319 6333 6320 6334 /* Line 1806 of yacc.c */ 6321 #line 107 4"parser.yy"6335 #line 1076 "parser.yy" 6322 6336 { 6323 6337 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6329 6343 6330 6344 /* Line 1806 of yacc.c */ 6331 #line 108 4"parser.yy"6345 #line 1086 "parser.yy" 6332 6346 { 6333 6347 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6339 6353 6340 6354 /* Line 1806 of yacc.c */ 6341 #line 10 89"parser.yy"6355 #line 1091 "parser.yy" 6342 6356 { 6343 6357 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6349 6363 6350 6364 /* Line 1806 of yacc.c */ 6351 #line 109 4"parser.yy"6365 #line 1096 "parser.yy" 6352 6366 { 6353 6367 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6359 6373 6360 6374 /* Line 1806 of yacc.c */ 6361 #line 110 2"parser.yy"6375 #line 1104 "parser.yy" 6362 6376 { 6363 6377 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6369 6383 6370 6384 /* Line 1806 of yacc.c */ 6371 #line 110 7"parser.yy"6385 #line 1109 "parser.yy" 6372 6386 { 6373 6387 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6379 6393 6380 6394 /* Line 1806 of yacc.c */ 6381 #line 111 2"parser.yy"6395 #line 1114 "parser.yy" 6382 6396 { 6383 6397 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6389 6403 6390 6404 /* Line 1806 of yacc.c */ 6391 #line 111 7"parser.yy"6405 #line 1119 "parser.yy" 6392 6406 { 6393 6407 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6399 6413 6400 6414 /* Line 1806 of yacc.c */ 6401 #line 112 2"parser.yy"6415 #line 1124 "parser.yy" 6402 6416 { 6403 6417 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6409 6423 6410 6424 /* Line 1806 of yacc.c */ 6411 #line 113 0"parser.yy"6425 #line 1132 "parser.yy" 6412 6426 { 6413 6427 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6418 6432 6419 6433 /* Line 1806 of yacc.c */ 6420 #line 115 3"parser.yy"6434 #line 1155 "parser.yy" 6421 6435 { 6422 6436 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6427 6441 6428 6442 /* Line 1806 of yacc.c */ 6429 #line 115 7"parser.yy"6443 #line 1159 "parser.yy" 6430 6444 { 6431 6445 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6436 6450 6437 6451 /* Line 1806 of yacc.c */ 6438 #line 116 4"parser.yy"6452 #line 1166 "parser.yy" 6439 6453 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6440 6454 break; … … 6443 6457 6444 6458 /* Line 1806 of yacc.c */ 6445 #line 11 68"parser.yy"6459 #line 1170 "parser.yy" 6446 6460 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6447 6461 break; … … 6450 6464 6451 6465 /* Line 1806 of yacc.c */ 6452 #line 117 3"parser.yy"6466 #line 1175 "parser.yy" 6453 6467 { 6454 6468 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6460 6474 6461 6475 /* Line 1806 of yacc.c */ 6462 #line 11 78"parser.yy"6476 #line 1180 "parser.yy" 6463 6477 { 6464 6478 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6470 6484 6471 6485 /* Line 1806 of yacc.c */ 6472 #line 118 3"parser.yy"6486 #line 1185 "parser.yy" 6473 6487 { 6474 6488 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6480 6494 6481 6495 /* Line 1806 of yacc.c */ 6482 #line 119 4"parser.yy"6496 #line 1196 "parser.yy" 6483 6497 { 6484 6498 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6490 6504 6491 6505 /* Line 1806 of yacc.c */ 6492 #line 1 199"parser.yy"6506 #line 1201 "parser.yy" 6493 6507 { 6494 6508 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6500 6514 6501 6515 /* Line 1806 of yacc.c */ 6502 #line 120 4"parser.yy"6516 #line 1206 "parser.yy" 6503 6517 { 6504 6518 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6510 6524 6511 6525 /* Line 1806 of yacc.c */ 6512 #line 12 09"parser.yy"6526 #line 1211 "parser.yy" 6513 6527 { 6514 6528 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6520 6534 6521 6535 /* Line 1806 of yacc.c */ 6522 #line 121 4"parser.yy"6536 #line 1216 "parser.yy" 6523 6537 { 6524 6538 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6530 6544 6531 6545 /* Line 1806 of yacc.c */ 6532 #line 122 3"parser.yy"6546 #line 1225 "parser.yy" 6533 6547 { 6534 6548 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6540 6554 6541 6555 /* Line 1806 of yacc.c */ 6542 #line 12 28"parser.yy"6556 #line 1230 "parser.yy" 6543 6557 { 6544 6558 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6550 6564 6551 6565 /* Line 1806 of yacc.c */ 6552 #line 124 5"parser.yy"6566 #line 1247 "parser.yy" 6553 6567 { 6554 6568 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6560 6574 6561 6575 /* Line 1806 of yacc.c */ 6562 #line 125 0"parser.yy"6576 #line 1252 "parser.yy" 6563 6577 { 6564 6578 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6570 6584 6571 6585 /* Line 1806 of yacc.c */ 6572 #line 127 2"parser.yy"6586 #line 1274 "parser.yy" 6573 6587 { (yyval.decl) = 0; } 6574 6588 break; … … 6577 6591 6578 6592 /* Line 1806 of yacc.c */ 6579 #line 128 4"parser.yy"6593 #line 1286 "parser.yy" 6580 6594 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6581 6595 break; … … 6584 6598 6585 6599 /* Line 1806 of yacc.c */ 6586 #line 129 5"parser.yy"6600 #line 1297 "parser.yy" 6587 6601 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6588 6602 break; … … 6591 6605 6592 6606 /* Line 1806 of yacc.c */ 6593 #line 129 7"parser.yy"6607 #line 1299 "parser.yy" 6594 6608 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6595 6609 break; … … 6598 6612 6599 6613 /* Line 1806 of yacc.c */ 6600 #line 1 299"parser.yy"6614 #line 1301 "parser.yy" 6601 6615 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6602 6616 break; … … 6605 6619 6606 6620 /* Line 1806 of yacc.c */ 6607 #line 130 1"parser.yy"6621 #line 1303 "parser.yy" 6608 6622 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6609 6623 break; … … 6612 6626 6613 6627 /* Line 1806 of yacc.c */ 6614 #line 130 3"parser.yy"6628 #line 1305 "parser.yy" 6615 6629 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6616 6630 break; … … 6619 6633 6620 6634 /* Line 1806 of yacc.c */ 6621 #line 130 5"parser.yy"6635 #line 1307 "parser.yy" 6622 6636 { 6623 6637 typedefTable.enterScope(); … … 6628 6642 6629 6643 /* Line 1806 of yacc.c */ 6630 #line 13 09"parser.yy"6644 #line 1311 "parser.yy" 6631 6645 { 6632 6646 typedefTable.leaveScope(); … … 6638 6652 6639 6653 /* Line 1806 of yacc.c */ 6640 #line 13 18"parser.yy"6654 #line 1320 "parser.yy" 6641 6655 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6642 6656 break; … … 6645 6659 6646 6660 /* Line 1806 of yacc.c */ 6647 #line 132 0"parser.yy"6661 #line 1322 "parser.yy" 6648 6662 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6649 6663 break; … … 6652 6666 6653 6667 /* Line 1806 of yacc.c */ 6654 #line 133 1"parser.yy"6668 #line 1333 "parser.yy" 6655 6669 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6656 6670 break; … … 6659 6673 6660 6674 /* Line 1806 of yacc.c */ 6661 #line 133 6"parser.yy"6675 #line 1338 "parser.yy" 6662 6676 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6663 6677 break; … … 6666 6680 6667 6681 /* Line 1806 of yacc.c */ 6668 #line 13 38"parser.yy"6682 #line 1340 "parser.yy" 6669 6683 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6670 6684 break; … … 6673 6687 6674 6688 /* Line 1806 of yacc.c */ 6675 #line 134 0"parser.yy"6689 #line 1342 "parser.yy" 6676 6690 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6677 6691 break; … … 6680 6694 6681 6695 /* Line 1806 of yacc.c */ 6682 #line 134 2"parser.yy"6696 #line 1344 "parser.yy" 6683 6697 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6684 6698 break; … … 6687 6701 6688 6702 /* Line 1806 of yacc.c */ 6689 #line 134 5"parser.yy"6703 #line 1347 "parser.yy" 6690 6704 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; } 6691 6705 break; … … 6694 6708 6695 6709 /* Line 1806 of yacc.c */ 6696 #line 134 7"parser.yy"6710 #line 1349 "parser.yy" 6697 6711 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6698 6712 break; … … 6701 6715 6702 6716 /* Line 1806 of yacc.c */ 6703 #line 135 0"parser.yy"6717 #line 1352 "parser.yy" 6704 6718 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; } 6705 6719 break; … … 6708 6722 6709 6723 /* Line 1806 of yacc.c */ 6710 #line 135 2"parser.yy"6724 #line 1354 "parser.yy" 6711 6725 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6712 6726 break; … … 6715 6729 6716 6730 /* Line 1806 of yacc.c */ 6717 #line 135 7"parser.yy"6731 #line 1359 "parser.yy" 6718 6732 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6719 6733 break; … … 6722 6736 6723 6737 /* Line 1806 of yacc.c */ 6724 #line 13 59"parser.yy"6738 #line 1361 "parser.yy" 6725 6739 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6726 6740 break; … … 6729 6743 6730 6744 /* Line 1806 of yacc.c */ 6731 #line 136 1"parser.yy"6745 #line 1363 "parser.yy" 6732 6746 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6733 6747 break; … … 6736 6750 6737 6751 /* Line 1806 of yacc.c */ 6738 #line 136 3"parser.yy"6752 #line 1365 "parser.yy" 6739 6753 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6740 6754 break; … … 6743 6757 6744 6758 /* Line 1806 of yacc.c */ 6745 #line 136 5"parser.yy"6759 #line 1367 "parser.yy" 6746 6760 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6747 6761 break; … … 6750 6764 6751 6765 /* Line 1806 of yacc.c */ 6752 #line 136 7"parser.yy"6766 #line 1369 "parser.yy" 6753 6767 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6754 6768 break; … … 6757 6771 6758 6772 /* Line 1806 of yacc.c */ 6759 #line 13 69"parser.yy"6773 #line 1371 "parser.yy" 6760 6774 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6761 6775 break; … … 6764 6778 6765 6779 /* Line 1806 of yacc.c */ 6766 #line 137 1"parser.yy"6780 #line 1373 "parser.yy" 6767 6781 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6768 6782 break; … … 6771 6785 6772 6786 /* Line 1806 of yacc.c */ 6773 #line 137 3"parser.yy"6787 #line 1375 "parser.yy" 6774 6788 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6775 6789 break; … … 6778 6792 6779 6793 /* Line 1806 of yacc.c */ 6780 #line 137 5"parser.yy"6794 #line 1377 "parser.yy" 6781 6795 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6782 6796 break; … … 6785 6799 6786 6800 /* Line 1806 of yacc.c */ 6787 #line 137 7"parser.yy"6801 #line 1379 "parser.yy" 6788 6802 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6789 6803 break; … … 6792 6806 6793 6807 /* Line 1806 of yacc.c */ 6794 #line 13 79"parser.yy"6808 #line 1381 "parser.yy" 6795 6809 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6796 6810 break; … … 6799 6813 6800 6814 /* Line 1806 of yacc.c */ 6801 #line 138 1"parser.yy"6815 #line 1383 "parser.yy" 6802 6816 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 6803 6817 break; … … 6806 6820 6807 6821 /* Line 1806 of yacc.c */ 6808 #line 13 88"parser.yy"6822 #line 1390 "parser.yy" 6809 6823 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6810 6824 break; … … 6813 6827 6814 6828 /* Line 1806 of yacc.c */ 6815 #line 139 0"parser.yy"6829 #line 1392 "parser.yy" 6816 6830 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6817 6831 break; … … 6820 6834 6821 6835 /* Line 1806 of yacc.c */ 6822 #line 139 2"parser.yy"6836 #line 1394 "parser.yy" 6823 6837 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6824 6838 break; … … 6827 6841 6828 6842 /* Line 1806 of yacc.c */ 6829 #line 139 4"parser.yy"6843 #line 1396 "parser.yy" 6830 6844 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6831 6845 break; … … 6834 6848 6835 6849 /* Line 1806 of yacc.c */ 6836 #line 140 0"parser.yy"6850 #line 1402 "parser.yy" 6837 6851 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6838 6852 break; … … 6841 6855 6842 6856 /* Line 1806 of yacc.c */ 6843 #line 140 7"parser.yy"6857 #line 1409 "parser.yy" 6844 6858 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6845 6859 break; … … 6848 6862 6849 6863 /* Line 1806 of yacc.c */ 6850 #line 14 09"parser.yy"6864 #line 1411 "parser.yy" 6851 6865 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6852 6866 break; … … 6855 6869 6856 6870 /* Line 1806 of yacc.c */ 6857 #line 141 1"parser.yy"6871 #line 1413 "parser.yy" 6858 6872 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6859 6873 break; … … 6862 6876 6863 6877 /* Line 1806 of yacc.c */ 6864 #line 141 6"parser.yy"6878 #line 1418 "parser.yy" 6865 6879 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6866 6880 break; … … 6869 6883 6870 6884 /* Line 1806 of yacc.c */ 6871 #line 14 18"parser.yy"6885 #line 1420 "parser.yy" 6872 6886 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6873 6887 break; … … 6876 6890 6877 6891 /* Line 1806 of yacc.c */ 6878 #line 142 0"parser.yy"6892 #line 1422 "parser.yy" 6879 6893 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6880 6894 break; … … 6883 6897 6884 6898 /* Line 1806 of yacc.c */ 6885 #line 142 2"parser.yy"6899 #line 1424 "parser.yy" 6886 6900 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6887 6901 break; … … 6890 6904 6891 6905 /* Line 1806 of yacc.c */ 6892 #line 14 28"parser.yy"6906 #line 1430 "parser.yy" 6893 6907 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6894 6908 break; … … 6897 6911 6898 6912 /* Line 1806 of yacc.c */ 6899 #line 143 0"parser.yy"6913 #line 1432 "parser.yy" 6900 6914 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6901 6915 break; … … 6904 6918 6905 6919 /* Line 1806 of yacc.c */ 6906 #line 143 2"parser.yy"6920 #line 1434 "parser.yy" 6907 6921 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6908 6922 break; … … 6911 6925 6912 6926 /* Line 1806 of yacc.c */ 6913 #line 14 38"parser.yy"6927 #line 1440 "parser.yy" 6914 6928 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6915 6929 break; … … 6918 6932 6919 6933 /* Line 1806 of yacc.c */ 6920 #line 144 0"parser.yy"6934 #line 1442 "parser.yy" 6921 6935 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6922 6936 break; … … 6925 6939 6926 6940 /* Line 1806 of yacc.c */ 6927 #line 144 6"parser.yy"6941 #line 1448 "parser.yy" 6928 6942 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6929 6943 break; … … 6932 6946 6933 6947 /* Line 1806 of yacc.c */ 6934 #line 14 48"parser.yy"6948 #line 1450 "parser.yy" 6935 6949 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6936 6950 break; … … 6939 6953 6940 6954 /* Line 1806 of yacc.c */ 6941 #line 145 0"parser.yy"6955 #line 1452 "parser.yy" 6942 6956 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6943 6957 break; … … 6946 6960 6947 6961 /* Line 1806 of yacc.c */ 6948 #line 145 5"parser.yy"6962 #line 1457 "parser.yy" 6949 6963 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6950 6964 break; … … 6953 6967 6954 6968 /* Line 1806 of yacc.c */ 6955 #line 145 7"parser.yy"6969 #line 1459 "parser.yy" 6956 6970 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6957 6971 break; … … 6960 6974 6961 6975 /* Line 1806 of yacc.c */ 6962 #line 14 59"parser.yy"6976 #line 1461 "parser.yy" 6963 6977 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6964 6978 break; … … 6967 6981 6968 6982 /* Line 1806 of yacc.c */ 6969 #line 14 69"parser.yy"6983 #line 1471 "parser.yy" 6970 6984 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); } 6971 6985 break; … … 6974 6988 6975 6989 /* Line 1806 of yacc.c */ 6976 #line 147 1"parser.yy"6990 #line 1473 "parser.yy" 6977 6991 { 6978 6992 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 6984 6998 6985 6999 /* Line 1806 of yacc.c */ 6986 #line 147 6"parser.yy"7000 #line 1478 "parser.yy" 6987 7001 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 6988 7002 break; … … 6991 7005 6992 7006 /* Line 1806 of yacc.c */ 6993 #line 14 78"parser.yy"7007 #line 1480 "parser.yy" 6994 7008 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); } 6995 7009 break; … … 6998 7012 6999 7013 /* Line 1806 of yacc.c */ 7000 #line 148 0"parser.yy"7014 #line 1482 "parser.yy" 7001 7015 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); } 7002 7016 break; … … 7005 7019 7006 7020 /* Line 1806 of yacc.c */ 7007 #line 148 2"parser.yy"7021 #line 1484 "parser.yy" 7008 7022 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7009 7023 break; … … 7012 7026 7013 7027 /* Line 1806 of yacc.c */ 7014 #line 148 7"parser.yy"7028 #line 1489 "parser.yy" 7015 7029 { (yyval.aggKey) = DeclarationNode::Struct; } 7016 7030 break; … … 7019 7033 7020 7034 /* Line 1806 of yacc.c */ 7021 #line 14 89"parser.yy"7035 #line 1491 "parser.yy" 7022 7036 { (yyval.aggKey) = DeclarationNode::Union; } 7023 7037 break; … … 7026 7040 7027 7041 /* Line 1806 of yacc.c */ 7028 #line 149 4"parser.yy"7042 #line 1496 "parser.yy" 7029 7043 { (yyval.decl) = 0; } 7030 7044 break; … … 7033 7047 7034 7048 /* Line 1806 of yacc.c */ 7035 #line 149 6"parser.yy"7049 #line 1498 "parser.yy" 7036 7050 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7037 7051 break; … … 7040 7054 7041 7055 /* Line 1806 of yacc.c */ 7042 #line 150 2"parser.yy"7056 #line 1504 "parser.yy" 7043 7057 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); } 7044 7058 break; … … 7047 7061 7048 7062 /* Line 1806 of yacc.c */ 7049 #line 150 5"parser.yy"7063 #line 1507 "parser.yy" 7050 7064 { // mark all fields in list 7051 7065 for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 7058 7072 7059 7073 /* Line 1806 of yacc.c */ 7060 #line 151 5"parser.yy"7074 #line 1517 "parser.yy" 7061 7075 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7062 7076 break; … … 7065 7079 7066 7080 /* Line 1806 of yacc.c */ 7067 #line 151 7"parser.yy"7081 #line 1519 "parser.yy" 7068 7082 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7069 7083 break; … … 7072 7086 7073 7087 /* Line 1806 of yacc.c */ 7074 #line 15 19"parser.yy"7088 #line 1521 "parser.yy" 7075 7089 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7076 7090 break; … … 7079 7093 7080 7094 /* Line 1806 of yacc.c */ 7081 #line 152 4"parser.yy"7095 #line 1526 "parser.yy" 7082 7096 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7083 7097 break; … … 7086 7100 7087 7101 /* Line 1806 of yacc.c */ 7088 #line 152 6"parser.yy"7102 #line 1528 "parser.yy" 7089 7103 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7090 7104 break; … … 7093 7107 7094 7108 /* Line 1806 of yacc.c */ 7095 #line 153 1"parser.yy"7109 #line 1533 "parser.yy" 7096 7110 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7097 7111 break; … … 7100 7114 7101 7115 /* Line 1806 of yacc.c */ 7102 #line 153 3"parser.yy"7116 #line 1535 "parser.yy" 7103 7117 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7104 7118 break; … … 7107 7121 7108 7122 /* Line 1806 of yacc.c */ 7109 #line 153 6"parser.yy"7123 #line 1538 "parser.yy" 7110 7124 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7111 7125 break; … … 7114 7128 7115 7129 /* Line 1806 of yacc.c */ 7116 #line 15 39"parser.yy"7130 #line 1541 "parser.yy" 7117 7131 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7118 7132 break; … … 7121 7135 7122 7136 /* Line 1806 of yacc.c */ 7123 #line 154 5"parser.yy"7137 #line 1547 "parser.yy" 7124 7138 { (yyval.en) = 0; } 7125 7139 break; … … 7128 7142 7129 7143 /* Line 1806 of yacc.c */ 7130 #line 154 7"parser.yy"7144 #line 1549 "parser.yy" 7131 7145 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7132 7146 break; … … 7135 7149 7136 7150 /* Line 1806 of yacc.c */ 7137 #line 155 2"parser.yy"7151 #line 1554 "parser.yy" 7138 7152 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7139 7153 break; … … 7142 7156 7143 7157 /* Line 1806 of yacc.c */ 7144 #line 156 1"parser.yy"7158 #line 1563 "parser.yy" 7145 7159 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7146 7160 break; … … 7149 7163 7150 7164 /* Line 1806 of yacc.c */ 7151 #line 156 3"parser.yy"7165 #line 1565 "parser.yy" 7152 7166 { 7153 7167 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 7159 7173 7160 7174 /* Line 1806 of yacc.c */ 7161 #line 15 68"parser.yy"7175 #line 1570 "parser.yy" 7162 7176 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 7163 7177 break; … … 7166 7180 7167 7181 /* Line 1806 of yacc.c */ 7168 #line 157 0"parser.yy"7182 #line 1572 "parser.yy" 7169 7183 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); } 7170 7184 break; … … 7173 7187 7174 7188 /* Line 1806 of yacc.c */ 7175 #line 157 5"parser.yy"7189 #line 1577 "parser.yy" 7176 7190 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7177 7191 break; … … 7180 7194 7181 7195 /* Line 1806 of yacc.c */ 7182 #line 157 7"parser.yy"7196 #line 1579 "parser.yy" 7183 7197 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7184 7198 break; … … 7187 7201 7188 7202 /* Line 1806 of yacc.c */ 7189 #line 158 2"parser.yy"7203 #line 1584 "parser.yy" 7190 7204 { (yyval.en) = 0; } 7191 7205 break; … … 7194 7208 7195 7209 /* Line 1806 of yacc.c */ 7196 #line 158 4"parser.yy"7210 #line 1586 "parser.yy" 7197 7211 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7198 7212 break; … … 7201 7215 7202 7216 /* Line 1806 of yacc.c */ 7203 #line 159 1"parser.yy"7217 #line 1593 "parser.yy" 7204 7218 { (yyval.decl) = 0; } 7205 7219 break; … … 7208 7222 7209 7223 /* Line 1806 of yacc.c */ 7210 #line 1 599"parser.yy"7224 #line 1601 "parser.yy" 7211 7225 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7212 7226 break; 7213 7227 7214 7228 case 405: 7215 7216 /* Line 1806 of yacc.c */7217 #line 1601 "parser.yy"7218 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }7219 break;7220 7221 case 406:7222 7229 7223 7230 /* Line 1806 of yacc.c */ … … 7226 7233 break; 7227 7234 7235 case 406: 7236 7237 /* Line 1806 of yacc.c */ 7238 #line 1605 "parser.yy" 7239 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7240 break; 7241 7228 7242 case 408: 7229 7230 /* Line 1806 of yacc.c */7231 #line 1611 "parser.yy"7232 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7233 break;7234 7235 case 409:7236 7243 7237 7244 /* Line 1806 of yacc.c */ … … 7240 7247 break; 7241 7248 7249 case 409: 7250 7251 /* Line 1806 of yacc.c */ 7252 #line 1615 "parser.yy" 7253 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7254 break; 7255 7242 7256 case 410: 7243 7257 7244 7258 /* Line 1806 of yacc.c */ 7245 #line 161 5"parser.yy"7259 #line 1617 "parser.yy" 7246 7260 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7247 7261 break; … … 7250 7264 7251 7265 /* Line 1806 of yacc.c */ 7252 #line 162 1"parser.yy"7266 #line 1623 "parser.yy" 7253 7267 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7254 7268 break; … … 7257 7271 7258 7272 /* Line 1806 of yacc.c */ 7259 #line 162 6"parser.yy"7273 #line 1628 "parser.yy" 7260 7274 { (yyval.decl) = 0; } 7261 7275 break; … … 7264 7278 7265 7279 /* Line 1806 of yacc.c */ 7266 #line 163 3"parser.yy"7280 #line 1635 "parser.yy" 7267 7281 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7268 7282 break; 7269 7283 7270 7284 case 419: 7271 7272 /* Line 1806 of yacc.c */7273 #line 1640 "parser.yy"7274 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7275 break;7276 7277 case 420:7278 7285 7279 7286 /* Line 1806 of yacc.c */ … … 7282 7289 break; 7283 7290 7291 case 420: 7292 7293 /* Line 1806 of yacc.c */ 7294 #line 1644 "parser.yy" 7295 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7296 break; 7297 7284 7298 case 422: 7285 7299 7286 7300 /* Line 1806 of yacc.c */ 7287 #line 165 1"parser.yy"7301 #line 1653 "parser.yy" 7288 7302 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7289 7303 break; … … 7292 7306 7293 7307 /* Line 1806 of yacc.c */ 7294 #line 165 4"parser.yy"7308 #line 1656 "parser.yy" 7295 7309 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7296 7310 break; … … 7299 7313 7300 7314 /* Line 1806 of yacc.c */ 7301 #line 165 6"parser.yy"7315 #line 1658 "parser.yy" 7302 7316 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7303 7317 break; … … 7306 7320 7307 7321 /* Line 1806 of yacc.c */ 7308 #line 166 6"parser.yy"7322 #line 1668 "parser.yy" 7309 7323 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7310 7324 break; … … 7313 7327 7314 7328 /* Line 1806 of yacc.c */ 7315 #line 167 2"parser.yy"7329 #line 1674 "parser.yy" 7316 7330 { 7317 7331 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7323 7337 7324 7338 /* Line 1806 of yacc.c */ 7325 #line 167 7"parser.yy"7339 #line 1679 "parser.yy" 7326 7340 { 7327 7341 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7333 7347 7334 7348 /* Line 1806 of yacc.c */ 7335 #line 168 6"parser.yy"7349 #line 1688 "parser.yy" 7336 7350 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7337 7351 break; … … 7340 7354 7341 7355 /* Line 1806 of yacc.c */ 7342 #line 169 5"parser.yy"7356 #line 1697 "parser.yy" 7343 7357 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7344 7358 break; … … 7347 7361 7348 7362 /* Line 1806 of yacc.c */ 7349 #line 169 7"parser.yy"7363 #line 1699 "parser.yy" 7350 7364 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7351 7365 break; … … 7354 7368 7355 7369 /* Line 1806 of yacc.c */ 7356 #line 172 2"parser.yy"7370 #line 1724 "parser.yy" 7357 7371 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7358 7372 break; … … 7361 7375 7362 7376 /* Line 1806 of yacc.c */ 7363 #line 173 0"parser.yy"7377 #line 1732 "parser.yy" 7364 7378 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7365 7379 break; … … 7368 7382 7369 7383 /* Line 1806 of yacc.c */ 7370 #line 173 5"parser.yy"7384 #line 1737 "parser.yy" 7371 7385 { (yyval.in) = 0; } 7372 7386 break; … … 7375 7389 7376 7390 /* Line 1806 of yacc.c */ 7377 #line 173 7"parser.yy"7391 #line 1739 "parser.yy" 7378 7392 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7379 7393 break; … … 7382 7396 7383 7397 /* Line 1806 of yacc.c */ 7384 #line 17 39"parser.yy"7398 #line 1741 "parser.yy" 7385 7399 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); } 7386 7400 break; … … 7389 7403 7390 7404 /* Line 1806 of yacc.c */ 7391 #line 174 3"parser.yy"7405 #line 1745 "parser.yy" 7392 7406 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7393 7407 break; … … 7396 7410 7397 7411 /* Line 1806 of yacc.c */ 7398 #line 174 4"parser.yy"7412 #line 1746 "parser.yy" 7399 7413 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7400 7414 break; … … 7403 7417 7404 7418 /* Line 1806 of yacc.c */ 7405 #line 17 49"parser.yy"7419 #line 1751 "parser.yy" 7406 7420 { (yyval.in) = 0; } 7407 7421 break; … … 7410 7424 7411 7425 /* Line 1806 of yacc.c */ 7412 #line 175 1"parser.yy"7426 #line 1753 "parser.yy" 7413 7427 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7414 7428 break; … … 7417 7431 7418 7432 /* Line 1806 of yacc.c */ 7419 #line 175 2"parser.yy"7433 #line 1754 "parser.yy" 7420 7434 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); } 7421 7435 break; … … 7424 7438 7425 7439 /* Line 1806 of yacc.c */ 7426 #line 175 4"parser.yy"7440 #line 1756 "parser.yy" 7427 7441 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7428 7442 break; … … 7431 7445 7432 7446 /* Line 1806 of yacc.c */ 7433 #line 177 0"parser.yy"7447 #line 1772 "parser.yy" 7434 7448 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); } 7435 7449 break; … … 7438 7452 7439 7453 /* Line 1806 of yacc.c */ 7440 #line 177 6"parser.yy"7454 #line 1778 "parser.yy" 7441 7455 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); } 7442 7456 break; … … 7445 7459 7446 7460 /* Line 1806 of yacc.c */ 7447 #line 178 2"parser.yy"7461 #line 1784 "parser.yy" 7448 7462 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); } 7449 7463 break; 7450 7464 7451 7465 case 468: 7452 7453 /* Line 1806 of yacc.c */7454 #line 1785 "parser.yy"7455 { (yyval.en) = (yyvsp[(3) - (5)].en); }7456 break;7457 7458 case 469:7459 7466 7460 7467 /* Line 1806 of yacc.c */ … … 7463 7470 break; 7464 7471 7472 case 469: 7473 7474 /* Line 1806 of yacc.c */ 7475 #line 1789 "parser.yy" 7476 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7477 break; 7478 7465 7479 case 470: 7466 7480 7467 7481 /* Line 1806 of yacc.c */ 7468 #line 17 89"parser.yy"7482 #line 1791 "parser.yy" 7469 7483 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); } 7470 7484 break; … … 7473 7487 7474 7488 /* Line 1806 of yacc.c */ 7475 #line 179 1"parser.yy"7489 #line 1793 "parser.yy" 7476 7490 { (yyval.en) = (yyvsp[(4) - (6)].en); } 7477 7491 break; … … 7480 7494 7481 7495 /* Line 1806 of yacc.c */ 7482 #line 181 5"parser.yy"7496 #line 1817 "parser.yy" 7483 7497 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7484 7498 break; … … 7487 7501 7488 7502 /* Line 1806 of yacc.c */ 7489 #line 181 7"parser.yy"7503 #line 1819 "parser.yy" 7490 7504 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7491 7505 break; … … 7494 7508 7495 7509 /* Line 1806 of yacc.c */ 7496 #line 18 19"parser.yy"7510 #line 1821 "parser.yy" 7497 7511 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7498 7512 break; … … 7501 7515 7502 7516 /* Line 1806 of yacc.c */ 7503 #line 182 5"parser.yy"7517 #line 1827 "parser.yy" 7504 7518 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7505 7519 break; … … 7508 7522 7509 7523 /* Line 1806 of yacc.c */ 7510 #line 182 7"parser.yy"7524 #line 1829 "parser.yy" 7511 7525 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7512 7526 break; … … 7515 7529 7516 7530 /* Line 1806 of yacc.c */ 7517 #line 183 2"parser.yy"7531 #line 1834 "parser.yy" 7518 7532 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7519 7533 break; … … 7522 7536 7523 7537 /* Line 1806 of yacc.c */ 7524 #line 18 38"parser.yy"7538 #line 1840 "parser.yy" 7525 7539 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7526 7540 break; … … 7529 7543 7530 7544 /* Line 1806 of yacc.c */ 7531 #line 184 3"parser.yy"7545 #line 1845 "parser.yy" 7532 7546 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7533 7547 break; … … 7536 7550 7537 7551 /* Line 1806 of yacc.c */ 7538 #line 184 5"parser.yy"7552 #line 1847 "parser.yy" 7539 7553 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7540 7554 break; … … 7543 7557 7544 7558 /* Line 1806 of yacc.c */ 7545 #line 185 1"parser.yy"7559 #line 1853 "parser.yy" 7546 7560 { (yyval.tclass) = DeclarationNode::Type; } 7547 7561 break; … … 7550 7564 7551 7565 /* Line 1806 of yacc.c */ 7552 #line 185 3"parser.yy"7566 #line 1855 "parser.yy" 7553 7567 { (yyval.tclass) = DeclarationNode::Ftype; } 7554 7568 break; … … 7557 7571 7558 7572 /* Line 1806 of yacc.c */ 7559 #line 185 5"parser.yy"7573 #line 1857 "parser.yy" 7560 7574 { (yyval.tclass) = DeclarationNode::Dtype; } 7561 7575 break; … … 7564 7578 7565 7579 /* Line 1806 of yacc.c */ 7566 #line 186 0"parser.yy"7580 #line 1862 "parser.yy" 7567 7581 { (yyval.decl) = 0; } 7568 7582 break; … … 7571 7585 7572 7586 /* Line 1806 of yacc.c */ 7573 #line 186 2"parser.yy"7587 #line 1864 "parser.yy" 7574 7588 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7575 7589 break; … … 7578 7592 7579 7593 /* Line 1806 of yacc.c */ 7580 #line 186 7"parser.yy"7594 #line 1869 "parser.yy" 7581 7595 { 7582 7596 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); … … 7588 7602 7589 7603 /* Line 1806 of yacc.c */ 7590 #line 187 2"parser.yy"7604 #line 1874 "parser.yy" 7591 7605 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7592 7606 break; … … 7595 7609 7596 7610 /* Line 1806 of yacc.c */ 7597 #line 187 4"parser.yy"7611 #line 1876 "parser.yy" 7598 7612 { (yyval.decl) = 0; } 7599 7613 break; … … 7602 7616 7603 7617 /* Line 1806 of yacc.c */ 7604 #line 18 79"parser.yy"7618 #line 1881 "parser.yy" 7605 7619 { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); } 7606 7620 break; … … 7609 7623 7610 7624 /* Line 1806 of yacc.c */ 7611 #line 188 2"parser.yy"7625 #line 1884 "parser.yy" 7612 7626 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); } 7613 7627 break; … … 7616 7630 7617 7631 /* Line 1806 of yacc.c */ 7618 #line 188 4"parser.yy"7632 #line 1886 "parser.yy" 7619 7633 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 7620 7634 break; … … 7623 7637 7624 7638 /* Line 1806 of yacc.c */ 7625 #line 18 89"parser.yy"7639 #line 1891 "parser.yy" 7626 7640 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7627 7641 break; … … 7630 7644 7631 7645 /* Line 1806 of yacc.c */ 7632 #line 189 1"parser.yy"7646 #line 1893 "parser.yy" 7633 7647 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7634 7648 break; … … 7637 7651 7638 7652 /* Line 1806 of yacc.c */ 7639 #line 189 3"parser.yy"7653 #line 1895 "parser.yy" 7640 7654 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7641 7655 break; … … 7644 7658 7645 7659 /* Line 1806 of yacc.c */ 7646 #line 1 898"parser.yy"7660 #line 1900 "parser.yy" 7647 7661 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7648 7662 break; … … 7651 7665 7652 7666 /* Line 1806 of yacc.c */ 7653 #line 190 0"parser.yy"7667 #line 1902 "parser.yy" 7654 7668 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7655 7669 break; … … 7658 7672 7659 7673 /* Line 1806 of yacc.c */ 7660 #line 190 5"parser.yy"7674 #line 1907 "parser.yy" 7661 7675 { 7662 7676 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7668 7682 7669 7683 /* Line 1806 of yacc.c */ 7670 #line 191 0"parser.yy"7684 #line 1912 "parser.yy" 7671 7685 { 7672 7686 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7678 7692 7679 7693 /* Line 1806 of yacc.c */ 7680 #line 19 18"parser.yy"7694 #line 1920 "parser.yy" 7681 7695 { 7682 7696 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7688 7702 7689 7703 /* Line 1806 of yacc.c */ 7690 #line 192 3"parser.yy"7704 #line 1925 "parser.yy" 7691 7705 { 7692 7706 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); … … 7698 7712 7699 7713 /* Line 1806 of yacc.c */ 7700 #line 19 28"parser.yy"7714 #line 1930 "parser.yy" 7701 7715 { 7702 7716 typedefTable.leaveTrait(); … … 7709 7723 7710 7724 /* Line 1806 of yacc.c */ 7711 #line 19 38"parser.yy"7725 #line 1940 "parser.yy" 7712 7726 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7713 7727 break; … … 7716 7730 7717 7731 /* Line 1806 of yacc.c */ 7718 #line 19 48"parser.yy"7732 #line 1950 "parser.yy" 7719 7733 { 7720 7734 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7726 7740 7727 7741 /* Line 1806 of yacc.c */ 7728 #line 195 3"parser.yy"7742 #line 1955 "parser.yy" 7729 7743 { 7730 7744 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7736 7750 7737 7751 /* Line 1806 of yacc.c */ 7738 #line 19 58"parser.yy"7752 #line 1960 "parser.yy" 7739 7753 { 7740 7754 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7746 7760 7747 7761 /* Line 1806 of yacc.c */ 7748 #line 196 6"parser.yy"7762 #line 1968 "parser.yy" 7749 7763 { 7750 7764 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7756 7770 7757 7771 /* Line 1806 of yacc.c */ 7758 #line 197 1"parser.yy"7772 #line 1973 "parser.yy" 7759 7773 { 7760 7774 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7766 7780 7767 7781 /* Line 1806 of yacc.c */ 7768 #line 198 1"parser.yy"7782 #line 1983 "parser.yy" 7769 7783 {} 7770 7784 break; … … 7773 7787 7774 7788 /* Line 1806 of yacc.c */ 7775 #line 198 3"parser.yy"7789 #line 1985 "parser.yy" 7776 7790 { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl); } 7777 7791 break; … … 7780 7794 7781 7795 /* Line 1806 of yacc.c */ 7782 #line 19 89"parser.yy"7796 #line 1991 "parser.yy" 7783 7797 { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7784 7798 break; … … 7787 7801 7788 7802 /* Line 1806 of yacc.c */ 7789 #line 199 4"parser.yy"7803 #line 1996 "parser.yy" 7790 7804 { (yyval.decl) = 0; } 7791 7805 break; … … 7794 7808 7795 7809 /* Line 1806 of yacc.c */ 7796 #line 200 2"parser.yy"7810 #line 2004 "parser.yy" 7797 7811 {} 7798 7812 break; … … 7801 7815 7802 7816 /* Line 1806 of yacc.c */ 7803 #line 200 4"parser.yy"7817 #line 2006 "parser.yy" 7804 7818 { 7805 7819 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" … … 7811 7825 7812 7826 /* Line 1806 of yacc.c */ 7813 #line 20 09"parser.yy"7827 #line 2011 "parser.yy" 7814 7828 { 7815 7829 linkage = linkageStack.top(); … … 7822 7836 7823 7837 /* Line 1806 of yacc.c */ 7824 #line 201 5"parser.yy"7838 #line 2017 "parser.yy" 7825 7839 { // mark all fields in list 7826 7840 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 7833 7847 7834 7848 /* Line 1806 of yacc.c */ 7835 #line 203 0"parser.yy"7849 #line 2032 "parser.yy" 7836 7850 { 7837 7851 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7844 7858 7845 7859 /* Line 1806 of yacc.c */ 7846 #line 203 6"parser.yy"7860 #line 2038 "parser.yy" 7847 7861 { 7848 7862 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7855 7869 7856 7870 /* Line 1806 of yacc.c */ 7857 #line 204 5"parser.yy"7871 #line 2047 "parser.yy" 7858 7872 { 7859 7873 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7866 7880 7867 7881 /* Line 1806 of yacc.c */ 7868 #line 205 1"parser.yy"7882 #line 2053 "parser.yy" 7869 7883 { 7870 7884 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7877 7891 7878 7892 /* Line 1806 of yacc.c */ 7879 #line 205 7"parser.yy"7893 #line 2059 "parser.yy" 7880 7894 { 7881 7895 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7888 7902 7889 7903 /* Line 1806 of yacc.c */ 7890 #line 206 3"parser.yy"7904 #line 2065 "parser.yy" 7891 7905 { 7892 7906 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7899 7913 7900 7914 /* Line 1806 of yacc.c */ 7901 #line 20 69"parser.yy"7915 #line 2071 "parser.yy" 7902 7916 { 7903 7917 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7910 7924 7911 7925 /* Line 1806 of yacc.c */ 7912 #line 207 7"parser.yy"7926 #line 2079 "parser.yy" 7913 7927 { 7914 7928 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7921 7935 7922 7936 /* Line 1806 of yacc.c */ 7923 #line 208 3"parser.yy"7937 #line 2085 "parser.yy" 7924 7938 { 7925 7939 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7932 7946 7933 7947 /* Line 1806 of yacc.c */ 7934 #line 209 1"parser.yy"7948 #line 2093 "parser.yy" 7935 7949 { 7936 7950 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7943 7957 7944 7958 /* Line 1806 of yacc.c */ 7945 #line 209 7"parser.yy"7959 #line 2099 "parser.yy" 7946 7960 { 7947 7961 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7954 7968 7955 7969 /* Line 1806 of yacc.c */ 7956 #line 211 2"parser.yy"7970 #line 2114 "parser.yy" 7957 7971 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 7958 7972 break; … … 7961 7975 7962 7976 /* Line 1806 of yacc.c */ 7963 #line 211 7"parser.yy"7977 #line 2119 "parser.yy" 7964 7978 { delete (yyvsp[(3) - (5)].str); } 7965 7979 break; … … 7968 7982 7969 7983 /* Line 1806 of yacc.c */ 7970 #line 212 2"parser.yy"7984 #line 2124 "parser.yy" 7971 7985 { (yyval.decl) = 0; } 7972 7986 break; … … 7975 7989 7976 7990 /* Line 1806 of yacc.c */ 7977 #line 21 29"parser.yy"7991 #line 2131 "parser.yy" 7978 7992 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7979 7993 break; … … 7982 7996 7983 7997 /* Line 1806 of yacc.c */ 7984 #line 213 5"parser.yy"7998 #line 2137 "parser.yy" 7985 7999 { (yyval.decl) = 0; } 7986 8000 break; … … 7989 8003 7990 8004 /* Line 1806 of yacc.c */ 7991 #line 214 6"parser.yy"8005 #line 2148 "parser.yy" 7992 8006 { delete (yyvsp[(3) - (4)].en); } 7993 8007 break; … … 7996 8010 7997 8011 /* Line 1806 of yacc.c */ 7998 #line 215 0"parser.yy"8012 #line 2152 "parser.yy" 7999 8013 { delete (yyvsp[(1) - (1)].tok); } 8000 8014 break; 8001 8015 8002 8016 case 557: 8003 8004 /* Line 1806 of yacc.c */8005 #line 2151 "parser.yy"8006 { delete (yyvsp[(1) - (1)].decl); }8007 break;8008 8009 case 558:8010 8011 /* Line 1806 of yacc.c */8012 #line 2152 "parser.yy"8013 { delete (yyvsp[(1) - (1)].decl); }8014 break;8015 8016 case 559:8017 8017 8018 8018 /* Line 1806 of yacc.c */ … … 8021 8021 break; 8022 8022 8023 case 558: 8024 8025 /* Line 1806 of yacc.c */ 8026 #line 2154 "parser.yy" 8027 { delete (yyvsp[(1) - (1)].decl); } 8028 break; 8029 8030 case 559: 8031 8032 /* Line 1806 of yacc.c */ 8033 #line 2155 "parser.yy" 8034 { delete (yyvsp[(1) - (1)].decl); } 8035 break; 8036 8023 8037 case 560: 8024 8038 8025 8039 /* Line 1806 of yacc.c */ 8026 #line 21 88"parser.yy"8040 #line 2190 "parser.yy" 8027 8041 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8028 8042 break; 8029 8043 8030 8044 case 562: 8031 8032 /* Line 1806 of yacc.c */8033 #line 2191 "parser.yy"8034 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8035 break;8036 8037 case 563:8038 8045 8039 8046 /* Line 1806 of yacc.c */ … … 8042 8049 break; 8043 8050 8051 case 563: 8052 8053 /* Line 1806 of yacc.c */ 8054 #line 2195 "parser.yy" 8055 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8056 break; 8057 8044 8058 case 564: 8045 8059 8046 8060 /* Line 1806 of yacc.c */ 8047 #line 2 198"parser.yy"8061 #line 2200 "parser.yy" 8048 8062 { 8049 8063 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8055 8069 8056 8070 /* Line 1806 of yacc.c */ 8057 #line 220 3"parser.yy"8071 #line 2205 "parser.yy" 8058 8072 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8059 8073 break; … … 8062 8076 8063 8077 /* Line 1806 of yacc.c */ 8064 #line 22 08"parser.yy"8078 #line 2210 "parser.yy" 8065 8079 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8066 8080 break; … … 8069 8083 8070 8084 /* Line 1806 of yacc.c */ 8071 #line 221 0"parser.yy"8085 #line 2212 "parser.yy" 8072 8086 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8073 8087 break; … … 8076 8090 8077 8091 /* Line 1806 of yacc.c */ 8078 #line 221 2"parser.yy"8092 #line 2214 "parser.yy" 8079 8093 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8080 8094 break; … … 8083 8097 8084 8098 /* Line 1806 of yacc.c */ 8085 #line 221 7"parser.yy"8099 #line 2219 "parser.yy" 8086 8100 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8087 8101 break; 8088 8102 8089 8103 case 570: 8090 8091 /* Line 1806 of yacc.c */8092 #line 2219 "parser.yy"8093 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8094 break;8095 8096 case 571:8097 8104 8098 8105 /* Line 1806 of yacc.c */ … … 8101 8108 break; 8102 8109 8110 case 571: 8111 8112 /* Line 1806 of yacc.c */ 8113 #line 2223 "parser.yy" 8114 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8115 break; 8116 8103 8117 case 572: 8104 8118 8105 8119 /* Line 1806 of yacc.c */ 8106 #line 222 3"parser.yy"8120 #line 2225 "parser.yy" 8107 8121 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8108 8122 break; … … 8111 8125 8112 8126 /* Line 1806 of yacc.c */ 8113 #line 22 28"parser.yy"8127 #line 2230 "parser.yy" 8114 8128 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8115 8129 break; … … 8118 8132 8119 8133 /* Line 1806 of yacc.c */ 8120 #line 223 0"parser.yy"8134 #line 2232 "parser.yy" 8121 8135 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8122 8136 break; … … 8125 8139 8126 8140 /* Line 1806 of yacc.c */ 8127 #line 22 39"parser.yy"8141 #line 2241 "parser.yy" 8128 8142 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8129 8143 break; … … 8132 8146 8133 8147 /* Line 1806 of yacc.c */ 8134 #line 224 2"parser.yy"8148 #line 2244 "parser.yy" 8135 8149 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8136 8150 break; … … 8139 8153 8140 8154 /* Line 1806 of yacc.c */ 8141 #line 224 7"parser.yy"8155 #line 2249 "parser.yy" 8142 8156 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8143 8157 break; … … 8146 8160 8147 8161 /* Line 1806 of yacc.c */ 8148 #line 22 49"parser.yy"8162 #line 2251 "parser.yy" 8149 8163 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8150 8164 break; … … 8153 8167 8154 8168 /* Line 1806 of yacc.c */ 8155 #line 225 1"parser.yy"8169 #line 2253 "parser.yy" 8156 8170 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8157 8171 break; … … 8160 8174 8161 8175 /* Line 1806 of yacc.c */ 8162 #line 225 6"parser.yy"8176 #line 2258 "parser.yy" 8163 8177 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8164 8178 break; … … 8167 8181 8168 8182 /* Line 1806 of yacc.c */ 8169 #line 22 58"parser.yy"8183 #line 2260 "parser.yy" 8170 8184 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8171 8185 break; … … 8174 8188 8175 8189 /* Line 1806 of yacc.c */ 8176 #line 226 0"parser.yy"8190 #line 2262 "parser.yy" 8177 8191 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8178 8192 break; 8179 8193 8180 8194 case 584: 8181 8182 /* Line 1806 of yacc.c */8183 #line 2265 "parser.yy"8184 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8185 break;8186 8187 case 585:8188 8195 8189 8196 /* Line 1806 of yacc.c */ … … 8192 8199 break; 8193 8200 8201 case 585: 8202 8203 /* Line 1806 of yacc.c */ 8204 #line 2269 "parser.yy" 8205 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8206 break; 8207 8194 8208 case 586: 8195 8209 8196 8210 /* Line 1806 of yacc.c */ 8197 #line 22 69"parser.yy"8211 #line 2271 "parser.yy" 8198 8212 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8199 8213 break; … … 8202 8216 8203 8217 /* Line 1806 of yacc.c */ 8204 #line 228 4"parser.yy"8218 #line 2286 "parser.yy" 8205 8219 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8206 8220 break; … … 8209 8223 8210 8224 /* Line 1806 of yacc.c */ 8211 #line 228 6"parser.yy"8225 #line 2288 "parser.yy" 8212 8226 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8213 8227 break; … … 8216 8230 8217 8231 /* Line 1806 of yacc.c */ 8218 #line 22 88"parser.yy"8232 #line 2290 "parser.yy" 8219 8233 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8220 8234 break; … … 8223 8237 8224 8238 /* Line 1806 of yacc.c */ 8225 #line 229 3"parser.yy"8239 #line 2295 "parser.yy" 8226 8240 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8227 8241 break; … … 8230 8244 8231 8245 /* Line 1806 of yacc.c */ 8232 #line 229 5"parser.yy"8246 #line 2297 "parser.yy" 8233 8247 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8234 8248 break; … … 8237 8251 8238 8252 /* Line 1806 of yacc.c */ 8239 #line 229 7"parser.yy"8253 #line 2299 "parser.yy" 8240 8254 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8241 8255 break; 8242 8256 8243 8257 case 596: 8244 8245 /* Line 1806 of yacc.c */8246 #line 2302 "parser.yy"8247 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8248 break;8249 8250 case 597:8251 8258 8252 8259 /* Line 1806 of yacc.c */ … … 8255 8262 break; 8256 8263 8264 case 597: 8265 8266 /* Line 1806 of yacc.c */ 8267 #line 2306 "parser.yy" 8268 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8269 break; 8270 8257 8271 case 598: 8258 8272 8259 8273 /* Line 1806 of yacc.c */ 8260 #line 230 6"parser.yy"8274 #line 2308 "parser.yy" 8261 8275 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8262 8276 break; … … 8265 8279 8266 8280 /* Line 1806 of yacc.c */ 8267 #line 232 1"parser.yy"8281 #line 2323 "parser.yy" 8268 8282 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8269 8283 break; 8270 8284 8271 8285 case 601: 8272 8273 /* Line 1806 of yacc.c */8274 #line 2324 "parser.yy"8275 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8276 break;8277 8278 case 602:8279 8286 8280 8287 /* Line 1806 of yacc.c */ … … 8283 8290 break; 8284 8291 8292 case 602: 8293 8294 /* Line 1806 of yacc.c */ 8295 #line 2328 "parser.yy" 8296 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8297 break; 8298 8285 8299 case 604: 8286 8300 8287 8301 /* Line 1806 of yacc.c */ 8288 #line 233 2"parser.yy"8302 #line 2334 "parser.yy" 8289 8303 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8290 8304 break; … … 8293 8307 8294 8308 /* Line 1806 of yacc.c */ 8295 #line 233 7"parser.yy"8309 #line 2339 "parser.yy" 8296 8310 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8297 8311 break; … … 8300 8314 8301 8315 /* Line 1806 of yacc.c */ 8302 #line 23 39"parser.yy"8316 #line 2341 "parser.yy" 8303 8317 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8304 8318 break; … … 8307 8321 8308 8322 /* Line 1806 of yacc.c */ 8309 #line 234 1"parser.yy"8323 #line 2343 "parser.yy" 8310 8324 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8311 8325 break; … … 8314 8328 8315 8329 /* Line 1806 of yacc.c */ 8316 #line 234 6"parser.yy"8330 #line 2348 "parser.yy" 8317 8331 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8318 8332 break; 8319 8333 8320 8334 case 609: 8321 8322 /* Line 1806 of yacc.c */8323 #line 2348 "parser.yy"8324 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8325 break;8326 8327 case 610:8328 8335 8329 8336 /* Line 1806 of yacc.c */ … … 8332 8339 break; 8333 8340 8341 case 610: 8342 8343 /* Line 1806 of yacc.c */ 8344 #line 2352 "parser.yy" 8345 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8346 break; 8347 8334 8348 case 611: 8335 8349 8336 8350 /* Line 1806 of yacc.c */ 8337 #line 235 2"parser.yy"8351 #line 2354 "parser.yy" 8338 8352 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8339 8353 break; … … 8342 8356 8343 8357 /* Line 1806 of yacc.c */ 8344 #line 235 7"parser.yy"8358 #line 2359 "parser.yy" 8345 8359 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8346 8360 break; … … 8349 8363 8350 8364 /* Line 1806 of yacc.c */ 8351 #line 23 59"parser.yy"8365 #line 2361 "parser.yy" 8352 8366 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8353 8367 break; … … 8356 8370 8357 8371 /* Line 1806 of yacc.c */ 8358 #line 236 1"parser.yy"8372 #line 2363 "parser.yy" 8359 8373 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8360 8374 break; … … 8363 8377 8364 8378 /* Line 1806 of yacc.c */ 8365 #line 237 1"parser.yy"8379 #line 2373 "parser.yy" 8366 8380 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8367 8381 break; 8368 8382 8369 8383 case 617: 8370 8371 /* Line 1806 of yacc.c */8372 #line 2374 "parser.yy"8373 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8374 break;8375 8376 case 618:8377 8384 8378 8385 /* Line 1806 of yacc.c */ … … 8381 8388 break; 8382 8389 8390 case 618: 8391 8392 /* Line 1806 of yacc.c */ 8393 #line 2378 "parser.yy" 8394 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8395 break; 8396 8383 8397 case 619: 8384 8398 8385 8399 /* Line 1806 of yacc.c */ 8386 #line 238 1"parser.yy"8400 #line 2383 "parser.yy" 8387 8401 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8388 8402 break; … … 8391 8405 8392 8406 /* Line 1806 of yacc.c */ 8393 #line 238 3"parser.yy"8407 #line 2385 "parser.yy" 8394 8408 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8395 8409 break; … … 8398 8412 8399 8413 /* Line 1806 of yacc.c */ 8400 #line 238 5"parser.yy"8414 #line 2387 "parser.yy" 8401 8415 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8402 8416 break; … … 8405 8419 8406 8420 /* Line 1806 of yacc.c */ 8407 #line 239 0"parser.yy"8421 #line 2392 "parser.yy" 8408 8422 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8409 8423 break; 8410 8424 8411 8425 case 623: 8412 8413 /* Line 1806 of yacc.c */8414 #line 2392 "parser.yy"8415 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8416 break;8417 8418 case 624:8419 8426 8420 8427 /* Line 1806 of yacc.c */ … … 8423 8430 break; 8424 8431 8432 case 624: 8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2396 "parser.yy" 8436 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8437 break; 8438 8425 8439 case 625: 8426 8440 8427 8441 /* Line 1806 of yacc.c */ 8428 #line 239 6"parser.yy"8442 #line 2398 "parser.yy" 8429 8443 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8430 8444 break; … … 8433 8447 8434 8448 /* Line 1806 of yacc.c */ 8435 #line 240 1"parser.yy"8449 #line 2403 "parser.yy" 8436 8450 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8437 8451 break; … … 8440 8454 8441 8455 /* Line 1806 of yacc.c */ 8442 #line 240 3"parser.yy"8456 #line 2405 "parser.yy" 8443 8457 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8444 8458 break; … … 8447 8461 8448 8462 /* Line 1806 of yacc.c */ 8449 #line 240 5"parser.yy"8463 #line 2407 "parser.yy" 8450 8464 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8451 8465 break; … … 8454 8468 8455 8469 /* Line 1806 of yacc.c */ 8456 #line 243 6"parser.yy"8470 #line 2438 "parser.yy" 8457 8471 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 8472 break; 8459 8473 8460 8474 case 631: 8461 8462 /* Line 1806 of yacc.c */8463 #line 2439 "parser.yy"8464 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8465 break;8466 8467 case 632:8468 8475 8469 8476 /* Line 1806 of yacc.c */ … … 8472 8479 break; 8473 8480 8481 case 632: 8482 8483 /* Line 1806 of yacc.c */ 8484 #line 2443 "parser.yy" 8485 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8486 break; 8487 8474 8488 case 633: 8475 8489 8476 8490 /* Line 1806 of yacc.c */ 8477 #line 244 6"parser.yy"8491 #line 2448 "parser.yy" 8478 8492 { 8479 8493 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8485 8499 8486 8500 /* Line 1806 of yacc.c */ 8487 #line 245 1"parser.yy"8501 #line 2453 "parser.yy" 8488 8502 { 8489 8503 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8495 8509 8496 8510 /* Line 1806 of yacc.c */ 8497 #line 24 59"parser.yy"8511 #line 2461 "parser.yy" 8498 8512 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8499 8513 break; … … 8502 8516 8503 8517 /* Line 1806 of yacc.c */ 8504 #line 246 1"parser.yy"8518 #line 2463 "parser.yy" 8505 8519 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8506 8520 break; … … 8509 8523 8510 8524 /* Line 1806 of yacc.c */ 8511 #line 246 3"parser.yy"8525 #line 2465 "parser.yy" 8512 8526 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8513 8527 break; … … 8516 8530 8517 8531 /* Line 1806 of yacc.c */ 8518 #line 24 68"parser.yy"8532 #line 2470 "parser.yy" 8519 8533 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8520 8534 break; … … 8523 8537 8524 8538 /* Line 1806 of yacc.c */ 8525 #line 247 0"parser.yy"8539 #line 2472 "parser.yy" 8526 8540 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8527 8541 break; … … 8530 8544 8531 8545 /* Line 1806 of yacc.c */ 8532 #line 247 5"parser.yy"8546 #line 2477 "parser.yy" 8533 8547 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8534 8548 break; … … 8537 8551 8538 8552 /* Line 1806 of yacc.c */ 8539 #line 247 7"parser.yy"8553 #line 2479 "parser.yy" 8540 8554 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8541 8555 break; 8542 8556 8543 8557 case 643: 8544 8545 /* Line 1806 of yacc.c */8546 #line 2492 "parser.yy"8547 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8548 break;8549 8550 case 644:8551 8558 8552 8559 /* Line 1806 of yacc.c */ … … 8555 8562 break; 8556 8563 8564 case 644: 8565 8566 /* Line 1806 of yacc.c */ 8567 #line 2496 "parser.yy" 8568 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8569 break; 8570 8557 8571 case 645: 8558 8572 8559 8573 /* Line 1806 of yacc.c */ 8560 #line 2 499"parser.yy"8574 #line 2501 "parser.yy" 8561 8575 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8562 8576 break; … … 8565 8579 8566 8580 /* Line 1806 of yacc.c */ 8567 #line 250 1"parser.yy"8581 #line 2503 "parser.yy" 8568 8582 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8569 8583 break; … … 8572 8586 8573 8587 /* Line 1806 of yacc.c */ 8574 #line 250 3"parser.yy"8588 #line 2505 "parser.yy" 8575 8589 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8576 8590 break; … … 8579 8593 8580 8594 /* Line 1806 of yacc.c */ 8581 #line 250 5"parser.yy"8595 #line 2507 "parser.yy" 8582 8596 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8583 8597 break; … … 8586 8600 8587 8601 /* Line 1806 of yacc.c */ 8588 #line 250 7"parser.yy"8602 #line 2509 "parser.yy" 8589 8603 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8590 8604 break; 8591 8605 8592 8606 case 651: 8593 8594 /* Line 1806 of yacc.c */8595 #line 2513 "parser.yy"8596 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8597 break;8598 8599 case 652:8600 8607 8601 8608 /* Line 1806 of yacc.c */ … … 8604 8611 break; 8605 8612 8613 case 652: 8614 8615 /* Line 1806 of yacc.c */ 8616 #line 2517 "parser.yy" 8617 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8618 break; 8619 8606 8620 case 653: 8607 8621 8608 8622 /* Line 1806 of yacc.c */ 8609 #line 251 7"parser.yy"8623 #line 2519 "parser.yy" 8610 8624 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8611 8625 break; … … 8614 8628 8615 8629 /* Line 1806 of yacc.c */ 8616 #line 252 2"parser.yy"8630 #line 2524 "parser.yy" 8617 8631 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8618 8632 break; … … 8621 8635 8622 8636 /* Line 1806 of yacc.c */ 8623 #line 252 4"parser.yy"8637 #line 2526 "parser.yy" 8624 8638 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8625 8639 break; … … 8628 8642 8629 8643 /* Line 1806 of yacc.c */ 8630 #line 252 6"parser.yy"8644 #line 2528 "parser.yy" 8631 8645 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8632 8646 break; … … 8635 8649 8636 8650 /* Line 1806 of yacc.c */ 8637 #line 253 2"parser.yy"8651 #line 2534 "parser.yy" 8638 8652 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8639 8653 break; … … 8642 8656 8643 8657 /* Line 1806 of yacc.c */ 8644 #line 253 4"parser.yy"8658 #line 2536 "parser.yy" 8645 8659 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8646 8660 break; … … 8649 8663 8650 8664 /* Line 1806 of yacc.c */ 8651 #line 254 0"parser.yy"8665 #line 2542 "parser.yy" 8652 8666 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8653 8667 break; … … 8656 8670 8657 8671 /* Line 1806 of yacc.c */ 8658 #line 254 2"parser.yy"8672 #line 2544 "parser.yy" 8659 8673 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8660 8674 break; … … 8663 8677 8664 8678 /* Line 1806 of yacc.c */ 8665 #line 254 4"parser.yy"8679 #line 2546 "parser.yy" 8666 8680 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8667 8681 break; … … 8670 8684 8671 8685 /* Line 1806 of yacc.c */ 8672 #line 254 6"parser.yy"8686 #line 2548 "parser.yy" 8673 8687 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8674 8688 break; 8675 8689 8676 8690 case 665: 8677 8678 /* Line 1806 of yacc.c */8679 #line 2561 "parser.yy"8680 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8681 break;8682 8683 case 666:8684 8691 8685 8692 /* Line 1806 of yacc.c */ … … 8688 8695 break; 8689 8696 8697 case 666: 8698 8699 /* Line 1806 of yacc.c */ 8700 #line 2565 "parser.yy" 8701 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8702 break; 8703 8690 8704 case 667: 8691 8705 8692 8706 /* Line 1806 of yacc.c */ 8693 #line 25 68"parser.yy"8707 #line 2570 "parser.yy" 8694 8708 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8695 8709 break; … … 8698 8712 8699 8713 /* Line 1806 of yacc.c */ 8700 #line 257 0"parser.yy"8714 #line 2572 "parser.yy" 8701 8715 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8702 8716 break; … … 8705 8719 8706 8720 /* Line 1806 of yacc.c */ 8707 #line 257 2"parser.yy"8721 #line 2574 "parser.yy" 8708 8722 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8709 8723 break; … … 8712 8726 8713 8727 /* Line 1806 of yacc.c */ 8714 #line 257 4"parser.yy"8728 #line 2576 "parser.yy" 8715 8729 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8716 8730 break; … … 8719 8733 8720 8734 /* Line 1806 of yacc.c */ 8721 #line 257 6"parser.yy"8735 #line 2578 "parser.yy" 8722 8736 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8723 8737 break; 8724 8738 8725 8739 case 673: 8726 8727 /* Line 1806 of yacc.c */8728 #line 2582 "parser.yy"8729 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8730 break;8731 8732 case 674:8733 8740 8734 8741 /* Line 1806 of yacc.c */ … … 8737 8744 break; 8738 8745 8746 case 674: 8747 8748 /* Line 1806 of yacc.c */ 8749 #line 2586 "parser.yy" 8750 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8751 break; 8752 8739 8753 case 675: 8740 8754 8741 8755 /* Line 1806 of yacc.c */ 8742 #line 258 6"parser.yy"8756 #line 2588 "parser.yy" 8743 8757 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8744 8758 break; … … 8747 8761 8748 8762 /* Line 1806 of yacc.c */ 8749 #line 259 1"parser.yy"8763 #line 2593 "parser.yy" 8750 8764 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8751 8765 break; … … 8754 8768 8755 8769 /* Line 1806 of yacc.c */ 8756 #line 259 3"parser.yy"8770 #line 2595 "parser.yy" 8757 8771 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8758 8772 break; … … 8761 8775 8762 8776 /* Line 1806 of yacc.c */ 8763 #line 259 5"parser.yy"8777 #line 2597 "parser.yy" 8764 8778 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8765 8779 break; … … 8768 8782 8769 8783 /* Line 1806 of yacc.c */ 8770 #line 260 2"parser.yy"8784 #line 2604 "parser.yy" 8771 8785 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8772 8786 break; … … 8775 8789 8776 8790 /* Line 1806 of yacc.c */ 8777 #line 261 3"parser.yy"8791 #line 2615 "parser.yy" 8778 8792 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8779 8793 break; … … 8782 8796 8783 8797 /* Line 1806 of yacc.c */ 8784 #line 261 6"parser.yy"8798 #line 2618 "parser.yy" 8785 8799 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8786 8800 break; … … 8789 8803 8790 8804 /* Line 1806 of yacc.c */ 8791 #line 26 18"parser.yy"8805 #line 2620 "parser.yy" 8792 8806 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8793 8807 break; … … 8796 8810 8797 8811 /* Line 1806 of yacc.c */ 8798 #line 262 1"parser.yy"8812 #line 2623 "parser.yy" 8799 8813 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8800 8814 break; … … 8803 8817 8804 8818 /* Line 1806 of yacc.c */ 8805 #line 262 3"parser.yy"8819 #line 2625 "parser.yy" 8806 8820 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8807 8821 break; … … 8810 8824 8811 8825 /* Line 1806 of yacc.c */ 8812 #line 262 5"parser.yy"8826 #line 2627 "parser.yy" 8813 8827 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8814 8828 break; 8815 8829 8816 8830 case 689: 8817 8818 /* Line 1806 of yacc.c */8819 #line 2639 "parser.yy"8820 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8821 break;8822 8823 case 690:8824 8831 8825 8832 /* Line 1806 of yacc.c */ … … 8828 8835 break; 8829 8836 8837 case 690: 8838 8839 /* Line 1806 of yacc.c */ 8840 #line 2643 "parser.yy" 8841 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8842 break; 8843 8830 8844 case 691: 8831 8845 8832 8846 /* Line 1806 of yacc.c */ 8833 #line 264 6"parser.yy"8847 #line 2648 "parser.yy" 8834 8848 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8835 8849 break; … … 8838 8852 8839 8853 /* Line 1806 of yacc.c */ 8840 #line 26 48"parser.yy"8854 #line 2650 "parser.yy" 8841 8855 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8842 8856 break; … … 8845 8859 8846 8860 /* Line 1806 of yacc.c */ 8847 #line 265 0"parser.yy"8861 #line 2652 "parser.yy" 8848 8862 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8849 8863 break; … … 8852 8866 8853 8867 /* Line 1806 of yacc.c */ 8854 #line 265 2"parser.yy"8868 #line 2654 "parser.yy" 8855 8869 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8856 8870 break; … … 8859 8873 8860 8874 /* Line 1806 of yacc.c */ 8861 #line 265 4"parser.yy"8875 #line 2656 "parser.yy" 8862 8876 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8863 8877 break; 8864 8878 8865 8879 case 697: 8866 8867 /* Line 1806 of yacc.c */8868 #line 2660 "parser.yy"8869 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8870 break;8871 8872 case 698:8873 8880 8874 8881 /* Line 1806 of yacc.c */ … … 8877 8884 break; 8878 8885 8886 case 698: 8887 8888 /* Line 1806 of yacc.c */ 8889 #line 2664 "parser.yy" 8890 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8891 break; 8892 8879 8893 case 699: 8880 8894 8881 8895 /* Line 1806 of yacc.c */ 8882 #line 266 4"parser.yy"8896 #line 2666 "parser.yy" 8883 8897 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8884 8898 break; … … 8887 8901 8888 8902 /* Line 1806 of yacc.c */ 8889 #line 26 69"parser.yy"8903 #line 2671 "parser.yy" 8890 8904 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8891 8905 break; … … 8894 8908 8895 8909 /* Line 1806 of yacc.c */ 8896 #line 267 1"parser.yy"8910 #line 2673 "parser.yy" 8897 8911 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8898 8912 break; … … 8901 8915 8902 8916 /* Line 1806 of yacc.c */ 8903 #line 268 1"parser.yy"8917 #line 2683 "parser.yy" 8904 8918 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8905 8919 break; … … 8908 8922 8909 8923 /* Line 1806 of yacc.c */ 8910 #line 269 1"parser.yy"8924 #line 2693 "parser.yy" 8911 8925 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8912 8926 break; … … 8915 8929 8916 8930 /* Line 1806 of yacc.c */ 8917 #line 269 3"parser.yy"8931 #line 2695 "parser.yy" 8918 8932 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8919 8933 break; … … 8922 8936 8923 8937 /* Line 1806 of yacc.c */ 8924 #line 269 5"parser.yy"8938 #line 2697 "parser.yy" 8925 8939 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8926 8940 break; … … 8929 8943 8930 8944 /* Line 1806 of yacc.c */ 8931 #line 269 7"parser.yy"8945 #line 2699 "parser.yy" 8932 8946 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8933 8947 break; … … 8936 8950 8937 8951 /* Line 1806 of yacc.c */ 8938 #line 2 699"parser.yy"8952 #line 2701 "parser.yy" 8939 8953 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8940 8954 break; … … 8943 8957 8944 8958 /* Line 1806 of yacc.c */ 8945 #line 270 1"parser.yy"8959 #line 2703 "parser.yy" 8946 8960 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8947 8961 break; … … 8950 8964 8951 8965 /* Line 1806 of yacc.c */ 8952 #line 27 08"parser.yy"8966 #line 2710 "parser.yy" 8953 8967 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8954 8968 break; … … 8957 8971 8958 8972 /* Line 1806 of yacc.c */ 8959 #line 271 0"parser.yy"8973 #line 2712 "parser.yy" 8960 8974 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8961 8975 break; … … 8964 8978 8965 8979 /* Line 1806 of yacc.c */ 8966 #line 271 2"parser.yy"8980 #line 2714 "parser.yy" 8967 8981 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8968 8982 break; … … 8971 8985 8972 8986 /* Line 1806 of yacc.c */ 8973 #line 271 4"parser.yy"8987 #line 2716 "parser.yy" 8974 8988 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8975 8989 break; … … 8978 8992 8979 8993 /* Line 1806 of yacc.c */ 8980 #line 271 6"parser.yy"8994 #line 2718 "parser.yy" 8981 8995 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8982 8996 break; … … 8985 8999 8986 9000 /* Line 1806 of yacc.c */ 8987 #line 27 18"parser.yy"9001 #line 2720 "parser.yy" 8988 9002 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8989 9003 break; … … 8992 9006 8993 9007 /* Line 1806 of yacc.c */ 8994 #line 272 0"parser.yy"9008 #line 2722 "parser.yy" 8995 9009 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8996 9010 break; … … 8999 9013 9000 9014 /* Line 1806 of yacc.c */ 9001 #line 272 2"parser.yy"9015 #line 2724 "parser.yy" 9002 9016 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9003 9017 break; … … 9006 9020 9007 9021 /* Line 1806 of yacc.c */ 9008 #line 272 4"parser.yy"9022 #line 2726 "parser.yy" 9009 9023 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 9010 9024 break; … … 9013 9027 9014 9028 /* Line 1806 of yacc.c */ 9015 #line 272 6"parser.yy"9029 #line 2728 "parser.yy" 9016 9030 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9017 9031 break; … … 9020 9034 9021 9035 /* Line 1806 of yacc.c */ 9022 #line 273 1"parser.yy"9036 #line 2733 "parser.yy" 9023 9037 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 9024 9038 break; … … 9027 9041 9028 9042 /* Line 1806 of yacc.c */ 9029 #line 273 3"parser.yy"9043 #line 2735 "parser.yy" 9030 9044 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 9031 9045 break; … … 9034 9048 9035 9049 /* Line 1806 of yacc.c */ 9036 #line 27 38"parser.yy"9050 #line 2740 "parser.yy" 9037 9051 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9038 9052 break; … … 9041 9055 9042 9056 /* Line 1806 of yacc.c */ 9043 #line 274 0"parser.yy"9057 #line 2742 "parser.yy" 9044 9058 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9045 9059 break; … … 9048 9062 9049 9063 /* Line 1806 of yacc.c */ 9050 #line 276 7"parser.yy"9064 #line 2769 "parser.yy" 9051 9065 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9052 9066 break; … … 9055 9069 9056 9070 /* Line 1806 of yacc.c */ 9057 #line 27 78"parser.yy"9071 #line 2780 "parser.yy" 9058 9072 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9059 9073 break; … … 9062 9076 9063 9077 /* Line 1806 of yacc.c */ 9064 #line 278 0"parser.yy"9078 #line 2782 "parser.yy" 9065 9079 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9066 9080 break; … … 9069 9083 9070 9084 /* Line 1806 of yacc.c */ 9071 #line 278 2"parser.yy"9085 #line 2784 "parser.yy" 9072 9086 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9073 9087 break; … … 9076 9090 9077 9091 /* Line 1806 of yacc.c */ 9078 #line 278 4"parser.yy"9092 #line 2786 "parser.yy" 9079 9093 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9080 9094 break; … … 9083 9097 9084 9098 /* Line 1806 of yacc.c */ 9085 #line 278 6"parser.yy"9099 #line 2788 "parser.yy" 9086 9100 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9087 9101 break; … … 9090 9104 9091 9105 /* Line 1806 of yacc.c */ 9092 #line 27 88"parser.yy"9106 #line 2790 "parser.yy" 9093 9107 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9094 9108 break; … … 9097 9111 9098 9112 /* Line 1806 of yacc.c */ 9099 #line 279 5"parser.yy"9113 #line 2797 "parser.yy" 9100 9114 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9101 9115 break; … … 9104 9118 9105 9119 /* Line 1806 of yacc.c */ 9106 #line 279 7"parser.yy"9120 #line 2799 "parser.yy" 9107 9121 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9108 9122 break; … … 9111 9125 9112 9126 /* Line 1806 of yacc.c */ 9113 #line 2 799"parser.yy"9127 #line 2801 "parser.yy" 9114 9128 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9115 9129 break; … … 9118 9132 9119 9133 /* Line 1806 of yacc.c */ 9120 #line 280 1"parser.yy"9134 #line 2803 "parser.yy" 9121 9135 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9122 9136 break; … … 9125 9139 9126 9140 /* Line 1806 of yacc.c */ 9127 #line 280 3"parser.yy"9141 #line 2805 "parser.yy" 9128 9142 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9129 9143 break; … … 9132 9146 9133 9147 /* Line 1806 of yacc.c */ 9134 #line 280 5"parser.yy"9148 #line 2807 "parser.yy" 9135 9149 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9136 9150 break; … … 9139 9153 9140 9154 /* Line 1806 of yacc.c */ 9141 #line 281 0"parser.yy"9155 #line 2812 "parser.yy" 9142 9156 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9143 9157 break; … … 9146 9160 9147 9161 /* Line 1806 of yacc.c */ 9148 #line 281 5"parser.yy"9162 #line 2817 "parser.yy" 9149 9163 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9150 9164 break; 9151 9165 9152 9166 case 746: 9153 9154 /* Line 1806 of yacc.c */9155 #line 2817 "parser.yy"9156 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }9157 break;9158 9159 case 747:9160 9167 9161 9168 /* Line 1806 of yacc.c */ … … 9164 9171 break; 9165 9172 9173 case 747: 9174 9175 /* Line 1806 of yacc.c */ 9176 #line 2821 "parser.yy" 9177 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9178 break; 9179 9166 9180 case 750: 9167 9181 9168 9182 /* Line 1806 of yacc.c */ 9169 #line 284 3"parser.yy"9183 #line 2845 "parser.yy" 9170 9184 { (yyval.en) = 0; } 9171 9185 break; … … 9174 9188 9175 9189 /* Line 1806 of yacc.c */ 9176 #line 284 5"parser.yy"9190 #line 2847 "parser.yy" 9177 9191 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9178 9192 break; … … 9181 9195 9182 9196 /* Line 1806 of yacc.c */ 9183 #line 91 84"Parser/parser.cc"9197 #line 9198 "Parser/parser.cc" 9184 9198 default: break; 9185 9199 } … … 9412 9426 9413 9427 /* Line 2067 of yacc.c */ 9414 #line 28 48"parser.yy"9428 #line 2850 "parser.yy" 9415 9429 9416 9430 // ----end of grammar---- -
src/Parser/parser.yy
r4e7f0f1 r3b58d91 377 377 { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); } 378 378 | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector 379 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); } 379 380 | postfix_expression ARROW no_attr_identifier 380 381 { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); } 381 382 | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector 383 { $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $5 ) ) ); } 382 384 | postfix_expression ICR 383 385 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); } -
src/ResolvExpr/AlternativeFinder.cc
r4e7f0f1 r3b58d91 251 251 252 252 template< typename StructOrUnionType > 253 void AlternativeFinder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const std::string &name ) { 253 void AlternativeFinder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, Expression * member ) { 254 NameExpr * nameExpr = safe_dynamic_cast< NameExpr * >( member ); 255 const std::string & name = nameExpr->get_name(); 256 254 257 std::list< Declaration* > members; 255 258 aggInst->lookup( name, members ); … … 839 842 renameTypes( alternatives.back().expr ); 840 843 if ( StructInstType *structInst = dynamic_cast< StructInstType* >( (*i)->get_type() ) ) { 841 addAggMembers( structInst, &newExpr, Cost( 0, 0, 1 ), "" ); 844 NameExpr nameExpr( "" ); 845 addAggMembers( structInst, &newExpr, Cost( 0, 0, 1 ), &nameExpr ); 842 846 } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( (*i)->get_type() ) ) { 843 addAggMembers( unionInst, &newExpr, Cost( 0, 0, 1 ), "" ); 847 NameExpr nameExpr( "" ); 848 addAggMembers( unionInst, &newExpr, Cost( 0, 0, 1 ), &nameExpr ); 844 849 } // if 845 850 } // for -
src/ResolvExpr/AlternativeFinder.h
r4e7f0f1 r3b58d91 74 74 private: 75 75 /// Adds alternatives for member expressions, given the aggregate, conversion cost for that aggregate, and name of the member 76 template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const std::string &name);76 template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, Expression * member ); 77 77 /// Adds alternatives for offsetof expressions, given the base type and name of the member 78 78 template< typename StructOrUnionType > void addOffsetof( StructOrUnionType *aggInst, const std::string &name ); -
src/SynTree/Expression.cc
r4e7f0f1 r3b58d91 310 310 } 311 311 312 UntypedMemberExpr::UntypedMemberExpr( std::string_member, Expression *_aggregate, Expression *_aname ) :312 UntypedMemberExpr::UntypedMemberExpr( Expression * _member, Expression *_aggregate, Expression *_aname ) : 313 313 Expression( _aname ), member(_member), aggregate(_aggregate) {} 314 314 315 315 UntypedMemberExpr::UntypedMemberExpr( const UntypedMemberExpr &other ) : 316 Expression( other ), member( other.member), aggregate( maybeClone( other.aggregate ) ) {316 Expression( other ), member( maybeClone( other.member ) ), aggregate( maybeClone( other.aggregate ) ) { 317 317 } 318 318 319 319 UntypedMemberExpr::~UntypedMemberExpr() { 320 320 delete aggregate; 321 delete member; 321 322 } 322 323 323 324 void UntypedMemberExpr::print( std::ostream &os, int indent ) const { 324 os << "Untyped Member Expression, with field: " << get_member(); 325 os << "Untyped Member Expression, with field: " << std::endl; 326 get_member()->print(os, indent+4); 327 os << std::string( indent+2, ' ' ); 325 328 326 329 Expression *agg = get_aggregate(); 327 os << " , from aggregate: ";330 os << "from aggregate: " << std::endl; 328 331 if (agg != 0) { 329 os << std::string( indent + 2, ' ' );330 agg->print(os, indent + 2);332 os << std::string( indent + 4, ' ' ); 333 agg->print(os, indent + 4); 331 334 } 332 335 os << std::string( indent+2, ' ' ); -
src/SynTree/Expression.h
r4e7f0f1 r3b58d91 200 200 class UntypedMemberExpr : public Expression { 201 201 public: 202 UntypedMemberExpr( std::stringmember, Expression *aggregate, Expression *_aname = nullptr );202 UntypedMemberExpr( Expression *member, Expression *aggregate, Expression *_aname = nullptr ); 203 203 UntypedMemberExpr( const UntypedMemberExpr &other ); 204 204 virtual ~UntypedMemberExpr(); 205 205 206 std::stringget_member() const { return member; }207 void set_member( const std::string &newValue ) { member = newValue; }206 Expression * get_member() const { return member; } 207 void set_member( Expression * newValue ) { member = newValue; } 208 208 Expression *get_aggregate() const { return aggregate; } 209 209 void set_aggregate( Expression *newValue ) { aggregate = newValue; } … … 214 214 virtual void print( std::ostream &os, int indent = 0 ) const; 215 215 private: 216 std::stringmember;216 Expression *member; 217 217 Expression *aggregate; 218 218 }; … … 618 618 CompoundLiteralExpr( Type * type, Initializer * initializer ); 619 619 CompoundLiteralExpr( const CompoundLiteralExpr &other ); 620 ~CompoundLiteralExpr();620 virtual ~CompoundLiteralExpr(); 621 621 622 622 Type * get_type() const { return type; } … … 651 651 private: 652 652 Expression *low, *high; 653 }; 654 655 /// TupleIndexExpr represents an element selection operation on a tuple value, e.g. t.3 after processing by the expression analyzer 656 class TupleIndexExpr : public Expression { 657 public: 658 TupleIndexExpr( Expression * tuple, unsigned int index ); 659 TupleIndexExpr( const TupleIndexExpr &other ); 660 virtual ~TupleIndexExpr(); 661 662 Expression * get_tuple() const { return tuple; } 663 int get_index() const { return index; } 664 TupleIndexExpr * set_tuple( Expression *newValue ) { tuple = newValue; return this; } 665 TupleIndexExpr * set_index( unsigned int newValue ) { index = newValue; return this; } 666 667 virtual TupleIndexExpr *clone() const { return new TupleIndexExpr( *this ); } 668 virtual void accept( Visitor &v ) { v.visit( this ); } 669 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 670 virtual void print( std::ostream &os, int indent = 0 ) const; 671 private: 672 Expression * tuple; 673 unsigned int index; 674 }; 675 676 /// MemberTupleExpr represents a tuple member selection operation on a struct type, e.g. s.[a, b, c] after processing by the expression analyzer 677 class MemberTupleExpr : public Expression { 678 public: 679 MemberTupleExpr( Expression * member, Expression * aggregate, Expression * _aname = nullptr ); 680 MemberTupleExpr( const MemberTupleExpr &other ); 681 virtual ~MemberTupleExpr(); 682 683 Expression * get_member() const { return member; } 684 Expression * get_aggregate() const { return aggregate; } 685 MemberTupleExpr * set_member( Expression *newValue ) { member = newValue; return this; } 686 MemberTupleExpr * set_aggregate( Expression *newValue ) { aggregate = newValue; return this; } 687 688 virtual MemberTupleExpr *clone() const { return new MemberTupleExpr( *this ); } 689 virtual void accept( Visitor &v ) { v.visit( this ); } 690 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 691 virtual void print( std::ostream &os, int indent = 0 ) const; 692 private: 693 Expression * member; 694 Expression * aggregate; 695 }; 696 697 /// MultipleAssignExpr represents a multiple assignment operation, where both sides of the assignment have tuple type, e.g. [a, b, c] = [d, e, f]; 698 class MultipleAssignExpr : public Expression { 699 public: 700 MultipleAssignExpr( Expression * lhs, Expression * rhs ); 701 MultipleAssignExpr( const MultipleAssignExpr &other ); 702 virtual ~MultipleAssignExpr(); 703 704 Expression * get_lhs() const { return lhs; } 705 Expression * get_rhs() const { return rhs; } 706 MultipleAssignExpr * set_lhs( Expression *newValue ) { lhs = newValue; return this; } 707 MultipleAssignExpr * set_rhs( Expression *newValue ) { rhs = newValue; return this; } 708 709 virtual MultipleAssignExpr *clone() const { return new MultipleAssignExpr( *this ); } 710 virtual void accept( Visitor &v ) { v.visit( this ); } 711 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 712 virtual void print( std::ostream &os, int indent = 0 ) const; 713 private: 714 Expression * lhs; 715 Expression * rhs; 716 }; 717 718 /// MassAssignExpr represents a mass assignment operations, where the left hand side has tuple type and the right hand side does not, e.g. [a, b, c] = 5.0; 719 class MassAssignExpr : public Expression { 720 public: 721 MassAssignExpr( Expression * tuple, int field ); 722 MassAssignExpr( const MassAssignExpr &other ); 723 virtual ~MassAssignExpr(); 724 725 Expression * get_lhs() const { return lhs; } 726 Expression * get_rhs() const { return rhs; } 727 MassAssignExpr * set_lhs( Expression *newValue ) { lhs = newValue; return this; } 728 MassAssignExpr * set_rhs( Expression *newValue ) { rhs = newValue; return this; } 729 730 virtual MassAssignExpr *clone() const { return new MassAssignExpr( *this ); } 731 virtual void accept( Visitor &v ) { v.visit( this ); } 732 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 733 virtual void print( std::ostream &os, int indent = 0 ) const; 734 private: 735 Expression * lhs; // multiple exprs 736 Expression * rhs; // single expr 653 737 }; 654 738 -
src/SynTree/Mutator.cc
r4e7f0f1 r3b58d91 216 216 mutateAll( memberExpr->get_results(), *this ); 217 217 memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) ); 218 memberExpr->set_member( maybeMutate( memberExpr->get_member(), *this ) ); 218 219 return memberExpr; 219 220 } … … 355 356 rangeExpr->set_high( maybeMutate( rangeExpr->get_high(), *this ) ); 356 357 return rangeExpr; 358 } 359 360 Expression *Mutator::mutate( TupleIndexExpr *tupleExpr ) { 361 mutateAll( tupleExpr->get_results(), *this ); 362 tupleExpr->set_tuple( maybeMutate( tupleExpr->get_tuple(), *this ) ); 363 return tupleExpr; 364 } 365 366 Expression *Mutator::mutate( MemberTupleExpr *tupleExpr ) { 367 mutateAll( tupleExpr->get_results(), *this ); 368 tupleExpr->set_member( maybeMutate( tupleExpr->get_member(), *this ) ); 369 tupleExpr->set_aggregate( maybeMutate( tupleExpr->get_aggregate(), *this ) ); 370 return tupleExpr; 371 } 372 373 Expression *Mutator::mutate( MultipleAssignExpr *assignExpr ) { 374 mutateAll( assignExpr->get_results(), *this ); 375 assignExpr->set_lhs( maybeMutate( assignExpr->get_lhs(), *this ) ); 376 assignExpr->set_rhs( maybeMutate( assignExpr->get_rhs(), *this ) ); 377 return assignExpr; 378 } 379 380 Expression *Mutator::mutate( MassAssignExpr *assignExpr ) { 381 mutateAll( assignExpr->get_results(), *this ); 382 assignExpr->set_lhs( maybeMutate( assignExpr->get_lhs(), *this ) ); 383 assignExpr->set_rhs( maybeMutate( assignExpr->get_rhs(), *this ) ); 384 return assignExpr; 357 385 } 358 386 -
src/SynTree/Mutator.h
r4e7f0f1 r3b58d91 79 79 virtual Expression* mutate( CompoundLiteralExpr *compLitExpr ); 80 80 virtual Expression* mutate( RangeExpr *rangeExpr ); 81 virtual Expression* mutate( TupleIndexExpr *tupleExpr ); 82 virtual Expression* mutate( MemberTupleExpr *tupleExpr ); 83 virtual Expression* mutate( MultipleAssignExpr *assignExpr ); 84 virtual Expression* mutate( MassAssignExpr *assignExpr ); 81 85 82 86 virtual Type* mutate( VoidType *basicType ); -
src/SynTree/SynTree.h
r4e7f0f1 r3b58d91 84 84 class CompoundLiteralExpr; 85 85 class RangeExpr; 86 class TupleIndexExpr; 87 class MemberTupleExpr; 88 class MultipleAssignExpr; 89 class MassAssignExpr; 86 90 87 91 class Type; -
src/SynTree/TupleExpr.cc
r4e7f0f1 r3b58d91 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // TupleExpr.cc -- 7 // TupleExpr.cc -- 8 8 // 9 9 // Author : Richard C. Bilson … … 16 16 #include "Expression.h" 17 17 #include "Common/utility.h" 18 #include "Type.h" 18 19 19 20 TupleExpr::TupleExpr( Expression *_aname ) : Expression( _aname ) { … … 48 49 } 49 50 51 TupleIndexExpr::TupleIndexExpr( Expression * tuple, unsigned int index ) { 52 // TupleType * type = safe_dynamic_cast< TypeType * >( tuple->get_ ) 53 assert( tuple->get_results().size() >= index ); 54 add_result( *std::next( tuple->get_results().begin(), index ) ); 55 } 56 57 TupleIndexExpr::TupleIndexExpr( const TupleIndexExpr &other ) : Expression( other ), tuple( other.tuple->clone() ), index( other.index ) { 58 } 59 60 TupleIndexExpr::~TupleIndexExpr() { 61 delete tuple; 62 } 63 64 void TupleIndexExpr::print( std::ostream &os, int indent ) const { 65 os << std::string( indent, ' ' ) << "Tuple Index Expression, with tuple:" << std::endl; 66 tuple->print( os, indent+2 ); 67 os << std::string( indent+2, ' ' ) << "with index: " << index << std::endl; 68 Expression::print( os, indent ); 69 } 70 71 MemberTupleExpr::MemberTupleExpr( Expression * member, Expression * aggregate, Expression * _aname ) : Expression( _aname ) { 72 cloneAll( member->get_results(), get_results() ); // xxx - ??? 73 } 74 75 MemberTupleExpr::MemberTupleExpr( const MemberTupleExpr &other ) : Expression( other ), member( other.member->clone() ), aggregate( other.aggregate->clone() ) { 76 } 77 78 MemberTupleExpr::~MemberTupleExpr() { 79 delete member; 80 delete aggregate; 81 } 82 83 void MemberTupleExpr::print( std::ostream &os, int indent ) const { 84 os << std::string( indent, ' ' ) << "Member Tuple Expression, with aggregate:" << std::endl; 85 aggregate->print( os, indent+2 ); 86 os << std::string( indent+2, ' ' ) << "with member: " << std::endl; 87 member->print( os, indent+2 ); 88 Expression::print( os, indent ); 89 } 90 91 50 92 // Local Variables: // 51 93 // tab-width: 4 // -
src/SynTree/Visitor.cc
r4e7f0f1 r3b58d91 182 182 acceptAll( memberExpr->get_results(), *this ); 183 183 maybeAccept( memberExpr->get_aggregate(), *this ); 184 maybeAccept( memberExpr->get_member(), *this ); 184 185 } 185 186 … … 301 302 maybeAccept( rangeExpr->get_low(), *this ); 302 303 maybeAccept( rangeExpr->get_high(), *this ); 304 } 305 306 void Visitor::visit( TupleIndexExpr *tupleExpr ) { 307 acceptAll( tupleExpr->get_results(), *this ); 308 maybeAccept( tupleExpr->get_tuple(), *this ); 309 } 310 311 void Visitor::visit( MemberTupleExpr *tupleExpr ) { 312 acceptAll( tupleExpr->get_results(), *this ); 313 maybeAccept( tupleExpr->get_member(), *this ); 314 maybeAccept( tupleExpr->get_aggregate(), *this ); 315 } 316 317 void Visitor::visit( MultipleAssignExpr *assignExpr ) { 318 acceptAll( assignExpr->get_results(), *this ); 319 maybeAccept( assignExpr->get_lhs(), *this ); 320 maybeAccept( assignExpr->get_rhs(), *this ); 321 } 322 323 void Visitor::visit( MassAssignExpr *assignExpr ) { 324 acceptAll( assignExpr->get_results(), *this ); 325 maybeAccept( assignExpr->get_lhs(), *this ); 326 maybeAccept( assignExpr->get_rhs(), *this ); 303 327 } 304 328 -
src/SynTree/Visitor.h
r4e7f0f1 r3b58d91 79 79 virtual void visit( CompoundLiteralExpr *compLitExpr ); 80 80 virtual void visit( RangeExpr *rangeExpr ); 81 virtual void visit( TupleIndexExpr *tupleExpr ); 82 virtual void visit( MemberTupleExpr *tupleExpr ); 83 virtual void visit( MultipleAssignExpr *assignExpr ); 84 virtual void visit( MassAssignExpr *assignExpr ); 81 85 82 86 virtual void visit( VoidType *basicType );
Note: See TracChangeset
for help on using the changeset viewer.