[antlr-interest] Error on Defining a syntactic predicate

tracey meng tracey_meng at yahoo.com
Thu Oct 3 12:54:40 PDT 2002


Richard,

Thanks a lot.  I'll fix it.  

Tracey

--- "Hensley, Richard" <richard.hensley at mckesson.com>
wrote:
> Tracey, 
> 
> Trying putting 
> 
> tokens { 
>   AND = "and"; 
>   OR = "or"; 
> } 
> 
> at the top of your parser 
> 
> and removing the AND and OR rules from the lexer. 
> 
> put 
> 
> options { 
>   testLiterals=false; 
> } 
> 
> at the top of your lexer 
> 
> change the VARIABLE rule to 
> 
> VARIABLE 
> options { 
>   testLiterals=true; 
> } 
>         :       ('a'..'z'|'A'..'Z'|'_') 
> ('a'..'z'|'A'..'Z'|'_'|'0'..'9')* 
>         ; 
> 
> This should treat AND and OR as literals, not
> variable names. 
> 
> Richard 
> -----Original Message----- 
> From: txm3124 [ mailto:tracey_meng at yahoo.com
> <mailto:tracey_meng at yahoo.com> ] 
> Sent: Thursday, October 03, 2002 11:34 AM 
> To: antlr-interest at yahoogroups.com 
> Subject: [antlr-interest] Error on Defining a
> syntactic predicate 
> 
> 
> Can someone help me to fix the definition of Lexer
> rules of AND and 
> OR?  Thanks. 
> 
> I got an error as follows when I compiled the
> attached ruleParser.g 
> file: 
>   
> C:\Tools\antlr-2.7.1\examples\java\ruleParser>java
> antlr.Tool 
> ruleParser.g 
> ANTLR Parser Generator   Version 2.7.1   1989-2000
> jGuru.com 
> warning: lexical nondeterminism between rules
> VARIABLE and AND upon 
> ruleParser.g:0:         k==1:'A'..'Z','_','a'..'z' 
> warning: lexical nondeterminism between rules
> VARIABLE and OR upon 
> ruleParser.g:0:         k==1:'A'..'Z','_','a'..'z' 
> warning: lexical nondeterminism between rules AND
> and OR upon 
> ruleParser.g:0:        
> k==1:<end-of-token>,'A'..'Z','_','a'..'z' 
> warning: found optional path in nextToken() 
> warning: found optional path in nextToken() 
> 
> --------------------------------------------------- 
> 
> class RuleParser extends Parser; 
> options { 
>         buildAST = true; 
> } 
> 
> expr 
>         :       mexpr (OR^ mexpr)* SEMI! 
>         ; 
> 
> mexpr 
>         :       atom (AND^ atom)* 
>         ; 
> 
> atom:   INT | WORDS 
>         ; 
> 
> class RuleLexer extends Lexer; 
> 
> WS      :       (' ' 
>         |       '\t' 
>         |       '\n' 
>         |       '\r') 
>                 {_ttType = Token.SKIP; } 
>         ; 
> 
> LPAREN: '(' 
>         ; 
> 
> RPAREN: ')' 
>         ; 
> 
> SEMI:   ';' 
>         ; 
> 
> protected 
> DIGIT 
>         :       '0'..'9' 
>         ; 
> 
> INT     :       (DIGIT)+ 
>         ; 
>         
> VARIABLE 
>         :       ('a'..'z'|'A'..'Z'|'_') 
> ('a'..'z'|'A'..'Z'|'_'|'0'..'9')* 
>         ; 
> 
> AND 
>         :       ('A''N''D')      =>    
> {$setType(AND);} 
>         |       VARIABLE       
> {$setType(VARIABLE);} 
>         ; 
> 
> OR 
>         :       ('O''R')         =>    
> {$setType(OR);} 
>         |       VARIABLE       
> {$setType(VARIABLE);} 
>         ; 
> 
> 
>   
> 
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
> <http://docs.yahoo.com/info/terms/>  
> 
> 


__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com

 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list