>On Wed, 14 Jul 2010, Wilson Snyder wrote:
>
>> I have a grammar which was working (I thought) for bison
>> 2.3. Or, at least it is in production use, and has no bison
>> errors :).
>> 
>> When I compile this grammar with bison 2.4.2, I get the
>> following:
>> 
>>   Rules useless in parser due to conflicts
>>     560 senitemEdge: "posedge" expr "iff" expr
>>     562            | "negedge" expr "iff" expr
>>     564            | "edge" expr "iff" expr
>
>I haven't explored your grammar, but I can tell you that Bison 2.3b 
>introduced the removal of unreachable states, and that can uncover more 
>useless rules.  See the 2.3b entry in NEWS for a description of this 
>feature.  If you dislike it, you can add the following directive to your 
>grammar:
>
>  %define lr.keep-unreachable-states
>
>However, it's probably worth your time to figure out why those rules are 
>useless.

Thanks, yes 

 %define lr.keep_unreachable_states

works around the issue.  However, this source code is open
sourced, and runs against many versions of bison.  Presuming
for a moment I wanted to really use this define, how would I
prevent this define from causing a syntax error on earlier
versions?

More importantly, I still don't see why these rules are
useless.  Can you or someone please take a look at the
grammar?

Also, is there some way to get more verboseness in why a
rule is considered useless - what it overlaps against, for
example, in the way that reduce-reduce conflicts do?
Otherwise it's extremely hard to figure out what's wrong in
a grammar this size.

Thanks again

Reply via email to