/* Find and resolve or report lookahead conflicts for bison,
- Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-2010 Free Software
+ Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-2012 Free Software
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
{
case shift_resolution:
case right_resolution:
- obstack_fgrow2 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
_(" Conflict between rule %d and token %s"
" resolved as shift"),
r->number,
case reduce_resolution:
case left_resolution:
- obstack_fgrow2 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
_(" Conflict between rule %d and token %s"
" resolved as reduce"),
r->number,
break;
case nonassoc_resolution:
- obstack_fgrow2 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
_(" Conflict between rule %d and token %s"
" resolved as an error"),
r->number,
switch (resolution)
{
case shift_resolution:
- obstack_fgrow2 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
" (%s < %s)",
r->prec->tag,
symbols[token]->tag);
break;
case reduce_resolution:
- obstack_fgrow2 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
" (%s < %s)",
symbols[token]->tag,
r->prec->tag);
break;
case left_resolution:
- obstack_fgrow1 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
" (%%left %s)",
symbols[token]->tag);
break;
case right_resolution:
- obstack_fgrow1 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
" (%%right %s)",
symbols[token]->tag);
break;
case nonassoc_resolution:
- obstack_fgrow1 (&solved_conflicts_obstack,
+ obstack_printf (&solved_conflicts_obstack,
" (%%nonassoc %s)",
symbols[token]->tag);
break;
{
case shift_resolution:
case right_resolution:
- obstack_fgrow2 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"shift\">",
r->number,
case reduce_resolution:
case left_resolution:
- obstack_fgrow2 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"reduce\">",
r->number,
break;
case nonassoc_resolution:
- obstack_fgrow2 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"error\">",
r->number,
switch (resolution)
{
case shift_resolution:
- obstack_fgrow2 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
"%s < %s",
xml_escape_n (0, r->prec->tag),
xml_escape_n (1, symbols[token]->tag));
break;
case reduce_resolution:
- obstack_fgrow2 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
"%s < %s",
xml_escape_n (0, symbols[token]->tag),
xml_escape_n (1, r->prec->tag));
break;
case left_resolution:
- obstack_fgrow1 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
"%%left %s",
xml_escape (symbols[token]->tag));
break;
case right_resolution:
- obstack_fgrow1 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
"%%right %s",
xml_escape (symbols[token]->tag));
break;
case nonassoc_resolution:
- obstack_fgrow1 (&solved_conflicts_xml_obstack,
+ obstack_printf (&solved_conflicts_xml_obstack,
"%%nonassoc %s",
xml_escape (symbols[token]->tag));
break;
return;
/* Report the total number of conflicts on STDERR. */
+ if (expected_sr_conflicts == -1 && expected_rr_conflicts == -1)
+ {
+ if (!(warnings_flag & warnings_conflicts_sr))
+ src_total = 0;
+ if (!(warnings_flag & warnings_conflicts_rr))
+ rrc_total = 0;
+ }
if (src_total | rrc_total)
{
+ if (expected_sr_conflicts == -1 && expected_rr_conflicts == -1)
+ set_warning_issued ();
if (! yacc_flag)
fprintf (stderr, "%s: ", current_file);
conflict_report (stderr, src_total, rrc_total);