mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 09:43:03 +00:00
* src/bison.simple: Add %%user_code directive at the end.
* src/reader.c (read_additionnal_code): New. (reader): Use it. * src/output.c (output_program): Remove. (output): Update.
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2001-08-29 Marc Autret <autret_m@epita.fr>
|
||||||
|
|
||||||
|
* src/bison.simple: Add %%user_code directive at the end.
|
||||||
|
* src/reader.c (read_additionnal_code): New.
|
||||||
|
(reader): Use it.
|
||||||
|
* src/output.c (output_program): Remove.
|
||||||
|
(output): Update.
|
||||||
|
|
||||||
2001-08-28 Marc Autret <autret_m@epita.fr>
|
2001-08-28 Marc Autret <autret_m@epita.fr>
|
||||||
|
|
||||||
* src/output.c (output_actions): Clean up.
|
* src/output.c (output_actions): Clean up.
|
||||||
|
|||||||
@@ -976,3 +976,6 @@ yyabortlab:
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%%user_code
|
||||||
|
|
||||||
|
|||||||
11
src/output.c
11
src/output.c
@@ -1017,16 +1017,6 @@ output_parser (void)
|
|||||||
xfclose (fskel);
|
xfclose (fskel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
output_program (void)
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
|
|
||||||
while ((c = getc (finput)) != EOF)
|
|
||||||
obstack_1grow (&table_obstack, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_itemsets (void)
|
free_itemsets (void)
|
||||||
{
|
{
|
||||||
@@ -1122,7 +1112,6 @@ output (void)
|
|||||||
/* Copy definitions in directive. */
|
/* Copy definitions in directive. */
|
||||||
macro_insert ("definitions", obstack_finish (&attrs_obstack));
|
macro_insert ("definitions", obstack_finish (&attrs_obstack));
|
||||||
output_parser ();
|
output_parser ();
|
||||||
output_program ();
|
|
||||||
|
|
||||||
obstack_free (¯o_obstack, 0);
|
obstack_free (¯o_obstack, 0);
|
||||||
obstack_free (&output_obstack, 0);
|
obstack_free (&output_obstack, 0);
|
||||||
|
|||||||
21
src/reader.c
21
src/reader.c
@@ -1667,6 +1667,25 @@ readgram (void)
|
|||||||
|
|
||||||
ntokens = nsyms - nvars;
|
ntokens = nsyms - nvars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* At the end of the grammar file, some C source code must
|
||||||
|
be stored. It is going to be associated to the user_code
|
||||||
|
directive. */
|
||||||
|
static void
|
||||||
|
read_additionnal_code (void)
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
struct obstack uc_obstack;
|
||||||
|
|
||||||
|
obstack_init (&uc_obstack);
|
||||||
|
|
||||||
|
while ((c = getc (finput)) != EOF)
|
||||||
|
obstack_1grow (&uc_obstack, c);
|
||||||
|
|
||||||
|
obstack_1grow (&uc_obstack, 0);
|
||||||
|
macro_insert ("user_code", obstack_finish (&uc_obstack));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------.
|
/*--------------------------------------------------------------.
|
||||||
| For named tokens, but not literal ones, define the name. The |
|
| For named tokens, but not literal ones, define the name. The |
|
||||||
@@ -2016,6 +2035,8 @@ reader (void)
|
|||||||
/* Read in the grammar, build grammar in list form. Write out
|
/* Read in the grammar, build grammar in list form. Write out
|
||||||
guards and actions. */
|
guards and actions. */
|
||||||
readgram ();
|
readgram ();
|
||||||
|
/* Some C code is given at the end of the grammar file. */
|
||||||
|
read_additionnal_code ();
|
||||||
/* Now we know whether we need the line-number stack. If we do,
|
/* Now we know whether we need the line-number stack. If we do,
|
||||||
write its type into the .tab.h file. */
|
write its type into the .tab.h file. */
|
||||||
#if 0
|
#if 0
|
||||||
|
|||||||
Reference in New Issue
Block a user