]> git.saurik.com Git - bison.git/commitdiff
glr.c, yacc.c: declare yydebug in the header.
authorAkim Demaille <akim@lrde.epita.fr>
Fri, 15 Jun 2012 13:19:16 +0000 (15:19 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Fri, 15 Jun 2012 13:33:14 +0000 (15:33 +0200)
* data/c.m4 (b4_declare_yydebug): New.
* data/glr.c, data/yacc.c (b4_shared_declarations): Use it.
Remove the corresponding code from the parser body.
* NEWS: Doc this.

NEWS
data/c.m4
data/glr.c
data/yacc.c

diff --git a/NEWS b/NEWS
index 118aae38592b12d1f81a05558f08f5b70306f2d8..ae8b297ced4fdeb52b2a6fe5e83ac6e22c042d80 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,9 @@ GNU Bison NEWS
   YYSTYPE, yyltype etc.), the generated parser now includes it, as was
   already the case for GLR or C++ parsers.
 
-** Header guards (yacc.c, glr.c, glr.cc)
+** Headers (yacc.c, glr.c, glr.cc)
+
+*** Guards
 
   The generated headers are now guarded, as is already the case for C++
   parsers (lalr1.cc).  For intance, with --defines=foo.h:
@@ -24,6 +26,20 @@ GNU Bison NEWS
   ...
   #endif /* !YY_FOO_H  */
 
+*** New declarations
+
+  The generated header now declares yydebug and yyparse.  Both honor
+  --name-prefix=bar_, and yield
+
+  int bar_parse (void);
+
+  rather than
+
+  #define yyparse bar_parse
+  int yyparse (void);
+
+  in order to facilitate the inclusion of several parser headers inside a
+  single compilation unit.
 
 * Noteworthy changes in release 2.5.1 (2012-06-05) [stable]
 
index 64f68fec24f86f26b53a09d4dd31a9389be83e87..78b123252833690f0df1d8aa44611ec32e8deb07 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -567,3 +567,15 @@ typedef struct YYLTYPE
 # define YYLTYPE_IS_TRIVIAL 1
 #endif]])
 ])
+
+# b4_declare_yydebug
+# ------------------
+m4_define([b4_declare_yydebug],
+[[/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG ]b4_debug_flag[
+#endif
+#if YYDEBUG
+extern int ]b4_prefix[debug;
+#endif][]dnl
+])
index d1d61fe63dc102ba1eb4f91d9a479db2bdc7af77..9bbf9a72e936aae0092fc18bf0598f792adc11c3 100644 (file)
@@ -163,7 +163,8 @@ m4_define([b4_rhs_location],
 # Declaration that might either go into the header (if --defines)
 # or open coded in the parser body.
 m4_define([b4_shared_declarations],
-[b4_percent_code_get([[requires]])[
+[b4_declare_yydebug[
+]b4_percent_code_get([[requires]])[
 ]b4_token_enums(b4_tokens)[
 ]b4_declare_yylstype[
 ]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[
@@ -206,11 +207,6 @@ m4_if(b4_prefix, [yy], [],
 ]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
                [b4_shared_declarations])[
 
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG ]b4_debug_flag[
-#endif
-
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
 # undef YYERROR_VERBOSE
index 7f73c26d736171588054fdf52e3fb648cddca973..30c5f672aff3a5f3ee959b5f3bfeeccab33617a3 100644 (file)
@@ -272,7 +272,8 @@ m4_define([b4_declare_yyparse],
 # Declaration that might either go into the header (if --defines)
 # or open coded in the parser body.
 m4_define([b4_shared_declarations],
-[b4_percent_code_get([[requires]])[
+[b4_declare_yydebug[
+]b4_percent_code_get([[requires]])[
 ]b4_token_enums_defines(b4_tokens)[
 ]b4_declare_yylstype[
 ]b4_declare_yyparse[
@@ -323,11 +324,6 @@ m4_if(b4_prefix, [yy], [],
 
 ]b4_null_define[
 
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG ]b4_debug_flag[
-#endif
-
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
 # undef YYERROR_VERBOSE