[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