[antlr-interest] Literals table empty

mzukowski at yci.com mzukowski at yci.com
Fri Nov 14 13:40:00 PST 2003


When I copy and paste this into one .g file it works.  The problem probably
has to do with the fact that your are exporting the vocab from the lexer and
importing into the parser.  Look at the docs on import/export vocab stuff,
but I think if you want them in separate files you will have to do some
extra work to keep the vocabularies in sync.  

Has anyone else done this and have some advice?

If you don't have other constraints then keeping the lexer and parser in the
same .g file will certainly make it work.

Monty

-----Original Message-----
From: yahamkon [mailto:Vladimir.Konstantinov at rogers.com] 
Sent: Friday, November 14, 2003 1:10 PM
To: antlr-interest at yahoogroups.com
Subject: [antlr-interest] Literals table empty

Thanks again, but the grammar doesn't recognize the Literal as such, 
it matches an returns an Identifier instead:

/////
class ExpressionParser extends Parser;

options {
	importVocab=Expression;             
	buildAST=true;
}

calc: (ID|fun) END ;
fun: "min"|"max" ;

class ExpressionLexer extends Lexer ;

options{exportVocab=Expression;}

END: ';';

ID options {testLiterals=true;}: 
	('a'..'z'|'A'..'Z'|'_'|'$') 
('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'$')*
;
/////

I looked up the generated code - the Lexer class doesn't populate the 
literals table at all (although "min" and "max" are defined as 
LITERAL_xxx tokens in the respective zzzTokenTypes.java file).

What am I missing now, I compared the options from the java.g file 
and my example (regarding literals), the java geherated lexer has its 
literals table populated, mine is not being populated in the 
generated Lexer class ?

Any ideas? TIA



--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> No, you need a lexer rule something like 
> ID:
> options {testLiterals=true;}
> ('a'..'z' | 'A'..'Z')+
> ;
> 
> Monty
> 
> -----Original Message-----
> From: yahamkon [mailto:Vladimir.Konstantinov at r...] 
> Sent: Thursday, November 13, 2003 11:16 AM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] Re: help with literals
> 
> Thanks for the fast response!
> 
> >> See docs on literals and any example grammar with an ID rule.
> 
> I've looked in the docs, the "java.g" grammar, also searched the 
> archives but things aren't getting clearer.
> 
> > Yes, you need a rule that will test it's result against the 
defined
> > literals. 
> 
> Isn't "calc" such a rule? To put it defferently, if I had a grammar 
> that specifies a single rule recognising a single literal how would 
> that look like (that's what I had in mind sending the example 
anyway)?
> 
> 
> 
> 
> 
> > 
> > Monty
> > 
> > -----Original Message-----
> > From: VLADIMIR KONSTANTINOV [mailto:Vladimir.Konstantinov at r...] 
> > Sent: Thursday, November 13, 2003 11:03 AM
> > To: antlr-interest at yahoogroups.com
> > Subject: [antlr-interest] help with literals
> > 
> > 
> > I want to specify literals ("min", "max", "sum" etc) in my 
grammar.
> >  
> > I am getting :
> >  line 1:1: unexpected char: 'm'
> >  line 1:2: unexpected char: 'i'
> >  line 1:3: unexpected char: 'n'
> > when testing with the following expression: "min;" 
> >  
> > This a stripped down version of my grammar:
> >  
> > ///
> > class ExpressionParser extends Parser;
> > options { importVocab=Expression; }
> > calc: fun END;
> > fun: "min";
> >  
> > class ExpressionLexer extends Lexer ;
> > options{ exportVocab=Expression;}
> > END: ';'
> > ///
> >  
> > I am missing something very basic, but can't figure it out myself.
> >  
> > Thanks in advance.
> > 
> > 
> >  
> > 
> > Your use of Yahoo! Groups is subject to 
> http://docs.yahoo.com/info/terms/
> 
> 
>  
> 
> Your use of Yahoo! Groups is subject to 
http://docs.yahoo.com/info/terms/


 

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


 

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




More information about the antlr-interest mailing list