X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/550245801ebf0b39ba470fa5e9be8eb8a576134b..1f41899519dcf9dd525b68035baf5bc5ed74efc6:/src/lex.c diff --git a/src/lex.c b/src/lex.c index 5b77f248..516f7997 100644 --- a/src/lex.c +++ b/src/lex.c @@ -32,12 +32,12 @@ 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; }