[antlr-interest] RE : Re: How can I ignore reserved words in certain cases ?
JeanChristophe Gautier
jchgautier at yahoo.fr
Thu Nov 30 04:59:08 PST 2006
Hi,
Thanks for your help but that doesn't solve my problem. We have a hundred or so key words (such as print) declared in the lexer, all of which should be accepted as a STRING. We could always do as you suggested but we would have a parser rule several lines long and we would need to modify it whenever we added a new key word. Is there no way to simply ignore the key word tokens for certain rules?
Many thanks,
JC
Micheal J <open.zone at virgin.net> a écrit : Message
Hi,
I am writing a command line editor that has reserved words, such as
"print", that should accept, at times, any string value. For example the
following should be allowed:
print hello
print print
The grammar is defined as follows:
class ExprParser extends Parser;
options {
k = 2;
buildAST=true;
}
expr: expr1;
expr1: PRINT STRING;
==> expr: PRINT ( STRING | PRINT ) ;
class ExprLexer extends Lexer;
options {
k=2;
charVocabulary='\u0000'..'\u007F';
testLiterals = false;
}
tokens {
PRINT = "print";
}
STRING options { testLiterals = true; } : ('a'..'z')+;
WS : ( ' '
| '\r' '\n'
| '\n'
| '\t'
)
{$setType(Token.SKIP);}
;
Obviously the second example ("print print") does not work
because the
token PRINT takes priority since we have testLiterals = true (note
that
this example is taken from a more complex grammar).
The question is: how do I, under certain circumstances, ignore reserved
word tokens?
Bythe way, I am currently using antlr 2.7.
==> ANTLR2's latest version is 2.7.7
Many thanks,
JC
---------------------------------
Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire.
---------------------------------
Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20061130/c128a579/attachment.html
More information about the antlr-interest
mailing list