English to the user's language, e.g., _("syntax error"). By default,
_ is defined to be a no-op macro so the strings are not translated.
+* When generating verbose diagnostics, Bison-generated C parsers no longer
+ quote the literal strings associated with tokens. For example, for
+ a syntax error associated with '%token NUM "number"' they might
+ print 'syntax error, unexpected number' instead of 'syntax error,
+ unexpected "number"'.
+
Changes in version 2.0, 2004-12-25:
* Possibly-incompatible changes
# Some syntax errors.
_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13],
- [1.2: syntax error, unexpected "number"])
+ [1.2: syntax error, unexpected number])
_AT_CHECK_CALC_ERROR([$1], [1], [1//2], [18],
- [1.2: syntax error, unexpected '/', expecting "number" or '-' or '(' or '!'])
+ [1.2: syntax error, unexpected '/', expecting number or '-' or '(' or '!'])
_AT_CHECK_CALC_ERROR([$1], [1], [error], [5],
[1.0: syntax error, unexpected $undefined])
_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26],
[2.0: syntax error, unexpected '+'])
# Exercise error messages with EOF: work on an empty file.
_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
- [1.0: syntax error, unexpected "end of input"])
+ [1.0: syntax error, unexpected end of input])
# Exercise the error token: without it, we die at the first error,
# hence be sure to
_AT_CHECK_CALC_ERROR([$1], [0],
[() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1],
[188],
-[1.1: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
-1.17: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
-1.22: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
-1.40: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
+[1.1: syntax error, unexpected ')', expecting number or '-' or '(' or '!'
+1.17: syntax error, unexpected ')', expecting number or '-' or '(' or '!'
+1.22: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
+1.40: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
calc: error: 4444 != 1])
# The same, but this time exercising explicitly triggered syntax errors.
# POSIX says the look-ahead causing the error should not be discarded.
_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75],
-[1.9: syntax error, unexpected "number"
+[1.9: syntax error, unexpected number
calc: error: 2222 != 1])
_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85],
-[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
-1.11: syntax error, unexpected "number"
+[1.3: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
+1.11: syntax error, unexpected number
calc: error: 2222 != 1])
AT_BISON_OPTION_POPDEFS
%token B_TOKEN "b"
%token C_TOKEN 'c'
%token 'd' D_TOKEN
-%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff"
+%token SPECIAL "\\\'\?\"\n\t??!"
%%
-exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff";
+exp: "a" "\\\'\?\"\n\t??!";
%%
void
yyerror (char const *s)
AT_CHECK([bison -o input.c input.y])
AT_COMPILE([input])
AT_PARSER_CHECK([./input], 1, [],
-[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\377\001\377", expecting "a"
+[syntax error, unexpected \'?"
+ ??!, expecting a
])
AT_CLEANUP
};
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"",
- "\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0
+ "$end", "error", "$undefined", "if", "const", "then", "else", "$accept",
+ "statement", "struct_stat", "if", "else", 0
};
static const unsigned short int yytoknum[] =
{