Changeset 1ca15c1 for src/Parser/parser.yy
- Timestamp:
- Aug 12, 2016, 9:56:23 AM (8 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:
- 38736854, bf1a2bf, dac593fd
- Parents:
- 5a11e07 (diff), 8cc5cb0 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r5a11e07 r1ca15c1 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 10 23:03:05201613 // Update Count : 18 4612 // Last Modified On : Thu Aug 11 18:02:57 2016 13 // Update Count : 1861 14 14 // 15 15 … … 665 665 Token fn; 666 666 fn.str = new std::string( "^?{}" ); // location undefined 667 $$ = new StatementNode ( StatementNode::Exp, new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0);667 $$ = new StatementNode2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ) ) ); 668 668 } 669 669 ; … … 717 717 expression_statement: 718 718 comma_expression_opt ';' 719 { $$ = new StatementNode ( StatementNode::Exp, $1, 0); }719 { $$ = new StatementNode2( build_expr( $1 ) ); } 720 720 ; 721 721 … … 758 758 759 759 case_value_list: // CFA 760 case_value { $$ = new StatementNode( StatementNode::Case, $1, 0 ); } 760 //case_value { $$ = new StatementNode( StatementNode::Case, $1, 0 ); } 761 case_value { $$ = new StatementNode2( build_case( $1 ) ); } 761 762 // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5" 762 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_link( new StatementNode ( StatementNode::Case, $3, 0) ) ); }763 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_link( new StatementNode2( build_case( $3 ) ) ) ); } 763 764 ; 764 765 765 766 case_label: // CFA 766 767 CASE case_value_list ':' { $$ = $2; } 767 | DEFAULT ':' { $$ = new StatementNode ( StatementNode::Default); }768 | DEFAULT ':' { $$ = new StatementNode2( build_default() ); } 768 769 // A semantic check is required to ensure only one default clause per switch/choose statement. 769 770 ; … … 810 811 fall_through_opt: // CFA 811 812 // empty 812 { $$ = new StatementNode ( StatementNode::Break ); }// insert implicit break813 { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); } // insert implicit break 813 814 | fall_through 814 815 ; … … 839 840 jump_statement: 840 841 GOTO IDENTIFIER ';' 841 //{ $$ = new StatementNode( StatementNode::Goto, $2 ); }842 842 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Goto ) ); } 843 843 | GOTO '*' comma_expression ';' // GCC, computed goto 844 844 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3); 845 845 // whereas normal operator precedence yields goto (*i)+3; 846 { $$ = new StatementNode ( StatementNode::Goto, $3); }846 { $$ = new StatementNode2( build_computedgoto( $3 ) ); } 847 847 | CONTINUE ';' 848 848 // A semantic check is required to ensure this statement appears only in the body of an iteration statement. 849 //{ $$ = new StatementNode( StatementNode::Continue ); }850 849 { $$ = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); } 851 850 | CONTINUE IDENTIFIER ';' // CFA, multi-level continue 852 851 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 853 852 // the target of the transfer appears only at the start of an iteration statement. 854 //{ $$ = new StatementNode( StatementNode::Continue, $2 ); }855 853 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Continue ) ); delete $2; } 856 854 | BREAK ';' 857 855 // A semantic check is required to ensure this statement appears only in the body of an iteration statement. 858 //{ $$ = new StatementNode( StatementNode::Break ); }859 856 { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); } 860 857 | BREAK IDENTIFIER ';' // CFA, multi-level exit 861 858 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 862 859 // the target of the transfer appears only at the start of an iteration statement. 863 //{ $$ = new StatementNode( StatementNode::Break, $2 ); }864 860 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Break ) ); delete $2; } 865 861 | RETURN comma_expression_opt ';' 866 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); } 867 | THROW assignment_expression_opt ';' 868 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 869 // | THROW ';' 870 // { $$ = new StatementNode( StatementNode::Throw ); } 871 | THROWRESUME assignment_expression_opt ';' 872 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 873 | THROWRESUME assignment_expression_opt AT assignment_expression ';' 874 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); } 875 // | THROWRESUME ';' 876 // { $$ = new StatementNode( StatementNode::Throw ); } 862 { $$ = new StatementNode2( build_return( $2 ) ); } 863 | THROW assignment_expression_opt ';' // handles rethrow 864 { $$ = new StatementNode2( build_throw( $2 ) ); } 865 | THROWRESUME assignment_expression_opt ';' // handles reresume 866 { $$ = new StatementNode2( build_throw( $2 ) ); } 867 | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume 868 { $$ = new StatementNode2( build_throw( $2 ) ); } 877 869 ; 878 870
Note: See TracChangeset
for help on using the changeset viewer.