mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +00:00
* src/files.c (action_obstack): Remove, unused.
(output_obstack): Remove it, and all its dependencies, as it is no longer needed. * src/reader.c (epilogue_set): Build the epilogue in the muscle_obstack. * src/output.h, src/output.c (muscle_obstack): Move to... * src/muscle_tab.h, src/muscle_tab.h: here. (muscle_init): Initialize muscle_obstack. (muscle_free): New. * src/main.c (main): Call it.
This commit is contained in:
14
ChangeLog
14
ChangeLog
@@ -1,3 +1,17 @@
|
|||||||
|
2002-06-14 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/files.c (action_obstack): Remove, unused.
|
||||||
|
(output_obstack): Remove it, and all its dependencies, as it is no
|
||||||
|
longer needed.
|
||||||
|
* src/reader.c (epilogue_set): Build the epilogue in the
|
||||||
|
muscle_obstack.
|
||||||
|
* src/output.h, src/output.c (muscle_obstack): Move to...
|
||||||
|
* src/muscle_tab.h, src/muscle_tab.h: here.
|
||||||
|
(muscle_init): Initialize muscle_obstack.
|
||||||
|
(muscle_free): New.
|
||||||
|
* src/main.c (main): Call it.
|
||||||
|
|
||||||
|
|
||||||
2002-06-14 Akim Demaille <akim@epita.fr>
|
2002-06-14 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/location.h: New, extracted from...
|
* src/location.h: New, extracted from...
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* Open and close files for bison,
|
/* Open and close files for bison,
|
||||||
Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002
|
Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
@@ -32,8 +32,6 @@ const char *base_name PARAMS ((char const *name));
|
|||||||
|
|
||||||
FILE *finput = NULL;
|
FILE *finput = NULL;
|
||||||
|
|
||||||
struct obstack action_obstack;
|
|
||||||
struct obstack output_obstack;
|
|
||||||
struct obstack pre_prologue_obstack;
|
struct obstack pre_prologue_obstack;
|
||||||
struct obstack post_prologue_obstack;
|
struct obstack post_prologue_obstack;
|
||||||
|
|
||||||
|
|||||||
@@ -46,16 +46,10 @@ extern char *spec_defines_file;
|
|||||||
extern FILE *finput;
|
extern FILE *finput;
|
||||||
|
|
||||||
|
|
||||||
/* Output all the action code; precise form depends on which parser. */
|
|
||||||
extern struct obstack action_obstack;
|
|
||||||
|
|
||||||
/* If semantic parser, output a .h file that defines YYSTYPE... */
|
/* If semantic parser, output a .h file that defines YYSTYPE... */
|
||||||
extern struct obstack pre_prologue_obstack;
|
extern struct obstack pre_prologue_obstack;
|
||||||
extern struct obstack post_prologue_obstack;
|
extern struct obstack post_prologue_obstack;
|
||||||
|
|
||||||
/* The verbose output. */
|
|
||||||
extern struct obstack output_obstack;
|
|
||||||
|
|
||||||
extern char *infile;
|
extern char *infile;
|
||||||
|
|
||||||
void compute_output_file_names PARAMS((void));
|
void compute_output_file_names PARAMS((void));
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ main (int argc, char *argv[])
|
|||||||
free_nullable ();
|
free_nullable ();
|
||||||
free_derives ();
|
free_derives ();
|
||||||
grammar_free ();
|
grammar_free ();
|
||||||
|
muscle_free ();
|
||||||
/* If using alloca.c, flush the alloca'ed memory for the benefit of
|
/* If using alloca.c, flush the alloca'ed memory for the benefit of
|
||||||
people running Bison as a library in IDEs. */
|
people running Bison as a library in IDEs. */
|
||||||
#if C_ALLOCA
|
#if C_ALLOCA
|
||||||
|
|||||||
@@ -24,6 +24,10 @@
|
|||||||
#include "muscle_tab.h"
|
#include "muscle_tab.h"
|
||||||
#include "getargs.h"
|
#include "getargs.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* An obstack used to create some entries. */
|
||||||
|
struct obstack muscle_obstack;
|
||||||
|
|
||||||
/* Initial capacity of muscles hash table. */
|
/* Initial capacity of muscles hash table. */
|
||||||
#define HT_INITIAL_CAPACITY 257
|
#define HT_INITIAL_CAPACITY 257
|
||||||
|
|
||||||
@@ -44,16 +48,24 @@ hash_muscle (const void *x, unsigned int tablesize)
|
|||||||
return hash_string (m->key, tablesize);
|
return hash_string (m->key, tablesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------.
|
||||||
|
| Create the MUSCLE_TABLE, and initialize it with default values. |
|
||||||
|
| Also set up the MUSCLE_OBSTACK. |
|
||||||
|
`-----------------------------------------------------------------*/
|
||||||
|
|
||||||
void
|
void
|
||||||
muscle_init (void)
|
muscle_init (void)
|
||||||
{
|
{
|
||||||
muscle_table = hash_initialize (HT_INITIAL_CAPACITY, NULL, hash_muscle,
|
muscle_table = hash_initialize (HT_INITIAL_CAPACITY, NULL, hash_muscle,
|
||||||
hash_compare_muscles, NULL);
|
hash_compare_muscles, free);
|
||||||
|
|
||||||
/* Version and input file. */
|
/* Version and input file. */
|
||||||
muscle_insert ("version", VERSION);
|
muscle_insert ("version", VERSION);
|
||||||
muscle_insert ("filename", infile);
|
muscle_insert ("filename", infile);
|
||||||
|
|
||||||
|
/* FIXME: there should probably be no default here, only in the
|
||||||
|
skeletons. */
|
||||||
|
|
||||||
/* Types. */
|
/* Types. */
|
||||||
muscle_insert ("ltype", "yyltype");
|
muscle_insert ("ltype", "yyltype");
|
||||||
|
|
||||||
@@ -66,8 +78,25 @@ muscle_init (void)
|
|||||||
|
|
||||||
/* C++ macros. */
|
/* C++ macros. */
|
||||||
muscle_insert ("name", "Parser");
|
muscle_insert ("name", "Parser");
|
||||||
|
|
||||||
|
/* Initialize the muscle obstack. */
|
||||||
|
obstack_init (&muscle_obstack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------.
|
||||||
|
| Free all the memory consumed by the muscle machinery only. |
|
||||||
|
`------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void
|
||||||
|
muscle_free (void)
|
||||||
|
{
|
||||||
|
hash_free (muscle_table);
|
||||||
|
obstack_free (&muscle_obstack, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
muscle_insert (const char *key, const char *value)
|
muscle_insert (const char *key, const char *value)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ typedef struct muscle_entry_s
|
|||||||
void muscle_init PARAMS ((void));
|
void muscle_init PARAMS ((void));
|
||||||
void muscle_insert PARAMS ((const char *key, const char *value));
|
void muscle_insert PARAMS ((const char *key, const char *value));
|
||||||
const char *muscle_find PARAMS ((const char *key));
|
const char *muscle_find PARAMS ((const char *key));
|
||||||
|
void muscle_free PARAMS ((void));
|
||||||
|
|
||||||
|
|
||||||
|
/* An obstack dedicated to receive muscle keys and values. */
|
||||||
|
extern struct obstack muscle_obstack;
|
||||||
|
|
||||||
#define MUSCLE_INSERT_INT(Key, Value) \
|
#define MUSCLE_INSERT_INT(Key, Value) \
|
||||||
{ \
|
{ \
|
||||||
|
|||||||
@@ -132,7 +132,6 @@ static short *check = NULL;
|
|||||||
static int lowzero;
|
static int lowzero;
|
||||||
static int high;
|
static int high;
|
||||||
|
|
||||||
struct obstack muscle_obstack;
|
|
||||||
static struct obstack format_obstack;
|
static struct obstack format_obstack;
|
||||||
|
|
||||||
int error_verbose = 0;
|
int error_verbose = 0;
|
||||||
@@ -1087,9 +1086,7 @@ output (void)
|
|||||||
/* Process the selected skeleton file. */
|
/* Process the selected skeleton file. */
|
||||||
output_skeleton ();
|
output_skeleton ();
|
||||||
|
|
||||||
obstack_free (&muscle_obstack, NULL);
|
|
||||||
obstack_free (&format_obstack, NULL);
|
obstack_free (&format_obstack, NULL);
|
||||||
obstack_free (&action_obstack, NULL);
|
|
||||||
obstack_free (&pre_prologue_obstack, NULL);
|
obstack_free (&pre_prologue_obstack, NULL);
|
||||||
obstack_free (&post_prologue_obstack, NULL);
|
obstack_free (&post_prologue_obstack, NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,4 @@ void output PARAMS ((void));
|
|||||||
void actions_output PARAMS ((FILE *out));
|
void actions_output PARAMS ((FILE *out));
|
||||||
void token_definitions_output PARAMS ((FILE *out));
|
void token_definitions_output PARAMS ((FILE *out));
|
||||||
|
|
||||||
extern struct obstack muscle_obstack;
|
|
||||||
|
|
||||||
#endif /* !OUTPUT_H_ */
|
#endif /* !OUTPUT_H_ */
|
||||||
|
|||||||
@@ -503,13 +503,6 @@ print_results (void)
|
|||||||
that conflicts with Posix. */
|
that conflicts with Posix. */
|
||||||
FILE *out = xfopen (spec_verbose_file, "w");
|
FILE *out = xfopen (spec_verbose_file, "w");
|
||||||
|
|
||||||
size_t size = obstack_object_size (&output_obstack);
|
|
||||||
fwrite (obstack_finish (&output_obstack), 1, size, out);
|
|
||||||
obstack_free (&output_obstack, NULL);
|
|
||||||
|
|
||||||
if (size)
|
|
||||||
fputs ("\n\n", out);
|
|
||||||
|
|
||||||
reduce_output (out);
|
reduce_output (out);
|
||||||
conflicts_output (out);
|
conflicts_output (out);
|
||||||
|
|
||||||
|
|||||||
16
src/reader.c
16
src/reader.c
@@ -138,19 +138,16 @@ prologue_augment (const char *prologue, location_t location)
|
|||||||
void
|
void
|
||||||
epilogue_set (const char *epilogue, location_t location)
|
epilogue_set (const char *epilogue, location_t location)
|
||||||
{
|
{
|
||||||
struct obstack el_obstack;
|
|
||||||
obstack_init (&el_obstack);
|
|
||||||
|
|
||||||
if (!no_lines_flag)
|
if (!no_lines_flag)
|
||||||
{
|
{
|
||||||
obstack_fgrow2 (&el_obstack, muscle_find ("linef"),
|
obstack_fgrow2 (&muscle_obstack, muscle_find ("linef"),
|
||||||
location.first_line,
|
location.first_line,
|
||||||
quotearg_style (c_quoting_style,
|
quotearg_style (c_quoting_style,
|
||||||
muscle_find ("filename")));
|
muscle_find ("filename")));
|
||||||
}
|
}
|
||||||
obstack_sgrow (&el_obstack, epilogue);
|
obstack_sgrow (&muscle_obstack, epilogue);
|
||||||
obstack_1grow (&el_obstack, 0);
|
obstack_1grow (&muscle_obstack, 0);
|
||||||
muscle_insert ("epilogue", obstack_finish (&el_obstack));
|
muscle_insert ("epilogue", obstack_finish (&muscle_obstack));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -450,9 +447,6 @@ reader (void)
|
|||||||
gram_control_t gram_control;
|
gram_control_t gram_control;
|
||||||
lineno = 1;
|
lineno = 1;
|
||||||
|
|
||||||
/* Initialize the muscle obstack. */
|
|
||||||
obstack_init (&muscle_obstack);
|
|
||||||
|
|
||||||
/* Initialize the symbol table. */
|
/* Initialize the symbol table. */
|
||||||
symbols_new ();
|
symbols_new ();
|
||||||
|
|
||||||
@@ -473,8 +467,6 @@ reader (void)
|
|||||||
undeftoken->number = ntokens++;
|
undeftoken->number = ntokens++;
|
||||||
|
|
||||||
/* Initialize the obstacks. */
|
/* Initialize the obstacks. */
|
||||||
obstack_init (&action_obstack);
|
|
||||||
obstack_init (&output_obstack);
|
|
||||||
obstack_init (&pre_prologue_obstack);
|
obstack_init (&pre_prologue_obstack);
|
||||||
obstack_init (&post_prologue_obstack);
|
obstack_init (&post_prologue_obstack);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user