quote consistently and make tests pass with new quoting from gnulib

Updating to gnulib pulled in new quote and quotarg modules,
by which quoting is now done like 'this' rather than `this'.
That change induces many "make check" test failures.  This change
adapts code and tests so that "make check" passes once again.
* src/scan-code.l: Quote like 'this', not like `this'.
* src/scan-gram.l: Likewise.
* src/symtab.c: Likewise.
* tests/actions.at: Adjust tests to match.
* tests/input.at: Likewise.
* tests/named-refs.at: Likewise.
* tests/output.at: Likewise.
* tests/regression.at: Likewise.
* lib/.gitignore: Regenerate.
* m4/.gitignore: Likewise.
(cherry picked from commit ae93e4e4b8)

Conflicts:

	src/scan-code.l
	src/scan-gram.l
	src/symtab.c
	tests/output.at
This commit is contained in:
Jim Meyering
2012-01-16 19:20:50 +01:00
committed by Akim Demaille
parent 14594e38ad
commit 9874f80b2e
10 changed files with 207 additions and 182 deletions

16
lib/.gitignore vendored
View File

@@ -243,3 +243,19 @@
/xstrndup.c /xstrndup.c
/xstrndup.h /xstrndup.h
/c-strcaseeq.h
/fd-hook.c
/fd-hook.h
/float.c
/fstat.c
/itold.c
/msvc-inval.c
/msvc-inval.h
/msvc-nothrow.c
/msvc-nothrow.h
/pathmax.h
/raise.c
/strerror-override.c
/strerror-override.h
/strerror_r.c
/xalloc-oversized.h

9
m4/.gitignore vendored
View File

@@ -157,3 +157,12 @@
/xsize.m4 /xsize.m4
/xstrndup.m4 /xstrndup.m4
/fstat.m4
/largefile.m4
/ldexp.m4
/msvc-inval.m4
/msvc-nothrow.m4
/pathmax.m4
/raise.m4
/ssize_t.m4
/strerror_r.m4

View File

