(Torturing the Scanner): Surround the backslash-newline tests with

"#if 0", to make it less likely that we'll run into compiler bugs.
Bring back solitary \ inside comment, but add a closing comment to
work around HP C bug.  Don't test backslash-newline in C character
constant.  This should fix the input.at bug reported by Nelson
H. F. Beebe in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
This commit is contained in:
Paul Eggert
2002-11-14 22:53:47 +00:00
parent f32b346d84
commit dda7a53e4d

View File

@@ -97,18 +97,33 @@ AT_DATA_GRAMMAR([input.y],
/* This is seen in GCC: a %{ and %} in middle of a comment. */ /* This is seen in GCC: a %{ and %} in middle of a comment. */
const char *foo = "So %{ and %} can be here too."; const char *foo = "So %{ and %} can be here too.";
#ifdef __STDC__ #if 0
/* These examples test Bison while not stressing C compilers too much.
Many C compilers mishandle backslash-newlines, so this part of the
test is inside "#if 0". The comment and string are written so that
the "#endif" will be seen regardless of the C compiler bugs that we
know about, namely:
HP C (as of late 2002) mishandles *\[newline]\[newline]/ within a
comment.
The Apple Darwin compiler (as of late 2002) mishandles
\\[newline]' within a character constant.
*/
/\ /\
* A comment with backslash-newlines in it. %{ %} *\ * A comment with backslash-newlines in it. %} *\
\
/ /
/* { Close the above comment, if the C compiler mishandled it. */
char str[] = "\\ char str[] = "\\
" A string with backslash-newlines in it %{ %} \\ " A string with backslash-newlines in it %{ %} \\
\
""; "";
char apostrophe = '\\ char apostrophe = '\'';
'\
';
#endif #endif
#include <stdio.h> #include <stdio.h>