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:
Akim Demaille
2012-12-15 15:27:10 +01:00
parent 50977317cd
commit bcd80897f3
3 changed files with 18 additions and 18 deletions

View File

@@ -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])
# ------------------------------------------------------ # ------------------------------------------------------

View File

@@ -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[

View File

@@ -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])[