@@ -95,10 +95,10 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
int braces_level = 0; int braces_level = 0;
/* Whether a semicolon is probably needed. /* Whether a semicolon is probably needed.
The heuristic is that a semicolon is not needed after `{', `}', `;', The heuristic is that a semicolon is not needed after '{', '}', ';',
or a C preprocessor directive, and that whitespaces and comments or a C preprocessor directive, and that whitespaces and comments
do not affect this flag. do not affect this flag.
Note that `{' does not need a semicolon because of `{}'. Note that '{' does not need a semicolon because of '{}'.
A semicolon may be needed before a cpp direcive, but don't bother. */ A semicolon may be needed before a cpp direcive, but don't bother. */
bool need_semicolon = false; bool need_semicolon = false;
@@ -117,7 +117,7 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
%} %}
/*------------------------------------------------------------. /*------------------------------------------------------------.
| Scanning a C comment. The initial `/ *' is already eaten. | | Scanning a C comment. The initial '/ *' is already eaten. |
`------------------------------------------------------------*/ `------------------------------------------------------------*/
<SC_COMMENT> <SC_COMMENT>
@@ -127,7 +127,7 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| Scanning a line comment. The initial `//' is already eaten. | | Scanning a line comment. The initial '//' is already eaten. |
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
<SC_LINE_COMMENT> <SC_LINE_COMMENT>
@@ -197,12 +197,12 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
need_semicolon = true; need_semicolon = true;
} }
"$" { "$" {
warn_at (*loc, _("stray `$'")); warn_at (*loc, _("stray '$'"));
obstack_sgrow (&obstack_for_string, "$]["); obstack_sgrow (&obstack_for_string, "$][");
need_semicolon = true; need_semicolon = true;
} }
"@" { "@" {
warn_at (*loc, _("stray `@'")); warn_at (*loc, _("stray '@'"));
obstack_sgrow (&obstack_for_string, "@@"); obstack_sgrow (&obstack_for_string, "@@");
need_semicolon = true; need_semicolon = true;
} }
@@ -220,16 +220,16 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
"}" { "}" {
bool outer_brace = --braces_level == 0; bool outer_brace = --braces_level == 0;
/* As an undocumented Bison extension, append `;' before the last /* As an undocumented Bison extension, append ';' before the last
brace in braced code, so that the user code can omit trailing brace in braced code, so that the user code can omit trailing
`;'. But do not append `;' if emulating Yacc, since Yacc does ';'. But do not append ';' if emulating Yacc, since Yacc does
not append one. */ not append one. */
if (outer_brace && !yacc_flag && language_prio == default_prio if (outer_brace && !yacc_flag && language_prio == default_prio
&& skeleton_prio == default_prio && need_semicolon && ! in_cpp) && skeleton_prio == default_prio && need_semicolon && ! in_cpp)
{ {
warn_at (*loc, _("a `;' might be needed at the end of action code")); warn_at (*loc, _("a ';' might be needed at the end of action code"));
warn_at (*loc, _("future versions of Bison will not add the `;'")); warn_at (*loc, _("future versions of Bison will not add the ';'"));
obstack_1grow (&obstack_for_string, ';'); obstack_1grow (&obstack_for_string, ';');
} }
STRING_GROW; STRING_GROW;
@@ -238,8 +238,8 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
/* Preprocessing directives should only be recognized at the beginning /* Preprocessing directives should only be recognized at the beginning
of lines, allowing whitespace including comments, but in C/C++, of lines, allowing whitespace including comments, but in C/C++,
`#' can only be the start of preprocessor directives or within '#' can only be the start of preprocessor directives or within
`#define' directives anyway, so don't bother with begin of line. */ '#define' directives anyway, so don't bother with begin of line. */
"#" STRING_GROW; in_cpp = true; "#" STRING_GROW; in_cpp = true;
{splice} STRING_GROW; {splice} STRING_GROW;
@@ -626,8 +626,8 @@ parse_ref (char *cp, symbol_list *rule, int rule_length,
sym_loc.start.column += 1; sym_loc.start.column += 1;
sym_loc.end = sym_loc.start; sym_loc.end = sym_loc.start;
const char *format = const char *format =
_("syntax error after `%c', expecting integer, letter," _("syntax error after '%c', expecting integer, letter,"
" `_', `[', or `$'"); " '_', '[', or '$'");
complain_at_indent (sym_loc, &indent, format, dollar_or_at); complain_at_indent (sym_loc, &indent, format, dollar_or_at);
} }
else if (midrule_rhs_index) else if (midrule_rhs_index)
@@ -689,7 +689,7 @@ int max_left_semantic_context = 0;
/*------------------------------------------------------------------. /*------------------------------------------------------------------.
| TEXT is pointing to a wannabee semantic value (i.e., a `$'). | | TEXT is pointing to a wannabee semantic value (i.e., a '$'). |
| | | |
| Possible inputs: $[<TYPENAME>]($|integer) | | Possible inputs: $[<TYPENAME>]($|integer) |
| | | |
@@ -749,23 +749,23 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
type_name = symbol_list_n_type_name_get (rule, dollar_loc, 0); type_name = symbol_list_n_type_name_get (rule, dollar_loc, 0);
if (!type_name) if (!type_name)
{ {
if (union_seen | tag_seen) if (union_seen | tag_seen)
{ {
if (rule->midrule_parent_rule) if (rule->midrule_parent_rule)
complain_at (dollar_loc, complain_at (dollar_loc,
_("$$ for the midrule at $%d of `%s'" _("$$ for the midrule at $%d of '%s'"
" has no declared type"), " has no declared type"),
rule->midrule_parent_rhs_index, rule->midrule_parent_rhs_index,
effective_rule->content.sym->tag); effective_rule->content.sym->tag);
else else
complain_at (dollar_loc, _("$$ of `%s' has no declared type"), complain_at (dollar_loc, _("$$ of '%s' has no declared type"),
rule->content.sym->tag); rule->content.sym->tag);
} }
else else
untyped_var_seen = true; untyped_var_seen = true;
type_name = ""; type_name = "";
} }
obstack_fgrow1 (&obstack_for_string, obstack_fgrow1 (&obstack_for_string,
"]b4_lhs_value([%s])[", type_name); "]b4_lhs_value([%s])[", type_name);
@@ -779,14 +779,14 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
type_name = type_name =
symbol_list_n_type_name_get (effective_rule, dollar_loc, n); symbol_list_n_type_name_get (effective_rule, dollar_loc, n);
if (!type_name) if (!type_name)
{ {
if (union_seen | tag_seen) if (union_seen | tag_seen)
complain_at (dollar_loc, _("$%s of `%s' has no declared type"), complain_at (dollar_loc, _("$%s of '%s' has no declared type"),
cp, effective_rule->content.sym->tag); cp, effective_rule->content.sym->tag);
else else
untyped_var_seen = true; untyped_var_seen = true;
type_name = ""; type_name = "";
} }
obstack_fgrow3 (&obstack_for_string, obstack_fgrow3 (&obstack_for_string,
"]b4_rhs_value(%d, %d, [%s])[", "]b4_rhs_value(%d, %d, [%s])[",
@@ -800,7 +800,7 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
/*------------------------------------------------------. /*------------------------------------------------------.
| TEXT is a location token (i.e., a `@...'). Output to | | TEXT is a location token (i.e., a '@...'). Output to |
| OBSTACK_FOR_STRING a reference to this location. | | OBSTACK_FOR_STRING a reference to this location. |
`------------------------------------------------------*/ `------------------------------------------------------*/

View File

@@ -88,11 +88,11 @@ static void unexpected_newline (boundary, char const *);
/* Strings and characters in directives/rules. */ /* Strings and characters in directives/rules. */
%x SC_ESCAPED_STRING SC_ESCAPED_CHARACTER %x SC_ESCAPED_STRING SC_ESCAPED_CHARACTER
/* A identifier was just read in directives/rules. Special state /* A identifier was just read in directives/rules. Special state
to capture the sequence `identifier :'. */ to capture the sequence 'identifier :'. */
%x SC_AFTER_IDENTIFIER %x SC_AFTER_IDENTIFIER
/* Three types of user code: /* Three types of user code:
- prologue (code between `%{' `%}' in the first section, before %%); - prologue (code between '%{' '%}' in the first section, before %%);
- actions, printers, union, etc, (between braced in the middle section); - actions, printers, union, etc, (between braced in the middle section);
- epilogue (everything after the second %%). */ - epilogue (everything after the second %%). */
%x SC_PROLOGUE SC_BRACED_CODE SC_EPILOGUE %x SC_PROLOGUE SC_BRACED_CODE SC_EPILOGUE
@@ -146,7 +146,7 @@ splice (\\[ \f\t\v]*\n)*
<INITIAL,SC_AFTER_IDENTIFIER,SC_BRACKETED_ID,SC_RETURN_BRACKETED_ID> <INITIAL,SC_AFTER_IDENTIFIER,SC_BRACKETED_ID,SC_RETURN_BRACKETED_ID>
{ {
/* Comments and white space. */ /* Comments and white space. */
"," warn_at (*loc, _("stray `,' treated as white space")); "," warn_at (*loc, _("stray ',' treated as white space"));
[ \f\n\t\v] | [ \f\n\t\v] |
"//".* ; "//".* ;
"/*" { "/*" {
@@ -397,7 +397,7 @@ splice (\\[ \f\t\v]*\n)*
/*---------------------------------------------------------------. /*---------------------------------------------------------------.
| Scanning a Yacc comment. The initial `/ *' is already eaten. | | Scanning a Yacc comment. The initial '/ *' is already eaten. |
`---------------------------------------------------------------*/ `---------------------------------------------------------------*/
<SC_YACC_COMMENT> <SC_YACC_COMMENT>
@@ -409,7 +409,7 @@ splice (\\[ \f\t\v]*\n)*
/*------------------------------------------------------------. /*------------------------------------------------------------.
| Scanning a C comment. The initial `/ *' is already eaten. | | Scanning a C comment. The initial '/ *' is already eaten. |
`------------------------------------------------------------*/ `------------------------------------------------------------*/
<SC_COMMENT> <SC_COMMENT>
@@ -420,7 +420,7 @@ splice (\\[ \f\t\v]*\n)*
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| Scanning a line comment. The initial `//' is already eaten. | | Scanning a line comment. The initial '//' is already eaten. |
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
<SC_LINE_COMMENT> <SC_LINE_COMMENT>
@@ -648,8 +648,8 @@ splice (\\[ \f\t\v]*\n)*
} }
} }
/* Tokenize `<<%' correctly (as `<<' `%') rather than incorrrectly /* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
(as `<' `<%'). */ (as '<' '<%'). */
"<"{splice}"<" STRING_GROW; "<"{splice}"<" STRING_GROW;
<<EOF>> { <<EOF>> {
@@ -840,7 +840,7 @@ convert_ucn_to_byte (char const *ucn)
/*----------------------------------------------------------------. /*----------------------------------------------------------------.
| Handle `#line INT "FILE"'. ARGS has already skipped `#line '. | | Handle '#line INT "FILE"'. ARGS has already skipped '#line '. |
`----------------------------------------------------------------*/ `----------------------------------------------------------------*/
static void static void
@@ -884,7 +884,7 @@ unexpected_end (boundary start, char const *msgid, char const *token_end)
static void static void
unexpected_eof (boundary start, char const *token_end) unexpected_eof (boundary start, char const *token_end)
{ {
unexpected_end (start, N_("missing `%s' at end of file"), token_end); unexpected_end (start, N_("missing '%s' at end of file"), token_end);
} }
@@ -895,7 +895,7 @@ unexpected_eof (boundary start, char const *token_end)
static void static void
unexpected_newline (boundary start, char const *token_end) unexpected_newline (boundary start, char const *token_end)
{ {
unexpected_end (start, N_("missing `%s' at end of line"), token_end); unexpected_end (start, N_("missing '%s' at end of line"), token_end);
} }

View File

@@ -409,11 +409,11 @@ void
symbol_make_alias (symbol *sym, symbol *str, location loc) symbol_make_alias (symbol *sym, symbol *str, location loc)
{ {
if (str->alias) if (str->alias)
warn_at (loc, _("symbol `%s' used more than once as a literal string"), warn_at (loc, _("symbol '%s' used more than once as a literal string"),
str->tag); str->tag);
else if (sym->alias) else if (sym->alias)
warn_at (loc, _("symbol `%s' given more than one literal string"), warn_at (loc, _("symbol '%s' given more than one literal string"),
sym->tag); sym->tag);
else else
{ {
str->class = token_sym; str->class = token_sym;

View File

@@ -1409,42 +1409,42 @@ string;"}
]]) ]])
AT_BISON_CHECK([[-o input.c input.y]], [0], [], AT_BISON_CHECK([[-o input.c input.y]], [0], [],
[[input.y:8.48: warning: a `;' might be needed at the end of action code [[input.y:8.48: warning: a ';' might be needed at the end of action code
input.y:8.48: warning: future versions of Bison will not add the `;' input.y:8.48: warning: future versions of Bison will not add the ';'
input.y:9.48: warning: a `;' might be needed at the end of action code input.y:9.48: warning: a ';' might be needed at the end of action code
input.y:9.48: warning: future versions of Bison will not add the `;' input.y:9.48: warning: future versions of Bison will not add the ';'
input.y:10.48: warning: a `;' might be needed at the end of action code input.y:10.48: warning: a ';' might be needed at the end of action code
input.y:10.48: warning: future versions of Bison will not add the `;' input.y:10.48: warning: future versions of Bison will not add the ';'
input.y:11.48: warning: a `;' might be needed at the end of action code input.y:11.48: warning: a ';' might be needed at the end of action code
input.y:11.48: warning: future versions of Bison will not add the `;' input.y:11.48: warning: future versions of Bison will not add the ';'
input.y:12.48: warning: a `;' might be needed at the end of action code input.y:12.48: warning: a ';' might be needed at the end of action code
input.y:12.48: warning: future versions of Bison will not add the `;' input.y:12.48: warning: future versions of Bison will not add the ';'
input.y:13.48: warning: a `;' might be needed at the end of action code input.y:13.48: warning: a ';' might be needed at the end of action code
input.y:13.48: warning: future versions of Bison will not add the `;' input.y:13.48: warning: future versions of Bison will not add the ';'
input.y:20.1: warning: a `;' might be needed at the end of action code input.y:20.1: warning: a ';' might be needed at the end of action code
input.y:20.1: warning: future versions of Bison will not add the `;' input.y:20.1: warning: future versions of Bison will not add the ';'
input.y:21.1: warning: a `;' might be needed at the end of action code input.y:21.1: warning: a ';' might be needed at the end of action code
input.y:21.1: warning: future versions of Bison will not add the `;' input.y:21.1: warning: future versions of Bison will not add the ';'
input.y:22.1: warning: a `;' might be needed at the end of action code input.y:22.1: warning: a ';' might be needed at the end of action code
input.y:22.1: warning: future versions of Bison will not add the `;' input.y:22.1: warning: future versions of Bison will not add the ';'
input.y:23.1: warning: a `;' might be needed at the end of action code input.y:23.1: warning: a ';' might be needed at the end of action code
input.y:23.1: warning: future versions of Bison will not add the `;' input.y:23.1: warning: future versions of Bison will not add the ';'
input.y:24.1: warning: a `;' might be needed at the end of action code input.y:24.1: warning: a ';' might be needed at the end of action code
input.y:24.1: warning: future versions of Bison will not add the `;' input.y:24.1: warning: future versions of Bison will not add the ';'
input.y:25.1: warning: a `;' might be needed at the end of action code input.y:25.1: warning: a ';' might be needed at the end of action code
input.y:25.1: warning: future versions of Bison will not add the `;' input.y:25.1: warning: future versions of Bison will not add the ';'
input.y:31.1: warning: a `;' might be needed at the end of action code input.y:31.1: warning: a ';' might be needed at the end of action code
input.y:31.1: warning: future versions of Bison will not add the `;' input.y:31.1: warning: future versions of Bison will not add the ';'
input.y:32.1: warning: a `;' might be needed at the end of action code input.y:32.1: warning: a ';' might be needed at the end of action code
input.y:32.1: warning: future versions of Bison will not add the `;' input.y:32.1: warning: future versions of Bison will not add the ';'
input.y:33.1: warning: a `;' might be needed at the end of action code input.y:33.1: warning: a ';' might be needed at the end of action code
input.y:33.1: warning: future versions of Bison will not add the `;' input.y:33.1: warning: future versions of Bison will not add the ';'
input.y:34.1: warning: a `;' might be needed at the end of action code input.y:34.1: warning: a ';' might be needed at the end of action code
input.y:34.1: warning: future versions of Bison will not add the `;' input.y:34.1: warning: future versions of Bison will not add the ';'
input.y:35.1: warning: a `;' might be needed at the end of action code input.y:35.1: warning: a ';' might be needed at the end of action code
input.y:35.1: warning: future versions of Bison will not add the `;' input.y:35.1: warning: future versions of Bison will not add the ';'
input.y:36.1: warning: a `;' might be needed at the end of action code input.y:36.1: warning: a ';' might be needed at the end of action code
input.y:36.1: warning: future versions of Bison will not add the `;' input.y:36.1: warning: future versions of Bison will not add the ';'
]]) ]])
AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]]) AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]], [[3]])

