[antlr-interest] How to do "not" in a syntactic predicate?

Naveen Chawla naveen.chwl at googlemail.com
Wed Oct 14 03:19:45 PDT 2009


Jim, being new to predicates I realised soon after this that you were
talking about token lookaheads. And yes I do need a syntactic lookahead (but
thas is negative). In beginner-speak, one of my "smaller" rules is
"consuming" something that should belong to a "larger" rule. This would be
correct if that particular something (e.g. "a") was *not* followed by a
syntactic construct conforming to "b". Hence (a !b)=>a (for the smaller
rule) seems the simplest solution to this to me. Is Indhu's version correct
for doing this trick? It doesn't seem to work for me (but I might be doing
something else wrong). If not correct, what is the correct way? My target is
Java.

2009/10/5 Jim Idle <jimi at temporal-wave.com>

>  Use a semantic predicate rather than syntactic. You possibly need a bated
> predicate here too:
>
>
>
> { input.LA(1) == A && input.LA(2) != B}?=>
>
>
>
> However, if you need that kind of syntactic predicate, then I suggest you
> may be approaching your problem incorrectly.
>
>
>
> Jim
>
>
>
> *From:* antlr-interest-bounces at antlr.org [mailto:
> antlr-interest-bounces at antlr.org] *On Behalf Of *Naveen Chawla
> *Sent:* Monday, October 05, 2009 7:02 AM
> *To:* antlr-interest at antlr.org
> *Subject:* [antlr-interest] How to do "not" in a syntactic predicate?
>
>
>
> If I do
>
>
>
> (a ~b)=> a
>
>
>
> meaning "take this alternative if you encounter an a when not followed by
> b"
>
>
>
> I get a syntax error: unexpected token b
>
> Is it the right syntax to use '~'?
>
>
>
> N
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20091014/3119e3be/attachment.html 


More information about the antlr-interest mailing list