Changeset 4819cac for src/Parser
- Timestamp:
- Aug 4, 2016, 4:11:11 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:
- 4e2a1137
- Parents:
- f9cebb5 (diff), cf37a8e (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/Parser
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
rf9cebb5 r4819cac 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 5 13:41:55201613 // Update Count : 32 012 // Last Modified On : Tue Aug 2 15:10:23 2016 13 // Update Count : 322 14 14 // 15 15 … … 83 83 } 84 84 85 CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {86 return new CommaExprNode( this, exp );87 }85 // CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) { 86 // return new CommaExprNode( this, exp ); 87 // } 88 88 89 89 //############################################################################## … … 246 246 "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?", 247 247 "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?", 248 "?[?]", "FieldSel", "PFieldSel", " Range",248 "?[?]", "FieldSel", "PFieldSel", "...", 249 249 // monadic 250 250 "+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&" … … 616 616 } 617 617 618 CommaExprNode *CommaExprNode::add_to_list( ExpressionNode *exp ) {619 add_arg( exp );620 621 return this;622 }618 // CommaExprNode *CommaExprNode::add_to_list( ExpressionNode *exp ) { 619 // add_arg( exp ); 620 // 621 // return this; 622 // } 623 623 624 624 CommaExprNode::CommaExprNode( const CommaExprNode &other ) : CompositeExprNode( other ) { -
src/Parser/ParseNode.h
rf9cebb5 r4819cac 77 77 virtual ExpressionNode *clone() const = 0; 78 78 79 virtual CommaExprNode *add_to_list( ExpressionNode * );79 // virtual CommaExprNode *add_to_list( ExpressionNode * ); 80 80 81 81 ExpressionNode *get_argName() const { return argName; } … … 299 299 CommaExprNode( const CommaExprNode &other ); 300 300 301 virtual CommaExprNode *add_to_list( ExpressionNode * );301 // virtual CommaExprNode *add_to_list( ExpressionNode * ); 302 302 virtual CommaExprNode *clone() const { return new CommaExprNode( *this ); } 303 303 }; … … 485 485 std::string get_target() const; 486 486 487 StatementNode *add_controlexp( ExpressionNode * );487 // StatementNode *add_controlexp( ExpressionNode * ); 488 488 StatementNode *append_block( StatementNode * ); 489 489 StatementNode *append_last_case( StatementNode * ); -
src/Parser/StatementNode.cc
rf9cebb5 r4819cac 107 107 } 108 108 109 StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {110 if ( control && e )111 control->add_to_list( e ); // xxx - check this112 return this;113 }109 // StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) { 110 // if ( control && e ) 111 // control->add_to_list( e ); // xxx - check this 112 // return this; 113 // } 114 114 115 115 StatementNode *StatementNode::append_block( StatementNode *stmt ) { -
src/Parser/parser.cc
rf9cebb5 r4819cac 1031 1031 631, 632, 638, 639, 640, 641, 642, 643, 644, 645, 1032 1032 646, 656, 663, 665, 675, 676, 681, 683, 689, 691, 1033 695, 696, 701, 706, 709, 711, 713, 72 2, 724, 735,1034 73 6, 738, 742, 743, 748, 749, 754, 755, 759, 764,1033 695, 696, 701, 706, 709, 711, 713, 723, 725, 736, 1034 737, 739, 743, 744, 748, 749, 754, 755, 759, 764, 1035 1035 765, 769, 771, 777, 778, 782, 784, 786, 788, 794, 1036 1036 795, 799, 801, 806, 808, 810, 815, 817, 822, 824, … … 6009 6009 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound 6010 6010 // statement around the switch. Statements after the initial declaration list can never be executed, and 6011 // therefore, are removed from the grammar even though C allows it. Change also applies to choose statement. 6011 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 6012 // statement. 6012 6013 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw; 6013 6014 } … … 6017 6018 6018 6019 /* Line 1806 of yacc.c */ 6019 #line 72 3"parser.yy"6020 #line 724 "parser.yy" 6020 6021 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 6021 6022 break; … … 6024 6025 6025 6026 /* Line 1806 of yacc.c */ 6026 #line 72 5"parser.yy"6027 #line 726 "parser.yy" 6027 6028 { 6028 6029 StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); … … 6034 6035 6035 6036 /* Line 1806 of yacc.c */ 6036 #line 73 5"parser.yy"6037 #line 736 "parser.yy" 6037 6038 { (yyval.en) = (yyvsp[(1) - (1)].en); } 6038 6039 break; … … 6041 6042 6042 6043 /* Line 1806 of yacc.c */ 6043 #line 73 7"parser.yy"6044 #line 738 "parser.yy" 6044 6045 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 6045 6046 break; 6046 6047 6048 case 162: 6049 6050 /* Line 1806 of yacc.c */ 6051 #line 743 "parser.yy" 6052 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); } 6053 break; 6054 6047 6055 case 163: 6048 6056 6049 6057 /* Line 1806 of yacc.c */ 6050 6058 #line 744 "parser.yy" 6051 { (yyval. en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }6059 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); } 6052 6060 break; 6053 6061 … … 6056 6064 /* Line 1806 of yacc.c */ 6057 6065 #line 748 "parser.yy" 6058 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0); }6066 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 6059 6067 break; 6060 6068 … … 9417 9425 9418 9426 /* Line 1806 of yacc.c */ 9419 #line 942 0"Parser/parser.cc"9427 #line 9428 "Parser/parser.cc" 9420 9428 default: break; 9421 9429 } -
src/Parser/parser.yy
rf9cebb5 r4819cac 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 23 17:01:30201613 // Update Count : 16 6812 // Last Modified On : Thu Aug 4 11:28:18 2016 13 // Update Count : 1672 14 14 // 15 15 … … 150 150 %type<sn> block_item_list block_item 151 151 %type<sn> case_clause 152 %type<en> case_value case_value_list153 %type<sn> case_ label case_label_list152 %type<en> case_value 153 %type<sn> case_value_list case_label case_label_list 154 154 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 155 155 %type<pn> handler_list handler_clause finally_clause … … 717 717 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound 718 718 // statement around the switch. Statements after the initial declaration list can never be executed, and 719 // therefore, are removed from the grammar even though C allows it. Change also applies to choose statement. 719 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 720 // statement. 720 721 $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw; 721 722 } … … 740 741 741 742 case_value_list: // CFA 742 case_value 743 | case_value_list ',' case_value 744 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); } 743 case_value { $$ = new StatementNode( StatementNode::Case, $1, 0 ); } 744 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_link( new StatementNode( StatementNode::Case, $3, 0 ) ) ); } 745 745 ; 746 746 747 747 case_label: // CFA 748 CASE case_value_list ':' { $$ = new StatementNode( StatementNode::Case, $2, 0 ); }748 CASE case_value_list ':' { $$ = $2; } 749 749 | DEFAULT ':' { $$ = new StatementNode( StatementNode::Default ); } 750 750 // A semantic check is required to ensure only one default clause per switch/choose statement.
Note:
See TracChangeset
for help on using the changeset viewer.