这是我的 Bison 解析器代码。
statement
: compound_statement
| expression_statement
;
expression_statement
: ';'
| expression ';' {cout<<"expr found\n";}
;
expression
: number_expression {cout << "number expression\n";}
;
number_expression
: number_arith_expression {cout << "arith expression\n";}
;
number_arith_expression
: number_idenfiers
| number_constants
| number_arith_expression number_arith_expression '+' { cout<<"found\n";}
| number_arith_expression number_arith_expression '-' {}
;
number_idenfiers
: PPNUMVAR {}
| PPSYSNUMVAR {}
;
number_constants
: PPFLOAT {}
;
我给了表达式
23 23 +;
我的结果是:
成立
算术表达式
数字表达
行号:1 .. 解析错误
为什么它不在 expression_statment 解析?它不解析分号。我应该改变什么来使用分号?