[antlr-interest] Target Language .stg Files - Token Names
Justin Holewinski
shawmishrak at gmail.com
Mon Jun 8 14:36:46 PDT 2009
I've been working on a C++ (STL + Boost) target for Antlr 3, and I'm
struggling with some StringTemplate semantics. Specifically, when
generating code for matching tokens, the <token> template will sometimes
refer to a textual token name (e.g. ID) and other times it will refer to a
constant, the token identifier (e.g. 33). Is there a way to determine,
within a StringTemplate rule, which of these representations is used?
I would like to generate code like:
match(MyParser::TOKEN_ID);
for token names, and
match(33);
for token constants, so I would like to do something like:
<if(token.isNumber)>
match(<token>);
<else>
match(MyParser::TOKEN_<token>);
<endif>
but how to do this is eluding me.
Currently, I am forced to use preprocessor magic to get by:
#undef ID
#define ID MyParser::TOKEN_ID
...
which I hate to do for multiple reasons.
On a side note, is there any documentation of which attributes are avilable
for variables in target language .stg files? For instance, what attributes
are available on a <rule>? All of the information I find comes from
deciphering the other .stg files.
Thanks,
Justin Holewinski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090608/9c48b3fa/attachment.html
More information about the antlr-interest
mailing list