]> git.saurik.com Git - bison.git/blobdiff - src/output.c
Replace INCLUDES with AM_CPPFLAGS, fixing a bug in src/Makefile.am
[bison.git] / src / output.c
index 939775af4e11fdb755dffba864082fb00a2b58c2..d2fe981f7603258ae1d0ecc13956789403eebd4e 100644 (file)
@@ -45,7 +45,7 @@ void scan_skel (FILE *);
 
 static struct obstack format_obstack;
 
-int error_verbose = 0;
+bool error_verbose = false;
 
 
 
@@ -253,6 +253,7 @@ prepare_rules (void)
   muscle_insert_short_table ("merger", merger, 0, 0, nrules);
 
   MUSCLE_INSERT_INT ("rules_number", nrules);
+  MUSCLE_INSERT_INT ("max_left_semantic_context", max_left_semantic_context);
 
   free (rhs);
   free (prhs);
@@ -324,10 +325,10 @@ merger_output (FILE *out)
   for (n = 1, p = merge_functions; p != NULL; n += 1, p = p->next)
     {
       if (p->type[0] == '\0')
-       fprintf (out, "  case %d: yyval = %s (*yy0, *yy1); break;\n",
+       fprintf (out, "  case %d: *yy0 = %s (*yy0, *yy1); break;\n",
                 n, p->name);
       else
-       fprintf (out, "  case %d: yyval.%s = %s (*yy0, *yy1); break;\n",
+       fprintf (out, "  case %d: yy0->%s = %s (*yy0, *yy1); break;\n",
                 n, p->type, p->name);
     }
   fputs ("]])\n\n", out);
@@ -341,7 +342,7 @@ static void
 token_definitions_output (FILE *out)
 {
   int i;
-  int first = 1;
+  char const *sep = "";
 
   fputs ("m4_define([b4_tokens], \n[", out);
   for (i = 0; i < ntokens; ++i)
@@ -376,9 +377,8 @@ token_definitions_output (FILE *out)
        continue;
 
       fprintf (out, "%s[[[%s]], [%d]]",
-              first ? "" : ",\n", sym->tag, number);
-
-      first = 0;
+              sep, sym->tag, number);
+      sep = ",\n";
     }
   fputs ("])\n\n", out);
 }
@@ -392,7 +392,7 @@ static void
 symbol_destructors_output (FILE *out)
 {
   int i;
-  int first = 1;
+  char const *sep = "";
 
   fputs ("m4_define([b4_symbol_destructors], \n[", out);
   for (i = 0; i < nsyms; ++i)
@@ -403,8 +403,8 @@ symbol_destructors_output (FILE *out)
        /* Filename, lineno,
           Symbol-name, Symbol-number,
           destructor, typename. */
-       fprintf (out, "%s[",
-                first ? "" : ",\n");
+       fprintf (out, "%s[", sep);
+       sep = ",\n";
        escaped_file_name_output (out, sym->destructor_location.start.file);
        fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
                 sym->destructor_location.start.line,
@@ -412,8 +412,6 @@ symbol_destructors_output (FILE *out)
                 sym->number,
                 sym->destructor,
                 sym->type_name);
-
-       first = 0;
       }
   fputs ("])\n\n", out);
 }
@@ -427,7 +425,7 @@ static void
 symbol_printers_output (FILE *out)
 {
   int i;
-  int first = 1;
+  char const *sep = "";
 
   fputs ("m4_define([b4_symbol_printers], \n[", out);
   for (i = 0; i < nsyms; ++i)
@@ -438,8 +436,8 @@ symbol_printers_output (FILE *out)
        /* Filename, lineno,
           Symbol-name, Symbol-number,
           printer, typename. */
-       fprintf (out, "%s[",
-                first ? "" : ",\n");
+       fprintf (out, "%s[", sep);
+       sep = ",\n";
        escaped_file_name_output (out, sym->printer_location.start.file);
        fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
                 sym->printer_location.start.line,
@@ -447,8 +445,6 @@ symbol_printers_output (FILE *out)
                 sym->number,
                 sym->printer,
                 sym->type_name);
