Changes in / [b29f8f3:1e8f143]
- Location:
- src
- Files:
-
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jul 15 14:47:42201513 // Update Count : 1 7711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jun 26 16:52:58 2015 13 // Update Count : 144 14 14 // 15 15 … … 38 38 int CodeGenerator::tabsize = 4; 39 39 40 // the kinds of statements that would ideally be followed bywhitespace40 // the kinds of statements that would ideally be separated by more whitespace 41 41 bool wantSpacing( Statement * stmt) { 42 42 return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) || … … 588 588 589 589 void CodeGenerator::visit( ForStmt *forStmt ) { 590 // initialization is always hoisted, so don't 591 // bother doing anything with that 592 output << "for (;"; 593 590 output << "for ("; 591 592 if ( forStmt->get_initialization() != 0 ) 593 forStmt->get_initialization()->accept( *this ); 594 else 595 output << ";"; 596 594 597 if ( forStmt->get_condition() != 0 ) 595 598 forStmt->get_condition()->accept( *this ); -
src/CodeGen/GenType.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Jul 9 16:43:52201513 // Update Count : 1 311 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Jul 08 16:08:24 2015 13 // Update Count : 10 14 14 // 15 15 … … 93 93 os << "_Atomic "; 94 94 } // if 95 if ( qualifiers.isAttribute ) {96 os << "__attribute(( )) ";97 } // if98 95 if ( dimension != 0 ) { 99 96 CodeGenerator cg( os ); 100 97 dimension->accept( cg ); 101 98 } else if ( isVarLen ) { 102 // no dimension expression on a VLA means it came in with the * token 99 // no dimension expression on a VLA 100 // means it came in with the * token 103 101 os << "*"; 104 102 } // if … … 204 202 typeString = "_Atomic " + typeString; 205 203 } // if 206 if ( type->get_isAttribute() ) {207 typeString = "__attribute(( )) " + typeString;208 } // if209 204 } 210 205 } // namespace CodeGen -
src/ControlStruct/ForExprMutator.cc
rb29f8f3 r1e8f143 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Jul 14 12:14:44201513 // Update Count : 1011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 15:31:47 2015 13 // Update Count : 2 14 14 // 15 15 … … 22 22 // recurse down all nest for loops to hoist any initializer declarations to make them C89 (rather than C99) 23 23 forStmt->set_body( forStmt->get_body()->acceptMutator( *this ) ); 24 if ( DeclStmt *decl = dynamic_cast< DeclStmt * > ( forStmt->get_initialization() ) ) { 25 // create compound statement, move initializer declaration outside, leave _for_ as-is 26 CompoundStmt *block = new CompoundStmt( std::list< Label >() ); 27 std::list<Statement *> &stmts = block->get_kids(); 24 28 25 std::list<Statement *> &init = forStmt->get_initialization(); 26 if ( init.size() == 0 ) { 27 return forStmt; 29 stmts.push_back( decl ); 30 forStmt->set_initialization( 0 ); 31 stmts.push_back( forStmt ); 32 33 return block; 28 34 } // if 29 30 // create compound statement, move initializers outside, leave _for_ as-is31 CompoundStmt *block = new CompoundStmt( std::list< Label >() );32 std::list<Statement *> &stmts = block->get_kids();33 for ( std::list<Statement *>::iterator it = init.begin(); it != init.end(); ++it ) {34 stmts.push_back( *it );35 } // for36 37 // add for to the new block38 stmts.push_back( forStmt );39 forStmt->set_initialization( std::list<Statement *>() );40 return block;41 35 42 36 return forStmt; -
src/ControlStruct/MLEMutator.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Jul 20 13:58:35 2015 13 // Update Count : 176 14 // 15 16 // NOTE: There are two known subtle differences from the code that uC++ 17 // generates for the same input 18 // -CFA puts the break label inside at the end of a switch, uC++ puts it after 19 // -CFA puts the break label after a block, uC++ puts it inside at the end 20 // we don't yet know if these differences are important, but if they are then 21 // the fix would go in this file, since this is where these labels are generated. 12 // Last Modified On : Sat Jun 27 10:56:14 2015 13 // Update Count : 174 14 // 22 15 23 16 #include <cassert> -
src/ControlStruct/Mutate.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Ju l 15 14:50:04201513 // Update Count : 712 // Last Modified On : Wed Jun 03 23:08:43 2015 13 // Update Count : 5 14 14 // 15 15 … … 36 36 namespace ControlStruct { 37 37 void mutate( std::list< Declaration * > translationUnit ) { 38 // hoist initialization out of for statements 39 ForExprMutator formut; 38 // ForExprMutator formut; 40 39 41 40 // normalizes label definitions and generates multi-level … … 52 51 // LabelTypeChecker lbl; 53 52 54 mutateAll( translationUnit, formut );53 // mutateAll( translationUnit, formut ); 55 54 acceptAll( translationUnit, lfix ); 56 55 mutateAll( translationUnit, chmut ); -
src/GenPoly/PolyMutator.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jul 15 14:50:58201513 // Update Count : 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:45:50 2015 13 // Update Count : 1 14 14 // 15 15 … … 92 92 Statement * PolyMutator::mutate(ForStmt *forStmt) { 93 93 forStmt->set_body( mutateStatement( forStmt->get_body() ) ); 94 mutateAll( forStmt->get_initialization(), *this);94 forStmt->set_initialization( maybeMutate( forStmt->get_initialization(), *this ) ); 95 95 forStmt->set_condition( mutateExpression( forStmt->get_condition() ) ); 96 96 forStmt->set_increment( mutateExpression( forStmt->get_increment() ) ); -
src/Parser/DeclarationNode.cc
rb29f8f3 r1e8f143 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 12:34:05 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Tue Jul 14 14:46:32201513 // Update Count : 12 611 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Jul 08 16:40:37 2015 13 // Update Count : 121 14 14 // 15 15 … … 472 472 if ( o->get_link() ) { 473 473 set_link( o->get_link()->clone() ); 474 } // if 474 } 475 475 476 } // if 476 477 delete o; -
src/Parser/ParseNode.h
rb29f8f3 r1e8f143 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Jul 14 14:58:25 201513 // Update Count : 9112 // Last Modified On : Thu Jul 2 17:57:05 2015 13 // Update Count : 84 14 14 // 15 15 … … 265 265 class DeclarationNode : public ParseNode { 266 266 public: 267 enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic };267 enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Attribute }; 268 268 enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, }; 269 269 enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary }; … … 352 352 std::string name; 353 353 std::list< StorageClass > storageClasses; 354 std::list< std::string > attributes;355 354 ExpressionNode *bitfieldWidth; 356 355 InitializerNode *initializer; … … 359 358 360 359 static UniqueName anonymous; 361 }; // DeclarationNode360 }; 362 361 363 362 class StatementNode : public ParseNode { … … 381 380 static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false ); 382 381 383 StatementNode *set_block( StatementNode *b ) { block = b; return this; } 384 StatementNode *get_block() const { return block; } 385 386 void set_control( ExpressionNode *c ) { control = c; } 387 ExpressionNode *get_control() const { return control; } 388 389 StatementNode::Type get_type() const { return type; } 382 void set_control( ExpressionNode * ); 383 StatementNode * set_block( StatementNode * ); 384 385 ExpressionNode *get_control() const ; 386 StatementNode *get_block() const; 387 StatementNode::Type get_type() const; 390 388 391 389 StatementNode *add_label( const std::string * ); 392 const std::list<std::string> &get_labels() const { return labels; }390 std::list<std::string> *get_labels() const; 393 391 394 392 void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; } … … 411 409 ExpressionNode *control; 412 410 StatementNode *block; 413 std::list<std::string> labels;411 std::list<std::string> *labels; 414 412 std::string *target; // target label for jump statements 415 413 DeclarationNode *decl; 416 414 417 415 bool isCatchRest; 418 }; // StatementNode416 }; 419 417 420 418 class CompoundStmtNode : public StatementNode { -
src/Parser/StatementNode.cc
rb29f8f3 r1e8f143 10 10 // Created On : Sat May 16 14:59:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 16 16:20:24201513 // Update Count : 3012 // Last Modified On : Sat Jun 6 23:25:41 2015 13 // Update Count : 19 14 14 // 15 15 … … 72 72 delete control; 73 73 delete block; 74 delete labels; 74 75 delete target; 75 76 delete decl; … … 102 103 } 103 104 105 void StatementNode::set_control( ExpressionNode *c ) { 106 control = c; 107 } 108 109 StatementNode * StatementNode::set_block( StatementNode *b ) { 110 block = b; 111 112 return this; 113 } 114 115 ExpressionNode *StatementNode::get_control() const { 116 return control; 117 } 118 119 StatementNode *StatementNode::get_block() const { 120 return block; 121 } 122 123 StatementNode::Type StatementNode::get_type() const { 124 return type; 125 } 126 104 127 StatementNode *StatementNode::add_label( const std::string *l ) { 105 128 if ( l != 0 ) { 106 labels.push_front( *l ); 129 if ( labels == 0 ) 130 labels = new std::list<std::string>(); 131 132 labels->push_front(*l ); 107 133 delete l; 108 134 } // if 109 135 return this; 110 136 } 137 138 std::list<std::string> *StatementNode::get_labels() const { return labels; } 111 139 112 140 StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) { … … 142 170 143 171 void StatementNode::print( std::ostream &os, int indent ) const { 144 if ( ! labels.empty()) { 145 std::list<std::string>::const_iterator i; 146 147 os << string( indent, ' ' ); 148 for ( i = labels.begin(); i != labels.end(); i++ ) 149 os << *i << ":"; 150 os << endl; 172 if ( labels != 0 ) { 173 if ( ! labels->empty()) { 174 std::list<std::string>::const_iterator i; 175 176 os << string( indent, ' ' ); 177 for ( i = labels->begin(); i != labels->end(); i++ ) 178 os << *i << ":"; 179 os << endl; 180 } // if 151 181 } // if 152 182 … … 195 225 std::list<Label> labs; 196 226 197 if ( ! labels.empty()) {227 if ( labels != 0 ) { 198 228 std::back_insert_iterator< std::list<Label> > lab_it( labs ); 199 copy( labels .begin(), labels.end(), lab_it );229 copy( labels->begin(), labels->end(), lab_it ); 200 230 } // if 201 231 … … 241 271 assert( ctl != 0 ); 242 272 243 std::list<Statement *> init; 244 if ( ctl->get_init() != 0 ) { 245 buildList( ctl->get_init(), init ); 246 } // if 273 Statement *stmt = 0; 274 if ( ctl->get_init() != 0 ) 275 stmt = ctl->get_init()->build(); 247 276 248 277 Expression *cond = 0; … … 254 283 incr = ctl->get_change()->build(); 255 284 256 return new ForStmt( labs, init, cond, incr, branches.front() );285 return new ForStmt( labs, stmt, cond, incr, branches.front() ); 257 286 } 258 287 case Switch: … … 348 377 Statement *CompoundStmtNode::build() const { 349 378 std::list<Label> labs; 350 const std::list<std::string> &labels = get_labels();351 352 if ( ! labels.empty()) {379 std::list<std::string> *labels = get_labels(); 380 381 if ( labels != 0 ) { 353 382 std::back_insert_iterator< std::list<Label> > lab_it( labs ); 354 copy( labels .begin(), labels.end(), lab_it );383 copy( labels->begin(), labels->end(), lab_it ); 355 384 } // if 356 385 -
src/Parser/TypeData.cc
rb29f8f3 r1e8f143 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 14 14:57:23201513 // Update Count : 3212 // Last Modified On : Fri Jun 26 07:30:06 2015 13 // Update Count : 26 14 14 // 15 15 … … 397 397 } // if 398 398 break; 399 default:400 os << "internal error: TypeData::print " << kind << endl;401 assert( false );402 399 } // switch 403 400 } … … 477 474 return buildVariable(); 478 475 } else { 479 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, isInline, isNoreturn ); 476 if ( isInline || isNoreturn ) { 477 throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this ); 478 } else { 479 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init ); 480 } // if 480 481 } // if 481 482 return 0; … … 535 536 case DeclarationNode::Atomic: 536 537 q.isAtomic = true; 538 break; 539 case DeclarationNode::Attribute: 540 q.isAttribute = true; 537 541 break; 538 542 } // switch -
src/Parser/parser.cc
rb29f8f3 r1e8f143 80 80 #include "lex.h" 81 81 #include "ParseNode.h" 82 #include "TypeData.h"83 82 #include "LinkageSpec.h" 84 83 … … 90 89 91 90 /* Line 268 of yacc.c */ 92 #line 9 3"Parser/parser.cc"91 #line 92 "Parser/parser.cc" 93 92 94 93 /* Enabling traces. */ … … 325 324 326 325 /* Line 293 of yacc.c */ 327 #line 10 8"parser.yy"326 #line 107 "parser.yy" 328 327 329 328 Token tok; … … 340 339 341 340 /* Line 293 of yacc.c */ 342 #line 34 3"Parser/parser.cc"341 #line 342 "Parser/parser.cc" 343 342 } YYSTYPE; 344 343 # define YYSTYPE_IS_TRIVIAL 1 … … 352 351 353 352 /* Line 343 of yacc.c */ 354 #line 35 5"Parser/parser.cc"353 #line 354 "Parser/parser.cc" 355 354 356 355 #ifdef short … … 983 982 static const yytype_uint16 yyrline[] = 984 983 { 985 0, 2 82, 282, 288, 297, 298, 299, 303, 304, 305,986 30 9, 310, 314, 318, 319, 323, 324, 330, 332, 334,987 33 6, 338, 340, 345, 346, 352, 354, 356, 357, 359,988 3 60, 362, 365, 370, 371, 377, 378, 379, 384, 386,989 3 91, 392, 396, 398, 400, 402, 404, 409, 410, 412,990 41 4, 416, 418, 420, 426, 428, 430, 432, 434, 436,991 43 8, 440, 445, 446, 447, 448, 452, 453, 455, 460,992 4 61, 463, 465, 470, 471, 473, 478, 479, 481, 486,993 48 7, 489, 491, 493, 498, 499, 501, 506, 507, 512,994 51 3, 518, 519, 524, 525, 530, 531, 536, 537, 539,995 5 41, 546, 551, 552, 554, 556, 562, 563, 569, 571,996 57 3, 575, 580, 581, 586, 587, 588, 589, 590, 591,997 5 92, 593, 594, 595, 599, 600, 606, 607, 613, 614,998 61 5, 616, 617, 618, 619, 620, 624, 631, 633, 643,999 6 44, 649, 651, 653, 655, 659, 660, 665, 670, 673,1000 67 5, 677, 682, 684, 692, 693, 695, 699, 700, 705,1001 70 6, 711, 712, 716, 721, 722, 726, 728, 734, 735,1002 73 9, 741, 743, 745, 751, 752, 756, 757, 761, 763,1003 76 5, 770, 772, 777, 779, 783, 786, 790, 793, 797,1004 79 9, 801, 806, 808, 810, 819, 821, 823, 828, 830,1005 83 5, 848, 849, 854, 856, 861, 865, 867, 869, 871,1006 87 5, 877, 881, 882, 886, 890, 891, 897, 899, 903,1007 904, 909, 911, 915, 916, 920, 922, 926, 927, 931,1008 9 32, 936, 937, 952, 953, 954, 955, 956, 960, 965,1009 9 72, 982, 987, 992, 1000, 1005, 1010, 1015, 1020, 1028,1010 10 50, 1055, 1062, 1064, 1071, 1076, 1081, 1092, 1097, 1102,1011 110 7, 1112, 1121, 1126, 1134, 1135, 1136, 1137, 1143, 1148,1012 115 6, 1157, 1158, 1159, 1163, 1164, 1165, 1166, 1171, 1172,1013 11 81, 1182, 1187, 1188, 1193, 1195, 1197, 1199, 1201, 1204,1014 1 203, 1215, 1216, 1218, 1228, 1229, 1234, 1238, 1240, 1242,1015 12 44, 1246, 1248, 1250, 1252, 1257, 1259, 1261, 1263, 1265,1016 126 7, 1269, 1271, 1273, 1275, 1277, 1279, 1285, 1286, 1288,1017 12 90, 1292, 1297, 1298, 1304, 1305, 1307, 1309, 1314, 1316,1018 131 8, 1320, 1325, 1326, 1328, 1330, 1335, 1336, 1338, 1343,1019 13 44, 1346, 1348, 1353, 1355, 1357, 1362, 1363, 1367, 1369,1020 13 71, 1373, 1375, 1380, 1382, 1387, 1389, 1394, 1395, 1397,1021 139 8, 1403, 1404, 1406, 1408, 1413, 1415, 1421, 1422, 1424,1022 142 7, 1430, 1435, 1436, 1441, 1446, 1450, 1452, 1454, 1459,1023 14 61, 1467, 1468, 1476, 1477, 1481, 1482, 1483, 1485, 1487,1024 14 94, 1495, 1497, 1499, 1504, 1505, 1511, 1512, 1516, 1517,1025 15 22, 1523, 1524, 1526, 1534, 1535, 1537, 1540, 1542, 1546,1026 154 7, 1548, 1550, 1552, 1556, 1561, 1569, 1570, 1579, 1581,1027 158 6, 1587, 1588, 1592, 1593, 1594, 1598, 1599, 1600, 1604,1028 160 5, 1606, 1611, 1612, 1613, 1614, 1620, 1621, 1626, 1627,1029 16 31, 1632, 1633, 1634, 1649, 1650, 1655, 1656, 1662, 1664,1030 166 7, 1669, 1671, 1694, 1695, 1697, 1699, 1704, 1705, 1707,1031 17 12, 1717, 1718, 1724, 1723, 1727, 1731, 1733, 1735, 1741,1032 17 42, 1747, 1752, 1754, 1759, 1761, 1762, 1764, 1769, 1771,1033 17 73, 1778, 1780, 1785, 1790, 1798, 1804, 1803, 1817, 1818,1034 18 23, 1824, 1828, 1833, 1838, 1846, 1851, 1862, 1863, 1874,1035 187 5, 1881, 1882, 1886, 1887, 1888, 1891, 1890, 1901, 1906,1036 19 11, 1917, 1926, 1932, 1938, 1944, 1950, 1958, 1964, 1972,1037 197 8, 1987, 1988, 1989, 1993, 1997, 1999, 2004, 2005, 2009,1038 20 10, 2015, 2021, 2022, 2025, 2027, 2028, 2032, 2033, 2034,1039 20 35, 2069, 2071, 2072, 2074, 2079, 2084, 2089, 2091, 2093,1040 20 98, 2100, 2102, 2104, 2109, 2111, 2121, 2123, 2124, 2129,1041 21 31, 2133, 2138, 2140, 2142, 2147, 2149, 2151, 2160, 2161,1042 21 62, 2166, 2168, 2170, 2175, 2177, 2179, 2184, 2186, 2188,1043 2 203, 2205, 2206, 2208, 2213, 2214, 2219, 2221, 2223, 2228,1044 22 30, 2232, 2234, 2239, 2241, 2243, 2253, 2255, 2256, 2258,1045 22 63, 2265, 2267, 2272, 2274, 2276, 2278, 2283, 2285, 2287,1046 2 318, 2320, 2321, 2323, 2328, 2333, 2341, 2343, 2345, 2350,1047 23 52, 2357, 2359, 2373, 2374, 2376, 2381, 2383, 2385, 2387,1048 23 89, 2394, 2395, 2397, 2399, 2404, 2406, 2408, 2414, 2416,1049 2 418, 2422, 2424, 2426, 2428, 2442, 2443, 2445, 2450, 2452,1050 24 54, 2456, 2458, 2463, 2464, 2466, 2468, 2473, 2475, 2477,1051 24 83, 2484, 2486, 2495, 2498, 2500, 2503, 2505, 2507, 2520,1052 2 521, 2523, 2528, 2530, 2532, 2534, 2536, 2541, 2542, 2544,1053 25 46, 2551, 2553, 2561, 2562, 2563, 2568, 2569, 2573, 2575,1054 25 77, 2579, 2581, 2583, 2590, 2592, 2594, 2596, 2598, 2600,1055 2 602, 2604, 2606, 2608, 2613, 2615, 2617, 2622, 2648, 2649,1056 26 51, 2655, 2656, 2660, 2662, 2664, 2666, 2668, 2670, 2677,1057 26 79, 2681, 2683, 2685, 2687, 2692, 2697, 2699, 2701, 2719,1058 2 721, 2726, 2727984 0, 279, 279, 285, 294, 295, 296, 300, 301, 302, 985 306, 307, 311, 315, 316, 320, 321, 327, 329, 331, 986 333, 335, 337, 342, 343, 349, 351, 353, 354, 356, 987 357, 359, 362, 367, 368, 374, 375, 376, 381, 383, 988 388, 389, 393, 395, 397, 399, 401, 406, 407, 409, 989 411, 413, 415, 417, 423, 425, 427, 429, 431, 433, 990 435, 437, 442, 443, 444, 445, 449, 450, 452, 457, 991 458, 460, 462, 467, 468, 470, 475, 476, 478, 483, 992 484, 486, 488, 490, 495, 496, 498, 503, 504, 509, 993 510, 515, 516, 521, 522, 527, 528, 533, 534, 536, 994 538, 543, 548, 549, 551, 553, 559, 560, 566, 568, 995 570, 572, 577, 578, 583, 584, 585, 586, 587, 588, 996 589, 590, 591, 592, 596, 597, 603, 604, 610, 611, 997 612, 613, 614, 615, 616, 617, 621, 626, 628, 638, 998 639, 644, 646, 648, 650, 654, 655, 660, 665, 668, 999 670, 672, 677, 679, 687, 688, 690, 694, 695, 700, 1000 701, 706, 707, 711, 716, 717, 721, 723, 729, 730, 1001 734, 736, 738, 740, 746, 747, 751, 752, 756, 758, 1002 760, 765, 767, 772, 774, 778, 781, 785, 788, 792, 1003 794, 796, 801, 803, 805, 814, 816, 818, 823, 825, 1004 830, 843, 844, 849, 851, 856, 860, 862, 864, 866, 1005 870, 872, 876, 877, 881, 885, 886, 892, 894, 898, 1006 899, 904, 906, 910, 911, 915, 917, 921, 922, 926, 1007 927, 931, 932, 947, 948, 949, 950, 951, 955, 960, 1008 967, 977, 982, 987, 995, 1000, 1005, 1010, 1015, 1023, 1009 1045, 1050, 1057, 1059, 1066, 1071, 1076, 1087, 1092, 1097, 1010 1102, 1107, 1116, 1121, 1129, 1130, 1131, 1132, 1138, 1143, 1011 1151, 1152, 1153, 1154, 1158, 1159, 1160, 1161, 1166, 1167, 1012 1176, 1177, 1182, 1183, 1188, 1190, 1192, 1194, 1196, 1199, 1013 1198, 1210, 1211, 1213, 1223, 1224, 1229, 1233, 1235, 1237, 1014 1239, 1241, 1243, 1245, 1247, 1252, 1254, 1256, 1258, 1260, 1015 1262, 1264, 1266, 1268, 1270, 1272, 1274, 1280, 1281, 1283, 1016 1285, 1287, 1292, 1293, 1299, 1300, 1302, 1304, 1309, 1311, 1017 1313, 1315, 1320, 1321, 1323, 1325, 1330, 1331, 1333, 1338, 1018 1339, 1341, 1343, 1348, 1350, 1352, 1357, 1358, 1362, 1364, 1019 1366, 1368, 1370, 1375, 1377, 1382, 1384, 1389, 1390, 1392, 1020 1393, 1398, 1399, 1401, 1403, 1408, 1410, 1416, 1417, 1419, 1021 1422, 1425, 1430, 1431, 1436, 1441, 1445, 1447, 1449, 1454, 1022 1456, 1462, 1463, 1471, 1472, 1476, 1477, 1478, 1480, 1482, 1023 1489, 1490, 1492, 1494, 1499, 1500, 1506, 1507, 1511, 1512, 1024 1517, 1518, 1519, 1521, 1529, 1530, 1532, 1535, 1537, 1541, 1025 1542, 1543, 1545, 1547, 1551, 1556, 1564, 1565, 1574, 1576, 1026 1581, 1582, 1583, 1587, 1588, 1589, 1593, 1594, 1595, 1599, 1027 1600, 1601, 1606, 1607, 1608, 1609, 1615, 1616, 1621, 1622, 1028 1626, 1627, 1628, 1629, 1644, 1645, 1650, 1651, 1657, 1659, 1029 1662, 1664, 1666, 1689, 1690, 1692, 1694, 1699, 1700, 1702, 1030 1707, 1712, 1713, 1719, 1718, 1722, 1726, 1728, 1730, 1736, 1031 1737, 1742, 1747, 1749, 1754, 1756, 1757, 1759, 1764, 1766, 1032 1768, 1773, 1775, 1780, 1785, 1793, 1799, 1798, 1812, 1813, 1033 1818, 1819, 1823, 1828, 1833, 1841, 1846, 1857, 1858, 1869, 1034 1870, 1876, 1877, 1881, 1882, 1883, 1886, 1885, 1896, 1901, 1035 1906, 1912, 1921, 1927, 1933, 1939, 1945, 1953, 1959, 1967, 1036 1973, 1982, 1983, 1984, 1988, 1992, 1994, 1997, 1999, 2003, 1037 2004, 2008, 2012, 2013, 2016, 2018, 2019, 2023, 2024, 2025, 1038 2026, 2060, 2061, 2062, 2063, 2067, 2072, 2077, 2079, 2081, 1039 2086, 2088, 2090, 2092, 2097, 2099, 2109, 2110, 2111, 2115, 1040 2117, 2119, 2124, 2126, 2128, 2133, 2135, 2137, 2146, 2147, 1041 2148, 2152, 2154, 2156, 2161, 2163, 2165, 2170, 2172, 2174, 1042 2189, 2190, 2191, 2192, 2196, 2197, 2202, 2204, 2206, 2211, 1043 2213, 2215, 2217, 2222, 2224, 2226, 2236, 2237, 2238, 2239, 1044 2243, 2245, 2247, 2252, 2254, 2256, 2258, 2263, 2265, 2267, 1045 2298, 2299, 2300, 2301, 2305, 2310, 2318, 2320, 2322, 2327, 1046 2329, 2334, 2336, 2350, 2351, 2352, 2356, 2358, 2360, 2362, 1047 2364, 2369, 2370, 2372, 2374, 2379, 2381, 2383, 2389, 2391, 1048 2393, 2397, 2399, 2401, 2403, 2417, 2418, 2419, 2423, 2425, 1049 2427, 2429, 2431, 2436, 2437, 2439, 2441, 2446, 2448, 2450, 1050 2456, 2457, 2459, 2468, 2471, 2473, 2476, 2478, 2480, 2493, 1051 2494, 2495, 2499, 2501, 2503, 2505, 2507, 2512, 2513, 2515, 1052 2517, 2522, 2524, 2532, 2533, 2534, 2539, 2540, 2544, 2546, 1053 2548, 2550, 2552, 2554, 2561, 2563, 2565, 2567, 2569, 2571, 1054 2573, 2575, 2577, 2579, 2584, 2586, 2588, 2593, 2619, 2620, 1055 2622, 2626, 2627, 2631, 2633, 2635, 2637, 2639, 2641, 2648, 1056 2650, 2652, 2654, 2656, 2658, 2663, 2668, 2670, 2672, 2690, 1057 2692, 2697, 2698 1059 1058 }; 1060 1059 #endif … … 5008 5007 5009 5008 /* Line 1806 of yacc.c */ 5010 #line 2 82"parser.yy"5009 #line 279 "parser.yy" 5011 5010 { 5012 5011 typedefTable.enterScope(); … … 5017 5016 5018 5017 /* Line 1806 of yacc.c */ 5019 #line 28 8"parser.yy"5018 #line 285 "parser.yy" 5020 5019 { 5021 5020 typedefTable.leaveScope(); … … 5026 5025 5027 5026 /* Line 1806 of yacc.c */ 5028 #line 29 7"parser.yy"5027 #line 294 "parser.yy" 5029 5028 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5030 5029 break; … … 5033 5032 5034 5033 /* Line 1806 of yacc.c */ 5035 #line 29 8"parser.yy"5034 #line 295 "parser.yy" 5036 5035 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5037 5036 break; … … 5040 5039 5041 5040 /* Line 1806 of yacc.c */ 5042 #line 29 9"parser.yy"5041 #line 296 "parser.yy" 5043 5042 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 5044 5043 break; … … 5047 5046 5048 5047 /* Line 1806 of yacc.c */ 5049 #line 32 3"parser.yy"5048 #line 320 "parser.yy" 5050 5049 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 5051 5050 break; … … 5054 5053 5055 5054 /* Line 1806 of yacc.c */ 5056 #line 32 4"parser.yy"5055 #line 321 "parser.yy" 5057 5056 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5058 5057 break; … … 5061 5060 5062 5061 /* Line 1806 of yacc.c */ 5063 #line 3 31"parser.yy"5062 #line 328 "parser.yy" 5064 5063 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5065 5064 break; … … 5068 5067 5069 5068 /* Line 1806 of yacc.c */ 5070 #line 33 3"parser.yy"5069 #line 330 "parser.yy" 5071 5070 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5072 5071 break; … … 5075 5074 5076 5075 /* Line 1806 of yacc.c */ 5077 #line 33 5"parser.yy"5076 #line 332 "parser.yy" 5078 5077 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5079 5078 break; … … 5082 5081 5083 5082 /* Line 1806 of yacc.c */ 5084 #line 33 7"parser.yy"5083 #line 334 "parser.yy" 5085 5084 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5086 5085 break; … … 5089 5088 5090 5089 /* Line 1806 of yacc.c */ 5091 #line 33 9"parser.yy"5090 #line 336 "parser.yy" 5092 5091 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5093 5092 break; … … 5096 5095 5097 5096 /* Line 1806 of yacc.c */ 5098 #line 3 41"parser.yy"5097 #line 338 "parser.yy" 5099 5098 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5100 5099 break; … … 5103 5102 5104 5103 /* Line 1806 of yacc.c */ 5105 #line 3 51"parser.yy"5104 #line 348 "parser.yy" 5106 5105 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5107 5106 break; … … 5110 5109 5111 5110 /* Line 1806 of yacc.c */ 5112 #line 35 3"parser.yy"5111 #line 350 "parser.yy" 5113 5112 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5114 5113 break; … … 5117 5116 5118 5117 /* Line 1806 of yacc.c */ 5118 #line 352 "parser.yy" 5119 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5120 break; 5121 5122 case 28: 5123 5124 /* Line 1806 of yacc.c */ 5119 5125 #line 355 "parser.yy" 5120 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode:: FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }5121 break; 5122 5123 case 28:5126 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5127 break; 5128 5129 case 30: 5124 5130 5125 5131 /* Line 1806 of yacc.c */ 5126 5132 #line 358 "parser.yy" 5127 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }5128 break;5129 5130 case 30:5131 5132 /* Line 1806 of yacc.c */5133 #line 361 "parser.yy"5134 5133 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5135 5134 break; … … 5138 5137 5139 5138 /* Line 1806 of yacc.c */ 5139 #line 360 "parser.yy" 5140 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5141 break; 5142 5143 case 32: 5144 5145 /* Line 1806 of yacc.c */ 5140 5146 #line 363 "parser.yy" 5141 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }5142 break;5143 5144 case 32:5145 5146 /* Line 1806 of yacc.c */5147 #line 366 "parser.yy"5148 5147 { (yyval.en) = 0; } 5149 5148 break; … … 5152 5151 5153 5152 /* Line 1806 of yacc.c */ 5154 #line 3 72"parser.yy"5153 #line 369 "parser.yy" 5155 5154 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5156 5155 break; … … 5159 5158 5160 5159 /* Line 1806 of yacc.c */ 5160 #line 374 "parser.yy" 5161 { (yyval.en) = 0; } 5162 break; 5163 5164 case 37: 5165 5166 /* Line 1806 of yacc.c */ 5161 5167 #line 377 "parser.yy" 5168 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); } 5169 break; 5170 5171 case 38: 5172 5173 /* Line 1806 of yacc.c */ 5174 #line 382 "parser.yy" 5175 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); } 5176 break; 5177 5178 case 39: 5179 5180 /* Line 1806 of yacc.c */ 5181 #line 384 "parser.yy" 5182 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5183 break; 5184 5185 case 41: 5186 5187 /* Line 1806 of yacc.c */ 5188 #line 389 "parser.yy" 5189 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5190 break; 5191 5192 case 42: 5193 5194 /* Line 1806 of yacc.c */ 5195 #line 394 "parser.yy" 5196 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5197 break; 5198 5199 case 43: 5200 5201 /* Line 1806 of yacc.c */ 5202 #line 396 "parser.yy" 5203 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5204 break; 5205 5206 case 44: 5207 5208 /* Line 1806 of yacc.c */ 5209 #line 398 "parser.yy" 5210 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5211 break; 5212 5213 case 45: 5214 5215 /* Line 1806 of yacc.c */ 5216 #line 400 "parser.yy" 5217 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5218 break; 5219 5220 case 46: 5221 5222 /* Line 1806 of yacc.c */ 5223 #line 402 "parser.yy" 5224 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5225 break; 5226 5227 case 48: 5228 5229 /* Line 1806 of yacc.c */ 5230 #line 408 "parser.yy" 5231 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5232 break; 5233 5234 case 49: 5235 5236 /* Line 1806 of yacc.c */ 5237 #line 410 "parser.yy" 5238 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5239 break; 5240 5241 case 50: 5242 5243 /* Line 1806 of yacc.c */ 5244 #line 412 "parser.yy" 5245 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5246 break; 5247 5248 case 51: 5249 5250 /* Line 1806 of yacc.c */ 5251 #line 414 "parser.yy" 5252 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5253 break; 5254 5255 case 52: 5256 5257 /* Line 1806 of yacc.c */ 5258 #line 416 "parser.yy" 5259 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5260 break; 5261 5262 case 53: 5263 5264 /* Line 1806 of yacc.c */ 5265 #line 418 "parser.yy" 5266 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5267 break; 5268 5269 case 54: 5270 5271 /* Line 1806 of yacc.c */ 5272 #line 424 "parser.yy" 5273 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5274 break; 5275 5276 case 55: 5277 5278 /* Line 1806 of yacc.c */ 5279 #line 426 "parser.yy" 5280 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5281 break; 5282 5283 case 56: 5284 5285 /* Line 1806 of yacc.c */ 5286 #line 428 "parser.yy" 5287 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5288 break; 5289 5290 case 57: 5291 5292 /* Line 1806 of yacc.c */ 5293 #line 430 "parser.yy" 5294 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5295 break; 5296 5297 case 58: 5298 5299 /* Line 1806 of yacc.c */ 5300 #line 432 "parser.yy" 5301 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5302 break; 5303 5304 case 59: 5305 5306 /* Line 1806 of yacc.c */ 5307 #line 434 "parser.yy" 5308 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5309 break; 5310 5311 case 60: 5312 5313 /* Line 1806 of yacc.c */ 5314 #line 436 "parser.yy" 5315 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5316 break; 5317 5318 case 61: 5319 5320 /* Line 1806 of yacc.c */ 5321 #line 438 "parser.yy" 5322 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); } 5323 break; 5324 5325 case 62: 5326 5327 /* Line 1806 of yacc.c */ 5328 #line 442 "parser.yy" 5329 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5330 break; 5331 5332 case 63: 5333 5334 /* Line 1806 of yacc.c */ 5335 #line 443 "parser.yy" 5336 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5337 break; 5338 5339 case 64: 5340 5341 /* Line 1806 of yacc.c */ 5342 #line 444 "parser.yy" 5343 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5344 break; 5345 5346 case 65: 5347 5348 /* Line 1806 of yacc.c */ 5349 #line 445 "parser.yy" 5350 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5351 break; 5352 5353 case 67: 5354 5355 /* Line 1806 of yacc.c */ 5356 #line 451 "parser.yy" 5357 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5358 break; 5359 5360 case 68: 5361 5362 /* Line 1806 of yacc.c */ 5363 #line 453 "parser.yy" 5364 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5365 break; 5366 5367 case 70: 5368 5369 /* Line 1806 of yacc.c */ 5370 #line 459 "parser.yy" 5371 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5372 break; 5373 5374 case 71: 5375 5376 /* Line 1806 of yacc.c */ 5377 #line 461 "parser.yy" 5378 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5379 break; 5380 5381 case 72: 5382 5383 /* Line 1806 of yacc.c */ 5384 #line 463 "parser.yy" 5385 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5386 break; 5387 5388 case 74: 5389 5390 /* Line 1806 of yacc.c */ 5391 #line 469 "parser.yy" 5392 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5393 break; 5394 5395 case 75: 5396 5397 /* Line 1806 of yacc.c */ 5398 #line 471 "parser.yy" 5399 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5400 break; 5401 5402 case 77: 5403 5404 /* Line 1806 of yacc.c */ 5405 #line 477 "parser.yy" 5406 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5407 break; 5408 5409 case 78: 5410 5411 /* Line 1806 of yacc.c */ 5412 #line 479 "parser.yy" 5413 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5414 break; 5415 5416 case 80: 5417 5418 /* Line 1806 of yacc.c */ 5419 #line 485 "parser.yy" 5420 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5421 break; 5422 5423 case 81: 5424 5425 /* Line 1806 of yacc.c */ 5426 #line 487 "parser.yy" 5427 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5428 break; 5429 5430 case 82: 5431 5432 /* Line 1806 of yacc.c */ 5433 #line 489 "parser.yy" 5434 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5435 break; 5436 5437 case 83: 5438 5439 /* Line 1806 of yacc.c */ 5440 #line 491 "parser.yy" 5441 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5442 break; 5443 5444 case 85: 5445 5446 /* Line 1806 of yacc.c */ 5447 #line 497 "parser.yy" 5448 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5449 break; 5450 5451 case 86: 5452 5453 /* Line 1806 of yacc.c */ 5454 #line 499 "parser.yy" 5455 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5456 break; 5457 5458 case 88: 5459 5460 /* Line 1806 of yacc.c */ 5461 #line 505 "parser.yy" 5462 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5463 break; 5464 5465 case 90: 5466 5467 /* Line 1806 of yacc.c */ 5468 #line 511 "parser.yy" 5469 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5470 break; 5471 5472 case 92: 5473 5474 /* Line 1806 of yacc.c */ 5475 #line 517 "parser.yy" 5476 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5477 break; 5478 5479 case 94: 5480 5481 /* Line 1806 of yacc.c */ 5482 #line 523 "parser.yy" 5483 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5484 break; 5485 5486 case 96: 5487 5488 /* Line 1806 of yacc.c */ 5489 #line 529 "parser.yy" 5490 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5491 break; 5492 5493 case 98: 5494 5495 /* Line 1806 of yacc.c */ 5496 #line 535 "parser.yy" 5497 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5498 break; 5499 5500 case 99: 5501 5502 /* Line 1806 of yacc.c */ 5503 #line 537 "parser.yy" 5504 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5505 break; 5506 5507 case 100: 5508 5509 /* Line 1806 of yacc.c */ 5510 #line 539 "parser.yy" 5511 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5512 break; 5513 5514 case 103: 5515 5516 /* Line 1806 of yacc.c */ 5517 #line 550 "parser.yy" 5518 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5519 break; 5520 5521 case 104: 5522 5523 /* Line 1806 of yacc.c */ 5524 #line 552 "parser.yy" 5525 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5526 break; 5527 5528 case 105: 5529 5530 /* Line 1806 of yacc.c */ 5531 #line 554 "parser.yy" 5532 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5533 break; 5534 5535 case 106: 5536 5537 /* Line 1806 of yacc.c */ 5538 #line 559 "parser.yy" 5539 { (yyval.en) = new NullExprNode; } 5540 break; 5541 5542 case 108: 5543 5544 /* Line 1806 of yacc.c */ 5545 #line 567 "parser.yy" 5546 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5547 break; 5548 5549 case 109: 5550 5551 /* Line 1806 of yacc.c */ 5552 #line 569 "parser.yy" 5553 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5554 break; 5555 5556 case 110: 5557 5558 /* Line 1806 of yacc.c */ 5559 #line 571 "parser.yy" 5560 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5561 break; 5562 5563 case 111: 5564 5565 /* Line 1806 of yacc.c */ 5566 #line 573 "parser.yy" 5567 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5568 break; 5569 5570 case 113: 5571 5572 /* Line 1806 of yacc.c */ 5573 #line 579 "parser.yy" 5574 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5575 break; 5576 5577 case 114: 5578 5579 /* Line 1806 of yacc.c */ 5580 #line 583 "parser.yy" 5581 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5582 break; 5583 5584 case 115: 5585 5586 /* Line 1806 of yacc.c */ 5587 #line 584 "parser.yy" 5588 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5589 break; 5590 5591 case 116: 5592 5593 /* Line 1806 of yacc.c */ 5594 #line 585 "parser.yy" 5595 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5596 break; 5597 5598 case 117: 5599 5600 /* Line 1806 of yacc.c */ 5601 #line 586 "parser.yy" 5602 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5603 break; 5604 5605 case 118: 5606 5607 /* Line 1806 of yacc.c */ 5608 #line 587 "parser.yy" 5609 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5610 break; 5611 5612 case 119: 5613 5614 /* Line 1806 of yacc.c */ 5615 #line 588 "parser.yy" 5616 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5617 break; 5618 5619 case 120: 5620 5621 /* Line 1806 of yacc.c */ 5622 #line 589 "parser.yy" 5623 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5624 break; 5625 5626 case 121: 5627 5628 /* Line 1806 of yacc.c */ 5629 #line 590 "parser.yy" 5630 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5631 break; 5632 5633 case 122: 5634 5635 /* Line 1806 of yacc.c */ 5636 #line 591 "parser.yy" 5637 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5638 break; 5639 5640 case 123: 5641 5642 /* Line 1806 of yacc.c */ 5643 #line 592 "parser.yy" 5644 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5645 break; 5646 5647 case 125: 5648 5649 /* Line 1806 of yacc.c */ 5650 #line 598 "parser.yy" 5651 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5652 break; 5653 5654 case 126: 5655 5656 /* Line 1806 of yacc.c */ 5657 #line 603 "parser.yy" 5162 5658 { (yyval.en) = 0; } 5163 5659 break; 5164 5660 5165 case 37:5166 5167 /* Line 1806 of yacc.c */5168 #line 380 "parser.yy"5169 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }5170 break;5171 5172 case 38:5173 5174 /* Line 1806 of yacc.c */5175 #line 385 "parser.yy"5176 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }5177 break;5178 5179 case 39:5180 5181 /* Line 1806 of yacc.c */5182 #line 387 "parser.yy"5183 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }5184 break;5185 5186 case 41:5187 5188 /* Line 1806 of yacc.c */5189 #line 392 "parser.yy"5190 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }5191 break;5192 5193 case 42:5194 5195 /* Line 1806 of yacc.c */5196 #line 397 "parser.yy"5197 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }5198 break;5199 5200 case 43:5201 5202 /* Line 1806 of yacc.c */5203 #line 399 "parser.yy"5204 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }5205 break;5206 5207 case 44:5208 5209 /* Line 1806 of yacc.c */5210 #line 401 "parser.yy"5211 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }5212 break;5213 5214 case 45:5215 5216 /* Line 1806 of yacc.c */5217 #line 403 "parser.yy"5218 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }5219 break;5220 5221 case 46:5222 5223 /* Line 1806 of yacc.c */5224 #line 405 "parser.yy"5225 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }5226 break;5227 5228 case 48:5229 5230 /* Line 1806 of yacc.c */5231 #line 411 "parser.yy"5232 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }5233 break;5234 5235 case 49:5236 5237 /* Line 1806 of yacc.c */5238 #line 413 "parser.yy"5239 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }5240 break;5241 5242 case 50:5243 5244 /* Line 1806 of yacc.c */5245 #line 415 "parser.yy"5246 { (yyval.en) = (yyvsp[(2) - (2)].en); }5247 break;5248 5249 case 51:5250 5251 /* Line 1806 of yacc.c */5252 #line 417 "parser.yy"5253 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }5254 break;5255 5256 case 52:5257 5258 /* Line 1806 of yacc.c */5259 #line 419 "parser.yy"5260 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }5261 break;5262 5263 case 53:5264 5265 /* Line 1806 of yacc.c */5266 #line 421 "parser.yy"5267 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }5268 break;5269 5270 case 54:5271 5272 /* Line 1806 of yacc.c */5273 #line 427 "parser.yy"5274 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }5275 break;5276 5277 case 55:5278 5279 /* Line 1806 of yacc.c */5280 #line 429 "parser.yy"5281 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5282 break;5283 5284 case 56:5285 5286 /* Line 1806 of yacc.c */5287 #line 431 "parser.yy"5288 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }5289 break;5290 5291 case 57:5292 5293 /* Line 1806 of yacc.c */5294 #line 433 "parser.yy"5295 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5296 break;5297 5298 case 58:5299 5300 /* Line 1806 of yacc.c */5301 #line 435 "parser.yy"5302 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }5303 break;5304 5305 case 59:5306 5307 /* Line 1806 of yacc.c */5308 #line 437 "parser.yy"5309 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }5310 break;5311 5312 case 60:5313 5314 /* Line 1806 of yacc.c */5315 #line 439 "parser.yy"5316 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }5317 break;5318 5319 case 61:5320 5321 /* Line 1806 of yacc.c */5322 #line 441 "parser.yy"5323 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }5324 break;5325 5326 case 62:5327 5328 /* Line 1806 of yacc.c */5329 #line 445 "parser.yy"5330 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }5331 break;5332 5333 case 63:5334 5335 /* Line 1806 of yacc.c */5336 #line 446 "parser.yy"5337 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }5338 break;5339 5340 case 64:5341 5342 /* Line 1806 of yacc.c */5343 #line 447 "parser.yy"5344 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }5345 break;5346 5347 case 65:5348 5349 /* Line 1806 of yacc.c */5350 #line 448 "parser.yy"5351 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }5352 break;5353 5354 case 67:5355 5356 /* Line 1806 of yacc.c */5357 #line 454 "parser.yy"5358 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }5359 break;5360 5361 case 68:5362 5363 /* Line 1806 of yacc.c */5364 #line 456 "parser.yy"5365 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }5366 break;5367 5368 case 70:5369 5370 /* Line 1806 of yacc.c */5371 #line 462 "parser.yy"5372 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5373 break;5374 5375 case 71:5376 5377 /* Line 1806 of yacc.c */5378 #line 464 "parser.yy"5379 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5380 break;5381 5382 case 72:5383 5384 /* Line 1806 of yacc.c */5385 #line 466 "parser.yy"5386 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5387 break;5388 5389 case 74:5390 5391 /* Line 1806 of yacc.c */5392 #line 472 "parser.yy"5393 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5394 break;5395 5396 case 75:5397 5398 /* Line 1806 of yacc.c */5399 #line 474 "parser.yy"5400 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5401 break;5402 5403 case 77:5404 5405 /* Line 1806 of yacc.c */5406 #line 480 "parser.yy"5407 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5408 break;5409 5410 case 78:5411 5412 /* Line 1806 of yacc.c */5413 #line 482 "parser.yy"5414 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5415 break;5416 5417 case 80:5418 5419 /* Line 1806 of yacc.c */5420 #line 488 "parser.yy"5421 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5422 break;5423 5424 case 81:5425 5426 /* Line 1806 of yacc.c */5427 #line 490 "parser.yy"5428 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5429 break;5430 5431 case 82:5432 5433 /* Line 1806 of yacc.c */5434 #line 492 "parser.yy"5435 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5436 break;5437 5438 case 83:5439 5440 /* Line 1806 of yacc.c */5441 #line 494 "parser.yy"5442 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5443 break;5444 5445 case 85:5446 5447 /* Line 1806 of yacc.c */5448 #line 500 "parser.yy"5449 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5450 break;5451 5452 case 86:5453 5454 /* Line 1806 of yacc.c */5455 #line 502 "parser.yy"5456 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5457 break;5458 5459 case 88:5460 5461 /* Line 1806 of yacc.c */5462 #line 508 "parser.yy"5463 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5464 break;5465 5466 case 90:5467 5468 /* Line 1806 of yacc.c */5469 #line 514 "parser.yy"5470 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5471 break;5472 5473 case 92:5474 5475 /* Line 1806 of yacc.c */5476 #line 520 "parser.yy"5477 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5478 break;5479 5480 case 94:5481 5482 /* Line 1806 of yacc.c */5483 #line 526 "parser.yy"5484 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5485 break;5486 5487 case 96:5488 5489 /* Line 1806 of yacc.c */5490 #line 532 "parser.yy"5491 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5492 break;5493 5494 case 98:5495 5496 /* Line 1806 of yacc.c */5497 #line 538 "parser.yy"5498 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }5499 break;5500 5501 case 99:5502 5503 /* Line 1806 of yacc.c */5504 #line 540 "parser.yy"5505 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }5506 break;5507 5508 case 100:5509 5510 /* Line 1806 of yacc.c */5511 #line 542 "parser.yy"5512 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }5513 break;5514 5515 case 103:5516 5517 /* Line 1806 of yacc.c */5518 #line 553 "parser.yy"5519 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5520 break;5521 5522 case 104:5523 5524 /* Line 1806 of yacc.c */5525 #line 555 "parser.yy"5526 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5527 break;5528 5529 case 105:5530 5531 /* Line 1806 of yacc.c */5532 #line 557 "parser.yy"5533 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }5534 break;5535 5536 case 106:5537 5538 /* Line 1806 of yacc.c */5539 #line 562 "parser.yy"5540 { (yyval.en) = new NullExprNode; }5541 break;5542 5543 case 108:5544 5545 /* Line 1806 of yacc.c */5546 #line 570 "parser.yy"5547 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }5548 break;5549 5550 case 109:5551 5552 /* Line 1806 of yacc.c */5553 #line 572 "parser.yy"5554 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }5555 break;5556 5557 case 110:5558 5559 /* Line 1806 of yacc.c */5560 #line 574 "parser.yy"5561 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }5562 break;5563 5564 case 111:5565 5566 /* Line 1806 of yacc.c */5567 #line 576 "parser.yy"5568 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }5569 break;5570 5571 case 113:5572 5573 /* Line 1806 of yacc.c */5574 #line 582 "parser.yy"5575 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }5576 break;5577 5578 case 114:5579 5580 /* Line 1806 of yacc.c */5581 #line 586 "parser.yy"5582 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }5583 break;5584 5585 case 115:5586 5587 /* Line 1806 of yacc.c */5588 #line 587 "parser.yy"5589 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }5590 break;5591 5592 case 116:5593 5594 /* Line 1806 of yacc.c */5595 #line 588 "parser.yy"5596 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }5597 break;5598 5599 case 117:5600 5601 /* Line 1806 of yacc.c */5602 #line 589 "parser.yy"5603 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }5604 break;5605 5606 case 118:5607 5608 /* Line 1806 of yacc.c */5609 #line 590 "parser.yy"5610 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }5611 break;5612 5613 case 119:5614 5615 /* Line 1806 of yacc.c */5616 #line 591 "parser.yy"5617 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }5618 break;5619 5620 case 120:5621 5622 /* Line 1806 of yacc.c */5623 #line 592 "parser.yy"5624 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }5625 break;5626 5627 case 121:5628 5629 /* Line 1806 of yacc.c */5630 #line 593 "parser.yy"5631 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }5632 break;5633 5634 case 122:5635 5636 /* Line 1806 of yacc.c */5637 #line 594 "parser.yy"5638 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }5639 break;5640 5641 case 123:5642 5643 /* Line 1806 of yacc.c */5644 #line 595 "parser.yy"5645 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }5646 break;5647 5648 case 125:5649 5650 /* Line 1806 of yacc.c */5651 #line 601 "parser.yy"5652 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }5653 break;5654 5655 case 126:5656 5657 /* Line 1806 of yacc.c */5658 #line 606 "parser.yy"5659 { (yyval.en) = 0; }5660 break;5661 5662 5661 case 130: 5663 5662 5664 5663 /* Line 1806 of yacc.c */ 5665 #line 61 5"parser.yy"5664 #line 612 "parser.yy" 5666 5665 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5667 5666 break; … … 5670 5669 5671 5670 /* Line 1806 of yacc.c */ 5672 #line 625 "parser.yy" 5673 { 5674 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); 5675 } 5671 #line 622 "parser.yy" 5672 { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );} 5676 5673 break; 5677 5674 … … 5679 5676 5680 5677 /* Line 1806 of yacc.c */ 5681 #line 6 32"parser.yy"5678 #line 627 "parser.yy" 5682 5679 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5683 5680 break; … … 5686 5683 5687 5684 /* Line 1806 of yacc.c */ 5688 #line 63 9"parser.yy"5685 #line 634 "parser.yy" 5689 5686 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5690 5687 break; … … 5693 5690 5694 5691 /* Line 1806 of yacc.c */ 5692 #line 640 "parser.yy" 5693 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5694 break; 5695 5696 case 141: 5697 5698 /* Line 1806 of yacc.c */ 5695 5699 #line 645 "parser.yy" 5696 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }5697 break;5698 5699 case 141:5700 5701 /* Line 1806 of yacc.c */5702 #line 650 "parser.yy"5703 5700 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5704 5701 break; … … 5707 5704 5708 5705 /* Line 1806 of yacc.c */ 5709 #line 6 52"parser.yy"5706 #line 647 "parser.yy" 5710 5707 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5711 5708 break; … … 5714 5711 5715 5712 /* Line 1806 of yacc.c */ 5716 #line 6 54"parser.yy"5713 #line 649 "parser.yy" 5717 5714 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5718 5715 break; … … 5721 5718 5722 5719 /* Line 1806 of yacc.c */ 5720 #line 656 "parser.yy" 5721 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5722 break; 5723 5724 case 147: 5725 5726 /* Line 1806 of yacc.c */ 5723 5727 #line 661 "parser.yy" 5724 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }5725 break;5726 5727 case 147:5728 5729 /* Line 1806 of yacc.c */5730 #line 666 "parser.yy"5731 5728 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5732 5729 break; … … 5735 5732 5736 5733 /* Line 1806 of yacc.c */ 5737 #line 6 72"parser.yy"5734 #line 667 "parser.yy" 5738 5735 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5739 5736 break; … … 5742 5739 5743 5740 /* Line 1806 of yacc.c */ 5744 #line 6 74"parser.yy"5741 #line 669 "parser.yy" 5745 5742 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5746 5743 break; … … 5749 5746 5750 5747 /* Line 1806 of yacc.c */ 5751 #line 67 6"parser.yy"5748 #line 671 "parser.yy" 5752 5749 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5753 5750 break; … … 5756 5753 5757 5754 /* Line 1806 of yacc.c */ 5755 #line 673 "parser.yy" 5756 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5757 break; 5758 5759 case 152: 5760 5761 /* Line 1806 of yacc.c */ 5758 5762 #line 678 "parser.yy" 5759 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }5760 break;5761 5762 case 152:5763 5764 /* Line 1806 of yacc.c */5765 #line 683 "parser.yy"5766 5763 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5767 5764 break; … … 5770 5767 5771 5768 /* Line 1806 of yacc.c */ 5772 #line 68 5"parser.yy"5769 #line 680 "parser.yy" 5773 5770 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5774 5771 break; … … 5777 5774 5778 5775 /* Line 1806 of yacc.c */ 5779 #line 6 92"parser.yy"5776 #line 687 "parser.yy" 5780 5777 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5781 5778 break; … … 5784 5781 5785 5782 /* Line 1806 of yacc.c */ 5786 #line 6 94"parser.yy"5783 #line 689 "parser.yy" 5787 5784 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5788 5785 break; … … 5791 5788 5792 5789 /* Line 1806 of yacc.c */ 5790 #line 696 "parser.yy" 5791 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5792 break; 5793 5794 case 159: 5795 5796 /* Line 1806 of yacc.c */ 5797 #line 700 "parser.yy" 5798 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5799 break; 5800 5801 case 160: 5802 5803 /* Line 1806 of yacc.c */ 5793 5804 #line 701 "parser.yy" 5794 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }5795 break;5796 5797 case 159:5798 5799 /* Line 1806 of yacc.c */5800 #line 705 "parser.yy"5801 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }5802 break;5803 5804 case 160:5805 5806 /* Line 1806 of yacc.c */5807 #line 706 "parser.yy"5808 5805 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5809 5806 break; … … 5812 5809 5813 5810 /* Line 1806 of yacc.c */ 5814 #line 7 12"parser.yy"5811 #line 707 "parser.yy" 5815 5812 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5816 5813 break; … … 5819 5816 5820 5817 /* Line 1806 of yacc.c */ 5818 #line 711 "parser.yy" 5819 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5820 break; 5821 5822 case 164: 5823 5824 /* Line 1806 of yacc.c */ 5821 5825 #line 716 "parser.yy" 5826 { (yyval.sn) = 0; } 5827 break; 5828 5829 case 166: 5830 5831 /* Line 1806 of yacc.c */ 5832 #line 722 "parser.yy" 5822 5833 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5823 5834 break; 5824 5835 5825 case 164: 5826 5827 /* Line 1806 of yacc.c */ 5828 #line 721 "parser.yy" 5836 case 167: 5837 5838 /* Line 1806 of yacc.c */ 5839 #line 724 "parser.yy" 5840 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5841 break; 5842 5843 case 168: 5844 5845 /* Line 1806 of yacc.c */ 5846 #line 729 "parser.yy" 5829 5847 { (yyval.sn) = 0; } 5830 5848 break; 5831 5849 5832 case 1 66:5833 5834 /* Line 1806 of yacc.c */ 5835 #line 7 27"parser.yy"5850 case 170: 5851 5852 /* Line 1806 of yacc.c */ 5853 #line 735 "parser.yy" 5836 5854 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5837 5855 break; 5838 5856 5839 case 167: 5840 5841 /* Line 1806 of yacc.c */ 5842 #line 729 "parser.yy" 5857 case 171: 5858 5859 /* Line 1806 of yacc.c */ 5860 #line 737 "parser.yy" 5861 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5862 break; 5863 5864 case 172: 5865 5866 /* Line 1806 of yacc.c */ 5867 #line 739 "parser.yy" 5843 5868 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5844 5869 break; 5845 5870 5846 case 168: 5847 5848 /* Line 1806 of yacc.c */ 5849 #line 734 "parser.yy" 5871 case 173: 5872 5873 /* Line 1806 of yacc.c */ 5874 #line 741 "parser.yy" 5875 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5876 break; 5877 5878 case 174: 5879 5880 /* Line 1806 of yacc.c */ 5881 #line 746 "parser.yy" 5850 5882 { (yyval.sn) = 0; } 5851 5883 break; 5852 5884 5853 case 170: 5854 5855 /* Line 1806 of yacc.c */ 5856 #line 740 "parser.yy" 5857 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5858 break; 5859 5860 case 171: 5861 5862 /* Line 1806 of yacc.c */ 5863 #line 742 "parser.yy" 5864 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5865 break; 5866 5867 case 172: 5868 5869 /* Line 1806 of yacc.c */ 5870 #line 744 "parser.yy" 5871 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5872 break; 5873 5874 case 173: 5875 5876 /* Line 1806 of yacc.c */ 5877 #line 746 "parser.yy" 5878 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5879 break; 5880 5881 case 174: 5885 case 176: 5882 5886 5883 5887 /* Line 1806 of yacc.c */ 5884 5888 #line 751 "parser.yy" 5885 { (yyval.sn) = 0; }5886 break;5887 5888 case 176:5889 5890 /* Line 1806 of yacc.c */5891 #line 756 "parser.yy"5892 5889 { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); } 5893 5890 break; … … 5896 5893 5897 5894 /* Line 1806 of yacc.c */ 5895 #line 752 "parser.yy" 5896 { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); } 5897 break; 5898 5899 case 178: 5900 5901 /* Line 1806 of yacc.c */ 5898 5902 #line 757 "parser.yy" 5899 { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }5900 break;5901 5902 case 178:5903 5904 /* Line 1806 of yacc.c */5905 #line 762 "parser.yy"5906 5903 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5907 5904 break; … … 5910 5907 5911 5908 /* Line 1806 of yacc.c */ 5912 #line 7 64"parser.yy"5909 #line 759 "parser.yy" 5913 5910 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5914 5911 break; … … 5917 5914 5918 5915 /* Line 1806 of yacc.c */ 5916 #line 761 "parser.yy" 5917 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5918 break; 5919 5920 case 181: 5921 5922 /* Line 1806 of yacc.c */ 5919 5923 #line 766 "parser.yy" 5920 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }5921 break;5922 5923 case 181:5924 5925 /* Line 1806 of yacc.c */5926 #line 771 "parser.yy"5927 5924 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5928 5925 break; … … 5931 5928 5932 5929 /* Line 1806 of yacc.c */ 5930 #line 768 "parser.yy" 5931 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5932 break; 5933 5934 case 183: 5935 5936 /* Line 1806 of yacc.c */ 5933 5937 #line 773 "parser.yy" 5934 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }5935 break;5936 5937 case 183:5938 5939 /* Line 1806 of yacc.c */5940 #line 778 "parser.yy"5941 5938 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5942 5939 break; … … 5945 5942 5946 5943 /* Line 1806 of yacc.c */ 5947 #line 7 82"parser.yy"5944 #line 777 "parser.yy" 5948 5945 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5949 5946 break; … … 5952 5949 5953 5950 /* Line 1806 of yacc.c */ 5954 #line 78 5"parser.yy"5951 #line 780 "parser.yy" 5955 5952 { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); } 5956 5953 break; … … 5959 5956 5960 5957 /* Line 1806 of yacc.c */ 5961 #line 78 9"parser.yy"5958 #line 784 "parser.yy" 5962 5959 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5963 5960 break; … … 5966 5963 5967 5964 /* Line 1806 of yacc.c */ 5968 #line 7 92"parser.yy"5965 #line 787 "parser.yy" 5969 5966 { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); } 5970 5967 break; … … 5973 5970 5974 5971 /* Line 1806 of yacc.c */ 5975 #line 79 6"parser.yy"5972 #line 791 "parser.yy" 5976 5973 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5977 5974 break; … … 5980 5977 5981 5978 /* Line 1806 of yacc.c */ 5982 #line 79 8"parser.yy"5979 #line 793 "parser.yy" 5983 5980 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 5984 5981 break; … … 5987 5984 5988 5985 /* Line 1806 of yacc.c */ 5989 #line 800"parser.yy"5986 #line 795 "parser.yy" 5990 5987 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5991 5988 break; … … 5994 5991 5995 5992 /* Line 1806 of yacc.c */ 5993 #line 797 "parser.yy" 5994 { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); } 5995 break; 5996 5997 case 192: 5998 5999 /* Line 1806 of yacc.c */ 5996 6000 #line 802 "parser.yy" 5997 { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }5998 break;5999 6000 case 192:6001 6002 /* Line 1806 of yacc.c */6003 #line 807 "parser.yy"6004 6001 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6005 6002 break; … … 6008 6005 6009 6006 /* Line 1806 of yacc.c */ 6010 #line 80 9"parser.yy"6007 #line 804 "parser.yy" 6011 6008 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6012 6009 break; … … 6015 6012 6016 6013 /* Line 1806 of yacc.c */ 6017 #line 8 11"parser.yy"6014 #line 806 "parser.yy" 6018 6015 { 6019 6016 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6025 6022 6026 6023 /* Line 1806 of yacc.c */ 6027 #line 8 22"parser.yy"6024 #line 817 "parser.yy" 6028 6025 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6029 6026 break; … … 6032 6029 6033 6030 /* Line 1806 of yacc.c */ 6031 #line 819 "parser.yy" 6032 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6033 break; 6034 6035 case 198: 6036 6037 /* Line 1806 of yacc.c */ 6034 6038 #line 824 "parser.yy" 6035 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }6036 break;6037 6038 case 198:6039 6040 /* Line 1806 of yacc.c */6041 #line 829 "parser.yy"6042 6039 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6043 6040 break; … … 6046 6043 6047 6044 /* Line 1806 of yacc.c */ 6045 #line 826 "parser.yy" 6046 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6047 break; 6048 6049 case 200: 6050 6051 /* Line 1806 of yacc.c */ 6048 6052 #line 831 "parser.yy" 6049 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }6050 break;6051 6052 case 200:6053 6054 /* Line 1806 of yacc.c */6055 #line 836 "parser.yy"6056 6053 { 6057 6054 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6063 6060 6064 6061 /* Line 1806 of yacc.c */ 6065 #line 8 50"parser.yy"6062 #line 845 "parser.yy" 6066 6063 { 6067 6064 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6073 6070 6074 6071 /* Line 1806 of yacc.c */ 6075 #line 85 5"parser.yy"6072 #line 850 "parser.yy" 6076 6073 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6077 6074 break; … … 6080 6077 6081 6078 /* Line 1806 of yacc.c */ 6082 #line 85 7"parser.yy"6079 #line 852 "parser.yy" 6083 6080 { 6084 6081 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6090 6087 6091 6088 /* Line 1806 of yacc.c */ 6092 #line 86 6"parser.yy"6089 #line 861 "parser.yy" 6093 6090 { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); } 6094 6091 break; … … 6097 6094 6098 6095 /* Line 1806 of yacc.c */ 6099 #line 86 8"parser.yy"6096 #line 863 "parser.yy" 6100 6097 { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); } 6101 6098 break; … … 6104 6101 6105 6102 /* Line 1806 of yacc.c */ 6106 #line 8 70"parser.yy"6103 #line 865 "parser.yy" 6107 6104 { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); } 6108 6105 break; … … 6111 6108 6112 6109 /* Line 1806 of yacc.c */ 6113 #line 8 72"parser.yy"6110 #line 867 "parser.yy" 6114 6111 { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); } 6115 6112 break; … … 6118 6115 6119 6116 /* Line 1806 of yacc.c */ 6120 #line 88 6"parser.yy"6117 #line 881 "parser.yy" 6121 6118 {} 6122 6119 break; … … 6125 6122 6126 6123 /* Line 1806 of yacc.c */ 6127 #line 8 90"parser.yy"6124 #line 885 "parser.yy" 6128 6125 {} 6129 6126 break; … … 6132 6129 6133 6130 /* Line 1806 of yacc.c */ 6134 #line 89 8"parser.yy"6131 #line 893 "parser.yy" 6135 6132 { (yyval.decl) = 0; } 6136 6133 break; … … 6139 6136 6140 6137 /* Line 1806 of yacc.c */ 6138 #line 900 "parser.yy" 6139 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6140 break; 6141 6142 case 221: 6143 6144 /* Line 1806 of yacc.c */ 6141 6145 #line 905 "parser.yy" 6146 { (yyval.decl) = 0; } 6147 break; 6148 6149 case 224: 6150 6151 /* Line 1806 of yacc.c */ 6152 #line 912 "parser.yy" 6142 6153 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6143 6154 break; 6144 6155 6145 case 221:6146 6147 /* Line 1806 of yacc.c */6148 #line 910 "parser.yy"6149 { (yyval.decl) = 0; }6150 break;6151 6152 case 224:6153 6154 /* Line 1806 of yacc.c */6155 #line 917 "parser.yy"6156 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }6157 break;6158 6159 6156 case 229: 6160 6157 6161 6158 /* Line 1806 of yacc.c */ 6162 #line 9 31"parser.yy"6159 #line 926 "parser.yy" 6163 6160 {} 6164 6161 break; … … 6167 6164 6168 6165 /* Line 1806 of yacc.c */ 6169 #line 9 32"parser.yy"6166 #line 927 "parser.yy" 6170 6167 {} 6171 6168 break; … … 6174 6171 6175 6172 /* Line 1806 of yacc.c */ 6176 #line 9 61"parser.yy"6173 #line 956 "parser.yy" 6177 6174 { 6178 6175 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6184 6181 6185 6182 /* Line 1806 of yacc.c */ 6186 #line 96 8"parser.yy"6183 #line 963 "parser.yy" 6187 6184 { 6188 6185 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6194 6191 6195 6192 /* Line 1806 of yacc.c */ 6196 #line 9 73"parser.yy"6193 #line 968 "parser.yy" 6197 6194 { 6198 6195 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6202 6199 6203 6200 case 241: 6201 6202 /* Line 1806 of yacc.c */ 6203 #line 978 "parser.yy" 6204 { 6205 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); 6206 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); 6207 } 6208 break; 6209 6210 case 242: 6204 6211 6205 6212 /* Line 1806 of yacc.c */ … … 6211 6218 break; 6212 6219 6213 case 24 2:6220 case 243: 6214 6221 6215 6222 /* Line 1806 of yacc.c */ 6216 6223 #line 988 "parser.yy" 6217 {6218 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );6219 (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );6220 }6221 break;6222 6223 case 243:6224 6225 /* Line 1806 of yacc.c */6226 #line 993 "parser.yy"6227 6224 { 6228 6225 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6234 6231 6235 6232 /* Line 1806 of yacc.c */ 6236 #line 1001"parser.yy"6233 #line 996 "parser.yy" 6237 6234 { 6238 6235 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6242 6239 6243 6240 case 245: 6241 6242 /* Line 1806 of yacc.c */ 6243 #line 1001 "parser.yy" 6244 { 6245 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6246 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); 6247 } 6248 break; 6249 6250 case 246: 6244 6251 6245 6252 /* Line 1806 of yacc.c */ … … 6251 6258 break; 6252 6259 6253 case 24 6:6260 case 247: 6254 6261 6255 6262 /* Line 1806 of yacc.c */ 6256 6263 #line 1011 "parser.yy" 6257 {6258 typedefTable.addToEnclosingScope( TypedefTable::ID );6259 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );6260 }6261 break;6262 6263 case 247:6264 6265 /* Line 1806 of yacc.c */6266 #line 1016 "parser.yy"6267 6264 { 6268 6265 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6274 6271 6275 6272 /* Line 1806 of yacc.c */ 6276 #line 10 21"parser.yy"6273 #line 1016 "parser.yy" 6277 6274 { 6278 6275 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6284 6281 6285 6282 /* Line 1806 of yacc.c */ 6286 #line 102 9"parser.yy"6283 #line 1024 "parser.yy" 6287 6284 { 6288 6285 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6293 6290 6294 6291 /* Line 1806 of yacc.c */ 6295 #line 10 52"parser.yy"6292 #line 1047 "parser.yy" 6296 6293 { 6297 6294 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6302 6299 6303 6300 /* Line 1806 of yacc.c */ 6304 #line 105 6"parser.yy"6301 #line 1051 "parser.yy" 6305 6302 { 6306 6303 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6311 6308 6312 6309 /* Line 1806 of yacc.c */ 6313 #line 10 63"parser.yy"6310 #line 1058 "parser.yy" 6314 6311 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6315 6312 break; … … 6318 6315 6319 6316 /* Line 1806 of yacc.c */ 6317 #line 1062 "parser.yy" 6318 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6319 break; 6320 6321 case 254: 6322 6323 /* Line 1806 of yacc.c */ 6320 6324 #line 1067 "parser.yy" 6321 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6322 break; 6323 6324 case 254: 6325 { 6326 typedefTable.addToEnclosingScope( TypedefTable::TD ); 6327 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef(); 6328 } 6329 break; 6330 6331 case 255: 6325 6332 6326 6333 /* Line 1806 of yacc.c */ … … 6332 6339 break; 6333 6340 6334 case 25 5:6341 case 256: 6335 6342 6336 6343 /* Line 1806 of yacc.c */ 6337 6344 #line 1077 "parser.yy" 6338 {6339 typedefTable.addToEnclosingScope( TypedefTable::TD );6340 (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();6341 }6342 break;6343 6344 case 256:6345 6346 /* Line 1806 of yacc.c */6347 #line 1082 "parser.yy"6348 6345 { 6349 6346 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6355 6352 6356 6353 /* Line 1806 of yacc.c */ 6357 #line 10 93"parser.yy"6354 #line 1088 "parser.yy" 6358 6355 { 6359 6356 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6365 6362 6366 6363 /* Line 1806 of yacc.c */ 6367 #line 109 8"parser.yy"6364 #line 1093 "parser.yy" 6368 6365 { 6369 6366 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6375 6372 6376 6373 /* Line 1806 of yacc.c */ 6377 #line 1 103"parser.yy"6374 #line 1098 "parser.yy" 6378 6375 { 6379 6376 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6385 6382 6386 6383 /* Line 1806 of yacc.c */ 6387 #line 110 8"parser.yy"6384 #line 1103 "parser.yy" 6388 6385 { 6389 6386 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6395 6392 6396 6393 /* Line 1806 of yacc.c */ 6397 #line 11 13"parser.yy"6394 #line 1108 "parser.yy" 6398 6395 { 6399 6396 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6405 6402 6406 6403 /* Line 1806 of yacc.c */ 6407 #line 11 22"parser.yy"6404 #line 1117 "parser.yy" 6408 6405 { 6409 6406 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6415 6412 6416 6413 /* Line 1806 of yacc.c */ 6417 #line 112 7"parser.yy"6414 #line 1122 "parser.yy" 6418 6415 { 6419 6416 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6425 6422 6426 6423 /* Line 1806 of yacc.c */ 6427 #line 11 44"parser.yy"6424 #line 1139 "parser.yy" 6428 6425 { 6429 6426 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6435 6432 6436 6433 /* Line 1806 of yacc.c */ 6437 #line 114 9"parser.yy"6434 #line 1144 "parser.yy" 6438 6435 { 6439 6436 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6445 6442 6446 6443 /* Line 1806 of yacc.c */ 6447 #line 11 71"parser.yy"6444 #line 1166 "parser.yy" 6448 6445 { (yyval.decl) = 0; } 6449 6446 break; … … 6452 6449 6453 6450 /* Line 1806 of yacc.c */ 6454 #line 11 83"parser.yy"6451 #line 1178 "parser.yy" 6455 6452 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6456 6453 break; 6457 6454 6455 case 283: 6456 6457 /* Line 1806 of yacc.c */ 6458 #line 1184 "parser.yy" 6459 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); } 6460 break; 6461 6458 6462 case 284: 6459 6463 6460 6464 /* Line 1806 of yacc.c */ 6461 #line 11 94"parser.yy"6465 #line 1189 "parser.yy" 6462 6466 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6463 6467 break; … … 6466 6470 6467 6471 /* Line 1806 of yacc.c */ 6468 #line 119 6"parser.yy"6472 #line 1191 "parser.yy" 6469 6473 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6470 6474 break; … … 6473 6477 6474 6478 /* Line 1806 of yacc.c */ 6475 #line 119 8"parser.yy"6479 #line 1193 "parser.yy" 6476 6480 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6477 6481 break; … … 6480 6484 6481 6485 /* Line 1806 of yacc.c */ 6482 #line 1 200"parser.yy"6486 #line 1195 "parser.yy" 6483 6487 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6484 6488 break; … … 6487 6491 6488 6492 /* Line 1806 of yacc.c */ 6489 #line 1 202"parser.yy"6493 #line 1197 "parser.yy" 6490 6494 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6491 6495 break; … … 6494 6498 6495 6499 /* Line 1806 of yacc.c */ 6496 #line 1 204"parser.yy"6500 #line 1199 "parser.yy" 6497 6501 { 6498 6502 typedefTable.enterScope(); … … 6503 6507 6504 6508 /* Line 1806 of yacc.c */ 6505 #line 120 8"parser.yy"6509 #line 1203 "parser.yy" 6506 6510 { 6507 6511 typedefTable.leaveScope(); … … 6513 6517 6514 6518 /* Line 1806 of yacc.c */ 6515 #line 121 7"parser.yy"6519 #line 1212 "parser.yy" 6516 6520 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6517 6521 break; … … 6520 6524 6521 6525 /* Line 1806 of yacc.c */ 6522 #line 121 9"parser.yy"6526 #line 1214 "parser.yy" 6523 6527 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6524 6528 break; … … 6527 6531 6528 6532 /* Line 1806 of yacc.c */ 6529 #line 12 30"parser.yy"6533 #line 1225 "parser.yy" 6530 6534 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6531 6535 break; … … 6534 6538 6535 6539 /* Line 1806 of yacc.c */ 6536 #line 123 9"parser.yy"6540 #line 1234 "parser.yy" 6537 6541 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6538 6542 break; … … 6541 6545 6542 6546 /* Line 1806 of yacc.c */ 6543 #line 12 41"parser.yy"6547 #line 1236 "parser.yy" 6544 6548 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6545 6549 break; … … 6548 6552 6549 6553 /* Line 1806 of yacc.c */ 6550 #line 12 43"parser.yy"6554 #line 1238 "parser.yy" 6551 6555 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6552 6556 break; … … 6555 6559 6556 6560 /* Line 1806 of yacc.c */ 6557 #line 124 5"parser.yy"6561 #line 1240 "parser.yy" 6558 6562 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6559 6563 break; … … 6562 6566 6563 6567 /* Line 1806 of yacc.c */ 6564 #line 124 7"parser.yy"6568 #line 1242 "parser.yy" 6565 6569 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6566 6570 break; … … 6569 6573 6570 6574 /* Line 1806 of yacc.c */ 6571 #line 124 9"parser.yy"6575 #line 1244 "parser.yy" 6572 6576 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6573 6577 break; … … 6576 6580 6577 6581 /* Line 1806 of yacc.c */ 6578 #line 12 51"parser.yy"6582 #line 1246 "parser.yy" 6579 6583 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6580 6584 break; … … 6583 6587 6584 6588 /* Line 1806 of yacc.c */ 6589 #line 1248 "parser.yy" 6590 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6591 break; 6592 6593 case 305: 6594 6595 /* Line 1806 of yacc.c */ 6585 6596 #line 1253 "parser.yy" 6586 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }6587 break;6588 6589 case 305:6590 6591 /* Line 1806 of yacc.c */6592 #line 1258 "parser.yy"6593 6597 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6594 6598 break; … … 6597 6601 6598 6602 /* Line 1806 of yacc.c */ 6599 #line 12 60"parser.yy"6603 #line 1255 "parser.yy" 6600 6604 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6601 6605 break; … … 6604 6608 6605 6609 /* Line 1806 of yacc.c */ 6606 #line 12 62"parser.yy"6610 #line 1257 "parser.yy" 6607 6611 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6608 6612 break; … … 6611 6615 6612 6616 /* Line 1806 of yacc.c */ 6613 #line 12 64"parser.yy"6617 #line 1259 "parser.yy" 6614 6618 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6615 6619 break; … … 6618 6622 6619 6623 /* Line 1806 of yacc.c */ 6620 #line 126 6"parser.yy"6624 #line 1261 "parser.yy" 6621 6625 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6622 6626 break; … … 6625 6629 6626 6630 /* Line 1806 of yacc.c */ 6627 #line 126 8"parser.yy"6631 #line 1263 "parser.yy" 6628 6632 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6629 6633 break; … … 6632 6636 6633 6637 /* Line 1806 of yacc.c */ 6634 #line 12 70"parser.yy"6638 #line 1265 "parser.yy" 6635 6639 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6636 6640 break; … … 6639 6643 6640 6644 /* Line 1806 of yacc.c */ 6641 #line 12 72"parser.yy"6645 #line 1267 "parser.yy" 6642 6646 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6643 6647 break; … … 6646 6650 6647 6651 /* Line 1806 of yacc.c */ 6648 #line 12 74"parser.yy"6652 #line 1269 "parser.yy" 6649 6653 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6650 6654 break; … … 6653 6657 6654 6658 /* Line 1806 of yacc.c */ 6655 #line 127 6"parser.yy"6659 #line 1271 "parser.yy" 6656 6660 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6657 6661 break; … … 6660 6664 6661 6665 /* Line 1806 of yacc.c */ 6662 #line 127 8"parser.yy"6666 #line 1273 "parser.yy" 6663 6667 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6664 6668 break; … … 6667 6671 6668 6672 /* Line 1806 of yacc.c */ 6669 #line 12 80"parser.yy"6673 #line 1275 "parser.yy" 6670 6674 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6671 6675 break; … … 6674 6678 6675 6679 /* Line 1806 of yacc.c */ 6676 #line 128 7"parser.yy"6680 #line 1282 "parser.yy" 6677 6681 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6678 6682 break; … … 6681 6685 6682 6686 /* Line 1806 of yacc.c */ 6683 #line 128 9"parser.yy"6687 #line 1284 "parser.yy" 6684 6688 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6685 6689 break; … … 6688 6692 6689 6693 /* Line 1806 of yacc.c */ 6690 #line 12 91"parser.yy"6694 #line 1286 "parser.yy" 6691 6695 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6692 6696 break; … … 6695 6699 6696 6700 /* Line 1806 of yacc.c */ 6697 #line 12 93"parser.yy"6701 #line 1288 "parser.yy" 6698 6702 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6699 6703 break; … … 6702 6706 6703 6707 /* Line 1806 of yacc.c */ 6704 #line 129 9"parser.yy"6708 #line 1294 "parser.yy" 6705 6709 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6706 6710 break; … … 6709 6713 6710 6714 /* Line 1806 of yacc.c */ 6711 #line 130 6"parser.yy"6715 #line 1301 "parser.yy" 6712 6716 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6713 6717 break; … … 6716 6720 6717 6721 /* Line 1806 of yacc.c */ 6718 #line 130 8"parser.yy"6722 #line 1303 "parser.yy" 6719 6723 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6720 6724 break; … … 6723 6727 6724 6728 /* Line 1806 of yacc.c */ 6729 #line 1305 "parser.yy" 6730 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6731 break; 6732 6733 case 328: 6734 6735 /* Line 1806 of yacc.c */ 6725 6736 #line 1310 "parser.yy" 6726 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }6727 break;6728 6729 case 328:6730 6731 /* Line 1806 of yacc.c */6732 #line 1315 "parser.yy"6733 6737 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6734 6738 break; … … 6737 6741 6738 6742 /* Line 1806 of yacc.c */ 6739 #line 131 7"parser.yy"6743 #line 1312 "parser.yy" 6740 6744 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6741 6745 break; … … 6744 6748 6745 6749 /* Line 1806 of yacc.c */ 6746 #line 131 9"parser.yy"6750 #line 1314 "parser.yy" 6747 6751 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6748 6752 break; … … 6751 6755 6752 6756 /* Line 1806 of yacc.c */ 6753 #line 13 21"parser.yy"6757 #line 1316 "parser.yy" 6754 6758 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6755 6759 break; … … 6758 6762 6759 6763 /* Line 1806 of yacc.c */ 6760 #line 132 7"parser.yy"6764 #line 1322 "parser.yy" 6761 6765 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6762 6766 break; … … 6765 6769 6766 6770 /* Line 1806 of yacc.c */ 6767 #line 132 9"parser.yy"6771 #line 1324 "parser.yy" 6768 6772 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6769 6773 break; … … 6772 6776 6773 6777 /* Line 1806 of yacc.c */ 6774 #line 13 31"parser.yy"6778 #line 1326 "parser.yy" 6775 6779 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6776 6780 break; … … 6779 6783 6780 6784 /* Line 1806 of yacc.c */ 6781 #line 133 7"parser.yy"6785 #line 1332 "parser.yy" 6782 6786 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6783 6787 break; … … 6786 6790 6787 6791 /* Line 1806 of yacc.c */ 6788 #line 133 9"parser.yy"6792 #line 1334 "parser.yy" 6789 6793 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6790 6794 break; … … 6793 6797 6794 6798 /* Line 1806 of yacc.c */ 6795 #line 134 5"parser.yy"6799 #line 1340 "parser.yy" 6796 6800 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6797 6801 break; … … 6800 6804 6801 6805 /* Line 1806 of yacc.c */ 6802 #line 134 7"parser.yy"6806 #line 1342 "parser.yy" 6803 6807 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6804 6808 break; … … 6807 6811 6808 6812 /* Line 1806 of yacc.c */ 6813 #line 1344 "parser.yy" 6814 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6815 break; 6816 6817 case 343: 6818 6819 /* Line 1806 of yacc.c */ 6809 6820 #line 1349 "parser.yy" 6810 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }6811 break;6812 6813 case 343:6814 6815 /* Line 1806 of yacc.c */6816 #line 1354 "parser.yy"6817 6821 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6818 6822 break; … … 6821 6825 6822 6826 /* Line 1806 of yacc.c */ 6823 #line 135 6"parser.yy"6827 #line 1351 "parser.yy" 6824 6828 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6825 6829 break; … … 6828 6832 6829 6833 /* Line 1806 of yacc.c */ 6830 #line 135 8"parser.yy"6834 #line 1353 "parser.yy" 6831 6835 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6832 6836 break; … … 6835 6839 6836 6840 /* Line 1806 of yacc.c */ 6837 #line 136 8"parser.yy"6841 #line 1363 "parser.yy" 6838 6842 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 6839 6843 break; … … 6842 6846 6843 6847 /* Line 1806 of yacc.c */ 6844 #line 13 70"parser.yy"6848 #line 1365 "parser.yy" 6845 6849 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); } 6846 6850 break; … … 6849 6853 6850 6854 /* Line 1806 of yacc.c */ 6851 #line 13 72"parser.yy"6855 #line 1367 "parser.yy" 6852 6856 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 6853 6857 break; … … 6856 6860 6857 6861 /* Line 1806 of yacc.c */ 6858 #line 13 74"parser.yy"6862 #line 1369 "parser.yy" 6859 6863 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6860 6864 break; … … 6863 6867 6864 6868 /* Line 1806 of yacc.c */ 6869 #line 1371 "parser.yy" 6870 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6871 break; 6872 6873 case 353: 6874 6875 /* Line 1806 of yacc.c */ 6865 6876 #line 1376 "parser.yy" 6866 { (yyval.decl) = (yyvsp[(2) - (2)].decl); }6867 break;6868 6869 case 353:6870 6871 /* Line 1806 of yacc.c */6872 #line 1381 "parser.yy"6873 6877 { (yyval.aggKey) = DeclarationNode::Struct; } 6874 6878 break; … … 6877 6881 6878 6882 /* Line 1806 of yacc.c */ 6883 #line 1378 "parser.yy" 6884 { (yyval.aggKey) = DeclarationNode::Union; } 6885 break; 6886 6887 case 355: 6888 6889 /* Line 1806 of yacc.c */ 6879 6890 #line 1383 "parser.yy" 6880 { (yyval.aggKey) = DeclarationNode::Union; }6881 break;6882 6883 case 355:6884 6885 /* Line 1806 of yacc.c */6886 #line 1388 "parser.yy"6887 6891 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 6888 6892 break; … … 6891 6895 6892 6896 /* Line 1806 of yacc.c */ 6893 #line 13 90"parser.yy"6897 #line 1385 "parser.yy" 6894 6898 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 6895 6899 break; … … 6898 6902 6899 6903 /* Line 1806 of yacc.c */ 6900 #line 139 6"parser.yy"6904 #line 1391 "parser.yy" 6901 6905 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6902 6906 break; … … 6905 6909 6906 6910 /* Line 1806 of yacc.c */ 6907 #line 139 9"parser.yy"6911 #line 1394 "parser.yy" 6908 6912 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 6909 6913 break; … … 6912 6916 6913 6917 /* Line 1806 of yacc.c */ 6914 #line 140 5"parser.yy"6918 #line 1400 "parser.yy" 6915 6919 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 6916 6920 break; … … 6919 6923 6920 6924 /* Line 1806 of yacc.c */ 6921 #line 140 7"parser.yy"6925 #line 1402 "parser.yy" 6922 6926 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 6923 6927 break; … … 6926 6930 6927 6931 /* Line 1806 of yacc.c */ 6932 #line 1404 "parser.yy" 6933 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 6934 break; 6935 6936 case 365: 6937 6938 /* Line 1806 of yacc.c */ 6928 6939 #line 1409 "parser.yy" 6929 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }6930 break;6931 6932 case 365:6933 6934 /* Line 1806 of yacc.c */6935 #line 1414 "parser.yy"6936 6940 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6937 6941 break; … … 6940 6944 6941 6945 /* Line 1806 of yacc.c */ 6946 #line 1411 "parser.yy" 6947 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 6948 break; 6949 6950 case 367: 6951 6952 /* Line 1806 of yacc.c */ 6942 6953 #line 1416 "parser.yy" 6943 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 6944 break; 6945 6946 case 367: 6954 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 6955 break; 6956 6957 case 368: 6958 6959 /* Line 1806 of yacc.c */ 6960 #line 1418 "parser.yy" 6961 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 6962 break; 6963 6964 case 369: 6947 6965 6948 6966 /* Line 1806 of yacc.c */ 6949 6967 #line 1421 "parser.yy" 6950 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }6951 break;6952 6953 case 368:6954 6955 /* Line 1806 of yacc.c */6956 #line 1423 "parser.yy"6957 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }6958 break;6959 6960 case 369:6961 6962 /* Line 1806 of yacc.c */6963 #line 1426 "parser.yy"6964 6968 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 6965 6969 break; … … 6968 6972 6969 6973 /* Line 1806 of yacc.c */ 6970 #line 142 9"parser.yy"6974 #line 1424 "parser.yy" 6971 6975 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 6972 6976 break; … … 6975 6979 6976 6980 /* Line 1806 of yacc.c */ 6977 #line 143 5"parser.yy"6981 #line 1430 "parser.yy" 6978 6982 { (yyval.en) = 0; } 6979 6983 break; … … 6982 6986 6983 6987 /* Line 1806 of yacc.c */ 6988 #line 1432 "parser.yy" 6989 { (yyval.en) = (yyvsp[(1) - (1)].en); } 6990 break; 6991 6992 case 374: 6993 6994 /* Line 1806 of yacc.c */ 6984 6995 #line 1437 "parser.yy" 6985 { (yyval.en) = (yyvsp[(1) - (1)].en); }6986 break;6987 6988 case 374:6989 6990 /* Line 1806 of yacc.c */6991 #line 1442 "parser.yy"6992 6996 { (yyval.en) = (yyvsp[(2) - (2)].en); } 6993 6997 break; … … 6996 7000 6997 7001 /* Line 1806 of yacc.c */ 6998 #line 14 51"parser.yy"7002 #line 1446 "parser.yy" 6999 7003 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7000 7004 break; … … 7003 7007 7004 7008 /* Line 1806 of yacc.c */ 7005 #line 14 53"parser.yy"7009 #line 1448 "parser.yy" 7006 7010 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); } 7007 7011 break; … … 7010 7014 7011 7015 /* Line 1806 of yacc.c */ 7016 #line 1450 "parser.yy" 7017 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); } 7018 break; 7019 7020 case 379: 7021 7022 /* Line 1806 of yacc.c */ 7012 7023 #line 1455 "parser.yy" 7013 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }7014 break;7015 7016 case 379:7017 7018 /* Line 1806 of yacc.c */7019 #line 1460 "parser.yy"7020 7024 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7021 7025 break; … … 7024 7028 7025 7029 /* Line 1806 of yacc.c */ 7030 #line 1457 "parser.yy" 7031 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7032 break; 7033 7034 case 381: 7035 7036 /* Line 1806 of yacc.c */ 7026 7037 #line 1462 "parser.yy" 7027 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }7028 break;7029 7030 case 381:7031 7032 /* Line 1806 of yacc.c */7033 #line 1467 "parser.yy"7034 7038 { (yyval.en) = 0; } 7035 7039 break; … … 7038 7042 7039 7043 /* Line 1806 of yacc.c */ 7040 #line 146 9"parser.yy"7044 #line 1464 "parser.yy" 7041 7045 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7042 7046 break; … … 7045 7049 7046 7050 /* Line 1806 of yacc.c */ 7047 #line 147 6"parser.yy"7051 #line 1471 "parser.yy" 7048 7052 { (yyval.decl) = 0; } 7049 7053 break; … … 7052 7056 7053 7057 /* Line 1806 of yacc.c */ 7054 #line 14 84"parser.yy"7058 #line 1479 "parser.yy" 7055 7059 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7056 7060 break; … … 7059 7063 7060 7064 /* Line 1806 of yacc.c */ 7061 #line 148 6"parser.yy"7065 #line 1481 "parser.yy" 7062 7066 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7063 7067 break; … … 7066 7070 7067 7071 /* Line 1806 of yacc.c */ 7068 #line 148 8"parser.yy"7072 #line 1483 "parser.yy" 7069 7073 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7070 7074 break; … … 7073 7077 7074 7078 /* Line 1806 of yacc.c */ 7075 #line 149 6"parser.yy"7079 #line 1491 "parser.yy" 7076 7080 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7077 7081 break; … … 7080 7084 7081 7085 /* Line 1806 of yacc.c */ 7082 #line 149 8"parser.yy"7086 #line 1493 "parser.yy" 7083 7087 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7084 7088 break; … … 7087 7091 7088 7092 /* Line 1806 of yacc.c */ 7089 #line 1 500"parser.yy"7093 #line 1495 "parser.yy" 7090 7094 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7091 7095 break; … … 7094 7098 7095 7099 /* Line 1806 of yacc.c */ 7100 #line 1501 "parser.yy" 7101 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7102 break; 7103 7104 case 396: 7105 7106 /* Line 1806 of yacc.c */ 7096 7107 #line 1506 "parser.yy" 7108 { (yyval.decl) = 0; } 7109 break; 7110 7111 case 399: 7112 7113 /* Line 1806 of yacc.c */ 7114 #line 1513 "parser.yy" 7115 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7116 break; 7117 7118 case 402: 7119 7120 /* Line 1806 of yacc.c */ 7121 #line 1520 "parser.yy" 7097 7122 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7098 7123 break; 7099 7124 7100 case 396: 7101 7102 /* Line 1806 of yacc.c */ 7103 #line 1511 "parser.yy" 7104 { (yyval.decl) = 0; } 7105 break; 7106 7107 case 399: 7108 7109 /* Line 1806 of yacc.c */ 7110 #line 1518 "parser.yy" 7111 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7112 break; 7113 7114 case 402: 7115 7116 /* Line 1806 of yacc.c */ 7117 #line 1525 "parser.yy" 7125 case 403: 7126 7127 /* Line 1806 of yacc.c */ 7128 #line 1522 "parser.yy" 7118 7129 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7119 7130 break; 7120 7131 7121 case 403:7122 7123 /* Line 1806 of yacc.c */7124 #line 1527 "parser.yy"7125 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7126 break;7127 7128 7132 case 405: 7129 7133 7130 7134 /* Line 1806 of yacc.c */ 7135 #line 1531 "parser.yy" 7136 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7137 break; 7138 7139 case 406: 7140 7141 /* Line 1806 of yacc.c */ 7142 #line 1534 "parser.yy" 7143 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7144 break; 7145 7146 case 407: 7147 7148 /* Line 1806 of yacc.c */ 7131 7149 #line 1536 "parser.yy" 7132 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }7133 break;7134 7135 case 406:7136 7137 /* Line 1806 of yacc.c */7138 #line 1539 "parser.yy"7139 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }7140 break;7141 7142 case 407:7143 7144 /* Line 1806 of yacc.c */7145 #line 1541 "parser.yy"7146 7150 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7147 7151 break; … … 7150 7154 7151 7155 /* Line 1806 of yacc.c */ 7152 #line 15 51"parser.yy"7156 #line 1546 "parser.yy" 7153 7157 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7154 7158 break; 7155 7159 7156 7160 case 414: 7161 7162 /* Line 1806 of yacc.c */ 7163 #line 1552 "parser.yy" 7164 { 7165 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7166 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) ); 7167 } 7168 break; 7169 7170 case 415: 7157 7171 7158 7172 /* Line 1806 of yacc.c */ … … 7164 7178 break; 7165 7179 7166 case 415:7167 7168 /* Line 1806 of yacc.c */7169 #line 1562 "parser.yy"7170 {7171 typedefTable.addToEnclosingScope( TypedefTable::ID );7172 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );7173 }7174 break;7175 7176 7180 case 417: 7177 7181 7178 7182 /* Line 1806 of yacc.c */ 7179 #line 15 71"parser.yy"7183 #line 1566 "parser.yy" 7180 7184 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7181 7185 break; … … 7184 7188 7185 7189 /* Line 1806 of yacc.c */ 7186 #line 15 80"parser.yy"7190 #line 1575 "parser.yy" 7187 7191 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7188 7192 break; … … 7191 7195 7192 7196 /* Line 1806 of yacc.c */ 7193 #line 15 82"parser.yy"7197 #line 1577 "parser.yy" 7194 7198 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7195 7199 break; … … 7198 7202 7199 7203 /* Line 1806 of yacc.c */ 7200 #line 160 7"parser.yy"7204 #line 1602 "parser.yy" 7201 7205 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7202 7206 break; … … 7205 7209 7206 7210 /* Line 1806 of yacc.c */ 7211 #line 1610 "parser.yy" 7212 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7213 break; 7214 7215 case 436: 7216 7217 /* Line 1806 of yacc.c */ 7207 7218 #line 1615 "parser.yy" 7208 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7209 break;7210 7211 case 436:7212 7213 /* Line 1806 of yacc.c */7214 #line 1620 "parser.yy"7215 7219 { (yyval.in) = 0; } 7216 7220 break; … … 7219 7223 7220 7224 /* Line 1806 of yacc.c */ 7225 #line 1617 "parser.yy" 7226 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7227 break; 7228 7229 case 438: 7230 7231 /* Line 1806 of yacc.c */ 7232 #line 1621 "parser.yy" 7233 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7234 break; 7235 7236 case 439: 7237 7238 /* Line 1806 of yacc.c */ 7221 7239 #line 1622 "parser.yy" 7222 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7223 break; 7224 7225 case 438: 7226 7227 /* Line 1806 of yacc.c */ 7228 #line 1626 "parser.yy" 7229 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7230 break; 7231 7232 case 439: 7240 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7241 break; 7242 7243 case 441: 7233 7244 7234 7245 /* Line 1806 of yacc.c */ 7235 7246 #line 1627 "parser.yy" 7236 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }7237 break;7238 7239 case 441:7240 7241 /* Line 1806 of yacc.c */7242 #line 1632 "parser.yy"7243 7247 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7244 7248 break; … … 7247 7251 7248 7252 /* Line 1806 of yacc.c */ 7249 #line 16 33"parser.yy"7253 #line 1628 "parser.yy" 7250 7254 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7251 7255 break; … … 7254 7258 7255 7259 /* Line 1806 of yacc.c */ 7256 #line 163 5"parser.yy"7260 #line 1630 "parser.yy" 7257 7261 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7258 7262 break; … … 7261 7265 7262 7266 /* Line 1806 of yacc.c */ 7263 #line 16 51"parser.yy"7267 #line 1646 "parser.yy" 7264 7268 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7265 7269 break; … … 7268 7272 7269 7273 /* Line 1806 of yacc.c */ 7270 #line 165 7"parser.yy"7274 #line 1652 "parser.yy" 7271 7275 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7272 7276 break; … … 7275 7279 7276 7280 /* Line 1806 of yacc.c */ 7281 #line 1658 "parser.yy" 7282 { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); } 7283 break; 7284 7285 case 449: 7286 7287 /* Line 1806 of yacc.c */ 7288 #line 1661 "parser.yy" 7289 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7290 break; 7291 7292 case 450: 7293 7294 /* Line 1806 of yacc.c */ 7277 7295 #line 1663 "parser.yy" 7278 { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }7279 break;7280 7281 case 449:7282 7283 /* Line 1806 of yacc.c */7284 #line 1666 "parser.yy"7285 7296 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7286 7297 break; 7287 7298 7288 case 450:7289 7290 /* Line 1806 of yacc.c */7291 #line 1668 "parser.yy"7292 { (yyval.en) = (yyvsp[(3) - (5)].en); }7293 break;7294 7295 7299 case 451: 7296 7300 7297 7301 /* Line 1806 of yacc.c */ 7298 #line 16 70"parser.yy"7302 #line 1665 "parser.yy" 7299 7303 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); } 7300 7304 break; … … 7303 7307 7304 7308 /* Line 1806 of yacc.c */ 7305 #line 16 72"parser.yy"7309 #line 1667 "parser.yy" 7306 7310 { (yyval.en) = (yyvsp[(4) - (6)].en); } 7307 7311 break; … … 7310 7314 7311 7315 /* Line 1806 of yacc.c */ 7312 #line 169 6"parser.yy"7316 #line 1691 "parser.yy" 7313 7317 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7314 7318 break; … … 7317 7321 7318 7322 /* Line 1806 of yacc.c */ 7319 #line 169 8"parser.yy"7323 #line 1693 "parser.yy" 7320 7324 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7321 7325 break; … … 7324 7328 7325 7329 /* Line 1806 of yacc.c */ 7326 #line 1 700"parser.yy"7330 #line 1695 "parser.yy" 7327 7331 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7328 7332 break; … … 7331 7335 7332 7336 /* Line 1806 of yacc.c */ 7333 #line 170 6"parser.yy"7337 #line 1701 "parser.yy" 7334 7338 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7335 7339 break; … … 7338 7342 7339 7343 /* Line 1806 of yacc.c */ 7344 #line 1703 "parser.yy" 7345 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7346 break; 7347 7348 case 460: 7349 7350 /* Line 1806 of yacc.c */ 7340 7351 #line 1708 "parser.yy" 7341 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7342 break;7343 7344 case 460:7345 7346 /* Line 1806 of yacc.c */7347 #line 1713 "parser.yy"7348 7352 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7349 7353 break; … … 7352 7356 7353 7357 /* Line 1806 of yacc.c */ 7358 #line 1714 "parser.yy" 7359 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7360 break; 7361 7362 case 463: 7363 7364 /* Line 1806 of yacc.c */ 7354 7365 #line 1719 "parser.yy" 7355 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }7356 break;7357 7358 case 463:7359 7360 /* Line 1806 of yacc.c */7361 #line 1724 "parser.yy"7362 7366 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7363 7367 break; … … 7366 7370 7367 7371 /* Line 1806 of yacc.c */ 7368 #line 172 6"parser.yy"7372 #line 1721 "parser.yy" 7369 7373 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7370 7374 break; … … 7373 7377 7374 7378 /* Line 1806 of yacc.c */ 7375 #line 17 32"parser.yy"7379 #line 1727 "parser.yy" 7376 7380 { (yyval.tclass) = DeclarationNode::Type; } 7377 7381 break; … … 7380 7384 7381 7385 /* Line 1806 of yacc.c */ 7382 #line 17 34"parser.yy"7386 #line 1729 "parser.yy" 7383 7387 { (yyval.tclass) = DeclarationNode::Ftype; } 7384 7388 break; … … 7387 7391 7388 7392 /* Line 1806 of yacc.c */ 7393 #line 1731 "parser.yy" 7394 { (yyval.tclass) = DeclarationNode::Dtype; } 7395 break; 7396 7397 case 469: 7398 7399 /* Line 1806 of yacc.c */ 7389 7400 #line 1736 "parser.yy" 7390 { (yyval.tclass) = DeclarationNode::Dtype; }7391 break;7392 7393 case 469:7394 7395 /* Line 1806 of yacc.c */7396 #line 1741 "parser.yy"7397 7401 { (yyval.decl) = 0; } 7398 7402 break; … … 7401 7405 7402 7406 /* Line 1806 of yacc.c */ 7407 #line 1738 "parser.yy" 7408 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7409 break; 7410 7411 case 471: 7412 7413 /* Line 1806 of yacc.c */ 7403 7414 #line 1743 "parser.yy" 7404 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }7405 break;7406 7407 case 471:7408 7409 /* Line 1806 of yacc.c */7410 #line 1748 "parser.yy"7411 7415 { 7412 7416 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) ); … … 7418 7422 7419 7423 /* Line 1806 of yacc.c */ 7420 #line 17 53"parser.yy"7424 #line 1748 "parser.yy" 7421 7425 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7422 7426 break; … … 7425 7429 7426 7430 /* Line 1806 of yacc.c */ 7431 #line 1750 "parser.yy" 7432 { (yyval.decl) = 0; } 7433 break; 7434 7435 case 474: 7436 7437 /* Line 1806 of yacc.c */ 7427 7438 #line 1755 "parser.yy" 7428 { (yyval.decl) = 0; } 7429 break; 7430 7431 case 474: 7439 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7440 break; 7441 7442 case 476: 7443 7444 /* Line 1806 of yacc.c */ 7445 #line 1758 "parser.yy" 7446 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7447 break; 7448 7449 case 477: 7432 7450 7433 7451 /* Line 1806 of yacc.c */ 7434 7452 #line 1760 "parser.yy" 7435 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7436 break; 7437 7438 case 476: 7439 7440 /* Line 1806 of yacc.c */ 7441 #line 1763 "parser.yy" 7442 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7443 break; 7444 7445 case 477: 7453 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7454 break; 7455 7456 case 478: 7446 7457 7447 7458 /* Line 1806 of yacc.c */ 7448 7459 #line 1765 "parser.yy" 7449 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }7450 break;7451 7452 case 478:7453 7454 /* Line 1806 of yacc.c */7455 #line 1770 "parser.yy"7456 7460 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7457 7461 break; … … 7460 7464 7461 7465 /* Line 1806 of yacc.c */ 7462 #line 17 72"parser.yy"7466 #line 1767 "parser.yy" 7463 7467 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7464 7468 break; … … 7467 7471 7468 7472 /* Line 1806 of yacc.c */ 7473 #line 1769 "parser.yy" 7474 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7475 break; 7476 7477 case 481: 7478 7479 /* Line 1806 of yacc.c */ 7469 7480 #line 1774 "parser.yy" 7470 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }7471 break;7472 7473 case 481:7474 7475 /* Line 1806 of yacc.c */7476 #line 1779 "parser.yy"7477 7481 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7478 7482 break; … … 7481 7485 7482 7486 /* Line 1806 of yacc.c */ 7487 #line 1776 "parser.yy" 7488 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7489 break; 7490 7491 case 483: 7492 7493 /* Line 1806 of yacc.c */ 7483 7494 #line 1781 "parser.yy" 7484 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }7485 break;7486 7487 case 483:7488 7489 /* Line 1806 of yacc.c */7490 #line 1786 "parser.yy"7491 7495 { 7492 7496 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7498 7502 7499 7503 /* Line 1806 of yacc.c */ 7500 #line 17 91"parser.yy"7504 #line 1786 "parser.yy" 7501 7505 { 7502 7506 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7508 7512 7509 7513 /* Line 1806 of yacc.c */ 7510 #line 179 9"parser.yy"7514 #line 1794 "parser.yy" 7511 7515 { 7512 7516 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7518 7522 7519 7523 /* Line 1806 of yacc.c */ 7520 #line 1 804"parser.yy"7524 #line 1799 "parser.yy" 7521 7525 { 7522 7526 typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) ); … … 7528 7532 7529 7533 /* Line 1806 of yacc.c */ 7530 #line 180 9"parser.yy"7534 #line 1804 "parser.yy" 7531 7535 { 7532 7536 typedefTable.leaveContext(); … … 7539 7543 7540 7544 /* Line 1806 of yacc.c */ 7541 #line 181 9"parser.yy"7545 #line 1814 "parser.yy" 7542 7546 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7543 7547 break; 7544 7548 7545 7549 case 492: 7550 7551 /* Line 1806 of yacc.c */ 7552 #line 1824 "parser.yy" 7553 { 7554 typedefTable.addToEnclosingScope2( TypedefTable::ID ); 7555 (yyval.decl) = (yyvsp[(1) - (1)].decl); 7556 } 7557 break; 7558 7559 case 493: 7546 7560 7547 7561 /* Line 1806 of yacc.c */ … … 7553 7567 break; 7554 7568 7555 case 49 3:7569 case 494: 7556 7570 7557 7571 /* Line 1806 of yacc.c */ 7558 7572 #line 1834 "parser.yy" 7559 {7560 typedefTable.addToEnclosingScope2( TypedefTable::ID );7561 (yyval.decl) = (yyvsp[(1) - (1)].decl);7562 }7563 break;7564 7565 case 494:7566 7567 /* Line 1806 of yacc.c */7568 #line 1839 "parser.yy"7569 7573 { 7570 7574 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7576 7580 7577 7581 /* Line 1806 of yacc.c */ 7578 #line 184 7"parser.yy"7582 #line 1842 "parser.yy" 7579 7583 { 7580 7584 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7586 7590 7587 7591 /* Line 1806 of yacc.c */ 7588 #line 18 52"parser.yy"7592 #line 1847 "parser.yy" 7589 7593 { 7590 7594 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7596 7600 7597 7601 /* Line 1806 of yacc.c */ 7598 #line 18 62"parser.yy"7602 #line 1857 "parser.yy" 7599 7603 {} 7600 7604 break; … … 7603 7607 7604 7608 /* Line 1806 of yacc.c */ 7605 #line 18 64"parser.yy"7609 #line 1859 "parser.yy" 7606 7610 { 7607 7611 if ( theTree ) { … … 7616 7620 7617 7621 /* Line 1806 of yacc.c */ 7622 #line 1871 "parser.yy" 7623 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7624 break; 7625 7626 case 501: 7627 7628 /* Line 1806 of yacc.c */ 7618 7629 #line 1876 "parser.yy" 7619 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }7620 break;7621 7622 case 501:7623 7624 /* Line 1806 of yacc.c */7625 #line 1881 "parser.yy"7626 7630 { (yyval.decl) = 0; } 7627 7631 break; … … 7630 7634 7631 7635 /* Line 1806 of yacc.c */ 7632 #line 188 9"parser.yy"7636 #line 1884 "parser.yy" 7633 7637 {} 7634 7638 break; … … 7637 7641 7638 7642 /* Line 1806 of yacc.c */ 7639 #line 18 91"parser.yy"7643 #line 1886 "parser.yy" 7640 7644 { 7641 7645 linkageStack.push( linkage ); … … 7647 7651 7648 7652 /* Line 1806 of yacc.c */ 7649 #line 189 6"parser.yy"7653 #line 1891 "parser.yy" 7650 7654 { 7651 7655 linkage = linkageStack.top(); … … 7658 7662 7659 7663 /* Line 1806 of yacc.c */ 7660 #line 1 902"parser.yy"7664 #line 1897 "parser.yy" 7661 7665 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7662 7666 break; … … 7665 7669 7666 7670 /* Line 1806 of yacc.c */ 7667 #line 19 12"parser.yy"7671 #line 1907 "parser.yy" 7668 7672 { 7669 7673 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7676 7680 7677 7681 /* Line 1806 of yacc.c */ 7678 #line 191 8"parser.yy"7682 #line 1913 "parser.yy" 7679 7683 { 7680 7684 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7687 7691 7688 7692 /* Line 1806 of yacc.c */ 7689 #line 192 7"parser.yy"7693 #line 1922 "parser.yy" 7690 7694 { 7691 7695 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7698 7702 7699 7703 /* Line 1806 of yacc.c */ 7700 #line 19 33"parser.yy"7704 #line 1928 "parser.yy" 7701 7705 { 7702 7706 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7709 7713 7710 7714 /* Line 1806 of yacc.c */ 7711 #line 193 9"parser.yy"7715 #line 1934 "parser.yy" 7712 7716 { 7713 7717 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7720 7724 7721 7725 /* Line 1806 of yacc.c */ 7722 #line 194 5"parser.yy"7726 #line 1940 "parser.yy" 7723 7727 { 7724 7728 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7731 7735 7732 7736 /* Line 1806 of yacc.c */ 7733 #line 19 51"parser.yy"7737 #line 1946 "parser.yy" 7734 7738 { 7735 7739 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7742 7746 7743 7747 /* Line 1806 of yacc.c */ 7744 #line 195 9"parser.yy"7748 #line 1954 "parser.yy" 7745 7749 { 7746 7750 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7753 7757 7754 7758 /* Line 1806 of yacc.c */ 7755 #line 196 5"parser.yy"7759 #line 1960 "parser.yy" 7756 7760 { 7757 7761 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7764 7768 7765 7769 /* Line 1806 of yacc.c */ 7766 #line 19 73"parser.yy"7770 #line 1968 "parser.yy" 7767 7771 { 7768 7772 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7775 7779 7776 7780 /* Line 1806 of yacc.c */ 7777 #line 197 9"parser.yy"7781 #line 1974 "parser.yy" 7778 7782 { 7779 7783 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7786 7790 7787 7791 /* Line 1806 of yacc.c */ 7788 #line 19 94"parser.yy"7792 #line 1989 "parser.yy" 7789 7793 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7790 7794 break; 7791 7795 7792 case 527:7793 7794 /* Line 1806 of yacc.c */7795 #line 2004 "parser.yy"7796 { (yyval.decl) = 0; }7797 break;7798 7799 case 530:7800 7801 /* Line 1806 of yacc.c */7802 #line 2011 "parser.yy"7803 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }7804 break;7805 7806 case 531:7807 7808 /* Line 1806 of yacc.c */7809 #line 2017 "parser.yy"7810 { (yyval.decl) = 0; }7811 break;7812 7813 7796 case 537: 7814 7797 7815 7798 /* Line 1806 of yacc.c */ 7816 #line 20 32"parser.yy"7799 #line 2023 "parser.yy" 7817 7800 {} 7818 7801 break; … … 7821 7804 7822 7805 /* Line 1806 of yacc.c */ 7823 #line 20 33"parser.yy"7806 #line 2024 "parser.yy" 7824 7807 {} 7825 7808 break; … … 7828 7811 7829 7812 /* Line 1806 of yacc.c */ 7830 #line 20 34"parser.yy"7813 #line 2025 "parser.yy" 7831 7814 {} 7832 7815 break; … … 7835 7818 7836 7819 /* Line 1806 of yacc.c */ 7837 #line 20 35"parser.yy"7820 #line 2026 "parser.yy" 7838 7821 {} 7839 7822 break; 7840 7823 7841 case 541:7842 7843 /* Line 1806 of yacc.c */7844 #line 2070 "parser.yy"7845 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7846 break;7847 7848 case 543:7849 7850 /* Line 1806 of yacc.c */7851 #line 2073 "parser.yy"7852 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7853 break;7854 7855 case 544:7856 7857 /* Line 1806 of yacc.c */7858 #line 2075 "parser.yy"7859 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }7860 break;7861 7862 7824 case 545: 7863 7825 7864 7826 /* Line 1806 of yacc.c */ 7865 #line 20 80"parser.yy"7827 #line 2068 "parser.yy" 7866 7828 { 7867 7829 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 7873 7835 7874 7836 /* Line 1806 of yacc.c */ 7875 #line 20 85"parser.yy"7837 #line 2073 "parser.yy" 7876 7838 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7877 7839 break; … … 7880 7842 7881 7843 /* Line 1806 of yacc.c */ 7882 #line 20 90"parser.yy"7844 #line 2078 "parser.yy" 7883 7845 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7884 7846 break; … … 7887 7849 7888 7850 /* Line 1806 of yacc.c */ 7889 #line 20 92"parser.yy"7851 #line 2080 "parser.yy" 7890 7852 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7891 7853 break; … … 7894 7856 7895 7857 /* Line 1806 of yacc.c */ 7896 #line 20 94"parser.yy"7858 #line 2082 "parser.yy" 7897 7859 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7898 7860 break; … … 7901 7863 7902 7864 /* Line 1806 of yacc.c */ 7903 #line 20 99"parser.yy"7865 #line 2087 "parser.yy" 7904 7866 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 7905 7867 break; … … 7908 7870 7909 7871 /* Line 1806 of yacc.c */ 7910 #line 2 101"parser.yy"7872 #line 2089 "parser.yy" 7911 7873 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7912 7874 break; … … 7915 7877 7916 7878 /* Line 1806 of yacc.c */ 7917 #line 2 103"parser.yy"7879 #line 2091 "parser.yy" 7918 7880 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7919 7881 break; … … 7922 7884 7923 7885 /* Line 1806 of yacc.c */ 7924 #line 2 105"parser.yy"7886 #line 2093 "parser.yy" 7925 7887 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7926 7888 break; … … 7929 7891 7930 7892 /* Line 1806 of yacc.c */ 7931 #line 2 110"parser.yy"7893 #line 2098 "parser.yy" 7932 7894 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 7933 7895 break; … … 7936 7898 7937 7899 /* Line 1806 of yacc.c */ 7938 #line 21 12"parser.yy"7900 #line 2100 "parser.yy" 7939 7901 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7940 7902 break; 7941 7903 7942 case 556: 7943 7944 /* Line 1806 of yacc.c */ 7945 #line 2122 "parser.yy" 7946 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7947 break; 7948 7949 case 558: 7904 case 559: 7905 7906 /* Line 1806 of yacc.c */ 7907 #line 2116 "parser.yy" 7908 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 7909 break; 7910 7911 case 560: 7912 7913 /* Line 1806 of yacc.c */ 7914 #line 2118 "parser.yy" 7915 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 7916 break; 7917 7918 case 561: 7919 7920 /* Line 1806 of yacc.c */ 7921 #line 2120 "parser.yy" 7922 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7923 break; 7924 7925 case 562: 7950 7926 7951 7927 /* Line 1806 of yacc.c */ 7952 7928 #line 2125 "parser.yy" 7953 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7954 break; 7955 7956 case 559: 7957 7958 /* Line 1806 of yacc.c */ 7959 #line 2130 "parser.yy" 7929 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7930 break; 7931 7932 case 563: 7933 7934 /* Line 1806 of yacc.c */ 7935 #line 2127 "parser.yy" 7936 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7937 break; 7938 7939 case 564: 7940 7941 /* Line 1806 of yacc.c */ 7942 #line 2129 "parser.yy" 7943 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7944 break; 7945 7946 case 565: 7947 7948 /* Line 1806 of yacc.c */ 7949 #line 2134 "parser.yy" 7950 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7951 break; 7952 7953 case 566: 7954 7955 /* Line 1806 of yacc.c */ 7956 #line 2136 "parser.yy" 7957 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 7958 break; 7959 7960 case 567: 7961 7962 /* Line 1806 of yacc.c */ 7963 #line 2138 "parser.yy" 7964 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7965 break; 7966 7967 case 571: 7968 7969 /* Line 1806 of yacc.c */ 7970 #line 2153 "parser.yy" 7971 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 7972 break; 7973 7974 case 572: 7975 7976 /* Line 1806 of yacc.c */ 7977 #line 2155 "parser.yy" 7978 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 7979 break; 7980 7981 case 573: 7982 7983 /* Line 1806 of yacc.c */ 7984 #line 2157 "parser.yy" 7985 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7986 break; 7987 7988 case 574: 7989 7990 /* Line 1806 of yacc.c */ 7991 #line 2162 "parser.yy" 7992 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7993 break; 7994 7995 case 575: 7996 7997 /* Line 1806 of yacc.c */ 7998 #line 2164 "parser.yy" 7999 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8000 break; 8001 8002 case 576: 8003 8004 /* Line 1806 of yacc.c */ 8005 #line 2166 "parser.yy" 8006 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8007 break; 8008 8009 case 577: 8010 8011 /* Line 1806 of yacc.c */ 8012 #line 2171 "parser.yy" 8013 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8014 break; 8015 8016 case 578: 8017 8018 /* Line 1806 of yacc.c */ 8019 #line 2173 "parser.yy" 8020 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8021 break; 8022 8023 case 579: 8024 8025 /* Line 1806 of yacc.c */ 8026 #line 2175 "parser.yy" 8027 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8028 break; 8029 8030 case 585: 8031 8032 /* Line 1806 of yacc.c */ 8033 #line 2198 "parser.yy" 8034 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8035 break; 8036 8037 case 586: 8038 8039 /* Line 1806 of yacc.c */ 8040 #line 2203 "parser.yy" 8041 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8042 break; 8043 8044 case 587: 8045 8046 /* Line 1806 of yacc.c */ 8047 #line 2205 "parser.yy" 8048 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8049 break; 8050 8051 case 588: 8052 8053 /* Line 1806 of yacc.c */ 8054 #line 2207 "parser.yy" 8055 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8056 break; 8057 8058 case 589: 8059 8060 /* Line 1806 of yacc.c */ 8061 #line 2212 "parser.yy" 8062 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8063 break; 8064 8065 case 590: 8066 8067 /* Line 1806 of yacc.c */ 8068 #line 2214 "parser.yy" 8069 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8070 break; 8071 8072 case 591: 8073 8074 /* Line 1806 of yacc.c */ 8075 #line 2216 "parser.yy" 8076 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8077 break; 8078 8079 case 592: 8080 8081 /* Line 1806 of yacc.c */ 8082 #line 2218 "parser.yy" 8083 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8084 break; 8085 8086 case 593: 8087 8088 /* Line 1806 of yacc.c */ 8089 #line 2223 "parser.yy" 7960 8090 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 7961 8091 break; 7962 8092 7963 case 5 60:7964 7965 /* Line 1806 of yacc.c */ 7966 #line 2 132"parser.yy"8093 case 594: 8094 8095 /* Line 1806 of yacc.c */ 8096 #line 2225 "parser.yy" 7967 8097 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 7968 8098 break; 7969 8099 7970 case 5 61:7971 7972 /* Line 1806 of yacc.c */ 7973 #line 2 134"parser.yy"8100 case 595: 8101 8102 /* Line 1806 of yacc.c */ 8103 #line 2227 "parser.yy" 7974 8104 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7975 8105 break; 7976 8106 7977 case 562:7978 7979 /* Line 1806 of yacc.c */ 7980 #line 2 139"parser.yy"8107 case 600: 8108 8109 /* Line 1806 of yacc.c */ 8110 #line 2244 "parser.yy" 7981 8111 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 7982 8112 break; 7983 8113 7984 case 563:7985 7986 /* Line 1806 of yacc.c */ 7987 #line 2 141"parser.yy"8114 case 601: 8115 8116 /* Line 1806 of yacc.c */ 8117 #line 2246 "parser.yy" 7988 8118 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 7989 8119 break; 7990 8120 7991 case 564:7992 7993 /* Line 1806 of yacc.c */ 7994 #line 2 143"parser.yy"8121 case 602: 8122 8123 /* Line 1806 of yacc.c */ 8124 #line 2248 "parser.yy" 7995 8125 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7996 8126 break; 7997 8127 7998 case 565: 7999 8000 /* Line 1806 of yacc.c */ 8001 #line 2148 "parser.yy" 8128 case 603: 8129 8130 /* Line 1806 of yacc.c */ 8131 #line 2253 "parser.yy" 8132 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8133 break; 8134 8135 case 604: 8136 8137 /* Line 1806 of yacc.c */ 8138 #line 2255 "parser.yy" 8002 8139 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8003 8140 break; 8004 8141 8005 case 566:8006 8007 /* Line 1806 of yacc.c */ 8008 #line 2 150"parser.yy"8142 case 605: 8143 8144 /* Line 1806 of yacc.c */ 8145 #line 2257 "parser.yy" 8009 8146 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8010 8147 break; 8011 8148 8012 case 567:8013 8014 /* Line 1806 of yacc.c */ 8015 #line 2 152"parser.yy"8149 case 606: 8150 8151 /* Line 1806 of yacc.c */ 8152 #line 2259 "parser.yy" 8016 8153 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8017 8154 break; 8018 8155 8019 case 571: 8020 8021 /* Line 1806 of yacc.c */ 8022 #line 2167 "parser.yy" 8023 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8024 break; 8025 8026 case 572: 8027 8028 /* Line 1806 of yacc.c */ 8029 #line 2169 "parser.yy" 8030 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8031 break; 8032 8033 case 573: 8034 8035 /* Line 1806 of yacc.c */ 8036 #line 2171 "parser.yy" 8037 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8038 break; 8039 8040 case 574: 8041 8042 /* Line 1806 of yacc.c */ 8043 #line 2176 "parser.yy" 8044 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8045 break; 8046 8047 case 575: 8048 8049 /* Line 1806 of yacc.c */ 8050 #line 2178 "parser.yy" 8051 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8052 break; 8053 8054 case 576: 8055 8056 /* Line 1806 of yacc.c */ 8057 #line 2180 "parser.yy" 8058 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8059 break; 8060 8061 case 577: 8062 8063 /* Line 1806 of yacc.c */ 8064 #line 2185 "parser.yy" 8065 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8066 break; 8067 8068 case 578: 8069 8070 /* Line 1806 of yacc.c */ 8071 #line 2187 "parser.yy" 8072 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8073 break; 8074 8075 case 579: 8076 8077 /* Line 1806 of yacc.c */ 8078 #line 2189 "parser.yy" 8079 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8080 break; 8081 8082 case 580: 8083 8084 /* Line 1806 of yacc.c */ 8085 #line 2204 "parser.yy" 8086 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8087 break; 8088 8089 case 582: 8090 8091 /* Line 1806 of yacc.c */ 8092 #line 2207 "parser.yy" 8093 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8094 break; 8095 8096 case 583: 8097 8098 /* Line 1806 of yacc.c */ 8099 #line 2209 "parser.yy" 8100 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8101 break; 8102 8103 case 585: 8104 8105 /* Line 1806 of yacc.c */ 8106 #line 2215 "parser.yy" 8107 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8108 break; 8109 8110 case 586: 8111 8112 /* Line 1806 of yacc.c */ 8113 #line 2220 "parser.yy" 8114 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8115 break; 8116 8117 case 587: 8118 8119 /* Line 1806 of yacc.c */ 8120 #line 2222 "parser.yy" 8121 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8122 break; 8123 8124 case 588: 8125 8126 /* Line 1806 of yacc.c */ 8127 #line 2224 "parser.yy" 8128 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8129 break; 8130 8131 case 589: 8132 8133 /* Line 1806 of yacc.c */ 8134 #line 2229 "parser.yy" 8135 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8136 break; 8137 8138 case 590: 8139 8140 /* Line 1806 of yacc.c */ 8141 #line 2231 "parser.yy" 8142 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8143 break; 8144 8145 case 591: 8146 8147 /* Line 1806 of yacc.c */ 8148 #line 2233 "parser.yy" 8149 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8150 break; 8151 8152 case 592: 8153 8154 /* Line 1806 of yacc.c */ 8155 #line 2235 "parser.yy" 8156 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8157 break; 8158 8159 case 593: 8160 8161 /* Line 1806 of yacc.c */ 8162 #line 2240 "parser.yy" 8156 case 607: 8157 8158 /* Line 1806 of yacc.c */ 8159 #line 2264 "parser.yy" 8163 8160 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8164 8161 break; 8165 8162 8166 case 594:8167 8168 /* Line 1806 of yacc.c */ 8169 #line 22 42"parser.yy"8163 case 608: 8164 8165 /* Line 1806 of yacc.c */ 8166 #line 2266 "parser.yy" 8170 8167 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8171 8168 break; 8172 8169 8173 case 595: 8174 8175 /* Line 1806 of yacc.c */ 8176 #line 2244 "parser.yy" 8177 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8178 break; 8179 8180 case 596: 8181 8182 /* Line 1806 of yacc.c */ 8183 #line 2254 "parser.yy" 8184 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8185 break; 8186 8187 case 598: 8188 8189 /* Line 1806 of yacc.c */ 8190 #line 2257 "parser.yy" 8191 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8192 break; 8193 8194 case 599: 8195 8196 /* Line 1806 of yacc.c */ 8197 #line 2259 "parser.yy" 8198 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8199 break; 8200 8201 case 600: 8202 8203 /* Line 1806 of yacc.c */ 8204 #line 2264 "parser.yy" 8205 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8206 break; 8207 8208 case 601: 8209 8210 /* Line 1806 of yacc.c */ 8211 #line 2266 "parser.yy" 8212 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8213 break; 8214 8215 case 602: 8170 case 609: 8216 8171 8217 8172 /* Line 1806 of yacc.c */ … … 8220 8175 break; 8221 8176 8222 case 603:8223 8224 /* Line 1806 of yacc.c */8225 #line 2273 "parser.yy"8226 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8227 break;8228 8229 case 604:8230 8231 /* Line 1806 of yacc.c */8232 #line 2275 "parser.yy"8233 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8234 break;8235 8236 case 605:8237 8238 /* Line 1806 of yacc.c */8239 #line 2277 "parser.yy"8240 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8241 break;8242 8243 case 606:8244 8245 /* Line 1806 of yacc.c */8246 #line 2279 "parser.yy"8247 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8248 break;8249 8250 case 607:8251 8252 /* Line 1806 of yacc.c */8253 #line 2284 "parser.yy"8254 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8255 break;8256 8257 case 608:8258 8259 /* Line 1806 of yacc.c */8260 #line 2286 "parser.yy"8261 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8262 break;8263 8264 case 609:8265 8266 /* Line 1806 of yacc.c */8267 #line 2288 "parser.yy"8268 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8269 break;8270 8271 case 610:8272 8273 /* Line 1806 of yacc.c */8274 #line 2319 "parser.yy"8275 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8276 break;8277 8278 case 612:8279 8280 /* Line 1806 of yacc.c */8281 #line 2322 "parser.yy"8282 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8283 break;8284 8285 case 613:8286 8287 /* Line 1806 of yacc.c */8288 #line 2324 "parser.yy"8289 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8290 break;8291 8292 8177 case 614: 8293 8178 8294 8179 /* Line 1806 of yacc.c */ 8295 #line 23 29"parser.yy"8180 #line 2306 "parser.yy" 8296 8181 { 8297 8182 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8303 8188 8304 8189 /* Line 1806 of yacc.c */ 8305 #line 23 34"parser.yy"8190 #line 2311 "parser.yy" 8306 8191 { 8307 8192 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8313 8198 8314 8199 /* Line 1806 of yacc.c */ 8315 #line 23 42"parser.yy"8200 #line 2319 "parser.yy" 8316 8201 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8317 8202 break; … … 8320 8205 8321 8206 /* Line 1806 of yacc.c */ 8322 #line 23 44"parser.yy"8207 #line 2321 "parser.yy" 8323 8208 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8324 8209 break; … … 8327 8212 8328 8213 /* Line 1806 of yacc.c */ 8329 #line 23 46"parser.yy"8214 #line 2323 "parser.yy" 8330 8215 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8331 8216 break; … … 8334 8219 8335 8220 /* Line 1806 of yacc.c */ 8336 #line 23 51"parser.yy"8221 #line 2328 "parser.yy" 8337 8222 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8338 8223 break; … … 8341 8226 8342 8227 /* Line 1806 of yacc.c */ 8343 #line 23 53"parser.yy"8228 #line 2330 "parser.yy" 8344 8229 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8345 8230 break; … … 8348 8233 8349 8234 /* Line 1806 of yacc.c */ 8350 #line 23 58"parser.yy"8235 #line 2335 "parser.yy" 8351 8236 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8352 8237 break; … … 8355 8240 8356 8241 /* Line 1806 of yacc.c */ 8357 #line 23 60"parser.yy"8242 #line 2337 "parser.yy" 8358 8243 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8359 8244 break; 8360 8245 8361 case 624: 8246 case 626: 8247 8248 /* Line 1806 of yacc.c */ 8249 #line 2357 "parser.yy" 8250 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8251 break; 8252 8253 case 627: 8254 8255 /* Line 1806 of yacc.c */ 8256 #line 2359 "parser.yy" 8257 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8258 break; 8259 8260 case 628: 8261 8262 /* Line 1806 of yacc.c */ 8263 #line 2361 "parser.yy" 8264 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8265 break; 8266 8267 case 629: 8268 8269 /* Line 1806 of yacc.c */ 8270 #line 2363 "parser.yy" 8271 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8272 break; 8273 8274 case 630: 8275 8276 /* Line 1806 of yacc.c */ 8277 #line 2365 "parser.yy" 8278 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8279 break; 8280 8281 case 632: 8282 8283 /* Line 1806 of yacc.c */ 8284 #line 2371 "parser.yy" 8285 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8286 break; 8287 8288 case 633: 8289 8290 /* Line 1806 of yacc.c */ 8291 #line 2373 "parser.yy" 8292 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8293 break; 8294 8295 case 634: 8362 8296 8363 8297 /* Line 1806 of yacc.c */ 8364 8298 #line 2375 "parser.yy" 8365 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8366 break; 8367 8368 case 6 25:8369 8370 /* Line 1806 of yacc.c */ 8371 #line 23 77"parser.yy"8372 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8373 break; 8374 8375 case 6 26:8299 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8300 break; 8301 8302 case 635: 8303 8304 /* Line 1806 of yacc.c */ 8305 #line 2380 "parser.yy" 8306 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8307 break; 8308 8309 case 636: 8376 8310 8377 8311 /* Line 1806 of yacc.c */ 8378 8312 #line 2382 "parser.yy" 8313 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8314 break; 8315 8316 case 637: 8317 8318 /* Line 1806 of yacc.c */ 8319 #line 2384 "parser.yy" 8320 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8321 break; 8322 8323 case 638: 8324 8325 /* Line 1806 of yacc.c */ 8326 #line 2390 "parser.yy" 8327 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8328 break; 8329 8330 case 639: 8331 8332 /* Line 1806 of yacc.c */ 8333 #line 2392 "parser.yy" 8334 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8335 break; 8336 8337 case 641: 8338 8339 /* Line 1806 of yacc.c */ 8340 #line 2398 "parser.yy" 8341 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8342 break; 8343 8344 case 642: 8345 8346 /* Line 1806 of yacc.c */ 8347 #line 2400 "parser.yy" 8348 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8349 break; 8350 8351 case 643: 8352 8353 /* Line 1806 of yacc.c */ 8354 #line 2402 "parser.yy" 8355 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8356 break; 8357 8358 case 644: 8359 8360 /* Line 1806 of yacc.c */ 8361 #line 2404 "parser.yy" 8362 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8363 break; 8364 8365 case 648: 8366 8367 /* Line 1806 of yacc.c */ 8368 #line 2424 "parser.yy" 8379 8369 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8380 8370 break; 8381 8371 8382 case 6 27:8383 8384 /* Line 1806 of yacc.c */ 8385 #line 2 384"parser.yy"8372 case 649: 8373 8374 /* Line 1806 of yacc.c */ 8375 #line 2426 "parser.yy" 8386 8376 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8387 8377 break; 8388 8378 8389 case 6 28:8390 8391 /* Line 1806 of yacc.c */ 8392 #line 2 386"parser.yy"8379 case 650: 8380 8381 /* Line 1806 of yacc.c */ 8382 #line 2428 "parser.yy" 8393 8383 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8394 8384 break; 8395 8385 8396 case 6 29:8397 8398 /* Line 1806 of yacc.c */ 8399 #line 2 388"parser.yy"8386 case 651: 8387 8388 /* Line 1806 of yacc.c */ 8389 #line 2430 "parser.yy" 8400 8390 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8401 8391 break; 8402 8392 8403 case 6 30:8404 8405 /* Line 1806 of yacc.c */ 8406 #line 2 390"parser.yy"8393 case 652: 8394 8395 /* Line 1806 of yacc.c */ 8396 #line 2432 "parser.yy" 8407 8397 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8408 8398 break; 8409 8399 8410 case 6 32:8411 8412 /* Line 1806 of yacc.c */ 8413 #line 2 396"parser.yy"8400 case 654: 8401 8402 /* Line 1806 of yacc.c */ 8403 #line 2438 "parser.yy" 8414 8404 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8415 8405 break; 8416 8406 8417 case 6 33:8418 8419 /* Line 1806 of yacc.c */ 8420 #line 2 398"parser.yy"8407 case 655: 8408 8409 /* Line 1806 of yacc.c */ 8410 #line 2440 "parser.yy" 8421 8411 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8422 8412 break; 8423 8413 8424 case 6 34:8425 8426 /* Line 1806 of yacc.c */ 8427 #line 24 00"parser.yy"8414 case 656: 8415 8416 /* Line 1806 of yacc.c */ 8417 #line 2442 "parser.yy" 8428 8418 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8429 8419 break; 8430 8420 8431 case 6 35:8432 8433 /* Line 1806 of yacc.c */ 8434 #line 24 05"parser.yy"8421 case 657: 8422 8423 /* Line 1806 of yacc.c */ 8424 #line 2447 "parser.yy" 8435 8425 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8436 8426 break; 8437 8427 8438 case 6 36:8439 8440 /* Line 1806 of yacc.c */ 8441 #line 24 07"parser.yy"8428 case 658: 8429 8430 /* Line 1806 of yacc.c */ 8431 #line 2449 "parser.yy" 8442 8432 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8443 8433 break; 8444 8434 8445 case 6 37:8446 8447 /* Line 1806 of yacc.c */ 8448 #line 24 09"parser.yy"8435 case 659: 8436 8437 /* Line 1806 of yacc.c */ 8438 #line 2451 "parser.yy" 8449 8439 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8450 8440 break; 8451 8441 8452 case 638: 8453 8454 /* Line 1806 of yacc.c */ 8455 #line 2415 "parser.yy" 8442 case 661: 8443 8444 /* Line 1806 of yacc.c */ 8445 #line 2458 "parser.yy" 8446 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8447 break; 8448 8449 case 663: 8450 8451 /* Line 1806 of yacc.c */ 8452 #line 2469 "parser.yy" 8456 8453 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8457 8454 break; 8458 8455 8459 case 639: 8460 8461 /* Line 1806 of yacc.c */ 8462 #line 2417 "parser.yy" 8463 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8464 break; 8465 8466 case 641: 8467 8468 /* Line 1806 of yacc.c */ 8469 #line 2423 "parser.yy" 8470 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8471 break; 8472 8473 case 642: 8474 8475 /* Line 1806 of yacc.c */ 8476 #line 2425 "parser.yy" 8477 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8478 break; 8479 8480 case 643: 8481 8482 /* Line 1806 of yacc.c */ 8483 #line 2427 "parser.yy" 8484 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8485 break; 8486 8487 case 644: 8488 8489 /* Line 1806 of yacc.c */ 8490 #line 2429 "parser.yy" 8491 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8492 break; 8493 8494 case 646: 8495 8496 /* Line 1806 of yacc.c */ 8497 #line 2444 "parser.yy" 8498 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8499 break; 8500 8501 case 647: 8502 8503 /* Line 1806 of yacc.c */ 8504 #line 2446 "parser.yy" 8505 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8506 break; 8507 8508 case 648: 8509 8510 /* Line 1806 of yacc.c */ 8511 #line 2451 "parser.yy" 8456 case 664: 8457 8458 /* Line 1806 of yacc.c */ 8459 #line 2472 "parser.yy" 8460 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8461 break; 8462 8463 case 665: 8464 8465 /* Line 1806 of yacc.c */ 8466 #line 2474 "parser.yy" 8467 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8468 break; 8469 8470 case 666: 8471 8472 /* Line 1806 of yacc.c */ 8473 #line 2477 "parser.yy" 8474 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8475 break; 8476 8477 case 667: 8478 8479 /* Line 1806 of yacc.c */ 8480 #line 2479 "parser.yy" 8481 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8482 break; 8483 8484 case 668: 8485 8486 /* Line 1806 of yacc.c */ 8487 #line 2481 "parser.yy" 8488 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8489 break; 8490 8491 case 672: 8492 8493 /* Line 1806 of yacc.c */ 8494 #line 2500 "parser.yy" 8512 8495 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8513 8496 break; 8514 8497 8515 case 6 49:8516 8517 /* Line 1806 of yacc.c */ 8518 #line 2 453"parser.yy"8498 case 673: 8499 8500 /* Line 1806 of yacc.c */ 8501 #line 2502 "parser.yy" 8519 8502 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8520 8503 break; 8521 8504 8522 case 6 50:8523 8524 /* Line 1806 of yacc.c */ 8525 #line 2 455"parser.yy"8505 case 674: 8506 8507 /* Line 1806 of yacc.c */ 8508 #line 2504 "parser.yy" 8526 8509 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8527 8510 break; 8528 8511 8529 case 6 51:8530 8531 /* Line 1806 of yacc.c */ 8532 #line 2 457"parser.yy"8512 case 675: 8513 8514 /* Line 1806 of yacc.c */ 8515 #line 2506 "parser.yy" 8533 8516 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8534 8517 break; 8535 8518 8536 case 6 52:8537 8538 /* Line 1806 of yacc.c */ 8539 #line 2 459"parser.yy"8519 case 676: 8520 8521 /* Line 1806 of yacc.c */ 8522 #line 2508 "parser.yy" 8540 8523 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8541 8524 break; 8542 8525 8543 case 6 54:8544 8545 /* Line 1806 of yacc.c */ 8546 #line 2 465"parser.yy"8526 case 678: 8527 8528 /* Line 1806 of yacc.c */ 8529 #line 2514 "parser.yy" 8547 8530 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8548 8531 break; 8549 8532 8550 case 6 55:8551 8552 /* Line 1806 of yacc.c */ 8553 #line 2 467"parser.yy"8533 case 679: 8534 8535 /* Line 1806 of yacc.c */ 8536 #line 2516 "parser.yy" 8554 8537 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8555 8538 break; 8556 8539 8557 case 6 56:8558 8559 /* Line 1806 of yacc.c */ 8560 #line 2 469"parser.yy"8540 case 680: 8541 8542 /* Line 1806 of yacc.c */ 8543 #line 2518 "parser.yy" 8561 8544 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8562 8545 break; 8563 8546 8564 case 657: 8565 8566 /* Line 1806 of yacc.c */ 8567 #line 2474 "parser.yy" 8568 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8569 break; 8570 8571 case 658: 8572 8573 /* Line 1806 of yacc.c */ 8574 #line 2476 "parser.yy" 8547 case 681: 8548 8549 /* Line 1806 of yacc.c */ 8550 #line 2523 "parser.yy" 8575 8551 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8576 8552 break; 8577 8553 8578 case 6 59:8579 8580 /* Line 1806 of yacc.c */ 8581 #line 2 478"parser.yy"8554 case 682: 8555 8556 /* Line 1806 of yacc.c */ 8557 #line 2525 "parser.yy" 8582 8558 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8583 8559 break; 8584 8560 8585 case 661: 8586 8587 /* Line 1806 of yacc.c */ 8588 #line 2485 "parser.yy" 8589 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8590 break; 8591 8592 case 663: 8593 8594 /* Line 1806 of yacc.c */ 8595 #line 2496 "parser.yy" 8596 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8597 break; 8598 8599 case 664: 8600 8601 /* Line 1806 of yacc.c */ 8602 #line 2499 "parser.yy" 8561 case 685: 8562 8563 /* Line 1806 of yacc.c */ 8564 #line 2535 "parser.yy" 8565 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8566 break; 8567 8568 case 688: 8569 8570 /* Line 1806 of yacc.c */ 8571 #line 2545 "parser.yy" 8572 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8573 break; 8574 8575 case 689: 8576 8577 /* Line 1806 of yacc.c */ 8578 #line 2547 "parser.yy" 8579 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8580 break; 8581 8582 case 690: 8583 8584 /* Line 1806 of yacc.c */ 8585 #line 2549 "parser.yy" 8586 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8587 break; 8588 8589 case 691: 8590 8591 /* Line 1806 of yacc.c */ 8592 #line 2551 "parser.yy" 8593 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8594 break; 8595 8596 case 692: 8597 8598 /* Line 1806 of yacc.c */ 8599 #line 2553 "parser.yy" 8600 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8601 break; 8602 8603 case 693: 8604 8605 /* Line 1806 of yacc.c */ 8606 #line 2555 "parser.yy" 8607 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8608 break; 8609 8610 case 694: 8611 8612 /* Line 1806 of yacc.c */ 8613 #line 2562 "parser.yy" 8614 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8615 break; 8616 8617 case 695: 8618 8619 /* Line 1806 of yacc.c */ 8620 #line 2564 "parser.yy" 8621 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8622 break; 8623 8624 case 696: 8625 8626 /* Line 1806 of yacc.c */ 8627 #line 2566 "parser.yy" 8628 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8629 break; 8630 8631 case 697: 8632 8633 /* Line 1806 of yacc.c */ 8634 #line 2568 "parser.yy" 8635 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8636 break; 8637 8638 case 698: 8639 8640 /* Line 1806 of yacc.c */ 8641 #line 2570 "parser.yy" 8642 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8643 break; 8644 8645 case 699: 8646 8647 /* Line 1806 of yacc.c */ 8648 #line 2572 "parser.yy" 8649 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8650 break; 8651 8652 case 700: 8653 8654 /* Line 1806 of yacc.c */ 8655 #line 2574 "parser.yy" 8656 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8657 break; 8658 8659 case 701: 8660 8661 /* Line 1806 of yacc.c */ 8662 #line 2576 "parser.yy" 8663 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8664 break; 8665 8666 case 702: 8667 8668 /* Line 1806 of yacc.c */ 8669 #line 2578 "parser.yy" 8670 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8671 break; 8672 8673 case 703: 8674 8675 /* Line 1806 of yacc.c */ 8676 #line 2580 "parser.yy" 8677 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8678 break; 8679 8680 case 704: 8681 8682 /* Line 1806 of yacc.c */ 8683 #line 2585 "parser.yy" 8603 8684 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8604 8685 break; 8605 8686 8606 case 665: 8607 8608 /* Line 1806 of yacc.c */ 8609 #line 2501 "parser.yy" 8610 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8611 break; 8612 8613 case 666: 8614 8615 /* Line 1806 of yacc.c */ 8616 #line 2504 "parser.yy" 8687 case 705: 8688 8689 /* Line 1806 of yacc.c */ 8690 #line 2587 "parser.yy" 8617 8691 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8618 8692 break; 8619 8693 8620 case 667: 8621 8622 /* Line 1806 of yacc.c */ 8623 #line 2506 "parser.yy" 8624 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8625 break; 8626 8627 case 668: 8628 8629 /* Line 1806 of yacc.c */ 8630 #line 2508 "parser.yy" 8631 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8632 break; 8633 8634 case 670: 8635 8636 /* Line 1806 of yacc.c */ 8637 #line 2522 "parser.yy" 8638 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8639 break; 8640 8641 case 671: 8642 8643 /* Line 1806 of yacc.c */ 8644 #line 2524 "parser.yy" 8645 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8646 break; 8647 8648 case 672: 8649 8650 /* Line 1806 of yacc.c */ 8651 #line 2529 "parser.yy" 8652 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8653 break; 8654 8655 case 673: 8656 8657 /* Line 1806 of yacc.c */ 8658 #line 2531 "parser.yy" 8659 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8660 break; 8661 8662 case 674: 8663 8664 /* Line 1806 of yacc.c */ 8665 #line 2533 "parser.yy" 8666 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8667 break; 8668 8669 case 675: 8670 8671 /* Line 1806 of yacc.c */ 8672 #line 2535 "parser.yy" 8673 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8674 break; 8675 8676 case 676: 8677 8678 /* Line 1806 of yacc.c */ 8679 #line 2537 "parser.yy" 8680 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8681 break; 8682 8683 case 678: 8684 8685 /* Line 1806 of yacc.c */ 8686 #line 2543 "parser.yy" 8687 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8688 break; 8689 8690 case 679: 8691 8692 /* Line 1806 of yacc.c */ 8693 #line 2545 "parser.yy" 8694 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8695 break; 8696 8697 case 680: 8698 8699 /* Line 1806 of yacc.c */ 8700 #line 2547 "parser.yy" 8701 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8702 break; 8703 8704 case 681: 8705 8706 /* Line 1806 of yacc.c */ 8707 #line 2552 "parser.yy" 8708 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8709 break; 8710 8711 case 682: 8712 8713 /* Line 1806 of yacc.c */ 8714 #line 2554 "parser.yy" 8715 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8716 break; 8717 8718 case 685: 8719 8720 /* Line 1806 of yacc.c */ 8721 #line 2564 "parser.yy" 8694 case 706: 8695 8696 /* Line 1806 of yacc.c */ 8697 #line 2592 "parser.yy" 8698 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8699 break; 8700 8701 case 707: 8702 8703 /* Line 1806 of yacc.c */ 8704 #line 2594 "parser.yy" 8705 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8706 break; 8707 8708 case 709: 8709 8710 /* Line 1806 of yacc.c */ 8711 #line 2621 "parser.yy" 8722 8712 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8723 8713 break; 8724 8714 8725 case 688:8726 8727 /* Line 1806 of yacc.c */ 8728 #line 2 574"parser.yy"8715 case 713: 8716 8717 /* Line 1806 of yacc.c */ 8718 #line 2632 "parser.yy" 8729 8719 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8730 8720 break; 8731 8721 8732 case 689:8733 8734 /* Line 1806 of yacc.c */ 8735 #line 2 576"parser.yy"8722 case 714: 8723 8724 /* Line 1806 of yacc.c */ 8725 #line 2634 "parser.yy" 8736 8726 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8737 8727 break; 8738 8728 8739 case 690:8740 8741 /* Line 1806 of yacc.c */ 8742 #line 2 578"parser.yy"8729 case 715: 8730 8731 /* Line 1806 of yacc.c */ 8732 #line 2636 "parser.yy" 8743 8733 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8744 8734 break; 8745 8735 8746 case 691:8747 8748 /* Line 1806 of yacc.c */ 8749 #line 2 580"parser.yy"8736 case 716: 8737 8738 /* Line 1806 of yacc.c */ 8739 #line 2638 "parser.yy" 8750 8740 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8751 8741 break; 8752 8742 8753 case 692:8754 8755 /* Line 1806 of yacc.c */ 8756 #line 2 582"parser.yy"8743 case 717: 8744 8745 /* Line 1806 of yacc.c */ 8746 #line 2640 "parser.yy" 8757 8747 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8758 8748 break; 8759 8749 8760 case 693:8761 8762 /* Line 1806 of yacc.c */ 8763 #line 2 584"parser.yy"8750 case 718: 8751 8752 /* Line 1806 of yacc.c */ 8753 #line 2642 "parser.yy" 8764 8754 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8765 8755 break; 8766 8756 8767 case 694:8768 8769 /* Line 1806 of yacc.c */ 8770 #line 2 591"parser.yy"8757 case 719: 8758 8759 /* Line 1806 of yacc.c */ 8760 #line 2649 "parser.yy" 8771 8761 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8772 8762 break; 8773 8763 8774 case 695: 8775 8776 /* Line 1806 of yacc.c */ 8777 #line 2593 "parser.yy" 8764 case 720: 8765 8766 /* Line 1806 of yacc.c */ 8767 #line 2651 "parser.yy" 8768 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8769 break; 8770 8771 case 721: 8772 8773 /* Line 1806 of yacc.c */ 8774 #line 2653 "parser.yy" 8778 8775 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8779 8776 break; 8780 8777 8781 case 696: 8782 8783 /* Line 1806 of yacc.c */ 8784 #line 2595 "parser.yy" 8778 case 722: 8779 8780 /* Line 1806 of yacc.c */ 8781 #line 2655 "parser.yy" 8782 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8783 break; 8784 8785 case 723: 8786 8787 /* Line 1806 of yacc.c */ 8788 #line 2657 "parser.yy" 8785 8789 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8786 8790 break; 8787 8791 8788 case 697: 8789 8790 /* Line 1806 of yacc.c */ 8791 #line 2597 "parser.yy" 8792 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8793 break; 8794 8795 case 698: 8796 8797 /* Line 1806 of yacc.c */ 8798 #line 2599 "parser.yy" 8792 case 724: 8793 8794 /* Line 1806 of yacc.c */ 8795 #line 2659 "parser.yy" 8799 8796 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8800 8797 break; 8801 8798 8802 case 699: 8803 8804 /* Line 1806 of yacc.c */ 8805 #line 2601 "parser.yy" 8806 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8807 break; 8808 8809 case 700: 8810 8811 /* Line 1806 of yacc.c */ 8812 #line 2603 "parser.yy" 8813 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8814 break; 8815 8816 case 701: 8817 8818 /* Line 1806 of yacc.c */ 8819 #line 2605 "parser.yy" 8820 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8821 break; 8822 8823 case 702: 8824 8825 /* Line 1806 of yacc.c */ 8826 #line 2607 "parser.yy" 8827 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8828 break; 8829 8830 case 703: 8831 8832 /* Line 1806 of yacc.c */ 8833 #line 2609 "parser.yy" 8834 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8835 break; 8836 8837 case 704: 8838 8839 /* Line 1806 of yacc.c */ 8840 #line 2614 "parser.yy" 8841 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8842 break; 8843 8844 case 705: 8845 8846 /* Line 1806 of yacc.c */ 8847 #line 2616 "parser.yy" 8848 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8849 break; 8850 8851 case 706: 8852 8853 /* Line 1806 of yacc.c */ 8854 #line 2621 "parser.yy" 8855 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 8856 break; 8857 8858 case 707: 8859 8860 /* Line 1806 of yacc.c */ 8861 #line 2623 "parser.yy" 8862 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 8863 break; 8864 8865 case 709: 8866 8867 /* Line 1806 of yacc.c */ 8868 #line 2650 "parser.yy" 8869 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8870 break; 8871 8872 case 713: 8873 8874 /* Line 1806 of yacc.c */ 8875 #line 2661 "parser.yy" 8876 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8877 break; 8878 8879 case 714: 8880 8881 /* Line 1806 of yacc.c */ 8882 #line 2663 "parser.yy" 8883 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8884 break; 8885 8886 case 715: 8887 8888 /* Line 1806 of yacc.c */ 8889 #line 2665 "parser.yy" 8890 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8891 break; 8892 8893 case 716: 8894 8895 /* Line 1806 of yacc.c */ 8896 #line 2667 "parser.yy" 8897 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8898 break; 8899 8900 case 717: 8799 case 725: 8800 8801 /* Line 1806 of yacc.c */ 8802 #line 2664 "parser.yy" 8803 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 8804 break; 8805 8806 case 726: 8901 8807 8902 8808 /* Line 1806 of yacc.c */ 8903 8809 #line 2669 "parser.yy" 8904 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 )); }8905 break; 8906 8907 case 7 18:8810 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 8811 break; 8812 8813 case 727: 8908 8814 8909 8815 /* Line 1806 of yacc.c */ 8910 8816 #line 2671 "parser.yy" 8911 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }8912 break;8913 8914 case 719:8915 8916 /* Line 1806 of yacc.c */8917 #line 2678 "parser.yy"8918 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8919 break;8920 8921 case 720:8922 8923 /* Line 1806 of yacc.c */8924 #line 2680 "parser.yy"8925 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8926 break;8927 8928 case 721:8929 8930 /* Line 1806 of yacc.c */8931 #line 2682 "parser.yy"8932 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }8933 break;8934 8935 case 722:8936 8937 /* Line 1806 of yacc.c */8938 #line 2684 "parser.yy"8939 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8940 break;8941 8942 case 723:8943 8944 /* Line 1806 of yacc.c */8945 #line 2686 "parser.yy"8946 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8947 break;8948 8949 case 724:8950 8951 /* Line 1806 of yacc.c */8952 #line 2688 "parser.yy"8953 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }8954 break;8955 8956 case 725:8957 8958 /* Line 1806 of yacc.c */8959 #line 2693 "parser.yy"8960 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }8961 break;8962 8963 case 726:8964 8965 /* Line 1806 of yacc.c */8966 #line 2698 "parser.yy"8967 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }8968 break;8969 8970 case 727:8971 8972 /* Line 1806 of yacc.c */8973 #line 2700 "parser.yy"8974 8817 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 8975 8818 break; … … 8978 8821 8979 8822 /* Line 1806 of yacc.c */ 8980 #line 2 702"parser.yy"8823 #line 2673 "parser.yy" 8981 8824 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 8982 8825 break; … … 8985 8828 8986 8829 /* Line 1806 of yacc.c */ 8987 #line 2 726"parser.yy"8830 #line 2697 "parser.yy" 8988 8831 { (yyval.en) = 0; } 8989 8832 break; … … 8992 8835 8993 8836 /* Line 1806 of yacc.c */ 8994 #line 2 728"parser.yy"8837 #line 2699 "parser.yy" 8995 8838 { (yyval.en) = (yyvsp[(2) - (2)].en); } 8996 8839 break; … … 8999 8842 9000 8843 /* Line 1806 of yacc.c */ 9001 #line 9002"Parser/parser.cc"8844 #line 8845 "Parser/parser.cc" 9002 8845 default: break; 9003 8846 } … … 9230 9073 9231 9074 /* Line 2067 of yacc.c */ 9232 #line 27 31"parser.yy"9075 #line 2702 "parser.yy" 9233 9076 9234 9077 // ----end of grammar---- -
src/Parser/parser.h
rb29f8f3 r1e8f143 246 246 247 247 /* Line 2068 of yacc.c */ 248 #line 10 8"parser.yy"248 #line 107 "parser.yy" 249 249 250 250 Token tok; -
src/Parser/parser.yy
rb29f8f3 r1e8f143 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 16 16:25:12201513 // Update Count : 12 6712 // Last Modified On : Fri Jul 3 13:53:45 2015 13 // Update Count : 1220 14 14 // 15 15 … … 54 54 #include "lex.h" 55 55 #include "ParseNode.h" 56 #include "TypeData.h"57 56 #include "LinkageSpec.h" 58 57 … … 228 227 %type<decl> variable_abstract_array variable_abstract_declarator variable_abstract_function 229 228 %type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr 230 231 %type<decl> attribute_list_opt attribute_list attribute232 229 233 230 // initializers … … 623 620 labeled_statement: 624 621 no_attr_identifier ':' attribute_list_opt statement 625 { 626 $$ = $4->add_label( $1 ); 627 } 622 { $$ = $4->add_label( $1 );} 628 623 ; 629 624 … … 1187 1182 type_qualifier_name 1188 1183 | attribute 1189 //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }1184 { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); } 1190 1185 ; 1191 1186 … … 2002 1997 attribute_list_opt: // GCC 2003 1998 // empty 2004 { $$ = 0; }2005 1999 | attribute_list 2006 2000 ; … … 2009 2003 attribute 2010 2004 | attribute_list attribute 2011 { $$ = $2->addQualifiers( $1 ); }2012 2005 ; 2013 2006 2014 2007 attribute: // GCC 2015 2008 ATTRIBUTE '(' '(' attribute_parameter_list ')' ')' 2016 // { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }2017 { $$ = 0; }2018 2009 ; 2019 2010 … … 2068 2059 variable_declarator: 2069 2060 paren_identifier attribute_list_opt 2070 { $$ = $1->addQualifiers( $2 ); }2071 2061 | variable_ptr 2072 2062 | variable_array attribute_list_opt 2073 { $$ = $1->addQualifiers( $2 ); }2074 2063 | variable_function attribute_list_opt 2075 { $$ = $1->addQualifiers( $2 ); }2076 2064 ; 2077 2065 … … 2120 2108 function_declarator: 2121 2109 function_no_ptr attribute_list_opt 2122 { $$ = $1->addQualifiers( $2 ); }2123 2110 | function_ptr 2124 2111 | function_array attribute_list_opt 2125 { $$ = $1->addQualifiers( $2 ); }2126 2112 ; 2127 2113 … … 2202 2188 type_redeclarator: 2203 2189 paren_type attribute_list_opt 2204 { $$ = $1->addQualifiers( $2 ); }2205 2190 | type_ptr 2206 2191 | type_array attribute_list_opt 2207 { $$ = $1->addQualifiers( $2 ); }2208 2192 | type_function attribute_list_opt 2209 { $$ = $1->addQualifiers( $2 ); }2210 2193 ; 2211 2194 … … 2252 2235 identifier_parameter_declarator: 2253 2236 paren_identifier attribute_list_opt 2254 { $$ = $1->addQualifiers( $2 ); }2255 2237 | identifier_parameter_ptr 2256 2238 | identifier_parameter_array attribute_list_opt 2257 { $$ = $1->addQualifiers( $2 ); }2258 2239 | identifier_parameter_function attribute_list_opt 2259 { $$ = $1->addQualifiers( $2 ); }2260 2240 ; 2261 2241 … … 2317 2297 type_parameter_redeclarator: 2318 2298 typedef attribute_list_opt 2319 { $$ = $1->addQualifiers( $2 ); }2320 2299 | type_parameter_ptr 2321 2300 | type_parameter_array attribute_list_opt 2322 { $$ = $1->addQualifiers( $2 ); }2323 2301 | type_parameter_function attribute_list_opt 2324 { $$ = $1->addQualifiers( $2 ); }2325 2302 ; 2326 2303 … … 2373 2350 abstract_ptr 2374 2351 | abstract_array attribute_list_opt 2375 { $$ = $1->addQualifiers( $2 ); }2376 2352 | abstract_function attribute_list_opt 2377 { $$ = $1->addQualifiers( $2 ); }2378 2353 ; 2379 2354 … … 2442 2417 abstract_parameter_ptr 2443 2418 | abstract_parameter_array attribute_list_opt 2444 { $$ = $1->addQualifiers( $2 ); }2445 2419 | abstract_parameter_function attribute_list_opt 2446 { $$ = $1->addQualifiers( $2 ); }2447 2420 ; 2448 2421 … … 2520 2493 variable_abstract_ptr 2521 2494 | variable_abstract_array attribute_list_opt 2522 { $$ = $1->addQualifiers( $2 ); }2523 2495 | variable_abstract_function attribute_list_opt 2524 { $$ = $1->addQualifiers( $2 ); }2525 2496 ; 2526 2497 -
src/ResolvExpr/Resolver.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:17:01 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jul 15 14:54:04201513 // Update Count : 1 6711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 3 16:18:20 2015 13 // Update Count : 159 14 14 // 15 15 … … 226 226 227 227 void Resolver::visit( ForStmt *forStmt ) { 228 SymTab::Indexer::visit( forStmt ); 229 228 // SymTab::Indexer::visit( forStmt ); 229 Expression *newExpr; 230 // for statements introduce a level of scope 231 enterScope(); 232 maybeAccept( forStmt->get_initialization(), *this ); 230 233 if ( forStmt->get_condition() ) { 231 Expression *newExpr = findSingleExpression( forStmt->get_condition(), *this );234 newExpr = findSingleExpression( forStmt->get_condition(), *this ); 232 235 delete forStmt->get_condition(); 233 236 forStmt->set_condition( newExpr ); 234 237 } // if 235 238 236 239 if ( forStmt->get_increment() ) { 237 Expression *newExpr = findVoidExpression( forStmt->get_increment(), *this );240 newExpr = findVoidExpression( forStmt->get_increment(), *this ); 238 241 delete forStmt->get_increment(); 239 242 forStmt->set_increment( newExpr ); 240 243 } // if 244 245 maybeAccept( forStmt->get_condition(), *this ); 246 maybeAccept( forStmt->get_increment(), *this ); 247 maybeAccept( forStmt->get_body(), *this ); 248 leaveScope(); 241 249 } 242 250 -
src/SymTab/AddVisit.h
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 16:14:32 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Jul 14 12:26:17201513 // Update Count : 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 16:16:38 2015 13 // Update Count : 3 14 14 // 15 15 … … 57 57 inline void addVisit(ForStmt *forStmt, Visitor &visitor) { 58 58 addVisitStatement( forStmt->get_body(), visitor ); 59 acceptAll( forStmt->get_initialization(), visitor );59 maybeAccept( forStmt->get_initialization(), visitor ); 60 60 maybeAccept( forStmt->get_condition(), visitor ); 61 61 maybeAccept( forStmt->get_increment(), visitor ); -
src/SymTab/TypeEquality.cc
rb29f8f3 r1e8f143 10 10 // Created On : Tue Jul 07 16:28:29 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Jul 20 14:16:11201513 // Update Count : 3 712 // Last Modified On : Thu Jul 09 11:18:46 2015 13 // Update Count : 36 14 14 // 15 15 … … 91 91 // and must both have a dimension expression or not have a dimension 92 92 result = result && arrayType->get_isVarLen() == at->get_isVarLen() 93 && ( (arrayType->get_dimension() != 0 && at->get_dimension() != 0)94 || (arrayType->get_dimension() == 0 && at->get_dimension() == 0));93 && (arrayType->get_dimension() != 0 && at->get_dimension() != 0 94 || arrayType->get_dimension() == 0 && at->get_dimension() == 0); 95 95 96 96 if ( vlaErr ) { -
src/SymTab/Validate.cc
rb29f8f3 r1e8f143 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Jul 22 13:16:00201513 // Update Count : 1 9412 // Last Modified On : Mon Jul 13 14:38:19 2015 13 // Update Count : 184 14 14 // 15 15 … … 169 169 virtual TypeDecl *mutate( TypeDecl *typeDecl ); 170 170 virtual DeclarationWithType *mutate( FunctionDecl *funcDecl ); 171 virtual DeclarationWithType*mutate( ObjectDecl *objDecl );171 virtual ObjectDecl *mutate( ObjectDecl *objDecl ); 172 172 virtual CompoundStmt *mutate( CompoundStmt *compoundStmt ); 173 173 virtual Type *mutate( TypeInstType *aggregateUseType ); … … 203 203 void validateType( Type *type, const Indexer *indexer ) { 204 204 Pass1 pass1; 205 Pass2 pass2( false, indexer );206 205 Pass3 pass3( indexer ); 207 206 type->accept( pass1 ); 208 type->accept( pass2 );209 207 type->accept( pass3 ); 210 208 } … … 405 403 } // for 406 404 } // for 407 408 if ( ctx->get_parameters().size() != contextInst->get_parameters().size() ) {409 throw SemanticError( "incorrect number of context parameters: ", contextInst );410 } // if411 412 405 applySubstitution( ctx->get_parameters().begin(), ctx->get_parameters().end(), contextInst->get_parameters().begin(), ctx->get_members().begin(), ctx->get_members().end(), back_inserter( contextInst->get_members() ) ); 413 406 } … … 541 534 init->get_args().push_back( new NameExpr( "0" ) ); 542 535 Statement *initStmt = new ExprStmt( noLabels, init ); 543 std::list<Statement *> initList;544 initList.push_back( initStmt );545 536 546 537 UntypedExpr *cond = new UntypedExpr( new NameExpr( "?<?" ) ); … … 568 559 assignExpr->get_args().push_back( srcIndex ); 569 560 570 *out++ = new ForStmt( noLabels, init List, cond, inc, new ExprStmt( noLabels, assignExpr ) );561 *out++ = new ForStmt( noLabels, initStmt, cond, inc, new ExprStmt( noLabels, assignExpr ) ); 571 562 } 572 563 … … 621 612 delete assigns.front(); 622 613 assigns.pop_front(); 623 } // for614 } 624 615 625 616 declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() ); … … 836 827 rtt->get_parameters().clear(); 837 828 cloneAll(typeInst->get_parameters(), rtt->get_parameters()); 838 } // if829 } 839 830 delete typeInst; 840 831 return ret; … … 890 881 } 891 882 892 DeclarationWithType*EliminateTypedef::mutate( ObjectDecl * objDecl ) {883 ObjectDecl *EliminateTypedef::mutate( ObjectDecl * objDecl ) { 893 884 TypedefMap oldNames = typedefNames; 894 DeclarationWithType *ret = Mutator::mutate( objDecl ); 895 if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) { 896 return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() ); 897 } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) { 898 throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", objDecl ); 899 } // if 885 ObjectDecl *ret = Mutator::mutate( objDecl ); 900 886 typedefNames = oldNames; 901 887 return ret; -
src/SynTree/Declaration.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 13 17:58:38201513 // Update Count : 1012 // Last Modified On : Sat Jun 13 08:07:20 2015 13 // Update Count : 9 14 14 // 15 15 … … 27 27 28 28 Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage ) 29 : name( name ), storageClass( sc ), linkage( linkage ), isInline( false ), isNoreturn( false ),uniqueId( 0 ) {29 : name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) { 30 30 } 31 31 32 32 Declaration::Declaration( const Declaration &other ) 33 : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), isInline( other.isInline ), isNoreturn( other.isNoreturn), uniqueId( other.uniqueId ) {33 : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) { 34 34 } 35 35 -
src/SynTree/Declaration.h
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 13 18:15:59201513 // Update Count : 2 812 // Last Modified On : Sat Jun 13 09:10:31 2015 13 // Update Count : 25 14 14 // 15 15 … … 35 35 LinkageSpec::Type get_linkage() const { return linkage; } 36 36 void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; } 37 bool get_isInline() const { return isInline; }38 void set_isInline( bool newValue ) { isInline = newValue; }39 bool get_isNoreturn() const { return isNoreturn; }40 void set_isNoreturn( bool newValue ) { isNoreturn = newValue; }41 37 UniqueId get_uniqueId() const { return uniqueId; } 42 38 … … 54 50 DeclarationNode::StorageClass storageClass; 55 51 LinkageSpec::Type linkage; 56 bool isInline, isNoreturn;57 52 UniqueId uniqueId; 58 53 }; … … 80 75 typedef DeclarationWithType Parent; 81 76 public: 82 ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init , bool isInline = false, bool isNoreturn = false);77 ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init ); 83 78 ObjectDecl( const ObjectDecl &other ); 84 79 virtual ~ObjectDecl(); … … 94 89 virtual ObjectDecl *clone() const { return new ObjectDecl( *this ); } 95 90 virtual void accept( Visitor &v ) { v.visit( this ); } 96 virtual DeclarationWithType*acceptMutator( Mutator &m ) { return m.mutate( this ); }91 virtual ObjectDecl *acceptMutator( Mutator &m ) { return m.mutate( this ); } 97 92 virtual void print( std::ostream &os, int indent = 0 ) const; 98 93 virtual void printShort( std::ostream &os, int indent = 0 ) const; … … 117 112 CompoundStmt *get_statements() const { return statements; } 118 113 void set_statements( CompoundStmt *newValue ) { statements = newValue; } 114 bool get_isInline() const { return isInline; } 115 bool get_isNoreturn() const { return isNoreturn; } 119 116 std::list< std::string >& get_oldIdents() { return oldIdents; } 120 117 std::list< Declaration* >& get_oldDecls() { return oldDecls; } … … 128 125 FunctionType *type; 129 126 CompoundStmt *statements; 127 bool isInline, isNoreturn; 130 128 std::list< std::string > oldIdents; 131 129 std::list< Declaration* > oldDecls; -
src/SynTree/FunctionDecl.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 13 18:11:44201513 // Update Count : 1 912 // Last Modified On : Sat Jun 13 09:10:32 2015 13 // Update Count : 16 14 14 // 15 15 … … 22 22 23 23 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn ) 24 : Parent( name, sc, linkage ), type( type ), statements( statements ) { 25 set_isInline( isInline ); 26 set_isNoreturn( isNoreturn ); 24 : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ), isNoreturn( isNoreturn ) { 27 25 // this is a brazen hack to force the function "main" to have C linkage 28 26 if ( name == "main" ) { … … 32 30 33 31 FunctionDecl::FunctionDecl( const FunctionDecl &other ) 34 : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {32 : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ), isNoreturn( other.isNoreturn ) { 35 33 } 36 34 … … 59 57 os << LinkageSpec::toString( get_linkage() ) << " "; 60 58 } // if 61 if ( get_isInline()) {59 if ( isInline ) { 62 60 os << "inline "; 63 61 } // if 64 if ( get_isNoreturn()) {62 if ( isNoreturn ) { 65 63 os << "_Noreturn "; 66 64 } // if … … 98 96 os << get_name() << ": "; 99 97 } // if 100 if ( get_isInline()) {98 if ( isInline ) { 101 99 os << "inline "; 102 100 } // if 103 if ( get_isNoreturn()) {101 if ( isNoreturn ) { 104 102 os << "_Noreturn "; 105 103 } // if -
src/SynTree/Mutator.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 16 16:10:54201513 // Update Count : 312 // Last Modified On : Mon May 18 10:10:46 2015 13 // Update Count : 1 14 14 // 15 15 … … 28 28 Mutator::~Mutator() {} 29 29 30 DeclarationWithType*Mutator::mutate( ObjectDecl *objectDecl ) {30 ObjectDecl *Mutator::mutate( ObjectDecl *objectDecl ) { 31 31 objectDecl->set_type( maybeMutate( objectDecl->get_type(), *this ) ); 32 32 objectDecl->set_init( maybeMutate( objectDecl->get_init(), *this ) ); … … 109 109 110 110 Statement *Mutator::mutate( ForStmt *forStmt ) { 111 mutateAll( forStmt->get_initialization(), *this);111 forStmt->set_initialization( maybeMutate( forStmt->get_initialization(), *this ) ); 112 112 forStmt->set_condition( maybeMutate( forStmt->get_condition(), *this ) ); 113 113 forStmt->set_increment( maybeMutate( forStmt->get_increment(), *this ) ); -
src/SynTree/Mutator.h
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Jul 13 18:14:47201513 // Update Count : 511 // Last Modified By : Rob Schluntz 12 // Last Modified On : Fri May 29 16:34:08 2015 13 // Update Count : 4 14 14 // 15 15 #include <cassert> … … 26 26 virtual ~Mutator(); 27 27 public: 28 virtual DeclarationWithType* mutate( ObjectDecl *objectDecl );28 virtual ObjectDecl* mutate( ObjectDecl *objectDecl ); 29 29 virtual DeclarationWithType* mutate( FunctionDecl *functionDecl ); 30 30 virtual Declaration* mutate( StructDecl *aggregateDecl ); -
src/SynTree/ObjectDecl.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 13 18:08:27201513 // Update Count : 1 612 // Last Modified On : Sat Jun 13 08:10:16 2015 13 // Update Count : 15 14 14 // 15 15 … … 20 20 #include "utility.h" 21 21 22 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init , bool isInline, bool isNoreturn)22 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init ) 23 23 : Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) { 24 set_isInline( isInline );25 set_isNoreturn( isNoreturn );26 24 } 27 25 -
src/SynTree/Statement.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jul 15 14:57:40 201513 // Update Count : 2 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jun 29 17:37:10 2015 13 // Update Count : 22 14 14 // 15 15 … … 192 192 } 193 193 194 ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *>initialization_, Expression *condition_, Expression *increment_, Statement *body_ ):194 ForStmt::ForStmt( std::list<Label> labels, Statement *initialization_, Expression *condition_, Expression *increment_, Statement *body_ ): 195 195 Statement( labels ), initialization( initialization_ ), condition( condition_ ), increment( increment_ ), body( body_ ) { 196 196 } 197 197 198 198 ForStmt::~ForStmt() { 199 delete All( initialization );199 delete initialization; 200 200 delete condition; 201 201 delete increment; … … 213 213 214 214 os << string( indent + 2, ' ' ) << "initialization: \n"; 215 for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) { 216 (*it)->print( os, indent + 4 ); 217 } 215 if ( initialization != 0 ) 216 initialization->print( os, indent + 4 ); 218 217 219 218 os << "\n" << string( indent + 2, ' ' ) << "condition: \n"; -
src/SynTree/Statement.h
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Ju l 14 12:14:54201513 // Update Count : 2 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jun 23 11:44:27 2015 13 // Update Count : 20 14 14 // 15 15 … … 199 199 class ForStmt : public Statement { 200 200 public: 201 ForStmt( std::list<Label> labels, std::list<Statement *> initialization,201 ForStmt( std::list<Label> labels, Statement *initialization = 0, 202 202 Expression *condition = 0, Expression *increment = 0, Statement *body = 0 ); 203 203 virtual ~ForStmt(); 204 204 205 std::list<Statement *> &get_initialization() { return initialization; }206 void set_initialization( std::list<Statement *>newValue ) { initialization = newValue; }205 Statement *get_initialization() { return initialization; } 206 void set_initialization( Statement *newValue ) { initialization = newValue; } 207 207 Expression *get_condition() { return condition; } 208 208 void set_condition( Expression *newValue ) { condition = newValue; } … … 217 217 virtual void print( std::ostream &os, int indent = 0 ) const; 218 218 private: 219 std::list<Statement *>initialization;219 Statement *initialization; 220 220 Expression *condition; 221 221 Expression *increment; -
src/SynTree/Type.cc
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Jul 9 16:45:13201513 // Update Count : 312 // Last Modified On : Tue May 19 16:52:27 2015 13 // Update Count : 2 14 14 // 15 15 … … 75 75 os << "_Atomic "; 76 76 } // if 77 if ( tq.isAttribute ) {78 os << "__attribute(( )) ";79 } // if80 77 } 81 78 -
src/SynTree/Type.h
rb29f8f3 r1e8f143 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 9 16:46:15201513 // Update Count : 1 412 // Last Modified On : Fri Jun 26 16:47:54 2015 13 // Update Count : 13 14 14 // 15 15 … … 25 25 struct Qualifiers { 26 26 Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ), isAttribute( false ) {} 27 Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute 27 Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ), isAttribute( isAttribute ) {} 28 28 29 29 Qualifiers &operator+=( const Qualifiers &other ); -
src/SynTree/Visitor.cc
rb29f8f3 r1e8f143 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Jul 14 12:31:03201513 // Update Count : 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 11:14:51 2015 13 // Update Count : 2 14 14 // 15 15 … … 94 94 95 95 void Visitor::visit( ForStmt *forStmt ) { 96 acceptAll( forStmt->get_initialization(), *this ); 96 // ForStmt still needs to be fixed 97 maybeAccept( forStmt->get_initialization(), *this ); 97 98 maybeAccept( forStmt->get_condition(), *this ); 98 99 maybeAccept( forStmt->get_increment(), *this ); -
src/driver/cc1.cc
rb29f8f3 r1e8f143 10 10 // Created On : Fri Aug 26 14:23:51 2005 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 16 17:09:14201513 // Update Count : 5 412 // Last Modified On : Sat May 30 08:58:29 2015 13 // Update Count : 51 14 14 // 15 15 … … 319 319 uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str(); 320 320 321 uargs[nuargs] = "-p"; 322 nuargs += 1; 323 321 324 uargs[nuargs] = tmpname; 322 325 nuargs += 1; -
src/driver/cfa.cc
rb29f8f3 r1e8f143 10 10 // Created On : Tue Aug 20 13:44:49 2002 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Jul 16 17:09:23 201513 // Update Count : 1 2412 // Last Modified On : Tue Jun 23 17:47:03 2015 13 // Update Count : 119 14 14 // 15 15 … … 52 52 string Version( VERSION ); // current version number from CONFIG 53 53 string Major( "0" ), Minor( "0" ), Patch( "0" ); // default version numbers 54 55 54 int posn1 = Version.find( "." ); // find the divider between major and minor version numbers 56 55 if ( posn1 == -1 ) { // not there ? … … 257 256 // add the correct set of flags based on the type of compile this is 258 257 259 args[nargs] = ( *new string( string("-D__CFA_ _=") + Major ) ).c_str();258 args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str(); 260 259 nargs += 1; 261 260 args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str(); 262 nargs += 1;263 args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();264 261 nargs += 1; 265 262 -
src/main.cc
rb29f8f3 r1e8f143 10 10 // Created On : Fri May 15 23:12:02 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Jul 15 16:45:24201513 // Update Count : 14512 // Last Modified On : Mon Jul 06 15:01:26 2015 13 // Update Count : 79 14 14 // 15 15 … … 54 54 if ( errorp ) std::cerr << x << std::endl; 55 55 56 static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false ); 57 static void dump( std::list< Declaration * > & translationUnit ); 56 void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false ); 58 57 59 58 bool … … 65 64 libcfap = false, 66 65 nopreludep = false, 67 noprotop = false,66 protop = false, 68 67 parsep = false, 69 68 resolvep = false, // used in AlternativeFinder … … 82 81 { "grammar", no_argument, 0, Grammar }, 83 82 { "libcfa", no_argument, 0, LibCFA }, 84 { "no -preamble", no_argument, 0, Nopreamble },83 { "nopreamble", no_argument, 0, Nopreamble }, 85 84 { "parse", no_argument, 0, Parse }, 86 { " no-prototypes", no_argument, 0, Prototypes },85 { "prototypes", no_argument, 0, Prototypes }, 87 86 { "resolver", no_argument, 0, Resolver }, 88 87 { "symbol", no_argument, 0, Symbol }, … … 132 131 case Prototypes: 133 132 case 'p': // generate prototypes for preamble functions 134 noprotop = true;133 protop = true; 135 134 break; 136 135 case Parse: … … 222 221 Parser::get_parser().freeTree(); 223 222 if ( astp ) { 224 dump( translationUnit );223 printAll( translationUnit, std::cout ); 225 224 return 0; 226 225 } // if … … 243 242 244 243 if ( validp ) { 245 dump( translationUnit );244 printAll( translationUnit, std::cout ); 246 245 return 0; 247 246 } // if … … 253 252 254 253 if ( libcfap ) { 254 protop = true; 255 255 // generate the bodies of cfa library functions 256 256 LibCfa::makeLibCfa( translationUnit ); … … 258 258 259 259 if ( bresolvep ) { 260 dump( translationUnit );260 printAll( translationUnit, std::cout ); 261 261 return 0; 262 262 } // if … … 265 265 ResolvExpr::resolve( translationUnit ); 266 266 if ( exprp ) { 267 dump( translationUnit );267 printAll( translationUnit, std::cout ); 268 268 } 269 269 … … 279 279 // print tree right before code generation 280 280 if ( codegenp ) { 281 dump( translationUnit );282 return 0; 283 } // if 284 285 CodeGen::generate( translationUnit, *output, ! noprotop );281 printAll( translationUnit, std::cout ); 282 return 0; 283 } // if 284 285 CodeGen::generate( translationUnit, *output, true ); //protop ); 286 286 287 287 if ( output != &std::cout ) { … … 290 290 } catch ( SemanticError &e ) { 291 291 if ( errorp ) { 292 dump( translationUnit);292 printAll( translationUnit, std::cerr ); 293 293 } 294 294 e.print( std::cerr ); … … 315 315 } // main 316 316 317 staticvoid parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {317 void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) { 318 318 Parser::get_parser().set_linkage( linkage ); 319 319 Parser::get_parser().parse( input ); … … 325 325 } 326 326 327 static bool notPrelude( Declaration * decl ) {328 return ! LinkageSpec::isBuiltin( decl->get_linkage() );329 }330 331 static void dump( std::list< Declaration * > & translationUnit ) {332 std::list< Declaration * > decls;333 if ( noprotop ) {334 filter( translationUnit.begin(), translationUnit.end(),335 std::back_inserter( decls ), notPrelude );336 } else {337 decls = translationUnit;338 }339 340 printAll( decls, std::cout );341 }342 343 344 327 // Local Variables: // 345 328 // tab-width: 4 //
Note:
See TracChangeset
for help on using the changeset viewer.