[antlr-interest] [Antlr 3] lexer problem
Sven Efftinge
sven at efftinge.de
Tue May 15 04:42:12 PDT 2007
Alex,
>
> For this to happen lexer should know what the parser expects.
I think it has nothing to do with the parser.
> And I do not
> think that is how lexer works. It knows 0 about parser. The parser
> knows 0
> about lexer it only cares about token stream. In my understanding
> tracking
> back can happen only in either one of them. But not across their
> boundaries
> (unless you do it yourself of course)
Yes, that's right but it doesn't relate to my problem.
I'm talking about the lexer only.
>
> So in your case you could disambiguate your lexer by using
> syntactic predicates
The grammar results in something like the following lexer rules which
are not ambigous, are they?
DOT : '.';
FOO : 'foo';
FLOAT : '0'..'9'+ (DOT '0'..'9'+)?;
> I guess. I have never used them on lexers but I guess if it works
> similarly to how they
> work in parsers, it should look something like this:
>
> INTORFLOAT:
> ('0'..'9'+ '.' '0'..'9') => FLOAT
> | INT;
>
> FLOAT : '0'..'9'+ ('.' '0'..'9'+)?;
> INT : '0'..'9'+;
I've tried syntactic predicates without success (same behaviour).
Anyway I would like to understand why it behaves that way (if it is
no bug)
thanks,
Sven
More information about the antlr-interest
mailing list