mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Clean up %define and %code implementation in M4 some. Most
importantly, rename all related macros to be in the b4_percent_define and b4_percent_code namespaces. Also, complete support for `.' in %define variable names and %code qualifiers. * data/bison.m4 (b4_check_user_names): Check for special "SKELETON-NAMESPACE(name)" macros instead of using two nested m4_foreach loops. (b4_get_percent_define, b4_get_percent_code): Rename to... (b4_percent_define_get, b4_percent_code_get): ... these. Extend documentation with examples. For SKELETON-NAMESPACE (as documented for b4_check_user_names), use b4_percent_define_skeleton_variables and b4_percent_code_skeleton_qualifiers. Expect any value for the %define variable `foo' to be stored in the macro named `b4_percent_define(foo)'; expect any %code blocks for the qualifier `foo' to be stored in a macro named `b4_percent_code(foo)'; expect any unqualified %code blocks to be stored in a macro named `b4_percent_code_unqualified'. Use m4_indir so that %define variable names and %code qualifiers can contain `.', which is allowed by the grammar parser. (b4_percent_define_default): New macro to set a default value for a %define variable. (m4_wrap): Update wrapped code, and fix some underquoting. (b4_check_user_names_wrap): Update and define outside the m4_wrap. Expect grammar uses of %define variables and %code qualifiers to be defined in b4_percent_define_user_variables and b4_percent_code_user_qualifiers. * data/c++.m4: Use b4_percent_define_default rather than m4_define_default. Fix some underquoting. Skeleton usage of %define variable define_location_comparison now implies skeleton usage of %define variable filename_type. * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc, data/push.c, data/yacc.c: Update macro names. * src/parse-gram.y (prologue_declaration, grammar_declaration): Update muscle names.
This commit is contained in:
127
data/bison.m4
127
data/bison.m4
@@ -285,84 +285,103 @@ b4_define_user_code([pre_prologue])
|
||||
b4_define_user_code([stype])
|
||||
|
||||
|
||||
# b4_check_user_names(WHAT, USER-LIST, SKELETON-LIST)
|
||||
# ---------------------------------------------------
|
||||
# b4_check_user_names(WHAT, USER-LIST, SKELETON-NAMESPACE)
|
||||
# --------------------------------------------------------
|
||||
# Warn if any name of type WHAT is used by the user (as recorded in USER-LIST)
|
||||
# but is not used by the skeleton (as recorded in SKELETON-LIST).
|
||||
# but is not used by the skeleton (as recorded by macros in the namespace
|
||||
# SKELETON-NAMESPACE).
|
||||
#
|
||||
# USER-LIST must expand to a list specifying all grammar occurrences of all
|
||||
# names of type WHAT. Each item in the list is a triplet specifying one
|
||||
# names of type WHAT. Each item in the list must be a triplet specifying one
|
||||
# occurrence: name, start boundary, and end boundary. Empty string names are
|
||||
# fine. An empty list is fine.
|
||||
#
|
||||
# For example, to define b4_user_foo_names to be used for USER-LIST with three
|
||||
# For example, to define b4_foo_user_names to be used for USER-LIST with three
|
||||
# name occurrences and with correct quoting:
|
||||
#
|
||||
# m4_define([b4_user_foo_names],
|
||||
# m4_define([b4_foo_user_names],
|
||||
# [[[[[[bar]], [[parser.y:1.7]], [[parser.y:1.16]]]],
|
||||
# [[[[bar]], [[parser.y:5.7]], [[parser.y:5.16]]]],
|
||||
# [[[[baz]], [[parser.y:8.7]], [[parser.y:8.16]]]]]])
|
||||
#
|
||||
# SKELETON-LIST must expand to a list specifying all names of type WHAT that
|
||||
# are used by the skeleton. Multiple occurrences of the same name are fine.
|
||||
# Empty string names are fine, but it would be ugly for a Bison skeleton to
|
||||
# actually use one. An empty list is fine.
|
||||
# The macro SKELETON-NAMESPACE(bar) must be defined iff the name bar of type
|
||||
# WHAT is used in the skeleton. Empty string names are fine, but it would be
|
||||
# ugly for a Bison skeleton to actually use one.
|
||||
#
|
||||
# For example, to define b4_skeleton_foo_names to be used for SKELETON-LIST
|
||||
# with two names and with correct quoting:
|
||||
# For example, to use b4_foo_skeleton_names for SKELETON-NAMESPACE and define
|
||||
# that the names bar and baz are used in the skeleton:
|
||||
#
|
||||
# m4_define([b4_skeleton_foo_names],
|
||||
# [[[[bar]], [[baz]]]])
|
||||
# m4_define([b4_foo_skeleton_names(bar)])
|
||||
# m4_define([b4_foo_skeleton_names(baz)])
|
||||
#
|
||||
# To invoke b4_check_user_names with TYPE foo, with USER-LIST
|
||||
# b4_user_foo_names, with SKELETON-LIST b4_skeleton_foo_names, and with correct
|
||||
# quoting:
|
||||
# b4_foo_user_names, with SKELETON-NAMESPACE b4_foo_skeleton_names, and with
|
||||
# correct quoting:
|
||||
#
|
||||
# b4_check_user_names([[foo]], [b4_user_foo_names], [b4_skeleton_foo_names])
|
||||
# b4_check_user_names([[foo]], [b4_foo_user_names],
|
||||
# [[b4_foo_skeleton_names]])
|
||||
m4_define([b4_check_user_names],
|
||||
[m4_foreach([b4_occurrence], $2,
|
||||
[m4_pushdef([b4_occurrence], b4_occurrence)dnl
|
||||
m4_pushdef([b4_user_name], m4_car(b4_occurrence))dnl
|
||||
m4_pushdef([b4_start], m4_car(m4_shift(b4_occurrence)))dnl
|
||||
m4_pushdef([b4_end], m4_shift(m4_shift(b4_occurrence)))dnl
|
||||
m4_pushdef([b4_found], [[0]])dnl
|
||||
m4_foreach([b4_skeleton_name], $3,
|
||||
[m4_if(m4_quote(b4_user_name),
|
||||
m4_quote(b4_skeleton_name),
|
||||
[m4_define([b4_found], [[1]])])])dnl
|
||||
m4_if(b4_found, [0], [b4_warn_at([b4_start], [b4_end],
|
||||
[[%s `%s' is not used]],
|
||||
[$1], [b4_user_name])])[]dnl
|
||||
m4_popdef([b4_found])dnl
|
||||
m4_ifndef($3[(]m4_quote(b4_user_name)[)],
|
||||
[b4_warn_at([b4_start], [b4_end],
|
||||
[[%s `%s' is not used]],
|
||||
[$1], [b4_user_name])])[]dnl
|
||||
m4_popdef([b4_occurrence])dnl
|
||||
m4_popdef([b4_user_name])dnl
|
||||
m4_popdef([b4_start])dnl
|
||||
m4_popdef([b4_end])dnl
|
||||
])])
|
||||
|
||||
# b4_get_percent_define(VARIABLE)
|
||||
# --------------------------------
|
||||
# If the %define variable VARIABLE is defined, emit it. Also, record VARIABLE
|
||||
# in b4_skeleton_percent_define_variables.
|
||||
m4_define([b4_get_percent_define],
|
||||
[m4_append([b4_skeleton_percent_define_variables], [[$1]], [[, ]])dnl
|
||||
m4_ifdef([b4_percent_define_]$1, [b4_percent_define_]$1)])
|
||||
# b4_percent_define_get(VARIABLE)
|
||||
# -------------------------------
|
||||
# If the %define variable VARIABLE is defined, emit its value. Also, record
|
||||
# the skeleton's usage of VARIABLE by defining
|
||||
# b4_percent_define_skeleton_variables(VARIABLE).
|
||||
#
|
||||
# For example:
|
||||
#
|
||||
# b4_percent_define_get([[foo]])
|
||||
m4_define([b4_percent_define_get],
|
||||
[m4_define([b4_percent_define_skeleton_variables(]$1[)])dnl
|
||||
m4_ifdef([b4_percent_define(]$1[)], [m4_indir([b4_percent_define(]$1[)])])])
|
||||
|
||||
# b4_get_percent_code([QUALIFIER])
|
||||
# b4_percent_define_default(VARIABLE, DEFAULT)
|
||||
# --------------------------------------------
|
||||
# If the %define variable VARIABLE is undefined, set its value to DEFAULT.
|
||||
#
|
||||
# For example:
|
||||
#
|
||||
# b4_percent_define_default([[foo]], [[default value]])
|
||||
m4_define([b4_percent_define_default],
|
||||
[m4_ifndef([b4_percent_define(]$1[)],
|
||||
[m4_define([b4_percent_define(]$1[)], [$2])])])
|
||||
|
||||
# b4_percent_code_get([QUALIFIER])
|
||||
# --------------------------------
|
||||
# If any %code blocks for QUALIFIER are defined, emit them beginning with a
|
||||
# comment and ending with synclines and a newline. If QUALIFIER is not
|
||||
# specified (thus, b4_get_percent_code is invoked without parens), do this for
|
||||
# the unqualified %code blocks. Also, record QUALIFIER (if specified) in
|
||||
# b4_skeleton_percent_code_qualifiers.
|
||||
m4_define([b4_get_percent_code],
|
||||
[m4_pushdef([b4_macro_name], [[b4_percent_code]]m4_if([$#], [1], [[[_]$1]]))dnl
|
||||
m4_if([$#], [1],
|
||||
[m4_append([b4_skeleton_percent_code_qualifiers], [[$1]], [[, ]])])dnl
|
||||
# specified (thus, b4_percent_code_get is invoked without parens), do this for
|
||||
# the unqualified %code blocks. Also, record the skeleton's usage of QUALIFIER
|
||||
# (if specified) by defining b4_percent_code_skeleton_qualifiers(QUALIFIER).
|
||||
#
|
||||
# For example, to emit any unqualified %code blocks followed by any %code
|
||||
# blocks for the qualifier foo:
|
||||
#
|
||||
# b4_percent_code_get
|
||||
# b4_percent_code_get([[foo]])
|
||||
m4_define([b4_percent_code_get],
|
||||
[m4_pushdef([b4_macro_name], [[b4_percent_code]]m4_if([$#], [1], [[[(]$1[)]]],
|
||||
[[[_unqualified]]]))dnl
|
||||
m4_if([$#], [1], [m4_define([b4_percent_code_skeleton_qualifiers(]$1[)])])dnl
|
||||
m4_ifdef(b4_macro_name,
|
||||
[b4_comment([m4_if([$#], [0], [[Unqualified %code]],
|
||||
[[%code "]$1["]])[ blocks.]])
|
||||
b4_user_code(b4_macro_name)])dnl
|
||||
b4_user_code([m4_indir(b4_macro_name)])
|
||||
])dnl
|
||||
m4_popdef([b4_macro_name])])
|
||||
|
||||
|
||||
@@ -371,21 +390,13 @@ m4_popdef([b4_macro_name])])
|
||||
## %define variables and %code qualifiers were used. ##
|
||||
## --------------------------------------------------------- ##
|
||||
|
||||
m4_define([b4_check_user_names_wrap],
|
||||
[m4_ifdef([b4_percent_]$1[_user_]$2[s],
|
||||
[b4_check_user_names([[%]$1 $2],
|
||||
[b4_percent_]$1[_user_]$2[s],
|
||||
[[b4_percent_]$1[_skeleton_]$2[s]])])])
|
||||
|
||||
m4_wrap([
|
||||
m4_pushdef([b4_check_user_names_wrap],
|
||||
[m4_ifdef([b4_skeleton_percent_$1],
|
||||
[m4_define([b4_skeleton_percent_$1],
|
||||
m4_dquote(m4_dquote(b4_skeleton_percent_$1)))],
|
||||
[m4_define([b4_skeleton_percent_$1], [[]])])
|
||||
|
||||
m4_ifdef([b4_user_percent_$1],
|
||||
[b4_check_user_names([$2],
|
||||
[b4_user_percent_$1],
|
||||
[b4_skeleton_percent_$1])])
|
||||
])
|
||||
|
||||
b4_check_user_names_wrap([define_variables], [[%define variable]])
|
||||
b4_check_user_names_wrap([code_qualifiers], [[%code qualifier]])
|
||||
|
||||
m4_popdef([b4_check_user_names_wrap])
|
||||
b4_check_user_names_wrap([[define]], [[variable]])
|
||||
b4_check_user_names_wrap([[code]], [[qualifier]])
|
||||
])
|
||||
|
||||
14
data/c++.m4
14
data/c++.m4
@@ -26,13 +26,13 @@ m4_include(b4_pkgdatadir/[c.m4])
|
||||
## ---------------- ##
|
||||
|
||||
# Default parser class name.
|
||||
m4_define_default([b4_percent_define_parser_class_name], [parser])
|
||||
m4_define_default([b4_percent_define_location_type], [location])
|
||||
m4_define_default([b4_percent_define_filename_type], [std::string])
|
||||
m4_define_default([b4_percent_define_namespace], m4_defn([b4_prefix]))
|
||||
m4_define_default([b4_percent_define_define_location_comparison],
|
||||
m4_if(b4_percent_define_filename_type, [std::string],
|
||||
[1], [0]))
|
||||
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]))
|
||||
b4_percent_define_default([[define_location_comparison]],
|
||||
[m4_if(b4_percent_define_get([[filename_type]]),
|
||||
[std::string], [[1]], [[0]])])
|
||||
|
||||
|
||||
# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
||||
|
||||
@@ -153,7 +153,7 @@ b4_copyright([Skeleton implementation for Bison GLR parsers in C],
|
||||
|
||||
]b4_identification
|
||||
|
||||
b4_get_percent_code([[top]])[]dnl
|
||||
b4_percent_code_get([[top]])[]dnl
|
||||
m4_if(b4_prefix, [yy], [],
|
||||
[/* Substitute the variable and function names. */
|
||||
#define yyparse b4_prefix[]parse
|
||||
@@ -173,7 +173,7 @@ dnl # ----------------------
|
||||
dnl # Declaration that might either go into the header (if --defines)
|
||||
dnl # or open coded in the parser body.
|
||||
m4_define([b4_shared_declarations],
|
||||
[b4_get_percent_code([[requires]])[]dnl
|
||||
[b4_percent_code_get([[requires]])[]dnl
|
||||
|
||||
b4_token_enums(b4_tokens)
|
||||
|
||||
@@ -205,7 +205,7 @@ typedef struct YYLTYPE
|
||||
# define YYLTYPE_IS_TRIVIAL 1
|
||||
#endif
|
||||
|
||||
]b4_get_percent_code([[provides]])[]dnl
|
||||
]b4_percent_code_get([[provides]])[]dnl
|
||||
])
|
||||
|
||||
b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
|
||||
@@ -238,7 +238,7 @@ static YYSTYPE yyval_default;
|
||||
|
||||
/* Copy the second part of user declarations. */
|
||||
]b4_user_post_prologue
|
||||
b4_get_percent_code[]dnl
|
||||
b4_percent_code_get[]dnl
|
||||
|
||||
[#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
12
data/glr.cc
12
data/glr.cc
@@ -58,9 +58,9 @@ m4_include(b4_pkgdatadir/[c++.m4])
|
||||
m4_include(b4_pkgdatadir/[location.cc])
|
||||
|
||||
m4_define([b4_parser_class_name],
|
||||
[b4_get_percent_define([[parser_class_name]])])
|
||||
[b4_percent_define_get([[parser_class_name]])])
|
||||
m4_define([b4_namespace],
|
||||
[b4_get_percent_define([[namespace]])])
|
||||
[b4_percent_define_get([[namespace]])])
|
||||
|
||||
# Save the parse parameters.
|
||||
m4_define([b4_parse_param_orig], m4_defn([b4_parse_param]))
|
||||
@@ -230,7 +230,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
|
||||
#ifndef PARSER_HEADER_H
|
||||
# define PARSER_HEADER_H
|
||||
|
||||
]b4_get_percent_code([[requires]])[
|
||||
]b4_percent_code_get([[requires]])[
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
@@ -290,7 +290,7 @@ b4_user_stype
|
||||
typedef YYSTYPE semantic_type;
|
||||
#endif
|
||||
/// Symbol locations.
|
||||
typedef ]b4_get_percent_define([[location_type]])[ location_type;
|
||||
typedef ]b4_percent_define_get([[location_type]])[ location_type;
|
||||
/// Tokens.
|
||||
struct token
|
||||
{
|
||||
@@ -365,7 +365,7 @@ b4_user_stype
|
||||
};
|
||||
|
||||
]dnl Redirections for glr.c.
|
||||
m4_ifval(b4_get_percent_define([[global_tokens_and_yystype]]),
|
||||
m4_ifval(b4_percent_define_get([[global_tokens_and_yystype]]),
|
||||
[b4_token_defines(b4_tokens)])
|
||||
[
|
||||
#ifndef YYSTYPE
|
||||
@@ -377,7 +377,7 @@ m4_ifval(b4_get_percent_define([[global_tokens_and_yystype]]),
|
||||
|
||||
}
|
||||
|
||||
]b4_get_percent_code([[provides]])[]dnl
|
||||
]b4_percent_code_get([[provides]])[]dnl
|
||||
|
||||
[#endif /* ! defined PARSER_HEADER_H */]
|
||||
m4_divert_pop(0)
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
m4_include(b4_pkgdatadir/[c++.m4])
|
||||
|
||||
m4_define([b4_parser_class_name],
|
||||
[b4_get_percent_define([[parser_class_name]])])
|
||||
[b4_percent_define_get([[parser_class_name]])])
|
||||
m4_define([b4_namespace],
|
||||
[b4_get_percent_define([[namespace]])])
|
||||
[b4_percent_define_get([[namespace]])])
|
||||
|
||||
# The header is mandatory.
|
||||
b4_defines_if([],
|
||||
@@ -46,7 +46,7 @@ dnl FIXME: This is wrong, we want computed header guards.
|
||||
#ifndef PARSER_HEADER_H
|
||||
# define PARSER_HEADER_H
|
||||
|
||||
]b4_get_percent_code([[requires]])[
|
||||
]b4_percent_code_get([[requires]])[
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
@@ -118,7 +118,7 @@ b4_user_stype
|
||||
typedef YYSTYPE semantic_type;
|
||||
#endif
|
||||
/// Symbol locations.
|
||||
typedef ]b4_get_percent_define([[location_type]])[ location_type;
|
||||
typedef ]b4_percent_define_get([[location_type]])[ location_type;
|
||||
/// Tokens.
|
||||
struct token
|
||||
{
|
||||
@@ -289,7 +289,7 @@ b4_error_verbose_if([, int tok])[);
|
||||
};
|
||||
}
|
||||
|
||||
]m4_ifval(b4_get_percent_define([[global_tokens_and_yystype]]),
|
||||
]m4_ifval(b4_percent_define_get([[global_tokens_and_yystype]]),
|
||||
[b4_token_defines(b4_tokens)
|
||||
|
||||
#ifndef YYSTYPE
|
||||
@@ -297,14 +297,14 @@ b4_error_verbose_if([, int tok])[);
|
||||
# define YYSTYPE b4_namespace::b4_parser_class_name::semantic_type
|
||||
#endif
|
||||
])
|
||||
b4_get_percent_code([[provides]])[]dnl
|
||||
b4_percent_code_get([[provides]])[]dnl
|
||||
|
||||
[#endif /* ! defined PARSER_HEADER_H */]
|
||||
])dnl
|
||||
@output(b4_parser_file_name@)
|
||||
b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++],
|
||||
[2002, 2003, 2004, 2005, 2006])
|
||||
b4_get_percent_code([[top]])[]dnl
|
||||
b4_percent_code_get([[top]])[]dnl
|
||||
m4_if(b4_prefix, [yy], [],
|
||||
[
|
||||
// Take the name prefix into account.
|
||||
@@ -318,7 +318,7 @@ b4_defines_if([[
|
||||
|
||||
/* User implementation prologue. */
|
||||
]b4_user_post_prologue
|
||||
b4_get_percent_code[]dnl
|
||||
b4_percent_code_get[]dnl
|
||||
|
||||
[#ifndef YY_
|
||||
# if YYENABLE_NLS
|
||||
|
||||
@@ -26,7 +26,7 @@ b4_copyright([Positions for Bison parsers in C++],
|
||||
|
||||
/**
|
||||
** \file position.hh
|
||||
** Define the ]b4_get_percent_define([[namespace]])[::position class.
|
||||
** Define the ]b4_percent_define_get([[namespace]])[::position class.
|
||||
*/
|
||||
|
||||
#ifndef BISON_POSITION_HH
|
||||
@@ -36,7 +36,7 @@ b4_copyright([Positions for Bison parsers in C++],
|
||||
# include <string>
|
||||
# include <algorithm>
|
||||
|
||||
namespace ]b4_get_percent_define([[namespace]])[
|
||||
namespace ]b4_percent_define_get([[namespace]])[
|
||||
{
|
||||
/// Abstract a position.
|
||||
class position
|
||||
@@ -51,7 +51,7 @@ namespace ]b4_get_percent_define([[namespace]])[
|
||||
|
||||
])[
|
||||
/// Initialization.
|
||||
inline void initialize (]b4_get_percent_define([[filename_type]])[* fn)
|
||||
inline void initialize (]b4_percent_define_get([[filename_type]])[* fn)
|
||||
{
|
||||
filename = fn;
|
||||
line = ]b4_location_initial_line[;
|
||||
@@ -77,7 +77,7 @@ namespace ]b4_get_percent_define([[namespace]])[
|
||||
|
||||
public:
|
||||
/// File name to which this position refers.
|
||||
]b4_get_percent_define([[filename_type]])[* filename;
|
||||
]b4_percent_define_get([[filename_type]])[* filename;
|
||||
/// Current line number.
|
||||
unsigned int line;
|
||||
/// Current column number.
|
||||
@@ -113,7 +113,7 @@ namespace ]b4_get_percent_define([[namespace]])[
|
||||
{
|
||||
return begin + -width;
|
||||
}
|
||||
]m4_if(b4_get_percent_define([[define_location_comparison]]), [1], [[
|
||||
]m4_if(b4_percent_define_get([[define_location_comparison]]), [1], [[
|
||||
/// Compare two position objects.
|
||||
inline bool
|
||||
operator== (const position& pos1, const position& pos2)
|
||||
@@ -151,7 +151,7 @@ b4_copyright([Locations for Bison parsers in C++],
|
||||
|
||||
/**
|
||||
** \file location.hh
|
||||
** Define the ]b4_get_percent_define([[namespace]])[::location class.
|
||||
** Define the ]b4_percent_define_get([[namespace]])[::location class.
|
||||
*/
|
||||
|
||||
#ifndef BISON_LOCATION_HH
|
||||
@@ -161,7 +161,7 @@ b4_copyright([Locations for Bison parsers in C++],
|
||||
# include <string>
|
||||
# include "position.hh"
|
||||
|
||||
namespace ]b4_get_percent_define([[namespace]])[
|
||||
namespace ]b4_percent_define_get([[namespace]])[
|
||||
{
|
||||
|
||||
/// Abstract a location.
|
||||
@@ -177,7 +177,7 @@ namespace ]b4_get_percent_define([[namespace]])[
|
||||
|
||||
])[
|
||||
/// Initialization.
|
||||
inline void initialize (]b4_get_percent_define([[filename_type]])[* fn)
|
||||
inline void initialize (]b4_percent_define_get([[filename_type]])[* fn)
|
||||
{
|
||||
begin.initialize (fn);
|
||||
end = begin;
|
||||
@@ -235,7 +235,7 @@ namespace ]b4_get_percent_define([[namespace]])[
|
||||
res.columns (width);
|
||||
return res;
|
||||
}
|
||||
]m4_if(b4_get_percent_define([[define_location_comparison]]), [1], [[
|
||||
]m4_if(b4_percent_define_get([[define_location_comparison]]), [1], [[
|
||||
/// Compare two location objects.
|
||||
inline bool
|
||||
operator== (const location& loc1, const location& loc2)
|
||||
|
||||
12
data/push.c
12
data/push.c
@@ -160,7 +160,7 @@ b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],dnl '
|
||||
USER NAME SPACE" below. */
|
||||
|
||||
]b4_identification
|
||||
b4_get_percent_code([[top]])[]dnl
|
||||
b4_percent_code_get([[top]])[]dnl
|
||||
m4_if(b4_prefix, [yy], [],
|
||||
[[/* Substitute the variable and function names. */
|
||||
]b4_pull_if([[#define yyparse ]b4_prefix[parse
|
||||
@@ -198,7 +198,7 @@ m4_if(b4_prefix, [yy], [],
|
||||
# define YYTOKEN_TABLE ]b4_token_table[
|
||||
#endif
|
||||
|
||||
]b4_get_percent_code([[requires]])[]dnl
|
||||
]b4_percent_code_get([[requires]])[]dnl
|
||||
|
||||
b4_token_enums_defines(b4_tokens)[
|
||||
|
||||
@@ -250,11 +250,11 @@ b4_c_function_decl([[yypstate_delete]], [[void]],
|
||||
[[[yypstate *yyps]], [[yyps]]])[
|
||||
#endif
|
||||
]])
|
||||
b4_get_percent_code([[provides]])[]dnl
|
||||
b4_percent_code_get([[provides]])[]dnl
|
||||
|
||||
[/* Copy the second part of user declarations. */
|
||||
]b4_user_post_prologue
|
||||
b4_get_percent_code[]dnl
|
||||
b4_percent_code_get[]dnl
|
||||
|
||||
[#ifdef short
|
||||
# undef short
|
||||
@@ -1656,7 +1656,7 @@ b4_defines_if(
|
||||
b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],dnl '
|
||||
[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])
|
||||
|
||||
b4_get_percent_code([[requires]])[]dnl
|
||||
b4_percent_code_get([[requires]])[]dnl
|
||||
|
||||
b4_token_enums_defines(b4_tokens)
|
||||
|
||||
@@ -1714,6 +1714,6 @@ b4_c_function_decl([b4_prefix[pstate_delete]], [[void]],
|
||||
[[b4_prefix[pstate *yyps]], [[yyps]]])[
|
||||
#endif
|
||||
]])
|
||||
b4_get_percent_code([[provides]])[]dnl
|
||||
b4_percent_code_get([[provides]])[]dnl
|
||||
])dnl b4_defines_if
|
||||
m4_divert_pop(0)
|
||||
|
||||
12
data/yacc.c
12
data/yacc.c
@@ -152,7 +152,7 @@ b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],dnl '
|
||||
USER NAME SPACE" below. */
|
||||
|
||||
]b4_identification
|
||||
b4_get_percent_code([[top]])[]dnl
|
||||
b4_percent_code_get([[top]])[]dnl
|
||||
m4_if(b4_prefix, [yy], [],
|
||||
[/* Substitute the variable and function names. */
|
||||
#define yyparse b4_prefix[]parse
|
||||
@@ -185,7 +185,7 @@ b4_locations_if([#define yylloc b4_prefix[]lloc])])[
|
||||
# define YYTOKEN_TABLE ]b4_token_table[
|
||||
#endif
|
||||
|
||||
]b4_get_percent_code([[requires]])[]dnl
|
||||
]b4_percent_code_get([[requires]])[]dnl
|
||||
|
||||
b4_token_enums_defines(b4_tokens)[
|
||||
|
||||
@@ -216,11 +216,11 @@ typedef struct YYLTYPE
|
||||
# define YYLTYPE_IS_TRIVIAL 1
|
||||
#endif])
|
||||
|
||||
b4_get_percent_code([[provides]])[]dnl
|
||||
b4_percent_code_get([[provides]])[]dnl
|
||||
|
||||
[/* Copy the second part of user declarations. */
|
||||
]b4_user_post_prologue
|
||||
b4_get_percent_code[]dnl
|
||||
b4_percent_code_get[]dnl
|
||||
|
||||
[#ifdef short
|
||||
# undef short
|
||||
@@ -1491,7 +1491,7 @@ b4_defines_if(
|
||||
b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],dnl '
|
||||
[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])
|
||||
|
||||
b4_get_percent_code([[requires]])[]dnl
|
||||
b4_percent_code_get([[requires]])[]dnl
|
||||
|
||||
b4_token_enums_defines(b4_tokens)
|
||||
|
||||
@@ -1530,7 +1530,7 @@ typedef struct YYLTYPE
|
||||
[extern YYLTYPE b4_prefix[]lloc;])
|
||||
)dnl b4_locations_if
|
||||
|
||||
b4_get_percent_code([[provides]])
|
||||
b4_percent_code_get([[provides]])
|
||||
])dnl b4_defines_if
|
||||
m4_divert_pop(0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user