symbols: set tag_seen when assigning a type to symbols

* src/reader.h, src/reader.c (tag_seen): Move to...
* src/symtab.h, src/symtab.c: here.
(symbol_type_set): Set it to true.
* src/parse-gram.y: Don't.
This commit is contained in:
Akim Demaille
2018-12-15 17:40:24 +01:00
parent bc31dee0f7
commit fdceb6330f
5 changed files with 9 additions and 17 deletions

View File

@@ -417,7 +417,6 @@ symbol_declaration:
}
| "%type" TAG symbols.1
{
tag_seen = true;
for (symbol_list *list = $3; list; list = list->next)
symbol_type_set (list->content.sym, $2, @2);
symbol_list_free ($3);
@@ -446,7 +445,7 @@ precedence_declarator:
tag.opt:
%empty { $$ = NULL; }
| TAG { $$ = $1; tag_seen = true; }
| TAG { $$ = $1; }
;
/* Just like symbols.1 but accept INT for the sake of POSIX. */
@@ -496,7 +495,6 @@ symbol_def:
TAG
{
current_type = $1;
tag_seen = true;
}
| id int.opt[num] string_as_id.opt[alias]
{

View File

@@ -45,9 +45,6 @@ merger_list *merge_functions;
/* Was %union seen? */
bool union_seen = false;
/* Was a tag seen? */
bool tag_seen = false;
/* Should rules have a default precedence? */
bool default_prec = true;

View File

@@ -69,9 +69,6 @@ extern merger_list *merge_functions;
/* Was %union seen? */
extern bool union_seen;
/* Was a tag seen? */
extern bool tag_seen;
/* Should rules have a default precedence? */
extern bool default_prec;

View File

@@ -46,17 +46,14 @@ symbol *accept = NULL;
symbol *startsymbol = NULL;
location startsymbol_location;
/*---------------------------.
| Precedence relation graph. |
`---------------------------*/
/* Precedence relation graph. */
static symgraph **prec_nodes;
/*-----------------------------------.
| Store which associativity is used. |
`-----------------------------------*/
/* Store which associativity is used. */
static bool *used_assoc = NULL;
bool tag_seen = false;
bool *used_assoc = NULL;
/*--------------------------.
| Create a new sym_content. |
@@ -334,6 +331,7 @@ symbol_type_set (symbol *sym, uniqstr type_name, location loc)
{
if (type_name)
{
tag_seen = true;
if (sym->content->type_name)
complain_symbol_redeclared (sym, "%type",
sym->content->type_location, loc);

View File

@@ -248,6 +248,8 @@ extern symbol *startsymbol;
/** The location of the \c \%start declaration. */
extern location startsymbol_location;
/** Whether a symbol declared with a type tag. */
extern bool tag_seen;
/*-------------------.