mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
glr.c, yacc.c: declare yydebug in the header.
* 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.
This commit is contained in:
18
NEWS
18
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]
|
||||
|
||||
|
||||
12
data/c.m4
12
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
|
||||
])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user