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