* tests/regression.at (Token definitions): Don't rely on

AT_PARSER_CHECK for data that contains backslashes.  It currently
uses 'echo', and 'echo' isn't portable if its argument contains
backslashes.  Problem found on OpenBSD 3.4.  Also, do not assume
that the byte '\0xff' is not printable in the C locale; it is,
under OpenBSD 3.4 (!).  Luckily, '\0x80' through '\0x9e' are
not printable, so use '\0x81' to test.
This commit is contained in:
Paul Eggert
2005-07-25 06:36:13 +00:00
parent d53ae497dc
commit 3d54b57635
2 changed files with 14 additions and 5 deletions

View File

@@ -2,6 +2,14 @@
* NEWS: Version 2.0b.
* tests/regression.at (Token definitions): Don't rely on
AT_PARSER_CHECK for data that contains backslashes. It currently
uses 'echo', and 'echo' isn't portable if its argument contains
backslashes. Problem found on OpenBSD 3.4. Also, do not assume
that the byte '\0xff' is not printable in the C locale; it is,
under OpenBSD 3.4 (!). Luckily, '\0x80' through '\0x9e' are
not printable, so use '\0x81' to test.
* data/glr.c (YYOPTIONAL_LOC): Define even if it's not a recent
version of GCC, since the macro is used with non-GCC compilers.

View File

@@ -345,9 +345,9 @@ int yylex (void);
%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 "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
%%
exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff??!";
exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
%%
void
yyerror (char const *s)
@@ -370,9 +370,10 @@ main (void)
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
])
AT_DATA([experr],
[[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\201\001\201?\?!", expecting a
]])
AT_PARSER_CHECK([./input], 1, [], [experr])
AT_CLEANUP