]> git.saurik.com Git - bison.git/commitdiff
* data/bison.simple (b4_token_enum): New.
authorAkim Demaille <akim@epita.fr>
Fri, 3 May 2002 08:42:48 +0000 (08:42 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 3 May 2002 08:42:48 +0000 (08:42 +0000)
(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.

ChangeLog
TODO
data/bison.c++
data/bison.simple
src/output.c

index 147125c2b09494805ea0d67534b4f616a513c51c..8083bc8f084d5efee2d8e5dd0c0f0cb1071df383 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
diff --git a/TODO b/TODO
index e94652cd35f24d50231813ebc54bf0ca3624d22d..a43659b4a4f06f9005e2ccaf3c27fb4202ae8d35 100644 (file)
--- a/TODO
+++ b/TODO
@@ -34,26 +34,6 @@ Paul notes:
        PDP-10 ports :-) but they should probably be documented
        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
 Akim:
 
index b0ba32f4cb00de3c5b72c9f1cfc3cad29415c089..f5c39f4181b293e73c15393604791cdb40c64117 100644 (file)
@@ -50,8 +50,8 @@ m4_define([b4_rhs_location],
 [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.
 m4_define([b4_token_define],
 [#define $1 $2
index 0a7804dc91149742a3a02e91907efcf23de40cbc..1c153a0a2570b18c6b8a7fca8b9402d5d575bd85 100644 (file)
@@ -70,19 +70,39 @@ m4_define_default([b4_header_guard],
                                 [[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
 
 
-# b4_token_defines(TOKEN-NAME, TOKEN-NUMBER)
-# ------------------------------------------
+# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
+# -----------------------------------------
 # Output the definition of this token as #define.
 m4_define([b4_token_define],
 [#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)
 # -------------------------------------------------------
 # Output the definition of the tokens as #define.
 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
index 676328fb7649fdc2f12236590e326a84096e796d..f92b6646306b5c656e3b4263f446d444561044b0 100644 (file)
@@ -603,7 +603,7 @@ token_definitions_output (FILE *out)
       if (strchr (symbol->tag, '.') || strchr (symbol->tag, '$'))
        continue;
 
-      fprintf (out, "%s  [[[%s]], [%d]]",
+      fprintf (out, "%s[[[%s]], [%d]]",
               first ? "" : ",\n", symbol->tag, number);
       first = 0;
     }