mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33: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>
|
||||
|
||||
* src/output.c (output_actions): Clean up.
|
||||
|
||||
@@ -976,3 +976,6 @@ yyabortlab:
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
%%user_code
|
||||
|
||||
|
||||
11
src/output.c
11
src/output.c
@@ -1017,16 +1017,6 @@ output_parser (void)
|
||||
xfclose (fskel);
|
||||
}
|
||||
|
||||
static void
|
||||
output_program (void)
|
||||
{
|
||||
int c;
|
||||
|
||||
while ((c = getc (finput)) != EOF)
|
||||
obstack_1grow (&table_obstack, c);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
free_itemsets (void)
|
||||
{
|
||||
@@ -1122,7 +1112,6 @@ output (void)
|
||||
/* Copy definitions in directive. */
|
||||
macro_insert ("definitions", obstack_finish (&attrs_obstack));
|
||||
output_parser ();
|
||||
output_program ();
|
||||
|
||||
obstack_free (¯o_obstack, 0);
|
||||
obstack_free (&output_obstack, 0);
|
||||
|
||||
21
src/reader.c
21
src/reader.c
@@ -1667,6 +1667,25 @@ readgram (void)
|
||||
|
||||
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 |
|
||||
@@ -2016,6 +2035,8 @@ reader (void)
|
||||
/* Read in the grammar, build grammar in list form. Write out
|
||||
guards and actions. */
|
||||
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,
|
||||
write its type into the .tab.h file. */
|
||||
#if 0
|
||||
|
||||
Reference in New Issue
Block a user