[antlr-interest] Cannot find symbol stuff

Herumor herumor at fastwebnet.it
Thu Aug 3 05:29:33 PDT 2006


Thx a lot for your solution it fixed the problem.
Now I'm having a look at the webpage you linked.
> Hi!
>
> On 2. Aug 2006, at 18:47 Uhr, Herumor wrote:
>
>> NUMBERS : ('0' | '1'..'9' ('0'..'9')*) ('.' {_ttype = DOT;} ('0'..'9')+
>> {$setType(DEC_NUMBERS);})? ;
>
> What is the lexer supposed to return for the NUMBERS rule?
> The parser would either see NUMBERS or DEC_NUMBERS, depending on
> whether the lexer sees '.' ('0'..'9') or not.
> The DOT type would never be used in this case anyway, because the
> token type will be set to DEC_NUMBERS if the
> optional part matches.
> Seems to me that you'd need to rethink your approach to lexing NUMBERS.
>
> To the token types DOT and DEC_NUMBERS:
> They are not defined in the lexer grammar, so the lexer wouldn't know
> about them. Consequently they cannot be in
> its vocabulary. I'm not sure whether you can use a 'tokens' section in
> a lexer (I guess not) but you could add a
> empty protected rule DEC_NUMBERS. DOT I would define as a bona-fide
> token rule, since that's what you use it as.
>
> So, adding
>
> protected
> DEC_NUMBERS: ;
>
> and
>
> DOT : '.';
>
> should work. Then you can rewrite your NUMBERS rule like:
>
> NUMBERS : ('0' | '1'..'9' ('0'..'9')*) (DOT ('0'..'9')+
> {$setType(DEC_NUMBERS);})? ;
>
> but I'd do it a bit differently (see the archives for a lot of
> solutions to this. E.g. search for the thread
> "Please advise about float" from September, 19th 2005.)
> -->
> http://www.antlr.org/pipermail/antlr-interest/2005-September/thread.html
>
>
> HTH,
>
> -k
>



More information about the antlr-interest mailing list