mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-16 07:43:03 +00:00
reader: reduce the "scope" of global variables
We have too many global variables, adding structure would help. For a start, let's hide some of the variables closer to their usage. * src/getargs.c, src/files.h (current_file): Move to... * src/scan-gram.c: here. * src/scan-gram.h (gram_in, gram__flex_debug): Remove, make them private to the scanner. * src/reader.h, src/reader.c (reader): Take a grammar file as argument. Move the handling of scanner variables to... * src/scan-gram.l (gram_scanner_open, gram_scanner_close): here. (gram_scanner_initialize): Remove, replaced by gram_scanner_open. * src/main.c: Adjust.
This commit is contained in:
@@ -83,6 +83,9 @@ static boundary scanner_cursor;
|
||||
unput (Msg[i - 1]); \
|
||||
} while (0)
|
||||
|
||||
/* The current file name. Might change with #line. */
|
||||
static uniqstr current_file = NULL;
|
||||
|
||||
/* A string representing the most recently saved token. */
|
||||
static char *last_string = NULL;
|
||||
|
||||
@@ -971,25 +974,29 @@ unexpected_newline (boundary start, char const *token_end)
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------.
|
||||
| Initialize the scanner. |
|
||||
`-------------------------*/
|
||||
|
||||
void
|
||||
gram_scanner_initialize (void)
|
||||
gram_scanner_open (const char *gram)
|
||||
{
|
||||
gram__flex_debug = trace_flag & trace_scan;
|
||||
gram_debug = trace_flag & trace_parse;
|
||||
obstack_init (&obstack_for_string);
|
||||
current_file = gram;
|
||||
gram_in = xfopen (gram, "r");
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
gram_scanner_close ()
|
||||
{
|
||||
xfclose (gram_in);
|
||||
/* Reclaim Flex's buffers. */
|
||||
yylex_destroy ();
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------.
|
||||
| Free all the memory allocated to the scanner. |
|
||||
`-----------------------------------------------*/
|
||||
|
||||
void
|
||||
gram_scanner_free (void)
|
||||
{
|
||||
obstack_free (&obstack_for_string, 0);
|
||||
/* Reclaim Flex's buffers. */
|
||||
yylex_destroy ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user