[antlr-interest] Help Needed with multiple alternatives

Alexander Gängel alexander at gaengel.de
Tue Feb 26 08:18:28 PST 2008


Thank you Jim,
I did not Ignore the message, but I wasn't able to see where the real 
Problem was.

I have to check the Grammar again tomorrow but I think I know understand 
what Antlr tried to tell me.

Alexander



Jim Idle schrieb:
>
> Woah there! You are being misguided a bit here I think. Such warnings 
> are real in that there are two ways that ANTLR could decide your 
> grammar is structured and it is telling you that it is going to assume 
> the alt other than the one it tells you is disabled. However, it is 
> usually telling you this for a good reason. The reason is either that 
> there is something actually wrong with your grammar, or that there is 
> something wrong with the structure of your grammar. You should 
> certainly not ignore such messages as they are far from irrelevant.
>
>  
>
> Here, I think you need to look at the precedence of your operators 
> with respect to let. Then you probably would still end up with a 
> warning because at a glance it seems there is a real ambiguity in the 
> language. You can probably get rid of the warnings (once you rework 
> this  a little) with small precedents if there is a real ambiguity in 
> your language. I tend to do this just so I get a clean analysis and 
> don’t miss any new warning that comes up. If you are the author of 
> your language then consider that you might change it so that there are 
> no ambiguities. For instance, is let really a part of the expression 
> tree?
>
>  
>
> There is a (known) need to be able to turn off a particular warning 
> for a particular decision in ANTLR, but of course you should only do 
> this when you absolutely understand what it means and realize why you 
> can turn it off. Don’t train yourself to ignore such warnings, learn 
> how to turn them off as this will increase your knowledge of what is 
> going on.
>
>  
>
> In your grammar, the operators it is complaining of can associate with 
> the expr that ends the let expr, which is probably what you are 
> expecting, or the expr that contains the let as an expr. Your grammar 
> allows let to be the expr that is part of a let, so you can have let x 
> in let y in let b in g ->yyyy  etc . SO, which let clause did you mean 
> it to belong to? That is what ANTLR is telling you.
>
>  
>
> Jim
>
>  
>
> *From:* Alexander Gängel [mailto:alexander at gaengel.de]
> *Sent:* Tuesday, February 26, 2008 6:29 AM
> *To:* antlr-interest at antlr.org
> *Subject:* Re: [antlr-interest] Help Needed with multiple alternatives
>
>  
>
> So it's not an "error" in my Grammar.
> If this is so I'm glad, I spend hours to find a Way around this Message.
>
> I was starting to think I just don't understand what Antlr is doing.
>
> So I just discard dis Message.
>
> Alexander
>
> shmuel siegel schrieb:
>
> I am not 100% sure that I am reading the red diagram correctly but 
> this is my take on the problem. The green diagram says that an ARROW 
> can follow an exp_direct as part of the dotorarrow rule. The red 
> diagram says that the exit condition of dotorarrow (that is, a set of 
> null transitions) can also lead to ARROW. This is caused by 
> letexpression ending in exp which can ultimately be a dotorarrow. I 
> don't know how to avoid the warning but I think both alternatives are 
> equivalent. Alternative 1, the green arrow, is computationally more 
> efficient and is probably what you want.
>
> The bottom line is that there is an annoying irrelevant warning 
> message that is hard to circumvent.
> I would also appreciate any feedback on methods to avoid this kind of 
> ambiguity.
>
> Shmuel
>
> Alexander Gängel wrote:
>
> I still have this Problem but I think I search in the wrong spot.
>
> can somebody explain me which rule makes the Problem?
>
> Thanks
> Alexander
>
> Alexander Gängel schrieb:
>
> I found the problem but still have no working solution.
>
> I tried to get around it by using scoping and Semantic Predicates.
>
> so I set a scope with a boolean man variable and wanted to make a 
> decision like {$exp::name}=> ... | so that the rule chooses the first 
> alternative when $exp::name is set true and the other solution if it 
> is false.
>
> Is this possible, cause right now it's not working, but there may be 
> some other error still in the rule.
>
> Alexander
>
> Alexander Gängel schrieb:
>
> I just can't get my grammar to work without having a multiple 
> alternatives problem.
>
> I have some nested expression rules to get the precedence of the 
> different operations.
>
> The problem occures since I added the letexpression  rule to exp_direct
>
> I hope someone can give me a hint how to solve this.
>
> Thanks Alexander
>
>  
>
>  
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080226/485a5a6b/attachment-0001.html 


More information about the antlr-interest mailing list