bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/5] symbols: set tag_seen when assigning a type to symbols


From: Akim Demaille
Subject: [PATCH 1/5] symbols: set tag_seen when assigning a type to symbols
Date: Sun, 16 Dec 2018 10:45:37 +0100

* 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.
---
 src/parse-gram.y |  4 +---
 src/reader.c     |  3 ---
 src/reader.h     |  3 ---
 src/symtab.c     | 14 ++++++--------
 src/symtab.h     |  2 ++
 5 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/parse-gram.y b/src/parse-gram.y
index 279b6166..71ef183d 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -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]
     {
diff --git a/src/reader.c b/src/reader.c
index 985647a5..abc3ca7e 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -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;
 
diff --git a/src/reader.h b/src/reader.h
index 76e42dc3..be327f88 100644
--- a/src/reader.h
+++ b/src/reader.h
@@ -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;
 
diff --git a/src/symtab.c b/src/symtab.c
index 7bc604b7..9dbc79f6 100644
--- a/src/symtab.c
+++ b/src/symtab.c
@@ -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);
diff --git a/src/symtab.h b/src/symtab.h
index 63cc122a..a63b904e 100644
--- a/src/symtab.h
+++ b/src/symtab.h
@@ -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;
 
 
 /*-------------------.
-- 
2.19.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]