Re: type clash on default action: <NONE> != <>

Re: type clash on default action: <NONE> != <>

am 02.12.2002 11:36:38 von mmokrejs

Hi Paul,
I don't know much about the mysql code, but it turned out that
downgrade to 1.35 temporarily solved our problem. I'm forwarding this mail
to mysql developers, who can hopefully answer your question and possibly
adjust the sources, if necessary.

How-To-Repeat:

On Sat, 30 Nov 2002, Paul Eggert wrote:

> > From:
> > Date: Mon, 25 Nov 2002 13:05:57 +0100 (CET)
>
> > I have the following problem with bison-1.75 and also 1.75c when
> > compiling mysql-4.0 sources on Linux i386:
> >
> > make[2]: Entering directory `/usr/scratch/mysql-4.0/sql'
> > /usr/local/bin/bison -y -d sql_yacc.yy && mv y.tab.c sql_yacc.cc
> > sql_yacc.yy:666.7-672.21: type clash on default action: != <>
>
> Do you know the story behind those declarations in the MySQL
> grammar? You can fix the problem by removing the two "%type
> ..." declarations. I don't know why those declarations are
> needed.
>
> That being said, it appears to me that Bison is being too strict about
> type clashes. I can construct a grammar that contains lots of type
> clashes, but which ignores the corresponding values, and POSIX seems
> to allow such a grammar. So I have installed the following patch,
> which should downgrade those error messages to warnings.
>
> 2002-11-30 Paul Eggert
>
> Type clashes now generate warnings, not errors, since it
> appears that POSIX may allow some grammars with type clashes.
> * src/reader.c (grammar_current_rule_check): Warn about
> type clashes instead of complaining.
> * tests/input.at (Type Clashes): Expect warnings, not complaints.
>
> Index: src/reader.c
> ============================================================ =======
> RCS file: /cvsroot/bison/bison/src/reader.c,v
> retrieving revision 1.225
> diff -p -u -r1.225 reader.c
> --- src/reader.c 29 Nov 2002 05:59:59 -0000 1.225
> +++ src/reader.c 30 Nov 2002 09:48:54 -0000
> @@ -260,14 +260,14 @@ grammar_current_rule_check (void)
> {
> const char *rhs_type = first_rhs->type_name ? first_rhs->type_name : "";
> if (!STRUNIQ_EQ (lhs_type, rhs_type))
> - complain_at (current_rule->location,
> - _("type clash on default action: <%s> != <%s>"),
> - lhs_type, rhs_type);
> + warn_at (current_rule->location,
> + _("type clash on default action: <%s> != <%s>"),
> + lhs_type, rhs_type);
> }
> /* Warn if there is no default for $$ but we need one. */
> else
> - complain_at (current_rule->location,
> - _("empty rule for typed nonterminal, and no action"));
> + warn_at (current_rule->location,
> + _("empty rule for typed nonterminal, and no action"));
> }
>
>
> Index: tests/input.at
> ============================================================ =======
> RCS file: /cvsroot/bison/bison/tests/input.at,v
> retrieving revision 1.21
> diff -p -u -r1.21 input.at
> --- tests/input.at 14 Nov 2002 22:53:47 -0000 1.21
> +++ tests/input.at 30 Nov 2002 09:48:54 -0000
> @@ -73,10 +73,10 @@ exp: foo {} foo
> ;
> ]])
>
> -AT_CHECK([bison input.y], [1], [],
> -[[input.y:4.4-15: type clash on default action: != <>
> -input.y:5.4-8: type clash on default action: != <>
> -input.y:6.4: empty rule for typed nonterminal, and no action
> +AT_CHECK([bison input.y], [], [],
> +[[input.y:4.4-15: warning: type clash on default action: != <>
> +input.y:5.4-8: warning: type clash on default action: != <>
> +input.y:6.4: warning: empty rule for typed nonterminal, and no action
> ]])
>
> AT_CLEANUP
>

--
Martin Mokrejs ,
PGP5.0i key is at http://www.natur.cuni.cz/~mmokrejs
MIPS / Institute for Bioinformatics
GSF - National Research Center for Environment and Health
Ingolstaedter Landstrasse 1, D-85764 Neuherberg, Germany
tel.: +49-89-3187 3683 , fax: +49-89-3187 3585


------------------------------------------------------------ ---------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)

To request this thread, e-mail bugs-thread13181@lists.mysql.com
To unsubscribe, e-mail