mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
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.
This commit is contained in:
11
ChangeLog
11
ChangeLog
@@ -1,3 +1,14 @@
|
||||
2010-05-04 Akim Demaille <demaille@gostai.com>
|
||||
|
||||
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 <demaille@gostai.com>
|
||||
|
||||
lalr1.cc: minor refactoring.
|
||||
|
||||
@@ -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)
|
||||
# -----------------------------------
|
||||
|
||||
10
data/c++.m4
10
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
|
||||
|
||||
@@ -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 <stdexcept>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
]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
|
||||
|
||||
Reference in New Issue
Block a user