+/*--------------------.
+| 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
+ }
+ }
+}
+
+