mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
Merge branch 'maint'
* maint: use obstack_printf scanner: restore a missing start condition gnulib: update maint: post-release administrivia version 2.6.1 gnulib: update maint: fix some syntax-check issues tests: do not depend on __cplusplus to decide for C++ or C output Conflicts: NEWS bootstrap.conf cfg.mk lib/.gitignore
This commit is contained in:
@@ -1 +1 @@
|
|||||||
2.6
|
2.6.1
|
||||||
|
|||||||
3
NEWS
3
NEWS
@@ -141,6 +141,9 @@ GNU Bison NEWS
|
|||||||
|
|
||||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||||
|
|
||||||
|
|
||||||
|
* Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
|
||||||
|
|
||||||
Bison no longer executes user-specified M4 code when processing a grammar.
|
Bison no longer executes user-specified M4 code when processing a grammar.
|
||||||
|
|
||||||
** Future Changes
|
** Future Changes
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ gnulib_modules='
|
|||||||
gettext git-version-gen gitlog-to-changelog
|
gettext git-version-gen gitlog-to-changelog
|
||||||
gpl-3.0 hash inttypes isnan javacomp-script
|
gpl-3.0 hash inttypes isnan javacomp-script
|
||||||
javaexec-script ldexpl malloc-gnu
|
javaexec-script ldexpl malloc-gnu
|
||||||
mbswidth obstack perror progname
|
mbswidth
|
||||||
|
obstack
|
||||||
|
obstack-printf
|
||||||
|
perror progname
|
||||||
quote quotearg
|
quote quotearg
|
||||||
readme-release
|
readme-release
|
||||||
realloc-posix
|
realloc-posix
|
||||||
|
|||||||
4
cfg.mk
4
cfg.mk
@@ -59,12 +59,14 @@ exclude = \
|
|||||||
$(call exclude, \
|
$(call exclude, \
|
||||||
bindtextdomain=^lib/main.c$$ \
|
bindtextdomain=^lib/main.c$$ \
|
||||||
program_name=^lib/main.c$$ \
|
program_name=^lib/main.c$$ \
|
||||||
prohibit_always-defined_macros=^data/yacc.c|^djgpp/ \
|
prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/ \
|
||||||
prohibit_always-defined_macros+=?|^lib/timevar.c$$ \
|
prohibit_always-defined_macros+=?|^lib/timevar.c$$ \
|
||||||
prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
|
prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
|
||||||
prohibit_always-defined_macros+=?|^tests/regression.at$$ \
|
prohibit_always-defined_macros+=?|^tests/regression.at$$ \
|
||||||
prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
|
prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
|
||||||
prohibit_empty_lines_at_EOF=^src/parse-gram.h$$ \
|
prohibit_empty_lines_at_EOF=^src/parse-gram.h$$ \
|
||||||
|
prohibit_magic_number_exit=^doc/bison.texi$$ \
|
||||||
|
prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \
|
||||||
prohibit_strcmp=^doc/bison\.texi$$ \
|
prohibit_strcmp=^doc/bison\.texi$$ \
|
||||||
require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \
|
require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \
|
||||||
space_tab=^tests/(input|c\+\+)\.at$$ \
|
space_tab=^tests/(input|c\+\+)\.at$$ \
|
||||||
|
|||||||
2
gnulib
2
gnulib
Submodule gnulib updated: dbd914496c...678815ea7c
15
lib/.gitignore
vendored
15
lib/.gitignore
vendored
@@ -35,6 +35,8 @@
|
|||||||
/close.c
|
/close.c
|
||||||
/closeout.c
|
/closeout.c
|
||||||
/closeout.h
|
/closeout.h
|
||||||
|
/concat-filename.c
|
||||||
|
/concat-filename.h
|
||||||
/config.charset
|
/config.charset
|
||||||
/config.h
|
/config.h
|
||||||
/config.in.h
|
/config.in.h
|
||||||
@@ -62,6 +64,7 @@
|
|||||||
/fd-hook.h
|
/fd-hook.h
|
||||||
/fd-safer-flag.c
|
/fd-safer-flag.c
|
||||||
/fd-safer.c
|
/fd-safer.c
|
||||||
|
/filename.h
|
||||||
/float+.h
|
/float+.h
|
||||||
/float.c
|
/float.c
|
||||||
/float.h
|
/float.h
|
||||||
@@ -123,6 +126,7 @@
|
|||||||
/nonblocking.h
|
/nonblocking.h
|
||||||
/obstack.c
|
/obstack.c
|
||||||
/obstack.h
|
/obstack.h
|
||||||
|
/obstack_printf.c
|
||||||
/open.c
|
/open.c
|
||||||
/pathmax.h
|
/pathmax.h
|
||||||
/perror.c
|
/perror.c
|
||||||
@@ -223,6 +227,7 @@
|
|||||||
/sys_socket.in.h
|
/sys_socket.in.h
|
||||||
/sys_stat.h
|
/sys_stat.h
|
||||||
/sys_stat.in.h
|
/sys_stat.in.h
|
||||||
|
/sys_types.in.h
|
||||||
/sys_wait.h
|
/sys_wait.h
|
||||||
/sys_wait.in.h
|
/sys_wait.in.h
|
||||||
/sysexits.in.h
|
/sysexits.in.h
|
||||||
@@ -259,14 +264,10 @@
|
|||||||
/xalloc-die.c
|
/xalloc-die.c
|
||||||
/xalloc-oversized.h
|
/xalloc-oversized.h
|
||||||
/xalloc.h
|
/xalloc.h
|
||||||
|
/xconcat-filename.c
|
||||||
/xmalloc.c
|
/xmalloc.c
|
||||||
|
/xmemdup0.c
|
||||||
|
/xmemdup0.h
|
||||||
/xsize.h
|
/xsize.h
|
||||||
/xstrndup.c
|
/xstrndup.c
|
||||||
/xstrndup.h
|
/xstrndup.h
|
||||||
/xmemdup0.c
|
|
||||||
/xmemdup0.h
|
|
||||||
/sys_types.in.h
|
|
||||||
/concat-filename.c
|
|
||||||
/concat-filename.h
|
|
||||||
/filename.h
|
|
||||||
/xconcat-filename.c
|
|
||||||
|
|||||||
1
m4/.gitignore
vendored
1
m4/.gitignore
vendored
@@ -181,3 +181,4 @@
|
|||||||
/xalloc.m4
|
/xalloc.m4
|
||||||
/xsize.m4
|
/xsize.m4
|
||||||
/xstrndup.m4
|
/xstrndup.m4
|
||||||
|
/obstack-printf.m4
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
{
|
{
|
||||||
case shift_resolution:
|
case shift_resolution:
|
||||||
case right_resolution:
|
case right_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
_(" Conflict between rule %d and token %s"
|
_(" Conflict between rule %d and token %s"
|
||||||
" resolved as shift"),
|
" resolved as shift"),
|
||||||
r->number,
|
r->number,
|
||||||
@@ -82,7 +82,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
|
|
||||||
case reduce_resolution:
|
case reduce_resolution:
|
||||||
case left_resolution:
|
case left_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
_(" Conflict between rule %d and token %s"
|
_(" Conflict between rule %d and token %s"
|
||||||
" resolved as reduce"),
|
" resolved as reduce"),
|
||||||
r->number,
|
r->number,
|
||||||
@@ -90,7 +90,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case nonassoc_resolution:
|
case nonassoc_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
_(" Conflict between rule %d and token %s"
|
_(" Conflict between rule %d and token %s"
|
||||||
" resolved as an error"),
|
" resolved as an error"),
|
||||||
r->number,
|
r->number,
|
||||||
@@ -102,33 +102,33 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
switch (resolution)
|
switch (resolution)
|
||||||
{
|
{
|
||||||
case shift_resolution:
|
case shift_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
" (%s < %s)",
|
" (%s < %s)",
|
||||||
r->prec->tag,
|
r->prec->tag,
|
||||||
symbols[token]->tag);
|
symbols[token]->tag);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case reduce_resolution:
|
case reduce_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
" (%s < %s)",
|
" (%s < %s)",
|
||||||
symbols[token]->tag,
|
symbols[token]->tag,
|
||||||
r->prec->tag);
|
r->prec->tag);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case left_resolution:
|
case left_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
" (%%left %s)",
|
" (%%left %s)",
|
||||||
symbols[token]->tag);
|
symbols[token]->tag);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case right_resolution:
|
case right_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
" (%%right %s)",
|
" (%%right %s)",
|
||||||
symbols[token]->tag);
|
symbols[token]->tag);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case nonassoc_resolution:
|
case nonassoc_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_obstack,
|
obstack_printf (&solved_conflicts_obstack,
|
||||||
" (%%nonassoc %s)",
|
" (%%nonassoc %s)",
|
||||||
symbols[token]->tag);
|
symbols[token]->tag);
|
||||||
break;
|
break;
|
||||||
@@ -145,7 +145,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
{
|
{
|
||||||
case shift_resolution:
|
case shift_resolution:
|
||||||
case right_resolution:
|
case right_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
" <resolution rule=\"%d\" symbol=\"%s\""
|
" <resolution rule=\"%d\" symbol=\"%s\""
|
||||||
" type=\"shift\">",
|
" type=\"shift\">",
|
||||||
r->number,
|
r->number,
|
||||||
@@ -154,7 +154,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
|
|
||||||
case reduce_resolution:
|
case reduce_resolution:
|
||||||
case left_resolution:
|
case left_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
" <resolution rule=\"%d\" symbol=\"%s\""
|
" <resolution rule=\"%d\" symbol=\"%s\""
|
||||||
" type=\"reduce\">",
|
" type=\"reduce\">",
|
||||||
r->number,
|
r->number,
|
||||||
@@ -162,7 +162,7 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case nonassoc_resolution:
|
case nonassoc_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
" <resolution rule=\"%d\" symbol=\"%s\""
|
" <resolution rule=\"%d\" symbol=\"%s\""
|
||||||
" type=\"error\">",
|
" type=\"error\">",
|
||||||
r->number,
|
r->number,
|
||||||
@@ -174,33 +174,33 @@ log_resolution (rule *r, symbol_number token,
|
|||||||
switch (resolution)
|
switch (resolution)
|
||||||
{
|
{
|
||||||
case shift_resolution:
|
case shift_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
"%s < %s",
|
"%s < %s",
|
||||||
xml_escape_n (0, r->prec->tag),
|
xml_escape_n (0, r->prec->tag),
|
||||||
xml_escape_n (1, symbols[token]->tag));
|
xml_escape_n (1, symbols[token]->tag));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case reduce_resolution:
|
case reduce_resolution:
|
||||||
obstack_fgrow2 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
"%s < %s",
|
"%s < %s",
|
||||||
xml_escape_n (0, symbols[token]->tag),
|
xml_escape_n (0, symbols[token]->tag),
|
||||||
xml_escape_n (1, r->prec->tag));
|
xml_escape_n (1, r->prec->tag));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case left_resolution:
|
case left_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
"%%left %s",
|
"%%left %s",
|
||||||
xml_escape (symbols[token]->tag));
|
xml_escape (symbols[token]->tag));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case right_resolution:
|
case right_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
"%%right %s",
|
"%%right %s",
|
||||||
xml_escape (symbols[token]->tag));
|
xml_escape (symbols[token]->tag));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case nonassoc_resolution:
|
case nonassoc_resolution:
|
||||||
obstack_fgrow1 (&solved_conflicts_xml_obstack,
|
obstack_printf (&solved_conflicts_xml_obstack,
|
||||||
"%%nonassoc %s",
|
"%%nonassoc %s",
|
||||||
xml_escape (symbols[token]->tag));
|
xml_escape (symbols[token]->tag));
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ static void
|
|||||||
muscle_syncline_grow (char const *key, location loc)
|
muscle_syncline_grow (char const *key, location loc)
|
||||||
{
|
{
|
||||||
char *extension = NULL;
|
char *extension = NULL;
|
||||||
obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
|
obstack_printf (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
|
||||||
obstack_quote (&muscle_obstack,
|
obstack_quote (&muscle_obstack,
|
||||||
quotearg_style (c_quoting_style, loc.start.file));
|
quotearg_style (c_quoting_style, loc.start.file));
|
||||||
obstack_sgrow (&muscle_obstack, ")[");
|
obstack_sgrow (&muscle_obstack, ")[");
|
||||||
@@ -269,9 +269,9 @@ muscle_boundary_grow (char const *key, boundary bound)
|
|||||||
obstack_sgrow (&muscle_obstack, "[[");
|
obstack_sgrow (&muscle_obstack, "[[");
|
||||||
obstack_escape (&muscle_obstack, bound.file);
|
obstack_escape (&muscle_obstack, bound.file);
|
||||||
obstack_1grow (&muscle_obstack, ':');
|
obstack_1grow (&muscle_obstack, ':');
|
||||||
obstack_fgrow1 (&muscle_obstack, "%d", bound.line);
|
obstack_printf (&muscle_obstack, "%d", bound.line);
|
||||||
obstack_1grow (&muscle_obstack, '.');
|
obstack_1grow (&muscle_obstack, '.');
|
||||||
obstack_fgrow1 (&muscle_obstack, "%d", bound.column);
|
obstack_printf (&muscle_obstack, "%d", bound.column);
|
||||||
obstack_sgrow (&muscle_obstack, "]]");
|
obstack_sgrow (&muscle_obstack, "]]");
|
||||||
obstack_1grow (&muscle_obstack, '\0');
|
obstack_1grow (&muscle_obstack, '\0');
|
||||||
extension = obstack_finish (&muscle_obstack);
|
extension = obstack_finish (&muscle_obstack);
|
||||||
|
|||||||
@@ -42,14 +42,14 @@ extern struct obstack muscle_obstack;
|
|||||||
|
|
||||||
#define MUSCLE_INSERT_INT(Key, Value) \
|
#define MUSCLE_INSERT_INT(Key, Value) \
|
||||||
do { \
|
do { \
|
||||||
obstack_fgrow1 (&muscle_obstack, "%d", Value); \
|
obstack_printf (&muscle_obstack, "%d", Value); \
|
||||||
obstack_1grow (&muscle_obstack, 0); \
|
obstack_1grow (&muscle_obstack, 0); \
|
||||||
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
|
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MUSCLE_INSERT_LONG_INT(Key, Value) \
|
#define MUSCLE_INSERT_LONG_INT(Key, Value) \
|
||||||
do { \
|
do { \
|
||||||
obstack_fgrow1 (&muscle_obstack, "%ld", Value); \
|
obstack_printf (&muscle_obstack, "%ld", Value); \
|
||||||
obstack_1grow (&muscle_obstack, 0); \
|
obstack_1grow (&muscle_obstack, 0); \
|
||||||
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
|
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|||||||
12
src/output.c
12
src/output.c
@@ -69,7 +69,7 @@ Name (char const *name, \
|
|||||||
int i; \
|
int i; \
|
||||||
int j = 1; \
|
int j = 1; \
|
||||||
\
|
\
|
||||||
obstack_fgrow1 (&format_obstack, "%6d", first); \
|
obstack_printf (&format_obstack, "%6d", first); \
|
||||||
for (i = begin; i < end; ++i) \
|
for (i = begin; i < end; ++i) \
|
||||||
{ \
|
{ \
|
||||||
obstack_1grow (&format_obstack, ','); \
|
obstack_1grow (&format_obstack, ','); \
|
||||||
@@ -80,7 +80,7 @@ Name (char const *name, \
|
|||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
++j; \
|
++j; \
|
||||||
obstack_fgrow1 (&format_obstack, "%6d", table_data[i]); \
|
obstack_printf (&format_obstack, "%6d", table_data[i]); \
|
||||||
if (table_data[i] < min) \
|
if (table_data[i] < min) \
|
||||||
min = table_data[i]; \
|
min = table_data[i]; \
|
||||||
if (max < table_data[i]) \
|
if (max < table_data[i]) \
|
||||||
@@ -92,10 +92,10 @@ Name (char const *name, \
|
|||||||
lmin = min; \
|
lmin = min; \
|
||||||
lmax = max; \
|
lmax = max; \
|
||||||
/* Build `NAME_min' and `NAME_max' in the obstack. */ \
|
/* Build `NAME_min' and `NAME_max' in the obstack. */ \
|
||||||
obstack_fgrow1 (&format_obstack, "%s_min", name); \
|
obstack_printf (&format_obstack, "%s_min", name); \
|
||||||
obstack_1grow (&format_obstack, 0); \
|
obstack_1grow (&format_obstack, 0); \
|
||||||
MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmin); \
|
MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmin); \
|
||||||
obstack_fgrow1 (&format_obstack, "%s_max", name); \
|
obstack_printf (&format_obstack, "%s_max", name); \
|
||||||
obstack_1grow (&format_obstack, 0); \
|
obstack_1grow (&format_obstack, 0); \
|
||||||
MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmax); \
|
MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmax); \
|
||||||
}
|
}
|
||||||
@@ -410,13 +410,13 @@ prepare_symbol_definitions (void)
|
|||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
#define SET_KEY(Entry) \
|
#define SET_KEY(Entry) \
|
||||||
obstack_fgrow2 (&format_obstack, "symbol(%d, %s)", \
|
obstack_printf (&format_obstack, "symbol(%d, %s)", \
|
||||||
i, Entry); \
|
i, Entry); \
|
||||||
obstack_1grow (&format_obstack, 0); \
|
obstack_1grow (&format_obstack, 0); \
|
||||||
key = obstack_finish (&format_obstack);
|
key = obstack_finish (&format_obstack);
|
||||||
|
|
||||||
#define SET_KEY2(Entry, Suffix) \
|
#define SET_KEY2(Entry, Suffix) \
|
||||||
obstack_fgrow3 (&format_obstack, "symbol(%d, %s_%s)", \
|
obstack_printf (&format_obstack, "symbol(%d, %s_%s)", \
|
||||||
i, Entry, Suffix); \
|
i, Entry, Suffix); \
|
||||||
obstack_1grow (&format_obstack, 0); \
|
obstack_1grow (&format_obstack, 0); \
|
||||||
key = obstack_finish (&format_obstack);
|
key = obstack_finish (&format_obstack);
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ print_core (struct obstack *oout, state *s)
|
|||||||
snritems = nitemset;
|
snritems = nitemset;
|
||||||
}
|
}
|
||||||
|
|
||||||
obstack_fgrow1 (oout, "%d", s->number);
|
obstack_printf (oout, "%d", s->number);
|
||||||
for (i = 0; i < snritems; i++)
|
for (i = 0; i < snritems; i++)
|
||||||
{
|
{
|
||||||
item_number *sp;
|
item_number *sp;
|
||||||
@@ -68,15 +68,15 @@ print_core (struct obstack *oout, state *s)
|
|||||||
|
|
||||||
r = item_number_as_rule_number (*sp);
|
r = item_number_as_rule_number (*sp);
|
||||||
|
|
||||||
obstack_fgrow1 (oout, "\n%s -> ", rules[r].lhs->tag);
|
obstack_printf (oout, "\n%s -> ", rules[r].lhs->tag);
|
||||||
|
|
||||||
for (sp = rules[r].rhs; sp < sp1; sp++)
|
for (sp = rules[r].rhs; sp < sp1; sp++)
|
||||||
obstack_fgrow1 (oout, "%s ", symbols[*sp]->tag);
|
obstack_printf (oout, "%s ", symbols[*sp]->tag);
|
||||||
|
|
||||||
obstack_1grow (oout, '.');
|
obstack_1grow (oout, '.');
|
||||||
|
|
||||||
for (/* Nothing */; *sp >= 0; ++sp)
|
for (/* Nothing */; *sp >= 0; ++sp)
|
||||||
obstack_fgrow1 (oout, " %s", symbols[*sp]->tag);
|
obstack_printf (oout, " %s", symbols[*sp]->tag);
|
||||||
|
|
||||||
/* Experimental feature: display the lookahead tokens. */
|
/* Experimental feature: display the lookahead tokens. */
|
||||||
if (report_flag & report_lookahead_tokens
|
if (report_flag & report_lookahead_tokens
|
||||||
@@ -95,7 +95,7 @@ print_core (struct obstack *oout, state *s)
|
|||||||
obstack_sgrow (oout, "[");
|
obstack_sgrow (oout, "[");
|
||||||
BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
|
BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
|
||||||
{
|
{
|
||||||
obstack_fgrow2 (oout, "%s%s", sep, symbols[k]->tag);
|
obstack_printf (oout, "%s%s", sep, symbols[k]->tag);
|
||||||
sep = ", ";
|
sep = ", ";
|
||||||
}
|
}
|
||||||
obstack_sgrow (oout, "]");
|
obstack_sgrow (oout, "]");
|
||||||
|
|||||||
@@ -435,30 +435,30 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
|
|||||||
/* Create the explanation message. */
|
/* Create the explanation message. */
|
||||||
obstack_init (&msg_buf);
|
obstack_init (&msg_buf);
|
||||||
|
|
||||||
obstack_fgrow1 (&msg_buf, _("possibly meant: %c"), dollar_or_at);
|
obstack_printf (&msg_buf, _("possibly meant: %c"), dollar_or_at);
|
||||||
if (contains_dot_or_dash (id))
|
if (contains_dot_or_dash (id))
|
||||||
obstack_fgrow1 (&msg_buf, "[%s]", id);
|
obstack_printf (&msg_buf, "[%s]", id);
|
||||||
else
|
else
|
||||||
obstack_sgrow (&msg_buf, id);
|
obstack_sgrow (&msg_buf, id);
|
||||||
obstack_sgrow (&msg_buf, tail);
|
obstack_sgrow (&msg_buf, tail);
|
||||||
|
|
||||||
if (var->err & VARIANT_HIDDEN)
|
if (var->err & VARIANT_HIDDEN)
|
||||||
{
|
{
|
||||||
obstack_fgrow1 (&msg_buf, _(", hiding %c"), dollar_or_at);
|
obstack_printf (&msg_buf, _(", hiding %c"), dollar_or_at);
|
||||||
if (contains_dot_or_dash (var->id))
|
if (contains_dot_or_dash (var->id))
|
||||||
obstack_fgrow1 (&msg_buf, "[%s]", var->id);
|
obstack_printf (&msg_buf, "[%s]", var->id);
|
||||||
else
|
else
|
||||||
obstack_sgrow (&msg_buf, var->id);
|
obstack_sgrow (&msg_buf, var->id);
|
||||||
obstack_sgrow (&msg_buf, tail);
|
obstack_sgrow (&msg_buf, tail);
|
||||||
}
|
}
|
||||||
|
|
||||||
obstack_fgrow1 (&msg_buf, _(" at %s"), at_spec);
|
obstack_printf (&msg_buf, _(" at %s"), at_spec);
|
||||||
|
|
||||||
if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
|
if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
|
||||||
{
|
{
|
||||||
const char *format =
|
const char *format =
|
||||||
_(", cannot be accessed from mid-rule action at $%d");
|
_(", cannot be accessed from mid-rule action at $%d");
|
||||||
obstack_fgrow1 (&msg_buf, format, midrule_rhs_index);
|
obstack_printf (&msg_buf, format, midrule_rhs_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
obstack_1grow (&msg_buf, '\0');
|
obstack_1grow (&msg_buf, '\0');
|
||||||
@@ -784,7 +784,7 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
|
|||||||
untyped_var_seen = true;
|
untyped_var_seen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
obstack_fgrow2 (&obstack_for_string,
|
obstack_printf (&obstack_for_string,
|
||||||
"]b4_rhs_value(%d, %d, ", effective_rule_length, n);
|
"]b4_rhs_value(%d, %d, ", effective_rule_length, n);
|
||||||
obstack_quote (&obstack_for_string, type_name);
|
obstack_quote (&obstack_for_string, type_name);
|
||||||
obstack_sgrow (&obstack_for_string, ")[");
|
obstack_sgrow (&obstack_for_string, ")[");
|
||||||
@@ -834,7 +834,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
|
obstack_printf (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
|
||||||
effective_rule_length, n);
|
effective_rule_length, n);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ static void fail_for_invalid_at (char const *at);
|
|||||||
\n out_lineno++; ECHO;
|
\n out_lineno++; ECHO;
|
||||||
[^@\n]+ ECHO;
|
[^@\n]+ ECHO;
|
||||||
|
|
||||||
<<EOF>> {
|
<INITIAL><<EOF>> {
|
||||||
if (outname)
|
if (outname)
|
||||||
{
|
{
|
||||||
free (outname);
|
free (outname);
|
||||||
|
|||||||
29
src/system.h
29
src/system.h
@@ -176,35 +176,6 @@ typedef size_t uintptr_t;
|
|||||||
#define obstack_sgrow(Obs, Str) \
|
#define obstack_sgrow(Obs, Str) \
|
||||||
obstack_grow (Obs, Str, strlen (Str))
|
obstack_grow (Obs, Str, strlen (Str))
|
||||||
|
|
||||||
#define obstack_fgrow1(Obs, Format, Arg1) \
|
|
||||||
do { \
|
|
||||||
char buf[4096]; \
|
|
||||||
sprintf (buf, Format, Arg1); \
|
|
||||||
obstack_grow (Obs, buf, strlen (buf)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define obstack_fgrow2(Obs, Format, Arg1, Arg2) \
|
|
||||||
do { \
|
|
||||||
char buf[4096]; \
|
|
||||||
sprintf (buf, Format, Arg1, Arg2); \
|
|
||||||
obstack_grow (Obs, buf, strlen (buf)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3) \
|
|
||||||
do { \
|
|
||||||
char buf[4096]; \
|
|
||||||
sprintf (buf, Format, Arg1, Arg2, Arg3); \
|
|
||||||
obstack_grow (Obs, buf, strlen (buf)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4) \
|
|
||||||
do { \
|
|
||||||
char buf[4096]; \
|
|
||||||
sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4); \
|
|
||||||
obstack_grow (Obs, buf, strlen (buf)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
|
|
||||||
/* Output Str escaped for our postprocessing (i.e., escape M4 special
|
/* Output Str escaped for our postprocessing (i.e., escape M4 special
|
||||||
characters).
|
characters).
|
||||||
|
|
||||||
|
|||||||
@@ -1281,8 +1281,6 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
%debug
|
%debug
|
||||||
%code requires
|
%code requires
|
||||||
{
|
{
|
||||||
# include <stdio.h>
|
|
||||||
|
|
||||||
typedef struct sem_type
|
typedef struct sem_type
|
||||||
{
|
{
|
||||||
int ival;
|
int ival;
|
||||||
@@ -1291,20 +1289,21 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
|
|
||||||
# define YYSTYPE sem_type
|
# define YYSTYPE sem_type
|
||||||
|
|
||||||
#ifdef __cplusplus
|
]AT_SKEL_CC_IF([[
|
||||||
# include <iostream>
|
# include <iostream>
|
||||||
static void
|
static void
|
||||||
report (std::ostream& yyo, int ival, float fval)
|
report (std::ostream& yyo, int ival, float fval)
|
||||||
{
|
{
|
||||||
yyo << "ival: " << ival << ", fval: " << fval;
|
yyo << "ival: " << ival << ", fval: " << fval;
|
||||||
}
|
}
|
||||||
#else
|
]], [[
|
||||||
|
# include <stdio.h>
|
||||||
static void
|
static void
|
||||||
report (FILE* yyo, int ival, float fval)
|
report (FILE* yyo, int ival, float fval)
|
||||||
{
|
{
|
||||||
fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
|
fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
|
||||||
}
|
}
|
||||||
#endif
|
]])[
|
||||||
}
|
}
|
||||||
|
|
||||||
%code
|
%code
|
||||||
|
|||||||
Reference in New Issue
Block a user