bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bison 1.30d


From: Hans Aberg
Subject: Re: Bison 1.30d
Date: Tue, 20 Nov 2001 19:33:49 +0100

At 14:24 +0100 2001/11/20, Akim Demaille wrote:
>A single missing `\n' was responsible of some failures of 1.30c.  This
>is fixed.  Hopefully, *this* is 1.31.
...
>  ftp://alpha.gnu.org/gnu/bison/bison-1.30d.tar.gz   (660 kB)

(Looking forward to 1.30d :-).)

I get the
  Link Error   : undefined 'trace_flag' (data)
  Referenced from 'new_itemsets' in LR0.c
  Referenced from 'set_firsts' in closure.c
  Referenced from 'set_nullable' in nullable.c
  Referenced from 'set_derives' in derives.c
  Referenced from 'reduce_grammar' in reduce.c
  Referenced from 'longopts' in getargs.c
You should probably have a line
  int trace_flag = 0;
in getargs.c.

Also, in file output.c, you have forgotten
   #include <alloca.h>
as you are calling it in output_stos():
   short *values = (short *) alloca (sizeof (short) * nstates);

Is it really prudent to call alloca here, in view of that alloca is not in
the C standard (unless it is in C99) so not all compilers may have it, and
also, alloca is not called anywhere else in the Bison code?

I have also noted quite of a change in the output parser that Bison
generates, from:
#if YYDEBUG != 0
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
       0,    80,    82,    84,    86,    87,    88,    89,    90,    91,
      97,   104,   107,   109,   114,   116,   118,   123,   128,   134,
     136,   137,   144,   145,   152,   160,   162,   163,   172,   173,
     176,   177,   187,   196,   197,   206,   207,   210,   213,   214,
     217,   220,   222,   224,   233,   242,   245
};
#endif

to:
#if YYDEBUG != 0
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
       0,    80,    80,    82,    82,    82,    82,    82,    82,    82,
      82,    89,    89,    89,    89,    89,    89,    89,    89,    90,
      90,    90,    90,    90,    90,   162,    91,   172,    91,   176,
      91,    91,   196,    91,   206,    91,   210,   213,    91,   217,
     220,    91,   162,   233,   162,   245,   162
};
#endif

This does not seem right, that the different rules suddenly are defined on
the same line (I know they are not in the .y sources I used for this
example).

  Hans Aberg





reply via email to

[Prev in Thread] Current Thread [Next in Thread]