Changes in src/Parser/parser.yy [578e6037:dc2b4d6]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r578e6037 rdc2b4d6 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Jul 13 14:38:54201713 // Update Count : 24 3111 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Jul 17 12:17:00 2017 13 // Update Count : 2455 14 14 // 15 15 … … 151 151 %token ELLIPSIS // ... 152 152 153 %token MULTassign DIVassign MODassign // *= /= %=/153 %token EXPassign 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 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 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 174 175 %type<en> comma_expression comma_expression_opt 175 %type<en> argument_expression_list argument_expression assignment_opt176 %type<en> argument_expression_list argument_expression default_initialize_opt 176 177 %type<fctl> for_control_expression 177 178 %type<en> subrange … … 573 574 ; 574 575 576 exponential_expression: 577 cast_expression 578 | exponential_expression '\\' cast_expression 579 { $$ = new ExpressionNode( build_binary_val( OperKinds::Exp, $1, $3 ) ); } 580 ; 581 575 582 multiplicative_expression: 576 cast_expression577 | multiplicative_expression '*' cast_expression583 exponential_expression 584 | multiplicative_expression '*' exponential_expression 578 585 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); } 579 | multiplicative_expression '/' cast_expression586 | multiplicative_expression '/' exponential_expression 580 587 { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); } 581 | multiplicative_expression '%' cast_expression588 | multiplicative_expression '%' exponential_expression 582 589 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); } 583 590 ; … … 678 685 '=' { $$ = OperKinds::Assign; } 679 686 | ATassign { $$ = OperKinds::AtAssn; } 687 | EXPassign { $$ = OperKinds::ExpAssn; } 680 688 | MULTassign { $$ = OperKinds::MulAssn; } 681 689 | DIVassign { $$ = OperKinds::DivAssn; } … … 972 980 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); } 973 981 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 ) ) ); } 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 978 991 ; 979 992 … … 1667 1680 | aggregate_key attribute_list_opt typegen_name // CFA 1668 1681 { $$ = $3->addQualifiers( $2 ); } 1682 1683 // Temp, testing TreeStruct 1684 | STRUCT TRY attribute_list_opt no_attr_identifier_or_type_name 1685 { 1686 typedefTable.makeTypedef( *$4 ); // create typedef 1687 if ( forall ) typedefTable.changeKind( *$4, TypedefTable::TG ); // $ 1688 forall = false; // reset 1689 } 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 TYPEDEFname 1696 { 1697 typedefTable.makeTypedef( *$4 ); // create typedef 1698 if ( forall ) typedefTable.changeKind( *$4, TypedefTable::TG ); // $ 1699 forall = false; // reset 1700 } 1701 '{' field_declaration_list '}' 1702 { 1703 $$ = DeclarationNode::newTreeStruct( DeclarationNode::Struct, 1704 $4, $5, nullptr, $8, true )->addQualifiers( $3 ); 1705 } 1669 1706 ; 1670 1707 … … 1845 1882 cfa_parameter_declaration: // CFA, new & old style parameter declaration 1846 1883 parameter_declaration 1847 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt1884 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name default_initialize_opt 1848 1885 { $$ = $1->addName( $2 ); } 1849 | cfa_abstract_tuple identifier_or_type_name assignment_opt1886 | cfa_abstract_tuple identifier_or_type_name default_initialize_opt 1850 1887 // To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator). 1851 1888 { $$ = $1->addName( $2 ); } 1852 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name assignment_opt1889 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name default_initialize_opt 1853 1890 { $$ = $2->addName( $3 )->addQualifiers( $1 ); } 1854 1891 | cfa_function_specifier … … 1867 1904 parameter_declaration: 1868 1905 // No SUE declaration in parameter list. 1869 declaration_specifier_nobody identifier_parameter_declarator assignment_opt1906 declaration_specifier_nobody identifier_parameter_declarator default_initialize_opt 1870 1907 { 1871 1908 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1872 1909 $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); 1873 1910 } 1874 | declaration_specifier_nobody type_parameter_redeclarator assignment_opt1911 | declaration_specifier_nobody type_parameter_redeclarator default_initialize_opt 1875 1912 { 1876 1913 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 1880 1917 1881 1918 abstract_parameter_declaration: 1882 declaration_specifier_nobody assignment_opt1919 declaration_specifier_nobody default_initialize_opt 1883 1920 { $$ = $1->addInitializer( $2 ? new InitializerNode( $2 ) : nullptr ); } 1884 | declaration_specifier_nobody abstract_parameter_declarator assignment_opt1921 | declaration_specifier_nobody abstract_parameter_declarator default_initialize_opt 1885 1922 { $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); } 1886 1923 ; … … 3045 3082 ; 3046 3083 3047 assignment_opt:3084 default_initialize_opt: 3048 3085 // empty 3049 3086 { $$ = nullptr; }
Note:
See TracChangeset
for help on using the changeset viewer.