]> git.saurik.com Git - bison.git/blobdiff - src/output.c
Have Bison grammars parsed by a Bison grammar.
[bison.git] / src / output.c
index 2b2f1f08dd42ace4524de1c8b948db1b28550b1f..5645e8cdcd9f69efc9bf2af152a38b349f625e12 100644 (file)
@@ -548,12 +548,8 @@ actions_output (FILE *out)
                   rules[rule].action_line,
                   quotearg_style (c_quoting_style,
                                   muscle_find ("filename")));
-       /* As a Bison extension, add the ending semicolon.  Since some
-          Yacc don't do that, help people using bison as a Yacc
-          finding their missing semicolons.  */
-       fprintf (out, "{ %s%s }\n    break;\n\n",
-                rules[rule].action,
-                yacc_flag ? ";" : "");
+       fprintf (out, "    %s\n    break;\n\n",
+                rules[rule].action);
       }
 }
 
@@ -994,20 +990,30 @@ output_skeleton (void)
   {
     const char *bison_pkgdatadir = getenv ("BISON_PKGDATADIR");
     const char *m4 = getenv ("M4");
+    int pkg_data_len;
+    char *full_skeleton;
+
     if (!m4)
       m4 = M4;
     if (!bison_pkgdatadir)
       bison_pkgdatadir = PKGDATADIR;
+    pkg_data_len = strlen (bison_pkgdatadir);
+    full_skeleton = XMALLOC (char, pkg_data_len + strlen (skeleton) + 2);
+    if (bison_pkgdatadir[pkg_data_len-1] == '/')
+      sprintf (full_skeleton, "%s%s", bison_pkgdatadir, skeleton);
+    else
+      sprintf (full_skeleton, "%s/%s", bison_pkgdatadir, skeleton);
     if (trace_flag)
       fprintf (stderr,
               "running: %s -I %s m4sugar/m4sugar.m4 %s %s\n",
-              m4, bison_pkgdatadir, tempfile, skeleton);
+              m4, bison_pkgdatadir, tempfile, full_skeleton);
     skel_in = readpipe (m4,
                        "-I", bison_pkgdatadir,
                        "m4sugar/m4sugar.m4",
                        tempfile,
-                       skeleton,
+                       full_skeleton,
                        NULL);
+    XFREE (full_skeleton);
     if (!skel_in)
       error (EXIT_FAILURE, errno, "cannot run m4");
     skel_lex ();