Changeset a563f01
- Timestamp:
- Aug 10, 2016, 2:24:34 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 3078643, e109716
- Parents:
- 9c98156 (diff), 2f22cc4 (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:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/Parser/ExpressionNode.cc ¶
r9c98156 ra563f01 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 9 12:28:40201613 // Update Count : 48 212 // Last Modified On : Wed Aug 10 11:07:38 2016 13 // Update Count : 486 14 14 // 15 15 … … 168 168 //############################################################################## 169 169 170 //Expression *build_varref( ExpressionNode expr ) {171 // return new NameExpr( get_name(), maybeBuild<Expression>( get_argName() ) );172 //}173 174 // VarRefNode::VarRefNode( const string *name, bool labelp ) : ExpressionNode( nullptr, name ), isLabel( labelp ) {}175 176 // VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {}177 178 // Expression *VarRefNode::build() const {179 // return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );180 // }181 182 // void VarRefNode::printOneLine( std::ostream &os, int indent ) const {183 // printDesignation( os );184 // os << get_name() << ' ';185 // }186 187 // void VarRefNode::print( std::ostream &os, int indent ) const {188 // printDesignation( os );189 // os << string( indent, ' ' ) << "Referencing: ";190 // os << "Variable: " << get_name();191 // os << endl;192 // }193 194 170 NameExpr * build_varref( const string *name, bool labelp ) { 195 171 return new NameExpr( *name, nullptr ); 196 172 } 197 198 //##############################################################################199 200 // DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex, bool isVarRef ) : isArrayIndex( isArrayIndex ) {201 // set_argName( expr );202 // }203 204 // DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {}205 206 // class DesignatorFixer : public Mutator {207 // public:208 // virtual Expression* mutate( NameExpr *nameExpr ) {209 // if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {210 // Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );211 // delete nameExpr;212 // return new ConstantExpr( val );213 // }214 // return nameExpr;215 // }216 // };217 218 // Expression *DesignatorNode::build() const {219 // return maybeBuild<Expression>(get_argName());220 // }221 222 // void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {223 // if ( get_argName() ) {224 // if ( isArrayIndex ) {225 // os << "[";226 // get_argName()->printOneLine( os, indent );227 // os << "]";228 // } else {229 // os << ".";230 // get_argName()->printOneLine( os, indent );231 // }232 // } // if233 // }234 235 // void DesignatorNode::print( std::ostream &os, int indent ) const {236 // if ( get_argName() ) {237 // if ( isArrayIndex ) {238 // os << "[";239 // get_argName()->print( os, indent );240 // os << "]";241 // } else {242 // os << ".";243 // get_argName()->print( os, indent );244 // }245 // } // if246 // }247 173 248 174 //############################################################################## … … 366 292 //############################################################################## 367 293 368 // Expression *AsmExprNode::build() const {369 // return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );370 // }371 372 // void AsmExprNode::print( std::ostream &os, int indent ) const {373 // os << string( indent, ' ' ) << "Assembler Expression:" << endl;374 // if ( inout ) {375 // os << string( indent, ' ' ) << "inout: " << std::endl;376 // inout->print( os, indent + 2 );377 // } // if378 // if ( constraint ) {379 // os << string( indent, ' ' ) << "constraint: " << std::endl;380 // constraint->print( os, indent + 2 );381 // } // if382 // if ( operand ) {383 // os << string( indent, ' ' ) << "operand: " << std::endl;384 // operand->print( os, indent + 2 );385 // } // if386 // }387 388 // void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {389 // printDesignation( os );390 // os << "( ";391 // if ( inout ) inout->printOneLine( os, indent + 2 );392 // os << ", ";393 // if ( constraint ) constraint->printOneLine( os, indent + 2 );394 // os << ", ";395 // if ( operand ) operand->printOneLine( os, indent + 2 );396 // os << ") ";397 // }398 399 294 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) { 400 295 return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) ); … … 409 304 //############################################################################## 410 305 411 // ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}412 413 // ValofExprNode::ValofExprNode( const ValofExprNode &other ) : ExpressionNode( other ), body( maybeClone( body ) ) {414 // }415 416 // ValofExprNode::~ValofExprNode() {417 // delete body;418 // }419 420 // void ValofExprNode::print( std::ostream &os, int indent ) const {421 // os << string( indent, ' ' ) << "Valof Expression:" << std::endl;422 // get_body()->print( os, indent + 4);423 // }424 425 // void ValofExprNode::printOneLine( std::ostream &, int indent ) const {426 // assert( false );427 // }428 429 // Expression *ValofExprNode::build() const {430 // return new UntypedValofExpr( maybeBuild<Statement>(get_body()), nullptr );431 // }432 433 306 Expression *build_valexpr( StatementNode *s ) { 434 307 return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr ); … … 436 309 437 310 //############################################################################## 438 439 ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) { 440 if ( init_ == 0 ) 441 init = 0; 442 else { 443 DeclarationNode *decl; 444 ExpressionNode *exp; 445 446 if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0) 447 init = new StatementNode( decl ); 448 else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0) 449 init = new StatementNode( StatementNode::Exp, exp ); 450 else 451 throw SemanticError("Error in for control expression"); 452 } 453 } 454 455 ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other ) 456 : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) { 457 } 458 459 ForCtlExprNode::~ForCtlExprNode() { 460 delete init; 461 delete condition; 462 delete change; 463 } 464 465 Expression *ForCtlExprNode::build() const { 466 // this shouldn't be used! 467 assert( false ); 468 return 0; 469 } 470 471 void ForCtlExprNode::print( std::ostream &os, int indent ) const{ 472 os << string( indent,' ' ) << "For Control Expression -- :" << endl; 473 474 os << string( indent + 2, ' ' ) << "initialization:" << endl; 475 if ( init != 0 ) 476 init->printList( os, indent + 4 ); 477 478 os << string( indent + 2, ' ' ) << "condition: " << endl; 479 if ( condition != 0 ) 480 condition->print( os, indent + 4 ); 481 os << string( indent + 2, ' ' ) << "increment: " << endl; 482 if ( change != 0 ) 483 change->print( os, indent + 4 ); 484 } 485 486 void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const { 487 assert( false ); 488 } 489 490 //############################################################################## 491 492 // TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) { 493 // } 494 495 // TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) { 496 // } 497 498 // Expression *TypeValueNode::build() const { 499 // return new TypeExpr( decl->buildType() ); 500 // } 501 502 // void TypeValueNode::print( std::ostream &os, int indent ) const { 503 // os << std::string( indent, ' ' ) << "Type:"; 504 // get_decl()->print( os, indent + 2); 505 // } 506 507 // void TypeValueNode::printOneLine( std::ostream &os, int indent ) const { 508 // os << "Type:"; 509 // get_decl()->print( os, indent + 2); 510 // } 311 312 // ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) { 313 // if ( init_ == 0 ) 314 // init = 0; 315 // else { 316 // DeclarationNode *decl; 317 // ExpressionNode *exp; 318 319 // if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0) 320 // init = new StatementNode( decl ); 321 // else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0) 322 // init = new StatementNode( StatementNode::Exp, exp ); 323 // else 324 // throw SemanticError("Error in for control expression"); 325 // } 326 // } 327 328 // ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other ) 329 // : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) { 330 // } 331 332 // ForCtlExprNode::~ForCtlExprNode() { 333 // delete init; 334 // delete condition; 335 // delete change; 336 // } 337 338 // Expression *ForCtlExprNode::build() const { 339 // // this shouldn't be used! 340 // assert( false ); 341 // return 0; 342 // } 343 344 // void ForCtlExprNode::print( std::ostream &os, int indent ) const{ 345 // os << string( indent,' ' ) << "For Control Expression -- :" << endl; 346 347 // os << string( indent + 2, ' ' ) << "initialization:" << endl; 348 // if ( init != 0 ) 349 // init->printList( os, indent + 4 ); 350 351 // os << string( indent + 2, ' ' ) << "condition: " << endl; 352 // if ( condition != 0 ) 353 // condition->print( os, indent + 4 ); 354 // os << string( indent + 2, ' ' ) << "increment: " << endl; 355 // if ( change != 0 ) 356 // change->print( os, indent + 4 ); 357 // } 358 359 // void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const { 360 // assert( false ); 361 // } 362 363 //############################################################################## 511 364 512 365 Expression *build_typevalue( DeclarationNode *decl ) { … … 515 368 516 369 //############################################################################## 517 518 // CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}519 // CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}520 521 // CompoundLiteralNode::~CompoundLiteralNode() {522 // delete kids;523 // delete type;524 // }525 526 // CompoundLiteralNode *CompoundLiteralNode::clone() const {527 // return new CompoundLiteralNode( *this );528 // }529 530 // void CompoundLiteralNode::print( std::ostream &os, int indent ) const {531 // os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;532 533 // os << string( indent + 2, ' ' ) << "type:" << endl;534 // if ( type != 0 )535 // type->print( os, indent + 4 );536 537 // os << string( indent + 2, ' ' ) << "initialization:" << endl;538 // if ( kids != 0 )539 // kids->printList( os, indent + 4 );540 // }541 542 // void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {543 // os << "( ";544 // if ( type ) type->print( os );545 // os << ", ";546 // if ( kids ) kids->printOneLine( os );547 // os << ") ";548 // }549 550 // Expression *CompoundLiteralNode::build() const {551 // Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type552 // if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type553 // return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );554 // // these types do not have associated type information555 // } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) {556 // return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );557 // } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) {558 // return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );559 // } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) {560 // return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );561 // } else {562 // assert( false );563 // } // if564 // }565 370 566 371 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) { -
TabularUnified src/Parser/ParseNode.h ¶
r9c98156 ra563f01 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 9 12:28:12201613 // Update Count : 38912 // Last Modified On : Wed Aug 10 13:08:46 2016 13 // Update Count : 436 14 14 // 15 15 … … 26 26 #include "SynTree/Type.h" 27 27 #include "SynTree/Expression.h" 28 #include "SynTree/Statement.h" 28 29 //#include "SynTree/Declaration.h" 29 30 #include "Common/UniqueName.h" … … 57 58 virtual void printList( std::ostream &os, int indent = 0 ) const; 58 59 59 ParseNode &operator,( ParseNode & );60 ParseNode &operator,( ParseNode & ); 60 61 protected: 61 62 std::string name; … … 134 135 //############################################################################## 135 136 136 // NullExprNode is used in tuples as a place-holder where a tuple component is omitted e.g., [ 2, , 3 ]137 // class NullExprNode : public ExpressionNode {138 // public:139 // NullExprNode() {}140 141 // virtual NullExprNode *clone() const { assert( false ); }142 143 // virtual void print( std::ostream &os, int indent = 0) const {}144 // virtual void printOneLine( std::ostream &os, int indent = 0) const {}145 146 // virtual Expression *build() const { assert( false ); return 0; }147 // };148 149 //##############################################################################150 151 // class ConstantNode : public ExpressionNode {152 // public:153 // ConstantNode( ConstantExpr *expr ) : expr( expr ) {}154 // ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {}155 // virtual ~ConstantNode() {}156 157 // virtual ConstantNode *clone() const { assert( false ); return new ConstantNode( *this ); }158 159 // ConstantExpr *get_expr() const { return expr; }160 161 // virtual void print( std::ostream &os, int indent = 0 ) const {}162 // virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}163 164 // Expression *build() const { return expr; }165 // private:166 // ConstantExpr *expr;167 // };168 169 137 Expression *build_constantInteger( std::string &str ); 170 138 Expression *build_constantFloat( std::string &str ); … … 174 142 //############################################################################## 175 143 176 // class VarRefNode : public ExpressionNode {177 // public:178 // VarRefNode( const std::string *, bool isLabel = false );179 // VarRefNode( const VarRefNode &other );180 181 // virtual Expression *build() const ;182 183 // virtual VarRefNode *clone() const { return new VarRefNode( *this ); }184 185 // virtual void print( std::ostream &os, int indent = 0 ) const;186 // virtual void printOneLine( std::ostream &os, int indent = 0 ) const;187 // private:188 // bool isLabel;189 // };190 191 144 NameExpr *build_varref( const std::string *name, bool labelp = false ); 192 145 193 146 //############################################################################## 194 147 195 // class DesignatorNode : public ExpressionNode {196 // public:197 // DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );198 // DesignatorNode( const DesignatorNode &other );199 200 // virtual Expression *build() const ;201 // virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }202 203 // virtual void print( std::ostream &os, int indent = 0 ) const;204 // virtual void printOneLine( std::ostream &os, int indent = 0 ) const;205 // private:206 // bool isArrayIndex;207 // };208 209 //##############################################################################210 211 // class TypeValueNode : public ExpressionNode {212 // public:213 // TypeValueNode( DeclarationNode * );214 // TypeValueNode( const TypeValueNode &other );215 216 // DeclarationNode *get_decl() const { return decl; }217 218 // virtual Expression *build() const ;219 220 // virtual TypeValueNode *clone() const { return new TypeValueNode( *this ); }221 222 // virtual void print( std::ostream &os, int indent = 0) const;223 // virtual void printOneLine( std::ostream &os, int indent = 0) const;224 // private:225 // DeclarationNode *decl;226 // };227 228 148 Expression *build_typevalue( DeclarationNode *decl ); 229 149 230 150 //############################################################################## 231 232 // class CompositeExprNode : public ExpressionNode {233 // public:234 // CompositeExprNode( Expression *expr ) : expr( expr ) {}235 // CompositeExprNode( const CompositeExprNode &other ) : expr( other.expr->clone() ) {}236 // virtual ~CompositeExprNode() {}237 238 // CompositeExprNode *clone() const { assert( false ); return new CompositeExprNode( *this ); }239 240 // Expression *build() const { return expr; }241 242 // void print( std::ostream &os, int indent = 0 ) const {}243 // void printOneLine( std::ostream &os, int indent = 0 ) const {}244 // private:245 // Expression *expr;246 // };247 151 248 152 enum class OperKinds { … … 282 186 //############################################################################## 283 187 284 // class AsmExprNode : public ExpressionNode {285 // public:286 // AsmExprNode();287 // AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}288 // virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }289 290 // virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }291 // virtual Expression *build() const;292 293 // virtual void print( std::ostream &os, int indent = 0) const;294 // virtual void printOneLine( std::ostream &os, int indent = 0) const;295 296 // ExpressionNode *get_inout() const { return inout; };297 // void set_inout( ExpressionNode *newValue ) { inout = newValue; }298 299 // ConstantNode *get_constraint() const { return constraint; };300 // void set_constraint( ConstantNode *newValue ) { constraint = newValue; }301 302 // ExpressionNode *get_operand() const { return operand; };303 // void set_operand( ExpressionNode *newValue ) { operand = newValue; }304 // private:305 // ExpressionNode *inout;306 // ConstantNode *constraint;307 // ExpressionNode *operand;308 // };309 310 188 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ); 311 189 … … 328 206 //############################################################################## 329 207 330 class ForCtlExprNode : public ExpressionNode {331 public:332 ForCtlExprNode( ParseNode *, ExpressionNode *, ExpressionNode * ) throw ( SemanticError );333 ForCtlExprNode( const ForCtlExprNode &other );334 ~ForCtlExprNode();335 336 StatementNode *get_init() const { return init; }337 ExpressionNode *get_condition() const { return condition; }338 ExpressionNode *get_change() const { return change; }339 340 virtual ForCtlExprNode *clone() const { return new ForCtlExprNode( *this ); }341 virtual Expression *build() const;342 343 virtual void print( std::ostream &os, int indent = 0 ) const;344 virtual void printOneLine( std::ostream &os, int indent = 0 ) const;345 private:346 StatementNode *init;347 ExpressionNode *condition;348 ExpressionNode *change;349 };350 351 //##############################################################################352 353 // class ValofExprNode : public ExpressionNode {354 // public:355 // ValofExprNode();356 // ValofExprNode( StatementNode *s = 0 );357 // ValofExprNode( const ValofExprNode &other );358 // ~ValofExprNode();359 360 // virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }361 362 // StatementNode *get_body() const { return body; }363 // void print( std::ostream &os, int indent = 0 ) const;364 // void printOneLine( std::ostream &os, int indent = 0 ) const;365 // Expression *build() const;366 367 // private:368 // StatementNode *body;369 // };370 371 208 Expression *build_valexpr( StatementNode *s ); 372 209 373 210 //############################################################################## 374 375 // class CompoundLiteralNode : public ExpressionNode {376 // public:377 // CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );378 // CompoundLiteralNode( const CompoundLiteralNode &type );379 // ~CompoundLiteralNode();380 381 // virtual CompoundLiteralNode *clone() const;382 383 // DeclarationNode *get_type() const { return type; }384 // CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }385 386 // InitializerNode *get_initializer() const { return kids; }387 // CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }388 389 // void print( std::ostream &os, int indent = 0 ) const;390 // void printOneLine( std::ostream &os, int indent = 0 ) const;391 392 // virtual Expression *build() const;393 // private:394 // DeclarationNode *type;395 // InitializerNode *kids;396 // };397 211 398 212 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ); … … 531 345 static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false ); 532 346 533 StatementNode *set_block( StatementNode *b ) { 347 StatementNode *set_block( StatementNode *b ) { block = b; return this; } 534 348 StatementNode *get_block() const { return block; } 535 349 … … 539 353 StatementNode::Type get_type() const { return type; } 540 354 541 StatementNode *add_label( const std::string * );542 const std::list<std::string> &get_labels() const { return labels; }355 virtual StatementNode *add_label( const std::string * ); 356 virtual std::list<std::string> get_labels() const { return labels; } 543 357 544 358 void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; } … … 565 379 }; // StatementNode 566 380 381 class StatementNode2 : public StatementNode { 382 public: 383 StatementNode2() {} 384 StatementNode2( Statement *stmt ) : stmt( stmt ) {} 385 virtual ~StatementNode2() {} 386 387 virtual StatementNode2 *clone() const { assert( false ); return nullptr; } 388 virtual Statement *build() const { return stmt; } 389 390 virtual StatementNode2 *add_label( const std::string * name ) { 391 stmt->get_labels().emplace_back( *name ); 392 return this; 393 } 394 virtual std::list<std::string> get_labels() const { assert( false ); return StatementNode::get_labels(); } 395 396 virtual void print( std::ostream &os, int indent = 0 ) {} 397 virtual void printList( std::ostream &os, int indent = 0 ) {} 398 private: 399 Statement *stmt; 400 }; // StatementNode 401 402 struct ForCtl { 403 ForCtl( ExpressionNode *expr, ExpressionNode *condition, ExpressionNode *change ) : 404 init( new StatementNode( StatementNode::Exp, expr ) ), condition( condition ), change( change ) {} 405 ForCtl( DeclarationNode *decl, ExpressionNode *condition, ExpressionNode *change ) : 406 init( new StatementNode( decl ) ), condition( condition ), change( change ) {} 407 408 StatementNode *init; 409 ExpressionNode *condition; 410 ExpressionNode *change; 411 }; 412 413 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ); 414 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ); 415 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false ); 416 Statement *build_for( ForCtl *forctl, StatementNode *stmt ); 417 567 418 //############################################################################## 568 419 … … 602 453 603 454 template< typename SynTreeType, typename NodeType > 604 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {455 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 605 456 SemanticError errors; 606 457 std::back_insert_iterator< std::list< SynTreeType *> > out( outputList ); -
TabularUnified src/Parser/StatementNode.cc ¶
r9c98156 ra563f01 10 10 // Created On : Sat May 16 14:59:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 9 10:14:33201613 // Update Count : 1 4112 // Last Modified On : Wed Aug 10 13:54:21 2016 13 // Update Count : 170 14 14 // 15 15 … … 206 206 } 207 207 case If: 208 { 209 Statement *thenb = 0, *elseb = 0; 210 assert( branches.size() >= 1 ); 211 212 thenb = branches.front(); 213 branches.pop_front(); 214 if ( ! branches.empty() ) { 215 elseb = branches.front(); 216 branches.pop_front(); 217 } // if 218 return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb ); 219 } 220 case While: 221 assert( branches.size() == 1 ); 222 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() ); 223 case Do: 224 assert( branches.size() == 1 ); 225 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true ); 226 case For: 227 { 228 assert( branches.size() == 1 ); 229 230 ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() ); 231 assert( ctl != 0 ); 232 233 std::list<Statement *> init; 234 if ( ctl->get_init() != 0 ) { 235 buildList( ctl->get_init(), init ); 236 } // if 237 238 Expression *cond = 0; 239 if ( ctl->get_condition() != 0 ) 240 cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) ); 241 242 Expression *incr = 0; 243 if ( ctl->get_change() != 0 ) 244 incr = maybeBuild<Expression>(ctl->get_change()); 245 246 return new ForStmt( labs, init, cond, incr, branches.front() ); 247 } 208 // { 209 // Statement *thenb = 0, *elseb = 0; 210 // assert( branches.size() >= 1 ); 211 212 // thenb = branches.front(); 213 // branches.pop_front(); 214 // if ( ! branches.empty() ) { 215 // elseb = branches.front(); 216 // branches.pop_front(); 217 // } // if 218 // return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb ); 219 // } 220 assert( false ); 248 221 case Switch: 249 return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches ); 222 //return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches ); 223 assert( false ); 250 224 case Case: 251 return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );225 return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches ); 252 226 case Default: 253 227 return new CaseStmt( labs, 0, branches, true ); 228 case While: 229 // assert( branches.size() == 1 ); 230 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() ); 231 assert( false ); 232 case Do: 233 // assert( branches.size() == 1 ); 234 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true ); 235 assert( false ); 236 case For: 237 // { 238 // assert( branches.size() == 1 ); 239 240 // ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() ); 241 // assert( ctl != 0 ); 242 243 // std::list<Statement *> init; 244 // if ( ctl->get_init() != 0 ) { 245 // buildList( ctl->get_init(), init ); 246 // } // if 247 248 // Expression *cond = 0; 249 // if ( ctl->get_condition() != 0 ) 250 // cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) ); 251 252 // Expression *incr = 0; 253 // if ( ctl->get_change() != 0 ) 254 // incr = maybeBuild<Expression>(ctl->get_change()); 255 256 // return new ForStmt( labs, init, cond, incr, branches.front() ); 257 // } 258 assert( false ); 254 259 case Goto: 255 260 { … … 305 310 } 306 311 312 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) { 313 Statement *thenb, *elseb = 0; 314 std::list<Statement *> branches; 315 buildList<Statement, StatementNode>( then_stmt, branches ); 316 assert( branches.size() >= 1 ); 317 thenb = branches.front(); 318 319 if ( else_stmt ) { 320 std::list<Statement *> branches; 321 buildList<Statement, StatementNode>( else_stmt, branches ); 322 assert( branches.size() >= 1 ); 323 elseb = branches.front(); 324 } // if 325 return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb ); 326 } 327 328 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) { 329 std::list<Statement *> branches; 330 buildList<Statement, StatementNode>( stmt, branches ); 331 assert( branches.size() >= 1 ); 332 return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches ); 333 } 334 335 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) { 336 std::list<Statement *> branches; 337 buildList<Statement, StatementNode>( stmt, branches ); 338 assert( branches.size() == 1 ); 339 return new WhileStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), branches.front(), kind ); 340 } 341 342 Statement *build_for( ForCtl *forctl, StatementNode *stmt ) { 343 std::list<Statement *> branches; 344 buildList<Statement, StatementNode>( stmt, branches ); 345 assert( branches.size() == 1 ); 346 347 std::list<Statement *> init; 348 if ( forctl->init != 0 ) { 349 buildList( forctl->init, init ); 350 } // if 351 352 Expression *cond = 0; 353 if ( forctl->condition != 0 ) 354 cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) ); 355 356 Expression *incr = 0; 357 if ( forctl->change != 0 ) 358 incr = maybeBuild<Expression>(forctl->change); 359 360 delete forctl; 361 return new ForStmt( noLabels, init, cond, incr, branches.front() ); 362 } 363 307 364 308 365 CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {} -
TabularUnified src/Parser/parser.cc ¶
r9c98156 ra563f01 357 357 StatementNode *sn; 358 358 ConstantExpr *constant; 359 ForCtl *fctl; 359 360 LabelNode *label; 360 361 InitializerNode *in; … … 365 366 366 367 /* Line 293 of yacc.c */ 367 #line 36 8"Parser/parser.cc"368 #line 369 "Parser/parser.cc" 368 369 } YYSTYPE; 369 370 # define YYSTYPE_IS_TRIVIAL 1 … … 377 378 378 379 /* Line 343 of yacc.c */ 379 #line 38 0"Parser/parser.cc"380 #line 381 "Parser/parser.cc" 380 381 381 382 #ifdef short … … 1019 1020 static const yytype_uint16 yyrline[] = 1020 1021 { 1021 0, 29 6, 296, 302, 311, 312, 313, 317, 318, 319,1022 32 3, 324, 328, 329, 333, 334, 338, 339, 350, 352,1023 35 4, 356, 361, 362, 368, 372, 374, 375, 377, 378,1024 38 0, 382, 384, 393, 394, 400, 401, 405, 406, 410,1025 41 4, 416, 418, 420, 425, 428, 430, 432, 437, 450,1026 45 2, 454, 456, 458, 460, 462, 464, 466, 468, 470,1027 4 77, 478, 484, 485, 486, 487, 491, 492, 494, 499,1028 50 0, 502, 504, 509, 510, 512, 517, 518, 520, 525,1029 52 6, 528, 530, 532, 537, 538, 540, 545, 546, 551,1030 55 2, 557, 558, 563, 564, 569, 570, 575, 576, 579,1031 58 1, 586, 591, 592, 594, 600, 601, 605, 606, 607,1032 6 08, 609, 610, 611, 612, 613, 614, 615, 621, 623,1033 62 5, 627, 632, 633, 638, 639, 645, 646, 652, 653,1034 65 4, 655, 656, 657, 658, 659, 660, 670, 677, 679,1035 6 89, 690, 695, 697, 703, 705, 709, 710, 715, 720,1036 72 3, 725, 727, 737, 739, 750, 751, 753, 757, 759,1037 7 63, 764, 769, 770, 774, 779, 780, 784, 786, 792,1038 793, 797, 799, 801, 803, 809, 810, 814, 816, 821,1039 8 23, 825, 830, 832, 837, 839, 843, 846, 850, 853,1040 8 57, 859, 863, 865, 872, 874, 876, 885, 887, 889,1041 89 1, 893, 898, 900, 902, 904, 909, 922, 923, 928,1042 93 0, 935, 939, 941, 943, 945, 947, 953, 954, 960,1043 96 1, 965, 966, 971, 973, 979, 980, 982, 987, 989,1044 996, 998, 1002, 1003, 1008, 1010, 1014, 1015, 1019, 1021,1045 10 25, 1026, 1030, 1031, 1035, 1036, 1051, 1052, 1053, 1054,1046 10 55, 1059, 1064, 1071, 1081, 1086, 1091, 1099, 1104, 1109,1047 11 14, 1119, 1127, 1149, 1154, 1161, 1163, 1170, 1175, 1180,1048 119 1, 1196, 1201, 1206, 1211, 1220, 1225, 1233, 1234, 1235,1049 12 36, 1242, 1247, 1255, 1256, 1257, 1258, 1262, 1263, 1264,1050 12 65, 1270, 1271, 1280, 1281, 1286, 1287, 1292, 1294, 1296,1051 1 298, 1300, 1303, 1302, 1314, 1315, 1317, 1327, 1328, 1333,1052 13 37, 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1356, 1358,1053 136 0, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378,1054 138 0, 1386, 1387, 1389, 1391, 1393, 1398, 1399, 1405, 1406,1055 14 08, 1410, 1415, 1417, 1419, 1421, 1426, 1427, 1429, 1431,1056 14 36, 1437, 1439, 1444, 1445, 1447, 1449, 1454, 1456, 1458,1057 14 63, 1464, 1468, 1470, 1476, 1475, 1479, 1481, 1486, 1488,1058 1 494, 1495, 1500, 1501, 1503, 1504, 1513, 1514, 1516, 1518,1059 15 23, 1525, 1531, 1532, 1534, 1537, 1540, 1545, 1546, 1551,1060 15 56, 1560, 1562, 1568, 1567, 1574, 1576, 1582, 1583, 1591,1061 1 592, 1596, 1597, 1598, 1600, 1602, 1609, 1610, 1612, 1614,1062 16 19, 1620, 1626, 1627, 1631, 1632, 1637, 1638, 1639, 1641,1063 16 49, 1650, 1652, 1655, 1657, 1661, 1662, 1663, 1665, 1667,1064 167 1, 1676, 1684, 1685, 1694, 1696, 1701, 1702, 1703, 1707,1065 17 08, 1709, 1713, 1714, 1715, 1719, 1720, 1721, 1726, 1727,1066 17 28, 1729, 1735, 1736, 1738, 1743, 1744, 1749, 1750, 1751,1067 17 52, 1753, 1768, 1769, 1774, 1775, 1781, 1783, 1786, 1788,1068 179 0, 1813, 1814, 1816, 1818, 1823, 1824, 1826, 1831, 1836,1069 18 37, 1843, 1842, 1846, 1850, 1852, 1854, 1860, 1861, 1866,1070 187 1, 1873, 1878, 1880, 1881, 1883, 1888, 1890, 1892, 1897,1071 1 899, 1904, 1909, 1917, 1923, 1922, 1936, 1937, 1942, 1943,1072 19 47, 1952, 1957, 1965, 1970, 1981, 1982, 1993, 1994, 2000,1073 200 1, 2005, 2006, 2007, 2010, 2009, 2020, 2029, 2035, 2041,1074 205 0, 2056, 2062, 2068, 2074, 2082, 2088, 2096, 2102, 2111,1075 21 12, 2113, 2117, 2121, 2123, 2128, 2129, 2133, 2134, 2139,1076 21 45, 2146, 2149, 2151, 2152, 2156, 2157, 2158, 2159, 2193,1077 2 195, 2196, 2198, 2203, 2208, 2213, 2215, 2217, 2222, 2224,1078 22 26, 2228, 2233, 2235, 2244, 2246, 2247, 2252, 2254, 2256,1079 226 1, 2263, 2265, 2270, 2272, 2274, 2283, 2284, 2285, 2289,1080 229 1, 2293, 2298, 2300, 2302, 2307, 2309, 2311, 2326, 2328,1081 23 29, 2331, 2336, 2337, 2342, 2344, 2346, 2351, 2353, 2355,1082 23 57, 2362, 2364, 2366, 2376, 2378, 2379, 2381, 2386, 2388,1083 239 0, 2395, 2397, 2399, 2401, 2406, 2408, 2410, 2441, 2443,1084 24 44, 2446, 2451, 2456, 2464, 2466, 2468, 2473, 2475, 2480,1085 24 82, 2496, 2497, 2499, 2504, 2506, 2508, 2510, 2512, 2517,1086 25 18, 2520, 2522, 2527, 2529, 2531, 2537, 2539, 2541, 2545,1087 25 47, 2549, 2551, 2565, 2566, 2568, 2573, 2575, 2577, 2579,1088 258 1, 2586, 2587, 2589, 2591, 2596, 2598, 2600, 2606, 2607,1089 26 09, 2618, 2621, 2623, 2626, 2628, 2630, 2643, 2644, 2646,1090 265 1, 2653, 2655, 2657, 2659, 2664, 2665, 2667, 2669, 2674,1091 26 76, 2684, 2685, 2686, 2691, 2692, 2696, 2698, 2700, 2702,1092 27 04, 2706, 2713, 2715, 2717, 2719, 2721, 2723, 2725, 2727,1093 27 29, 2731, 2736, 2738, 2740, 2745, 2771, 2772, 2774, 2778,1094 27 79, 2783, 2785, 2787, 2789, 2791, 2793, 2800, 2802, 2804,1095 28 06, 2808, 2810, 2815, 2820, 2822, 2824, 2842, 2844, 2849,1096 285 01022 0, 299, 299, 305, 314, 315, 316, 320, 321, 322, 1023 326, 327, 331, 332, 336, 337, 341, 342, 353, 355, 1024 357, 359, 364, 365, 371, 375, 377, 378, 380, 381, 1025 383, 385, 387, 396, 397, 403, 404, 408, 409, 413, 1026 417, 419, 421, 423, 428, 431, 433, 435, 440, 453, 1027 455, 457, 459, 461, 463, 465, 467, 469, 471, 473, 1028 480, 481, 487, 488, 489, 490, 494, 495, 497, 502, 1029 503, 505, 507, 512, 513, 515, 520, 521, 523, 528, 1030 529, 531, 533, 535, 540, 541, 543, 548, 549, 554, 1031 555, 560, 561, 566, 567, 572, 573, 578, 579, 582, 1032 584, 589, 594, 595, 597, 603, 604, 608, 609, 610, 1033 611, 612, 613, 614, 615, 616, 617, 618, 624, 626, 1034 628, 630, 635, 636, 641, 642, 648, 649, 655, 656, 1035 657, 658, 659, 660, 661, 662, 663, 673, 680, 682, 1036 692, 693, 698, 700, 706, 708, 712, 713, 718, 723, 1037 727, 730, 733, 743, 746, 758, 759, 761, 765, 767, 1038 771, 772, 777, 778, 782, 787, 788, 792, 794, 800, 1039 801, 805, 807, 809, 811, 817, 818, 822, 824, 829, 1040 831, 833, 838, 840, 845, 847, 851, 854, 858, 861, 1041 865, 867, 871, 873, 880, 882, 884, 893, 895, 897, 1042 899, 901, 906, 908, 910, 912, 917, 930, 931, 936, 1043 938, 943, 947, 949, 951, 953, 955, 961, 962, 968, 1044 969, 973, 974, 979, 981, 987, 988, 990, 995, 997, 1045 1004, 1006, 1010, 1011, 1016, 1018, 1022, 1023, 1027, 1029, 1046 1033, 1034, 1038, 1039, 1043, 1044, 1059, 1060, 1061, 1062, 1047 1063, 1067, 1072, 1079, 1089, 1094, 1099, 1107, 1112, 1117, 1048 1122, 1127, 1135, 1157, 1162, 1169, 1171, 1178, 1183, 1188, 1049 1199, 1204, 1209, 1214, 1219, 1228, 1233, 1241, 1242, 1243, 1050 1244, 1250, 1255, 1263, 1264, 1265, 1266, 1270, 1271, 1272, 1051 1273, 1278, 1279, 1288, 1289, 1294, 1295, 1300, 1302, 1304, 1052 1306, 1308, 1311, 1310, 1322, 1323, 1325, 1335, 1336, 1341, 1053 1345, 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1364, 1366, 1054 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1384, 1386, 1055 1388, 1394, 1395, 1397, 1399, 1401, 1406, 1407, 1413, 1414, 1056 1416, 1418, 1423, 1425, 1427, 1429, 1434, 1435, 1437, 1439, 1057 1444, 1445, 1447, 1452, 1453, 1455, 1457, 1462, 1464, 1466, 1058 1471, 1472, 1476, 1478, 1484, 1483, 1487, 1489, 1494, 1496, 1059 1502, 1503, 1508, 1509, 1511, 1512, 1521, 1522, 1524, 1526, 1060 1531, 1533, 1539, 1540, 1542, 1545, 1548, 1553, 1554, 1559, 1061 1564, 1568, 1570, 1576, 1575, 1582, 1584, 1590, 1591, 1599, 1062 1600, 1604, 1605, 1606, 1608, 1610, 1617, 1618, 1620, 1622, 1063 1627, 1628, 1634, 1635, 1639, 1640, 1645, 1646, 1647, 1649, 1064 1657, 1658, 1660, 1663, 1665, 1669, 1670, 1671, 1673, 1675, 1065 1679, 1684, 1692, 1693, 1702, 1704, 1709, 1710, 1711, 1715, 1066 1716, 1717, 1721, 1722, 1723, 1727, 1728, 1729, 1734, 1735, 1067 1736, 1737, 1743, 1744, 1746, 1751, 1752, 1757, 1758, 1759, 1068 1760, 1761, 1776, 1777, 1782, 1783, 1789, 1791, 1794, 1796, 1069 1798, 1821, 1822, 1824, 1826, 1831, 1832, 1834, 1839, 1844, 1070 1845, 1851, 1850, 1854, 1858, 1860, 1862, 1868, 1869, 1874, 1071 1879, 1881, 1886, 1888, 1889, 1891, 1896, 1898, 1900, 1905, 1072 1907, 1912, 1917, 1925, 1931, 1930, 1944, 1945, 1950, 1951, 1073 1955, 1960, 1965, 1973, 1978, 1989, 1990, 2001, 2002, 2008, 1074 2009, 2013, 2014, 2015, 2018, 2017, 2028, 2037, 2043, 2049, 1075 2058, 2064, 2070, 2076, 2082, 2090, 2096, 2104, 2110, 2119, 1076 2120, 2121, 2125, 2129, 2131, 2136, 2137, 2141, 2142, 2147, 1077 2153, 2154, 2157, 2159, 2160, 2164, 2165, 2166, 2167, 2201, 1078 2203, 2204, 2206, 2211, 2216, 2221, 2223, 2225, 2230, 2232, 1079 2234, 2236, 2241, 2243, 2252, 2254, 2255, 2260, 2262, 2264, 1080 2269, 2271, 2273, 2278, 2280, 2282, 2291, 2292, 2293, 2297, 1081 2299, 2301, 2306, 2308, 2310, 2315, 2317, 2319, 2334, 2336, 1082 2337, 2339, 2344, 2345, 2350, 2352, 2354, 2359, 2361, 2363, 1083 2365, 2370, 2372, 2374, 2384, 2386, 2387, 2389, 2394, 2396, 1084 2398, 2403, 2405, 2407, 2409, 2414, 2416, 2418, 2449, 2451, 1085 2452, 2454, 2459, 2464, 2472, 2474, 2476, 2481, 2483, 2488, 1086 2490, 2504, 2505, 2507, 2512, 2514, 2516, 2518, 2520, 2525, 1087 2526, 2528, 2530, 2535, 2537, 2539, 2545, 2547, 2549, 2553, 1088 2555, 2557, 2559, 2573, 2574, 2576, 2581, 2583, 2585, 2587, 1089 2589, 2594, 2595, 2597, 2599, 2604, 2606, 2608, 2614, 2615, 1090 2617, 2626, 2629, 2631, 2634, 2636, 2638, 2651, 2652, 2654, 1091 2659, 2661, 2663, 2665, 2667, 2672, 2673, 2675, 2677, 2682, 1092 2684, 2692, 2693, 2694, 2699, 2700, 2704, 2706, 2708, 2710, 1093 2712, 2714, 2721, 2723, 2725, 2727, 2729, 2731, 2733, 2735, 1094 2737, 2739, 2744, 2746, 2748, 2753, 2779, 2780, 2782, 2786, 1095 2787, 2791, 2793, 2795, 2797, 2799, 2801, 2808, 2810, 2812, 1096 2814, 2816, 2818, 2823, 2828, 2830, 2832, 2850, 2852, 2857, 1097 2858 1097 1098 }; 1098 1099 #endif … … 4959 4960 4960 4961 /* Line 1806 of yacc.c */ 4961 #line 29 6"parser.yy"4962 #line 299 "parser.yy" 4962 4963 { 4963 4964 typedefTable.enterScope(); … … 4968 4969 4969 4970 /* Line 1806 of yacc.c */ 4970 #line 30 2"parser.yy"4971 #line 305 "parser.yy" 4971 4972 { 4972 4973 typedefTable.leaveScope(); … … 4977 4978 4978 4979 /* Line 1806 of yacc.c */ 4979 #line 31 1"parser.yy"4980 #line 314 "parser.yy" 4980 4981 { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); } 4981 4982 break; … … 4984 4985 4985 4986 /* Line 1806 of yacc.c */ 4986 #line 31 2"parser.yy"4987 #line 315 "parser.yy" 4987 4988 { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); } 4988 4989 break; … … 4991 4992 4992 4993 /* Line 1806 of yacc.c */ 4993 #line 31 3"parser.yy"4994 #line 316 "parser.yy" 4994 4995 { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); } 4995 4996 break; … … 4998 4999 4999 5000 /* Line 1806 of yacc.c */ 5000 #line 3 38"parser.yy"5001 #line 341 "parser.yy" 5001 5002 { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); } 5002 5003 break; … … 5005 5006 5006 5007 /* Line 1806 of yacc.c */ 5007 #line 34 0"parser.yy"5008 #line 343 "parser.yy" 5008 5009 { 5009 5010 appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) ); … … 5016 5017 5017 5018 /* Line 1806 of yacc.c */ 5018 #line 35 1"parser.yy"5019 #line 354 "parser.yy" 5019 5020 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5020 5021 break; … … 5023 5024 5024 5025 /* Line 1806 of yacc.c */ 5025 #line 35 3"parser.yy"5026 #line 356 "parser.yy" 5026 5027 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5027 5028 break; … … 5030 5031 5031 5032 /* Line 1806 of yacc.c */ 5032 #line 35 5"parser.yy"5033 #line 358 "parser.yy" 5033 5034 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5034 5035 break; … … 5037 5038 5038 5039 /* Line 1806 of yacc.c */ 5039 #line 3 57"parser.yy"5040 #line 360 "parser.yy" 5040 5041 { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); } 5041 5042 break; … … 5044 5045 5045 5046 /* Line 1806 of yacc.c */ 5046 #line 3 67"parser.yy"5047 #line 370 "parser.yy" 5047 5048 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); } 5048 5049 break; … … 5051 5052 5052 5053 /* Line 1806 of yacc.c */ 5053 #line 3 69"parser.yy"5054 #line 372 "parser.yy" 5054 5055 { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); } 5055 5056 break; … … 5058 5059 5059 5060 /* Line 1806 of yacc.c */ 5060 #line 37 3"parser.yy"5061 #line 376 "parser.yy" 5061 5062 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 5062 5063 break; … … 5065 5066 5066 5067 /* Line 1806 of yacc.c */ 5067 #line 37 6"parser.yy"5068 #line 379 "parser.yy" 5068 5069 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 5069 5070 break; … … 5072 5073 5073 5074 /* Line 1806 of yacc.c */ 5074 #line 3 79"parser.yy"5075 #line 382 "parser.yy" 5075 5076 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); } 5076 5077 break; … … 5079 5080 5080 5081 /* Line 1806 of yacc.c */ 5081 #line 38 1"parser.yy"5082 #line 384 "parser.yy" 5082 5083 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); } 5083 5084 break; … … 5086 5087 5087 5088 /* Line 1806 of yacc.c */ 5088 #line 38 3"parser.yy"5089 #line 386 "parser.yy" 5089 5090 { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); } 5090 5091 break; … … 5093 5094 5094 5095 /* Line 1806 of yacc.c */ 5095 #line 38 5"parser.yy"5096 #line 388 "parser.yy" 5096 5097 { 5097 5098 Token fn; … … 5104 5105 5105 5106 /* Line 1806 of yacc.c */ 5106 #line 39 5"parser.yy"5107 #line 398 "parser.yy" 5107 5108 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5108 5109 break; … … 5111 5112 5112 5113 /* Line 1806 of yacc.c */ 5113 #line 40 0"parser.yy"5114 #line 403 "parser.yy" 5114 5115 { (yyval.en) = 0; } 5115 5116 break; … … 5118 5119 5119 5120 /* Line 1806 of yacc.c */ 5120 #line 40 6"parser.yy"5121 #line 409 "parser.yy" 5121 5122 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5122 5123 break; … … 5125 5126 5126 5127 /* Line 1806 of yacc.c */ 5127 #line 41 1"parser.yy"5128 #line 414 "parser.yy" 5128 5129 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5129 5130 break; … … 5132 5133 5133 5134 /* Line 1806 of yacc.c */ 5134 #line 41 5"parser.yy"5135 #line 418 "parser.yy" 5135 5136 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5136 5137 break; … … 5139 5140 5140 5141 /* Line 1806 of yacc.c */ 5141 #line 4 17"parser.yy"5142 #line 420 "parser.yy" 5142 5143 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5143 5144 break; … … 5146 5147 5147 5148 /* Line 1806 of yacc.c */ 5148 #line 4 19"parser.yy"5149 #line 422 "parser.yy" 5149 5150 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5150 5151 break; … … 5153 5154 5154 5155 /* Line 1806 of yacc.c */ 5155 #line 42 1"parser.yy"5156 #line 424 "parser.yy" 5156 5157 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5157 5158 break; … … 5160 5161 5161 5162 /* Line 1806 of yacc.c */ 5162 #line 4 29"parser.yy"5163 #line 432 "parser.yy" 5163 5164 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5164 5165 break; … … 5167 5168 5168 5169 /* Line 1806 of yacc.c */ 5169 #line 43 1"parser.yy"5170 #line 434 "parser.yy" 5170 5171 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 5171 5172 break; … … 5174 5175 5175 5176 /* Line 1806 of yacc.c */ 5176 #line 43 3"parser.yy"5177 #line 436 "parser.yy" 5177 5178 { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); } 5178 5179 break; … … 5181 5182 5182 5183 /* Line 1806 of yacc.c */ 5183 #line 4 38"parser.yy"5184 #line 441 "parser.yy" 5184 5185 { 5185 5186 switch ( (yyvsp[(1) - (2)].op) ) { … … 5199 5200 5200 5201 /* Line 1806 of yacc.c */ 5201 #line 45 1"parser.yy"5202 #line 454 "parser.yy" 5202 5203 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); } 5203 5204 break; … … 5206 5207 5207 5208 /* Line 1806 of yacc.c */ 5208 #line 45 3"parser.yy"5209 #line 456 "parser.yy" 5209 5210 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); } 5210 5211 break; … … 5213 5214 5214 5215 /* Line 1806 of yacc.c */ 5215 #line 45 5"parser.yy"5216 #line 458 "parser.yy" 5216 5217 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); } 5217 5218 break; … … 5220 5221 5221 5222 /* Line 1806 of yacc.c */ 5222 #line 4 57"parser.yy"5223 #line 460 "parser.yy" 5223 5224 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5224 5225 break; … … 5227 5228 5228 5229 /* Line 1806 of yacc.c */ 5229 #line 4 59"parser.yy"5230 #line 462 "parser.yy" 5230 5231 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); } 5231 5232 break; … … 5234 5235 5235 5236 /* Line 1806 of yacc.c */ 5236 #line 46 1"parser.yy"5237 #line 464 "parser.yy" 5237 5238 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5238 5239 break; … … 5241 5242 5242 5243 /* Line 1806 of yacc.c */ 5243 #line 46 3"parser.yy"5244 #line 466 "parser.yy" 5244 5245 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); } 5245 5246 break; … … 5248 5249 5249 5250 /* Line 1806 of yacc.c */ 5250 #line 46 5"parser.yy"5251 #line 468 "parser.yy" 5251 5252 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); } 5252 5253 break; … … 5255 5256 5256 5257 /* Line 1806 of yacc.c */ 5257 #line 4 67"parser.yy"5258 #line 470 "parser.yy" 5258 5259 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); } 5259 5260 break; … … 5262 5263 5263 5264 /* Line 1806 of yacc.c */ 5264 #line 4 69"parser.yy"5265 #line 472 "parser.yy" 5265 5266 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); } 5266 5267 break; … … 5269 5270 5270 5271 /* Line 1806 of yacc.c */ 5271 #line 47 1"parser.yy"5272 #line 474 "parser.yy" 5272 5273 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); } 5273 5274 break; … … 5276 5277 5277 5278 /* Line 1806 of yacc.c */ 5278 #line 4 77"parser.yy"5279 #line 480 "parser.yy" 5279 5280 { (yyval.op) = OperKinds::PointTo; } 5280 5281 break; … … 5283 5284 5284 5285 /* Line 1806 of yacc.c */ 5285 #line 4 78"parser.yy"5286 #line 481 "parser.yy" 5286 5287 { (yyval.op) = OperKinds::AddressOf; } 5287 5288 break; … … 5290 5291 5291 5292 /* Line 1806 of yacc.c */ 5292 #line 48 4"parser.yy"5293 #line 487 "parser.yy" 5293 5294 { (yyval.op) = OperKinds::UnPlus; } 5294 5295 break; … … 5297 5298 5298 5299 /* Line 1806 of yacc.c */ 5299 #line 48 5"parser.yy"5300 #line 488 "parser.yy" 5300 5301 { (yyval.op) = OperKinds::UnMinus; } 5301 5302 break; … … 5304 5305 5305 5306 /* Line 1806 of yacc.c */ 5306 #line 48 6"parser.yy"5307 #line 489 "parser.yy" 5307 5308 { (yyval.op) = OperKinds::Neg; } 5308 5309 break; … … 5311 5312 5312 5313 /* Line 1806 of yacc.c */ 5313 #line 4 87"parser.yy"5314 #line 490 "parser.yy" 5314 5315 { (yyval.op) = OperKinds::BitNeg; } 5315 5316 break; … … 5318 5319 5319 5320 /* Line 1806 of yacc.c */ 5320 #line 49 3"parser.yy"5321 #line 496 "parser.yy" 5321 5322 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5322 5323 break; … … 5325 5326 5326 5327 /* Line 1806 of yacc.c */ 5327 #line 49 5"parser.yy"5328 #line 498 "parser.yy" 5328 5329 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5329 5330 break; … … 5332 5333 5333 5334 /* Line 1806 of yacc.c */ 5334 #line 50 1"parser.yy"5335 #line 504 "parser.yy" 5335 5336 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5336 5337 break; … … 5339 5340 5340 5341 /* Line 1806 of yacc.c */ 5341 #line 50 3"parser.yy"5342 #line 506 "parser.yy" 5342 5343 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5343 5344 break; … … 5346 5347 5347 5348 /* Line 1806 of yacc.c */ 5348 #line 50 5"parser.yy"5349 #line 508 "parser.yy" 5349 5350 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5350 5351 break; … … 5353 5354 5354 5355 /* Line 1806 of yacc.c */ 5355 #line 51 1"parser.yy"5356 #line 514 "parser.yy" 5356 5357 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5357 5358 break; … … 5360 5361 5361 5362 /* Line 1806 of yacc.c */ 5362 #line 51 3"parser.yy"5363 #line 516 "parser.yy" 5363 5364 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5364 5365 break; … … 5367 5368 5368 5369 /* Line 1806 of yacc.c */ 5369 #line 5 19"parser.yy"5370 #line 522 "parser.yy" 5370 5371 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5371 5372 break; … … 5374 5375 5375 5376 /* Line 1806 of yacc.c */ 5376 #line 52 1"parser.yy"5377 #line 524 "parser.yy" 5377 5378 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5378 5379 break; … … 5381 5382 5382 5383 /* Line 1806 of yacc.c */ 5383 #line 5 27"parser.yy"5384 #line 530 "parser.yy" 5384 5385 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5385 5386 break; … … 5388 5389 5389 5390 /* Line 1806 of yacc.c */ 5390 #line 5 29"parser.yy"5391 #line 532 "parser.yy" 5391 5392 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5392 5393 break; … … 5395 5396 5396 5397 /* Line 1806 of yacc.c */ 5397 #line 53 1"parser.yy"5398 #line 534 "parser.yy" 5398 5399 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5399 5400 break; … … 5402 5403 5403 5404 /* Line 1806 of yacc.c */ 5404 #line 53 3"parser.yy"5405 #line 536 "parser.yy" 5405 5406 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5406 5407 break; … … 5409 5410 5410 5411 /* Line 1806 of yacc.c */ 5411 #line 5 39"parser.yy"5412 #line 542 "parser.yy" 5412 5413 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5413 5414 break; … … 5416 5417 5417 5418 /* Line 1806 of yacc.c */ 5418 #line 54 1"parser.yy"5419 #line 544 "parser.yy" 5419 5420 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5420 5421 break; … … 5423 5424 5424 5425 /* Line 1806 of yacc.c */ 5425 #line 5 47"parser.yy"5426 #line 550 "parser.yy" 5426 5427 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5427 5428 break; … … 5430 5431 5431 5432 /* Line 1806 of yacc.c */ 5432 #line 55 3"parser.yy"5433 #line 556 "parser.yy" 5433 5434 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5434 5435 break; … … 5437 5438 5438 5439 /* Line 1806 of yacc.c */ 5439 #line 5 59"parser.yy"5440 #line 562 "parser.yy" 5440 5441 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5441 5442 break; … … 5444 5445 5445 5446 /* Line 1806 of yacc.c */ 5446 #line 56 5"parser.yy"5447 #line 568 "parser.yy" 5447 5448 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); } 5448 5449 break; … … 5451 5452 5452 5453 /* Line 1806 of yacc.c */ 5453 #line 57 1"parser.yy"5454 #line 574 "parser.yy" 5454 5455 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); } 5455 5456 break; … … 5458 5459 5459 5460 /* Line 1806 of yacc.c */ 5460 #line 5 77"parser.yy"5461 #line 580 "parser.yy" 5461 5462 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5462 5463 break; … … 5465 5466 5466 5467 /* Line 1806 of yacc.c */ 5467 #line 58 0"parser.yy"5468 #line 583 "parser.yy" 5468 5469 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); } 5469 5470 break; … … 5472 5473 5473 5474 /* Line 1806 of yacc.c */ 5474 #line 58 2"parser.yy"5475 #line 585 "parser.yy" 5475 5476 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5476 5477 break; … … 5479 5480 5480 5481 /* Line 1806 of yacc.c */ 5481 #line 59 3"parser.yy"5482 #line 596 "parser.yy" 5482 5483 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5483 5484 break; … … 5486 5487 5487 5488 /* Line 1806 of yacc.c */ 5488 #line 59 5"parser.yy"5489 #line 598 "parser.yy" 5489 5490 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); } 5490 5491 break; … … 5493 5494 5494 5495 /* Line 1806 of yacc.c */ 5495 #line 60 0"parser.yy"5496 #line 603 "parser.yy" 5496 5497 { (yyval.en) = nullptr; } 5497 5498 break; … … 5500 5501 5501 5502 /* Line 1806 of yacc.c */ 5502 #line 60 5"parser.yy"5503 #line 608 "parser.yy" 5503 5504 { (yyval.op) = OperKinds::Assign; } 5504 5505 break; … … 5507 5508 5508 5509 /* Line 1806 of yacc.c */ 5509 #line 60 6"parser.yy"5510 #line 609 "parser.yy" 5510 5511 { (yyval.op) = OperKinds::MulAssn; } 5511 5512 break; … … 5514 5515 5515 5516 /* Line 1806 of yacc.c */ 5516 #line 6 07"parser.yy"5517 #line 610 "parser.yy" 5517 5518 { (yyval.op) = OperKinds::DivAssn; } 5518 5519 break; … … 5521 5522 5522 5523 /* Line 1806 of yacc.c */ 5523 #line 6 08"parser.yy"5524 #line 611 "parser.yy" 5524 5525 { (yyval.op) = OperKinds::ModAssn; } 5525 5526 break; … … 5528 5529 5529 5530 /* Line 1806 of yacc.c */ 5530 #line 6 09"parser.yy"5531 #line 612 "parser.yy" 5531 5532 { (yyval.op) = OperKinds::PlusAssn; } 5532 5533 break; … … 5535 5536 5536 5537 /* Line 1806 of yacc.c */ 5537 #line 61 0"parser.yy"5538 #line 613 "parser.yy" 5538 5539 { (yyval.op) = OperKinds::MinusAssn; } 5539 5540 break; … … 5542 5543 5543 5544 /* Line 1806 of yacc.c */ 5544 #line 61 1"parser.yy"5545 #line 614 "parser.yy" 5545 5546 { (yyval.op) = OperKinds::LSAssn; } 5546 5547 break; … … 5549 5550 5550 5551 /* Line 1806 of yacc.c */ 5551 #line 61 2"parser.yy"5552 #line 615 "parser.yy" 5552 5553 { (yyval.op) = OperKinds::RSAssn; } 5553 5554 break; … … 5556 5557 5557 5558 /* Line 1806 of yacc.c */ 5558 #line 61 3"parser.yy"5559 #line 616 "parser.yy" 5559 5560 { (yyval.op) = OperKinds::AndAssn; } 5560 5561 break; … … 5563 5564 5564 5565 /* Line 1806 of yacc.c */ 5565 #line 61 4"parser.yy"5566 #line 617 "parser.yy" 5566 5567 { (yyval.op) = OperKinds::ERAssn; } 5567 5568 break; … … 5570 5571 5571 5572 /* Line 1806 of yacc.c */ 5572 #line 61 5"parser.yy"5573 #line 618 "parser.yy" 5573 5574 { (yyval.op) = OperKinds::OrAssn; } 5574 5575 break; … … 5577 5578 5578 5579 /* Line 1806 of yacc.c */ 5579 #line 62 2"parser.yy"5580 #line 625 "parser.yy" 5580 5581 { (yyval.en) = new ExpressionNode( build_tuple() ); } 5581 5582 break; … … 5584 5585 5585 5586 /* Line 1806 of yacc.c */ 5586 #line 62 4"parser.yy"5587 #line 627 "parser.yy" 5587 5588 { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); } 5588 5589 break; … … 5591 5592 5592 5593 /* Line 1806 of yacc.c */ 5593 #line 62 6"parser.yy"5594 #line 629 "parser.yy" 5594 5595 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( (yyvsp[(4) - (6)].en) ) ) ); } 5595 5596 break; … … 5598 5599 5599 5600 /* Line 1806 of yacc.c */ 5600 #line 6 28"parser.yy"5601 #line 631 "parser.yy" 5601 5602 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); } 5602 5603 break; … … 5605 5606 5606 5607 /* Line 1806 of yacc.c */ 5607 #line 63 4"parser.yy"5608 #line 637 "parser.yy" 5608 5609 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5609 5610 break; … … 5612 5613 5613 5614 /* Line 1806 of yacc.c */ 5614 #line 64 0"parser.yy"5615 #line 643 "parser.yy" 5615 5616 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5616 5617 break; … … 5619 5620 5620 5621 /* Line 1806 of yacc.c */ 5621 #line 64 5"parser.yy"5622 #line 648 "parser.yy" 5622 5623 { (yyval.en) = 0; } 5623 5624 break; … … 5626 5627 5627 5628 /* Line 1806 of yacc.c */ 5628 #line 65 4"parser.yy"5629 #line 657 "parser.yy" 5629 5630 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5630 5631 break; … … 5633 5634 5634 5635 /* Line 1806 of yacc.c */ 5635 #line 66 1"parser.yy"5636 #line 664 "parser.yy" 5636 5637 { 5637 5638 Token fn; … … 5644 5645 5645 5646 /* Line 1806 of yacc.c */ 5646 #line 67 1"parser.yy"5647 #line 674 "parser.yy" 5647 5648 { 5648 5649 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5653 5654 5654 5655 /* Line 1806 of yacc.c */ 5655 #line 6 78"parser.yy"5656 #line 681 "parser.yy" 5656 5657 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5657 5658 break; … … 5660 5661 5661 5662 /* Line 1806 of yacc.c */ 5662 #line 68 5"parser.yy"5663 #line 688 "parser.yy" 5663 5664 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5664 5665 break; … … 5667 5668 5668 5669 /* Line 1806 of yacc.c */ 5669 #line 69 1"parser.yy"5670 #line 694 "parser.yy" 5670 5671 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5671 5672 break; … … 5674 5675 5675 5676 /* Line 1806 of yacc.c */ 5676 #line 69 6"parser.yy"5677 #line 699 "parser.yy" 5677 5678 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5678 5679 break; … … 5681 5682 5682 5683 /* Line 1806 of yacc.c */ 5683 #line 698"parser.yy"5684 #line 701 "parser.yy" 5684 5685 { // mark all fields in list 5685 5686 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() ) … … 5692 5693 5693 5694 /* Line 1806 of yacc.c */ 5694 #line 70 4"parser.yy"5695 #line 707 "parser.yy" 5695 5696 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5696 5697 break; … … 5699 5700 5700 5701 /* Line 1806 of yacc.c */ 5701 #line 71 1"parser.yy"5702 #line 714 "parser.yy" 5702 5703 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5703 5704 break; … … 5706 5707 5707 5708 /* Line 1806 of yacc.c */ 5708 #line 71 6"parser.yy"5709 #line 719 "parser.yy" 5709 5710 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5710 5711 break; … … 5713 5714 5714 5715 /* Line 1806 of yacc.c */ 5715 #line 72 2"parser.yy"5716 { (yyval.sn) = new StatementNode ( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }5716 #line 726 "parser.yy" 5717 { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); } 5717 5718 break; 5718 5719 … … 5720 5721 5721 5722 /* Line 1806 of yacc.c */ 5722 #line 72 4"parser.yy"5723 { (yyval.sn) = new StatementNode ( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }5723 #line 729 "parser.yy" 5724 { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); } 5724 5725 break; 5725 5726 … … 5727 5728 5728 5729 /* Line 1806 of yacc.c */ 5729 #line 7 26"parser.yy"5730 { (yyval.sn) = new StatementNode ( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }5730 #line 732 "parser.yy" 5731 { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5731 5732 break; 5732 5733 … … 5734 5735 5735 5736 /* Line 1806 of yacc.c */ 5736 #line 7 28"parser.yy"5737 #line 734 "parser.yy" 5737 5738 { 5738 StatementNode *sw = new StatementNode ( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );5739 StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5739 5740 // The semantics of the declaration list is changed to include associated initialization, which is performed 5740 5741 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 5749 5750 5750 5751 /* Line 1806 of yacc.c */ 5751 #line 7 38"parser.yy"5752 { (yyval.sn) = new StatementNode ( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }5752 #line 745 "parser.yy" 5753 { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5753 5754 break; 5754 5755 … … 5756 5757 5757 5758 /* Line 1806 of yacc.c */ 5758 #line 74 0"parser.yy"5759 #line 747 "parser.yy" 5759 5760 { 5760 StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); 5761 //StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 ); 5762 StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5761 5763 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw; 5762 5764 } … … 5766 5768 5767 5769 /* Line 1806 of yacc.c */ 5768 #line 75 0"parser.yy"5770 #line 758 "parser.yy" 5769 5771 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5770 5772 break; … … 5773 5775 5774 5776 /* Line 1806 of yacc.c */ 5775 #line 7 52"parser.yy"5777 #line 760 "parser.yy" 5776 5778 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5777 5779 break; … … 5780 5782 5781 5783 /* Line 1806 of yacc.c */ 5782 #line 7 57"parser.yy"5784 #line 765 "parser.yy" 5783 5785 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); } 5784 5786 break; … … 5787 5789 5788 5790 /* Line 1806 of yacc.c */ 5789 #line 7 59"parser.yy"5791 #line 767 "parser.yy" 5790 5792 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); } 5791 5793 break; … … 5794 5796 5795 5797 /* Line 1806 of yacc.c */ 5796 #line 7 63"parser.yy"5798 #line 771 "parser.yy" 5797 5799 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 5798 5800 break; … … 5801 5803 5802 5804 /* Line 1806 of yacc.c */ 5803 #line 7 64"parser.yy"5805 #line 772 "parser.yy" 5804 5806 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5805 5807 break; … … 5808 5810 5809 5811 /* Line 1806 of yacc.c */ 5810 #line 77 0"parser.yy"5812 #line 778 "parser.yy" 5811 5813 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5812 5814 break; … … 5815 5817 5816 5818 /* Line 1806 of yacc.c */ 5817 #line 7 74"parser.yy"5819 #line 782 "parser.yy" 5818 5820 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); } 5819 5821 break; … … 5822 5824 5823 5825 /* Line 1806 of yacc.c */ 5824 #line 7 79"parser.yy"5826 #line 787 "parser.yy" 5825 5827 { (yyval.sn) = 0; } 5826 5828 break; … … 5829 5831 5830 5832 /* Line 1806 of yacc.c */ 5831 #line 7 85"parser.yy"5833 #line 793 "parser.yy" 5832 5834 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); } 5833 5835 break; … … 5836 5838 5837 5839 /* Line 1806 of yacc.c */ 5838 #line 7 87"parser.yy"5840 #line 795 "parser.yy" 5839 5841 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); } 5840 5842 break; … … 5843 5845 5844 5846 /* Line 1806 of yacc.c */ 5845 #line 792"parser.yy"5847 #line 800 "parser.yy" 5846 5848 { (yyval.sn) = 0; } 5847 5849 break; … … 5850 5852 5851 5853 /* Line 1806 of yacc.c */ 5852 #line 798"parser.yy"5854 #line 806 "parser.yy" 5853 5855 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5854 5856 break; … … 5857 5859 5858 5860 /* Line 1806 of yacc.c */ 5859 #line 80 0"parser.yy"5861 #line 808 "parser.yy" 5860 5862 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); } 5861 5863 break; … … 5864 5866 5865 5867 /* Line 1806 of yacc.c */ 5866 #line 8 02"parser.yy"5868 #line 810 "parser.yy" 5867 5869 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5868 5870 break; … … 5871 5873 5872 5874 /* Line 1806 of yacc.c */ 5873 #line 8 04"parser.yy"5875 #line 812 "parser.yy" 5874 5876 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); } 5875 5877 break; … … 5878 5880 5879 5881 /* Line 1806 of yacc.c */ 5880 #line 8 09"parser.yy"5882 #line 817 "parser.yy" 5881 5883 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5882 5884 break; … … 5885 5887 5886 5888 /* Line 1806 of yacc.c */ 5887 #line 8 15"parser.yy"5889 #line 823 "parser.yy" 5888 5890 { (yyval.sn) = 0; } 5889 5891 break; … … 5892 5894 5893 5895 /* Line 1806 of yacc.c */ 5894 #line 8 17"parser.yy"5896 #line 825 "parser.yy" 5895 5897 { (yyval.sn) = 0; } 5896 5898 break; … … 5899 5901 5900 5902 /* Line 1806 of yacc.c */ 5901 #line 8 22"parser.yy"5902 { (yyval.sn) = new StatementNode ( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }5903 #line 830 "parser.yy" 5904 { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5903 5905 break; 5904 5906 … … 5906 5908 5907 5909 /* Line 1806 of yacc.c */ 5908 #line 8 24"parser.yy"5909 { (yyval.sn) = new StatementNode ( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }5910 #line 832 "parser.yy" 5911 { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); } 5910 5912 break; 5911 5913 … … 5913 5915 5914 5916 /* Line 1806 of yacc.c */ 5915 #line 8 26"parser.yy"5916 { (yyval.sn) = new StatementNode ( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }5917 #line 834 "parser.yy" 5918 { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); } 5917 5919 break; 5918 5920 … … 5920 5922 5921 5923 /* Line 1806 of yacc.c */ 5922 #line 83 1"parser.yy"5923 { (yyval. en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }5924 #line 839 "parser.yy" 5925 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5924 5926 break; 5925 5927 … … 5927 5929 5928 5930 /* Line 1806 of yacc.c */ 5929 #line 8 33"parser.yy"5930 { (yyval. en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }5931 #line 841 "parser.yy" 5932 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5931 5933 break; 5932 5934 … … 5934 5936 5935 5937 /* Line 1806 of yacc.c */ 5936 #line 8 38"parser.yy"5938 #line 846 "parser.yy" 5937 5939 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5938 5940 break; … … 5941 5943 5942 5944 /* Line 1806 of yacc.c */ 5943 #line 8 42"parser.yy"5945 #line 850 "parser.yy" 5944 5946 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5945 5947 break; … … 5948 5950 5949 5951 /* Line 1806 of yacc.c */ 5950 #line 8 45"parser.yy"5952 #line 853 "parser.yy" 5951 5953 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5952 5954 break; … … 5955 5957 5956 5958 /* Line 1806 of yacc.c */ 5957 #line 8 49"parser.yy"5959 #line 857 "parser.yy" 5958 5960 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5959 5961 break; … … 5962 5964 5963 5965 /* Line 1806 of yacc.c */ 5964 #line 8 52"parser.yy"5966 #line 860 "parser.yy" 5965 5967 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5966 5968 break; … … 5969 5971 5970 5972 /* Line 1806 of yacc.c */ 5971 #line 8 56"parser.yy"5973 #line 864 "parser.yy" 5972 5974 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5973 5975 break; … … 5976 5978 5977 5979 /* Line 1806 of yacc.c */ 5978 #line 8 58"parser.yy"5980 #line 866 "parser.yy" 5979 5981 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 5980 5982 break; … … 5983 5985 5984 5986 /* Line 1806 of yacc.c */ 5985 #line 86 0"parser.yy"5987 #line 868 "parser.yy" 5986 5988 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5987 5989 break; … … 5990 5992 5991 5993 /* Line 1806 of yacc.c */ 5992 #line 8 64"parser.yy"5994 #line 872 "parser.yy" 5993 5995 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 5994 5996 break; … … 5997 5999 5998 6000 /* Line 1806 of yacc.c */ 5999 #line 8 66"parser.yy"6001 #line 874 "parser.yy" 6000 6002 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 6001 6003 break; … … 6004 6006 6005 6007 /* Line 1806 of yacc.c */ 6006 #line 8 73"parser.yy"6008 #line 881 "parser.yy" 6007 6009 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6008 6010 break; … … 6011 6013 6012 6014 /* Line 1806 of yacc.c */ 6013 #line 8 75"parser.yy"6015 #line 883 "parser.yy" 6014 6016 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6015 6017 break; … … 6018 6020 6019 6021 /* Line 1806 of yacc.c */ 6020 #line 8 77"parser.yy"6022 #line 885 "parser.yy" 6021 6023 { 6022 6024 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6028 6030 6029 6031 /* Line 1806 of yacc.c */ 6030 #line 8 88"parser.yy"6032 #line 896 "parser.yy" 6031 6033 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6032 6034 break; … … 6035 6037 6036 6038 /* Line 1806 of yacc.c */ 6037 #line 89 0"parser.yy"6039 #line 898 "parser.yy" 6038 6040 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6039 6041 break; … … 6042 6044 6043 6045 /* Line 1806 of yacc.c */ 6044 #line 892"parser.yy"6046 #line 900 "parser.yy" 6045 6047 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6046 6048 break; … … 6049 6051 6050 6052 /* Line 1806 of yacc.c */ 6051 #line 894"parser.yy"6053 #line 902 "parser.yy" 6052 6054 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6053 6055 break; … … 6056 6058 6057 6059 /* Line 1806 of yacc.c */ 6058 #line 899"parser.yy"6060 #line 907 "parser.yy" 6059 6061 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6060 6062 break; … … 6063 6065 6064 6066 /* Line 1806 of yacc.c */ 6065 #line 90 1"parser.yy"6067 #line 909 "parser.yy" 6066 6068 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6067 6069 break; … … 6070 6072 6071 6073 /* Line 1806 of yacc.c */ 6072 #line 9 03"parser.yy"6074 #line 911 "parser.yy" 6073 6075 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6074 6076 break; … … 6077 6079 6078 6080 /* Line 1806 of yacc.c */ 6079 #line 9 05"parser.yy"6081 #line 913 "parser.yy" 6080 6082 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6081 6083 break; … … 6084 6086 6085 6087 /* Line 1806 of yacc.c */ 6086 #line 91 0"parser.yy"6088 #line 918 "parser.yy" 6087 6089 { 6088 6090 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6094 6096 6095 6097 /* Line 1806 of yacc.c */ 6096 #line 9 24"parser.yy"6098 #line 932 "parser.yy" 6097 6099 { 6098 6100 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6104 6106 6105 6107 /* Line 1806 of yacc.c */ 6106 #line 9 29"parser.yy"6108 #line 937 "parser.yy" 6107 6109 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6108 6110 break; … … 6111 6113 6112 6114 /* Line 1806 of yacc.c */ 6113 #line 93 1"parser.yy"6115 #line 939 "parser.yy" 6114 6116 { 6115 6117 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6121 6123 6122 6124 /* Line 1806 of yacc.c */ 6123 #line 94 0"parser.yy"6125 #line 948 "parser.yy" 6124 6126 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6125 6127 break; … … 6128 6130 6129 6131 /* Line 1806 of yacc.c */ 6130 #line 9 42"parser.yy"6132 #line 950 "parser.yy" 6131 6133 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6132 6134 break; … … 6135 6137 6136 6138 /* Line 1806 of yacc.c */ 6137 #line 9 44"parser.yy"6139 #line 952 "parser.yy" 6138 6140 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6139 6141 break; … … 6142 6144 6143 6145 /* Line 1806 of yacc.c */ 6144 #line 9 46"parser.yy"6146 #line 954 "parser.yy" 6145 6147 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); } 6146 6148 break; … … 6149 6151 6150 6152 /* Line 1806 of yacc.c */ 6151 #line 9 48"parser.yy"6153 #line 956 "parser.yy" 6152 6154 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); } 6153 6155 break; … … 6156 6158 6157 6159 /* Line 1806 of yacc.c */ 6158 #line 9 53"parser.yy"6160 #line 961 "parser.yy" 6159 6161 { (yyval.flag) = false; } 6160 6162 break; … … 6163 6165 6164 6166 /* Line 1806 of yacc.c */ 6165 #line 9 55"parser.yy"6167 #line 963 "parser.yy" 6166 6168 { (yyval.flag) = true; } 6167 6169 break; … … 6170 6172 6171 6173 /* Line 1806 of yacc.c */ 6172 #line 96 0"parser.yy"6174 #line 968 "parser.yy" 6173 6175 { (yyval.en) = 0; } 6174 6176 break; … … 6177 6179 6178 6180 /* Line 1806 of yacc.c */ 6179 #line 9 67"parser.yy"6181 #line 975 "parser.yy" 6180 6182 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6181 6183 break; … … 6184 6186 6185 6187 /* Line 1806 of yacc.c */ 6186 #line 9 72"parser.yy"6188 #line 980 "parser.yy" 6187 6189 { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); } 6188 6190 break; … … 6191 6193 6192 6194 /* Line 1806 of yacc.c */ 6193 #line 9 74"parser.yy"6195 #line 982 "parser.yy" 6194 6196 { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); } 6195 6197 break; … … 6198 6200 6199 6201 /* Line 1806 of yacc.c */ 6200 #line 9 79"parser.yy"6202 #line 987 "parser.yy" 6201 6203 { (yyval.en) = 0; } 6202 6204 break; … … 6205 6207 6206 6208 /* Line 1806 of yacc.c */ 6207 #line 98 1"parser.yy"6209 #line 989 "parser.yy" 6208 6210 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 6209 6211 break; … … 6212 6214 6213 6215 /* Line 1806 of yacc.c */ 6214 #line 9 83"parser.yy"6216 #line 991 "parser.yy" 6215 6217 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 6216 6218 break; … … 6219 6221 6220 6222 /* Line 1806 of yacc.c */ 6221 #line 9 88"parser.yy"6223 #line 996 "parser.yy" 6222 6224 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6223 6225 break; … … 6226 6228 6227 6229 /* Line 1806 of yacc.c */ 6228 #line 99 0"parser.yy"6230 #line 998 "parser.yy" 6229 6231 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6230 6232 break; … … 6233 6235 6234 6236 /* Line 1806 of yacc.c */ 6235 #line 997"parser.yy"6237 #line 1005 "parser.yy" 6236 6238 { (yyval.decl) = 0; } 6237 6239 break; … … 6240 6242 6241 6243 /* Line 1806 of yacc.c */ 6242 #line 10 04"parser.yy"6244 #line 1012 "parser.yy" 6243 6245 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6244 6246 break; … … 6247 6249 6248 6250 /* Line 1806 of yacc.c */ 6249 #line 10 09"parser.yy"6251 #line 1017 "parser.yy" 6250 6252 { (yyval.decl) = 0; } 6251 6253 break; … … 6254 6256 6255 6257 /* Line 1806 of yacc.c */ 6256 #line 10 16"parser.yy"6258 #line 1024 "parser.yy" 6257 6259 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6258 6260 break; … … 6261 6263 6262 6264 /* Line 1806 of yacc.c */ 6263 #line 103 0"parser.yy"6265 #line 1038 "parser.yy" 6264 6266 {} 6265 6267 break; … … 6268 6270 6269 6271 /* Line 1806 of yacc.c */ 6270 #line 103 1"parser.yy"6272 #line 1039 "parser.yy" 6271 6273 {} 6272 6274 break; … … 6275 6277 6276 6278 /* Line 1806 of yacc.c */ 6277 #line 106 0"parser.yy"6279 #line 1068 "parser.yy" 6278 6280 { 6279 6281 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6285 6287 6286 6288 /* Line 1806 of yacc.c */ 6287 #line 10 67"parser.yy"6289 #line 1075 "parser.yy" 6288 6290 { 6289 6291 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6295 6297 6296 6298 /* Line 1806 of yacc.c */ 6297 #line 10 72"parser.yy"6299 #line 1080 "parser.yy" 6298 6300 { 6299 6301 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6305 6307 6306 6308 /* Line 1806 of yacc.c */ 6307 #line 10 82"parser.yy"6309 #line 1090 "parser.yy" 6308 6310 { 6309 6311 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6315 6317 6316 6318 /* Line 1806 of yacc.c */ 6317 #line 10 87"parser.yy"6319 #line 1095 "parser.yy" 6318 6320 { 6319 6321 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6325 6327 6326 6328 /* Line 1806 of yacc.c */ 6327 #line 1 092"parser.yy"6329 #line 1100 "parser.yy" 6328 6330 { 6329 6331 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6335 6337 6336 6338 /* Line 1806 of yacc.c */ 6337 #line 110 0"parser.yy"6339 #line 1108 "parser.yy" 6338 6340 { 6339 6341 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6345 6347 6346 6348 /* Line 1806 of yacc.c */ 6347 #line 11 05"parser.yy"6349 #line 1113 "parser.yy" 6348 6350 { 6349 6351 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6355 6357 6356 6358 /* Line 1806 of yacc.c */ 6357 #line 111 0"parser.yy"6359 #line 1118 "parser.yy" 6358 6360 { 6359 6361 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6365 6367 6366 6368 /* Line 1806 of yacc.c */ 6367 #line 11 15"parser.yy"6369 #line 1123 "parser.yy" 6368 6370 { 6369 6371 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6375 6377 6376 6378 /* Line 1806 of yacc.c */ 6377 #line 112 0"parser.yy"6379 #line 1128 "parser.yy" 6378 6380 { 6379 6381 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6385 6387 6386 6388 /* Line 1806 of yacc.c */ 6387 #line 11 28"parser.yy"6389 #line 1136 "parser.yy" 6388 6390 { 6389 6391 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6394 6396 6395 6397 /* Line 1806 of yacc.c */ 6396 #line 115 1"parser.yy"6398 #line 1159 "parser.yy" 6397 6399 { 6398 6400 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6403 6405 6404 6406 /* Line 1806 of yacc.c */ 6405 #line 11 55"parser.yy"6407 #line 1163 "parser.yy" 6406 6408 { 6407 6409 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6412 6414 6413 6415 /* Line 1806 of yacc.c */ 6414 #line 11 62"parser.yy"6416 #line 1170 "parser.yy" 6415 6417 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6416 6418 break; … … 6419 6421 6420 6422 /* Line 1806 of yacc.c */ 6421 #line 11 66"parser.yy"6423 #line 1174 "parser.yy" 6422 6424 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6423 6425 break; … … 6426 6428 6427 6429 /* Line 1806 of yacc.c */ 6428 #line 117 1"parser.yy"6430 #line 1179 "parser.yy" 6429 6431 { 6430 6432 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6436 6438 6437 6439 /* Line 1806 of yacc.c */ 6438 #line 11 76"parser.yy"6440 #line 1184 "parser.yy" 6439 6441 { 6440 6442 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6446 6448 6447 6449 /* Line 1806 of yacc.c */ 6448 #line 118 1"parser.yy"6450 #line 1189 "parser.yy" 6449 6451 { 6450 6452 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6456 6458 6457 6459 /* Line 1806 of yacc.c */ 6458 #line 1 192"parser.yy"6460 #line 1200 "parser.yy" 6459 6461 { 6460 6462 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6466 6468 6467 6469 /* Line 1806 of yacc.c */ 6468 #line 1 197"parser.yy"6470 #line 1205 "parser.yy" 6469 6471 { 6470 6472 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6476 6478 6477 6479 /* Line 1806 of yacc.c */ 6478 #line 12 02"parser.yy"6480 #line 1210 "parser.yy" 6479 6481 { 6480 6482 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6486 6488 6487 6489 /* Line 1806 of yacc.c */ 6488 #line 12 07"parser.yy"6490 #line 1215 "parser.yy" 6489 6491 { 6490 6492 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6496 6498 6497 6499 /* Line 1806 of yacc.c */ 6498 #line 12 12"parser.yy"6500 #line 1220 "parser.yy" 6499 6501 { 6500 6502 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6506 6508 6507 6509 /* Line 1806 of yacc.c */ 6508 #line 122 1"parser.yy"6510 #line 1229 "parser.yy" 6509 6511 { 6510 6512 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6516 6518 6517 6519 /* Line 1806 of yacc.c */ 6518 #line 12 26"parser.yy"6520 #line 1234 "parser.yy" 6519 6521 { 6520 6522 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6526 6528 6527 6529 /* Line 1806 of yacc.c */ 6528 #line 12 43"parser.yy"6530 #line 1251 "parser.yy" 6529 6531 { 6530 6532 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6536 6538 6537 6539 /* Line 1806 of yacc.c */ 6538 #line 12 48"parser.yy"6540 #line 1256 "parser.yy" 6539 6541 { 6540 6542 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6546 6548 6547 6549 /* Line 1806 of yacc.c */ 6548 #line 127 0"parser.yy"6550 #line 1278 "parser.yy" 6549 6551 { (yyval.decl) = 0; } 6550 6552 break; … … 6553 6555 6554 6556 /* Line 1806 of yacc.c */ 6555 #line 12 82"parser.yy"6557 #line 1290 "parser.yy" 6556 6558 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6557 6559 break; … … 6560 6562 6561 6563 /* Line 1806 of yacc.c */ 6562 #line 1 293"parser.yy"6564 #line 1301 "parser.yy" 6563 6565 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6564 6566 break; … … 6567 6569 6568 6570 /* Line 1806 of yacc.c */ 6569 #line 1 295"parser.yy"6571 #line 1303 "parser.yy" 6570 6572 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6571 6573 break; … … 6574 6576 6575 6577 /* Line 1806 of yacc.c */ 6576 #line 1 297"parser.yy"6578 #line 1305 "parser.yy" 6577 6579 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6578 6580 break; … … 6581 6583 6582 6584 /* Line 1806 of yacc.c */ 6583 #line 1 299"parser.yy"6585 #line 1307 "parser.yy" 6584 6586 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6585 6587 break; … … 6588 6590 6589 6591 /* Line 1806 of yacc.c */ 6590 #line 130 1"parser.yy"6592 #line 1309 "parser.yy" 6591 6593 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6592 6594 break; … … 6595 6597 6596 6598 /* Line 1806 of yacc.c */ 6597 #line 13 03"parser.yy"6599 #line 1311 "parser.yy" 6598 6600 { 6599 6601 typedefTable.enterScope(); … … 6604 6606 6605 6607 /* Line 1806 of yacc.c */ 6606 #line 13 07"parser.yy"6608 #line 1315 "parser.yy" 6607 6609 { 6608 6610 typedefTable.leaveScope(); … … 6614 6616 6615 6617 /* Line 1806 of yacc.c */ 6616 #line 13 16"parser.yy"6618 #line 1324 "parser.yy" 6617 6619 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6618 6620 break; … … 6621 6623 6622 6624 /* Line 1806 of yacc.c */ 6623 #line 13 18"parser.yy"6625 #line 1326 "parser.yy" 6624 6626 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6625 6627 break; … … 6628 6630 6629 6631 /* Line 1806 of yacc.c */ 6630 #line 13 29"parser.yy"6632 #line 1337 "parser.yy" 6631 6633 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6632 6634 break; … … 6635 6637 6636 6638 /* Line 1806 of yacc.c */ 6637 #line 13 38"parser.yy"6639 #line 1346 "parser.yy" 6638 6640 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6639 6641 break; … … 6642 6644 6643 6645 /* Line 1806 of yacc.c */ 6644 #line 134 0"parser.yy"6646 #line 1348 "parser.yy" 6645 6647 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6646 6648 break; … … 6649 6651 6650 6652 /* Line 1806 of yacc.c */ 6651 #line 13 42"parser.yy"6653 #line 1350 "parser.yy" 6652 6654 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6653 6655 break; … … 6656 6658 6657 6659 /* Line 1806 of yacc.c */ 6658 #line 13 44"parser.yy"6660 #line 1352 "parser.yy" 6659 6661 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6660 6662 break; … … 6663 6665 6664 6666 /* Line 1806 of yacc.c */ 6665 #line 13 46"parser.yy"6667 #line 1354 "parser.yy" 6666 6668 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6667 6669 break; … … 6670 6672 6671 6673 /* Line 1806 of yacc.c */ 6672 #line 13 48"parser.yy"6674 #line 1356 "parser.yy" 6673 6675 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6674 6676 break; … … 6677 6679 6678 6680 /* Line 1806 of yacc.c */ 6679 #line 135 0"parser.yy"6681 #line 1358 "parser.yy" 6680 6682 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6681 6683 break; … … 6684 6686 6685 6687 /* Line 1806 of yacc.c */ 6686 #line 13 52"parser.yy"6688 #line 1360 "parser.yy" 6687 6689 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6688 6690 break; … … 6691 6693 6692 6694 /* Line 1806 of yacc.c */ 6693 #line 13 57"parser.yy"6695 #line 1365 "parser.yy" 6694 6696 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6695 6697 break; … … 6698 6700 6699 6701 /* Line 1806 of yacc.c */ 6700 #line 13 59"parser.yy"6702 #line 1367 "parser.yy" 6701 6703 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6702 6704 break; … … 6705 6707 6706 6708 /* Line 1806 of yacc.c */ 6707 #line 136 1"parser.yy"6709 #line 1369 "parser.yy" 6708 6710 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6709 6711 break; … … 6712 6714 6713 6715 /* Line 1806 of yacc.c */ 6714 #line 13 63"parser.yy"6716 #line 1371 "parser.yy" 6715 6717 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6716 6718 break; … … 6719 6721 6720 6722 /* Line 1806 of yacc.c */ 6721 #line 13 65"parser.yy"6723 #line 1373 "parser.yy" 6722 6724 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6723 6725 break; … … 6726 6728 6727 6729 /* Line 1806 of yacc.c */ 6728 #line 13 67"parser.yy"6730 #line 1375 "parser.yy" 6729 6731 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6730 6732 break; … … 6733 6735 6734 6736 /* Line 1806 of yacc.c */ 6735 #line 13 69"parser.yy"6737 #line 1377 "parser.yy" 6736 6738 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6737 6739 break; … … 6740 6742 6741 6743 /* Line 1806 of yacc.c */ 6742 #line 137 1"parser.yy"6744 #line 1379 "parser.yy" 6743 6745 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6744 6746 break; … … 6747 6749 6748 6750 /* Line 1806 of yacc.c */ 6749 #line 13 73"parser.yy"6751 #line 1381 "parser.yy" 6750 6752 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6751 6753 break; … … 6754 6756 6755 6757 /* Line 1806 of yacc.c */ 6756 #line 13 75"parser.yy"6758 #line 1383 "parser.yy" 6757 6759 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6758 6760 break; … … 6761 6763 6762 6764 /* Line 1806 of yacc.c */ 6763 #line 13 77"parser.yy"6765 #line 1385 "parser.yy" 6764 6766 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6765 6767 break; … … 6768 6770 6769 6771 /* Line 1806 of yacc.c */ 6770 #line 13 79"parser.yy"6772 #line 1387 "parser.yy" 6771 6773 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6772 6774 break; … … 6775 6777 6776 6778 /* Line 1806 of yacc.c */ 6777 #line 138 1"parser.yy"6779 #line 1389 "parser.yy" 6778 6780 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 6779 6781 break; … … 6782 6784 6783 6785 /* Line 1806 of yacc.c */ 6784 #line 13 88"parser.yy"6786 #line 1396 "parser.yy" 6785 6787 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6786 6788 break; … … 6789 6791 6790 6792 /* Line 1806 of yacc.c */ 6791 #line 139 0"parser.yy"6793 #line 1398 "parser.yy" 6792 6794 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6793 6795 break; … … 6796 6798 6797 6799 /* Line 1806 of yacc.c */ 6798 #line 1 392"parser.yy"6800 #line 1400 "parser.yy" 6799 6801 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6800 6802 break; … … 6803 6805 6804 6806 /* Line 1806 of yacc.c */ 6805 #line 1 394"parser.yy"6807 #line 1402 "parser.yy" 6806 6808 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6807 6809 break; … … 6810 6812 6811 6813 /* Line 1806 of yacc.c */ 6812 #line 140 0"parser.yy"6814 #line 1408 "parser.yy" 6813 6815 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6814 6816 break; … … 6817 6819 6818 6820 /* Line 1806 of yacc.c */ 6819 #line 14 07"parser.yy"6821 #line 1415 "parser.yy" 6820 6822 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6821 6823 break; … … 6824 6826 6825 6827 /* Line 1806 of yacc.c */ 6826 #line 14 09"parser.yy"6828 #line 1417 "parser.yy" 6827 6829 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6828 6830 break; … … 6831 6833 6832 6834 /* Line 1806 of yacc.c */ 6833 #line 141 1"parser.yy"6835 #line 1419 "parser.yy" 6834 6836 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6835 6837 break; … … 6838 6840 6839 6841 /* Line 1806 of yacc.c */ 6840 #line 14 16"parser.yy"6842 #line 1424 "parser.yy" 6841 6843 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6842 6844 break; … … 6845 6847 6846 6848 /* Line 1806 of yacc.c */ 6847 #line 14 18"parser.yy"6849 #line 1426 "parser.yy" 6848 6850 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6849 6851 break; … … 6852 6854 6853 6855 /* Line 1806 of yacc.c */ 6854 #line 142 0"parser.yy"6856 #line 1428 "parser.yy" 6855 6857 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6856 6858 break; … … 6859 6861 6860 6862 /* Line 1806 of yacc.c */ 6861 #line 14 22"parser.yy"6863 #line 1430 "parser.yy" 6862 6864 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6863 6865 break; … … 6866 6868 6867 6869 /* Line 1806 of yacc.c */ 6868 #line 14 28"parser.yy"6870 #line 1436 "parser.yy" 6869 6871 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6870 6872 break; … … 6873 6875 6874 6876 /* Line 1806 of yacc.c */ 6875 #line 143 0"parser.yy"6877 #line 1438 "parser.yy" 6876 6878 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6877 6879 break; … … 6880 6882 6881 6883 /* Line 1806 of yacc.c */ 6882 #line 14 32"parser.yy"6884 #line 1440 "parser.yy" 6883 6885 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6884 6886 break; 6885 6887 6886 6888 case 351: 6887 6888 /* Line 1806 of yacc.c */6889 #line 1438 "parser.yy"6890 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }6891 break;6892 6893 case 352:6894 6895 /* Line 1806 of yacc.c */6896 #line 1440 "parser.yy"6897 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }6898 break;6899 6900 case 354:6901 6889 6902 6890 /* Line 1806 of yacc.c */ … … 6905 6893 break; 6906 6894 6907 case 35 5:6895 case 352: 6908 6896 6909 6897 /* Line 1806 of yacc.c */ … … 6912 6900 break; 6913 6901 6902 case 354: 6903 6904 /* Line 1806 of yacc.c */ 6905 #line 1454 "parser.yy" 6906 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6907 break; 6908 6909 case 355: 6910 6911 /* Line 1806 of yacc.c */ 6912 #line 1456 "parser.yy" 6913 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6914 break; 6915 6914 6916 case 356: 6915 6917 6916 6918 /* Line 1806 of yacc.c */ 6917 #line 145 0"parser.yy"6919 #line 1458 "parser.yy" 6918 6920 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6919 6921 break; … … 6922 6924 6923 6925 /* Line 1806 of yacc.c */ 6924 #line 14 55"parser.yy"6926 #line 1463 "parser.yy" 6925 6927 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6926 6928 break; … … 6929 6931 6930 6932 /* Line 1806 of yacc.c */ 6931 #line 14 57"parser.yy"6933 #line 1465 "parser.yy" 6932 6934 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6933 6935 break; … … 6936 6938 6937 6939 /* Line 1806 of yacc.c */ 6938 #line 14 59"parser.yy"6940 #line 1467 "parser.yy" 6939 6941 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6940 6942 break; … … 6943 6945 6944 6946 /* Line 1806 of yacc.c */ 6945 #line 14 69"parser.yy"6947 #line 1477 "parser.yy" 6946 6948 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); } 6947 6949 break; … … 6950 6952 6951 6953 /* Line 1806 of yacc.c */ 6952 #line 147 1"parser.yy"6954 #line 1479 "parser.yy" 6953 6955 { 6954 6956 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 6960 6962 6961 6963 /* Line 1806 of yacc.c */ 6962 #line 14 76"parser.yy"6964 #line 1484 "parser.yy" 6963 6965 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 6964 6966 break; … … 6967 6969 6968 6970 /* Line 1806 of yacc.c */ 6969 #line 14 78"parser.yy"6971 #line 1486 "parser.yy" 6970 6972 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); } 6971 6973 break; … … 6974 6976 6975 6977 /* Line 1806 of yacc.c */ 6976 #line 148 0"parser.yy"6978 #line 1488 "parser.yy" 6977 6979 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); } 6978 6980 break; … … 6981 6983 6982 6984 /* Line 1806 of yacc.c */ 6983 #line 14 82"parser.yy"6985 #line 1490 "parser.yy" 6984 6986 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6985 6987 break; … … 6988 6990 6989 6991 /* Line 1806 of yacc.c */ 6990 #line 14 87"parser.yy"6992 #line 1495 "parser.yy" 6991 6993 { (yyval.aggKey) = DeclarationNode::Struct; } 6992 6994 break; … … 6995 6997 6996 6998 /* Line 1806 of yacc.c */ 6997 #line 14 89"parser.yy"6999 #line 1497 "parser.yy" 6998 7000 { (yyval.aggKey) = DeclarationNode::Union; } 6999 7001 break; … … 7002 7004 7003 7005 /* Line 1806 of yacc.c */ 7004 #line 1 494"parser.yy"7006 #line 1502 "parser.yy" 7005 7007 { (yyval.decl) = 0; } 7006 7008 break; … … 7009 7011 7010 7012 /* Line 1806 of yacc.c */ 7011 #line 1 496"parser.yy"7013 #line 1504 "parser.yy" 7012 7014 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7013 7015 break; … … 7016 7018 7017 7019 /* Line 1806 of yacc.c */ 7018 #line 15 02"parser.yy"7020 #line 1510 "parser.yy" 7019 7021 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); } 7020 7022 break; … … 7023 7025 7024 7026 /* Line 1806 of yacc.c */ 7025 #line 15 05"parser.yy"7027 #line 1513 "parser.yy" 7026 7028 { // mark all fields in list 7027 7029 for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() ) … … 7034 7036 7035 7037 /* Line 1806 of yacc.c */ 7036 #line 15 15"parser.yy"7038 #line 1523 "parser.yy" 7037 7039 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7038 7040 break; … … 7041 7043 7042 7044 /* Line 1806 of yacc.c */ 7043 #line 15 17"parser.yy"7045 #line 1525 "parser.yy" 7044 7046 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7045 7047 break; … … 7048 7050 7049 7051 /* Line 1806 of yacc.c */ 7050 #line 15 19"parser.yy"7052 #line 1527 "parser.yy" 7051 7053 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7052 7054 break; … … 7055 7057 7056 7058 /* Line 1806 of yacc.c */ 7057 #line 15 24"parser.yy"7059 #line 1532 "parser.yy" 7058 7060 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7059 7061 break; … … 7062 7064 7063 7065 /* Line 1806 of yacc.c */ 7064 #line 15 26"parser.yy"7066 #line 1534 "parser.yy" 7065 7067 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7066 7068 break; … … 7069 7071 7070 7072 /* Line 1806 of yacc.c */ 7071 #line 153 1"parser.yy"7073 #line 1539 "parser.yy" 7072 7074 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7073 7075 break; … … 7076 7078 7077 7079 /* Line 1806 of yacc.c */ 7078 #line 15 33"parser.yy"7080 #line 1541 "parser.yy" 7079 7081 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7080 7082 break; … … 7083 7085 7084 7086 /* Line 1806 of yacc.c */ 7085 #line 15 36"parser.yy"7087 #line 1544 "parser.yy" 7086 7088 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7087 7089 break; … … 7090 7092 7091 7093 /* Line 1806 of yacc.c */ 7092 #line 15 39"parser.yy"7094 #line 1547 "parser.yy" 7093 7095 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7094 7096 break; … … 7097 7099 7098 7100 /* Line 1806 of yacc.c */ 7099 #line 15 45"parser.yy"7101 #line 1553 "parser.yy" 7100 7102 { (yyval.en) = 0; } 7101 7103 break; … … 7104 7106 7105 7107 /* Line 1806 of yacc.c */ 7106 #line 15 47"parser.yy"7108 #line 1555 "parser.yy" 7107 7109 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7108 7110 break; … … 7111 7113 7112 7114 /* Line 1806 of yacc.c */ 7113 #line 15 52"parser.yy"7115 #line 1560 "parser.yy" 7114 7116 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7115 7117 break; … … 7118 7120 7119 7121 /* Line 1806 of yacc.c */ 7120 #line 156 1"parser.yy"7122 #line 1569 "parser.yy" 7121 7123 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7122 7124 break; … … 7125 7127 7126 7128 /* Line 1806 of yacc.c */ 7127 #line 15 63"parser.yy"7129 #line 1571 "parser.yy" 7128 7130 { 7129 7131 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); … … 7135 7137 7136 7138 /* Line 1806 of yacc.c */ 7137 #line 15 68"parser.yy"7139 #line 1576 "parser.yy" 7138 7140 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 7139 7141 break; … … 7142 7144 7143 7145 /* Line 1806 of yacc.c */ 7144 #line 157 0"parser.yy"7146 #line 1578 "parser.yy" 7145 7147 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); } 7146 7148 break; … … 7149 7151 7150 7152 /* Line 1806 of yacc.c */ 7151 #line 15 75"parser.yy"7153 #line 1583 "parser.yy" 7152 7154 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7153 7155 break; … … 7156 7158 7157 7159 /* Line 1806 of yacc.c */ 7158 #line 15 77"parser.yy"7160 #line 1585 "parser.yy" 7159 7161 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7160 7162 break; … … 7163 7165 7164 7166 /* Line 1806 of yacc.c */ 7165 #line 15 82"parser.yy"7167 #line 1590 "parser.yy" 7166 7168 { (yyval.en) = 0; } 7167 7169 break; … … 7170 7172 7171 7173 /* Line 1806 of yacc.c */ 7172 #line 15 84"parser.yy"7174 #line 1592 "parser.yy" 7173 7175 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7174 7176 break; … … 7177 7179 7178 7180 /* Line 1806 of yacc.c */ 7179 #line 159 1"parser.yy"7181 #line 1599 "parser.yy" 7180 7182 { (yyval.decl) = 0; } 7181 7183 break; … … 7184 7186 7185 7187 /* Line 1806 of yacc.c */ 7186 #line 1 599"parser.yy"7188 #line 1607 "parser.yy" 7187 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7188 7190 break; … … 7191 7193 7192 7194 /* Line 1806 of yacc.c */ 7193 #line 160 1"parser.yy"7195 #line 1609 "parser.yy" 7194 7196 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7195 7197 break; … … 7198 7200 7199 7201 /* Line 1806 of yacc.c */ 7200 #line 16 03"parser.yy"7202 #line 1611 "parser.yy" 7201 7203 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7202 7204 break; … … 7205 7207 7206 7208 /* Line 1806 of yacc.c */ 7207 #line 161 1"parser.yy"7209 #line 1619 "parser.yy" 7208 7210 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7209 7211 break; 7210 7212 7211 7213 case 408: 7212 7213 /* Line 1806 of yacc.c */7214 #line 1613 "parser.yy"7215 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }7216 break;7217 7218 case 409:7219 7220 /* Line 1806 of yacc.c */7221 #line 1615 "parser.yy"7222 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }7223 break;7224 7225 case 411:7226 7214 7227 7215 /* Line 1806 of yacc.c */ … … 7230 7218 break; 7231 7219 7220 case 409: 7221 7222 /* Line 1806 of yacc.c */ 7223 #line 1623 "parser.yy" 7224 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7225 break; 7226 7227 case 411: 7228 7229 /* Line 1806 of yacc.c */ 7230 #line 1629 "parser.yy" 7231 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7232 break; 7233 7232 7234 case 412: 7233 7235 7234 7236 /* Line 1806 of yacc.c */ 7235 #line 16 26"parser.yy"7237 #line 1634 "parser.yy" 7236 7238 { (yyval.decl) = 0; } 7237 7239 break; … … 7240 7242 7241 7243 /* Line 1806 of yacc.c */ 7242 #line 16 33"parser.yy"7244 #line 1641 "parser.yy" 7243 7245 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7244 7246 break; … … 7247 7249 7248 7250 /* Line 1806 of yacc.c */ 7249 #line 164 0"parser.yy"7251 #line 1648 "parser.yy" 7250 7252 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7251 7253 break; … … 7254 7256 7255 7257 /* Line 1806 of yacc.c */ 7256 #line 16 42"parser.yy"7258 #line 1650 "parser.yy" 7257 7259 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7258 7260 break; … … 7261 7263 7262 7264 /* Line 1806 of yacc.c */ 7263 #line 165 1"parser.yy"7265 #line 1659 "parser.yy" 7264 7266 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7265 7267 break; … … 7268 7270 7269 7271 /* Line 1806 of yacc.c */ 7270 #line 16 54"parser.yy"7272 #line 1662 "parser.yy" 7271 7273 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7272 7274 break; … … 7275 7277 7276 7278 /* Line 1806 of yacc.c */ 7277 #line 16 56"parser.yy"7279 #line 1664 "parser.yy" 7278 7280 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7279 7281 break; … … 7282 7284 7283 7285 /* Line 1806 of yacc.c */ 7284 #line 16 66"parser.yy"7286 #line 1674 "parser.yy" 7285 7287 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7286 7288 break; … … 7289 7291 7290 7292 /* Line 1806 of yacc.c */ 7291 #line 16 72"parser.yy"7293 #line 1680 "parser.yy" 7292 7294 { 7293 7295 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7299 7301 7300 7302 /* Line 1806 of yacc.c */ 7301 #line 16 77"parser.yy"7303 #line 1685 "parser.yy" 7302 7304 { 7303 7305 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7309 7311 7310 7312 /* Line 1806 of yacc.c */ 7311 #line 16 86"parser.yy"7313 #line 1694 "parser.yy" 7312 7314 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7313 7315 break; … … 7316 7318 7317 7319 /* Line 1806 of yacc.c */ 7318 #line 1 695"parser.yy"7320 #line 1703 "parser.yy" 7319 7321 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7320 7322 break; … … 7323 7325 7324 7326 /* Line 1806 of yacc.c */ 7325 #line 1 697"parser.yy"7327 #line 1705 "parser.yy" 7326 7328 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7327 7329 break; 7328 7330 7329 7331 case 447: 7330 7331 /* Line 1806 of yacc.c */7332 #line 1722 "parser.yy"7333 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }7334 break;7335 7336 case 451:7337 7332 7338 7333 /* Line 1806 of yacc.c */ … … 7341 7336 break; 7342 7337 7338 case 451: 7339 7340 /* Line 1806 of yacc.c */ 7341 #line 1738 "parser.yy" 7342 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7343 break; 7344 7343 7345 case 452: 7344 7346 7345 7347 /* Line 1806 of yacc.c */ 7346 #line 17 35"parser.yy"7348 #line 1743 "parser.yy" 7347 7349 { (yyval.in) = 0; } 7348 7350 break; … … 7351 7353 7352 7354 /* Line 1806 of yacc.c */ 7353 #line 17 37"parser.yy"7355 #line 1745 "parser.yy" 7354 7356 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7355 7357 break; … … 7358 7360 7359 7361 /* Line 1806 of yacc.c */ 7360 #line 17 39"parser.yy"7362 #line 1747 "parser.yy" 7361 7363 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); } 7362 7364 break; … … 7365 7367 7366 7368 /* Line 1806 of yacc.c */ 7367 #line 17 43"parser.yy"7369 #line 1751 "parser.yy" 7368 7370 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7369 7371 break; … … 7372 7374 7373 7375 /* Line 1806 of yacc.c */ 7374 #line 17 44"parser.yy"7376 #line 1752 "parser.yy" 7375 7377 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7376 7378 break; … … 7379 7381 7380 7382 /* Line 1806 of yacc.c */ 7381 #line 17 49"parser.yy"7383 #line 1757 "parser.yy" 7382 7384 { (yyval.in) = 0; } 7383 7385 break; … … 7386 7388 7387 7389 /* Line 1806 of yacc.c */ 7388 #line 175 1"parser.yy"7390 #line 1759 "parser.yy" 7389 7391 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7390 7392 break; … … 7393 7395 7394 7396 /* Line 1806 of yacc.c */ 7395 #line 17 52"parser.yy"7397 #line 1760 "parser.yy" 7396 7398 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7397 7399 break; … … 7400 7402 7401 7403 /* Line 1806 of yacc.c */ 7402 #line 17 54"parser.yy"7404 #line 1762 "parser.yy" 7403 7405 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7404 7406 break; … … 7407 7409 7408 7410 /* Line 1806 of yacc.c */ 7409 #line 177 0"parser.yy"7411 #line 1778 "parser.yy" 7410 7412 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); } 7411 7413 break; … … 7414 7416 7415 7417 /* Line 1806 of yacc.c */ 7416 #line 17 76"parser.yy"7418 #line 1784 "parser.yy" 7417 7419 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) ) ); } 7418 7420 break; … … 7421 7423 7422 7424 /* Line 1806 of yacc.c */ 7423 #line 17 82"parser.yy"7425 #line 1790 "parser.yy" 7424 7426 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); } 7425 7427 break; … … 7428 7430 7429 7431 /* Line 1806 of yacc.c */ 7430 #line 17 85"parser.yy"7432 #line 1793 "parser.yy" 7431 7433 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7432 7434 break; … … 7435 7437 7436 7438 /* Line 1806 of yacc.c */ 7437 #line 17 87"parser.yy"7439 #line 1795 "parser.yy" 7438 7440 { (yyval.en) = (yyvsp[(3) - (5)].en); } 7439 7441 break; … … 7442 7444 7443 7445 /* Line 1806 of yacc.c */ 7444 #line 17 89"parser.yy"7446 #line 1797 "parser.yy" 7445 7447 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); } 7446 7448 break; … … 7449 7451 7450 7452 /* Line 1806 of yacc.c */ 7451 #line 179 1"parser.yy"7453 #line 1799 "parser.yy" 7452 7454 { (yyval.en) = (yyvsp[(4) - (6)].en); } 7453 7455 break; … … 7456 7458 7457 7459 /* Line 1806 of yacc.c */ 7458 #line 18 15"parser.yy"7460 #line 1823 "parser.yy" 7459 7461 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7460 7462 break; … … 7463 7465 7464 7466 /* Line 1806 of yacc.c */ 7465 #line 18 17"parser.yy"7467 #line 1825 "parser.yy" 7466 7468 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7467 7469 break; … … 7470 7472 7471 7473 /* Line 1806 of yacc.c */ 7472 #line 18 19"parser.yy"7474 #line 1827 "parser.yy" 7473 7475 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7474 7476 break; … … 7477 7479 7478 7480 /* Line 1806 of yacc.c */ 7479 #line 18 25"parser.yy"7481 #line 1833 "parser.yy" 7480 7482 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7481 7483 break; … … 7484 7486 7485 7487 /* Line 1806 of yacc.c */ 7486 #line 18 27"parser.yy"7488 #line 1835 "parser.yy" 7487 7489 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7488 7490 break; … … 7491 7493 7492 7494 /* Line 1806 of yacc.c */ 7493 #line 18 32"parser.yy"7495 #line 1840 "parser.yy" 7494 7496 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7495 7497 break; … … 7498 7500 7499 7501 /* Line 1806 of yacc.c */ 7500 #line 18 38"parser.yy"7502 #line 1846 "parser.yy" 7501 7503 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7502 7504 break; … … 7505 7507 7506 7508 /* Line 1806 of yacc.c */ 7507 #line 18 43"parser.yy"7509 #line 1851 "parser.yy" 7508 7510 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7509 7511 break; … … 7512 7514 7513 7515 /* Line 1806 of yacc.c */ 7514 #line 18 45"parser.yy"7516 #line 1853 "parser.yy" 7515 7517 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7516 7518 break; … … 7519 7521 7520 7522 /* Line 1806 of yacc.c */ 7521 #line 185 1"parser.yy"7523 #line 1859 "parser.yy" 7522 7524 { (yyval.tclass) = DeclarationNode::Type; } 7523 7525 break; … … 7526 7528 7527 7529 /* Line 1806 of yacc.c */ 7528 #line 18 53"parser.yy"7530 #line 1861 "parser.yy" 7529 7531 { (yyval.tclass) = DeclarationNode::Ftype; } 7530 7532 break; … … 7533 7535 7534 7536 /* Line 1806 of yacc.c */ 7535 #line 18 55"parser.yy"7537 #line 1863 "parser.yy" 7536 7538 { (yyval.tclass) = DeclarationNode::Dtype; } 7537 7539 break; … … 7540 7542 7541 7543 /* Line 1806 of yacc.c */ 7542 #line 186 0"parser.yy"7544 #line 1868 "parser.yy" 7543 7545 { (yyval.decl) = 0; } 7544 7546 break; … … 7547 7549 7548 7550 /* Line 1806 of yacc.c */ 7549 #line 18 62"parser.yy"7551 #line 1870 "parser.yy" 7550 7552 { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7551 7553 break; … … 7554 7556 7555 7557 /* Line 1806 of yacc.c */ 7556 #line 18 67"parser.yy"7558 #line 1875 "parser.yy" 7557 7559 { 7558 7560 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); … … 7564 7566 7565 7567 /* Line 1806 of yacc.c */ 7566 #line 18 72"parser.yy"7568 #line 1880 "parser.yy" 7567 7569 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7568 7570 break; … … 7571 7573 7572 7574 /* Line 1806 of yacc.c */ 7573 #line 18 74"parser.yy"7575 #line 1882 "parser.yy" 7574 7576 { (yyval.decl) = 0; } 7575 7577 break; … … 7578 7580 7579 7581 /* Line 1806 of yacc.c */ 7580 #line 18 79"parser.yy"7582 #line 1887 "parser.yy" 7581 7583 { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); } 7582 7584 break; … … 7585 7587 7586 7588 /* Line 1806 of yacc.c */ 7587 #line 18 82"parser.yy"7589 #line 1890 "parser.yy" 7588 7590 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); } 7589 7591 break; … … 7592 7594 7593 7595 /* Line 1806 of yacc.c */ 7594 #line 18 84"parser.yy"7596 #line 1892 "parser.yy" 7595 7597 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7596 7598 break; … … 7599 7601 7600 7602 /* Line 1806 of yacc.c */ 7601 #line 18 89"parser.yy"7603 #line 1897 "parser.yy" 7602 7604 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7603 7605 break; … … 7606 7608 7607 7609 /* Line 1806 of yacc.c */ 7608 #line 189 1"parser.yy"7610 #line 1899 "parser.yy" 7609 7611 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7610 7612 break; … … 7613 7615 7614 7616 /* Line 1806 of yacc.c */ 7615 #line 1 893"parser.yy"7617 #line 1901 "parser.yy" 7616 7618 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7617 7619 break; … … 7620 7622 7621 7623 /* Line 1806 of yacc.c */ 7622 #line 1 898"parser.yy"7624 #line 1906 "parser.yy" 7623 7625 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7624 7626 break; … … 7627 7629 7628 7630 /* Line 1806 of yacc.c */ 7629 #line 190 0"parser.yy"7631 #line 1908 "parser.yy" 7630 7632 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7631 7633 break; … … 7634 7636 7635 7637 /* Line 1806 of yacc.c */ 7636 #line 19 05"parser.yy"7638 #line 1913 "parser.yy" 7637 7639 { 7638 7640 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7644 7646 7645 7647 /* Line 1806 of yacc.c */ 7646 #line 191 0"parser.yy"7648 #line 1918 "parser.yy" 7647 7649 { 7648 7650 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7654 7656 7655 7657 /* Line 1806 of yacc.c */ 7656 #line 19 18"parser.yy"7658 #line 1926 "parser.yy" 7657 7659 { 7658 7660 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7664 7666 7665 7667 /* Line 1806 of yacc.c */ 7666 #line 19 23"parser.yy"7668 #line 1931 "parser.yy" 7667 7669 { 7668 7670 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); … … 7674 7676 7675 7677 /* Line 1806 of yacc.c */ 7676 #line 19 28"parser.yy"7678 #line 1936 "parser.yy" 7677 7679 { 7678 7680 typedefTable.leaveTrait(); … … 7685 7687 7686 7688 /* Line 1806 of yacc.c */ 7687 #line 19 38"parser.yy"7689 #line 1946 "parser.yy" 7688 7690 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7689 7691 break; … … 7692 7694 7693 7695 /* Line 1806 of yacc.c */ 7694 #line 19 48"parser.yy"7696 #line 1956 "parser.yy" 7695 7697 { 7696 7698 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7702 7704 7703 7705 /* Line 1806 of yacc.c */ 7704 #line 19 53"parser.yy"7706 #line 1961 "parser.yy" 7705 7707 { 7706 7708 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7712 7714 7713 7715 /* Line 1806 of yacc.c */ 7714 #line 19 58"parser.yy"7716 #line 1966 "parser.yy" 7715 7717 { 7716 7718 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7722 7724 7723 7725 /* Line 1806 of yacc.c */ 7724 #line 19 66"parser.yy"7726 #line 1974 "parser.yy" 7725 7727 { 7726 7728 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7732 7734 7733 7735 /* Line 1806 of yacc.c */ 7734 #line 197 1"parser.yy"7736 #line 1979 "parser.yy" 7735 7737 { 7736 7738 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7742 7744 7743 7745 /* Line 1806 of yacc.c */ 7744 #line 198 1"parser.yy"7746 #line 1989 "parser.yy" 7745 7747 {} 7746 7748 break; … … 7749 7751 7750 7752 /* Line 1806 of yacc.c */ 7751 #line 19 83"parser.yy"7753 #line 1991 "parser.yy" 7752 7754 { 7753 7755 if ( theTree ) { … … 7762 7764 7763 7765 /* Line 1806 of yacc.c */ 7764 #line 1995"parser.yy"7766 #line 2003 "parser.yy" 7765 7767 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7766 7768 break; … … 7769 7771 7770 7772 /* Line 1806 of yacc.c */ 7771 #line 200 0"parser.yy"7773 #line 2008 "parser.yy" 7772 7774 { (yyval.decl) = 0; } 7773 7775 break; … … 7776 7778 7777 7779 /* Line 1806 of yacc.c */ 7778 #line 20 08"parser.yy"7780 #line 2016 "parser.yy" 7779 7781 {} 7780 7782 break; … … 7783 7785 7784 7786 /* Line 1806 of yacc.c */ 7785 #line 201 0"parser.yy"7787 #line 2018 "parser.yy" 7786 7788 { 7787 7789 linkageStack.push( linkage ); … … 7793 7795 7794 7796 /* Line 1806 of yacc.c */ 7795 #line 20 15"parser.yy"7797 #line 2023 "parser.yy" 7796 7798 { 7797 7799 linkage = linkageStack.top(); … … 7804 7806 7805 7807 /* Line 1806 of yacc.c */ 7806 #line 202 1"parser.yy"7808 #line 2029 "parser.yy" 7807 7809 { // mark all fields in list 7808 7810 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() ) … … 7815 7817 7816 7818 /* Line 1806 of yacc.c */ 7817 #line 20 36"parser.yy"7819 #line 2044 "parser.yy" 7818 7820 { 7819 7821 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7826 7828 7827 7829 /* Line 1806 of yacc.c */ 7828 #line 20 42"parser.yy"7830 #line 2050 "parser.yy" 7829 7831 { 7830 7832 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7837 7839 7838 7840 /* Line 1806 of yacc.c */ 7839 #line 205 1"parser.yy"7841 #line 2059 "parser.yy" 7840 7842 { 7841 7843 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7848 7850 7849 7851 /* Line 1806 of yacc.c */ 7850 #line 20 57"parser.yy"7852 #line 2065 "parser.yy" 7851 7853 { 7852 7854 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7859 7861 7860 7862 /* Line 1806 of yacc.c */ 7861 #line 20 63"parser.yy"7863 #line 2071 "parser.yy" 7862 7864 { 7863 7865 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7870 7872 7871 7873 /* Line 1806 of yacc.c */ 7872 #line 20 69"parser.yy"7874 #line 2077 "parser.yy" 7873 7875 { 7874 7876 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7881 7883 7882 7884 /* Line 1806 of yacc.c */ 7883 #line 20 75"parser.yy"7885 #line 2083 "parser.yy" 7884 7886 { 7885 7887 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7892 7894 7893 7895 /* Line 1806 of yacc.c */ 7894 #line 20 83"parser.yy"7896 #line 2091 "parser.yy" 7895 7897 { 7896 7898 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7901 7903 7902 7904 case 536: 7903 7904 /* Line 1806 of yacc.c */7905 #line 2089 "parser.yy"7906 {7907 typedefTable.addToEnclosingScope( TypedefTable::ID );7908 typedefTable.leaveScope();7909 (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );7910 }7911 break;7912 7913 case 537:7914 7905 7915 7906 /* Line 1806 of yacc.c */ … … 7922 7913 break; 7923 7914 7915 case 537: 7916 7917 /* Line 1806 of yacc.c */ 7918 #line 2105 "parser.yy" 7919 { 7920 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7921 typedefTable.leaveScope(); 7922 (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); 7923 } 7924 break; 7925 7924 7926 case 538: 7925 7927 7926 7928 /* Line 1806 of yacc.c */ 7927 #line 21 03"parser.yy"7929 #line 2111 "parser.yy" 7928 7930 { 7929 7931 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7936 7938 7937 7939 /* Line 1806 of yacc.c */ 7938 #line 21 18"parser.yy"7940 #line 2126 "parser.yy" 7939 7941 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 7940 7942 break; … … 7943 7945 7944 7946 /* Line 1806 of yacc.c */ 7945 #line 21 28"parser.yy"7947 #line 2136 "parser.yy" 7946 7948 { (yyval.decl) = 0; } 7947 7949 break; … … 7950 7952 7951 7953 /* Line 1806 of yacc.c */ 7952 #line 21 35"parser.yy"7954 #line 2143 "parser.yy" 7953 7955 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7954 7956 break; … … 7957 7959 7958 7960 /* Line 1806 of yacc.c */ 7959 #line 214 1"parser.yy"7961 #line 2149 "parser.yy" 7960 7962 { (yyval.decl) = 0; } 7961 7963 break; … … 7964 7966 7965 7967 /* Line 1806 of yacc.c */ 7966 #line 21 56"parser.yy"7968 #line 2164 "parser.yy" 7967 7969 {} 7968 7970 break; … … 7971 7973 7972 7974 /* Line 1806 of yacc.c */ 7973 #line 21 57"parser.yy"7975 #line 2165 "parser.yy" 7974 7976 {} 7975 7977 break; … … 7978 7980 7979 7981 /* Line 1806 of yacc.c */ 7980 #line 21 58"parser.yy"7982 #line 2166 "parser.yy" 7981 7983 {} 7982 7984 break; … … 7985 7987 7986 7988 /* Line 1806 of yacc.c */ 7987 #line 21 59"parser.yy"7989 #line 2167 "parser.yy" 7988 7990 {} 7989 7991 break; … … 7992 7994 7993 7995 /* Line 1806 of yacc.c */ 7994 #line 2 194"parser.yy"7996 #line 2202 "parser.yy" 7995 7997 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7996 7998 break; … … 7999 8001 8000 8002 /* Line 1806 of yacc.c */ 8001 #line 2 197"parser.yy"8003 #line 2205 "parser.yy" 8002 8004 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8003 8005 break; … … 8006 8008 8007 8009 /* Line 1806 of yacc.c */ 8008 #line 2 199"parser.yy"8010 #line 2207 "parser.yy" 8009 8011 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8010 8012 break; … … 8013 8015 8014 8016 /* Line 1806 of yacc.c */ 8015 #line 22 04"parser.yy"8017 #line 2212 "parser.yy" 8016 8018 { 8017 8019 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8023 8025 8024 8026 /* Line 1806 of yacc.c */ 8025 #line 22 09"parser.yy"8027 #line 2217 "parser.yy" 8026 8028 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8027 8029 break; … … 8030 8032 8031 8033 /* Line 1806 of yacc.c */ 8032 #line 22 14"parser.yy"8034 #line 2222 "parser.yy" 8033 8035 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8034 8036 break; … … 8037 8039 8038 8040 /* Line 1806 of yacc.c */ 8039 #line 22 16"parser.yy"8041 #line 2224 "parser.yy" 8040 8042 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8041 8043 break; … … 8044 8046 8045 8047 /* Line 1806 of yacc.c */ 8046 #line 22 18"parser.yy"8048 #line 2226 "parser.yy" 8047 8049 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8048 8050 break; … … 8051 8053 8052 8054 /* Line 1806 of yacc.c */ 8053 #line 22 23"parser.yy"8055 #line 2231 "parser.yy" 8054 8056 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8055 8057 break; … … 8058 8060 8059 8061 /* Line 1806 of yacc.c */ 8060 #line 22 25"parser.yy"8062 #line 2233 "parser.yy" 8061 8063 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8062 8064 break; … … 8065 8067 8066 8068 /* Line 1806 of yacc.c */ 8067 #line 22 27"parser.yy"8069 #line 2235 "parser.yy" 8068 8070 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8069 8071 break; … … 8072 8074 8073 8075 /* Line 1806 of yacc.c */ 8074 #line 22 29"parser.yy"8076 #line 2237 "parser.yy" 8075 8077 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8076 8078 break; … … 8079 8081 8080 8082 /* Line 1806 of yacc.c */ 8081 #line 22 34"parser.yy"8083 #line 2242 "parser.yy" 8082 8084 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8083 8085 break; … … 8086 8088 8087 8089 /* Line 1806 of yacc.c */ 8088 #line 22 36"parser.yy"8090 #line 2244 "parser.yy" 8089 8091 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8090 8092 break; … … 8093 8095 8094 8096 /* Line 1806 of yacc.c */ 8095 #line 22 45"parser.yy"8097 #line 2253 "parser.yy" 8096 8098 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8097 8099 break; … … 8100 8102 8101 8103 /* Line 1806 of yacc.c */ 8102 #line 22 48"parser.yy"8104 #line 2256 "parser.yy" 8103 8105 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8104 8106 break; … … 8107 8109 8108 8110 /* Line 1806 of yacc.c */ 8109 #line 22 53"parser.yy"8111 #line 2261 "parser.yy" 8110 8112 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8111 8113 break; … … 8114 8116 8115 8117 /* Line 1806 of yacc.c */ 8116 #line 22 55"parser.yy"8118 #line 2263 "parser.yy" 8117 8119 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8118 8120 break; … … 8121 8123 8122 8124 /* Line 1806 of yacc.c */ 8123 #line 22 57"parser.yy"8125 #line 2265 "parser.yy" 8124 8126 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8125 8127 break; … … 8128 8130 8129 8131 /* Line 1806 of yacc.c */ 8130 #line 22 62"parser.yy"8132 #line 2270 "parser.yy" 8131 8133 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8132 8134 break; … … 8135 8137 8136 8138 /* Line 1806 of yacc.c */ 8137 #line 22 64"parser.yy"8139 #line 2272 "parser.yy" 8138 8140 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8139 8141 break; … … 8142 8144 8143 8145 /* Line 1806 of yacc.c */ 8144 #line 22 66"parser.yy"8146 #line 2274 "parser.yy" 8145 8147 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8146 8148 break; … … 8149 8151 8150 8152 /* Line 1806 of yacc.c */ 8151 #line 227 1"parser.yy"8153 #line 2279 "parser.yy" 8152 8154 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8153 8155 break; … … 8156 8158 8157 8159 /* Line 1806 of yacc.c */ 8158 #line 22 73"parser.yy"8160 #line 2281 "parser.yy" 8159 8161 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8160 8162 break; … … 8163 8165 8164 8166 /* Line 1806 of yacc.c */ 8165 #line 22 75"parser.yy"8167 #line 2283 "parser.yy" 8166 8168 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8167 8169 break; … … 8170 8172 8171 8173 /* Line 1806 of yacc.c */ 8172 #line 229 0"parser.yy"8174 #line 2298 "parser.yy" 8173 8175 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8174 8176 break; … … 8177 8179 8178 8180 /* Line 1806 of yacc.c */ 8179 #line 2 292"parser.yy"8181 #line 2300 "parser.yy" 8180 8182 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8181 8183 break; … … 8184 8186 8185 8187 /* Line 1806 of yacc.c */ 8186 #line 2 294"parser.yy"8188 #line 2302 "parser.yy" 8187 8189 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8188 8190 break; … … 8191 8193 8192 8194 /* Line 1806 of yacc.c */ 8193 #line 2 299"parser.yy"8195 #line 2307 "parser.yy" 8194 8196 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8195 8197 break; … … 8198 8200 8199 8201 /* Line 1806 of yacc.c */ 8200 #line 230 1"parser.yy"8202 #line 2309 "parser.yy" 8201 8203 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8202 8204 break; … … 8205 8207 8206 8208 /* Line 1806 of yacc.c */ 8207 #line 23 03"parser.yy"8209 #line 2311 "parser.yy" 8208 8210 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8209 8211 break; … … 8212 8214 8213 8215 /* Line 1806 of yacc.c */ 8214 #line 23 08"parser.yy"8216 #line 2316 "parser.yy" 8215 8217 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8216 8218 break; … … 8219 8221 8220 8222 /* Line 1806 of yacc.c */ 8221 #line 231 0"parser.yy"8223 #line 2318 "parser.yy" 8222 8224 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8223 8225 break; … … 8226 8228 8227 8229 /* Line 1806 of yacc.c */ 8228 #line 23 12"parser.yy"8230 #line 2320 "parser.yy" 8229 8231 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8230 8232 break; … … 8233 8235 8234 8236 /* Line 1806 of yacc.c */ 8235 #line 23 27"parser.yy"8237 #line 2335 "parser.yy" 8236 8238 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8237 8239 break; … … 8240 8242 8241 8243 /* Line 1806 of yacc.c */ 8242 #line 233 0"parser.yy"8244 #line 2338 "parser.yy" 8243 8245 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8244 8246 break; … … 8247 8249 8248 8250 /* Line 1806 of yacc.c */ 8249 #line 23 32"parser.yy"8251 #line 2340 "parser.yy" 8250 8252 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8251 8253 break; … … 8254 8256 8255 8257 /* Line 1806 of yacc.c */ 8256 #line 23 38"parser.yy"8258 #line 2346 "parser.yy" 8257 8259 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8258 8260 break; … … 8261 8263 8262 8264 /* Line 1806 of yacc.c */ 8263 #line 23 43"parser.yy"8265 #line 2351 "parser.yy" 8264 8266 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8265 8267 break; … … 8268 8270 8269 8271 /* Line 1806 of yacc.c */ 8270 #line 23 45"parser.yy"8272 #line 2353 "parser.yy" 8271 8273 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8272 8274 break; … … 8275 8277 8276 8278 /* Line 1806 of yacc.c */ 8277 #line 23 47"parser.yy"8279 #line 2355 "parser.yy" 8278 8280 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8279 8281 break; … … 8282 8284 8283 8285 /* Line 1806 of yacc.c */ 8284 #line 23 52"parser.yy"8286 #line 2360 "parser.yy" 8285 8287 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8286 8288 break; … … 8289 8291 8290 8292 /* Line 1806 of yacc.c */ 8291 #line 23 54"parser.yy"8293 #line 2362 "parser.yy" 8292 8294 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8293 8295 break; … … 8296 8298 8297 8299 /* Line 1806 of yacc.c */ 8298 #line 23 56"parser.yy"8300 #line 2364 "parser.yy" 8299 8301 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8300 8302 break; … … 8303 8305 8304 8306 /* Line 1806 of yacc.c */ 8305 #line 23 58"parser.yy"8307 #line 2366 "parser.yy" 8306 8308 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8307 8309 break; … … 8310 8312 8311 8313 /* Line 1806 of yacc.c */ 8312 #line 23 63"parser.yy"8314 #line 2371 "parser.yy" 8313 8315 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8314 8316 break; … … 8317 8319 8318 8320 /* Line 1806 of yacc.c */ 8319 #line 23 65"parser.yy"8321 #line 2373 "parser.yy" 8320 8322 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8321 8323 break; … … 8324 8326 8325 8327 /* Line 1806 of yacc.c */ 8326 #line 23 67"parser.yy"8328 #line 2375 "parser.yy" 8327 8329 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8328 8330 break; … … 8331 8333 8332 8334 /* Line 1806 of yacc.c */ 8333 #line 23 77"parser.yy"8335 #line 2385 "parser.yy" 8334 8336 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8335 8337 break; … … 8338 8340 8339 8341 /* Line 1806 of yacc.c */ 8340 #line 238 0"parser.yy"8342 #line 2388 "parser.yy" 8341 8343 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8342 8344 break; … … 8345 8347 8346 8348 /* Line 1806 of yacc.c */ 8347 #line 23 82"parser.yy"8349 #line 2390 "parser.yy" 8348 8350 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8349 8351 break; … … 8352 8354 8353 8355 /* Line 1806 of yacc.c */ 8354 #line 23 87"parser.yy"8356 #line 2395 "parser.yy" 8355 8357 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8356 8358 break; … … 8359 8361 8360 8362 /* Line 1806 of yacc.c */ 8361 #line 23 89"parser.yy"8363 #line 2397 "parser.yy" 8362 8364 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8363 8365 break; … … 8366 8368 8367 8369 /* Line 1806 of yacc.c */ 8368 #line 239 1"parser.yy"8370 #line 2399 "parser.yy" 8369 8371 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8370 8372 break; … … 8373 8375 8374 8376 /* Line 1806 of yacc.c */ 8375 #line 2 396"parser.yy"8377 #line 2404 "parser.yy" 8376 8378 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8377 8379 break; … … 8380 8382 8381 8383 /* Line 1806 of yacc.c */ 8382 #line 2 398"parser.yy"8384 #line 2406 "parser.yy" 8383 8385 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8384 8386 break; … … 8387 8389 8388 8390 /* Line 1806 of yacc.c */ 8389 #line 240 0"parser.yy"8391 #line 2408 "parser.yy" 8390 8392 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8391 8393 break; … … 8394 8396 8395 8397 /* Line 1806 of yacc.c */ 8396 #line 24 02"parser.yy"8398 #line 2410 "parser.yy" 8397 8399 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8398 8400 break; … … 8401 8403 8402 8404 /* Line 1806 of yacc.c */ 8403 #line 24 07"parser.yy"8405 #line 2415 "parser.yy" 8404 8406 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8405 8407 break; … … 8408 8410 8409 8411 /* Line 1806 of yacc.c */ 8410 #line 24 09"parser.yy"8412 #line 2417 "parser.yy" 8411 8413 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8412 8414 break; … … 8415 8417 8416 8418 /* Line 1806 of yacc.c */ 8417 #line 241 1"parser.yy"8419 #line 2419 "parser.yy" 8418 8420 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8419 8421 break; … … 8422 8424 8423 8425 /* Line 1806 of yacc.c */ 8424 #line 24 42"parser.yy"8426 #line 2450 "parser.yy" 8425 8427 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8426 8428 break; … … 8429 8431 8430 8432 /* Line 1806 of yacc.c */ 8431 #line 24 45"parser.yy"8433 #line 2453 "parser.yy" 8432 8434 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8433 8435 break; … … 8436 8438 8437 8439 /* Line 1806 of yacc.c */ 8438 #line 24 47"parser.yy"8440 #line 2455 "parser.yy" 8439 8441 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8440 8442 break; … … 8443 8445 8444 8446 /* Line 1806 of yacc.c */ 8445 #line 24 52"parser.yy"8447 #line 2460 "parser.yy" 8446 8448 { 8447 8449 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8453 8455 8454 8456 /* Line 1806 of yacc.c */ 8455 #line 24 57"parser.yy"8457 #line 2465 "parser.yy" 8456 8458 { 8457 8459 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8463 8465 8464 8466 /* Line 1806 of yacc.c */ 8465 #line 24 65"parser.yy"8467 #line 2473 "parser.yy" 8466 8468 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8467 8469 break; … … 8470 8472 8471 8473 /* Line 1806 of yacc.c */ 8472 #line 24 67"parser.yy"8474 #line 2475 "parser.yy" 8473 8475 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8474 8476 break; … … 8477 8479 8478 8480 /* Line 1806 of yacc.c */ 8479 #line 24 69"parser.yy"8481 #line 2477 "parser.yy" 8480 8482 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8481 8483 break; … … 8484 8486 8485 8487 /* Line 1806 of yacc.c */ 8486 #line 24 74"parser.yy"8488 #line 2482 "parser.yy" 8487 8489 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8488 8490 break; … … 8491 8493 8492 8494 /* Line 1806 of yacc.c */ 8493 #line 24 76"parser.yy"8495 #line 2484 "parser.yy" 8494 8496 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8495 8497 break; … … 8498 8500 8499 8501 /* Line 1806 of yacc.c */ 8500 #line 248 1"parser.yy"8502 #line 2489 "parser.yy" 8501 8503 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8502 8504 break; … … 8505 8507 8506 8508 /* Line 1806 of yacc.c */ 8507 #line 24 83"parser.yy"8509 #line 2491 "parser.yy" 8508 8510 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8509 8511 break; … … 8512 8514 8513 8515 /* Line 1806 of yacc.c */ 8514 #line 2 498"parser.yy"8516 #line 2506 "parser.yy" 8515 8517 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8516 8518 break; … … 8519 8521 8520 8522 /* Line 1806 of yacc.c */ 8521 #line 250 0"parser.yy"8523 #line 2508 "parser.yy" 8522 8524 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8523 8525 break; … … 8526 8528 8527 8529 /* Line 1806 of yacc.c */ 8528 #line 25 05"parser.yy"8530 #line 2513 "parser.yy" 8529 8531 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8530 8532 break; … … 8533 8535 8534 8536 /* Line 1806 of yacc.c */ 8535 #line 25 07"parser.yy"8537 #line 2515 "parser.yy" 8536 8538 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8537 8539 break; … … 8540 8542 8541 8543 /* Line 1806 of yacc.c */ 8542 #line 25 09"parser.yy"8544 #line 2517 "parser.yy" 8543 8545 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8544 8546 break; … … 8547 8549 8548 8550 /* Line 1806 of yacc.c */ 8549 #line 251 1"parser.yy"8551 #line 2519 "parser.yy" 8550 8552 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8551 8553 break; … … 8554 8556 8555 8557 /* Line 1806 of yacc.c */ 8556 #line 25 13"parser.yy"8558 #line 2521 "parser.yy" 8557 8559 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8558 8560 break; … … 8561 8563 8562 8564 /* Line 1806 of yacc.c */ 8563 #line 25 19"parser.yy"8565 #line 2527 "parser.yy" 8564 8566 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8565 8567 break; … … 8568 8570 8569 8571 /* Line 1806 of yacc.c */ 8570 #line 252 1"parser.yy"8572 #line 2529 "parser.yy" 8571 8573 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8572 8574 break; … … 8575 8577 8576 8578 /* Line 1806 of yacc.c */ 8577 #line 25 23"parser.yy"8579 #line 2531 "parser.yy" 8578 8580 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8579 8581 break; … … 8582 8584 8583 8585 /* Line 1806 of yacc.c */ 8584 #line 25 28"parser.yy"8586 #line 2536 "parser.yy" 8585 8587 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8586 8588 break; … … 8589 8591 8590 8592 /* Line 1806 of yacc.c */ 8591 #line 253 0"parser.yy"8593 #line 2538 "parser.yy" 8592 8594 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8593 8595 break; … … 8596 8598 8597 8599 /* Line 1806 of yacc.c */ 8598 #line 25 32"parser.yy"8600 #line 2540 "parser.yy" 8599 8601 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8600 8602 break; … … 8603 8605 8604 8606 /* Line 1806 of yacc.c */ 8605 #line 25 38"parser.yy"8607 #line 2546 "parser.yy" 8606 8608 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8607 8609 break; … … 8610 8612 8611 8613 /* Line 1806 of yacc.c */ 8612 #line 254 0"parser.yy"8614 #line 2548 "parser.yy" 8613 8615 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8614 8616 break; … … 8617 8619 8618 8620 /* Line 1806 of yacc.c */ 8619 #line 25 46"parser.yy"8621 #line 2554 "parser.yy" 8620 8622 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8621 8623 break; … … 8624 8626 8625 8627 /* Line 1806 of yacc.c */ 8626 #line 25 48"parser.yy"8628 #line 2556 "parser.yy" 8627 8629 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8628 8630 break; … … 8631 8633 8632 8634 /* Line 1806 of yacc.c */ 8633 #line 255 0"parser.yy"8635 #line 2558 "parser.yy" 8634 8636 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8635 8637 break; … … 8638 8640 8639 8641 /* Line 1806 of yacc.c */ 8640 #line 25 52"parser.yy"8642 #line 2560 "parser.yy" 8641 8643 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8642 8644 break; … … 8645 8647 8646 8648 /* Line 1806 of yacc.c */ 8647 #line 25 67"parser.yy"8649 #line 2575 "parser.yy" 8648 8650 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8649 8651 break; … … 8652 8654 8653 8655 /* Line 1806 of yacc.c */ 8654 #line 25 69"parser.yy"8656 #line 2577 "parser.yy" 8655 8657 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8656 8658 break; … … 8659 8661 8660 8662 /* Line 1806 of yacc.c */ 8661 #line 25 74"parser.yy"8663 #line 2582 "parser.yy" 8662 8664 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8663 8665 break; … … 8666 8668 8667 8669 /* Line 1806 of yacc.c */ 8668 #line 25 76"parser.yy"8670 #line 2584 "parser.yy" 8669 8671 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8670 8672 break; … … 8673 8675 8674 8676 /* Line 1806 of yacc.c */ 8675 #line 25 78"parser.yy"8677 #line 2586 "parser.yy" 8676 8678 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8677 8679 break; … … 8680 8682 8681 8683 /* Line 1806 of yacc.c */ 8682 #line 258 0"parser.yy"8684 #line 2588 "parser.yy" 8683 8685 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8684 8686 break; … … 8687 8689 8688 8690 /* Line 1806 of yacc.c */ 8689 #line 25 82"parser.yy"8691 #line 2590 "parser.yy" 8690 8692 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8691 8693 break; … … 8694 8696 8695 8697 /* Line 1806 of yacc.c */ 8696 #line 25 88"parser.yy"8698 #line 2596 "parser.yy" 8697 8699 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8698 8700 break; … … 8701 8703 8702 8704 /* Line 1806 of yacc.c */ 8703 #line 259 0"parser.yy"8705 #line 2598 "parser.yy" 8704 8706 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8705 8707 break; … … 8708 8710 8709 8711 /* Line 1806 of yacc.c */ 8710 #line 2 592"parser.yy"8712 #line 2600 "parser.yy" 8711 8713 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8712 8714 break; … … 8715 8717 8716 8718 /* Line 1806 of yacc.c */ 8717 #line 2 597"parser.yy"8719 #line 2605 "parser.yy" 8718 8720 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8719 8721 break; … … 8722 8724 8723 8725 /* Line 1806 of yacc.c */ 8724 #line 2 599"parser.yy"8726 #line 2607 "parser.yy" 8725 8727 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8726 8728 break; … … 8729 8731 8730 8732 /* Line 1806 of yacc.c */ 8731 #line 260 1"parser.yy"8733 #line 2609 "parser.yy" 8732 8734 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8733 8735 break; … … 8736 8738 8737 8739 /* Line 1806 of yacc.c */ 8738 #line 26 08"parser.yy"8740 #line 2616 "parser.yy" 8739 8741 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8740 8742 break; … … 8743 8745 8744 8746 /* Line 1806 of yacc.c */ 8745 #line 26 19"parser.yy"8747 #line 2627 "parser.yy" 8746 8748 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8747 8749 break; … … 8750 8752 8751 8753 /* Line 1806 of yacc.c */ 8752 #line 26 22"parser.yy"8754 #line 2630 "parser.yy" 8753 8755 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8754 8756 break; … … 8757 8759 8758 8760 /* Line 1806 of yacc.c */ 8759 #line 26 24"parser.yy"8761 #line 2632 "parser.yy" 8760 8762 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8761 8763 break; … … 8764 8766 8765 8767 /* Line 1806 of yacc.c */ 8766 #line 26 27"parser.yy"8768 #line 2635 "parser.yy" 8767 8769 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8768 8770 break; … … 8771 8773 8772 8774 /* Line 1806 of yacc.c */ 8773 #line 26 29"parser.yy"8775 #line 2637 "parser.yy" 8774 8776 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8775 8777 break; … … 8778 8780 8779 8781 /* Line 1806 of yacc.c */ 8780 #line 263 1"parser.yy"8782 #line 2639 "parser.yy" 8781 8783 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8782 8784 break; … … 8785 8787 8786 8788 /* Line 1806 of yacc.c */ 8787 #line 26 45"parser.yy"8789 #line 2653 "parser.yy" 8788 8790 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8789 8791 break; … … 8792 8794 8793 8795 /* Line 1806 of yacc.c */ 8794 #line 26 47"parser.yy"8796 #line 2655 "parser.yy" 8795 8797 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8796 8798 break; … … 8799 8801 8800 8802 /* Line 1806 of yacc.c */ 8801 #line 26 52"parser.yy"8803 #line 2660 "parser.yy" 8802 8804 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8803 8805 break; … … 8806 8808 8807 8809 /* Line 1806 of yacc.c */ 8808 #line 26 54"parser.yy"8810 #line 2662 "parser.yy" 8809 8811 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8810 8812 break; … … 8813 8815 8814 8816 /* Line 1806 of yacc.c */ 8815 #line 26 56"parser.yy"8817 #line 2664 "parser.yy" 8816 8818 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8817 8819 break; … … 8820 8822 8821 8823 /* Line 1806 of yacc.c */ 8822 #line 26 58"parser.yy"8824 #line 2666 "parser.yy" 8823 8825 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8824 8826 break; … … 8827 8829 8828 8830 /* Line 1806 of yacc.c */ 8829 #line 266 0"parser.yy"8831 #line 2668 "parser.yy" 8830 8832 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8831 8833 break; … … 8834 8836 8835 8837 /* Line 1806 of yacc.c */ 8836 #line 26 66"parser.yy"8838 #line 2674 "parser.yy" 8837 8839 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8838 8840 break; … … 8841 8843 8842 8844 /* Line 1806 of yacc.c */ 8843 #line 26 68"parser.yy"8845 #line 2676 "parser.yy" 8844 8846 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8845 8847 break; … … 8848 8850 8849 8851 /* Line 1806 of yacc.c */ 8850 #line 267 0"parser.yy"8852 #line 2678 "parser.yy" 8851 8853 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8852 8854 break; … … 8855 8857 8856 8858 /* Line 1806 of yacc.c */ 8857 #line 26 75"parser.yy"8859 #line 2683 "parser.yy" 8858 8860 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8859 8861 break; … … 8862 8864 8863 8865 /* Line 1806 of yacc.c */ 8864 #line 26 77"parser.yy"8866 #line 2685 "parser.yy" 8865 8867 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8866 8868 break; … … 8869 8871 8870 8872 /* Line 1806 of yacc.c */ 8871 #line 26 87"parser.yy"8873 #line 2695 "parser.yy" 8872 8874 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8873 8875 break; 8874 8876 8875 8877 case 706: 8876 8877 /* Line 1806 of yacc.c */8878 #line 2697 "parser.yy"8879 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }8880 break;8881 8882 case 707:8883 8884 /* Line 1806 of yacc.c */8885 #line 2699 "parser.yy"8886 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }8887 break;8888 8889 case 708:8890 8891 /* Line 1806 of yacc.c */8892 #line 2701 "parser.yy"8893 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }8894 break;8895 8896 case 709:8897 8898 /* Line 1806 of yacc.c */8899 #line 2703 "parser.yy"8900 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }8901 break;8902 8903 case 710:8904 8878 8905 8879 /* Line 1806 of yacc.c */ … … 8908 8882 break; 8909 8883 8910 case 7 11:8884 case 707: 8911 8885 8912 8886 /* Line 1806 of yacc.c */ … … 8915 8889 break; 8916 8890 8891 case 708: 8892 8893 /* Line 1806 of yacc.c */ 8894 #line 2709 "parser.yy" 8895 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8896 break; 8897 8898 case 709: 8899 8900 /* Line 1806 of yacc.c */ 8901 #line 2711 "parser.yy" 8902 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8903 break; 8904 8905 case 710: 8906 8907 /* Line 1806 of yacc.c */ 8908 #line 2713 "parser.yy" 8909 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8910 break; 8911 8912 case 711: 8913 8914 /* Line 1806 of yacc.c */ 8915 #line 2715 "parser.yy" 8916 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8917 break; 8918 8917 8919 case 712: 8918 8920 8919 8921 /* Line 1806 of yacc.c */ 8920 #line 27 14"parser.yy"8922 #line 2722 "parser.yy" 8921 8923 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8922 8924 break; … … 8925 8927 8926 8928 /* Line 1806 of yacc.c */ 8927 #line 27 16"parser.yy"8929 #line 2724 "parser.yy" 8928 8930 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8929 8931 break; … … 8932 8934 8933 8935 /* Line 1806 of yacc.c */ 8934 #line 27 18"parser.yy"8936 #line 2726 "parser.yy" 8935 8937 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8936 8938 break; … … 8939 8941 8940 8942 /* Line 1806 of yacc.c */ 8941 #line 272 0"parser.yy"8943 #line 2728 "parser.yy" 8942 8944 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8943 8945 break; … … 8946 8948 8947 8949 /* Line 1806 of yacc.c */ 8948 #line 27 22"parser.yy"8950 #line 2730 "parser.yy" 8949 8951 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8950 8952 break; … … 8953 8955 8954 8956 /* Line 1806 of yacc.c */ 8955 #line 27 24"parser.yy"8957 #line 2732 "parser.yy" 8956 8958 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8957 8959 break; … … 8960 8962 8961 8963 /* Line 1806 of yacc.c */ 8962 #line 27 26"parser.yy"8964 #line 2734 "parser.yy" 8963 8965 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8964 8966 break; … … 8967 8969 8968 8970 /* Line 1806 of yacc.c */ 8969 #line 27 28"parser.yy"8971 #line 2736 "parser.yy" 8970 8972 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8971 8973 break; … … 8974 8976 8975 8977 /* Line 1806 of yacc.c */ 8976 #line 273 0"parser.yy"8978 #line 2738 "parser.yy" 8977 8979 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8978 8980 break; … … 8981 8983 8982 8984 /* Line 1806 of yacc.c */ 8983 #line 27 32"parser.yy"8985 #line 2740 "parser.yy" 8984 8986 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8985 8987 break; … … 8988 8990 8989 8991 /* Line 1806 of yacc.c */ 8990 #line 27 37"parser.yy"8992 #line 2745 "parser.yy" 8991 8993 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8992 8994 break; … … 8995 8997 8996 8998 /* Line 1806 of yacc.c */ 8997 #line 27 39"parser.yy"8999 #line 2747 "parser.yy" 8998 9000 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8999 9001 break; … … 9002 9004 9003 9005 /* Line 1806 of yacc.c */ 9004 #line 27 44"parser.yy"9006 #line 2752 "parser.yy" 9005 9007 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9006 9008 break; … … 9009 9011 9010 9012 /* Line 1806 of yacc.c */ 9011 #line 27 46"parser.yy"9013 #line 2754 "parser.yy" 9012 9014 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9013 9015 break; … … 9016 9018 9017 9019 /* Line 1806 of yacc.c */ 9018 #line 27 73"parser.yy"9020 #line 2781 "parser.yy" 9019 9021 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9020 9022 break; 9021 9023 9022 9024 case 731: 9023 9024 /* Line 1806 of yacc.c */9025 #line 2784 "parser.yy"9026 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9027 break;9028 9029 case 732:9030 9031 /* Line 1806 of yacc.c */9032 #line 2786 "parser.yy"9033 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9034 break;9035 9036 case 733:9037 9038 /* Line 1806 of yacc.c */9039 #line 2788 "parser.yy"9040 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9041 break;9042 9043 case 734:9044 9045 /* Line 1806 of yacc.c */9046 #line 2790 "parser.yy"9047 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9048 break;9049 9050 case 735:9051 9025 9052 9026 /* Line 1806 of yacc.c */ … … 9055 9029 break; 9056 9030 9057 case 73 6:9031 case 732: 9058 9032 9059 9033 /* Line 1806 of yacc.c */ … … 9062 9036 break; 9063 9037 9038 case 733: 9039 9040 /* Line 1806 of yacc.c */ 9041 #line 2796 "parser.yy" 9042 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9043 break; 9044 9045 case 734: 9046 9047 /* Line 1806 of yacc.c */ 9048 #line 2798 "parser.yy" 9049 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9050 break; 9051 9052 case 735: 9053 9054 /* Line 1806 of yacc.c */ 9055 #line 2800 "parser.yy" 9056 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9057 break; 9058 9059 case 736: 9060 9061 /* Line 1806 of yacc.c */ 9062 #line 2802 "parser.yy" 9063 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9064 break; 9065 9064 9066 case 737: 9065 9067 9066 9068 /* Line 1806 of yacc.c */ 9067 #line 280 1"parser.yy"9069 #line 2809 "parser.yy" 9068 9070 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9069 9071 break; … … 9072 9074 9073 9075 /* Line 1806 of yacc.c */ 9074 #line 28 03"parser.yy"9076 #line 2811 "parser.yy" 9075 9077 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9076 9078 break; … … 9079 9081 9080 9082 /* Line 1806 of yacc.c */ 9081 #line 28 05"parser.yy"9083 #line 2813 "parser.yy" 9082 9084 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9083 9085 break; … … 9086 9088 9087 9089 /* Line 1806 of yacc.c */ 9088 #line 28 07"parser.yy"9090 #line 2815 "parser.yy" 9089 9091 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9090 9092 break; … … 9093 9095 9094 9096 /* Line 1806 of yacc.c */ 9095 #line 28 09"parser.yy"9097 #line 2817 "parser.yy" 9096 9098 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9097 9099 break; … … 9100 9102 9101 9103 /* Line 1806 of yacc.c */ 9102 #line 281 1"parser.yy"9104 #line 2819 "parser.yy" 9103 9105 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9104 9106 break; … … 9107 9109 9108 9110 /* Line 1806 of yacc.c */ 9109 #line 28 16"parser.yy"9111 #line 2824 "parser.yy" 9110 9112 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9111 9113 break; … … 9114 9116 9115 9117 /* Line 1806 of yacc.c */ 9116 #line 282 1"parser.yy"9118 #line 2829 "parser.yy" 9117 9119 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9118 9120 break; … … 9121 9123 9122 9124 /* Line 1806 of yacc.c */ 9123 #line 28 23"parser.yy"9125 #line 2831 "parser.yy" 9124 9126 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9125 9127 break; … … 9128 9130 9129 9131 /* Line 1806 of yacc.c */ 9130 #line 28 25"parser.yy"9132 #line 2833 "parser.yy" 9131 9133 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9132 9134 break; … … 9135 9137 9136 9138 /* Line 1806 of yacc.c */ 9137 #line 28 49"parser.yy"9139 #line 2857 "parser.yy" 9138 9140 { (yyval.en) = 0; } 9139 9141 break; … … 9142 9144 9143 9145 /* Line 1806 of yacc.c */ 9144 #line 285 1"parser.yy"9146 #line 2859 "parser.yy" 9145 9147 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9146 9148 break; … … 9149 9151 9150 9152 /* Line 1806 of yacc.c */ 9151 #line 915 2"Parser/parser.cc"9153 #line 9154 "Parser/parser.cc" 9152 9154 default: break; 9153 9155 } … … 9380 9382 9381 9383 /* Line 2067 of yacc.c */ 9382 #line 28 54"parser.yy"9384 #line 2862 "parser.yy" 9383 9385 9384 9386 // ----end of grammar---- -
TabularUnified src/Parser/parser.h ¶
r9c98156 ra563f01 272 272 StatementNode *sn; 273 273 ConstantExpr *constant; 274 ForCtl *fctl; 274 275 LabelNode *label; 275 276 InitializerNode *in; … … 280 281 281 282 /* Line 2068 of yacc.c */ 282 #line 28 3"Parser/parser.h"283 #line 284 "Parser/parser.h" 283 284 } YYSTYPE; 284 285 # define YYSTYPE_IS_TRIVIAL 1 -
TabularUnified src/Parser/parser.yy ¶
r9c98156 ra563f01 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 9 12:59:11201613 // Update Count : 18 2112 // Last Modified On : Wed Aug 10 13:09:53 2016 13 // Update Count : 1844 14 14 // 15 15 … … 122 122 StatementNode *sn; 123 123 ConstantExpr *constant; 124 ForCtl *fctl; 124 125 LabelNode *label; 125 126 InitializerNode *in; … … 142 143 %type<en> constant_expression assignment_expression assignment_expression_opt 143 144 %type<en> comma_expression comma_expression_opt 144 %type<en> argument_expression_list argument_expression for_control_expression assignment_opt 145 //%type<en> argument_expression_list argument_expression for_control_expression assignment_opt 146 %type<en> argument_expression_list argument_expression assignment_opt 147 %type<fctl> for_control_expression 145 148 %type<en> subrange 146 149 %type<en> asm_operands_opt asm_operands_list asm_operand … … 720 723 IF '(' comma_expression ')' statement %prec THEN 721 724 // explicitly deal with the shift/reduce conflict on if/else 722 { $$ = new StatementNode( StatementNode::If, $3, $5 ); } 725 //{ $$ = new StatementNode( StatementNode::If, $3, $5 ); } 726 { $$ = new StatementNode2( build_if( $3, $5, nullptr ) ); } 723 727 | IF '(' comma_expression ')' statement ELSE statement 724 { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); } 728 //{ $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); } 729 { $$ = new StatementNode2( build_if( $3, $5, $7 ) ); } 725 730 | SWITCH '(' comma_expression ')' case_clause // CFA 726 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); } 731 //{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); } 732 { $$ = new StatementNode2( build_switch( $3, $5 ) ); } 727 733 | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA 728 734 { 729 StatementNode *sw = new StatementNode ( StatementNode::Switch, $3, $8);735 StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) ); 730 736 // The semantics of the declaration list is changed to include associated initialization, which is performed 731 737 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 736 742 } 737 743 | CHOOSE '(' comma_expression ')' case_clause // CFA 738 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); } 744 //{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); } 745 { $$ = new StatementNode2( build_switch( $3, $5 ) ); } 739 746 | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA 740 747 { 741 StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 ); 748 //StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 ); 749 StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) ); 742 750 $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw; 743 751 } … … 820 828 iteration_statement: 821 829 WHILE '(' comma_expression ')' statement 822 { $$ = new StatementNode ( StatementNode::While, $3, $5); }830 { $$ = new StatementNode2( build_while( $3, $5 ) ); } 823 831 | DO statement WHILE '(' comma_expression ')' ';' 824 { $$ = new StatementNode ( StatementNode::Do, $5, $2); }832 { $$ = new StatementNode2( build_while( $5, $2 ) ); } 825 833 | FOR '(' push for_control_expression ')' statement 826 { $$ = new StatementNode ( StatementNode::For, $4, $6); }834 { $$ = new StatementNode2( build_for( $4, $6 ) ); } 827 835 ; 828 836 829 837 for_control_expression: 830 838 comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt 831 { $$ = new ForCtl ExprNode( $1, $4, $6 ); }839 { $$ = new ForCtl( $1, $4, $6 ); } 832 840 | declaration comma_expression_opt ';' comma_expression_opt // C99 833 { $$ = new ForCtl ExprNode( $1, $2, $4 ); }841 { $$ = new ForCtl( $1, $2, $4 ); } 834 842 ; 835 843 … … 946 954 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); } 947 955 | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';' 948 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }956 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); } 949 957 ; 950 958 -
TabularUnified src/tests/Makefile.in ¶
r9c98156 ra563f01 638 638 639 639 all-tests : 640 @+python test.py --all # '@' => do not echo command (SILENT), '+' =>640 @+python test.py --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 641 641 642 642 clean-local : -
TabularUnified src/tests/labelledExit.c ¶
r9c98156 ra563f01 1 // 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 // 4 // The contents of this file are covered under the licence agreement in the 5 // file "LICENCE" distributed with Cforall. 6 // 7 // labelledExit.c -- 8 // 9 // Author : Peter A. Buhr 10 // Created On : Wed Aug 10 07:29:39 2016 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 10 07:30:15 2016 13 // Update Count : 1 14 // 15 1 16 int foo() { 2 17 int i; … … 136 151 else 137 152 i += 1; 138 139 153 } 140 154 141 int main( int argc, char const *argv[]) {155 int main( int argc, char const *argv[] ) { 142 156 /* code */ 143 return 0;144 157 } 145 158 146 159 // Local Variables: // 147 160 // tab-width: 4 // 148 // compile-command: "cfa LabelledExit.c" //161 // compile-command: "cfa labelledExit.c" // 149 162 // End: //
Note: See TracChangeset
for help on using the changeset viewer.