[antlr-interest] not able to compile my grammar by including FINALTOKEN

din_wins din_wins at yahoo.com
Mon Aug 30 07:04:28 PDT 2004


hi i am stuck again...i have included FINALTOKEN in my grammar file 
and it throughs me following error

bms.g
ANTLR Parser Generator   Version 2.7.4   1989-2004 jGuru.com
bms.g: warning:lexical nondeterminism between rules IDENTIFIER and 
FINALTOKEN up
on
bms.g:     k==1:'*'
bms.g:     k==2:'*'


i am herewith my grammar file

options {
	language = "CSharp";
	namespace = "Worksoft.Parsers";
}

class BMSLexer extends Lexer;

options 
{
	k = 2;
}
IDENTIFIER	
			:
			(	'a'..'z'
			|'A'..'Z'
			|'0'..'9'
			|'.'|'/'
			|'~'|'`'|'!'|'@'|'#'|'$'|'%'|'^'|'&'|'*'|'-
'|'_'|'+'
			|'['|']'|'{'|'}'|'\\'|'|'
			)+
			;
/*		
NEWLINE		: '\r' '\n' | '\n'
			;
*/			

QUOTATION	: '\"'
			;

TICK		: '\''
			;
			
COMMA		: ','
			;

EQUAL		: '='
			;			


LPAREN		: '('
			;	

RPAREN		: ')'
			;	
	
WS			:	( ' '
			|	'\t'
			|   '\r' '\n'
			|   '\n')
			{ $setType(Token.SKIP); }
			;

FINALTOKEN: "**-| DFHMSD TYPE=FINAL END";


class BMSParser extends Parser;

options
{
	k = 3;
}
{
	private ParserHelper _parserHelper = new ParserHelper();
}
main returns [string xml = string.Empty]
			:	
			(
			file
  			)
  			{
  				xml = _parserHelper.ToString();
  			}
			;
	
	
file		:
			{
					_parserHelper.Start();
					Console.WriteLine("Start 
file");	
			}
			(head body EOF)
			{
					Console.WriteLine("End file");
	
					_parserHelper.End();
			}
			;
		
head		:
			{
				Console.WriteLine("start head");
	
			}
			(a:IDENTIFIER b:IDENTIFIER assigngroup)
			{
				Console.WriteLine("End head - " + 
a.getText() + " - " + b.getText());	
			}
			;
							
body		:
			{
				Console.WriteLine("Start body");
	
			}
			(parent)*
			{
				Console.WriteLine("End body");	
			}
			;	

parent		:
			{
				Console.WriteLine("Start parent");
			}
			a:IDENTIFIER (obj)+
			{
				Console.WriteLine("End parent - " + 
a.getText());
			}
			;					
	
			
obj		:
			{
				Console.WriteLine("Start obj");
			}
			a:IDENTIFIER assigngroup
			{
				Console.WriteLine("End obj - " + 
a.getText());
			}
			;	
			
assigngroup	:
			{
				Console.WriteLine("Start 
assigngroup");
			}
			(assign (COMMA a:IDENTIFIER assign)*)+
			{
				Console.WriteLine("End assigngroup 
= " + a.getText());
			}
			;	
			
assign		:
			{
				Console.WriteLine("Start assign");
			}
			a:IDENTIFIER EQUAL value
			{
				Console.WriteLine("End assign - " + 
a.getText());
			}
			|
			
			b:IDENTIFIER EQUAL valuegroup
			{
				Console.WriteLine("End assign - " + 
b.getText());
			}
			;
								
						
valuegroup	:
			{
				Console.WriteLine("Start valuegroup");
			}
			LPAREN value (COMMA value)* RPAREN 
			{
				Console.WriteLine("End valuegroup");
			}
			;
			
value		:
			{
				Console.WriteLine("Start value");
			}
			a:IDENTIFIER
			{
				Console.WriteLine("End value = " + 
a.getText());
			}
			|
			TICK b:IDENTIFIER TICK
			{
				Console.WriteLine("End value = '" + 
b.getText() + "'");
			}
			;



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/antlr-interest/

<*> To unsubscribe from this group, send an email to:
    antlr-interest-unsubscribe at yahoogroups.com

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



More information about the antlr-interest mailing list