mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* data/bison.simple (b4_token_enum): New.
(b4_token_defines): Use it to output tokens both as #define and enums. Suggested by Paul Eggert. * src/output.c (token_definitions_output): Don't output spurious white spaces.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2002-05-03 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* data/bison.simple (b4_token_enum): New.
|
||||||
|
(b4_token_defines): Use it to output tokens both as #define and
|
||||||
|
enums.
|
||||||
|
Suggested by Paul Eggert.
|
||||||
|
* src/output.c (token_definitions_output): Don't output spurious
|
||||||
|
white spaces.
|
||||||
|
|
||||||
2002-05-03 Akim Demaille <akim@epita.fr>
|
2002-05-03 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
|
* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
|
||||||
|
|||||||
20
TODO
20
TODO
@@ -34,26 +34,6 @@ Paul notes:
|
|||||||
PDP-10 ports :-) but they should probably be documented
|
PDP-10 ports :-) but they should probably be documented
|
||||||
somewhere.
|
somewhere.
|
||||||
|
|
||||||
* Using enums instead of int for tokens.
|
|
||||||
Paul suggests:
|
|
||||||
|
|
||||||
#ifndef YYTOKENTYPE
|
|
||||||
# if defined (__STDC__) || defined (__cplusplus)
|
|
||||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
|
||||||
know about them. */
|
|
||||||
enum yytokentype {
|
|
||||||
FOO = 256,
|
|
||||||
BAR,
|
|
||||||
...
|
|
||||||
};
|
|
||||||
/* POSIX requires `int' for tokens in interfaces. */
|
|
||||||
# define YYTOKENTYPE int
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#define FOO 256
|
|
||||||
#define BAR 257
|
|
||||||
...
|
|
||||||
|
|
||||||
* Output directory
|
* Output directory
|
||||||
Akim:
|
Akim:
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ m4_define([b4_rhs_location],
|
|||||||
[location_stack_@<:@m4_eval([$1 - $2])@:>@])
|
[location_stack_@<:@m4_eval([$1 - $2])@:>@])
|
||||||
|
|
||||||
|
|
||||||
# b4_token_defines(TOKEN-NAME, TOKEN-NUMBER)
|
# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
|
||||||
# ------------------------------------------
|
# -----------------------------------------
|
||||||
# Output the definition of this token as #define.
|
# Output the definition of this token as #define.
|
||||||
m4_define([b4_token_define],
|
m4_define([b4_token_define],
|
||||||
[#define $1 $2
|
[#define $1 $2
|
||||||
|
|||||||
@@ -70,19 +70,39 @@ m4_define_default([b4_header_guard],
|
|||||||
[[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
|
[[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
|
||||||
|
|
||||||
|
|
||||||
# b4_token_defines(TOKEN-NAME, TOKEN-NUMBER)
|
# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
|
||||||
# ------------------------------------------
|
# -----------------------------------------
|
||||||
# Output the definition of this token as #define.
|
# Output the definition of this token as #define.
|
||||||
m4_define([b4_token_define],
|
m4_define([b4_token_define],
|
||||||
[#define $1 $2
|
[#define $1 $2
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER)
|
||||||
|
# ---------------------------------------
|
||||||
|
# Output the definition of this token as an enum.
|
||||||
|
m4_define([b4_token_enum],
|
||||||
|
[enum $1 = $2])
|
||||||
|
|
||||||
|
|
||||||
# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
# Output the definition of the tokens as #define.
|
# Output the definition of the tokens as #define.
|
||||||
m4_define([b4_token_defines],
|
m4_define([b4_token_defines],
|
||||||
[m4_map([b4_token_define], [$@])])
|
[#ifndef YYTOKENTYPE
|
||||||
|
# if defined (__STDC__) || defined (__cplusplus)
|
||||||
|
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||||
|
know about them. */
|
||||||
|
enum yytokentype {
|
||||||
|
m4_map_sep([ b4_token_enum], [,
|
||||||
|
],
|
||||||
|
[$@])
|
||||||
|
};
|
||||||
|
/* POSIX requires `int' for tokens in interfaces. */
|
||||||
|
# define YYTOKENTYPE int
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
m4_map([b4_token_define], [$@])])
|
||||||
|
|
||||||
|
|
||||||
m4_divert(0)dnl
|
m4_divert(0)dnl
|
||||||
|
|||||||
@@ -603,7 +603,7 @@ token_definitions_output (FILE *out)
|
|||||||
if (strchr (symbol->tag, '.') || strchr (symbol->tag, '$'))
|
if (strchr (symbol->tag, '.') || strchr (symbol->tag, '$'))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
fprintf (out, "%s [[[%s]], [%d]]",
|
fprintf (out, "%s[[[%s]], [%d]]",
|
||||||
first ? "" : ",\n", symbol->tag, number);
|
first ? "" : ",\n", symbol->tag, number);
|
||||||
first = 0;
|
first = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user