]> git.saurik.com Git - bison.git/blobdiff - src/parse-gram.y
* src/tables.c (tables_generate): Use free for pointers that
[bison.git] / src / parse-gram.y
index 70356942e5c3dbeb1100f7a8429ddbe4e3f05d42..c10c82ac61043ecfe68f0c6ae0b37f438867c2bb 100644 (file)
@@ -75,7 +75,7 @@ do {                                                  \
 static void yyprint (FILE *file, int type, const yystype *value);
 
 symbol_class current_class = unknown_sym;
-char *current_type = 0;
+struniq_t current_type = 0;
 symbol_t *current_lhs;
 location_t current_lhs_location;
 assoc_t current_assoc;
@@ -157,8 +157,10 @@ braced_code_t current_braced_code = action_braced_code;
 %token BRACED_CODE     "{...}"
 
 
-%type <string> TYPE STRING string_content
-               BRACED_CODE PROLOGUE EPILOGUE epilogue.opt action
+%type <string> STRING string_content
+               BRACED_CODE action
+               PROLOGUE EPILOGUE
+%type <struniq> TYPE
 %type <integer> INT
 %type <symbol> ID symbol string_as_id
 %type <assoc> precedence_declarator
@@ -169,7 +171,6 @@ input:
   declarations "%%" grammar epilogue.opt
     {
       yycontrol->errcode = 0;
-      epilogue_set ($4, @4);
     }
 ;
 
@@ -417,12 +418,10 @@ string_content:
 
 epilogue.opt:
   /* Nothing.  */
-    {
-      $$ = xstrdup ("");
-    }
 | "%%" EPILOGUE
     {
-      $$ = $2;
+      epilogue_augment ($2, @2);
+      scanner_last_string_free ();
     }
 ;
 
@@ -463,6 +462,10 @@ yyprint (FILE *file,
     case EPILOGUE:
       fprintf (file, " = {{ %s }}", value->string);
       break;
+
+    default:
+      fprintf (file, "unknown token type");
+      break;
     }
 }