bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]