mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +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
|
||||
# ------------------
|
||||
# Declaration that might either go into the header (if --defines)
|
||||
# or open coded in the parser body. Declare YYSTYPE and YYLTYPE.
|
||||
# Declarations that might either go into the header (if --defines) or
|
||||
# in the parser body. Declare YYSTYPE/YYLTYPE, and yylval/yylloc.
|
||||
m4_define([b4_declare_yylstype],
|
||||
[[#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
]m4_ifdef([b4_stype],
|
||||
@@ -566,6 +566,9 @@ typedef struct YYLTYPE
|
||||
# define YYLTYPE_IS_DECLARED 1
|
||||
# define YYLTYPE_IS_TRIVIAL 1
|
||||
#endif]])
|
||||
|
||||
b4_pure_if([], [[extern YYSTYPE ]b4_prefix[lval;
|
||||
]b4_locations_if([[extern YYLTYPE ]b4_prefix[lloc;]])])[]dnl
|
||||
])
|
||||
|
||||
# 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_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])[
|
||||
]])])
|
||||
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_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])[
|
||||
]])dnl b4_defines_if
|
||||
m4_divert_pop(0)
|
||||
|
||||
Reference in New Issue
Block a user