title: How to solve "The following sets of rules are mutually left-recursive" ANTLR error
body: <blockquote>
  <p>The following sets of rules are mutually left-recursive
  [valeurBooleene, valeur]</p>
  </blockquote>
  <p>I know that ANTLR handle well left-recursive rules but only in one rule, not between rules.</p>
  <p>I have to rewrite my rules to solve the mutually left-recursive problem but I don't see how...</p>
  <pre><code>grammar minimal;
  
  constante:
     bool  = BOOLEAN
   | intgr = INTEGER
  ;
  valeurBooleene:
     '(' val = valeurBooleene ')'
   | bool       = BOOLEAN
   | 'non'  not = valeur
   | leftValue = valeur '=' rightValue = valeur
  ;
  valeur:
     '(' val = valeur ')'
   | cst          = constante
   | booleanValue = valeurBooleene
   | '|' absolute = valeur '|'
   | '-' opposite = valeur
  ;
  condition:
     '(' cond = condition ')'
   | bool = valeurBooleene
  ;
  si:
     'Si' cond = condition 'alors' ( thenActions += action )+
        ( 'sinon' ( elseActions += action )+ )?
  ;
  system:
     ( actions += action )+
     EOF
  ;
  action:
     ifClause = si
  ;
  BOOLEAN:
     'false'
   | 'true'
   | 'faux'
   | 'vrai'
  ;
  INTEGER:
     [0-9]+
  ;
  WS:
     [ \n\t\r]+ -&gt; skip
  ;
  </code></pre>