[antlr-interest] How to tell assignment from equal?
Miguel Ping
miguel.ping at gmail.com
Wed May 2 02:06:09 PDT 2007
Hi,
You can use a predicate to check for an '=' after the first '=' and
then change the token type:
ASSIGN : '=' ('=' {$type = COMPARE;} ) ? ;
the ('=') ? rule checks for existence of the '=' in the ASSIGN token,
after reading the first '='. The action {$type = COMPARE;} sets the
token type >only< if the predicate is true, that is only if the lexer
found a '=' after the first '='.
Hope it helps,
Miguel Ping
On 5/2/07, me 262 <me262c at gmail.com> wrote:
> Hi,
>
> I am having problem with equal "==" and assign "=" in my grammar file.
>
> .......
> ASSIGN : '=' ;
> .......
>
> COMPARE :
> ( '<'
> | "<="
> | '>'
> | ">="
> | "=="
> | "!="
> );
>
> I get message:
>
> my.g: warning:lexical nondeterminism between rules ASSIGN and COMPARE upon
> script.g: k==1:'='
> script.g: k==2:<end-of-token>
>
> It must be a very common problem.
> Thanks in advance!
>
More information about the antlr-interest
mailing list