- if (noparserflag)
- return;
-
- if (semantic_parser)
- fprintf(faction, " }\n");
- fprintf(faction, "}\n");
-}
-
-
-void
-output()
-{
- int c;
-
- /* output_token_defines(ftable); / * JF put out token defines FIRST */
- if (!semantic_parser) /* JF Put out other stuff */
- {
- rewind(fattrs);
- while ((c=getc(fattrs))!=EOF)
- putc(c,ftable);
- }
- reader_output_yylsp(ftable);
- if (debugflag)
- fprintf(ftable, "#ifndef YYDEBUG\n#define YYDEBUG %d\n#endif\n\n",
- !!debugflag);
-
- if (semantic_parser)
- fprintf(ftable, "#include \"%s\"\n", attrsfile);
-
- if (! noparserflag)
- fprintf(ftable, "#include <stdio.h>\n\n");
-
- /* Make "const" do nothing if not in ANSI C. */
- fprintf (ftable, "#ifndef __cplusplus\n#ifndef __STDC__\n#define const\n#endif\n#endif\n\n");
-
- free_itemsets();
- output_defines();
- output_token_translations();
-/* if (semantic_parser) */
- /* This is now unconditional because debugging printouts can use it. */
- output_gram();
- FREE(ritem);
- if (semantic_parser)
- output_stos();
- output_rule_data();
- output_actions();
- if (! noparserflag)
- output_parser();
- output_program();
-}
-
-
-void
-output_token_translations()
-{
- register int i, j;
-/* register short *sp; JF unused */
-
- if (translations)
- {
- fprintf(ftable,
- "\n#define YYTRANSLATE(x) ((unsigned)(x) <= %d ? yytranslate[x] : %d)\n",
- max_user_token_number, nsyms);
-
- if (ntokens < 127) /* play it very safe; check maximum element value. */
- fprintf(ftable, "\nstatic const char yytranslate[] = { 0");
- else
- fprintf(ftable, "\nstatic const short yytranslate[] = { 0");
-
- j = 10;
- for (i = 1; i <= max_user_token_number; i++)
- {
- putc(',', ftable);
-
- if (j >= 10)
- {
- putc('\n', ftable);
- j = 1;
- }
- else
- {
- j++;
- }
-
- fprintf(ftable, "%6d", token_translations[i]);
- }
-
- fprintf(ftable, "\n};\n");
- }
- else
- {
- fprintf(ftable, "\n#define YYTRANSLATE(x) (x)\n");
- }
-}
-
-
-void
-output_gram()
-{
- register int i;
- register int j;
- register short *sp;
-
- /* With the ordinary parser,
- yyprhs and yyrhs are needed only for yydebug. */
- /* With the noparser option, all tables are generated */
- if (! semantic_parser && ! noparserflag)
- fprintf(ftable, "\n#if YYDEBUG != 0");
-
- fprintf(ftable, "\nstatic const short yyprhs[] = { 0");
-
- j = 10;
- for (i = 1; i <= nrules; i++)