(Torturing the Scanner): Add tests that @oline@,

__oline__, #output, $@, and @{ do not have unintended meanings.
This commit is contained in:
Paul Eggert
2002-11-12 07:28:25 +00:00
parent e9683cfd3d
commit 5b7f88c7f2

View File

@@ -151,13 +151,17 @@ static int yylex (void);
%% %%
/* Exercise M4 quoting: '@:>@@:>@', @<:@, 1. */ /* Exercise M4 quoting: '@:>@@:>@', @<:@, 1. */
exp: '@<:@' '\1' '\x000000000000000000000000000000000000000000000000002' exp: '@<:@' '\1' two '$' '@' '{' oline output
{ {
/* Exercise quotes in braces. */ /* Exercise quotes in braces. */
char tmp[] = "@<:@%c@:>@,\n"; char tmp[] = "@<:@%c@:>@,\n";
printf (tmp, $1); printf (tmp, $1);
} }
; ;
two: '\x000000000000000000000000000000000000000000000000000000000000000000002';
oline: '@' 'o' 'l' 'i' 'n' 'e' '@' '_' '_' 'o' 'l' 'i' 'n' 'e' '_' '_';
output: '#' 'o' 'u' 't' 'p' 'u' 't' ' ';
%% %%
/* Exercise M4 quoting: '@:>@@:>@', @<:@, 2. */ /* Exercise M4 quoting: '@:>@@:>@', @<:@, 2. */
@@ -172,7 +176,9 @@ value_t_as_yystype (value_t val)
static int static int
yylex (void) yylex (void)
{ {
static const char *input = "@<:@\1\2"; static const char *input = "@<:@\1\2$@{@oline@__@&t@oline__\
#output "; /* "
*/
yylval = value_t_as_yystype (*input); yylval = value_t_as_yystype (*input);
return *input++; return *input++;
} }