]> git.saurik.com Git - bison.git/blobdiff - src/lex.c
* data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
[bison.git] / src / lex.c
index 5b77f2485513fe19d7ad6279199e01f81de51f41..516f799795fbc6cc5662d0daedf3042ec6a18f38 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
 static struct obstack token_obstack;
 const char *token_buffer = NULL;
 
-bucket *symval = NULL;
+symbol_t *symval = NULL;
 int numval;
 
 /* A token to be reread, see unlex and lex. */
 static token_t unlexed = tok_undef;
-static bucket *unlexed_symval = NULL;
+static symbol_t *unlexed_symval = NULL;
 static const char *unlexed_token_buffer = NULL;
 
 void
@@ -364,9 +364,13 @@ lex (void)
        obstack_1grow (&token_obstack, '\0');
        token_buffer = obstack_finish (&token_obstack);
        symval = getsym (token_buffer);
-       symval->class = token_sym;
-       if (symval->user_token_number == SUNDEF)
-         symval->user_token_number = code;
+       if (symval->number == NUMBER_UNDEFINED)
+         {
+           symval->number = ntokens++;
+           symval->class = token_sym;
+           if (symval->user_token_number == SUNDEF)
+             symval->user_token_number = code;
+         }
        return tok_identifier;
       }
 
@@ -388,7 +392,11 @@ lex (void)
        token_buffer = obstack_finish (&token_obstack);
 
        symval = getsym (token_buffer);
-       symval->class = token_sym;
+       if (symval->number == NUMBER_UNDEFINED)
+         {
+           symval->number = ntokens++;
+           symval->class = token_sym;
+         }
 
        return tok_identifier;
       }