Changes in src/Parser/parser.yy [6d2b3dc:01afd8d]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r6d2b3dc r01afd8d 275 275 } // forCtrl 276 276 277 ForCtrl * enumRangeCtrl( ExpressionNode * index_expr, OperKinds compop, ExpressionNode * range_over_expr, DeclarationNode * type ) { 278 assert( compop == OperKinds::LEThan || compop == OperKinds::GEThan ); 277 ForCtrl * enumRangeCtrl( ExpressionNode * index_expr, __attribute__((unused)) OperKinds compop, ExpressionNode * range_over_expr ) { 279 278 if ( auto identifier = dynamic_cast<ast::NameExpr *>(index_expr->expr.get()) ) { 280 DeclarationNode * indexDecl = 281 DeclarationNode::newName( new std::string(identifier->name) )->addType( type);282 return new ForCtrl( new StatementNode( indexDecl ), range_over_expr , compop);279 DeclarationNode * indexDecl = DeclarationNode::newName( new std::string(identifier->name) ); 280 assert( range_over_expr ); 281 return new ForCtrl( new StatementNode( indexDecl ), range_over_expr ); 283 282 } else { 284 283 SemanticError( yylloc, MISSING_LOOP_INDEX ); return nullptr; … … 1606 1605 { SemanticError( yylloc, "illegal syntax, missing low/high value for ascending/descending range so index is uninitialized." ); $$ = nullptr; } 1607 1606 1608 | comma_expression ';' type_type_specifier// CFA, enum type1609 { 1610 $$ = enumRangeCtrl( $1, OperKinds::LEThan, new ExpressionNode( new ast::TypeExpr( yylloc, $3-> clone()->buildType() ) ), $3);1607 | comma_expression ';' enum_key // CFA, enum type 1608 { 1609 $$ = enumRangeCtrl( $1, OperKinds::LEThan, new ExpressionNode( new ast::TypeExpr( yylloc, $3->buildType() ) ) ); 1611 1610 } 1612 1611 | comma_expression ';' downupdowneq enum_key // CFA, enum type, reverse direction … … 1616 1615 $3 = OperKinds::GEThan; 1617 1616 } // if 1618 $$ = enumRangeCtrl( $1, $3, new ExpressionNode( new ast::TypeExpr( yylloc, $4-> clone()->buildType() ) ), $4);1617 $$ = enumRangeCtrl( $1, $3, new ExpressionNode( new ast::TypeExpr( yylloc, $4->buildType() ) ) ); 1619 1618 } 1620 1619 ; … … 1622 1621 enum_key: 1623 1622 type_name 1624 { typedefTable.makeTypedef( *$1->symbolic.name, "enum_type_nobody 1" ); 1625 $$ = DeclarationNode::newEnum( $1->symbolic.name, nullptr, false, false ); } 1623 { $$ = DeclarationNode::newEnum( $1->symbolic.name, nullptr, false, false ); } 1626 1624 | ENUM identifier 1627 { typedefTable.makeTypedef( *$2, "enum_type_nobody 2" ); 1628 $$ = DeclarationNode::newEnum( $2, nullptr, false, false ); } 1625 { $$ = DeclarationNode::newEnum( $2, nullptr, false, false ); } 1629 1626 | ENUM type_name 1630 { typedefTable.makeTypedef( *$2->symbolic.name, "enum_type_nobody 3" ); 1631 $$ = DeclarationNode::newEnum( $2->symbolic.name, nullptr, false, false ); } 1627 { $$ = DeclarationNode::newEnum( $2->symbolic.name, nullptr, false, false ); } 1632 1628 ; 1633 1629
Note:
See TracChangeset
for help on using the changeset viewer.