[antlr-interest] literals.
Cristian Amitroaie
cristian at amiq.ro
Wed Dec 10 02:41:11 PST 2003
Why not simply adding to the lexer:
tokens {
IN="in";
INSTANCE_OF="instanceof";
};
or refering to "in" and "instanceof" in the parser?
This is what testLiterals is used for.
On Wednesday 10 December 2003 12:32, aravind srinivasan wrote:
> You can try using syntactic predicate. I am not sure if that would be the
> correct way of
doing it as i have just started using antlr.
>
> ...| ("instanceof") => "instanceof" { rel_op = JSToken.InstanceOf; }
>
> | "in" { rel_op = JSToken.In; }
>
> ;
>
> Aravind.
>
> -----Original Message-----
> From: cesar octavio lopez nataren [mailto:cesar at ciencias.unam.mx]
> Sent: Wednesday, December 10, 2003 6:01 AM
> To: antlr-interest at yahoogroups.com
> Subject: Re: [antlr-interest] literals.
>
>
> On Wed, 2003-12-10 at 01:00, Oliver Zeigermann wrote:
>
> > This looks like you need more lookahead, k=3 should do to distinguish
> > "in" from "instanceof".
> > "in" : LA(1)=i, LA(2)=n, LA(3)=?
> > "instance" : LA(1)=i, LA(2)=n, LA(3)=s
>
>
> Hello Oliver:
>
> Look, If I put:
>
> relational_op returns [JSToken rel_op]
> { rel_op = JSToken.None; }
>
> : LESS_THAN { rel_op = JSToken.LessThan; }
> :
> | GREATER_THAN { rel_op = JSToken.GreaterThan; }
> | LESS_EQ { rel_op = JSToken.LessThanEqual; }
> | GREATER_EQ { rel_op = JSToken.GreaterThanEqual; }
> | "instanceof" { rel_op = JSToken.InstanceOf; } <<<---
> |
> | "in" { rel_op = JSToken.In; } <<<----
>
> ;
>
> I get the message: jscript.g:573:11: k==1:"in"
>
> Note that on my lexer options I already have: k = 3
>
> If I erase that and add the lexical rule
>
> IN: "in";
>
> I get:
>
> jscript.g: warning:lexical nondeterminism between rules IDENTIFIER and
> IN upon
> jscript-lexer-parser.g: k==1:'i'
> jscript-lexer-parser.g: k==2:'n'
> jscript-lexer-parser.g: k==3:<end-of-token>
>
> The definition of IDENTIFIER that I have is:
>
> IDENTIFIER
> options { testLiterals = true; }
>
> : ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z' | '0'..'9')*
>
> ;
>
> what can I do?
>
> Thanks a lot for the help.
>
> César
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list