Changes in src/Parser/parser.yy [db70fe4:ea0c5e3]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
rdb70fe4 rea0c5e3 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Sep 14 23:07:12201713 // Update Count : 2 81512 // Last Modified On : Mon Sep 11 18:12:00 2017 13 // Update Count : 2787 14 14 // 15 15 … … 56 56 #include "LinkageSpec.h" 57 57 #include "Common/SemanticError.h" // error_str 58 #include "Common/utility.h" // for maybeMoveBuild, maybeBuild, CodeLo...59 58 60 59 extern DeclarationNode * parseTree; … … 439 438 { $$ = $2; } 440 439 | '(' compound_statement ')' // GCC, lambda expression 441 { $$ = new ExpressionNode( new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >($2) )) ); }440 { $$ = new ExpressionNode( build_valexpr( $2 ) ); } 442 441 | primary_expression '{' argument_expression_list '}' // CFA, constructor call 443 442 { … … 563 562 switch ( $1 ) { 564 563 case OperKinds::AddressOf: 565 $$ = new ExpressionNode( new AddressExpr( maybeMoveBuild< Expression >( $2 )) );564 $$ = new ExpressionNode( build_addressOf( $2 ) ); 566 565 break; 567 566 case OperKinds::PointTo: … … 569 568 break; 570 569 case OperKinds::And: 571 $$ = new ExpressionNode( new AddressExpr( new AddressExpr( maybeMoveBuild< Expression >( $2 )) ) );570 $$ = new ExpressionNode( new AddressExpr( build_addressOf( $2 ) ) ); 572 571 break; 573 572 default: … … 582 581 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); } 583 582 | SIZEOF unary_expression 584 { $$ = new ExpressionNode( new SizeofExpr( maybeMoveBuild< Expression >( $2 )) ); }583 { $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); } 585 584 | SIZEOF '(' type_no_function ')' 586 { $$ = new ExpressionNode( new SizeofExpr( maybeMoveBuildType( $3 )) ); }585 { $$ = new ExpressionNode( build_sizeOftype( $3 ) ); } 587 586 | ALIGNOF unary_expression // GCC, variable alignment 588 { $$ = new ExpressionNode( new AlignofExpr( maybeMoveBuild< Expression >( $2 )) ); }587 { $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); } 589 588 | ALIGNOF '(' type_no_function ')' // GCC, type alignment 590 { $$ = new ExpressionNode( new AlignofExpr( maybeMoveBuildType( $3 )) ); }589 { $$ = new ExpressionNode( build_alignOftype( $3 ) ); } 591 590 | OFFSETOF '(' type_no_function ',' no_attr_identifier ')' 592 591 { $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); } 593 592 | ATTR_IDENTIFIER 594 { $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuild< Expression >( (ExpressionNode *)nullptr )) ); }593 { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), nullptr ) ); } 595 594 | ATTR_IDENTIFIER '(' argument_expression ')' 596 { $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuild< Expression >( $3 )) ); }595 { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); } 597 596 | ATTR_IDENTIFIER '(' type ')' 598 { $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuildType( $3 )) ); }597 { $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); } 599 598 ; 600 599 … … 619 618 // VIRTUAL cannot be opt because of look ahead issues 620 619 | '(' VIRTUAL ')' cast_expression 621 { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $4 ), maybeMoveBuildType( nullptr )) ); }620 { $$ = new ExpressionNode( build_virtual_cast( nullptr, $4 ) ); } 622 621 | '(' VIRTUAL type_no_function ')' cast_expression 623 { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $5 ), maybeMoveBuildType( $3 )) ); }622 { $$ = new ExpressionNode( build_virtual_cast( $3, $5 ) ); } 624 623 // | '(' type_no_function ')' tuple 625 624 // { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } … … 772 771 assignment_expression 773 772 | comma_expression ',' assignment_expression 774 { $$ = new ExpressionNode( new CommaExpr( maybeMoveBuild< Expression >( $1 ), maybeMoveBuild< Expression >( $3 )) ); }773 { $$ = new ExpressionNode( build_comma( $1, $3 ) ); } 775 774 ; 776 775 … … 895 894 constant_expression { $$ = $1; } 896 895 | constant_expression ELLIPSIS constant_expression // GCC, subrange 897 { $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $1 ), maybeMoveBuild< Expression >( $3 )) ); }896 { $$ = new ExpressionNode( build_range( $1, $3 ) ); } 898 897 | subrange // CFA, subrange 899 898 ; … … 1155 1154 asm_operand: // GCC 1156 1155 string_literal '(' constant_expression ')' 1157 { $$ = new ExpressionNode( new AsmExpr( maybeMoveBuild< Expression >( (ExpressionNode *)nullptr ), $1, maybeMoveBuild< Expression >( $3 )) ); }1156 { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); } 1158 1157 | '[' constant_expression ']' string_literal '(' constant_expression ')' 1159 { $$ = new ExpressionNode( new AsmExpr( maybeMoveBuild< Expression >( $2 ), $4, maybeMoveBuild< Expression >( $6 )) ); }1158 { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); } 1160 1159 ; 1161 1160 … … 1166 1165 { $$ = new ExpressionNode( $1 ); } 1167 1166 | asm_clobbers_list_opt ',' string_literal 1168 // set_last return sParseNode *1167 // set_last return ParseNode * 1169 1168 { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); } 1170 1169 ; … … 2089 2088 { $$ = $3; } 2090 2089 | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements 2091 { $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $3 ), maybeMoveBuild< Expression >( $5 )) ); }2090 { $$ = new ExpressionNode( build_range( $3, $5 ) ); } 2092 2091 | '.' '[' push field_list pop ']' // CFA, tuple field selector 2093 2092 { $$ = $4; } … … 2166 2165 type_list: // CFA 2167 2166 type 2168 { $$ = new ExpressionNode( new TypeExpr( maybeMoveBuildType( $1 )) ); }2167 { $$ = new ExpressionNode( build_typevalue( $1 ) ); } 2169 2168 | assignment_expression 2170 2169 | type_list ',' type 2171 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( new TypeExpr( maybeMoveBuildType( $3 )) ) ) ); }2170 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); } 2172 2171 | type_list ',' assignment_expression 2173 2172 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } … … 2407 2406 subrange: 2408 2407 constant_expression '~' constant_expression // CFA, integer subrange 2409 { $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $1 ), maybeMoveBuild< Expression >( $3 )) ); }2408 { $$ = new ExpressionNode( build_range( $1, $3 ) ); } 2410 2409 ; 2411 2410
Note:
See TracChangeset
for help on using the changeset viewer.