野牛表达解析失败c ++

时间:2016-01-29 05:54:53

标签: expression bison bisonc++

这是我的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。我应该改变什么来使用分号?

1 个答案:

答案 0 :(得分:0)

根据你的语法,一个有效的加法表达式将是两个表达式,后跟一个+,但你的输入中间有+