这是我的Bison Parser Code。
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 +;
我的结果是:
结果
arith表达
数字表达式
行号:1 ..解析错误
为什么它不能在expression_statment中解析?它没有解析SEMICOLON。我应该改变什么来使用分号?
答案 0 :(得分:0)
根据你的语法,一个有效的加法表达式将是两个表达式,后跟一个+
,但你的输入中间有+
。