]> git.saurik.com Git - bison.git/blobdiff - src/muscle_tab.c
(conflicts_print): If the user specifies "%expect N", report an error
[bison.git] / src / muscle_tab.c
index 085b838dfea01864bcda6f0a88505f32ff9dcdcf..2e7f70677ea9a6dc6e55ce626af07799b35e248d 100644 (file)
@@ -1,4 +1,5 @@
-/* Muscle table manager for Bison,
+/* Muscle table manager for Bison.
+
    Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Boston, MA 02111-1307, USA.  */
 
 #include "system.h"
    Boston, MA 02111-1307, USA.  */
 
 #include "system.h"
-#include "hash.h"
+
+#include <hash.h>
+#include <quotearg.h>
+
 #include "files.h"
 #include "muscle_tab.h"
 #include "getargs.h"
 
 #include "files.h"
 #include "muscle_tab.h"
 #include "getargs.h"
 
+typedef struct
+{
+  const char *key;
+  char *value;
+} muscle_entry;
 
 /* An obstack used to create some entries.  */
 struct obstack muscle_obstack;
 
 /* An obstack used to create some entries.  */
 struct obstack muscle_obstack;
@@ -36,15 +45,15 @@ struct hash_table *muscle_table = NULL;
 static bool
 hash_compare_muscles (void const *x, void const *y)
 {
 static bool
 hash_compare_muscles (void const *x, void const *y)
 {
-  const muscle_entry_t *m1 = x;
-  const muscle_entry_t *m2 = y;
-  return strcmp (m1->key, m2->key) ? FALSE : TRUE;
+  muscle_entry const *m1 = x;
+  muscle_entry const *m2 = y;
+  return strcmp (m1->key, m2->key) == 0;
 }
 
 static unsigned int
 hash_muscle (const void *x, unsigned int tablesize)
 {
 }
 
 static unsigned int
 hash_muscle (const void *x, unsigned int tablesize)
 {
-  const muscle_entry_t *m = x;
+  muscle_entry const *m = x;
   return hash_string (m->key, tablesize);
 }
 
   return hash_string (m->key, tablesize);
 }
 
@@ -64,23 +73,7 @@ muscle_init (void)
 
   /* Version and input file.  */
   MUSCLE_INSERT_STRING ("version", VERSION);
 
   /* Version and input file.  */
   MUSCLE_INSERT_STRING ("version", VERSION);
-  MUSCLE_INSERT_STRING ("filename", infile);
-
-  /* FIXME: there should probably be no default here, only in the
-     skeletons.  */
-
-  /* Types.  */
-  MUSCLE_INSERT_STRING ("ltype", "yyltype");
-
-  /* Default #line formatting.  */
-  MUSCLE_INSERT_STRING ("linef", "#line %d %s\n");
-
-  /* Stack parameters.  */
-  MUSCLE_INSERT_STRING ("maxdepth", "10000");
-  MUSCLE_INSERT_STRING ("initdepth", "200");
-
-  /* C++ macros.  */
-  MUSCLE_INSERT_STRING ("name", "Parser");
+  MUSCLE_INSERT_C_STRING ("filename", grammar_file);
 }
 
 
 }
 
 
