From: Akim Demaille Date: Sat, 15 Dec 2012 14:27:10 +0000 (+0100) Subject: skeletons: simplify the handling of default api.location.type X-Git-Tag: v2.7.90~251 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/bcd80897f3b414973fc34dc2ec57ce4df2e69253?ds=inline 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. --- diff --git a/data/bison.m4 b/data/bison.m4 index bd8af095..6f06266d 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -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]) # ------------------------------------------------------ diff --git a/data/glr.cc b/data/glr.cc index 3cecfd8e..9879c305 100644 --- a/data/glr.cc +++ b/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 #include #include ]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[ diff --git a/data/lalr1.cc b/data/lalr1.cc index fa3a48d4..37522aa3 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -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 # include ]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])[