mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
yacc.c: provide the Bison version as an integral macro
Suggested by Balazs Scheidler. https://github.com/akimd/bison/issues/55 * src/muscle-tab.c (muscle_init): Move/rename `b4_version` to/as... * src/output.c (prepare): `b4_version_string`. Also define `b4_version`. * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4, * data/skeletons/java.m4: Adjust. * doc/bison.texi: Document it.
This commit is contained in:
6
NEWS
6
NEWS
@@ -7,6 +7,12 @@ GNU Bison NEWS
|
|||||||
In Yacc mode, all the tokens are defined twice: once as an enum, and then
|
In Yacc mode, all the tokens are defined twice: once as an enum, and then
|
||||||
as a macro. YYEMPTY was missing its macro.
|
as a macro. YYEMPTY was missing its macro.
|
||||||
|
|
||||||
|
** Changes
|
||||||
|
|
||||||
|
The YYBISON macro in generated "regular C parsers" (from the "yacc.c"
|
||||||
|
skeleton) used to be defined to 1. It is now defined to the version of
|
||||||
|
Bison as an integer (e.g., 30704 for version 3.7.4).
|
||||||
|
|
||||||
* Noteworthy changes in release 3.7.3 (2020-10-13) [stable]
|
* Noteworthy changes in release 3.7.3 (2020-10-13) [stable]
|
||||||
|
|
||||||
** Bug fixes
|
** Bug fixes
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ m4_define([m4_shift4], [m4_shift(m4_shift(m4_shift(m4_shift($@))))])
|
|||||||
# b4_generated_by
|
# b4_generated_by
|
||||||
# ---------------
|
# ---------------
|
||||||
m4_define([b4_generated_by],
|
m4_define([b4_generated_by],
|
||||||
[b4_comment([A Bison parser, made by GNU Bison b4_version.])
|
[b4_comment([A Bison parser, made by GNU Bison b4_version_string.])
|
||||||
])
|
])
|
||||||
|
|
||||||
# b4_copyright(TITLE, [YEARS])
|
# b4_copyright(TITLE, [YEARS])
|
||||||
|
|||||||
@@ -58,11 +58,11 @@ m4_define([b4_cpp_guard_close],
|
|||||||
# b4_pull_flag if they use the values of the %define variables api.pure or
|
# b4_pull_flag if they use the values of the %define variables api.pure or
|
||||||
# api.push-pull.
|
# api.push-pull.
|
||||||
m4_define([b4_identification],
|
m4_define([b4_identification],
|
||||||
[[/* Identify Bison output. */
|
[[/* Identify Bison output, and Bison version. */
|
||||||
#define YYBISON 1
|
#define YYBISON ]b4_version[
|
||||||
|
|
||||||
/* Bison version. */
|
/* Bison version string. */
|
||||||
#define YYBISON_VERSION "]b4_version["
|
#define YYBISON_VERSION "]b4_version_string["
|
||||||
|
|
||||||
/* Skeleton name. */
|
/* Skeleton name. */
|
||||||
#define YYSKELETON_NAME ]b4_skeleton[]m4_ifdef([b4_pure_flag], [[
|
#define YYSKELETON_NAME ]b4_skeleton[]m4_ifdef([b4_pure_flag], [[
|
||||||
|
|||||||
@@ -103,12 +103,12 @@ m4_define([b4_location_type_if],
|
|||||||
# b4_identification
|
# b4_identification
|
||||||
# -----------------
|
# -----------------
|
||||||
m4_define([b4_identification],
|
m4_define([b4_identification],
|
||||||
[/** Version number for the Bison executable that generated this parser. */
|
[[/** Version number for the Bison executable that generated this parser. */
|
||||||
public static immutable string yy_bison_version = "b4_version";
|
public static immutable string yy_bison_version = "]b4_version_string[";
|
||||||
|
|
||||||
/** Name of the skeleton that generated this parser. */
|
/** Name of the skeleton that generated this parser. */
|
||||||
public static immutable string yy_bison_skeleton = b4_skeleton;
|
public static immutable string yy_bison_skeleton = ]b4_skeleton[;
|
||||||
])
|
]])
|
||||||
|
|
||||||
|
|
||||||
## ------------ ##
|
## ------------ ##
|
||||||
|
|||||||
@@ -71,12 +71,12 @@ m4_define([b4_lexer_if],
|
|||||||
# b4_identification
|
# b4_identification
|
||||||
# -----------------
|
# -----------------
|
||||||
m4_define([b4_identification],
|
m4_define([b4_identification],
|
||||||
[ /** Version number for the Bison executable that generated this parser. */
|
[[ /** Version number for the Bison executable that generated this parser. */
|
||||||
public static final String bisonVersion = "b4_version";
|
public static final String bisonVersion = "]b4_version_string[";
|
||||||
|
|
||||||
/** Name of the skeleton that generated this parser. */
|
/** Name of the skeleton that generated this parser. */
|
||||||
public static final String bisonSkeleton = b4_skeleton;
|
public static final String bisonSkeleton = ]b4_skeleton[;
|
||||||
])
|
]])
|
||||||
|
|
||||||
|
|
||||||
## ------------ ##
|
## ------------ ##
|
||||||
|
|||||||
@@ -15434,6 +15434,12 @@ Macro to discard a value from the parser stack and fake a lookahead
|
|||||||
token. @xref{Action Features}.
|
token. @xref{Action Features}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Macro} YYBISON
|
||||||
|
The version of Bison as an integer, for instance 30704 for version 3.7.4.
|
||||||
|
Defined in @file{yacc.c} only. Before version 3.7.4, @code{YYBISON} was
|
||||||
|
defined to 1.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
@deffn {Variable} yychar
|
@deffn {Variable} yychar
|
||||||
External integer variable that contains the integer value of the
|
External integer variable that contains the integer value of the
|
||||||
lookahead token. (In a pure parser, it is a local variable within
|
lookahead token. (In a pure parser, it is a local variable within
|
||||||
|
|||||||
@@ -127,9 +127,6 @@ muscle_init (void)
|
|||||||
|
|
||||||
muscle_table = hash_xinitialize (HT_INITIAL_CAPACITY, NULL, hash_muscle,
|
muscle_table = hash_xinitialize (HT_INITIAL_CAPACITY, NULL, hash_muscle,
|
||||||
hash_compare_muscles, muscle_entry_free);
|
hash_compare_muscles, muscle_entry_free);
|
||||||
|
|
||||||
/* Version and input file. */
|
|
||||||
MUSCLE_INSERT_STRING ("version", VERSION);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
#include "scan-skel.h"
|
#include "scan-skel.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "tables.h"
|
#include "tables.h"
|
||||||
|
#include "strversion.h"
|
||||||
|
|
||||||
static struct obstack format_obstack;
|
static struct obstack format_obstack;
|
||||||
|
|
||||||
@@ -807,6 +808,9 @@ prepare (void)
|
|||||||
char const *cp = getenv ("BISON_USE_PUSH_FOR_PULL");
|
char const *cp = getenv ("BISON_USE_PUSH_FOR_PULL");
|
||||||
bool use_push_for_pull_flag = cp && *cp && strtol (cp, 0, 10);
|
bool use_push_for_pull_flag = cp && *cp && strtol (cp, 0, 10);
|
||||||
|
|
||||||
|
/* Versions. */
|
||||||
|
MUSCLE_INSERT_STRING ("version_string", VERSION);
|
||||||
|
MUSCLE_INSERT_INT ("version", strversion_to_int (VERSION));
|
||||||
MUSCLE_INSERT_INT ("required_version", required_version);
|
MUSCLE_INSERT_INT ("required_version", required_version);
|
||||||
|
|
||||||
/* Flags. */
|
/* Flags. */
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
USER NAME SPACE" below. */
|
USER NAME SPACE" below. */
|
||||||
|
|
||||||
/* Identify Bison output. */
|
/* Identify Bison output. */
|
||||||
#define YYBISON 1
|
#define YYBISON 30703
|
||||||
|
|
||||||
/* Bison version. */
|
/* Bison version. */
|
||||||
#define YYBISON_VERSION "3.7.3.7-d831b"
|
#define YYBISON_VERSION "3.7.3.7-d831b"
|
||||||
|
|||||||
Reference in New Issue
Block a user