bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 02/10] c: make the token kind definition nicer to read


From: Akim Demaille
Subject: [PATCH 02/10] c: make the token kind definition nicer to read
Date: Tue, 7 Apr 2020 07:13:49 +0200

From

    enum gram_tokentype
    {
      GRAM_EOF = 0,
      STRING = 3,
      TSTRING = 4,
      PERCENT_TOKEN = 5,

To

    enum gram_tokentype
    {
      GRAM_EOF = 0,                  /* "end of file"  */
      STRING = 3,                    /* "string"  */
      TSTRING = 4,                   /* "translatable string"  */
      PERCENT_TOKEN = 5,             /* "%token"  */

* data/skeletons/bison.m4 (b4_last_enum_token): New.
* data/skeletons/c.m4 (b4_token_enum, b4_token_enums): Show the
corresponding symbol.
---
 data/skeletons/bison.m4 |  14 ++++-
 data/skeletons/c++.m4   |   4 +-
 data/skeletons/c.m4     |  12 ++--
 src/parse-gram.h        | 119 ++++++++++++++++++++--------------------
 4 files changed, 81 insertions(+), 68 deletions(-)

diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4
index 30168007..5681058d 100644
--- a/data/skeletons/bison.m4
+++ b/data/skeletons/bison.m4
@@ -553,8 +553,18 @@ m4_define([b4_any_token_visible_if],
 m4_define([b4_token_format],
 [b4_token_visible_if([$2],
 [m4_format([[$1]],
-           m4_quote(b4_symbol([$2], [id])),
-           m4_quote(b4_symbol([$2], b4_api_token_raw_if([[number]], 
[[user_number]]))))])])
+           m4_expand(b4_symbol([$2], [id])),
+           m4_expand(b4_symbol([$2], b4_api_token_raw_if([[number]], 
[[user_number]]))))])])
+
+
+# b4_last_enum_token
+# ------------------
+# The code of the last token visible token.
+m4_define([_b4_last_enum_token],
+[b4_token_visible_if([$1],
+   [m4_define([b4_last_enum_token], [$1])])])
+b4_symbol_foreach([_b4_last_enum_token])
+
 
 
 ## ------- ##
diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4
index f844ef66..111a8aac 100644
--- a/data/skeletons/c++.m4
+++ b/data/skeletons/c++.m4
@@ -170,9 +170,7 @@ 
m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
 m4_define([b4_token_enums],
 [[enum yytokentype
       {
-        ]m4_join([,
-        ],
-                 b4_symbol_map([b4_token_enum]))[
+]b4_symbol_foreach([b4_token_enum])[
       };]dnl
 ])
 
diff --git a/data/skeletons/c.m4 b/data/skeletons/c.m4
index 22b02444..a6f70c29 100644
--- a/data/skeletons/c.m4
+++ b/data/skeletons/c.m4
@@ -449,7 +449,13 @@ m4_join([
 # ------------------------
 # Output the definition of this token as an enum.
 m4_define([b4_token_enum],
-[b4_token_format([%s = %s], [$1])])
+[b4_token_visible_if([$1],
+    [m4_format([    %-30s %s],
+               m4_format([[%s = %s%s%s]],
+                         [b4_symbol([$1], [id])],
+                         [b4_symbol([$1], b4_api_token_raw_if([[number]], 
[[user_number]]))],
+                         m4_if([$1], b4_last_enum_token, [], [[,]])),
+               [b4_symbol_tag_comment([$1])])])])
 
 
 # b4_token_enums
@@ -461,9 +467,7 @@ m4_define([b4_token_enums],
 # define ]b4_api_PREFIX[TOKENTYPE
   enum ]b4_api_prefix[tokentype
   {
-    ]m4_join([,
-    ],
-             b4_symbol_map([b4_token_enum]))[
+]b4_symbol_foreach([b4_token_enum])[
   };
 #endif
 ]])])
