bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

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