[antlr-interest] struck up in grammar rule.

din_wins din_wins at yahoo.com
Sat Sep 4 07:03:11 PDT 2004


Hi Friends,

I am struck up in writing grammar rule for below two things which 
appear in my mainframe file.

1) O=CREATE OVERRIDE
i have written for the above one but i am not statisfied with my 
grammar rule.

2) (A=ADD, M=MAINTAIN, O=CREATE OVERRIDE, D=DELETE)
i am getting error in my grammar rule when my praser is parsing the 
above one.

below is my grammar file.
============================
options {
	language = "CSharp";
		
}

class VMDLexser extends Lexer ;

IDENTIFIER	:
			('a'..'z'
			|'A'..'Z' | '0'..'9'
			|'.'|'/' 
|'~'|'`'|'!'|'@'|'#'|'$'|'%'|'^'|'&'|'*'|'-'|'_'|'+'
			|'['|']'|'{'|'}'|'\\'|'|'|':'|'<'|'>'|'?'
			)+
			;

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

COMMA		:	','
			;

EQUAL		:	'='
			;

LPAREN		:	'('
			;

RPAREN		:	')'
			;


class VMDParser extends Parser;

options
	{	
		k = 2;
		
	}

{
	private ParserHelper _parserHelper = new ParserHelper();
	public string Parse()
	{
		return main();
	}
}
main returns [string xml = string.Empty]
			:	
			(
			file
  			)
  			{
  				xml = _parserHelper.ToString();
  			}
			;


file		:	{
					_parserHelper.Start();
					Console.WriteLine("Start 
file");	
			}
			(firstline line) 
			{
					Console.WriteLine("End file");
	
					_parserHelper.End();
			}
			;

firstline	:	{
				Console.WriteLine("Start FirstLine");
	
			}
			(a:IDENTIFIER b:IDENTIFIER)
			{
				Console.WriteLine("End FirstLine\t" + 
a.getText() + " " + b.getText());	
			}
			;


line		:	{
				Console.WriteLine("Start Line");
	
			}
			(lineexpr)+ 
			{
				Console.WriteLine("End Line");	
			}
			;

lineexpr	:	
			{
				Console.WriteLine("Start LineExpr");
	
			}
			linegroupexpr WS
			{
				Console.WriteLine("End LineExpr");
	
			}
			;


linegroupexpr	:	{
				Console.WriteLine("Start 
LineGroupExpr");	
			}
						
			a:IDENTIFIER (recordexpr)+
			{
				Console.WriteLine("End 
LineGroupExpr\t" + a.getText());	
			}
			;

recordexpr	:	
			{
				Console.WriteLine("Start RecordExpr");
	
			}
			a:IDENTIFIER (valuegroup)*
			{
				Console.WriteLine("End RecordExpr\t"+ 
a.getText());
			}
			;

valuegroup	:
			{
				Console.WriteLine("Start valuegroup");
			}
			(LPAREN (assign COMMA (WS)*)+ RPAREN)
			{
				Console.WriteLine("End valuegroup");
			}
			;

assign		:
			{
				Console.WriteLine("Start Assign");
	
			}
			a:IDENTIFIER EQUAL value (value)*
			{
				Console.WriteLine("End Assign\t" + 
a.getText());	
			}
			;
		
value		:
			{
				Console.WriteLine("Start value");
			}
			a:IDENTIFIER
			{
				Console.WriteLine("End value\t" + 
a.getText());
			}
			;


=====================================================================

regards,
Srinivas



 
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