-
-       first = 0;
       }
   fputs ("])\n\n", out);
 }
@@ -522,7 +518,7 @@ output_skeleton (void)
   char const m4sugar[] = "m4sugar/m4sugar.m4";
   char *full_m4sugar;
   char *full_cm4;
-  char *full_path;
+  char *full_skeleton;
   char const *p;
   char const *m4 = (p = getenv ("M4")) ? p : M4;
   char const *pkgdatadir = (p = getenv ("BISON_PKGDATADIR")) ? p : PKGDATADIR;
@@ -530,36 +526,36 @@ output_skeleton (void)
   size_t pkgdatadirlen = strlen (pkgdatadir);
   while (pkgdatadirlen && pkgdatadir[pkgdatadirlen - 1] == '/')
     pkgdatadirlen--;
-  full_path = xmalloc (pkgdatadirlen + 1
-                      + (skeleton_size < sizeof m4sugar
-                         ? sizeof m4sugar : skeleton_size));
-  strcpy (full_path, pkgdatadir);
-  full_path[pkgdatadirlen] = '/';
-  strcpy (full_path + pkgdatadirlen + 1, m4sugar);
-  full_m4sugar = xstrdup (full_path);
-  strcpy (full_path + pkgdatadirlen + 1, "c.m4");
-  full_cm4 = xstrdup (full_path);
-  strcpy (full_path + pkgdatadirlen + 1, skeleton);
+  full_skeleton = xmalloc (pkgdatadirlen + 1
+                          + (skeleton_size < sizeof m4sugar
+                             ? sizeof m4sugar : skeleton_size));
+  strcpy (full_skeleton, pkgdatadir);
+  full_skeleton[pkgdatadirlen] = '/';
+  strcpy (full_skeleton + pkgdatadirlen + 1, m4sugar);
+  full_m4sugar = xstrdup (full_skeleton);
+  strcpy (full_skeleton + pkgdatadirlen + 1, "c.m4");
+  full_cm4 = xstrdup (full_skeleton);
+  strcpy (full_skeleton + pkgdatadirlen + 1, skeleton);
   xfclose (xfopen (full_m4sugar, "r"));
 
   /* Create an m4 subprocess connected to us via two pipes.  */
 
   if (trace_flag & trace_tools)
     fprintf (stderr, "running: %s %s - %s %s\n",
-            m4, full_m4sugar, full_cm4, full_path);
+            m4, full_m4sugar, full_cm4, full_skeleton);
 
   argv[0] = m4;
   argv[1] = full_m4sugar;
   argv[2] = "-";
   argv[3] = full_cm4;
-  argv[4] = full_path;
+  argv[4] = full_skeleton;
   argv[5] = NULL;
 
   init_subpipe ();
   pid = create_subpipe (argv, filter_fd);
   free (full_m4sugar);
   free (full_cm4);
-  free (full_path);
+  free (full_skeleton);
 
   out = fdopen (filter_fd[0], "w");
   if (! out)
@@ -595,12 +591,12 @@ static void
 prepare (void)
 {
   /* Flags. */
-  MUSCLE_INSERT_INT ("debug", debug_flag);
-  MUSCLE_INSERT_INT ("defines_flag", defines_flag);
-  MUSCLE_INSERT_INT ("error_verbose", error_verbose);
-  MUSCLE_INSERT_INT ("locations_flag", locations_flag);
-  MUSCLE_INSERT_INT ("pure", pure_parser);
-  MUSCLE_INSERT_INT ("synclines_flag", !no_lines_flag);
+  MUSCLE_INSERT_BOOL ("debug", debug_flag);
+  MUSCLE_INSERT_BOOL ("defines_flag", defines_flag);
+  MUSCLE_INSERT_BOOL ("error_verbose", error_verbose);
+  MUSCLE_INSERT_BOOL ("locations_flag", locations_flag);
+  MUSCLE_INSERT_BOOL ("pure", pure_parser);
+  MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
 
   /* File names.  */
   MUSCLE_INSERT_STRING ("prefix", spec_name_prefix ? spec_name_prefix : "yy");