]> git.saurik.com Git - bison.git/commit - data/lalr1.cc
api.prefix: also rename YYDEBUG.
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 2 Jul 2012 12:56:22 +0000 (14:56 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Wed, 4 Jul 2012 10:24:12 +0000 (12:24 +0200)
commit5f108727a13ff887f889948b2484724f14c125e9
treebd48c5790af66a7200c45e38a8fb2e50630178e7
parent242cc08e8da09221339a70edf24b9b57910e3dba
api.prefix: also rename YYDEBUG.

The testsuite in master has shown weird errors for the "Mulitple
Parsers" tests: the caller of p5.parse() received some apparently
random value, while tracing p5.parse() showed that the function was
consistently returning 0.

It happens when mixing several parser headers, some generated without
%debug, others with.  In particular the C++ parser was generated with
%debug, i.e., with:

  #ifndef YYDEBUG
  # define YYDEBUG 1
  #endif

and compiled separatedly.  Yet, its header was included after the one
of another parser, this time without %debug, i.e., with

  #ifndef YYDEBUG
  # define YYDEBUG 0
  #endif

in its header.  As a result, the parser was compiled with YYDEBUG set,
but its header was used without.  Since the layout of the objects are
then completely different, boom.

Therefore, do not change the value of YYDEBUG.  Rather, use it as a
default value for <API.PREFIX>DEBUG.

* data/c.m4 (b4_YYDEBUG_define): New.
(b4_declare_yydebug): Rename as...
(b4_yydebug_declare): this, for consistency.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
* NEWS: Document it.
NEWS
data/c.m4
data/glr.c
data/glr.cc
data/lalr1.cc
data/yacc.c