Changes in src/Parser/parser.yy [dc2b4d6:578e6037]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
rdc2b4d6 r578e6037 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Jul 17 12:17:00201713 // Update Count : 24 5511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 13 14:38:54 2017 13 // Update Count : 2431 14 14 // 15 15 … … 151 151 %token ELLIPSIS // ... 152 152 153 %token EXPassign MULTassign DIVassign MODassign // \= *= /= %=153 %token MULTassign DIVassign MODassign // *= /= %=/ 154 154 %token PLUSassign MINUSassign // += -= 155 155 %token LSassign RSassign // <<= >>= … … 168 168 %type<op> ptrref_operator unary_operator assignment_operator 169 169 %type<en> primary_expression postfix_expression unary_expression 170 %type<en> cast_expression exponential_expression multiplicative_expression additive_expression 171 %type<en> shift_expression relational_expression equality_expression 172 %type<en> AND_expression exclusive_OR_expression inclusive_OR_expression 173 %type<en> logical_AND_expression logical_OR_expression 174 %type<en> conditional_expression constant_expression assignment_expression assignment_expression_opt 170 %type<en> cast_expression multiplicative_expression additive_expression shift_expression 171 %type<en> relational_expression equality_expression AND_expression exclusive_OR_expression 172 %type<en> inclusive_OR_expression logical_AND_expression logical_OR_expression conditional_expression 173 %type<en> constant_expression assignment_expression assignment_expression_opt 175 174 %type<en> comma_expression comma_expression_opt 176 %type<en> argument_expression_list argument_expression default_initialize_opt175 %type<en> argument_expression_list argument_expression assignment_opt 177 176 %type<fctl> for_control_expression 178 177 %type<en> subrange … … 574 573 ; 575 574 576 exponential_expression:575 multiplicative_expression: 577 576 cast_expression 578 | exponential_expression '\\' cast_expression 579 { $$ = new ExpressionNode( build_binary_val( OperKinds::Exp, $1, $3 ) ); } 580 ; 581 582 multiplicative_expression: 583 exponential_expression 584 | multiplicative_expression '*' exponential_expression 577 | multiplicative_expression '*' cast_expression 585 578 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); } 586 | multiplicative_expression '/' exponential_expression579 | multiplicative_expression '/' cast_expression 587 580 { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); } 588 | multiplicative_expression '%' exponential_expression581 | multiplicative_expression '%' cast_expression 589 582 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); } 590 583 ; … … 685 678 '=' { $$ = OperKinds::Assign; } 686 679 | ATassign { $$ = OperKinds::AtAssn; } 687 | EXPassign { $$ = OperKinds::ExpAssn; }688 680 | MULTassign { $$ = OperKinds::MulAssn; } 689 681 | DIVassign { $$ = OperKinds::DivAssn; } … … 980 972 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); } 981 973 982 | handler_key '(' push push exception_declaration pop handler_predicate_opt ')' compound_statement pop 983 { $$ = new StatementNode( build_catch( $1, $5, nullptr, $9 ) ); } 984 | handler_clause handler_key '(' push push exception_declaration pop handler_predicate_opt ')' compound_statement pop 985 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $10 ) ) ); } 986 ; 987 988 handler_predicate_opt: 989 //empty 990 | ';' conditional_expression 974 | handler_key '(' push push exception_declaration pop ')' compound_statement pop 975 { $$ = new StatementNode( build_catch( $1, $5, nullptr, $8 ) ); } 976 | handler_clause handler_key '(' push push exception_declaration pop ')' compound_statement pop 977 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $9 ) ) ); } 991 978 ; 992 979 … … 1680 1667 | aggregate_key attribute_list_opt typegen_name // CFA 1681 1668 { $$ = $3->addQualifiers( $2 ); } 1682 1683 // Temp, testing TreeStruct1684 | STRUCT TRY attribute_list_opt no_attr_identifier_or_type_name1685 {1686 typedefTable.makeTypedef( *$4 ); // create typedef1687 if ( forall ) typedefTable.changeKind( *$4, TypedefTable::TG ); // $1688 forall = false; // reset1689 }1690 '{' field_declaration_list '}'1691 {1692 $$ = DeclarationNode::newTreeStruct( DeclarationNode::Struct,1693 $4, nullptr, nullptr, $7, true )->addQualifiers( $3 );1694 }1695 | STRUCT TRY attribute_list_opt no_attr_identifier_or_type_name TYPEDEFname1696 {1697 typedefTable.makeTypedef( *$4 ); // create typedef1698 if ( forall ) typedefTable.changeKind( *$4, TypedefTable::TG ); // $1699 forall = false; // reset1700 }1701 '{' field_declaration_list '}'1702 {1703 $$ = DeclarationNode::newTreeStruct( DeclarationNode::Struct,1704 $4, $5, nullptr, $8, true )->addQualifiers( $3 );1705 }1706 1669 ; 1707 1670 … … 1882 1845 cfa_parameter_declaration: // CFA, new & old style parameter declaration 1883 1846 parameter_declaration 1884 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name default_initialize_opt1847 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt 1885 1848 { $$ = $1->addName( $2 ); } 1886 | cfa_abstract_tuple identifier_or_type_name default_initialize_opt1849 | cfa_abstract_tuple identifier_or_type_name assignment_opt 1887 1850 // To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator). 1888 1851 { $$ = $1->addName( $2 ); } 1889 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name default_initialize_opt1852 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name assignment_opt 1890 1853 { $$ = $2->addName( $3 )->addQualifiers( $1 ); } 1891 1854 | cfa_function_specifier … … 1904 1867 parameter_declaration: 1905 1868 // No SUE declaration in parameter list. 1906 declaration_specifier_nobody identifier_parameter_declarator default_initialize_opt1869 declaration_specifier_nobody identifier_parameter_declarator assignment_opt 1907 1870 { 1908 1871 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1909 1872 $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); 1910 1873 } 1911 | declaration_specifier_nobody type_parameter_redeclarator default_initialize_opt1874 | declaration_specifier_nobody type_parameter_redeclarator assignment_opt 1912 1875 { 1913 1876 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 1917 1880 1918 1881 abstract_parameter_declaration: 1919 declaration_specifier_nobody default_initialize_opt1882 declaration_specifier_nobody assignment_opt 1920 1883 { $$ = $1->addInitializer( $2 ? new InitializerNode( $2 ) : nullptr ); } 1921 | declaration_specifier_nobody abstract_parameter_declarator default_initialize_opt1884 | declaration_specifier_nobody abstract_parameter_declarator assignment_opt 1922 1885 { $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); } 1923 1886 ; … … 3082 3045 ; 3083 3046 3084 default_initialize_opt:3047 assignment_opt: 3085 3048 // empty 3086 3049 { $$ = nullptr; }
Note:
See TracChangeset
for help on using the changeset viewer.