bison-patches
[Top][All Lists]
Advanced

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

[PATCH 1/2] symbol: provide an easy means to compare them in source orde


From: Akim Demaille
Subject: [PATCH 1/2] symbol: provide an easy means to compare them in source order
Date: Tue, 10 Dec 2013 08:32:57 +0100

* src/symtab.c (symbols_sort): New.
(user_token_number_redeclaration): Taken from here.
---
 src/symtab.c | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/symtab.c b/src/symtab.c
index 1c2372c..1b44611 100644
--- a/src/symtab.c
+++ b/src/symtab.c
@@ -100,6 +100,28 @@ symbol_new (uniqstr tag, location loc)
   return res;
 }
 
+/* If needed, swap first and second so that first has the earliest
+   location (according to location_cmp).
+
+   Many symbol features (e.g., user token numbers) are not assigned
+   during the parsing, but in a second step, via a traversal of the
+   symbol table sorted on tag.
+
+   However, error messages make more sense if we keep the first
+   declaration first.
+*/
+
+static
+void symbols_sort (symbol **first, symbol **second)
+{
+  if (0 < location_cmp ((*first)->location, (*second)->location))
+    {
+      symbol* tmp = *first;
+      *first = *second;
+      *second = tmp;
+    }
+}
+
 char const *
 code_props_type_string (code_props_type kind)
 {
@@ -587,17 +609,7 @@ static void
 user_token_number_redeclaration (int num, symbol *first, symbol *second)
 {
   unsigned i = 0;
-  /* User token numbers are not assigned during the parsing, but in a
-     second step, via a traversal of the symbol table sorted on tag.
-
-     However, error messages make more sense if we keep the first
-     declaration first.  */
-  if (location_cmp (first->location, second->location) > 0)
-    {
-      symbol* tmp = first;
-      first = second;
-      second = tmp;
-    }
+  symbols_sort (&first, &second);
   complain_indent (&second->location, complaint, &i,
                    _("user token number %d redeclaration for %s"),
                    num, second->tag);
-- 
1.8.4.3




reply via email to

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