[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
- [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 <=
- [PATCH 03/10] c: make the symbol kind definition nicer to read, Akim Demaille, 2020/04/07
- [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