]> git.saurik.com Git - bison.git/blobdiff - src/output.c
Don't apply the default %destructor or %printer to the error token,
[bison.git] / src / output.c
index 0d648770c2a4274700340ebb1e248536b0a0316a..5aa029ec49f46eba51a0843bfeafbe44f43ea859 100644 (file)
@@ -390,7 +390,7 @@ symbol_destructors_output (FILE *out)
 
   fputs ("m4_define([b4_symbol_destructors], \n[", out);
   for (i = 0; i < nsyms; ++i)
 
   fputs ("m4_define([b4_symbol_destructors], \n[", out);
   for (i = 0; i < nsyms; ++i)
-    if (symbols[i]->destructor)
+    if (symbol_destructor_get (symbols[i]))
       {
        symbol *sym = symbols[i];
 
       {
        symbol *sym = symbols[i];
 
@@ -399,10 +399,12 @@ symbol_destructors_output (FILE *out)
           destructor, optional typename.  */
        fprintf (out, "%s[", sep);
        sep = ",\n";
           destructor, optional typename.  */
        fprintf (out, "%s[", sep);
        sep = ",\n";
-       escaped_output (out, sym->destructor_location.start.file);
-       fprintf (out, ", %d, ", sym->destructor_location.start.line);
+       escaped_output (out, symbol_destructor_location_get (sym).start.file);
+       fprintf (out, ", %d, ",
+                symbol_destructor_location_get (sym).start.line);
        escaped_output (out, sym->tag);
        escaped_output (out, sym->tag);
-       fprintf (out, ", %d, [[%s]]", sym->number, sym->destructor);
+       fprintf (out, ", %d, [[%s]]", sym->number,
+                symbol_destructor_get (sym));
        if (sym->type_name)
          fprintf (out, ", [[%s]]", sym->type_name);
        fputc (']', out);
        if (sym->type_name)
          fprintf (out, ", [[%s]]", sym->type_name);
        fputc (']', out);
@@ -423,7 +425,7 @@ symbol_printers_output (FILE *out)
 
   fputs ("m4_define([b4_symbol_printers], \n[", out);
   for (i = 0; i < nsyms; ++i)
 
   fputs ("m4_define([b4_symbol_printers], \n[", out);
   for (i = 0; i < nsyms; ++i)
-    if (symbols[i]->printer)
+    if (symbol_printer_get (symbols[i]))
       {
        symbol *sym = symbols[i];
 
       {
        symbol *sym = symbols[i];
 
@@ -432,10 +434,10 @@ symbol_printers_output (FILE *out)
           printer, optional typename.  */
        fprintf (out, "%s[", sep);
        sep = ",\n";
           printer, optional typename.  */
        fprintf (out, "%s[", sep);
        sep = ",\n";
-       escaped_output (out, sym->printer_location.start.file);
-       fprintf (out, ", %d, ", sym->printer_location.start.line);
+       escaped_output (out, symbol_printer_location_get (sym).start.file);
+       fprintf (out, ", %d, ", symbol_printer_location_get (sym).start.line);
        escaped_output (out, sym->tag);
        escaped_output (out, sym->tag);
-       fprintf (out, ", %d, [[%s]]", sym->number, sym->printer);
+       fprintf (out, ", %d, [[%s]]", sym->number, symbol_printer_get (sym));
        if (sym->type_name)
          fprintf (out, ", [[%s]]", sym->type_name);
        fputc (']', out);
        if (sym->type_name)
          fprintf (out, ", [[%s]]", sym->type_name);
        fputc (']', out);
@@ -590,6 +592,7 @@ prepare (void)
   MUSCLE_INSERT_BOOL ("locations_flag", locations_flag);
   MUSCLE_INSERT_BOOL ("pure_flag", pure_parser);
   MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
   MUSCLE_INSERT_BOOL ("locations_flag", locations_flag);
   MUSCLE_INSERT_BOOL ("pure_flag", pure_parser);
   MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
+  MUSCLE_INSERT_BOOL ("tag_seen_flag", tag_seen);
   MUSCLE_INSERT_BOOL ("yacc_flag", yacc_flag);
 
   /* File names.  */
   MUSCLE_INSERT_BOOL ("yacc_flag", yacc_flag);
 
   /* File names.  */