mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 14:53:03 +00:00
* src/symtab.c (symbol_user_token_number_set): Don't complain when
assigning twice the same user number to a token, so that we can use it in... * src/lex.c (lex): here. Also use `symbol_class_set' instead of hand written code. * src/reader.c (parse_assoc_decl): Likewise.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2002-06-10 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/symtab.c (symbol_user_token_number_set): Don't complain when
|
||||||
|
assigning twice the same user number to a token, so that we can
|
||||||
|
use it in...
|
||||||
|
* src/lex.c (lex): here.
|
||||||
|
Also use `symbol_class_set' instead of hand written code.
|
||||||
|
* src/reader.c (parse_assoc_decl): Likewise.
|
||||||
|
|
||||||
2002-06-10 Akim Demaille <akim@epita.fr>
|
2002-06-10 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/symtab.c, src/symtab.c (symbol_class_set)
|
* src/symtab.c, src/symtab.c (symbol_class_set)
|
||||||
|
|||||||
21
src/lex.c
21
src/lex.c
@@ -1,5 +1,6 @@
|
|||||||
/* Token-reader for Bison's input parser,
|
/* Token-reader for Bison's input parser,
|
||||||
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
|
Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -364,13 +365,8 @@ lex (void)
|
|||||||
obstack_1grow (&token_obstack, '\0');
|
obstack_1grow (&token_obstack, '\0');
|
||||||
token_buffer = obstack_finish (&token_obstack);
|
token_buffer = obstack_finish (&token_obstack);
|
||||||
symval = getsym (token_buffer);
|
symval = getsym (token_buffer);
|
||||||
if (symval->number == NUMBER_UNDEFINED)
|
symbol_class_set (symval, token_sym);
|
||||||
{
|
symbol_user_token_number_set (symval, code);
|
||||||
symval->number = ntokens++;
|
|
||||||
symval->class = token_sym;
|
|
||||||
if (symval->user_token_number == USER_NUMBER_UNDEFINED)
|
|
||||||
symval->user_token_number = code;
|
|
||||||
}
|
|
||||||
return tok_identifier;
|
return tok_identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,7 +374,7 @@ lex (void)
|
|||||||
/* parse the literal string token and treat as an identifier */
|
/* parse the literal string token and treat as an identifier */
|
||||||
|
|
||||||
{
|
{
|
||||||
int code; /* ignored here */
|
int code;
|
||||||
|
|
||||||
obstack_1grow (&token_obstack, '\"');
|
obstack_1grow (&token_obstack, '\"');
|
||||||
/* Read up to and including ". */
|
/* Read up to and including ". */
|
||||||
@@ -392,12 +388,7 @@ lex (void)
|
|||||||
token_buffer = obstack_finish (&token_obstack);
|
token_buffer = obstack_finish (&token_obstack);
|
||||||
|
|
||||||
symval = getsym (token_buffer);
|
symval = getsym (token_buffer);
|
||||||
if (symval->number == NUMBER_UNDEFINED)
|
symbol_class_set (symval, token_sym);
|
||||||
{
|
|
||||||
symval->number = ntokens++;
|
|
||||||
symval->class = token_sym;
|
|
||||||
}
|
|
||||||
|
|
||||||
return tok_identifier;
|
return tok_identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
src/reader.c
10
src/reader.c
@@ -656,13 +656,7 @@ parse_assoc_decl (associativity assoc)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case tok_identifier:
|
case tok_identifier:
|
||||||
if (symval->class == nterm_sym)
|
symbol_class_set (symval, token_sym);
|
||||||
complain (_("symbol %s redefined"), symval->tag);
|
|
||||||
if (symval->number == NUMBER_UNDEFINED)
|
|
||||||
{
|
|
||||||
symval->number = ntokens++;
|
|
||||||
symval->class = token_sym;
|
|
||||||
}
|
|
||||||
symbol_precedence_set (symval, lastprec, assoc);
|
symbol_precedence_set (symval, lastprec, assoc);
|
||||||
if (name)
|
if (name)
|
||||||
symbol_type_set (symval, name);
|
symbol_type_set (symval, name);
|
||||||
@@ -671,7 +665,7 @@ parse_assoc_decl (associativity assoc)
|
|||||||
case tok_number:
|
case tok_number:
|
||||||
if (prev == tok_identifier)
|
if (prev == tok_identifier)
|
||||||
{
|
{
|
||||||
symval->user_token_number = numval;
|
symbol_user_token_number_set (symval, numval);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ symbol_user_token_number_set (symbol_t *symbol, int user_token_number)
|
|||||||
{
|
{
|
||||||
assert (symbol->class == token_sym);
|
assert (symbol->class == token_sym);
|
||||||
|
|
||||||
if (symbol->user_token_number != USER_NUMBER_UNDEFINED)
|
if (symbol->user_token_number != USER_NUMBER_UNDEFINED
|
||||||
|
&& symbol->user_token_number != user_token_number)
|
||||||
complain (_("redefining user token number of %s"), symbol->tag);
|
complain (_("redefining user token number of %s"), symbol->tag);
|
||||||
|
|
||||||
symbol->user_token_number = user_token_number;
|
symbol->user_token_number = user_token_number;
|
||||||
|
|||||||
Reference in New Issue
Block a user