mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 14:23:04 +00:00
variables: rename namespace as api.namespace.
Discussed in http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00033.html * data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy): New. (b4_percent_define_use): New. Use it where applicable. * data/c++.m4: Replace uses of the variable "namespace" by "api.namespace". Default the latter to the former. * doc/bison.texinfo (Decl Summary): Document "namespace" as obsolete. Document api.namespace. Use @samp to document %define uses, keep @code for identifiers. * NEWS: Likewise. * tests/c++.at, tests/input.at: Test api.namespace instead of namespace. (The tests passed with namespace.)
This commit is contained in:
@@ -551,6 +551,44 @@ m4_popdef([b4_start])dnl
|
||||
m4_popdef([b4_end])dnl
|
||||
])])
|
||||
|
||||
|
||||
|
||||
## --------------------- ##
|
||||
## b4_percent_define_*. ##
|
||||
## --------------------- ##
|
||||
|
||||
|
||||
# b4_percent_define_use(VARIABLE)
|
||||
# -------------------------------
|
||||
# Declare that VARIABLE was used.
|
||||
m4_define([b4_percent_define_use],
|
||||
[m4_define([b4_percent_define_bison_variables(]$1[)])dnl
|
||||
])
|
||||
|
||||
|
||||
# b4_percent_define_copy_(SOURCE, DESTINATION, [|_loc|_syncline])
|
||||
# ---------------------------------------------------------------
|
||||
# Copy the value/loc/syncline from the variable SOURCE to the DESTINATION.
|
||||
# Ignore undefined values. "Use" the SOURCE so that there are no
|
||||
# complaints about unused variables.
|
||||
m4_define([b4_percent_define_copy_],
|
||||
[m4_ifdef([b4_percent_define$3(]$1[)],
|
||||
[m4_define([b4_percent_define$3(]$2[)],
|
||||
m4_defn([b4_percent_define$3(]$1[)]))])dnl
|
||||
])
|
||||
|
||||
|
||||
# b4_percent_define_copy(SOURCE, DESTINATION)
|
||||
# -------------------------------------------
|
||||
# Define the variable DESTINATION as a copy of SOURCE.
|
||||
m4_define([b4_percent_define_copy],
|
||||
[b4_percent_define_use([$1])dnl
|
||||
b4_percent_define_copy_([$1], [$2], [])dnl
|
||||
b4_percent_define_copy_([$1], [$2], [_loc])dnl
|
||||
b4_percent_define_copy_([$1], [$2], [_syncline])dnl
|
||||
])
|
||||
|
||||
|
||||
# b4_percent_define_get(VARIABLE)
|
||||
# -------------------------------
|
||||
# Mimic muscle_percent_define_get in ../src/muscle_tab.h exactly. That is, if
|
||||
@@ -562,7 +600,7 @@ m4_popdef([b4_end])dnl
|
||||
#
|
||||
# b4_percent_define_get([[foo]])
|
||||
m4_define([b4_percent_define_get],
|
||||
[m4_define([b4_percent_define_bison_variables(]$1[)])dnl
|
||||
[b4_percent_define_use([$1])dnl
|
||||
m4_ifdef([b4_percent_define(]$1[)], [m4_indir([b4_percent_define(]$1[)])])])
|
||||
|
||||
# b4_percent_define_get_loc(VARIABLE)
|
||||
@@ -613,7 +651,7 @@ m4_define([b4_percent_define_get_syncline],
|
||||
# b4_percent_define_ifdef([[foo]], [[it's defined]], [[it's undefined]])
|
||||
m4_define([b4_percent_define_ifdef],
|
||||
[m4_ifdef([b4_percent_define(]$1[)],
|
||||
[m4_define([b4_percent_define_bison_variables(]$1[)])$2],
|
||||
[b4_percent_define_use([$1])$2],
|
||||
[$3])])
|
||||
|
||||
|
||||
|
||||
25
data/c++.m4
25
data/c++.m4
@@ -24,22 +24,31 @@ m4_include(b4_pkgdatadir/[c.m4])
|
||||
## Default values. ##
|
||||
## ---------------- ##
|
||||
|
||||
# Default parser class name.
|
||||
b4_percent_define_default([[parser_class_name]], [[parser]])
|
||||
b4_percent_define_default([[location_type]], [[location]])
|
||||
b4_percent_define_default([[filename_type]], [[std::string]])
|
||||
b4_percent_define_default([[namespace]], m4_defn([b4_prefix]))
|
||||
|
||||
# api.namespace defaults to namespace, and then to b4_prefix.
|
||||
b4_percent_define_ifdef([api.namespace],
|
||||
[],
|
||||
[b4_percent_define_ifdef([namespace],
|
||||
[b4_percent_define_copy([namespace], [api.namespace])],
|
||||
[b4_percent_define_default([api.namespace],
|
||||
m4_defn([b4_prefix]))])])
|
||||
|
||||
b4_percent_define_default([[global_tokens_and_yystype]], [[false]])
|
||||
b4_percent_define_default([[define_location_comparison]],
|
||||
[m4_if(b4_percent_define_get([[filename_type]]),
|
||||
[std::string], [[true]], [[false]])])
|
||||
|
||||
|
||||
|
||||
## ----------- ##
|
||||
## Namespace. ##
|
||||
## ----------- ##
|
||||
|
||||
m4_define([b4_namespace_ref], [b4_percent_define_get([[namespace]])])
|
||||
m4_define([b4_namespace_ref], [b4_percent_define_get([[api.namespace]])])
|
||||
|
||||
|
||||
# Don't permit an empty b4_namespace_ref. Any `::parser::foo' appended to it
|
||||
# would compile as an absolute reference with `parser' in the global namespace.
|
||||
@@ -49,7 +58,7 @@ m4_define([b4_namespace_ref], [b4_percent_define_get([[namespace]])])
|
||||
# include the header, which is always generated. If we ever need to permit
|
||||
# internal linkage somehow, surely we can find a cleaner approach.
|
||||
m4_if(m4_bregexp(b4_namespace_ref, [^[ ]*$]), [-1], [],
|
||||
[b4_complain_at(b4_percent_define_get_loc([[namespace]]),
|
||||
[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
|
||||
[[namespace reference is empty]])])
|
||||
|
||||
# Instead of assuming the C++ compiler will do it, Bison should reject any
|
||||
@@ -60,20 +69,20 @@ m4_if(m4_bregexp(b4_namespace_ref, [^[ ]*$]), [-1], [],
|
||||
# Specifically, don't allow empty names as b4_namespace_open would just convert
|
||||
# those into anonymous namespaces, and that might tempt some users.
|
||||
m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*::]), [-1], [],
|
||||
[b4_complain_at(b4_percent_define_get_loc([[namespace]]),
|
||||
[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
|
||||
[[namespace reference has consecutive "::"]])])
|
||||
m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*$]), [-1], [],
|
||||
[b4_complain_at(b4_percent_define_get_loc([[namespace]]),
|
||||
[b4_complain_at(b4_percent_define_get_loc([[api.namespace]]),
|
||||
[[namespace reference has a trailing "::"]])])
|
||||
|
||||
m4_define([b4_namespace_open],
|
||||
[b4_user_code([b4_percent_define_get_syncline([[namespace]])
|
||||
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
|
||||
[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref),
|
||||
[^\(.\)[ ]*::], [\1])),
|
||||
[::], [ { namespace ])[ {]])])
|
||||
|
||||
m4_define([b4_namespace_close],
|
||||
[b4_user_code([b4_percent_define_get_syncline([[namespace]])
|
||||
[b4_user_code([b4_percent_define_get_syncline([[api.namespace]])
|
||||
m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
|
||||
[^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*],
|
||||
[\1])),
|
||||
|
||||
Reference in New Issue
Block a user