mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 14:53:03 +00:00
* src/reader.c (parse_dquoted_param): New.
(parse_header_extension_decl): Use it. (parse_source_extension_decl): Likewise.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2001-08-16 Marc Autret <autret_m@epita.fr>
|
||||||
|
|
||||||
|
* src/reader.c (parse_dquoted_param): New.
|
||||||
|
(parse_header_extension_decl): Use it.
|
||||||
|
(parse_source_extension_decl): Likewise.
|
||||||
|
|
||||||
2001-08-16 Marc Autret <autret_m@epita.fr>
|
2001-08-16 Marc Autret <autret_m@epita.fr>
|
||||||
|
|
||||||
* src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
|
* src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
|
||||||
|
|||||||
68
src/reader.c
68
src/reader.c
@@ -874,34 +874,72 @@ parse_thong_decl (void)
|
|||||||
nsyms--;
|
nsyms--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------.
|
/*--------------------------------------------------------------.
|
||||||
| Parse what comes after %header_extension. |
|
| Parse what comes after %header_extension and %source_etension |
|
||||||
`------------------------------------------*/
|
`--------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
parse_dquoted_param (const char *from)
|
||||||
|
{
|
||||||
|
char buff[32];
|
||||||
|
int c;
|
||||||
|
int index;
|
||||||
|
|
||||||
|
c = skip_white_space ();
|
||||||
|
|
||||||
|
if (c != '"')
|
||||||
|
{
|
||||||
|
ungetc (c, finput);
|
||||||
|
complain (_("invalid %s declaration"), from);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = getc (finput);
|
||||||
|
for (index = 0; (c >= '!') && (c <= '~'); index++)
|
||||||
|
{
|
||||||
|
if (c == '"')
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (c == '\\')
|
||||||
|
{
|
||||||
|
c = getc (finput);
|
||||||
|
if ((c < '!') && (c > '~'))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
buff[index] = c;
|
||||||
|
c = getc (finput);
|
||||||
|
}
|
||||||
|
buff[index] = '\0';
|
||||||
|
|
||||||
|
if (c != '"')
|
||||||
|
{
|
||||||
|
ungetc (c, finput);
|
||||||
|
complain (_("invalid %s declaration"), from);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xstrdup (buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* %header_extension case. */
|
||||||
static void
|
static void
|
||||||
parse_header_extension_decl (void)
|
parse_header_extension_decl (void)
|
||||||
{
|
{
|
||||||
char buff[32];
|
|
||||||
|
|
||||||
if (header_extension)
|
if (header_extension)
|
||||||
complain (_("multiple %%header_extension declarations"));
|
complain (_("multiple %%header_extension declarations"));
|
||||||
fscanf (finput, "%s", buff);
|
|
||||||
header_extension = xstrdup (buff);
|
header_extension = parse_dquoted_param ("%header_extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------.
|
/* %source_extension case. */
|
||||||
| Parse what comes after %source_extension. |
|
|
||||||
`------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_source_extension_decl (void)
|
parse_source_extension_decl (void)
|
||||||
{
|
{
|
||||||
char buff[32];
|
|
||||||
|
|
||||||
if (src_extension)
|
if (src_extension)
|
||||||
complain (_("multiple %%source_extension declarations"));
|
complain (_("multiple %%source_extension declarations"));
|
||||||
fscanf (finput, "%s", buff);
|
|
||||||
src_extension = xstrdup (buff);
|
src_extension = parse_dquoted_param ("%source_extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------.
|
/*----------------------------------------------------------------.
|
||||||
|
|||||||
Reference in New Issue
Block a user