projects
/
bison.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tests: remove useless location initialization.
[bison.git]
/
src
/
conflicts.c
diff --git
a/src/conflicts.c
b/src/conflicts.c
index 0437670b30a30a46198a2aa423e088997fa63a6e..ba0b6ed3fe80af1d657060d76670c5ecd6f16340 100644
(file)
--- a/
src/conflicts.c
+++ b/
src/conflicts.c
@@
-1,6
+1,6
@@
/* Find and resolve or report lookahead conflicts for bison,
/* Find and resolve or report lookahead conflicts for bison,
- Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-201
1
Free Software
+ Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-201
2
Free Software
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@
-73,7
+73,7
@@
log_resolution (rule *r, symbol_number token,
{
case shift_resolution:
case right_resolution:
{
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,
_(" Conflict between rule %d and token %s"
" resolved as shift"),
r->number,
@@
-82,7
+82,7
@@
log_resolution (rule *r, symbol_number token,
case reduce_resolution:
case left_resolution:
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,
_(" Conflict between rule %d and token %s"
" resolved as reduce"),
r->number,
@@
-90,7
+90,7
@@
log_resolution (rule *r, symbol_number token,
break;
case nonassoc_resolution:
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,
_(" Conflict between rule %d and token %s"
" resolved as an error"),
r->number,
@@
-102,33
+102,33
@@
log_resolution (rule *r, symbol_number token,
switch (resolution)
{
case shift_resolution:
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:
" (%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:
" (%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:
" (%%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:
" (%%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;
" (%%nonassoc %s)",
symbols[token]->tag);
break;
@@
-145,7
+145,7
@@
log_resolution (rule *r, symbol_number token,
{
case shift_resolution:
case right_resolution:
{
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,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"shift\">",
r->number,
@@
-154,7
+154,7
@@
log_resolution (rule *r, symbol_number token,
case reduce_resolution:
case left_resolution:
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,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"reduce\">",
r->number,
@@
-162,7
+162,7
@@
log_resolution (rule *r, symbol_number token,
break;
case nonassoc_resolution:
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,
" <resolution rule=\"%d\" symbol=\"%s\""
" type=\"error\">",
r->number,
@@
-174,33
+174,33
@@
log_resolution (rule *r, symbol_number token,
switch (resolution)
{
case shift_resolution:
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:
"%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:
"%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:
"%%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:
"%%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;
"%%nonassoc %s",
xml_escape (symbols[token]->tag));
break;
@@
-594,8
+594,17
@@
conflicts_print (void)
return;
/* Report the total number of conflicts on STDERR. */
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 (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);
if (! yacc_flag)
fprintf (stderr, "%s: ", current_file);
conflict_report (stderr, src_total, rrc_total);