[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/10] c: make the symbol kind definition nicer to read
From: |
Akim Demaille |
Subject: |
[PATCH 03/10] c: make the symbol kind definition nicer to read |
Date: |
Tue, 7 Apr 2020 07:13:50 +0200 |
From
enum yysymbol_kind_t
{
YYSYMBOL_YYEMPTY = -2,
YYSYMBOL_YYEOF = 0,
YYSYMBOL_YYERROR = 1,
YYSYMBOL_YYUNDEF = 2,
to
enum yysymbol_kind_t
{
YYSYMBOL_YYEMPTY = -2,
YYSYMBOL_YYEOF = 0, /* "end of file" */
YYSYMBOL_YYERROR = 1, /* error */
YYSYMBOL_YYUNDEF = 2, /* $undefined */
* data/skeletons/bison.m4 (b4_last_symbol): New.
(b4_symbol_enum, b4_symbol_enums): Reformat the output.
* data/skeletons/c.m4
---
data/skeletons/bison.m4 | 5 +-
data/skeletons/c++.m4 | 10 +-
data/skeletons/c.m4 | 17 ++--
src/parse-gram.c | 207 ++++++++++++++++++++--------------------
4 files changed, 120 insertions(+), 119 deletions(-)
diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4
index 5681058d..ce68e184 100644
--- a/data/skeletons/bison.m4
+++ b/data/skeletons/bison.m4
@@ -565,7 +565,10 @@ m4_define([_b4_last_enum_token],
[m4_define([b4_last_enum_token], [$1])])])
b4_symbol_foreach([_b4_last_enum_token])
-
+# b4_last_symbol
+# --------------
+# The code of the last symbol.
+m4_define([b4_last_symbol], m4_eval(b4_tokens_number + b4_nterms_number - 1))
## ------- ##
## Types. ##
diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4
index 111a8aac..ffe0c91f 100644
--- a/data/skeletons/c++.m4
+++ b/data/skeletons/c++.m4
@@ -188,13 +188,11 @@ m4_define([b4_token_enums],
m4_define([b4_declare_symbol_enum],
[[enum symbol_kind_type
{
- ]m4_join([,
- ],
- ]b4_symbol_kind([-2])[ = -2,
- b4_symbol_map([b4_symbol_enum]),
- [YYNTOKENS = ]b4_tokens_number[ ///< Number of tokens.])[
+ YYNTOKENS = ]b4_tokens_number[, ///< Number of tokens.
+ ]b4_symbol_kind([-2])[ = -2,
+]b4_symbol_foreach([ b4_symbol_enum])[
};
-]])])
+]])
diff --git a/data/skeletons/c.m4 b/data/skeletons/c.m4
index a6f70c29..787ca000 100644
--- a/data/skeletons/c.m4
+++ b/data/skeletons/c.m4
@@ -494,15 +494,16 @@ m4_define([b4_symbol_translate],
## (Internal) symbol numbers. ##
## --------------------------- ##
-
# b4_symbol_enum(SYMBOL-NUM)
# --------------------------
# Output the definition of this symbol as an enum.
m4_define([b4_symbol_enum],
-[m4_ifval(b4_symbol([$1], [kind]),
- [m4_format([[%s = %s]],
- b4_symbol([$1], [kind]),
- b4_symbol([$1], [number]))])])
+[m4_format([ %-40s %s],
+ m4_format([[%s = %s%s%s]],
+ b4_symbol([$1], [kind]),
+ [$1],
+ m4_if([$1], b4_last_symbol, [], [[,]])),
+ [b4_symbol_tag_comment([$1])])])
# b4_declare_symbol_enum
@@ -514,10 +515,8 @@ m4_define([b4_declare_symbol_enum],
[[/* Symbol type. */
enum yysymbol_kind_t
{
- ]m4_join([,
- ],
- ]b4_symbol_kind([-2])[ = -2,
- b4_symbol_map([b4_symbol_enum]))[
+ ]b4_symbol_kind([-2])[ = -2,
+]b4_symbol_foreach([b4_symbol_enum])[
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
]])])
diff --git a/src/parse-gram.c b/src/parse-gram.c
index 4dc22c41..5be2b1d9 100644
--- a/src/parse-gram.c
+++ b/src/parse-gram.c
@@ -104,109 +104,110 @@
enum yysymbol_kind_t
{
YYSYMBOL_YYEMPTY = -2,
- YYSYMBOL_YYEOF = 0,
- YYSYMBOL_YYERROR = 1,
- YYSYMBOL_YYUNDEF = 2,
- YYSYMBOL_STRING = 3,
- YYSYMBOL_TSTRING = 4,
- YYSYMBOL_PERCENT_TOKEN = 5,
- YYSYMBOL_PERCENT_NTERM = 6,
- YYSYMBOL_PERCENT_TYPE = 7,
- YYSYMBOL_PERCENT_DESTRUCTOR = 8,
- YYSYMBOL_PERCENT_PRINTER = 9,
- YYSYMBOL_PERCENT_LEFT = 10,
- YYSYMBOL_PERCENT_RIGHT = 11,
- YYSYMBOL_PERCENT_NONASSOC = 12,
- YYSYMBOL_PERCENT_PRECEDENCE = 13,
- YYSYMBOL_PERCENT_PREC = 14,
- YYSYMBOL_PERCENT_DPREC = 15,
- YYSYMBOL_PERCENT_MERGE = 16,
- YYSYMBOL_PERCENT_CODE = 17,
- YYSYMBOL_PERCENT_DEFAULT_PREC = 18,
- YYSYMBOL_PERCENT_DEFINE = 19,
- YYSYMBOL_PERCENT_DEFINES = 20,
- YYSYMBOL_PERCENT_ERROR_VERBOSE = 21,
- YYSYMBOL_PERCENT_EXPECT = 22,
- YYSYMBOL_PERCENT_EXPECT_RR = 23,
- YYSYMBOL_PERCENT_FLAG = 24,
- YYSYMBOL_PERCENT_FILE_PREFIX = 25,
- YYSYMBOL_PERCENT_GLR_PARSER = 26,
- YYSYMBOL_PERCENT_INITIAL_ACTION = 27,
- YYSYMBOL_PERCENT_LANGUAGE = 28,
- YYSYMBOL_PERCENT_NAME_PREFIX = 29,
- YYSYMBOL_PERCENT_NO_DEFAULT_PREC = 30,
- YYSYMBOL_PERCENT_NO_LINES = 31,
- YYSYMBOL_PERCENT_NONDETERMINISTIC_PARSER = 32,
- YYSYMBOL_PERCENT_OUTPUT = 33,
- YYSYMBOL_PERCENT_PURE_PARSER = 34,
- YYSYMBOL_PERCENT_REQUIRE = 35,
- YYSYMBOL_PERCENT_SKELETON = 36,
- YYSYMBOL_PERCENT_START = 37,
- YYSYMBOL_PERCENT_TOKEN_TABLE = 38,
- YYSYMBOL_PERCENT_VERBOSE = 39,
- YYSYMBOL_PERCENT_YACC = 40,
- YYSYMBOL_BRACED_CODE = 41,
- YYSYMBOL_BRACED_PREDICATE = 42,
- YYSYMBOL_BRACKETED_ID = 43,
- YYSYMBOL_CHAR = 44,
- YYSYMBOL_COLON = 45,
- YYSYMBOL_EPILOGUE = 46,
- YYSYMBOL_EQUAL = 47,
- YYSYMBOL_ID = 48,
- YYSYMBOL_ID_COLON = 49,
- YYSYMBOL_PERCENT_PERCENT = 50,
- YYSYMBOL_PIPE = 51,
- YYSYMBOL_PROLOGUE = 52,
- YYSYMBOL_SEMICOLON = 53,
- YYSYMBOL_TAG = 54,
- YYSYMBOL_TAG_ANY = 55,
- YYSYMBOL_TAG_NONE = 56,
- YYSYMBOL_INT = 57,
- YYSYMBOL_PERCENT_PARAM = 58,
- YYSYMBOL_PERCENT_UNION = 59,
- YYSYMBOL_PERCENT_EMPTY = 60,
- YYSYMBOL_YYACCEPT = 61,
- YYSYMBOL_input = 62,
- YYSYMBOL_prologue_declarations = 63,
- YYSYMBOL_prologue_declaration = 64,
- YYSYMBOL_65____1 = 65,
- YYSYMBOL_params = 66,
- YYSYMBOL_grammar_declaration = 67,
- YYSYMBOL_code_props_type = 68,
- YYSYMBOL_union_name = 69,
- YYSYMBOL_symbol_declaration = 70,
- YYSYMBOL_71____2 = 71,
- YYSYMBOL_72____3 = 72,
- YYSYMBOL_precedence_declarator = 73,
- YYSYMBOL_74_tag_opt = 74,
- YYSYMBOL_generic_symlist = 75,
- YYSYMBOL_generic_symlist_item = 76,
- YYSYMBOL_tag = 77,
- YYSYMBOL_nterm_decls = 78,
- YYSYMBOL_token_decls = 79,
- YYSYMBOL_80_token_decl_1 = 80,
- YYSYMBOL_token_decl = 81,
- YYSYMBOL_82_int_opt = 82,
- YYSYMBOL_alias = 83,
- YYSYMBOL_token_decls_for_prec = 84,
- YYSYMBOL_85_token_decl_for_prec_1 = 85,
- YYSYMBOL_token_decl_for_prec = 86,
- YYSYMBOL_symbol_decls = 87,
- YYSYMBOL_88_symbol_decl_1 = 88,
- YYSYMBOL_grammar = 89,
- YYSYMBOL_rules_or_grammar_declaration = 90,
- YYSYMBOL_rules = 91,
- YYSYMBOL_92____4 = 92,
- YYSYMBOL_93_rhses_1 = 93,
- YYSYMBOL_rhs = 94,
- YYSYMBOL_95_named_ref_opt = 95,
- YYSYMBOL_variable = 96,
- YYSYMBOL_value = 97,
- YYSYMBOL_id = 98,
- YYSYMBOL_id_colon = 99,
- YYSYMBOL_symbol = 100,
- YYSYMBOL_string_as_id = 101,
- YYSYMBOL_102_epilogue_opt = 102
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYERROR = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* $undefined */
+ YYSYMBOL_STRING = 3, /* "string" */
+ YYSYMBOL_TSTRING = 4, /* "translatable string" */
+ YYSYMBOL_PERCENT_TOKEN = 5, /* "%token" */
+ YYSYMBOL_PERCENT_NTERM = 6, /* "%nterm" */
+ YYSYMBOL_PERCENT_TYPE = 7, /* "%type" */
+ YYSYMBOL_PERCENT_DESTRUCTOR = 8, /* "%destructor" */
+ YYSYMBOL_PERCENT_PRINTER = 9, /* "%printer" */
+ YYSYMBOL_PERCENT_LEFT = 10, /* "%left" */
+ YYSYMBOL_PERCENT_RIGHT = 11, /* "%right" */
+ YYSYMBOL_PERCENT_NONASSOC = 12, /* "%nonassoc" */
+ YYSYMBOL_PERCENT_PRECEDENCE = 13, /* "%precedence" */
+ YYSYMBOL_PERCENT_PREC = 14, /* "%prec" */
+ YYSYMBOL_PERCENT_DPREC = 15, /* "%dprec" */
+ YYSYMBOL_PERCENT_MERGE = 16, /* "%merge" */
+ YYSYMBOL_PERCENT_CODE = 17, /* "%code" */
+ YYSYMBOL_PERCENT_DEFAULT_PREC = 18, /* "%default-prec" */
+ YYSYMBOL_PERCENT_DEFINE = 19, /* "%define" */
+ YYSYMBOL_PERCENT_DEFINES = 20, /* "%defines" */
+ YYSYMBOL_PERCENT_ERROR_VERBOSE = 21, /* "%error-verbose" */
+ YYSYMBOL_PERCENT_EXPECT = 22, /* "%expect" */
+ YYSYMBOL_PERCENT_EXPECT_RR = 23, /* "%expect-rr" */
+ YYSYMBOL_PERCENT_FLAG = 24, /* "%<flag>" */
+ YYSYMBOL_PERCENT_FILE_PREFIX = 25, /* "%file-prefix" */
+ YYSYMBOL_PERCENT_GLR_PARSER = 26, /* "%glr-parser" */
+ YYSYMBOL_PERCENT_INITIAL_ACTION = 27, /* "%initial-action" */
+ YYSYMBOL_PERCENT_LANGUAGE = 28, /* "%language" */
+ YYSYMBOL_PERCENT_NAME_PREFIX = 29, /* "%name-prefix" */
+ YYSYMBOL_PERCENT_NO_DEFAULT_PREC = 30, /* "%no-default-prec" */
+ YYSYMBOL_PERCENT_NO_LINES = 31, /* "%no-lines" */
+ YYSYMBOL_PERCENT_NONDETERMINISTIC_PARSER = 32, /* "%nondeterministic-parser"
*/
+ YYSYMBOL_PERCENT_OUTPUT = 33, /* "%output" */
+ YYSYMBOL_PERCENT_PURE_PARSER = 34, /* "%pure-parser" */
+ YYSYMBOL_PERCENT_REQUIRE = 35, /* "%require" */
+ YYSYMBOL_PERCENT_SKELETON = 36, /* "%skeleton" */
+ YYSYMBOL_PERCENT_START = 37, /* "%start" */
+ YYSYMBOL_PERCENT_TOKEN_TABLE = 38, /* "%token-table" */
+ YYSYMBOL_PERCENT_VERBOSE = 39, /* "%verbose" */
+ YYSYMBOL_PERCENT_YACC = 40, /* "%yacc" */
+ YYSYMBOL_BRACED_CODE = 41, /* "{...}" */
+ YYSYMBOL_BRACED_PREDICATE = 42, /* "%?{...}" */
+ YYSYMBOL_BRACKETED_ID = 43, /* "[identifier]" */
+ YYSYMBOL_CHAR = 44, /* "character literal" */
+ YYSYMBOL_COLON = 45, /* ":" */
+ YYSYMBOL_EPILOGUE = 46, /* "epilogue" */
+ YYSYMBOL_EQUAL = 47, /* "=" */
+ YYSYMBOL_ID = 48, /* "identifier" */
+ YYSYMBOL_ID_COLON = 49, /* "identifier:" */
+ YYSYMBOL_PERCENT_PERCENT = 50, /* "%%" */
+ YYSYMBOL_PIPE = 51, /* "|" */
+ YYSYMBOL_PROLOGUE = 52, /* "%{...%}" */
+ YYSYMBOL_SEMICOLON = 53, /* ";" */
+ YYSYMBOL_TAG = 54, /* "<tag>" */
+ YYSYMBOL_TAG_ANY = 55, /* "<*>" */
+ YYSYMBOL_TAG_NONE = 56, /* "<>" */
+ YYSYMBOL_INT = 57, /* "integer literal" */
+ YYSYMBOL_PERCENT_PARAM = 58, /* "%param" */
+ YYSYMBOL_PERCENT_UNION = 59, /* "%union" */
+ YYSYMBOL_PERCENT_EMPTY = 60, /* "%empty" */
+ YYSYMBOL_YYACCEPT = 61, /* $accept */
+ YYSYMBOL_input = 62, /* input */
+ YYSYMBOL_prologue_declarations = 63, /* prologue_declarations */
+ YYSYMBOL_prologue_declaration = 64, /* prologue_declaration */
+ YYSYMBOL_65____1 = 65, /* $@1 */
+ YYSYMBOL_params = 66, /* params */
+ YYSYMBOL_grammar_declaration = 67, /* grammar_declaration */
+ YYSYMBOL_code_props_type = 68, /* code_props_type */
+ YYSYMBOL_union_name = 69, /* union_name */
+ YYSYMBOL_symbol_declaration = 70, /* symbol_declaration */
+ YYSYMBOL_71____2 = 71, /* $@2 */
+ YYSYMBOL_72____3 = 72, /* $@3 */
+ YYSYMBOL_precedence_declarator = 73, /* precedence_declarator */
+ YYSYMBOL_74_tag_opt = 74, /* tag.opt */
+ YYSYMBOL_generic_symlist = 75, /* generic_symlist */
+ YYSYMBOL_generic_symlist_item = 76, /* generic_symlist_item */
+ YYSYMBOL_tag = 77, /* tag */
+ YYSYMBOL_nterm_decls = 78, /* nterm_decls */
+ YYSYMBOL_token_decls = 79, /* token_decls */
+ YYSYMBOL_80_token_decl_1 = 80, /* token_decl.1 */
+ YYSYMBOL_token_decl = 81, /* token_decl */
+ YYSYMBOL_82_int_opt = 82, /* int.opt */
+ YYSYMBOL_alias = 83, /* alias */
+ YYSYMBOL_token_decls_for_prec = 84, /* token_decls_for_prec */
+ YYSYMBOL_85_token_decl_for_prec_1 = 85, /* token_decl_for_prec.1 */
+ YYSYMBOL_token_decl_for_prec = 86, /* token_decl_for_prec */
+ YYSYMBOL_symbol_decls = 87, /* symbol_decls */
+ YYSYMBOL_88_symbol_decl_1 = 88, /* symbol_decl.1 */
+ YYSYMBOL_grammar = 89, /* grammar */
+ YYSYMBOL_rules_or_grammar_declaration = 90, /* rules_or_grammar_declaration
*/
+ YYSYMBOL_rules = 91, /* rules */
+ YYSYMBOL_92____4 = 92, /* $@4 */
+ YYSYMBOL_93_rhses_1 = 93, /* rhses.1 */
+ YYSYMBOL_rhs = 94, /* rhs */
+ YYSYMBOL_95_named_ref_opt = 95, /* named_ref.opt */
+ YYSYMBOL_variable = 96, /* variable */
+ YYSYMBOL_value = 97, /* value */
+ YYSYMBOL_id = 98, /* id */
+ YYSYMBOL_id_colon = 99, /* id_colon */
+ YYSYMBOL_symbol = 100, /* symbol */
+ YYSYMBOL_string_as_id = 101, /* string_as_id */
+ YYSYMBOL_102_epilogue_opt = 102, /* epilogue.opt */
+
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
--
2.26.0
- [PATCH 00/10] Make recent feature better looking, Akim Demaille, 2020/04/07
- [PATCH 01/10] c: make the generated YYSTYPE nicer to read, Akim Demaille, 2020/04/07
- [PATCH 02/10] c: make the token kind definition nicer to read, Akim Demaille, 2020/04/07
- [PATCH 03/10] c: make the symbol kind definition nicer to read,
Akim Demaille <=
- [PATCH 05/10] java: use getExpectedTokens, not yyexpectedTokens, Akim Demaille, 2020/04/07
- [PATCH 04/10] java: style: fix coding style, Akim Demaille, 2020/04/07
- [PATCH 07/10] java: prefer null to YYSYMBOL_YYEMPTY, Akim Demaille, 2020/04/07
- [PATCH 10/10] todo: update, Akim Demaille, 2020/04/07
- [PATCH 06/10] java: rename Lexer.yyreportSyntaxError as reportSyntaxError, Akim Demaille, 2020/04/07
- [PATCH 08/10] java: document new features, Akim Demaille, 2020/04/07
- [PATCH 09/10] skeletons: beware not to use yyarg when it's null, Akim Demaille, 2020/04/07