What's the difference between defining a token in the tokens block and defining a token as a lexer index?
+1
A:
The lexer tokens are the tokens that antlr generates through parsing a certain combination of characters, for example:
fragment
F_W : (' '|'\t'|'\r'|'\n'|'\f')*
;
However, the tokens in the token block are the visual tokens that users create for the benefits of parsing; they don't have a direct mappings to a set of character series. For example,
tokens { BLOCK; }
gives you a visual token BLOCK that you can put ahead or on top of your block rule to mark the subsequest session is a block rule like this:
block:
'{' expression* '}' ->
BLOCK^ expression*
;
Winston Chen
2009-07-12 01:34:06