@@ -13,9 +13,9 @@ main cin cout
13
13
14
14
# # Non Terminals
15
15
%non_terminals
16
- < primary_expression> < constant> < unary_operator> < unary_expression >
17
- < cast_expression > < type_specifier > < multiplicative_expression >
18
- < additive_expression > < shift_expression> < relational_expression>
16
+ < primary_expression> < constant> < unary_operator> < type_specifier >
17
+ < unary_expression > < multiplicative_expression > < additive_expression >
18
+ < shift_expression> < relational_expression>
19
19
< equality_expression> < assignment_expression> < expression>
20
20
< declaration> < init_declarator_list> < init_declarator>
21
21
< initializer> < declarator> < direct_declarator>
@@ -40,11 +40,10 @@ main cin cout
40
40
< unary_operator> : -
41
41
< unary_expression> : < primary_expression>
42
42
< unary_expression> : < unary_operator> < primary_expression>
43
- < cast_expression> : < unary_expression>
44
- < cast_expression> : ( < type_specifier> ) < cast_expression>
45
- < multiplicative_expression> : < multiplicative_expression> * < cast_expression>
46
- < multiplicative_expression> : < multiplicative_expression> / < cast_expression>
47
- < multiplicative_expression> : < multiplicative_expression> % < cast_expression>
43
+ < multiplicative_expression> : < unary_expression>
44
+ < multiplicative_expression> : < multiplicative_expression> * < unary_expression>
45
+ < multiplicative_expression> : < multiplicative_expression> / < unary_expression>
46
+ < multiplicative_expression> : < multiplicative_expression> % < unary_expression>
48
47
< additive_expression> : < multiplicative_expression>
49
48
< additive_expression> : < additive_expression> + < multiplicative_expression>
50
49
< additive_expression> : < additive_expression> - < multiplicative_expression>
@@ -62,13 +61,12 @@ main cin cout
62
61
< equality_expression> : < equality_expression> == < relational_expression>
63
62
< equality_expression> : < equality_expression> != < relational_expression>
64
63
< assignment_expression> : < equality_expression>
65
- < assignment_expression> : identifier = < assignment_expression>
66
64
< expression> : < assignment_expression>
67
65
68
66
# # Declarations
69
67
< declaration> : < type_specifier> < init_declarator_list> ;
70
68
< init_declarator_list> : < init_declarator>
71
- < init_declarator_list> : < init_declarator_list > , < init_declarator >
69
+ < init_declarator_list> : < init_declarator > , < init_declarator_list >
72
70
< init_declarator_list> : EPSILON
73
71
< init_declarator> : < declarator>
74
72
< init_declarator> : < declarator> = < initializer>
@@ -86,14 +84,14 @@ main cin cout
86
84
< statement> : < selection_statement>
87
85
< compound_statement> : { < block_item_list> }
88
86
< block_item_list> : < block_item>
89
- < block_item_list> : < block_item_list > < block_item >
87
+ < block_item_list> : < block_item > < block_item_list >
90
88
< block_item_list> : EPSILON
91
89
< block_item> : < declaration>
92
90
< block_item> : < statement>
93
91
< expression_statement> : < expression> ;
94
92
< expression_statement> : ;
95
- < selection_statement> : if ( < expression> ) < statement >
96
- < selection_statement> : if ( < expression> ) < statement > else < statement >
93
+ < selection_statement> : if ( < expression> ) < compound_statement >
94
+ < selection_statement> : if ( < expression> ) < compound_statement > else < compound_statement >
97
95
98
96
# # Main
99
97
< program> : < type_specifier> main ( ) < compound_statement>
0 commit comments