@@ -105,8 +98,8 @@ muscle_free (void)
 void
 muscle_insert (const char *key, char *value)
 {
 void
 muscle_insert (const char *key, char *value)
 {
-  muscle_entry_t probe;
-  muscle_entry_t *entry = NULL;
+  muscle_entry probe;
+  muscle_entry *entry = NULL;
 
   probe.key = key;
   entry = hash_lookup (muscle_table, &probe);
 
   probe.key = key;
   entry = hash_lookup (muscle_table, &probe);
@@ -114,7 +107,7 @@ muscle_insert (const char *key, char *value)
   if (!entry)
     {
       /* First insertion in the hash. */
   if (!entry)
     {
       /* First insertion in the hash. */
-      entry = XMALLOC (muscle_entry_t, 1);
+      MALLOC (entry, 1);
       entry->key = key;
       hash_insert (muscle_table, entry);
     }
       entry->key = key;
       hash_insert (muscle_table, entry);
     }
@@ -131,8 +124,8 @@ muscle_insert (const char *key, char *value)
 void
 muscle_grow (const char *key, const char *val, const char *separator)
 {
 void
 muscle_grow (const char *key, const char *val, const char *separator)
 {
-  muscle_entry_t probe;
-  muscle_entry_t *entry = NULL;
+  muscle_entry probe;
+  muscle_entry *entry = NULL;
 
   probe.key = key;
   entry = hash_lookup (muscle_table, &probe);
 
   probe.key = key;
   entry = hash_lookup (muscle_table, &probe);
@@ -140,7 +133,7 @@ muscle_grow (const char *key, const char *val, const char *separator)
   if (!entry)
     {
       /* First insertion in the hash. */
   if (!entry)
     {
       /* First insertion in the hash. */
-      entry = XMALLOC (muscle_entry_t, 1);
+      MALLOC (entry, 1);
       entry->key = key;
       hash_insert (muscle_table, entry);
       entry->value = xstrdup (val);
       entry->key = key;
       hash_insert (muscle_table, entry);
       entry->value = xstrdup (val);
@@ -149,7 +142,6 @@ muscle_grow (const char *key, const char *val, const char *separator)
     {
       /* Grow the current value. */
       char *new_val;
     {
       /* Grow the current value. */
       char *new_val;
-      fprintf (stderr, "<= %s + %s\n", entry->value, val);
       obstack_sgrow (&muscle_obstack, entry->value);
       free (entry->value);
       obstack_sgrow (&muscle_obstack, separator);
       obstack_sgrow (&muscle_obstack, entry->value);
       free (entry->value);
       obstack_sgrow (&muscle_obstack, separator);
@@ -157,7 +149,6 @@ muscle_grow (const char *key, const char *val, const char *separator)
       obstack_1grow (&muscle_obstack, 0);
       new_val = obstack_finish (&muscle_obstack);
       entry->value = xstrdup (new_val);
       obstack_1grow (&muscle_obstack, 0);
       new_val = obstack_finish (&muscle_obstack);
       entry->value = xstrdup (new_val);
-      fprintf (stderr, "=> %s\n", new_val);
       obstack_free (&muscle_obstack, new_val);
     }
 }
       obstack_free (&muscle_obstack, new_val);
     }
 }
@@ -173,12 +164,12 @@ muscle_grow (const char *key, const char *val, const char *separator)
 void muscle_pair_list_grow (const char *muscle,
                            const char *a1, const char *a2)
 {
 void muscle_pair_list_grow (const char *muscle,
                            const char *a1, const char *a2)
 {
-  char *val;
+  char *pair;
   obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2);
   obstack_1grow (&muscle_obstack, 0);
   obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2);
   obstack_1grow (&muscle_obstack, 0);
-  val = obstack_finish (&muscle_obstack);
-  muscle_grow (muscle, val, ",\n");
-  obstack_free (&muscle_obstack, val);
+  pair = obstack_finish (&muscle_obstack);
+  muscle_grow (muscle, pair, ",\n");
+  obstack_free (&muscle_obstack, pair);
 }
 
 /*-------------------------------.
 }
 
 /*-------------------------------.
@@ -188,8 +179,8 @@ void muscle_pair_list_grow (const char *muscle,
 char*
 muscle_find (const char *key)
 {
 char*
 muscle_find (const char *key)
 {
-  muscle_entry_t probe;
-  muscle_entry_t *result = NULL;
+  muscle_entry probe;
+  muscle_entry *result = NULL;
 
   probe.key = key;
   result = hash_lookup (muscle_table, &probe);
 
   probe.key = key;
   result = hash_lookup (muscle_table, &probe);
@@ -201,12 +192,18 @@ muscle_find (const char *key)
 | Output the definition of ENTRY as a m4_define.  |
 `------------------------------------------------*/
 
 | Output the definition of ENTRY as a m4_define.  |
 `------------------------------------------------*/
 
-static int
-muscle_m4_output (muscle_entry_t *entry, FILE *out)
+static inline bool
+muscle_m4_output (muscle_entry *entry, FILE *out)
 {
   fprintf (out, "m4_define([b4_%s],\n", entry->key);
   fprintf (out, "[[%s]])\n\n\n", entry->value);
 {
   fprintf (out, "m4_define([b4_%s],\n", entry->key);
   fprintf (out, "[[%s]])\n\n\n", entry->value);
-  return 1;
+  return true;
+}
+
+static bool
+muscle_m4_output_processor (void *entry, void *out)
+{
+  return muscle_m4_output (entry, out);
 }
 
 
 }
 
 
@@ -218,7 +215,5 @@ muscle_m4_output (muscle_entry_t *entry, FILE *out)
 void
 muscles_m4_output (FILE *out)
 {
 void
 muscles_m4_output (FILE *out)
 {
-  hash_do_for_each (muscle_table,
-                   (Hash_processor) muscle_m4_output,
-                   out);
+  hash_do_for_each (muscle_table, muscle_m4_output_processor, out);
 }
 }