]> git.saurik.com Git - bison.git/blobdiff - src/output.c
grammar: record used associativity and print useless ones
[bison.git] / src / output.c
index 24bb83cd146331c7ae337072a2cee56fb9c7af09..2b6842d7bc2249bcb97fadef2d6694384f16b0ee 100644 (file)
@@ -1,6 +1,6 @@
 /* Output the generated parsing program for Bison.
 
 /* Output the generated parsing program for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -86,18 +86,15 @@ Name (char const *name,                                                 \
       if (max < table_data[i])                                          \
         max = table_data[i];                                            \
     }                                                                   \
       if (max < table_data[i])                                          \
         max = table_data[i];                                            \
     }                                                                   \
-  obstack_1grow (&format_obstack, 0);                                   \
-  muscle_insert (name, obstack_finish (&format_obstack));               \
+  muscle_insert (name, obstack_finish0 (&format_obstack));              \
                                                                         \
   lmin = min;                                                           \
   lmax = max;                                                           \
   /* Build `NAME_min' and `NAME_max' in the obstack. */                 \
   obstack_printf (&format_obstack, "%s_min", name);                     \
                                                                         \
   lmin = min;                                                           \
   lmax = max;                                                           \
   /* Build `NAME_min' and `NAME_max' in the obstack. */                 \
   obstack_printf (&format_obstack, "%s_min", name);                     \
-  obstack_1grow (&format_obstack, 0);                                   \
-  MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmin);      \
+  MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmin);     \
   obstack_printf (&format_obstack, "%s_max", name);                     \
   obstack_printf (&format_obstack, "%s_max", name);                     \
-  obstack_1grow (&format_obstack, 0);                                   \
-  MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmax);      \
+  MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmax);     \
 }
 
 GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int)
 }
 
 GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int)
@@ -193,8 +190,7 @@ prepare_symbols (void)
     obstack_sgrow (&format_obstack, " ]b4_null[");
 
     /* Finish table and store. */
     obstack_sgrow (&format_obstack, " ]b4_null[");
 
     /* Finish table and store. */
-    obstack_1grow (&format_obstack, 0);
-    muscle_insert ("tname", obstack_finish (&format_obstack));
+    muscle_insert ("tname", obstack_finish0 (&format_obstack));
   }
 
   /* Output YYTOKNUM. */
   }
 
   /* Output YYTOKNUM. */
@@ -288,10 +284,10 @@ prepare_states (void)
 static int
 symbol_type_name_cmp (const symbol **lhs, const symbol **rhs)
 {
 static int
 symbol_type_name_cmp (const symbol **lhs, const symbol **rhs)
 {
-  int res = UNIQSTR_CMP((*lhs)->type_name, (*rhs)->type_name);
-  if (res)
-    return res;
-  return (*lhs)->number - (*rhs)->number;
+  int res = uniqstr_cmp ((*lhs)->type_name, (*rhs)->type_name);
+  if (!res)
+    res = (*lhs)->number - (*rhs)->number;
+  return res;
 }
 
 
 }
 
 
@@ -322,7 +318,7 @@ type_names_output (FILE *out)
   fputs ("m4_define([b4_type_names],\n[", out);
   for (i = 0; i < nsyms; /* nothing */)
     {
   fputs ("m4_define([b4_type_names],\n[", out);
   for (i = 0; i < nsyms; /* nothing */)
     {
-      // The index of the first symbol of the current type-name.
+      /* The index of the first symbol of the current type-name.  */
       int i0 = i;
       fputs (i ? ",\n[" : "[", out);
       for (; i < nsyms && syms[i]->type_name == syms[i0]->type_name; ++i)
       int i0 = i;
       fputs (i ? ",\n[" : "[", out);
       for (; i < nsyms && syms[i]->type_name == syms[i0]->type_name; ++i)
@@ -412,25 +408,23 @@ prepare_symbol_definitions (void)
 #define SET_KEY(Entry)                                          \
       obstack_printf (&format_obstack, "symbol(%d, %s)",        \
                       i, Entry);                                \
 #define SET_KEY(Entry)                                          \
       obstack_printf (&format_obstack, "symbol(%d, %s)",        \
                       i, Entry);                                \
-      obstack_1grow (&format_obstack, 0);                       \
-      key = obstack_finish (&format_obstack);
+      key = obstack_finish0 (&format_obstack);
 
 #define SET_KEY2(Entry, Suffix)                                 \
       obstack_printf (&format_obstack, "symbol(%d, %s_%s)",     \
                       i, Entry, Suffix);                        \
 
 #define SET_KEY2(Entry, Suffix)                                 \
       obstack_printf (&format_obstack, "symbol(%d, %s_%s)",     \
                       i, Entry, Suffix);                        \
-      obstack_1grow (&format_obstack, 0);                       \
-      key = obstack_finish (&format_obstack);
+      key = obstack_finish0 (&format_obstack);
 
 
-      // Whether the symbol has an identifier.
+      /* Whether the symbol has an identifier.  */
       value = symbol_id_get (sym);
       SET_KEY("has_id");
       MUSCLE_INSERT_INT (key, !!value);
 
       value = symbol_id_get (sym);
       SET_KEY("has_id");
       MUSCLE_INSERT_INT (key, !!value);
 
-      // Its identifier.
+      /* Its identifier.  */
       SET_KEY("id");
       MUSCLE_INSERT_STRING (key, value ? value : "");
 
       SET_KEY("id");
       MUSCLE_INSERT_STRING (key, value ? value : "");
 
-      // Its tag.  Typically for documentation purpose.
+      /* Its tag.  Typically for documentation purpose.  */
       SET_KEY("tag");
       MUSCLE_INSERT_STRING (key, sym->tag);
 
       SET_KEY("tag");
       MUSCLE_INSERT_STRING (key, sym->tag);
 
@@ -539,7 +533,7 @@ muscles_output (FILE *out)
   symbol_numbers_output (out);
   type_names_output (out);
   user_actions_output (out);
   symbol_numbers_output (out);
   type_names_output (out);
   user_actions_output (out);
-  // Must be last.
+  /* Must be last.  */
   muscles_m4_output (out);
 }
 \f
   muscles_m4_output (out);
 }
 \f