On May 2, 2008, at 2:00 PM, Johannes Luber wrote:
> Do I understand this correctly? If you currently call from within a  
> lexer rule another lexer rule, then all attributes from the called  
> rule are transferred to the calling rule.

Well, unfortunately, setting the token type is "local" to the rule,  
but all other things such as channel are set globally. so, there is  
the inconsistency issue. We need to make it one way or the other.

> If you fix it then called rules don't do this anymore, but you have  
> to do it in the calling rule... Hmm. That would concentrate all  
> behaviour into one place and makes sense from a pure design point of  
> view, although I have no idea if that works only in theory. This  
> does confuse me at one point:
>
> X : ID WS? '=' ID ;
>
> If ID and WS aren't fragment rules, do they generate tokens?

no. they only recognize the input.

> Or those tokens somehow subsumed into the X token? How does the  
> order of rules change the lexing behaviour?

It's just a recognition issue. Changing the rule order simply changes  
which text is recognized first. Tokens are only created from the  
outermost rule invocation unless you call emit().

Ter
_______________________________________________
antlr-dev mailing list
[email protected]
http://www.antlr.org:8080/mailman/listinfo/antlr-dev

Reply via email to