help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rule cycle and reduce/reduce conflict


From: Akim Demaille
Subject: Re: rule cycle and reduce/reduce conflict
Date: Tue, 19 Nov 2013 14:20:40 +0100

Le 18 nov. 2013 à 22:17, Florent Teichteil <address@hidden> a écrit :

> Hi all,
> 
> I am new to bison and would need your kind help to understand why the
> following (stupid) simple grammar is ambiguous:

Actually your question is why the conflict remains.</pedantic>

> %left '!'
> %left '='
> 
> %%
> 
> start : bool_expr ;
> 
> bool_expr : '!' bool_expr
>          | num_expr '=' num_expr
>          | 'b'
>          ;
> 
> num_expr : bool_expr
>         | 'n'
>         ;
> 
> %%
> 
> There is a cycle in the rules (bool_expr depends on num_expr, which in
> turn depends on bool_expr), but I can't imagine an input that would be
> ambiguous. However, bison reports the following reduce/reduce
> conflict:
> 
> State 7
> 
>    2 bool_expr: '!' bool_expr .
>    5 num_expr: bool_expr .
> 
>    '='       reduce using rule 2 (bool_expr)
>    '='       [reduce using rule 5 (num_expr)]
>    $défaut  reduce using rule 2 (bool_expr)
> 
> I don't understand what are the 2 conflicting semantic actions that
> can be performed here. Could someone explain me please (perhaps with a
> counter-example?)

Precedence is never involved in resolving RR conflicts.  It could arguably be
a feature-request, but often RR conflicts are signs that you should
rework your grammar (or that you should go for GLR and use %dprec).

More concretely, you "fall into the classical temptation" to treat
type issues at the syntactic level.  Don't do that.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]