[antlr-interest] RE : Re: How can I ignore reserved words incertain cases ?

Micheal J open.zone at virgin.net
Thu Nov 30 06:10:23 PST 2006


keyword :
   PRINT
   ...
   ...
   ;
 
expr :
   PRINT ( STRING | keyword )
   ;
 
 
Micheal
-----------------------
The best way to contact me is via the list/forum. My time is very limited. 

-----Original Message-----
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of JeanChristophe
Gautier
Sent: 30 November 2006 12:59
To: antlr-interest at antlr.org
Subject: [antlr-interest] RE : Re: How can I ignore reserved words incertain
cases ?


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 : 

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
<http://fr.rd.yahoo.com/evt=40577/*http://fr.promotions.yahoo.com/mail/nouve
aumail.html%20> Yahoo! Mail et son interface révolutionnaire. 




  _____  

Yahoo! Mail réinvente le mail ! Découvrez le nouveau
<http://fr.rd.yahoo.com/evt=40577/*http://fr.promotions.yahoo.com/mail/nouve
aumail.html> Yahoo! Mail et son interface révolutionnaire. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20061130/dd30eb51/attachment-0001.html 


More information about the antlr-interest mailing list