[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