]> git.saurik.com Git - bison.git/commitdiff
* src/symtab.h (SUNDEF): New.
authorAkim Demaille <akim@epita.fr>
Fri, 2 Nov 2001 15:27:11 +0000 (15:27 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 2 Nov 2001 15:27:11 +0000 (15:27 +0000)
* src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
stand for `uninitialized', instead of 0.
* src/reader.c (packsymbols, parse_thong_decl): Adjust.
* src/lex.c (lex): Adjust.
* tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
Number it 0.
Let yylex return it instead of a plain 0.
Reported by Dick Streefland.

ChangeLog
src/lex.c
src/reader.c
src/symtab.c
src/symtab.h
tests/calc.at

index 85b90b7a71149b79db691ec0dc32ad29ed9aef43..9d5f0f352ac3dbe5071fbc750a4d9ff118b92d44 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2001-11-02  Akim Demaille  <akim@epita.fr>
+
+       * src/symtab.h (SUNDEF): New.
+       * src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
+       stand for `uninitialized', instead of 0.
+       * src/reader.c (packsymbols, parse_thong_decl): Adjust.
+       * src/lex.c (lex): Adjust.
+
+       * tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
+       Number it 0.
+       Let yylex return it instead of a plain 0.
+       Reported by Dick Streefland.
+
 2001-11-02  Akim Demaille  <akim@epita.fr>
 
        * tests/regression.at (Mixing %token styles): New test.
index ec40c14160644e590c205e01a0fd940501d3c4d8..f09596e686943da893fb2fe464ea25ee9ea9a228 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
@@ -446,7 +446,7 @@ lex (void)
        token_buffer = obstack_finish (&token_obstack);
        symval = getsym (token_buffer);
        symval->class = token_sym;
-       if (!symval->user_token_number)
+       if (symval->user_token_number == SUNDEF)
          symval->user_token_number = code;
        return tok_identifier;
       }
index 80ed485a3621dc63ff317c31295c488ed4ae4022..bbdb40ae85bdb6256b2d2ef4a4032ffe7bb941e1 100644 (file)
@@ -724,7 +724,6 @@ token_buffer);
        }
 
       prev = t;
-
     }
 }
 
@@ -852,7 +851,7 @@ parse_thong_decl (void)
   token_t token;
   struct bucket *symbol;
   char *typename = 0;
-  int usrtoknum = 0;
+  int usrtoknum = SUNDEF;
 
   token = lex ();              /* fetch typename or first token */
   if (token == tok_typename)
@@ -1724,6 +1723,9 @@ token_translations_init (void)
       /* A token string alias? */
       if (bp->user_token_number == SALIAS)
        continue;
+
+      assert (bp->user_token_number != SUNDEF);
+
       /* A token which translation has already been set? */
       if (token_translations[bp->user_token_number] != 2)
        complain (_("tokens %s and %s both assigned number %d"),
@@ -1810,7 +1812,7 @@ packsymbols (void)
 
       if (bp->class == token_sym)
        {
-         if (bp->user_token_number == 0)
+         if (bp->user_token_number == SUNDEF)
            bp->user_token_number = ++last_user_token_number;
          if (bp->user_token_number > max_user_token_number)
            max_user_token_number = bp->user_token_number;
index 6e5d5ea9b7f13acccb4a50b00e37a44cb29df5ed..455e74e2310ec00727a8f68034e406d3f7fd17a9 100644 (file)
@@ -1,5 +1,5 @@
 /* Symbol table manager for Bison,
-   Copyright 1984, 1989, 2000 Free Software Foundation, Inc.
+   Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -58,7 +58,7 @@ bucket_new (const char *tag, int hashval)
   res->value = 0;
   res->prec = 0;
   res->assoc = right_assoc;
-  res->user_token_number = 0;
+  res->user_token_number = SUNDEF;
   res->alias = NULL;
   res->class = unknown_sym;
 
index 909b24f5aebb109c432d164cb4206ce48c17c2f8..b98902e14015b1e210cd307b99fc0f24aaaab010 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for symtab.c and callers, part of bison,
-   Copyright 1984, 1989, 1992, 2000 Free Software Foundation, Inc.
+   Copyright 1984, 1989, 1992, 2000, 2001  Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -33,6 +33,7 @@ typedef enum
   nterm_sym            /* non-terminal */
 } symbol_class;
 
+#define SUNDEF  -1              /* For undefined user number. */
 #define SALIAS -9991           /* for symbol generated with an alias */
 
 typedef struct bucket
index f1064634cfa2a57fa937ac781530082300f246c6..a366cd859d656860e4e8897e002630bf663f306f 100644 (file)
@@ -64,7 +64,8 @@ static void yyungetc (int c);
 extern void perror (const char *s);
 %}
 
-/* BISON Declarations */
+/* Bison Declarations */
+%token CALC_EOF 0
 %token NUM
 
 %nonassoc '=' /* comparison           */
@@ -204,7 +205,7 @@ yylex (void)
 
   /* Return end-of-file.  */
   if (c == EOF)
-    return 0;
+    return CALC_EOF;
 
   /* Return single chars. */
   return c;