diff --git a/src/parse-gram.h b/src/parse-gram.h
index 473dc30e..a7c63cea 100644
--- a/src/parse-gram.h
+++ b/src/parse-gram.h
@@ -77,65 +77,66 @@ extern int gram_debug;
 # define GRAM_TOKENTYPE
   enum gram_tokentype
   {
-    GRAM_EOF = 0,
-    STRING = 3,
-    TSTRING = 4,
-    PERCENT_TOKEN = 5,
-    PERCENT_NTERM = 6,
-    PERCENT_TYPE = 7,
-    PERCENT_DESTRUCTOR = 8,
-    PERCENT_PRINTER = 9,
-    PERCENT_LEFT = 10,
-    PERCENT_RIGHT = 11,
-    PERCENT_NONASSOC = 12,
-    PERCENT_PRECEDENCE = 13,
-    PERCENT_PREC = 14,
-    PERCENT_DPREC = 15,
-    PERCENT_MERGE = 16,
-    PERCENT_CODE = 17,
-    PERCENT_DEFAULT_PREC = 18,
-    PERCENT_DEFINE = 19,
-    PERCENT_DEFINES = 20,
-    PERCENT_ERROR_VERBOSE = 21,
-    PERCENT_EXPECT = 22,
-    PERCENT_EXPECT_RR = 23,
-    PERCENT_FLAG = 24,
-    PERCENT_FILE_PREFIX = 25,
-    PERCENT_GLR_PARSER = 26,
-    PERCENT_INITIAL_ACTION = 27,
-    PERCENT_LANGUAGE = 28,
-    PERCENT_NAME_PREFIX = 29,
-    PERCENT_NO_DEFAULT_PREC = 30,
-    PERCENT_NO_LINES = 31,
-    PERCENT_NONDETERMINISTIC_PARSER = 32,
-    PERCENT_OUTPUT = 33,
-    PERCENT_PURE_PARSER = 34,
-    PERCENT_REQUIRE = 35,
-    PERCENT_SKELETON = 36,
-    PERCENT_START = 37,
-    PERCENT_TOKEN_TABLE = 38,
-    PERCENT_VERBOSE = 39,
-    PERCENT_YACC = 40,
-    BRACED_CODE = 41,
-    BRACED_PREDICATE = 42,
-    BRACKETED_ID = 43,
-    CHAR = 44,
-    COLON = 45,
-    EPILOGUE = 46,
-    EQUAL = 47,
-    ID = 48,
-    ID_COLON = 49,
-    PERCENT_PERCENT = 50,
-    PIPE = 51,
-    PROLOGUE = 52,
-    SEMICOLON = 53,
-    TAG = 54,
-    TAG_ANY = 55,
-    TAG_NONE = 56,
-    INT = 57,
-    PERCENT_PARAM = 58,
-    PERCENT_UNION = 59,
-    PERCENT_EMPTY = 60
+    GRAM_EOF = 0,                  /* "end of file"  */
+    STRING = 3,                    /* "string"  */
+    TSTRING = 4,                   /* "translatable string"  */
+    PERCENT_TOKEN = 5,             /* "%token"  */
+    PERCENT_NTERM = 6,             /* "%nterm"  */
+    PERCENT_TYPE = 7,              /* "%type"  */
+    PERCENT_DESTRUCTOR = 8,        /* "%destructor"  */
+    PERCENT_PRINTER = 9,           /* "%printer"  */
+    PERCENT_LEFT = 10,             /* "%left"  */
+    PERCENT_RIGHT = 11,            /* "%right"  */
+    PERCENT_NONASSOC = 12,         /* "%nonassoc"  */
+    PERCENT_PRECEDENCE = 13,       /* "%precedence"  */
+    PERCENT_PREC = 14,             /* "%prec"  */
+    PERCENT_DPREC = 15,            /* "%dprec"  */
+    PERCENT_MERGE = 16,            /* "%merge"  */
+    PERCENT_CODE = 17,             /* "%code"  */
+    PERCENT_DEFAULT_PREC = 18,     /* "%default-prec"  */
+    PERCENT_DEFINE = 19,           /* "%define"  */
+    PERCENT_DEFINES = 20,          /* "%defines"  */
+    PERCENT_ERROR_VERBOSE = 21,    /* "%error-verbose"  */
+    PERCENT_EXPECT = 22,           /* "%expect"  */
+    PERCENT_EXPECT_RR = 23,        /* "%expect-rr"  */
+    PERCENT_FLAG = 24,             /* "%<flag>"  */
+    PERCENT_FILE_PREFIX = 25,      /* "%file-prefix"  */
+    PERCENT_GLR_PARSER = 26,       /* "%glr-parser"  */
+    PERCENT_INITIAL_ACTION = 27,   /* "%initial-action"  */
+    PERCENT_LANGUAGE = 28,         /* "%language"  */
+    PERCENT_NAME_PREFIX = 29,      /* "%name-prefix"  */
+    PERCENT_NO_DEFAULT_PREC = 30,  /* "%no-default-prec"  */
+    PERCENT_NO_LINES = 31,         /* "%no-lines"  */
+    PERCENT_NONDETERMINISTIC_PARSER = 32, /* "%nondeterministic-parser"  */
+    PERCENT_OUTPUT = 33,           /* "%output"  */
+    PERCENT_PURE_PARSER = 34,      /* "%pure-parser"  */
+    PERCENT_REQUIRE = 35,          /* "%require"  */
+    PERCENT_SKELETON = 36,         /* "%skeleton"  */
+    PERCENT_START = 37,            /* "%start"  */
+    PERCENT_TOKEN_TABLE = 38,      /* "%token-table"  */
+    PERCENT_VERBOSE = 39,          /* "%verbose"  */
+    PERCENT_YACC = 40,             /* "%yacc"  */
+    BRACED_CODE = 41,              /* "{...}"  */
+    BRACED_PREDICATE = 42,         /* "%?{...}"  */
+    BRACKETED_ID = 43,             /* "[identifier]"  */
+    CHAR = 44,                     /* "character literal"  */
+    COLON = 45,                    /* ":"  */
+    EPILOGUE = 46,                 /* "epilogue"  */
+    EQUAL = 47,                    /* "="  */
+    ID = 48,                       /* "identifier"  */
+    ID_COLON = 49,                 /* "identifier:"  */
+    PERCENT_PERCENT = 50,          /* "%%"  */
+    PIPE = 51,                     /* "|"  */
+    PROLOGUE = 52,                 /* "%{...%}"  */
+    SEMICOLON = 53,                /* ";"  */
+    TAG = 54,                      /* "<tag>"  */
+    TAG_ANY = 55,                  /* "<*>"  */
+    TAG_NONE = 56,                 /* "<>"  */
+    INT = 57,                      /* "integer literal"  */
+    PERCENT_PARAM = 58,            /* "%param"  */
+    PERCENT_UNION = 59,            /* "%union"  */
+    PERCENT_EMPTY = 60             /* "%empty"  */
+
   };
 #endif
 
-- 
2.26.0




reply via email to

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