[antlr-interest] How can I ignore reserved words in certain cases ?

JeanChristophe Gautier jchgautier at yahoo.fr
Thu Nov 30 00:36:48 PST 2006


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;



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.

Many thanks,
JC




 		
---------------------------------
 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/c606774d/attachment-0001.html 


More information about the antlr-interest mailing list