[antlr-interest] Newbie question...

Buck, Robert rbuck at verisign.com
Tue Jul 24 10:54:38 PDT 2007


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