View File

@@ -33,8 +33,8 @@ exp: { @$ = @1 ; };
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.13-14: integer out of range: `$1' [[input.y:2.13-14: integer out of range: '$1'
input.y:3.13-14: integer out of range: `@1' input.y:3.13-14: integer out of range: '@1'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -58,8 +58,8 @@ exp: foo { $$; } foo { $2; } foo
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:5.12-13: $$ for the midrule at $2 of `exp' has no declared type [[input.y:5.12-13: $$ for the midrule at $2 of 'exp' has no declared type
input.y:5.24-25: $2 of `exp' has no declared type input.y:5.24-25: $2 of 'exp' has no declared type
input.y:5.6-32: warning: type clash on default action: <bar> != <> input.y:5.6-32: warning: type clash on default action: <bar> != <>
input.y:6.6-8: warning: type clash on default action: <bar> != <> input.y:6.6-8: warning: type clash on default action: <bar> != <>
input.y:7.5: warning: empty rule for typed nonterminal, and no action input.y:7.5: warning: empty rule for typed nonterminal, and no action
@@ -669,9 +669,9 @@ AT_DATA_GRAMMAR([input.y],
start: .GOOD GOOD start: .GOOD GOOD
]]) ]])
AT_BISON_CHECK([-o input.c input.y], [1], [], AT_BISON_CHECK([-o input.c input.y], [1], [],
[[input.y:10.10: invalid character: `-' [[input.y:10.10: invalid character: '-'
input.y:11.10-16: invalid identifier: `1NV4L1D' input.y:11.10-16: invalid identifier: '1NV4L1D'
input.y:12.10: invalid character: `-' input.y:12.10: invalid character: '-'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -708,8 +708,8 @@ start: TOO_LARGE_DEC TOO_LARGE_HEX
]]) ]])
AT_BISON_CHECK([too-large.y], [1], [], AT_BISON_CHECK([too-large.y], [1], [],
[[too-large.y:9.22-42: integer out of range: `999999999999999999999' [[too-large.y:9.22-42: integer out of range: '999999999999999999999'
too-large.y:10.24-44: integer out of range: `0xFFFFFFFFFFFFFFFFFFF' too-large.y:10.24-44: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -749,11 +749,11 @@ start: ;
]]) ]])
AT_BISON_CHECK([-o input.c input.y], 1, [], AT_BISON_CHECK([-o input.c input.y], 1, [],
[[input.y:1.10-2.0: missing `"' at end of line [[input.y:1.10-2.0: missing '"' at end of line
input.y:4.10-5.0: missing `'' at end of line input.y:4.10-5.0: missing ''' at end of line
input.y:14.11-15.0: missing `'' at end of line input.y:14.11-15.0: missing ''' at end of line
input.y:16.11-17.0: missing `"' at end of line input.y:16.11-17.0: missing '"' at end of line
input.y:19.13-20.0: missing `}' at end of file input.y:19.13-20.0: missing '}' at end of file
input.y:20.1: syntax error, unexpected end of file input.y:20.1: syntax error, unexpected end of file
]]) ]])
@@ -1200,9 +1200,9 @@ AT_CHECK([[perl -e "print 'start: \'';" >> empty.y || exit 77]])
AT_BISON_CHECK([empty.y], [1], [], AT_BISON_CHECK([empty.y], [1], [],
[[empty.y:2.8-9: warning: empty character literal [[empty.y:2.8-9: warning: empty character literal
empty.y:3.8-4.0: warning: empty character literal empty.y:3.8-4.0: warning: empty character literal
empty.y:3.8-4.0: missing `'' at end of line empty.y:3.8-4.0: missing ''' at end of line
empty.y:4.8: warning: empty character literal empty.y:4.8: warning: empty character literal
empty.y:4.8: missing `'' at end of file empty.y:4.8: missing ''' at end of file
]]) ]])
AT_DATA([two.y], AT_DATA([two.y],
@@ -1215,9 +1215,9 @@ AT_CHECK([[perl -e "print 'start: \'ab';" >> two.y || exit 77]])
AT_BISON_CHECK([two.y], [1], [], AT_BISON_CHECK([two.y], [1], [],
[[two.y:2.8-11: warning: extra characters in character literal [[two.y:2.8-11: warning: extra characters in character literal
two.y:3.8-4.0: warning: extra characters in character literal two.y:3.8-4.0: warning: extra characters in character literal
two.y:3.8-4.0: missing `'' at end of line two.y:3.8-4.0: missing ''' at end of line
two.y:4.8-10: warning: extra characters in character literal two.y:4.8-10: warning: extra characters in character literal
two.y:4.8-10: missing `'' at end of file two.y:4.8-10: missing ''' at end of file
]]) ]])
AT_DATA([three.y], AT_DATA([three.y],
@@ -1230,9 +1230,9 @@ AT_CHECK([[perl -e "print 'start: \'abc';" >> three.y || exit 77]])
AT_BISON_CHECK([three.y], [1], [], AT_BISON_CHECK([three.y], [1], [],
[[three.y:2.8-12: warning: extra characters in character literal [[three.y:2.8-12: warning: extra characters in character literal
three.y:3.8-4.0: warning: extra characters in character literal three.y:3.8-4.0: warning: extra characters in character literal
three.y:3.8-4.0: missing `'' at end of line three.y:3.8-4.0: missing ''' at end of line
three.y:4.8-11: warning: extra characters in character literal three.y:4.8-11: warning: extra characters in character literal
three.y:4.8-11: missing `'' at end of file three.y:4.8-11: missing ''' at end of file
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -1274,7 +1274,7 @@ input.y:3.27-36: invalid number after \-escape: Uffffffff
input.y:3.26-37: warning: empty character literal input.y:3.26-37: warning: empty character literal
input.y:3.40-49: invalid number after \-escape: U00000000 input.y:3.40-49: invalid number after \-escape: U00000000
input.y:3.39-50: warning: empty character literal input.y:3.39-50: warning: empty character literal
input.y:4.9-10: invalid character after \-escape: ` ' input.y:4.9-10: invalid character after \-escape: ' '
input.y:4.8-11: warning: empty character literal input.y:4.8-11: warning: empty character literal
input.y:4.14-15: invalid character after \-escape: A input.y:4.14-15: invalid character after \-escape: A
input.y:4.13-16: warning: empty character literal input.y:4.13-16: warning: empty character literal

View File

@@ -255,16 +255,16 @@ exp:
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:50.51-60: invalid reference: `$<ival>lo9' [[test.y:50.51-60: invalid reference: '$<ival>lo9'
test.y:50.3-68: symbol not found in production: lo9 test.y:50.3-68: symbol not found in production: lo9
test.y:51.51-60: warning: misleading reference: `$<ival>exp' test.y:51.51-60: warning: misleading reference: '$<ival>exp'
test.y:42.1-3: warning: refers to: $exp at $$ test.y:42.1-3: warning: refers to: $exp at $$
test.y:51.7: warning: possibly meant: $x, hiding $exp at $1 test.y:51.7: warning: possibly meant: $x, hiding $exp at $1
test.y:51.41: warning: possibly meant: $r, hiding $exp at $4 test.y:51.41: warning: possibly meant: $r, hiding $exp at $4
test.y:52.51-52: $l of `exp' has no declared type test.y:52.51-52: $l of 'exp' has no declared type
test.y:55.46-49: invalid reference: `$r12' test.y:55.46-49: invalid reference: '$r12'
test.y:55.3-53: symbol not found in production: r12 test.y:55.3-53: symbol not found in production: r12
test.y:56.29-33: invalid reference: `$expo' test.y:56.29-33: invalid reference: '$expo'
test.y:56.3-46: symbol not found in production: expo test.y:56.3-46: symbol not found in production: expo
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -280,7 +280,7 @@ foo: '1'
foo.bar: '2' foo.bar: '2'
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 0, [], AT_BISON_CHECK([-o test.c test.y], 0, [],
[[test.y:11.22-29: warning: misleading reference: `$foo.bar' [[test.y:11.22-29: warning: misleading reference: '$foo.bar'
test.y:11.8-10: warning: refers to: $foo at $1 test.y:11.8-10: warning: refers to: $foo at $1
test.y:11.12-18: warning: possibly meant: $[foo.bar] at $2 test.y:11.12-18: warning: possibly meant: $[foo.bar] at $2
]]) ]])
@@ -356,43 +356,43 @@ factor: '(' expr ')' { $$ = $2; }
; ;
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:24.36-41: invalid reference: `$cond1' [[test.y:24.36-41: invalid reference: '$cond1'
test.y:23.11-24.62: symbol not found in production: cond1 test.y:23.11-24.62: symbol not found in production: cond1
test.y:26.43-53: invalid reference: `$stmt.field' test.y:26.43-53: invalid reference: '$stmt.field'
test.y:25.11-26.60: symbol not found in production: stmt test.y:25.11-26.60: symbol not found in production: stmt
test.y:25.35-38: possibly meant: $then.field, hiding $stmt.field at $4 test.y:25.35-38: possibly meant: $then.field, hiding $stmt.field at $4
test.y:28.43-52: invalid reference: `$stmt.list' test.y:28.43-52: invalid reference: '$stmt.list'
test.y:27.11-28.59: symbol not found in production: stmt test.y:27.11-28.59: symbol not found in production: stmt
test.y:27.30-38: possibly meant: $[stmt.list] at $4 test.y:27.30-38: possibly meant: $[stmt.list] at $4
test.y:30.43-46: ambiguous reference: `$xyz' test.y:30.43-46: ambiguous reference: '$xyz'
test.y:29.35-37: refers to: $xyz at $4 test.y:29.35-37: refers to: $xyz at $4
test.y:29.50-52: refers to: $xyz at $6 test.y:29.50-52: refers to: $xyz at $6
test.y:32.43-52: invalid reference: `$stmt.list' test.y:32.43-52: invalid reference: '$stmt.list'
test.y:31.11-32.63: symbol not found in production: stmt test.y:31.11-32.63: symbol not found in production: stmt
test.y:31.40-43: possibly meant: $then, hiding $[stmt.list] at $4 test.y:31.40-43: possibly meant: $then, hiding $[stmt.list] at $4
test.y:31.61-64: possibly meant: $else, hiding $[stmt.list] at $6 test.y:31.61-64: possibly meant: $else, hiding $[stmt.list] at $6
test.y:34.43-58: invalid reference: `$stmt.list.field' test.y:34.43-58: invalid reference: '$stmt.list.field'
test.y:33.11-34.69: symbol not found in production: stmt test.y:33.11-34.69: symbol not found in production: stmt
test.y:33.40-43: possibly meant: $then.field, hiding $[stmt.list].field at $4 test.y:33.40-43: possibly meant: $then.field, hiding $[stmt.list].field at $4
test.y:33.61-64: possibly meant: $else.field, hiding $[stmt.list].field at $6 test.y:33.61-64: possibly meant: $else.field, hiding $[stmt.list].field at $6
test.y:36.43-54: invalid reference: `$[stmt.list]' test.y:36.43-54: invalid reference: '$[stmt.list]'
test.y:35.11-36.71: symbol not found in production: stmt.list test.y:35.11-36.71: symbol not found in production: stmt.list
test.y:35.40-43: possibly meant: $then, hiding $[stmt.list] at $4 test.y:35.40-43: possibly meant: $then, hiding $[stmt.list] at $4
test.y:35.61-64: possibly meant: $else, hiding $[stmt.list] at $6 test.y:35.61-64: possibly meant: $else, hiding $[stmt.list] at $6
test.y:38.43-49: invalid reference: `$then.1' test.y:38.43-49: invalid reference: '$then.1'
test.y:37.11-38.60: symbol not found in production: then test.y:37.11-38.60: symbol not found in production: then
test.y:37.40-45: possibly meant: $[then.1] at $4 test.y:37.40-45: possibly meant: $[then.1] at $4
test.y:40.43-55: invalid reference: `$then.1.field' test.y:40.43-55: invalid reference: '$then.1.field'
test.y:39.11-40.66: symbol not found in production: then test.y:39.11-40.66: symbol not found in production: then
test.y:39.40-45: possibly meant: $[then.1].field at $4 test.y:39.40-45: possibly meant: $[then.1].field at $4
test.y:42.44-50: invalid reference: `$stmt.x' test.y:42.44-50: invalid reference: '$stmt.x'
test.y:41.12-42.57: symbol not found in production: stmt test.y:41.12-42.57: symbol not found in production: stmt
test.y:41.36-41: possibly meant: $[stmt.x].x, hiding $stmt.x at $4 test.y:41.36-41: possibly meant: $[stmt.x].x, hiding $stmt.x at $4
test.y:41.36-41: possibly meant: $[stmt.x] at $4 test.y:41.36-41: possibly meant: $[stmt.x] at $4
test.y:44.13-22: invalid reference: `$if-stmt-a' test.y:44.13-22: invalid reference: '$if-stmt-a'
test.y:43.12-44.59: symbol not found in production: if test.y:43.12-44.59: symbol not found in production: if
test.y:43.1-9: possibly meant: $[if-stmt-a] at $$ test.y:43.1-9: possibly meant: $[if-stmt-a] at $$
test.y:46.46-54: invalid reference: `$then-a.f' test.y:46.46-54: invalid reference: '$then-a.f'
test.y:45.12-46.65: symbol not found in production: then test.y:45.12-46.65: symbol not found in production: then
test.y:45.41-46: possibly meant: $[then-a].f at $4 test.y:45.41-46: possibly meant: $[then-a].f at $4
]]) ]])
@@ -422,7 +422,7 @@ start: foo[ a d ] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.15: unexpected identifier in bracketed name: `d' [[test.y:11.15: unexpected identifier in bracketed name: 'd'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -450,10 +450,10 @@ start: foo[ /* aaa */ *&-.+ ] bar
{ s = $foo; } { s = $foo; }
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.23: invalid character in bracketed name: `*' [[test.y:11.23: invalid character in bracketed name: '*'
test.y:11.24: invalid character in bracketed name: `&' test.y:11.24: invalid character in bracketed name: '&'
test.y:11.25: invalid character in bracketed name: `-' test.y:11.25: invalid character in bracketed name: '-'
test.y:11.27: invalid character in bracketed name: `+' test.y:11.27: invalid character in bracketed name: '+'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -466,7 +466,7 @@ AT_DATA_GRAMMAR([test.y],
start[a s]: foo; start[a s]: foo;
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:11.9: unexpected identifier in bracketed name: `s' [[test.y:11.9: unexpected identifier in bracketed name: 's'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -513,37 +513,37 @@ sym_a: 'a';
sym_b: 'b'; sym_b: 'b';
]]) ]])
AT_BISON_CHECK([-o test.c test.y], 1, [], AT_BISON_CHECK([-o test.c test.y], 1, [],
[[test.y:12.22-31: invalid reference: `$sym.field' [[test.y:12.22-31: invalid reference: '$sym.field'
test.y:12.3-35: symbol not found in production: sym test.y:12.3-35: symbol not found in production: sym
test.y:13.22-35: invalid reference: `$<aa>sym.field' test.y:13.22-35: invalid reference: '$<aa>sym.field'
test.y:13.3-39: symbol not found in production: sym test.y:13.3-39: symbol not found in production: sym
test.y:14.22-33: invalid reference: `$[sym.field]' test.y:14.22-33: invalid reference: '$[sym.field]'
test.y:14.3-37: symbol not found in production: sym.field test.y:14.3-37: symbol not found in production: sym.field
test.y:15.22-37: invalid reference: `$<aa>[sym.field]' test.y:15.22-37: invalid reference: '$<aa>[sym.field]'
test.y:15.3-41: symbol not found in production: sym.field test.y:15.3-41: symbol not found in production: sym.field
test.y:16.22-25: invalid reference: `$sym' test.y:16.22-25: invalid reference: '$sym'
test.y:16.3-29: symbol not found in production: sym test.y:16.3-29: symbol not found in production: sym
test.y:17.22-29: invalid reference: `$<aa>sym' test.y:17.22-29: invalid reference: '$<aa>sym'
test.y:17.3-33: symbol not found in production: sym test.y:17.3-33: symbol not found in production: sym
test.y:18.22-27: invalid reference: `$[sym]' test.y:18.22-27: invalid reference: '$[sym]'
test.y:18.3-65: symbol not found in production before $3: sym test.y:18.3-65: symbol not found in production before $3: sym
test.y:18.52-61: invalid reference: `$<aa>[sym]' test.y:18.52-61: invalid reference: '$<aa>[sym]'
test.y:18.3-65: symbol not found in production: sym test.y:18.3-65: symbol not found in production: sym
test.y:22.22-31: invalid reference: `$sym-field' test.y:22.22-31: invalid reference: '$sym-field'
test.y:22.3-35: symbol not found in production: sym test.y:22.3-35: symbol not found in production: sym
test.y:23.22-35: invalid reference: `$<aa>sym-field' test.y:23.22-35: invalid reference: '$<aa>sym-field'
test.y:23.3-39: symbol not found in production: sym test.y:23.3-39: symbol not found in production: sym
test.y:24.22-33: invalid reference: `$[sym-field]' test.y:24.22-33: invalid reference: '$[sym-field]'
test.y:24.3-37: symbol not found in production: sym-field test.y:24.3-37: symbol not found in production: sym-field
test.y:25.22-37: invalid reference: `$<aa>[sym-field]' test.y:25.22-37: invalid reference: '$<aa>[sym-field]'
test.y:25.3-41: symbol not found in production: sym-field test.y:25.3-41: symbol not found in production: sym-field
test.y:26.22-25: invalid reference: `$sym' test.y:26.22-25: invalid reference: '$sym'
test.y:26.3-29: symbol not found in production: sym test.y:26.3-29: symbol not found in production: sym
test.y:27.22-29: invalid reference: `$<aa>sym' test.y:27.22-29: invalid reference: '$<aa>sym'
test.y:27.3-33: symbol not found in production: sym test.y:27.3-33: symbol not found in production: sym
test.y:28.22-27: invalid reference: `$[sym]' test.y:28.22-27: invalid reference: '$[sym]'
test.y:28.3-65: symbol not found in production before $3: sym test.y:28.3-65: symbol not found in production before $3: sym
test.y:28.52-61: invalid reference: `$<aa>[sym]' test.y:28.52-61: invalid reference: '$<aa>[sym]'
test.y:28.3-65: symbol not found in production: sym test.y:28.3-65: symbol not found in production: sym
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -561,11 +561,11 @@ start:
.field: ; .field: ;
]]) ]])
AT_BISON_CHECK([[test.y]], [[1]], [], AT_BISON_CHECK([[test.y]], [[1]], [],
[[test.y:4.12-18: invalid reference: `$.field' [[test.y:4.12-18: invalid reference: '$.field'
test.y:4.13: syntax error after `$', expecting integer, letter, `_', `@<:@', or `$' test.y:4.13: syntax error after '$', expecting integer, letter, '_', '@<:@', or '$'
test.y:4.3-8: possibly meant: $[.field] at $1 test.y:4.3-8: possibly meant: $[.field] at $1
test.y:5.12-18: invalid reference: `@.field' test.y:5.12-18: invalid reference: '@.field'
test.y:5.13: syntax error after `@', expecting integer, letter, `_', `@<:@', or `$' test.y:5.13: syntax error after '@', expecting integer, letter, '_', '@<:@', or '$'
]]) ]])
AT_DATA([[test.y]], AT_DATA([[test.y]],
[[ [[
@@ -576,7 +576,7 @@ start:
; ;
]]) ]])
AT_BISON_CHECK([[test.y]], [[0]], [], AT_BISON_CHECK([[test.y]], [[0]], [],
[[test.y:4.9: warning: stray `$' [[test.y:4.9: warning: stray '$'
test.y:5.9: warning: stray `@' test.y:5.9: warning: stray '@'
]]) ]])
AT_CLEANUP AT_CLEANUP

View File

@@ -72,7 +72,7 @@ AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[],
AT_CHECK_OUTPUT([foo.yy], [%defines %verbose %yacc],[], AT_CHECK_OUTPUT([foo.yy], [%defines %verbose %yacc],[],
[y.output y.tab.c y.tab.h]) [y.output y.tab.c y.tab.h])
# Exercise %output and %file-prefix including deprecated `=' # Exercise %output and %file-prefix including deprecated '='
AT_CHECK_OUTPUT([foo.y], [%file-prefix "bar" %defines %verbose], [], AT_CHECK_OUTPUT([foo.y], [%file-prefix "bar" %defines %verbose], [],
[bar.output bar.tab.c bar.tab.h]) [bar.output bar.tab.c bar.tab.h])
AT_CHECK_OUTPUT([foo.y], [%output="bar.c" %defines %verbose %yacc],[], AT_CHECK_OUTPUT([foo.y], [%output="bar.c" %defines %verbose %yacc],[],
@@ -157,21 +157,21 @@ AT_CLEANUP
AT_CHECK_CONFLICTING_OUTPUT([foo.y], AT_CHECK_CONFLICTING_OUTPUT([foo.y],
[], [--graph="foo.tab.c"], [], [--graph="foo.tab.c"],
[foo.y: warning: conflicting outputs to file `foo.tab.c' [foo.y: warning: conflicting outputs to file 'foo.tab.c'
]) ])
AT_CHECK_CONFLICTING_OUTPUT([foo.y], AT_CHECK_CONFLICTING_OUTPUT([foo.y],
[%defines "foo.output"], [-v], [%defines "foo.output"], [-v],
[foo.y: warning: conflicting outputs to file `foo.output' [foo.y: warning: conflicting outputs to file 'foo.output'
]) ])
AT_CHECK_CONFLICTING_OUTPUT([foo.y], AT_CHECK_CONFLICTING_OUTPUT([foo.y],
[%skeleton "lalr1.cc" %defines], [--graph="location.hh"], [%skeleton "lalr1.cc" %defines], [--graph="location.hh"],
[foo.y: warning: conflicting outputs to file `location.hh' [foo.y: warning: conflicting outputs to file 'location.hh'
]) ])
AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y], AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y],
[foo.y: refusing to overwrite the input file `foo.y' [foo.y: refusing to overwrite the input file 'foo.y'
], 1) ], 1)
@@ -213,7 +213,7 @@ AT_CLEANUP
]) ])
# Notice that the header file name here cannot contain # Notice that the header file name here cannot contain
# `"' since FILENAME in `#include "FILENAME"' cannot. # '"' since FILENAME in '#include "FILENAME"' cannot.
AT_CHECK_OUTPUT_FILE_NAME([[`~!@#$%^&*()-=_+{}[]|\:;<>, .']]) AT_CHECK_OUTPUT_FILE_NAME([[`~!@#$%^&*()-=_+{}[]|\:;<>, .']])
dnl Work around a bug in m4_expand that broke AT_SETUP in autoconf 2.62, dnl Work around a bug in m4_expand that broke AT_SETUP in autoconf 2.62,
dnl by using the definition from 2.63. dnl by using the definition from 2.63.

View File

@@ -162,7 +162,7 @@ AT_CLEANUP
AT_SETUP([Braces parsing]) AT_SETUP([Braces parsing])
AT_DATA([input.y], AT_DATA([input.y],
[[/* Bison used to swallow the character after `}'. */ [[/* Bison used to swallow the character after '}'. */
%% %%
exp: { tests = {{{{{{{{{{}}}}}}}}}}; }; exp: { tests = {{{{{{{{{{}}}}}}}}}}; };
@@ -184,7 +184,7 @@ AT_CLEANUP
AT_SETUP([Duplicate string]) AT_SETUP([Duplicate string])
AT_DATA([input.y], AT_DATA([input.y],
[[/* `Bison -v' used to dump core when two tokens are defined with the same [[/* 'Bison -v' used to dump core when two tokens are defined with the same
string, as LE and GE below. */ string, as LE and GE below. */
%token NUM %token NUM
@@ -197,7 +197,7 @@ exp: '(' exp ')' | NUM ;
]]) ]])
AT_BISON_CHECK([-v -o input.c input.y], 0, [], AT_BISON_CHECK([-v -o input.c input.y], 0, [],
[[input.y:6.8-14: warning: symbol `"<="' used more than once as a literal string [[input.y:6.8-14: warning: symbol '"<="' used more than once as a literal string
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -387,14 +387,14 @@ default: 'a' }
]]) ]])
AT_BISON_CHECK([input.y], [1], [], AT_BISON_CHECK([input.y], [1], [],
[[input.y:2.1: invalid character: `?' [[input.y:2.1: invalid character: '?'
input.y:3.14: invalid character: `}' input.y:3.14: invalid character: '}'
input.y:4.1: invalid character: `%' input.y:4.1: invalid character: '%'
input.y:4.2: invalid character: `&' input.y:4.2: invalid character: '&'
input.y:5.1-17: invalid directive: `%a-does-not-exist' input.y:5.1-17: invalid directive: '%a-does-not-exist'
input.y:6.1: invalid character: `%' input.y:6.1: invalid character: '%'
input.y:6.2: invalid character: `-' input.y:6.2: invalid character: '-'
input.y:7.1-8.0: missing `%}' at end of file input.y:7.1-8.0: missing '%}' at end of file
input.y:7.1-8.0: syntax error, unexpected %{...%} input.y:7.1-8.0: syntax error, unexpected %{...%}
]]) ]])
@@ -428,7 +428,7 @@ AT_CLEANUP
AT_SETUP([Token definitions]) AT_SETUP([Token definitions])
# Bison managed, when fed with `%token 'f' "f"' to #define 'f'! # Bison managed, when fed with '%token 'f' "f"' to #define 'f'!
AT_DATA_GRAMMAR([input.y], AT_DATA_GRAMMAR([input.y],
[%{ [%{
#include <stdlib.h> #include <stdlib.h>
@@ -475,7 +475,7 @@ main (void)
# the user specification is eliminated. # the user specification is eliminated.
AT_BISON_CHECK([-o input.c input.y], [[0]], [[]], AT_BISON_CHECK([-o input.c input.y], [[0]], [[]],
[[input.y:22.8-14: warning: symbol SPECIAL redeclared [[input.y:22.8-14: warning: symbol SPECIAL redeclared
input.y:22.8-63: warning: symbol `"\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!"' used more than once as a literal string input.y:22.8-63: warning: symbol '"\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!"' used more than once as a literal string
]]) ]])
AT_COMPILE([input]) AT_COMPILE([input])
@@ -524,7 +524,7 @@ AT_CLEANUP
# The generation of the reduction was once wrong in Bison, and made it # The generation of the reduction was once wrong in Bison, and made it
# miss some reductions. In the following test case, the reduction on # miss some reductions. In the following test case, the reduction on
# `undef_id_tok' in state 1 was missing. This is stripped down from # 'undef_id_tok' in state 1 was missing. This is stripped down from
# the actual web2c.y. # the actual web2c.y.
AT_SETUP([Web2c Report]) AT_SETUP([Web2c Report])
@@ -686,7 +686,7 @@ AT_CLEANUP
## Web2c Actions. ## ## Web2c Actions. ##
## --------------- ## ## --------------- ##
# The generation of the mapping `state -> action' was once wrong in # The generation of the mapping 'state -> action' was once wrong in
# extremely specific situations. web2c.y exhibits this situation. # extremely specific situations. web2c.y exhibits this situation.
# Below is a stripped version of the grammar. It looks like one can # Below is a stripped version of the grammar. It looks like one can
# simplify it further, but just don't: it is tuned to exhibit a bug, # simplify it further, but just don't: it is tuned to exhibit a bug,
@@ -1157,7 +1157,7 @@ AT_SETUP([[Extra lookahead sets in report]])
# state's one item that (1) is associated with the same rule as the reduction # state's one item that (1) is associated with the same rule as the reduction
# and (2) has its dot at the end of its RHS. Previously, Bison also # and (2) has its dot at the end of its RHS. Previously, Bison also
# erroneously printed the lookahead set next to all of the state's other items # erroneously printed the lookahead set next to all of the state's other items
# associated with the same rule. This bug affected only the `.output' file and # associated with the same rule. This bug affected only the '.output' file and
# not the generated parser source code. # not the generated parser source code.
AT_DATA([[input.y]], AT_DATA([[input.y]],