mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
skeletons: use header guards.
* data/glr.c, data/glr.cc, data/yacc.c: here. * NEWS: Document it.
This commit is contained in:
15
NEWS
15
NEWS
@@ -8,14 +8,23 @@ GNU Bison NEWS
|
|||||||
and remove the definition of yystype (removal announced since Bison
|
and remove the definition of yystype (removal announced since Bison
|
||||||
1.875).
|
1.875).
|
||||||
|
|
||||||
** Changes in regular C parsers (yacc.c):
|
** The generated header is included (yacc.c)
|
||||||
|
|
||||||
*** The generated header is included
|
|
||||||
|
|
||||||
Instead of duplicating the content of the generated header (definition of
|
Instead of duplicating the content of the generated header (definition of
|
||||||
YYSTYPE, yyltype etc.), the generated parser now includes it, as was
|
YYSTYPE, yyltype etc.), the generated parser now includes it, as was
|
||||||
already the case for GLR or C++ parsers.
|
already the case for GLR or C++ parsers.
|
||||||
|
|
||||||
|
** Header guards (yacc.c, glr.c, glr.cc)
|
||||||
|
|
||||||
|
The generated headers are now guarded, as is already the case for C++
|
||||||
|
parsers (lalr1.cc). For intance, with --defines=foo.h:
|
||||||
|
|
||||||
|
#ifndef YY_FOO_H
|
||||||
|
# define YY_FOO_H
|
||||||
|
...
|
||||||
|
#endif /* !YY_FOO_H */
|
||||||
|
|
||||||
|
|
||||||
* Noteworthy changes in release 2.5.1 (2012-06-05) [stable]
|
* Noteworthy changes in release 2.5.1 (2012-06-05) [stable]
|
||||||
|
|
||||||
** Future changes:
|
** Future changes:
|
||||||
|
|||||||
21
data/glr.c
21
data/glr.c
@@ -166,6 +166,7 @@ m4_define([b4_shared_declarations],
|
|||||||
[b4_percent_code_get([[requires]])[
|
[b4_percent_code_get([[requires]])[
|
||||||
]b4_token_enums(b4_tokens)[
|
]b4_token_enums(b4_tokens)[
|
||||||
]b4_declare_yylstype[
|
]b4_declare_yylstype[
|
||||||
|
]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[
|
||||||
]b4_percent_code_get([[provides]])[]dnl
|
]b4_percent_code_get([[provides]])[]dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -472,9 +473,6 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Prevent warning if -Wmissing-prototypes. */
|
|
||||||
]b4_c_ansi_function_decl([yyparse], [int], b4_parse_param)[
|
|
||||||
|
|
||||||
/* Error token number */
|
/* Error token number */
|
||||||
#define YYTERROR 1
|
#define YYTERROR 1
|
||||||
|
|
||||||
@@ -2637,15 +2635,12 @@ m4_if(b4_skeleton, ["glr.c"],
|
|||||||
[b4_defines_if(
|
[b4_defines_if(
|
||||||
[@output(b4_spec_defines_file@)@
|
[@output(b4_spec_defines_file@)@
|
||||||
b4_copyright([Skeleton interface for Bison GLR parsers in C],
|
b4_copyright([Skeleton interface for Bison GLR parsers in C],
|
||||||
[2002-2012])
|
[2002-2012])[
|
||||||
|
|
||||||
b4_shared_declarations
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
|
]b4_shared_declarations[
|
||||||
b4_pure_if([],
|
]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
||||||
[[extern YYSTYPE ]b4_prefix[lval;]])
|
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[
|
||||||
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
b4_locations_if([b4_pure_if([],
|
]])])
|
||||||
[extern YYLTYPE ]b4_prefix[lloc;])
|
|
||||||
])
|
|
||||||
])])
|
|
||||||
m4_divert_pop(0)
|
m4_divert_pop(0)
|
||||||
|
|||||||
11
data/glr.cc
11
data/glr.cc
@@ -230,8 +230,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
|
|||||||
|
|
||||||
/* C++ GLR parser skeleton written by Akim Demaille. */
|
/* C++ GLR parser skeleton written by Akim Demaille. */
|
||||||
|
|
||||||
#ifndef PARSER_HEADER_H
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
# define PARSER_HEADER_H
|
|
||||||
|
|
||||||
]b4_percent_code_get([[requires]])[
|
]b4_percent_code_get([[requires]])[
|
||||||
|
|
||||||
@@ -362,8 +361,6 @@ b4_percent_define_flag_if([[global_tokens_and_yystype]],
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
]b4_namespace_close[
|
]b4_namespace_close[
|
||||||
|
]b4_percent_code_get([[provides]])[
|
||||||
]b4_percent_code_get([[provides]])[]dnl
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
|
]m4_divert_pop(0)
|
||||||
[#endif /* ! defined PARSER_HEADER_H */]
|
|
||||||
m4_divert_pop(0)
|
|
||||||
|
|||||||
73
data/yacc.c
73
data/yacc.c
@@ -225,18 +225,10 @@ m4_define([b4_declare_parser_state_variables], [b4_pure_if([[
|
|||||||
YYSIZE_T yyes_capacity;]])])
|
YYSIZE_T yyes_capacity;]])])
|
||||||
|
|
||||||
|
|
||||||
# b4_shared_declarations
|
# b4_declare_yyparse_push_
|
||||||
# ----------------------
|
# ------------------------
|
||||||
# Declaration that might either go into the header (if --defines)
|
m4_define([b4_declare_yyparse_push_],
|
||||||
# or open coded in the parser body.
|
[[typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
|
||||||
m4_define([b4_shared_declarations],
|
|
||||||
[b4_percent_code_get([[requires]])[
|
|
||||||
]b4_token_enums_defines(b4_tokens)[
|
|
||||||
]b4_declare_yylstype[
|
|
||||||
]b4_push_if([[
|
|
||||||
#ifndef YYPUSH_DECLS
|
|
||||||
# define YYPUSH_DECLS
|
|
||||||
typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
|
|
||||||
enum { YYPUSH_MORE = 4 };
|
enum { YYPUSH_MORE = 4 };
|
||||||
]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param)
|
]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param)
|
||||||
])b4_c_function_decl([b4_prefix[push_parse]], [[int]],
|
])b4_c_function_decl([b4_prefix[push_parse]], [[int]],
|
||||||
@@ -251,10 +243,40 @@ b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]],
|
|||||||
b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
|
b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
|
||||||
[[[void]], []])
|
[[[void]], []])
|
||||||
b4_c_function_decl([b4_prefix[pstate_delete]], [[void]],
|
b4_c_function_decl([b4_prefix[pstate_delete]], [[void]],
|
||||||
[[b4_prefix[pstate *yyps]], [[yyps]]])[
|
[[b4_prefix[pstate *yyps]], [[yyps]]])dnl
|
||||||
#endif
|
])
|
||||||
]])
|
|
||||||
b4_percent_code_get([[provides]])[]dnl
|
# b4_declare_yyparse_
|
||||||
|
# -------------------
|
||||||
|
# When not the push parser.
|
||||||
|
m4_define([b4_declare_yyparse_],
|
||||||
|
[[#ifdef YYPARSE_PARAM
|
||||||
|
]b4_c_function_decl(b4_prefix[parse], [int],
|
||||||
|
[[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
|
||||||
|
#else /* ! YYPARSE_PARAM */
|
||||||
|
]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[
|
||||||
|
#endif /* ! YYPARSE_PARAM */]dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# b4_declare_yyparse
|
||||||
|
# ------------------
|
||||||
|
m4_define([b4_declare_yyparse],
|
||||||
|
[b4_push_if([b4_declare_yyparse_push_],
|
||||||
|
[b4_declare_yyparse_])[]dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# b4_shared_declarations
|
||||||
|
# ----------------------
|
||||||
|
# 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_token_enums_defines(b4_tokens)[
|
||||||
|
]b4_declare_yylstype[
|
||||||
|
]b4_declare_yyparse[
|
||||||
|
]b4_percent_code_get([[provides]])[]dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
## -------------- ##
|
## -------------- ##
|
||||||
@@ -1373,20 +1395,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
|
|||||||
}
|
}
|
||||||
#endif /* YYERROR_VERBOSE */
|
#endif /* YYERROR_VERBOSE */
|
||||||
|
|
||||||
]b4_yydestruct_generate([b4_c_function_def])b4_push_if([], [[
|
]b4_yydestruct_generate([b4_c_function_def])[
|
||||||
|
|
||||||
|
]b4_pure_if([], [
|
||||||
/* Prevent warnings from -Wmissing-prototypes. */
|
|
||||||
#ifdef YYPARSE_PARAM
|
|
||||||
]b4_c_function_decl([yyparse], [int],
|
|
||||||
[[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
|
|
||||||
#else /* ! YYPARSE_PARAM */
|
|
||||||
]b4_c_function_decl([yyparse], [int], b4_parse_param)[
|
|
||||||
#endif /* ! YYPARSE_PARAM */]])b4_pure_if([], [
|
|
||||||
|
|
||||||
b4_declare_scanner_communication_variables])[]b4_push_if([[
|
b4_declare_scanner_communication_variables])[]b4_push_if([[
|
||||||
|
|
||||||
|
|
||||||
struct yypstate
|
struct yypstate
|
||||||
{]b4_declare_parser_state_variables[
|
{]b4_declare_parser_state_variables[
|
||||||
/* Used to determine if this is the first time this instance has
|
/* Used to determine if this is the first time this instance has
|
||||||
@@ -2054,8 +2068,11 @@ b4_defines_if(
|
|||||||
[@output(b4_spec_defines_file@)@
|
[@output(b4_spec_defines_file@)@
|
||||||
b4_copyright([Bison interface for Yacc-like parsers in C],
|
b4_copyright([Bison interface for Yacc-like parsers in C],
|
||||||
[1984, 1989-1990, 2000-2012])[
|
[1984, 1989-1990, 2000-2012])[
|
||||||
|
|
||||||
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
]b4_shared_declarations[
|
]b4_shared_declarations[
|
||||||
]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
||||||
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])dnl
|
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[
|
||||||
])dnl b4_defines_if
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
|
]])dnl b4_defines_if
|
||||||
m4_divert_pop(0)
|
m4_divert_pop(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user