mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 02:33:03 +00:00
c skeletons: factor the declaration of yylloc and yylval.
There is one difference: now, even without --defines, we generate extern declarations for these variables. The factoring is worth it. * data/c.m4 (b4_declare_yylstype): Declare them. * data/glr.c, data/yacc.c: Adjust.
This commit is contained in:
@@ -537,8 +537,8 @@ b4_locations_if([, yylocationp])[]b4_user_args[);
|
|||||||
|
|
||||||
# b4_declare_yylstype
|
# b4_declare_yylstype
|
||||||
# ------------------
|
# ------------------
|
||||||
# Declaration that might either go into the header (if --defines)
|
# Declarations that might either go into the header (if --defines) or
|
||||||
# or open coded in the parser body. Declare YYSTYPE and YYLTYPE.
|
# in the parser body. Declare YYSTYPE/YYLTYPE, and yylval/yylloc.
|
||||||
m4_define([b4_declare_yylstype],
|
m4_define([b4_declare_yylstype],
|
||||||
[[#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
[[#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||||
]m4_ifdef([b4_stype],
|
]m4_ifdef([b4_stype],
|
||||||
@@ -566,6 +566,9 @@ typedef struct YYLTYPE
|
|||||||
# define YYLTYPE_IS_DECLARED 1
|
# define YYLTYPE_IS_DECLARED 1
|
||||||
# define YYLTYPE_IS_TRIVIAL 1
|
# define YYLTYPE_IS_TRIVIAL 1
|
||||||
#endif]])
|
#endif]])
|
||||||
|
|
||||||
|
b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
||||||
|
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[]dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
# b4_declare_yydebug
|
# b4_declare_yydebug
|
||||||
|
|||||||
@@ -2635,8 +2635,6 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C],
|
|||||||
|
|
||||||
]b4_cpp_guard_open([b4_spec_defines_file])[
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
]b4_shared_declarations[
|
]b4_shared_declarations[
|
||||||
]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
|
||||||
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[
|
|
||||||
]b4_cpp_guard_close([b4_spec_defines_file])[
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
]])])
|
]])])
|
||||||
m4_divert_pop(0)
|
m4_divert_pop(0)
|
||||||
|
|||||||
@@ -2067,8 +2067,6 @@ b4_copyright([Bison interface for Yacc-like parsers in C],
|
|||||||
|
|
||||||
]b4_cpp_guard_open([b4_spec_defines_file])[
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
]b4_shared_declarations[
|
]b4_shared_declarations[
|
||||||
]b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
|
||||||
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[
|
|
||||||
]b4_cpp_guard_close([b4_spec_defines_file])[
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
]])dnl b4_defines_if
|
]])dnl b4_defines_if
|
||||||
m4_divert_pop(0)
|
m4_divert_pop(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user