bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

18-fyi-symbols-output.patch


From: Akim Demaille
Subject: 18-fyi-symbols-output.patch
Date: Mon, 19 Nov 2001 10:03:07 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        
        * src/reader.c (symbols_output): New, extracted from...
        (packsymbols): Here.
        (reader): Call it.
        
Index: src/reader.c
--- src/reader.c Sun, 04 Nov 2001 23:29:11 +0100 akim
+++ src/reader.c Fri, 16 Nov 2001 00:40:16 +0100 akim
@@ -1672,6 +1672,49 @@
 }
 
 
+/*--------------------.
+| Output the header.  |
+`--------------------*/
+
+static void
+symbols_output (void)
+{
+  if (defines_flag)
+    {
+      output_token_defines (&defines_obstack);
+
+      if (!pure_parser)
+       {
+         if (spec_name_prefix)
+           obstack_fgrow1 (&defines_obstack, "\nextern YYSTYPE %slval;\n",
+                           spec_name_prefix);
+         else
+           obstack_sgrow (&defines_obstack,
+                                "\nextern YYSTYPE yylval;\n");
+       }
+
+      if (semantic_parser)
+       {
+         int i;
+
+         for (i = ntokens; i < nsyms; i++)
+           {
+             /* don't make these for dummy nonterminals made by gensym.  */
+             if (*tags[i] != '@')
+               obstack_fgrow2 (&defines_obstack,
+                               "# define\tNT%s\t%d\n", tags[i], i);
+           }
+#if 0
+         /* `fdefines' is now a temporary file, so we need to copy its
+            contents in `done', so we can't close it here.  */
+         fclose (fdefines);
+         fdefines = NULL;
+#endif
+       }
+    }
+}
+
+
 /*------------------------------------------------------------------.
 | Set TOKEN_TRANSLATIONS.  Check that no two symbols share the same |
 | number.                                                           |
@@ -1813,40 +1856,6 @@
     fatal (_("the start symbol %s is a token"), startval->tag);
 
   start_symbol = startval->value;
-
-  if (defines_flag)
-    {
-      output_token_defines (&defines_obstack);
-
-      if (!pure_parser)
-       {
-         if (spec_name_prefix)
-           obstack_fgrow1 (&defines_obstack, "\nextern YYSTYPE %slval;\n",
-                           spec_name_prefix);
-         else
-           obstack_sgrow (&defines_obstack,
-                                "\nextern YYSTYPE yylval;\n");
-       }
-
-      if (semantic_parser)
-       {
-         int i;
-
-         for (i = ntokens; i < nsyms; i++)
-           {
-             /* don't make these for dummy nonterminals made by gensym.  */
-             if (*tags[i] != '@')
-               obstack_fgrow2 (&defines_obstack,
-                               "# define\tNT%s\t%d\n", tags[i], i);
-           }
-#if 0
-         /* `fdefines' is now a temporary file, so we need to copy its
-            contents in `done', so we can't close it here.  */
-         fclose (fdefines);
-         fdefines = NULL;
-#endif
-       }
-    }
 }
 
 
@@ -1990,6 +1999,8 @@
   packsymbols ();
   /* Convert the grammar into the format described in gram.h.  */
   packgram ();
+  /* Output the headers. */
+  symbols_output ();
 }
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]