* ch-exp.y (match_string_literal): Allow a zero-length string.

* ch-lang.c (chill_printstr):  Don't print zero-length string funny.
This commit is contained in:
Per Bothner 1994-01-23 20:42:00 +00:00
parent 5fd5199353
commit 96b6b765fc
3 changed files with 8 additions and 4 deletions

View file

@ -1,3 +1,8 @@
Fri Jan 21 19:10:44 1994 Per Bothner (bothner@kalessin.cygnus.com)
* ch-exp.y (match_string_literal): Allow a zero-length string.
* ch-lang.c (chill_printstr): Don't print zero-length string funny.
Sat Jan 22 17:08:48 1994 Jim Kingdon (kingdon@lioth.cygnus.com) Sat Jan 22 17:08:48 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
* i386aix-nat.c (i386_float_info): Reverse order of registers before * i386aix-nat.c (i386_float_info): Reverse order of registers before

View file

@ -1335,7 +1335,7 @@ match_float_literal ()
return (0); return (0);
} }
/* Recognize a string literal. A string literal is a nonzero sequence /* Recognize a string literal. A string literal is a sequence
of characters enclosed in matching single or double quotes, except that of characters enclosed in matching single or double quotes, except that
a single character inside single quotes is a character literal, which a single character inside single quotes is a character literal, which
we reject as a string literal. To embed the terminator character inside we reject as a string literal. To embed the terminator character inside
@ -1363,7 +1363,6 @@ match_string_literal ()
tempbuf[tempbufindex++] = *tokptr; tempbuf[tempbufindex++] = *tokptr;
} }
if (*tokptr == '\0' /* no terminator */ if (*tokptr == '\0' /* no terminator */
|| tempbufindex == 0 /* no string */
|| (tempbufindex == 1 && *tokptr == '\'')) /* char literal */ || (tempbufindex == 1 && *tokptr == '\'')) /* char literal */
{ {
return (0); return (0);
@ -1806,7 +1805,7 @@ yylex ()
{ {
case '\'': case '\'':
case '\"': case '\"':
/* First try to match a string literal, which is any nonzero /* First try to match a string literal, which is any
sequence of characters enclosed in matching single or double sequence of characters enclosed in matching single or double
quotes, except that a single character inside single quotes quotes, except that a single character inside single quotes
is a character literal, so we have to catch that case also. */ is a character literal, so we have to catch that case also. */

View file

@ -95,7 +95,7 @@ chill_printstr (stream, string, length, force_ellipses)
if (length == 0) if (length == 0)
{ {
chill_printchar ('\0', stream); fputs_filtered ("\"\"", stream);
return; return;
} }