[antlr-interest] ANTLR Option warnWhenFollowAmbig
Terence Parr
parrt at jguru.com
Sun Dec 22 14:02:52 PST 2002
Hi David,
If you are certain that there is no problem, you can use the option
that shuts all warnings off. Perhaps you should try "greedy=true"
instead.
Ter
On Wednesday, December 18, 2002, at 08:50 AM, David Wigg wrote:
> We have been converting a grammar file from using PCCTS to using
> ANTLR 2.7.1.
>
> I am now trying to remove ALL warnings resulting from generation
> of the grammar file, but I don't seem to be able to get rid of
> the one shown below using "options {warnWhenFollowAmbig =
> false;}:" in class_specifier rule shown below.
>
> As you will see, I have replaced "#pragma approx" outside the
> brackets with "options {warnWhenFollowAmbig = false;}:" within
> the brackets which seems to work elsewhere.
>
> However, having read
> http://www.antlr.org/doc/options.html#warnWhenFollowAmbig
> I am beginning to wonder if it is always possible to turn
> unwanted warnings off as it may depend on the structure of the
> rule. I hope not, as I think we should be able to remove all
> unwanted warnings.
>
> Please could someone clarify the situation and, if at all
> possible, let me know how I could get this warning turned off.
>
> Thanks.
>
> David.
>
> CPP_parser.g:697: warning: nondeterminism upon
> CPP_parser.g:697: k==1:ID
> CPP_parser.g:697: k==2:COLON
> CPP_parser.g:697: between alts 1 and 3 of block
>
> class_specifier[DeclSpecifier ds] returns
> [CPPParser::TypeSpecifier ts]
> {char *saveClass;}
> : ("struct" {ts=tsSTRUCT;}
> |"union" {ts=tsUNION;}
> |"class" {ts=tsCLASS;classDefinition= 1;in_class_def = true;}
> )
> //#pragma approx // indicate that ambig between alts 1 and 3 is ok
> (options {warnWhenFollowAmbig = false;}:
> (id:ID
> {saveClass = enclosingClass;
> enclosingClass =
> symbols->strdup(const_cast<char*>((id->getText()).data()));
> }
> ( base_clause )?
> LCURLY
> {beginClassDefinition(ts, (id->getText()).data());
> in_class_def = true;}
> (member_declaration)*
> {endClassDefinition();in_class_def = false;}
> RCURLY
> {enclosingClass = saveClass;struct_flag = 1;}
> )
> |
> (LCURLY
> {saveClass = enclosingClass; enclosingClass = "__anonymous";}
> {beginClassDefinition(ts, "anonymous");}
> (member_declaration)*
> {endClassDefinition();}
> RCURLY
> {enclosingClass = saveClass;struct_flag = 1;}
> )
> | (
> tag:ID
> (options {warnWhenFollowAmbig = false;}:
> LESSTHAN template_argument_list GREATERTHAN
> )?
> {id_type = ID_VAR_NAME; // DW 3/4/01
> classForwardDeclaration(ts, ds, (tag->getText()).data());
> })
> )
> ;
>
>
>
>
>
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
--
Co-founder, http://www.jguru.com
Creator, ANTLR Parser Generator: http://www.antlr.org
Lecturer in Comp. Sci., University of San Francisco
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list