title: Bison Expression Parsing Failure c++
body: <p>This is my Bison Parser Code. </p>
  
  <pre><code>statement
      : compound_statement
      | expression_statement
      ;
  
  
  
  expression_statement
      : ';'
      | expression ';'                        {cout&lt;&lt;"expr found\n";}
      ;
  
  expression
       : number_expression                    {cout &lt;&lt; "number expression\n";}
      ;
  
  number_expression
      : number_arith_expression               {cout &lt;&lt; "arith expression\n";}
      ;
  
  number_arith_expression
  
      : number_idenfiers
      | number_constants
      | number_arith_expression number_arith_expression '+'   { cout&lt;&lt;"found\n";}
      | number_arith_expression number_arith_expression '-'   {}
  
      ;
  
  number_idenfiers
      : PPNUMVAR                                                  {}
      | PPSYSNUMVAR                                               {}
      ;
  
  number_constants
      : PPFLOAT                                                   {}
      ;
  </code></pre>
  
  <p>I gave Expression as </p>
  
  <blockquote>
    <p>23 23 +;</p>
  </blockquote>
  
  <p>My result is :</p>
  
  <blockquote>
    <p>found</p>
    
    <p>arith expression</p>
    
    <p>number expression</p>
    
    <p>Line Number : 1 .. parse error</p>
  </blockquote>
  
  <p>Why It doesn't parse at expression_statment ? It doesn't parse the SEMICOLON. What Should I change to work with semicolon?</p>