mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-15 23:33:03 +00:00
* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
(MUSCLE_INSERT_PREFIX): ...to there. * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING) (MUSCLE_INSERT_PREFIX): Move from here... * src/bison.hairy: Add a section directive. Put braces around muscle names. This parser skeleton is still broken, but Bison should not choke on a bad muscle 'syntax'. * src/bison.simple: Add a section directive. Put braces around muscle names. * src/files.h (strsuffix, stringappend): Add declarations. (tab_extension): Add declaration. (short_base_name): Add declaration. * src/files.c (strsuffix, stringappend): No longer static. These functions are used in the skeleton parser. (tab_extension): New. (compute_base_names): Use the computations done in this function to guess if the generated parsers should have '.tab' in their names. (short_base_name): No longer static. * src/output.c (output_skeleton): New. (output): Disable call to output_master_parser, and give a try to a new skeleton handling system. (guards_output, actions_output): No longer static. (token_definitions_output, get_lines_number): No longer static. * configure.in: Use AM_PROG_LEX and AC_PROG_YACC. * src/Makefile.am (bison_SOURCES): Add scan-skel.l and parse-skel.y. * src/parse-skel.y: New file. * src/scan-skel.l: New file.
This commit is contained in:
21
src/files.c
21
src/files.c
@@ -51,19 +51,22 @@ char *infile = NULL;
|
||||
char *attrsfile = NULL;
|
||||
|
||||
static char *base_name = NULL;
|
||||
static char *short_base_name = NULL;
|
||||
char *short_base_name = NULL;
|
||||
|
||||
/* C source file extension (the parser source). */
|
||||
const char *src_extension = NULL;
|
||||
/* Header file extension (if option ``-d'' is specified). */
|
||||
const char *header_extension = NULL;
|
||||
|
||||
/* Should we insert '.tab' in yacc-compatible parsers? */
|
||||
int tab_extension = 0;
|
||||
|
||||
|
||||
/*--------------------------.
|
||||
| Is SUFFIX ending STRING? |
|
||||
`--------------------------*/
|
||||
|
||||
static int
|
||||
int
|
||||
strsuffix (const char *string, const char *suffix)
|
||||
{
|
||||
size_t string_len = strlen (string);
|
||||
@@ -80,7 +83,7 @@ strsuffix (const char *string, const char *suffix)
|
||||
| STRING1, and STRING2. |
|
||||
`-----------------------------------------------------------------*/
|
||||
|
||||
static char *
|
||||
char*
|
||||
stringappend (const char *string1, const char *string2)
|
||||
{
|
||||
size_t len = strlen (string1) + strlen (string2);
|
||||
@@ -334,6 +337,11 @@ compute_base_names (void)
|
||||
short_base_length -= 4;
|
||||
short_base_name = strndup (spec_outfile, short_base_length);
|
||||
|
||||
/* FIXME: This is a quick and dirty way for me to find out if we
|
||||
should .tab or not, using the computations above. */
|
||||
if (strcmp (base_name, short_base_name))
|
||||
tab_extension = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -360,6 +368,10 @@ compute_base_names (void)
|
||||
if (ext_index)
|
||||
compute_exts_from_gf (infile + ext_index);
|
||||
|
||||
/* It seems that when only a prefix is given, '.tab' should always be
|
||||
used. */
|
||||
tab_extension = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -393,6 +405,9 @@ compute_base_names (void)
|
||||
strlen (short_base_name) + strlen (EXT_TAB) + 1);
|
||||
stpcpy (stpcpy (base_name, short_base_name), EXT_TAB);
|
||||
|
||||
/* By default, Bison should insert '.tab' were needed. */
|
||||
tab_extension = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user