mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* NEWS: Bison-generated C parsers no longer quote literal strings
associated with tokens. * src/output.c (prepare_symbols): Don't escape strings, since users don't want to see C escapes. * tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes in diagnostics. * tests/regression.at (Token definitions, Web2c Actions): Likewise.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,3 +1,13 @@
|
|||||||
|
2005-04-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
|
* NEWS: Bison-generated C parsers no longer quote literal strings
|
||||||
|
associated with tokens.
|
||||||
|
* src/output.c (prepare_symbols): Don't escape strings,
|
||||||
|
since users don't want to see C escapes.
|
||||||
|
* tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes
|
||||||
|
in diagnostics.
|
||||||
|
* tests/regression.at (Token definitions, Web2c Actions): Likewise.
|
||||||
|
|
||||||
2005-04-16 Paul Eggert <eggert@cs.ucla.edu>
|
2005-04-16 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
* tests/torture.at (AT_INCREASE_DATA_SIZE): Skip the test if
|
* tests/torture.at (AT_INCREASE_DATA_SIZE): Skip the test if
|
||||||
|
|||||||
6
NEWS
6
NEWS
@@ -7,6 +7,12 @@ Changes in version 2.0a, ????-??-??:
|
|||||||
English to the user's language, e.g., _("syntax error"). By default,
|
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.
|
_ 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:
|
Changes in version 2.0, 2004-12-25:
|
||||||
|
|
||||||
* Possibly-incompatible changes
|
* Possibly-incompatible changes
|
||||||
|
|||||||
@@ -162,7 +162,10 @@ prepare_symbols (void)
|
|||||||
int j = 2;
|
int j = 2;
|
||||||
for (i = 0; i < nsyms; i++)
|
for (i = 0; i < nsyms; i++)
|
||||||
{
|
{
|
||||||
const char *cp = quotearg_style (c_quoting_style, symbols[i]->tag);
|
char const *tag = symbols[i]->tag;
|
||||||
|
char const *cp = (*tag == '"'
|
||||||
|
? tag
|
||||||
|
: quotearg_style (c_quoting_style, tag));
|
||||||
/* Width of the next token, including the two quotes, the
|
/* Width of the next token, including the two quotes, the
|
||||||
comma and the space. */
|
comma and the space. */
|
||||||
int width = strlen (cp) + 2;
|
int width = strlen (cp) + 2;
|
||||||
|
|||||||
@@ -467,9 +467,9 @@ _AT_CHECK_CALC([$1],
|
|||||||
|
|
||||||
# Some syntax errors.
|
# Some syntax errors.
|
||||||
_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13],
|
_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],
|
_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],
|
_AT_CHECK_CALC_ERROR([$1], [1], [error], [5],
|
||||||
[1.0: syntax error, unexpected $undefined])
|
[1.0: syntax error, unexpected $undefined])
|
||||||
_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26],
|
_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26],
|
||||||
@@ -481,7 +481,7 @@ _AT_CHECK_CALC_ERROR([$1], [1],
|
|||||||
[2.0: syntax error, unexpected '+'])
|
[2.0: syntax error, unexpected '+'])
|
||||||
# Exercise error messages with EOF: work on an empty file.
|
# Exercise error messages with EOF: work on an empty file.
|
||||||
_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
|
_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,
|
# Exercise the error token: without it, we die at the first error,
|
||||||
# hence be sure to
|
# hence be sure to
|
||||||
@@ -502,20 +502,20 @@ _AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
|
|||||||
_AT_CHECK_CALC_ERROR([$1], [0],
|
_AT_CHECK_CALC_ERROR([$1], [0],
|
||||||
[() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1],
|
[() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1],
|
||||||
[188],
|
[188],
|
||||||
[1.1: 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.17: syntax error, unexpected ')', expecting number or '-' or '(' or '!'
|
||||||
1.22: 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.40: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
|
||||||
calc: error: 4444 != 1])
|
calc: error: 4444 != 1])
|
||||||
|
|
||||||
# The same, but this time exercising explicitly triggered syntax errors.
|
# The same, but this time exercising explicitly triggered syntax errors.
|
||||||
# POSIX says the look-ahead causing the error should not be discarded.
|
# POSIX says the look-ahead causing the error should not be discarded.
|
||||||
_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75],
|
_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])
|
calc: error: 2222 != 1])
|
||||||
_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85],
|
_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85],
|
||||||
[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
|
[1.3: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
|
||||||
1.11: syntax error, unexpected "number"
|
1.11: syntax error, unexpected number
|
||||||
calc: error: 2222 != 1])
|
calc: error: 2222 != 1])
|
||||||
AT_BISON_OPTION_POPDEFS
|
AT_BISON_OPTION_POPDEFS
|
||||||
|
|
||||||
|
|||||||
@@ -324,9 +324,9 @@ int yylex (void);
|
|||||||
%token B_TOKEN "b"
|
%token B_TOKEN "b"
|
||||||
%token C_TOKEN 'c'
|
%token C_TOKEN 'c'
|
||||||
%token 'd' D_TOKEN
|
%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
|
void
|
||||||
yyerror (char const *s)
|
yyerror (char const *s)
|
||||||
@@ -350,7 +350,8 @@ main (void)
|
|||||||
AT_CHECK([bison -o input.c input.y])
|
AT_CHECK([bison -o input.c input.y])
|
||||||
AT_COMPILE([input])
|
AT_COMPILE([input])
|
||||||
AT_PARSER_CHECK([./input], 1, [],
|
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
|
AT_CLEANUP
|
||||||
|
|
||||||
@@ -634,8 +635,8 @@ static const unsigned char yyrline[] =
|
|||||||
};
|
};
|
||||||
static const char *const yytname[] =
|
static const char *const yytname[] =
|
||||||
{
|
{
|
||||||
"$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"",
|
"$end", "error", "$undefined", "if", "const", "then", "else", "$accept",
|
||||||
"\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0
|
"statement", "struct_stat", "if", "else", 0
|
||||||
};
|
};
|
||||||
static const unsigned short int yytoknum[] =
|
static const unsigned short int yytoknum[] =
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user