Add of %source_extension and %header_extension which specify

the source or/and the header output file extension.
* src/files.c (compute_base_names): Remove initialisation of
src_extension and header_extension.
(compute_exts_from_gf): Update.
(compute_exts_from_src): Update.
(output_files): Update.
* src/reader.c (parse_header_extension_decl): New.
(parse_source_extension_decl): New.
(read_declarations): New case statements for the new tokens.
* src/lex.c (percent_table): Add entries for %source_extension
and %header_extension.
* src/lex.h (token_e): New tokens tok_hdrext and tok_srcext.
This commit is contained in:
Akim Demaille
2001-08-06 08:51:41 +00:00
parent 8416323152
commit 7333d40316
20 changed files with 348 additions and 217 deletions

View File

@@ -874,6 +874,45 @@ parse_thong_decl (void)
nsyms--;
}
/*------------------------------------------.
| Parse what comes after %header_extension. |
`------------------------------------------*/
static void
parse_header_extension_decl (void)
{
char buff[32];
int len;
if (header_extension)
complain (_("multiple %%header_extension declarations"));
fscanf (finput, "%s", buff);
printf("-> %s\n", buff);
len = strlen (buff);
buff[len] = '\0';
src_extension = XMALLOC (char, len + 1);
stpcpy (header_extension, buff);
}
/*------------------------------------------.
| Parse what comes after %source_extension. |
`------------------------------------------*/
static void
parse_source_extension_decl (void)
{
char buff[32];
int len;
if (src_extension)
complain (_("multiple %%source_extension declarations"));
fscanf (finput, "%s", buff);
printf("-> %s\n", buff);
len = strlen (buff);
buff[len] = '\0';
src_extension = XMALLOC (char, len + 1);
stpcpy (src_extension, buff);
}
/*----------------------------------------------------------------.
| Read from finput until `%%' is seen. Discard the `%%'. Handle |
@@ -944,6 +983,13 @@ read_declarations (void)
parse_assoc_decl (non_assoc);
break;
case tok_hdrext:
break;
case tok_srcext:
parse_source_extension_decl();
break;
case tok_noop:
break;