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([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])
|
||||
# ------------------------------------------------------
|
||||
|
||||
16
data/glr.cc
16
data/glr.cc
@@ -47,8 +47,7 @@
|
||||
m4_define([b4_pure_flag], [1])
|
||||
|
||||
m4_include(b4_pkgdatadir/[c++.m4])
|
||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[m4_include(b4_pkgdatadir/[location.cc])])])
|
||||
b4_bison_locations_if([m4_include(b4_pkgdatadir/[location.cc])])
|
||||
|
||||
m4_define([b4_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.
|
||||
]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[m4_define([b4_initial_action],
|
||||
]b4_bison_locations_if([m4_define([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
|
||||
# and declaration of yyerror.
|
||||
@@ -224,16 +222,14 @@ b4_percent_code_get([[requires]])[
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <iostream>]b4_defines_if([
|
||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[[#include "location.hh"]])])])[
|
||||
b4_bison_locations_if([[#include "location.hh"]])])[
|
||||
|
||||
]b4_YYDEBUG_define[
|
||||
|
||||
]b4_namespace_open[
|
||||
]b4_defines_if([],
|
||||
[b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[b4_position_define
|
||||
b4_location_define])])])[
|
||||
[b4_bison_locations_if([b4_position_define
|
||||
b4_location_define])])[
|
||||
|
||||
/// A Bison parser.
|
||||
class ]b4_parser_class_name[
|
||||
|
||||
@@ -120,10 +120,9 @@ m4_pushdef([b4_copyright_years],
|
||||
m4_define([b4_parser_class_name],
|
||||
[b4_percent_define_get([[parser_class_name]])])
|
||||
|
||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[# Backward compatibility.
|
||||
b4_bison_locations_if([# Backward compatibility.
|
||||
m4_define([b4_location_constructors])
|
||||
m4_include(b4_pkgdatadir/[location.cc])])])
|
||||
m4_include(b4_pkgdatadir/[location.cc])])
|
||||
m4_include(b4_pkgdatadir/[stack.hh])
|
||||
b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
|
||||
|
||||
@@ -139,8 +138,7 @@ m4_define([b4_shared_declarations],
|
||||
# include <stdexcept>
|
||||
# include <string>]b4_defines_if([[
|
||||
# include "stack.hh"
|
||||
]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[[# include "location.hh"]])])])[
|
||||
]b4_bison_locations_if([[# include "location.hh"]])])[
|
||||
|
||||
]b4_YYDEBUG_define[
|
||||
|
||||
@@ -148,9 +146,8 @@ m4_define([b4_shared_declarations],
|
||||
|
||||
]b4_defines_if([],
|
||||
[b4_stack_define
|
||||
b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
|
||||
[b4_position_define
|
||||
b4_location_define])])])[
|
||||
b4_bison_locations_if([b4_position_define
|
||||
b4_location_define])])[
|
||||
|
||||
]b4_variant_if([b4_variant_define])[
|
||||
|
||||
|
||||
Reference in New Issue
Block a user