From: Akim Demaille Date: Wed, 14 Apr 2010 15:56:38 +0000 (+0200) Subject: lalr1.cc: don't generate location.hh when location_type is defined X-Git-Tag: v2.7.90~684 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/7789b6e3e7199a00437f03591a4605e6c042bdea lalr1.cc: don't generate location.hh when location_type is defined * data/bison.m4 (b4_percent_define_get): Accept a default value. * data/c++.m4: Do not provide a default value for the %define variable location_type, rather, use b4_percent_define_get with a default argument where its value is needed. * data/lalr1.cc: Do not load location.cc (which outputs both location.hh and position.hh) if the user defined location_type. Do not include location.hh either. --- diff --git a/ChangeLog b/ChangeLog index 4b9bb5ee..216c2e8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-05-04 Akim Demaille + + lalr1.cc: don't generate location.hh when location_type is defined + * data/bison.m4 (b4_percent_define_get): Accept a default value. + * data/c++.m4: Do not provide a default value for the %define + variable location_type, rather, use b4_percent_define_get with a + default argument where its value is needed. + * data/lalr1.cc: Do not load location.cc (which outputs both + location.hh and position.hh) if the user defined location_type. + Do not include location.hh either. + 2010-05-04 Akim Demaille lalr1.cc: minor refactoring. diff --git a/data/bison.m4 b/data/bison.m4 index 5a5df0f3..079a5e56 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -563,10 +563,11 @@ m4_define([b4_percent_define_use], [m4_define([b4_percent_define_bison_variables(]$1[)])dnl ]) -# b4_percent_define_get(VARIABLE) -# ------------------------------- -# Mimic muscle_percent_define_get in ../src/muscle-tab.h exactly. That is, if -# the %define variable VARIABLE is defined, emit its value. Also, record +# b4_percent_define_get(VARIABLE, [DEFAULT]) +# ------------------------------------------ +# Mimic muscle_percent_define_get in ../src/muscle-tab.h. That is, if +# the %define variable VARIABLE is defined, emit its value. Contrary +# to its C counterpart, return DEFAULT otherwise. Also, record # Bison's usage of VARIABLE by defining # b4_percent_define_bison_variables(VARIABLE). # @@ -575,7 +576,9 @@ m4_define([b4_percent_define_use], # b4_percent_define_get([[foo]]) m4_define([b4_percent_define_get], [b4_percent_define_use([$1])dnl -m4_ifdef([b4_percent_define(]$1[)], [m4_indir([b4_percent_define(]$1[)])])]) +m4_ifdef([b4_percent_define(]$1[)], + [m4_indir([b4_percent_define(]$1[)])], + [$2])]) # b4_percent_define_get_loc(VARIABLE) # ----------------------------------- diff --git a/data/c++.m4 b/data/c++.m4 index 80c74511..6033e174 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -24,7 +24,12 @@ m4_include(b4_pkgdatadir/[c.m4]) ## ---------------- ## b4_percent_define_default([[parser_class_name]], [[parser]]) -b4_percent_define_default([[location_type]], [[location]]) + +# Don't do that so that we remember whether we're using a user +# request, or the default value. +# +# b4_percent_define_default([[location_type]], [[location_type]]) + b4_percent_define_default([[filename_type]], [[std::string]]) b4_percent_define_default([[api.namespace]], m4_defn([b4_prefix])) @@ -123,7 +128,8 @@ m4_define([b4_public_types_declare], typedef YYSTYPE semantic_type; #endif]b4_locations_if([ /// Symbol locations. - typedef b4_percent_define_get([[location_type]]) location_type;])[ + typedef b4_percent_define_get([[location_type]], + [[location]]) location_type;])[ /// Syntax errors thrown from user actions. struct syntax_error : std::runtime_error diff --git a/data/lalr1.cc b/data/lalr1.cc index b0b075ca..7cb7db62 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -124,10 +124,10 @@ m4_define([b4_parser_class_name], b4_defines_if([], [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) -b4_locations_if( -[# Backward compatibility. -m4_define([b4_location_constructors]) -m4_include(b4_pkgdatadir/[location.cc])]) +b4_locations_if([b4_percent_define_ifdef([[location_type]], [], + [# Backward compatibility. + m4_define([b4_location_constructors]) + m4_include(b4_pkgdatadir/[location.cc])])]) m4_include(b4_pkgdatadir/[stack.hh]) b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])]) @@ -149,8 +149,9 @@ dnl FIXME: This is wrong, we want computed header guards. #include #include #include -]b4_locations_if([#include "location.hh"])[ #include "stack.hh" +]b4_locations_if([b4_percent_define_ifdef([[location_type]], [], + [[#include "location.hh"]])])[ ]b4_variant_if([b4_namespace_open b4_variant_define