title: Where is this shift/reduce conflict coming from in Bison?
body: <p>I am trying to get the hang of parsing by defining a very simple language in Jison (a javascript parser). It accepts the same / very similar syntax to bison.</p>
  
  <p>Here is my grammar:</p>
  
  <pre><code>%token INT TRUE FALSE WHILE DO IF THEN ELSE LOCATION ASSIGN EOF DEREF
  
  %left "+"
  %left "&gt;="
  
  /* Define Start Production */
  %start Program 
  
  /* Define Grammar Productions */
  %%
  
  Program
      : Statement EOF
      ;
  
  Statement
      : Expression
      | WHILE BoolExpression DO Statement
      | LOCATION ASSIGN IntExpression
      ;
  
  Expression
      : IntExpression
      | BoolExpression
      ;
  
  IntExpression
      : INT IntExpressionRest
      | IF BoolExpression THEN Statement ELSE Statement
      | DEREF LOCATION
      ;   
  
  IntExpressionRest
      : /* epsilon */
      | "+" IntExpression
      ;
  
  BoolExpression
      : TRUE
      | FALSE
      | IntExpression "&gt;=" IntExpression
      ;
  
  %%
  </code></pre>
  
  <p>I am getting one shift/reduce conflict. The output of Jison is here:</p>
  
  <pre><code>Conflict in grammar: multiple actions possible when lookahead token is &gt;= in state 6
  - reduce by rule: Expression -&gt; IntExpression
  - shift token (then go to state 17)
  
  States with conflicts:
  State 6
    Expression -&gt; IntExpression . #lookaheads= EOF &gt;= THEN DO ELSE
    BoolExpression -&gt; IntExpression .&gt;= IntExpression #lookaheads= EOF DO THEN ELSE &gt;=
  </code></pre>