[antlr-interest] Newbie question...

Buck, Robert rbuck at verisign.com
Tue Jul 24 12:34:58 PDT 2007


It did work (at least the simple app-main program did not complain, log
errors, or throw) for the simple case:

   (message-version=1.0)

But it fails now for a slightly more complex case:

   (container@{(charset=utf-8)}=foo)
 
line 1:10 no viable alternative at character '@'
line 1:11 mismatched input '{' expecting EQUALS
line 1:21 no viable alternative at input 'utf-8'

Trying to understand this one now.

Bob

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org 
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of mitchellch
> Sent: Tuesday, July 24, 2007 3:26 PM
> To: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Newbie question...
> 
> I'm curious, does your parser successfully parse the example 
> you provided?
> 
> -Mitch
> 
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Buck, Robert
> Sent: Tuesday, July 24, 2007 12:17 PM
> To: Buck, Robert; antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Newbie question...
> 
> Found the second issue: have to use 'fragment' in the lexer stuff.
> 
> -Bob 
> 
> > -----Original Message-----
> > From: Buck, Robert
> > Sent: Tuesday, July 24, 2007 1:55 PM
> > To: Buck, Robert; antlr-interest at antlr.org
> > Subject: RE: [antlr-interest] Newbie question...
> > 
> > Hi,
> > 
> > This was one issue:
> > 
> > > DIGIT	:	'1'..'9'
> > 
> > Should have been:
> > 
> > > DIGIT	:	'0'..'9'
> > 
> > But I still get the warnings when code is generated:
> > 
> > [10:54:15] warning(208): SetTuple.g:93:1: The following token 
> > definitions are unreachable:
> >  UNRESERVED,PCT_ENCODED,ALPHA,DIGIT,UNDERSCORE,HYPHEN
> > [10:54:15] warning(208): SetTuple.g:93:1: The following token 
> > definitions are unreachable:
> >   UNRESERVED,PCT_ENCODED,ALPHA,DIGIT,UNDERSCORE,HYPHEN
> > 
> > Something wrong here still? Seems like I do refer to these, don't I?
> > 
> > -Bob
> > 
> > 
> > > -----Original Message-----
> > > From: antlr-interest-bounces at antlr.org 
> > > [mailto:antlr-interest-bounces at antlr.org] On Behalf Of 
> Buck, Robert
> > > Sent: Tuesday, July 24, 2007 11:44 AM
> > > To: antlr-interest at antlr.org
> > > Subject: [antlr-interest] Newbie question...
> > > 
> > > Hi,
> > > 
> > > I never have written a grammar before in ANTLR. Could
> > someone provide
> > > some hint as to how to accomplish what I am attempting. I
> > think I am
> > > pretty close, but I run into some errors when I run my simple 
> > > application main, and when I do a grammar check.
> > > 
> > > I have a language of sorts I use to express traits for messaging 
> > > system drivers. A sample traits description follows:
> > > 
> > >  
> > > (TRAITS={(PERSISTENCE=FS),(PROTOCOL={(POST={DIRECT,RENAME}),(T
> > > AKE={INDIR
> > > ECT,CREATE})})})
> > > 
> > > A greatly simplified example using this grammar could be:
> > > 
> > >     (message-version=1.0)
> > > 
> > > I wrote a grammar that seems to work, for the most part.
> > > 
> > > ##############################################
> > > grammar SetTuple;
> > > 
> > > options {
> > > 	output=AST;
> > > }
> > > 
> > > @members {
> > >     public static void main(String[] args) throws Exception {
> > >         SetTupleLexer lex = new SetTupleLexer(new 
> > > ANTLRStringStream(args[0]));
> > >        	CommonTokenStream tokens = new CommonTokenStream(lex);
> > >         SetTupleParser parser = new SetTupleParser(tokens);
> > >         try {
> > >             parser.prog();
> > >         } catch (RecognitionException e)  {
> > >             e.printStackTrace();
> > >         }
> > >     }
> > > }
> > > 
> > > 
> /*------------------------------------------------------------------
> > >  * PARSER RULES
> > >  
> > 
> *------------------------------------------------------------------*/
> > > 
> > > prog
> > > 	:	tuple
> > > 	;
> > > 
> > > tuple
> > > 	:	L_PAREN tuple_declaration EQUALS ( tuple_value | set )
> > > R_PAREN
> > > 	;
> > > 
> > > set
> > > 	:	L_CURLY tuple ( COMMA tuple )*
> > > 	;
> > > 
> > > tuple_declaration
> > > 	:	tuple_key ( AT_SIGN set )? 
> > > 	;
> > > 
> > > tuple_key
> > > 	:	IDENT
> > > 	;
> > > tuple_value
> > > 	:	( PCHAR )*
> > > 	;
> > > 
> > > 
> /*------------------------------------------------------------------
> > >  * LEXER RULES
> > >  
> > 
> *------------------------------------------------------------------*/
> > > 
> > > PCHAR	:	PCT_ENCODED | UNRESERVED
> > > 	;
> > > 
> > > UNRESERVED
> > > 	:	ALPHA | DIGIT | '-' | '.' | '_' | '~' | ':'
> > > 	;
> > > PCT_ENCODED
> > > 	:	'%' HEXDIGIT HEXDIGIT
> > > 	;
> > > HEXDIGIT:	('0'..'9'|'a'..'f'|'A'..'F')
> > > 	;
> > > IDENT	:	ALPHA ( ALPHA | UNDERSCORE | HYPHEN | DIGIT)*
> > > 	;
> > > ALPHA
> > > 	:	('a'..'z')|('A'..'Z')
> > > 	;
> > > L_PAREN
> > > 	:	'('
> > > 	;
> > > R_PAREN :	')'
> > > 	;
> > > L_CURLY	:	'{'
> > > 	;
> > > R_CURLY	:	'}'
> > > 	;
> > > DIGIT	:	'1'..'9'
> > > 	;
> > > COMMA	:	','
> > > 	;
> > > EQUALS	:	'='
> > > 	;
> > > L_BRACKET
> > > 	:	'['
> > > 	;
> > > R_BRACKET
> > > 	:	']'
> > > 	;
> > > AT_SIGN	:	'@'
> > > 	;
> > > UNDERSCORE
> > > 	:	'_'
> > > 	;
> > > HYPHEN	:	'-'
> > > 	;
> > > ##############################################
> > > 
> > > But when I check the grammar using ANTLRWorks, I get the following
> > > warning:
> > > 
> > > [10:54:15] warning(208): SetTuple.g:93:1: The following token 
> > > definitions are unreachable:
> > > UNRESERVED,PCT_ENCODED,ALPHA,DIGIT,UNDERSCORE,HYPHEN
> > > [10:54:15] warning(208): SetTuple.g:93:1: The following token 
> > > definitions are unreachable:
> > > UNRESERVED,PCT_ENCODED,ALPHA,DIGIT,UNDERSCORE,HYPHEN
> > > [10:55:18] Checking Grammar...
> > > 
> > > When I run the simplified example, I see the following 
> error on the 
> > > command line:
> > > 
> > >     line 1:19 mismatched input '0' expecting R_PAREN
> > > 
> > > What am I missing here?
> > > 
> > > -Bob
> > > 
> 
> 
> 


More information about the antlr-interest mailing list