[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/6] kinds: also define the possibly qualified symbol kinds
From: |
Akim Demaille |
Subject: |
[PATCH 4/6] kinds: also define the possibly qualified symbol kinds |
Date: |
Sat, 23 May 2020 17:14:43 +0200 |
* data/skeletons/bison.m4 (b4_symbol_kind): Rename as...
(b4_symbol_kind_base): this.
(b4_symbol_kind): New, for fully qualified kind name.
* data/skeletons/lalr1.cc (b4_symbol_kind): New.
Adjust to use b4_symbol_kind where appropriate.
* src/parse-gram.h, src/parse-gram.c: regen.
---
data/README.md | 24 +++++++++++++--------
data/skeletons/bison.m4 | 18 +++++++++++-----
data/skeletons/c++.m4 | 8 +++----
data/skeletons/c.m4 | 4 ++--
data/skeletons/d.m4 | 11 ++++++++--
data/skeletons/glr.cc | 20 ++++++++----------
data/skeletons/java.m4 | 9 +++++++-
data/skeletons/lalr1.cc | 29 ++++++++++++++++----------
data/skeletons/lalr1.d | 26 +++++++++++------------
data/skeletons/lalr1.java | 44 +++++++++++++++++++--------------------
10 files changed, 113 insertions(+), 80 deletions(-)
diff --git a/data/README.md b/data/README.md
index 9d0b0c50..95140216 100644
--- a/data/README.md
+++ b/data/README.md
@@ -84,19 +84,20 @@ field), where field can `has_id`, `id`, etc.: see
The macro `b4_symbol(NUM, FIELD)` gives access to the following FIELDS:
- `has_id`: 0 or 1
- Whether the symbol has an id.
+ Whether the symbol has an `id`.
- `id`: string
- If has_id, the id (prefixed by api.token.prefix if defined), otherwise
- defined as empty. Guaranteed to be usable as a C identifier. This is
- used to define the token kind (i.e., the enum used by the return value of
- yylex).
+ If `has_id`, the name of the token kind (prefixed by api.token.prefix if
+ defined), otherwise empty. Guaranteed to be usable as a C identifier.
+ This is used to define the token kind (i.e., the enum used by the return
+ value of yylex). Should be named `token_kind`.
- `tag`: string
- A human representation of the symbol. Can be 'foo', 'foo.id', '"foo"' etc.
+ A human readable representation of the symbol. Can be `'foo'`,
+ `'foo.id'`, `'"foo"'` etc.
- `code`: integer
- The token code associated to the `id`.
+ The token code associated to the token kind `id`.
The external number as used by yylex. Can be ASCII code when a character,
some number chosen by bison, or some user number in the case of `%token
FOO <NUM>`. Corresponds to `yychar` in `yacc.c`.
@@ -104,9 +105,14 @@ The macro `b4_symbol(NUM, FIELD)` gives access to the
following FIELDS:
- `is_token`: 0 or 1
Whether this is a terminal symbol.
+- `kind_base`: string
+ The base of the symbol kind, i.e., the enumerator of this symbol (token or
+ nonterminal) which is mapping to its `number`.
+
- `kind`: string
- The symbol kind, i.e., the enumerator of this symbol (token or nonterminal)
- which is mapping to its `number`.
+ Same as `kind_base`, but possibly with a prefix in some languages. E.g.,
+ EOF's `kind_base` and `kind` are `YYSYMBOL_YYEOF` in C, but are
+ `S_YYEMPTY` and `symbol_kind::S_YYEMPTY` in C++.
- `number`: integer
The code associated to the `kind`.
diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4
index 359d6923..2b42d1b5 100644
--- a/data/skeletons/bison.m4
+++ b/data/skeletons/bison.m4
@@ -438,14 +438,14 @@ m4_define([b4_symbol_token_kind],
_b4_symbol([$1], [id])])
-# b4_symbol_kind(NUM)
-# -------------------
+# b4_symbol_kind_base(NUM)
+# ------------------------
# Build the name of the kind of this symbol. It must always exist,
# otherwise some symbols might not be represented in the enum, which
# might be compiled into too small a type to contain all the symbol
# numbers.
m4_define([b4_symbol_prefix], [b4_percent_define_get([api.symbol.prefix])])
-m4_define([b4_symbol_kind],
+m4_define([b4_symbol_kind_base],
[b4_percent_define_get([api.symbol.prefix])dnl
m4_case([$1],
[-2], [[YYEMPTY]],
@@ -458,6 +458,13 @@ m4_case([$1],
[m4_bpatsubst([$1-][]_b4_symbol([$1],
[tag]), [[^a-zA-Z_0-9]+], [_])])])])])
+# b4_symbol_kind(NUM)
+# -------------------
+# Same as b4_symbol_kind, but possibly with a prefix in some
+# languages. E.g., EOF's kind_base and kind are YYSYMBOL_YYEOF in C,
+# but are S_YYEMPTY and symbol_kind::S_YYEMPTY in C++.
+m4_copy([b4_symbol_kind_base], [b4_symbol_kind])
+
# b4_symbol(NUM, FIELD)
# ---------------------
# Fetch FIELD of symbol #NUM (or "orig NUM"). Fail if undefined.
@@ -465,8 +472,9 @@ m4_case([$1],
# If FIELD = id, prepend the token prefix.
m4_define([b4_symbol],
[m4_case([$2],
- [id], [b4_symbol_token_kind([$1])],
- [kind], [b4_symbol_kind([$1])],
+ [id], [b4_symbol_token_kind([$1])],
+ [kind_base], [b4_symbol_kind_base([$1])],
+ [kind], [b4_symbol_kind([$1])],
[_b4_symbol($@)])])
diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4
index 91518033..1d41c4c8 100644
--- a/data/skeletons/c++.m4
+++ b/data/skeletons/c++.m4
@@ -193,7 +193,7 @@ m4_define([b4_declare_symbol_enum],
[[enum symbol_kind_type
{
YYNTOKENS = ]b4_tokens_number[, ///< Number of tokens.
- ]b4_symbol_kind([-2])[ = -2,
+ ]b4_symbol(-2, kind_base)[ = -2,
]b4_symbol_foreach([ b4_symbol_enum])dnl
[ };]])
@@ -507,7 +507,7 @@ m4_define([b4_public_types_define],
bool
]b4_parser_class[::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
- return this->kind () == symbol_kind::]b4_symbol_prefix[YYEMPTY;
+ return this->kind () == ]b4_symbol(-2, kind)[;
}
template <typename Base>
@@ -523,7 +523,7 @@ m4_define([b4_public_types_define],
// by_kind.
]b4_inline([$1])b4_parser_class[::by_kind::by_kind ()
- : kind_ (symbol_kind::]b4_symbol_prefix[YYEMPTY)
+ : kind_ (]b4_symbol(-2, kind)[)
{}
#if 201103L <= YY_CPLUSPLUS
@@ -545,7 +545,7 @@ m4_define([b4_public_types_define],
]b4_inline([$1])[void
]b4_parser_class[::by_kind::clear ()
{
- kind_ = symbol_kind::]b4_symbol_prefix[YYEMPTY;
+ kind_ = ]b4_symbol(-2, kind)[;
}
]b4_inline([$1])[void
diff --git a/data/skeletons/c.m4 b/data/skeletons/c.m4
index 5e7530fb..6bf1e660 100644
--- a/data/skeletons/c.m4
+++ b/data/skeletons/c.m4
@@ -572,7 +572,7 @@ m4_define([b4_symbol_translate],
m4_define([b4_symbol_enum],
[m4_format([ %-40s %s],
m4_format([[%s = %s%s%s]],
- b4_symbol([$1], [kind]),
+ b4_symbol([$1], [kind_base]),
[$1],
m4_if([$1], b4_last_symbol, [], [[,]])),
[b4_symbol_tag_comment([$1])])])
@@ -587,7 +587,7 @@ m4_define([b4_declare_symbol_enum],
[[/* Symbol kind. */
enum yysymbol_kind_t
{
- ]b4_symbol_kind([-2])[ = -2,
+ ]b4_symbol([-2], kind_base)[ = -2,
]b4_symbol_foreach([b4_symbol_enum])dnl
[};
typedef enum yysymbol_kind_t yysymbol_kind_t;
diff --git a/data/skeletons/d.m4 b/data/skeletons/d.m4
index 3041ac78..c19f7d86 100644
--- a/data/skeletons/d.m4
+++ b/data/skeletons/d.m4
@@ -152,6 +152,8 @@ private static immutable b4_int_type_for([$2])[[]] yy$1_ =
## Token kinds. ##
## ------------- ##
+m4_define([b4_symbol(-2, id)], [[YYEMPTY]])
+
# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER)
# ---------------------------------------
# Output the definition of this token as an enum.
@@ -178,6 +180,11 @@ b4_symbol_foreach([b4_token_enum])dnl
b4_percent_define_default([[api.symbol.prefix]], [[S_]])
+# b4_symbol_kind(NUM)
+# -------------------
+m4_define([b4_symbol_kind],
+[SymbolKind.b4_symbol_kind_base($@)])
+
# b4_symbol_enum(SYMBOL-NUM)
# --------------------------
@@ -185,7 +192,7 @@ b4_percent_define_default([[api.symbol.prefix]], [[S_]])
m4_define([b4_symbol_enum],
[m4_format([ %-30s %s],
m4_format([[%s = %s,]],
- b4_symbol([$1], [kind]),
+ b4_symbol([$1], [kind_base]),
[$1]),
[b4_symbol_tag_comment([$1])])])
@@ -199,7 +206,7 @@ m4_define([b4_declare_symbol_enum],
[[ /* Symbol kinds. */
public enum SymbolKind
{
- ]b4_symbol_kind([-2])[ = -2, /* No symbol. */
+ ]b4_symbol(-2, kind_base)[ = -2, /* No symbol. */
]b4_symbol_foreach([b4_symbol_enum])dnl
[ };
]])])
diff --git a/data/skeletons/glr.cc b/data/skeletons/glr.cc
index 95053a2f..a294fb20 100644
--- a/data/skeletons/glr.cc
+++ b/data/skeletons/glr.cc
@@ -66,12 +66,6 @@ m4_defn([b4_parse_param]))],
[[b4_namespace_ref::b4_parser_class[& yyparser], [[yyparser]]]])
])
-# b4_declare_symbol_enum
-# ----------------------
-m4_append([b4_declare_symbol_enum],
-[[typedef symbol_kind_type yysymbol_kind_t;
-]])
-
# b4_yy_symbol_print_define
# -------------------------
@@ -354,13 +348,17 @@ b4_percent_define_flag_if([[global_tokens_and_yystype]],
# define ]b4_api_PREFIX[LTYPE
]b4_namespace_ref[::]b4_parser_class[::location_type
#endif
+]m4_define([b4_define_symbol_kind],
+ [m4_format([#define %-15s %s],
+ b4_symbol($][1, kind_base),
+
b4_namespace_ref[::]b4_parser_class[::symbol_kind::]b4_symbol($][1, kind_base))
+])[
]m4_define([b4_declare_symbol_enum],
[[typedef ]b4_namespace_ref[::]b4_parser_class[::symbol_kind_type
yysymbol_kind_t;
-#define ]b4_symbol_prefix[YYEMPTY
]b4_namespace_ref[::]b4_parser_class[::symbol_kind::]b4_symbol_prefix[YYEMPTY
-#define ]b4_symbol_prefix[YYerror
]b4_namespace_ref[::]b4_parser_class[::symbol_kind::]b4_symbol_prefix[YYerror
-#define ]b4_symbol_prefix[YYEOF
]b4_namespace_ref[::]b4_parser_class[::symbol_kind::]b4_symbol_prefix[YYEOF
-#define ]b4_symbol_prefix[YYUNDEF
]b4_namespace_ref[::]b4_parser_class[::symbol_kind::]b4_symbol_prefix[YYUNDEF
-]])[
+
+// Expose C++ symbol kinds to C.
+]b4_define_symbol_kind(-2)dnl
+b4_symbol_foreach([b4_define_symbol_kind])])[
]b4_percent_code_get([[provides]])[
]m4_popdef([b4_parse_param])dnl
])
diff --git a/data/skeletons/java.m4 b/data/skeletons/java.m4
index 106f4721..af38ccc3 100644
--- a/data/skeletons/java.m4
+++ b/data/skeletons/java.m4
@@ -159,13 +159,20 @@ b4_symbol_foreach([b4_token_enum])])])
## Symbol kinds. ##
## -------------- ##
+
+# b4_symbol_kind(NUM)
+# -------------------
+m4_define([b4_symbol_kind],
+[SymbolKind.b4_symbol_kind_base($@)])
+
+
# b4_symbol_enum(SYMBOL-NUM)
# --------------------------
# Output the definition of this symbol as an enum.
m4_define([b4_symbol_enum],
[m4_format([ %-30s %s],
m4_format([[%s(%s)%s]],
- b4_symbol([$1], [kind]),
+ b4_symbol([$1], [kind_base]),
[$1],
m4_if([$1], b4_last_symbol, [[;]], [[,]])),
[b4_symbol_tag_comment([$1])])])
diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc
index 204b82d9..c5d6377f 100644
--- a/data/skeletons/lalr1.cc
+++ b/data/skeletons/lalr1.cc
@@ -59,6 +59,13 @@ m4_define([b4_integral_parser_table_define],
};dnl
])
+
+# b4_symbol_kind(NUM)
+# -------------------
+m4_define([b4_symbol_kind],
+[symbol_kind::b4_symbol_kind_base($@)])
+
+
# b4_symbol_value_template(VAL, SYMBOL-NUM, [TYPE])
# -------------------------------------------------
# Same as b4_symbol_value, but used in a template method. It makes
@@ -666,7 +673,7 @@ m4_if(b4_prefix, [yy], [],
]b4_parser_class[::by_state::kind () const YY_NOEXCEPT
{
if (state == empty_state)
- return symbol_kind::]b4_symbol(-2, kind)[;
+ return ]b4_symbol(-2, kind)[;
else
return YY_CAST (symbol_kind_type, yystos_[+state]);
}
@@ -691,7 +698,7 @@ m4_if(b4_prefix, [yy], [],
b4_symbol_variant([that.kind ()],
[value], [move], [YY_MOVE (that.value)])])[
// that is emptied.
- that.kind_ = symbol_kind::]b4_symbol(-2, kind)[;
+ that.kind_ = ]b4_symbol(-2, kind)[;
}
#if YY_CPLUSPLUS < 201103L
@@ -920,13 +927,13 @@ b4_dollar_popdef])[]dnl
}
YY_SYMBOL_PRINT ("Next token is", yyla);
- if (yyla.kind () == ]symbol_kind::b4_symbol(1, kind)[)
+ if (yyla.kind () == ]b4_symbol(1, kind)[)
{
// The scanner already issued an error message, process directly
// to error recovery. But do not keep the error token as
// lookahead, it is too special and may lead us to an endless
// loop in error recovery. */
- yyla.kind_ = ]symbol_kind::b4_symbol(2, kind)[;
+ yyla.kind_ = ]b4_symbol(2, kind)[;
goto yyerrlab1;
}
@@ -1063,7 +1070,7 @@ b4_dollar_popdef])[]dnl
error, discard it. */
// Return failure if at end of input.
- if (yyla.kind () == symbol_kind::]b4_symbol_prefix[YYEOF)
+ if (yyla.kind () == ]b4_symbol(0, kind)[)
YYABORT;
else if (!yyla.empty ())
{
@@ -1104,9 +1111,9 @@ b4_dollar_popdef])[]dnl
yyn = yypact_[+yystack_[0].state];
if (!yy_pact_value_is_default_ (yyn))
{
- yyn += symbol_kind::]b4_symbol(1, kind)[;
+ yyn += ]b4_symbol(1, kind)[;
if (0 <= yyn && yyn <= yylast_
- && yycheck_[yyn] == symbol_kind::]b4_symbol(1, kind)[)
+ && yycheck_[yyn] == ]b4_symbol(1, kind)[)
{
yyn = yytable_[yyn];
if (0 < yyn)
@@ -1298,8 +1305,8 @@ b4_dollar_popdef])[]dnl
for (int yyx = 0; yyx < YYNTOKENS; ++yyx)
{
symbol_kind_type yysym = YY_CAST (symbol_kind_type, yyx);
- if (yysym != symbol_kind::]b4_symbol(1, kind)[
- && yysym != symbol_kind::]b4_symbol_prefix[YYUNDEF
+ if (yysym != ]b4_symbol(1, kind)[
+ && yysym != ]b4_symbol(2, kind)[
&& yyparser_.yy_lac_check_ (yysym))
{
if (!yyarg)
@@ -1321,7 +1328,7 @@ b4_dollar_popdef])[]dnl
int yychecklim = yylast_ - yyn + 1;
int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::]b4_symbol(1,
kind)[
+ if (yycheck_[yyx + yyn] == yyx && yyx != ]b4_symbol(1, kind)[
&& !yy_table_value_is_error_ (yytable_[yyx + yyn]))
{
if (!yyarg)
@@ -1334,7 +1341,7 @@ b4_dollar_popdef])[]dnl
}
]])[
if (yyarg && yycount == 0 && 0 < yyargn)
- yyarg[0] = symbol_kind::]b4_symbol(-2, kind)[;
+ yyarg[0] = ]b4_symbol(-2, kind)[;
return yycount;
}
diff --git a/data/skeletons/lalr1.d b/data/skeletons/lalr1.d
index bc1bcf0a..85001b72 100644
--- a/data/skeletons/lalr1.d
+++ b/data/skeletons/lalr1.d
@@ -430,7 +430,7 @@ b4_locations_if([, ref ]b4_location_type[ yylocationp])[)
{
/// Lookahead and lookahead in internal form.
int yychar = TokenKind.YYEMPTY;
- SymbolKind yytoken = SymbolKind.]b4_symbol(-2, kind)[;
+ SymbolKind yytoken = ]b4_symbol(-2, kind)[;
/* State. */
int yyn = 0;
@@ -509,14 +509,14 @@ m4_popdef([b4_at_dollar])])dnl
yytoken = yytranslate_ (yychar);]b4_parse_trace_if([[
yy_symbol_print ("Next token is", yytoken, yylval]b4_locations_if([,
yylloc])[);]])[
- if (yytoken == SymbolKind.]b4_symbol(1, kind)[)
+ if (yytoken == ]b4_symbol(1, kind)[)
{
// The scanner already issued an error message, process directly
// to error recovery. But do not keep the error token as
// lookahead, it is too special and may lead us to an endless
// loop in error recovery. */
- yychar = TokenKind.YYUNDEF;
- yytoken = SymbolKind.]b4_symbol_prefix[YYUNDEF;]b4_locations_if([[
+ yychar = TokenKind.]b4_symbol(2, id)[;
+ yytoken = ]b4_symbol(2, kind)[;]b4_locations_if([[
yyerrloc = yylloc;]])[
label = YYERRLAB1;
}
@@ -587,8 +587,8 @@ m4_popdef([b4_at_dollar])])dnl
if (yyerrstatus_ == 0)
{
++yynerrs_;
- if (yychar == TokenKind.YYEMPTY)
- yytoken = SymbolKind.]b4_symbol(-2, kind)[;
+ if (yychar == TokenKind.]b4_symbol(-2, id)[)
+ yytoken = ]b4_symbol(-2, kind)[;
yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate,
yytoken));
}
]b4_locations_if([
@@ -638,8 +638,8 @@ m4_popdef([b4_at_dollar])])dnl
yyn = yypact_[yystate];
if (!yy_pact_value_is_default_ (yyn))
{
- yyn += SymbolKind.]b4_symbol(1, kind)[;
- if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] ==
SymbolKind.]b4_symbol(1, kind)[)
+ yyn += ]b4_symbol(1, kind)[;
+ if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == ]b4_symbol(1,
kind)[)
{
yyn = yytable_[yyn];
if (0 < yyn)
@@ -726,7 +726,7 @@ m4_popdef([b4_at_dollar])])dnl
will still contain any token that will not be accepted due
to an error action in a later state.
*/
- if (tok != SymbolKind.]b4_symbol(-2, kind)[)
+ if (tok != ]b4_symbol(-2, kind)[)
{
// FIXME: This method of building the message is not compatible
// with internationalization.
@@ -745,14 +745,14 @@ m4_popdef([b4_at_dollar])])dnl
int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
int count = 0;
for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn] == x && x != SymbolKind.]b4_symbol(1, kind)[
+ if (yycheck_[x + yyn] == x && x != ]b4_symbol(1, kind)[
&& !yy_table_value_is_error_ (yytable_[x + yyn]))
++count;
if (count < 5)
{
count = 0;
for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn] == x && x != SymbolKind.]b4_symbol(1,
kind)[
+ if (yycheck_[x + yyn] == x && x != ]b4_symbol(1, kind)[
&& !yy_table_value_is_error_ (yytable_[x + yyn]))
{
res ~= count++ == 0 ? ", expecting " : " or ";
@@ -844,14 +844,14 @@ m4_popdef([b4_at_dollar])])dnl
immutable int code_max_ = ]b4_code_max[;
if (t <= 0)
- return SymbolKind.]b4_symbol_prefix[YYEOF;
+ return ]b4_symbol(0, kind)[;
else if (t <= code_max_)
{
import std.conv : to;
return to!SymbolKind (translate_table[t]);
}
else
- return SymbolKind.]b4_symbol_prefix[YYUNDEF;]])[
+ return ]b4_symbol(2, kind)[;]])[
}
private static immutable int yylast_ = ]b4_last[;
diff --git a/data/skeletons/lalr1.java b/data/skeletons/lalr1.java
index 307cfa6c..73df2e7a 100644
--- a/data/skeletons/lalr1.java
+++ b/data/skeletons/lalr1.java
@@ -602,9 +602,9 @@ b4_dollar_popdef[]dnl
push_token_consumed = false;]], [b4_parse_trace_if([[
yycdebug ("Reading a token");]])[
yychar = yylexer.yylex ();
- yylval = yylexer.getLVal ();]b4_locations_if([
- yylloc = new b4_location_type (yylexer.getStartPos (),
- yylexer.getEndPos ());])[
+ yylval = yylexer.getLVal();]b4_locations_if([[
+ yylloc = new ]b4_location_type[(yylexer.getStartPos(),
+ yylexer.getEndPos());]])[
]])[
}
@@ -613,14 +613,14 @@ b4_dollar_popdef[]dnl
yySymbolPrint("Next token is", yytoken,
yylval]b4_locations_if([, yylloc])[);]])[
- if (yytoken == SymbolKind.]b4_symbol_prefix[YYerror)
+ if (yytoken == ]b4_symbol(1, kind)[)
{
// The scanner already issued an error message, process directly
// to error recovery. But do not keep the error token as
// lookahead, it is too special and may lead us to an endless
// loop in error recovery. */
- yychar = Lexer.]b4_percent_define_get([api.token.prefix])[YYUNDEF;
- yytoken = SymbolKind.]b4_symbol_prefix[YYUNDEF;]b4_locations_if([[
+ yychar = Lexer.]b4_symbol(2, id)[;
+ yytoken = ]b4_symbol(2, kind)[;]b4_locations_if([[
yyerrloc = yylloc;]])[
label = YYERRLAB1;
}
@@ -628,8 +628,8 @@ b4_dollar_popdef[]dnl
{
/* If the proper action on seeing token YYTOKEN is to reduce or to
detect an error, take that action. */
- yyn += yytoken.getCode ();
- if (yyn < 0 || YYLAST_ < yyn || yycheck_[yyn] != yytoken.getCode
())
+ yyn += yytoken.getCode();
+ if (yyn < 0 || YYLAST_ < yyn || yycheck_[yyn] != yytoken.getCode())
label = YYDEFAULT;
/* <= 0 means reduce or error. */
@@ -744,9 +744,9 @@ b4_dollar_popdef[]dnl
yyn = yypact_[yystate];
if (!yyPactValueIsDefault (yyn))
{
- yyn += SymbolKind.]b4_symbol(1, kind)[.getCode ();
+ yyn += ]b4_symbol(1, kind)[.getCode();
if (0 <= yyn && yyn <= YYLAST_
- && yycheck_[yyn] == SymbolKind.]b4_symbol(1,
kind)[.getCode ())
+ && yycheck_[yyn] == ]b4_symbol(1, kind)[.getCode())
{
yyn = yytable_[yyn];
if (0 < yyn)
@@ -779,7 +779,7 @@ b4_dollar_popdef[]dnl
yystack.pop (2);]])[
/* Shift the error token. */]b4_parse_trace_if([[
- yySymbolPrint("Shifting", SymbolKind.get (yystos_[yyn]),
+ yySymbolPrint("Shifting", SymbolKind.get(yystos_[yyn]),
yylval]b4_locations_if([, yyloc])[);]])[
yystate = yyn;
@@ -933,15 +933,15 @@ b4_dollar_popdef[]dnl
int yychecklim = YYLAST_ - yyn + 1;
int yyxend = yychecklim < NTOKENS ? yychecklim : NTOKENS;
for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck_[yyx + yyn] == yyx && yyx != SymbolKind.]b4_symbol(1,
kind)[.getCode ()
- && !yyTableValueIsError (yytable_[yyx + yyn]))
+ if (yycheck_[yyx + yyn] == yyx && yyx != ]b4_symbol(1,
kind)[.getCode()
+ && !yyTableValueIsError(yytable_[yyx + yyn]))
{
if (yyarg == null)
yycount += 1;
else if (yycount == yyargn)
return 0; // FIXME: this is incorrect.
else
- yyarg[yycount++] = SymbolKind.get (yyx);
+ yyarg[yycount++] = SymbolKind.get(yyx);
}
}
if (yyarg != null && yycount == yyoffset && yyoffset < yyargn)
@@ -981,12 +981,12 @@ b4_dollar_popdef[]dnl
to an error action in a later state.
*/
int yycount = 0;
- if (yyctx.getToken () != null)
+ if (yyctx.getToken() != null)
{
if (yyarg != null)
- yyarg[yycount] = yyctx.getToken ();
+ yyarg[yycount] = yyctx.getToken();
yycount += 1;
- yycount += yyctx.getExpectedTokens (yyarg, 1, yyargn);
+ yycount += yyctx.getExpectedTokens(yyarg, 1, yyargn);
}
return yycount;
}
@@ -1071,7 +1071,7 @@ b4_dollar_popdef[]dnl
/* The symbols being reduced. */
for (int yyi = 0; yyi < yynrhs; yyi++)
yySymbolPrint(" $" + (yyi + 1) + " =",
- SymbolKind.get (yystos_[yystack.stateAt (yynrhs - (yyi +
1))]),
+ SymbolKind.get(yystos_[yystack.stateAt (yynrhs - (yyi +
1))]),
]b4_rhs_data(yynrhs, yyi + 1)b4_locations_if([,
b4_rhs_location(yynrhs, yyi + 1)])[);
}]])[
@@ -1081,17 +1081,17 @@ b4_dollar_popdef[]dnl
private static final SymbolKind yytranslate_ (int t)
]b4_api_token_raw_if(dnl
[[ {
- return SymbolKind.get (t);
+ return SymbolKind.get(t);
}
]],
[[ {
int code_max_ = ]b4_code_max[;
if (t <= 0)
- return SymbolKind.]b4_symbol_prefix[YYEOF;
+ return ]b4_symbol(0, kind)[;
else if (t <= code_max_)
- return SymbolKind.get (yytranslate_table_[t]);
+ return SymbolKind.get(yytranslate_table_[t]);
else
- return SymbolKind.]b4_symbol_prefix[YYUNDEF;
+ return ]b4_symbol(2, kind)[;
}
]b4_integral_parser_table_define([translate_table], [b4_translate])[
]])[
--
2.26.2
- [PATCH 0/6] Use symbol kinds in symbol actions, Akim Demaille, 2020/05/23
- [PATCH 1/6] tests: show logs, Akim Demaille, 2020/05/23
- [PATCH 2/6] m4: use m4_shift2 etc., Akim Demaille, 2020/05/23
- [PATCH 3/6] m4: simplify useless quotation, Akim Demaille, 2020/05/23
- [PATCH 4/6] kinds: also define the possibly qualified symbol kinds,
Akim Demaille <=
- [PATCH 5/6] kinds: use the symbol kinds where applicable, Akim Demaille, 2020/05/23
- [PATCH 6/6] regen, Akim Demaille, 2020/05/23