Changes in src/Parser/parser.yy [948fdef:d912bed]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r948fdef rd912bed 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Feb 1 10:04:40 202013 // Update Count : 44 4012 // Last Modified On : Mon Dec 16 15:32:58 2019 13 // Update Count : 4409 14 14 // 15 15 … … 323 323 %type<op> ptrref_operator unary_operator assignment_operator 324 324 %type<en> primary_expression postfix_expression unary_expression 325 %type<en> cast_expression _list cast_expressionexponential_expression multiplicative_expression additive_expression325 %type<en> cast_expression exponential_expression multiplicative_expression additive_expression 326 326 %type<en> shift_expression relational_expression equality_expression 327 327 %type<en> AND_expression exclusive_OR_expression inclusive_OR_expression … … 579 579 | '(' compound_statement ')' // GCC, lambda expression 580 580 { $$ = new ExpressionNode( new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >($2) ) ) ); } 581 | constant '`' IDENTIFIER // CFA, postfix call 582 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); } 583 | string_literal '`' IDENTIFIER // CFA, postfix call 584 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); } 585 | IDENTIFIER '`' IDENTIFIER // CFA, postfix call 586 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( build_varref( $1 ) ) ) ); } 587 | tuple '`' IDENTIFIER // CFA, postfix call 588 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); } 589 | '(' comma_expression ')' '`' IDENTIFIER // CFA, postfix call 590 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $5 ) ), $2 ) ); } 581 591 | type_name '.' identifier // CFA, nested type 582 592 { SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; } … … 632 642 | postfix_expression '(' argument_expression_list ')' 633 643 { $$ = new ExpressionNode( build_func( $1, $3 ) ); } 634 | postfix_expression '`' identifier // CFA, postfix call635 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }636 | constant '`' identifier // CFA, postfix call637 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }638 | string_literal '`' identifier // CFA, postfix call639 { $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }640 644 | postfix_expression '.' identifier 641 645 { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); } … … 662 666 | '(' type_no_function ')' '@' '{' initializer_list_opt comma_opt '}' // CFA, explicit C compound-literal 663 667 { $$ = new ExpressionNode( build_compoundLiteral( $2, (new InitializerNode( $6, true ))->set_maybeConstructed( false ) ) ); } 664 | '^' primary_expression '{' argument_expression_list '}' // CFA , destructor call668 | '^' primary_expression '{' argument_expression_list '}' // CFA 665 669 { 666 670 Token fn; … … 675 679 | argument_expression 676 680 | argument_expression_list ',' argument_expression 677 { $$ = (ExpressionNode *)( $1->set_last( $3 )); }681 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } 678 682 ; 679 683 … … 687 691 field_name_list: // CFA, tuple field selector 688 692 field 689 | field_name_list ',' field { $$ = (ExpressionNode *) ($1->set_last( $3 )); }693 | field_name_list ',' field { $$ = (ExpressionNode *)$1->set_last( $3 ); } 690 694 ; 691 695 … … 956 960 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( $3 ) ) ); } 957 961 | '[' push assignment_expression pop ',' tuple_expression_list ']' 958 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *) ($3->set_last( $6 ) ) )); }962 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_last( $6 ) ) ); } 959 963 ; 960 964 … … 962 966 assignment_expression_opt 963 967 | tuple_expression_list ',' assignment_expression_opt 964 { $$ = (ExpressionNode *) ($1->set_last( $3 )); }968 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 965 969 ; 966 970 … … 1303 1307 WAITFOR '(' cast_expression ')' 1304 1308 { $$ = $3; } 1305 // | WAITFOR '(' cast_expression ',' argument_expression_list ')' 1306 // { $$ = (ExpressionNode *)$3->set_last( $5 ); } 1307 | WAITFOR '(' cast_expression_list ':' argument_expression_list ')' 1308 { $$ = (ExpressionNode *)($3->set_last( $5 )); } 1309 ; 1310 1311 cast_expression_list: 1312 cast_expression 1313 | cast_expression_list ',' cast_expression 1314 { $$ = (ExpressionNode *)($1->set_last( $3 )); } 1309 | WAITFOR '(' cast_expression ',' argument_expression_list ')' 1310 { $$ = (ExpressionNode *)$3->set_last( $5 ); } 1315 1311 ; 1316 1312 … … 1423 1419 asm_operand 1424 1420 | asm_operands_list ',' asm_operand 1425 { $$ = (ExpressionNode *) ($1->set_last( $3 )); }1421 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 1426 1422 ; 1427 1423 … … 1439 1435 { $$ = new ExpressionNode( $1 ); } 1440 1436 | asm_clobbers_list_opt ',' string_literal 1441 { $$ = (ExpressionNode *)($1->set_last( new ExpressionNode( $3 ) )); } 1437 // set_last returns ParseNode * 1438 { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); } 1442 1439 ; 1443 1440 … … 2362 2359 | initializer_list_opt ',' initializer { $$ = (InitializerNode *)( $1->set_last( $3 ) ); } 2363 2360 | initializer_list_opt ',' designation initializer 2364 { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) )); }2361 { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) ) ); } 2365 2362 ; 2366 2363 … … 2384 2381 designator 2385 2382 | designator_list designator 2386 { $$ = (ExpressionNode *)( $1->set_last( $2 )); }2383 { $$ = (ExpressionNode *)( $1->set_last( $2 ) ); } 2387 2384 //| designator_list designator { $$ = new ExpressionNode( $1, $2 ); } 2388 2385 ; … … 2481 2478 { SemanticError( yylloc, toString("Expression generic parameters are currently unimplemented: ", $1->build()) ); $$ = nullptr; } 2482 2479 | type_list ',' type 2483 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( new TypeExpr( maybeMoveBuildType( $3 ) ) ) )); }2480 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( new TypeExpr( maybeMoveBuildType( $3 ) ) ) ) ); } 2484 2481 | type_list ',' assignment_expression 2485 2482 { SemanticError( yylloc, toString("Expression generic parameters are currently unimplemented: ", $3->build()) ); $$ = nullptr; }
Note:
See TracChangeset
for help on using the changeset viewer.