c: make the token kind definition nicer to read

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.
This commit is contained in:
Akim Demaille
2020-04-06 07:17:42 +02:00
parent 149e280aab
commit 10e61eec6d
4 changed files with 81 additions and 68 deletions

View File

@@ -553,8 +553,18 @@ m4_define([b4_any_token_visible_if],
m4_define([b4_token_format], m4_define([b4_token_format],
[b4_token_visible_if([$2], [b4_token_visible_if([$2],
[m4_format([[$1]], [m4_format([[$1]],
m4_quote(b4_symbol([$2], [id])), m4_expand(b4_symbol([$2], [id])),
m4_quote(b4_symbol([$2], b4_api_token_raw_if([[number]], [[user_number]]))))])]) 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])
## ------- ## ## ------- ##

View File

@@ -170,9 +170,7 @@ m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]),
m4_define([b4_token_enums], m4_define([b4_token_enums],
[[enum yytokentype [[enum yytokentype
{ {
]m4_join([, ]b4_symbol_foreach([b4_token_enum])[
],
b4_symbol_map([b4_token_enum]))[
};]dnl };]dnl
]) ])

View File

@@ -449,7 +449,13 @@ m4_join([
# ------------------------ # ------------------------
# Output the definition of this token as an enum. # Output the definition of this token as an enum.
m4_define([b4_token_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 # b4_token_enums
@@ -461,9 +467,7 @@ m4_define([b4_token_enums],
# define ]b4_api_PREFIX[TOKENTYPE # define ]b4_api_PREFIX[TOKENTYPE
enum ]b4_api_prefix[tokentype enum ]b4_api_prefix[tokentype
{ {
]m4_join([, ]b4_symbol_foreach([b4_token_enum])[
],
b4_symbol_map([b4_token_enum]))[
}; };
#endif #endif
]])]) ]])])

View File

@@ -77,65 +77,66 @@ extern int gram_debug;
# define GRAM_TOKENTYPE # define GRAM_TOKENTYPE
enum gram_tokentype enum gram_tokentype
{ {
GRAM_EOF = 0, GRAM_EOF = 0, /* "end of file" */
STRING = 3, STRING = 3, /* "string" */
TSTRING = 4, TSTRING = 4, /* "translatable string" */
PERCENT_TOKEN = 5, PERCENT_TOKEN = 5, /* "%token" */
PERCENT_NTERM = 6, PERCENT_NTERM = 6, /* "%nterm" */
PERCENT_TYPE = 7, PERCENT_TYPE = 7, /* "%type" */
PERCENT_DESTRUCTOR = 8, PERCENT_DESTRUCTOR = 8, /* "%destructor" */
PERCENT_PRINTER = 9, PERCENT_PRINTER = 9, /* "%printer" */
PERCENT_LEFT = 10, PERCENT_LEFT = 10, /* "%left" */
PERCENT_RIGHT = 11, PERCENT_RIGHT = 11, /* "%right" */
PERCENT_NONASSOC = 12, PERCENT_NONASSOC = 12, /* "%nonassoc" */
PERCENT_PRECEDENCE = 13, PERCENT_PRECEDENCE = 13, /* "%precedence" */
PERCENT_PREC = 14, PERCENT_PREC = 14, /* "%prec" */
PERCENT_DPREC = 15, PERCENT_DPREC = 15, /* "%dprec" */
PERCENT_MERGE = 16, PERCENT_MERGE = 16, /* "%merge" */
PERCENT_CODE = 17, PERCENT_CODE = 17, /* "%code" */
PERCENT_DEFAULT_PREC = 18, PERCENT_DEFAULT_PREC = 18, /* "%default-prec" */
PERCENT_DEFINE = 19, PERCENT_DEFINE = 19, /* "%define" */
PERCENT_DEFINES = 20, PERCENT_DEFINES = 20, /* "%defines" */
PERCENT_ERROR_VERBOSE = 21, PERCENT_ERROR_VERBOSE = 21, /* "%error-verbose" */
PERCENT_EXPECT = 22, PERCENT_EXPECT = 22, /* "%expect" */
PERCENT_EXPECT_RR = 23, PERCENT_EXPECT_RR = 23, /* "%expect-rr" */
PERCENT_FLAG = 24, PERCENT_FLAG = 24, /* "%<flag>" */
PERCENT_FILE_PREFIX = 25, PERCENT_FILE_PREFIX = 25, /* "%file-prefix" */
PERCENT_GLR_PARSER = 26, PERCENT_GLR_PARSER = 26, /* "%glr-parser" */
PERCENT_INITIAL_ACTION = 27, PERCENT_INITIAL_ACTION = 27, /* "%initial-action" */
PERCENT_LANGUAGE = 28, PERCENT_LANGUAGE = 28, /* "%language" */
PERCENT_NAME_PREFIX = 29, PERCENT_NAME_PREFIX = 29, /* "%name-prefix" */
PERCENT_NO_DEFAULT_PREC = 30, PERCENT_NO_DEFAULT_PREC = 30, /* "%no-default-prec" */
PERCENT_NO_LINES = 31, PERCENT_NO_LINES = 31, /* "%no-lines" */
PERCENT_NONDETERMINISTIC_PARSER = 32, PERCENT_NONDETERMINISTIC_PARSER = 32, /* "%nondeterministic-parser" */
PERCENT_OUTPUT = 33, PERCENT_OUTPUT = 33, /* "%output" */
PERCENT_PURE_PARSER = 34, PERCENT_PURE_PARSER = 34, /* "%pure-parser" */
PERCENT_REQUIRE = 35, PERCENT_REQUIRE = 35, /* "%require" */
PERCENT_SKELETON = 36, PERCENT_SKELETON = 36, /* "%skeleton" */
PERCENT_START = 37, PERCENT_START = 37, /* "%start" */
PERCENT_TOKEN_TABLE = 38, PERCENT_TOKEN_TABLE = 38, /* "%token-table" */
PERCENT_VERBOSE = 39, PERCENT_VERBOSE = 39, /* "%verbose" */
PERCENT_YACC = 40, PERCENT_YACC = 40, /* "%yacc" */
BRACED_CODE = 41, BRACED_CODE = 41, /* "{...}" */
BRACED_PREDICATE = 42, BRACED_PREDICATE = 42, /* "%?{...}" */
BRACKETED_ID = 43, BRACKETED_ID = 43, /* "[identifier]" */
CHAR = 44, CHAR = 44, /* "character literal" */
COLON = 45, COLON = 45, /* ":" */
EPILOGUE = 46, EPILOGUE = 46, /* "epilogue" */
EQUAL = 47, EQUAL = 47, /* "=" */
ID = 48, ID = 48, /* "identifier" */
ID_COLON = 49, ID_COLON = 49, /* "identifier:" */
PERCENT_PERCENT = 50, PERCENT_PERCENT = 50, /* "%%" */
PIPE = 51, PIPE = 51, /* "|" */
PROLOGUE = 52, PROLOGUE = 52, /* "%{...%}" */
SEMICOLON = 53, SEMICOLON = 53, /* ";" */
TAG = 54, TAG = 54, /* "<tag>" */
TAG_ANY = 55, TAG_ANY = 55, /* "<*>" */
TAG_NONE = 56, TAG_NONE = 56, /* "<>" */
INT = 57, INT = 57, /* "integer literal" */
PERCENT_PARAM = 58, PERCENT_PARAM = 58, /* "%param" */
PERCENT_UNION = 59, PERCENT_UNION = 59, /* "%union" */
PERCENT_EMPTY = 60 PERCENT_EMPTY = 60 /* "%empty" */
}; };
#endif #endif