mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
skeletons: simplify the handling of default api.location.type
* data/bison.m4 (b4_bison_locations_if): New. * data/glr.cc, data/lalr1.cc: Use it.
This commit is contained in:
@@ -829,6 +829,13 @@ b4_percent_define_if_define([parse.assert])
|
|||||||
b4_percent_define_if_define([parse.trace])
|
b4_percent_define_if_define([parse.trace])
|
||||||
b4_percent_define_if_define([variant])
|
b4_percent_define_if_define([variant])
|
||||||
|
|
||||||
|
# b4_bison_locations_if([IF-TRUE])
|
||||||
|
# --------------------------------
|
||||||
|
# Expand IF-TRUE if using locations, and using the default location
|
||||||
|
# type.
|
||||||
|
m4_define([b4_bison_locations_if],
|
||||||
|
[b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [], [$1])])])
|
||||||
|
|
||||||
|
|
||||||
# b4_error_verbose_if([IF-ERRORS-ARE-VERBOSE], [IF-NOT])
|
# b4_error_verbose_if([IF-ERRORS-ARE-VERBOSE], [IF-NOT])
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
|
|||||||
16
data/glr.cc
16
data/glr.cc
@@ -47,8 +47,7 @@
|
|||||||
m4_define([b4_pure_flag], [1])
|
m4_define([b4_pure_flag], [1])
|
||||||
|
|
||||||
m4_include(b4_pkgdatadir/[c++.m4])
|
m4_include(b4_pkgdatadir/[c++.m4])
|
||||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
b4_bison_locations_if([m4_include(b4_pkgdatadir/[location.cc])])
|
||||||
[m4_include(b4_pkgdatadir/[location.cc])])])
|
|
||||||
|
|
||||||
m4_define([b4_parser_class_name],
|
m4_define([b4_parser_class_name],
|
||||||
[b4_percent_define_get([[parser_class_name]])])
|
[b4_percent_define_get([[parser_class_name]])])
|
||||||
@@ -84,10 +83,9 @@ b4_locations_if([,
|
|||||||
]])[
|
]])[
|
||||||
|
|
||||||
# Hijack the initial action to initialize the locations.
|
# Hijack the initial action to initialize the locations.
|
||||||
]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
]b4_bison_locations_if([m4_define([b4_initial_action],
|
||||||
[m4_define([b4_initial_action],
|
|
||||||
[yylloc.initialize ();]m4_ifdef([b4_initial_action], [
|
[yylloc.initialize ();]m4_ifdef([b4_initial_action], [
|
||||||
m4_defn([b4_initial_action])]))])])[
|
m4_defn([b4_initial_action])]))])[
|
||||||
|
|
||||||
# Hijack the post prologue to insert early definition of YYLLOC_DEFAULT
|
# Hijack the post prologue to insert early definition of YYLLOC_DEFAULT
|
||||||
# and declaration of yyerror.
|
# and declaration of yyerror.
|
||||||
@@ -224,16 +222,14 @@ b4_percent_code_get([[requires]])[
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>]b4_defines_if([
|
#include <iostream>]b4_defines_if([
|
||||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
b4_bison_locations_if([[#include "location.hh"]])])[
|
||||||
[[#include "location.hh"]])])])[
|
|
||||||
|
|
||||||
]b4_YYDEBUG_define[
|
]b4_YYDEBUG_define[
|
||||||
|
|
||||||
]b4_namespace_open[
|
]b4_namespace_open[
|
||||||
]b4_defines_if([],
|
]b4_defines_if([],
|
||||||
[b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
[b4_bison_locations_if([b4_position_define
|
||||||
[b4_position_define
|
b4_location_define])])[
|
||||||
b4_location_define])])])[
|
|
||||||
|
|
||||||
/// A Bison parser.
|
/// A Bison parser.
|
||||||
class ]b4_parser_class_name[
|
class ]b4_parser_class_name[
|
||||||
|
|||||||
@@ -120,10 +120,9 @@ m4_pushdef([b4_copyright_years],
|
|||||||
m4_define([b4_parser_class_name],
|
m4_define([b4_parser_class_name],
|
||||||
[b4_percent_define_get([[parser_class_name]])])
|
[b4_percent_define_get([[parser_class_name]])])
|
||||||
|
|
||||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
b4_bison_locations_if([# Backward compatibility.
|
||||||
[# Backward compatibility.
|
|
||||||
m4_define([b4_location_constructors])
|
m4_define([b4_location_constructors])
|
||||||
m4_include(b4_pkgdatadir/[location.cc])])])
|
m4_include(b4_pkgdatadir/[location.cc])])
|
||||||
m4_include(b4_pkgdatadir/[stack.hh])
|
m4_include(b4_pkgdatadir/[stack.hh])
|
||||||
b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
|
b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
|
||||||
|
|
||||||
@@ -139,8 +138,7 @@ m4_define([b4_shared_declarations],
|
|||||||
# include <stdexcept>
|
# include <stdexcept>
|
||||||
# include <string>]b4_defines_if([[
|
# include <string>]b4_defines_if([[
|
||||||
# include "stack.hh"
|
# include "stack.hh"
|
||||||
]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
]b4_bison_locations_if([[# include "location.hh"]])])[
|
||||||
[[# include "location.hh"]])])])[
|
|
||||||
|
|
||||||
]b4_YYDEBUG_define[
|
]b4_YYDEBUG_define[
|
||||||
|
|
||||||
@@ -148,9 +146,8 @@ m4_define([b4_shared_declarations],
|
|||||||
|
|
||||||
]b4_defines_if([],
|
]b4_defines_if([],
|
||||||
[b4_stack_define
|
[b4_stack_define
|
||||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
b4_bison_locations_if([b4_position_define
|
||||||
[b4_position_define
|
b4_location_define])])[
|
||||||
b4_location_define])])])[
|
|
||||||
|
|
||||||
]b4_variant_if([b4_variant_define])[
|
]b4_variant_if([b4_variant_define])[
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user