[antlr-interest] Ambiguity error in lexer generation

Hardy, Stephen Stephen.Hardy at digi.com
Thu Sep 20 09:13:59 PDT 2007


I really think this is a problem with NetBeans.  I have a known good
grammar i.e. it compiles with a limited number of warnings using ANTLR
from the command line, and usually the same warnings when run from
NetBeans, however NetBeans sometimes gets its knickers in a twist for no
apparent reason.  The symptom of this is that ANTLR suddenly generate a
gazillion warnings and/or errors.

I strongly suspect memory corruption.  Often, the problem will resolve
itself if I do nothing but rebuild (i.e. press F6 *again* without making
any source changes -- as mentioned in a previous post, I have a special
ANT rule for running ANTLR, but it is a dumb rule which always runs it
whether needed or not).  At other times, given this error, I have to
bounce NetBeans to restore sanity.

Regards,
SJH


> -----Original Message-----
> From: antlr-interest-bounces at antlr.org 
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Jim Idle
> Sent: Thursday, September 20, 2007 2:46 AM
> To: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Ambiguity error in lexer generation
> 
> It is likely that they ARE consistently reported, but they 
> are not consistently making it to the screen, in the Netbeans 
> IDE output - why don't you try running it from the command 
> line? Also, are you sure you are not making any changes at 
> all to the lexer?
> 
>  
> 
> Many times, you may feel that you have disambiguated with a 
> synpred, but you haven't - this is especially the case if 
> your lexer rule has only one alternative - antlr will say 
> that as there is only the one alternative, there is no point 
> in using the synpred and ignore it. You need to combine the 
> things you are trying to disambiguate into the one rule with 
> a common leadin and then you probably won't need the synpred anyway.
> 
>  
> 
> It sounds to me like your rule for unquoted string is the 
> same as the one for identifier, but unless you publish it for 
> us, we can't really help beyond that.
> 
>  
> 
> Jim
> 
>  
> 
> From: antlr-interest-bounces at antlr.org 
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Alex Kinneer
> Sent: 19 September 2007 18:55
> To: Loring Craymer; antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Ambiguity error in lexer generation
> 
>  
> 
> 
> I understand the warnings (at least I'm pretty sure I do), 
> but I'm still not clear on why they are being reported, and 
> more importantly why they are not being reported 
> consistently. What I am trying to emphasize is that if I run 
> antlr on the same grammar file multiple times, I sometimes 
> get these warnings, and sometimes don't. And that seems like 
> a bug to me. Either the lexer rules are ambiguous, or they 
> aren't, right? So why would it sometimes say they are and 
> sometimes not, when I'm just running antlr on the exact same grammar?
>  
> More importantly, I don't think the lexer rules even are 
> ambiguous, except to the extent that antlr advertises it can 
> resolve automatically without warning. For example, as best I 
> can tell, the grammar doesn't specify anything more ambiguous 
> than what the Java 1.5 grammar for antlr 3.0 does (e.g. how 
> does antlr distinguish the keyword 'class' from an Identifier 
> in that grammar), yet the Java 1.5 grammar doesn't seem to 
> produce any warnings (at least in that regard).
>  
> -Alex


More information about the antlr-interest mailing list