From d65b0571381bbd2ddf939a250796d445fa519535 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Mon, 10 Jul 2000 20:36:58 +0000 Subject: [PATCH] (yylex): Accept string literals with newlines in them. (process_pp_line): Handle case of string literal with newline in it in replacement text, which counts as continuing the replacement text in GNU C. --- lib-src/ebrowse.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c index 8ebe5ff8991..8dcd830793e 100644 --- a/lib-src/ebrowse.c +++ b/lib-src/ebrowse.c @@ -1462,7 +1462,7 @@ do { \ int process_pp_line () { - int in_comment = 0; + int in_comment = 0, in_string = 0; int c; char *p = yytext; @@ -1501,7 +1501,7 @@ process_pp_line () } } - while (c && (c != '\n' || in_comment)) + while (c && (c != '\n' || in_comment || in_string)) { if (c == '\\') GET (c); @@ -1515,13 +1515,15 @@ process_pp_line () if (GET (c) == '/') in_comment = 0; } + else if (c == '"') + in_string = !in_string; if (c == '\n') INCREMENT_LINENO; GET (c); } - + return c; } @@ -1579,6 +1581,7 @@ yylex () else switch (c) { case '\n': + INCREMENT_LINENO; case 'a': case 'b': case 'f': @@ -1641,7 +1644,7 @@ yylex () else yyerror ("newline in string constant"); INCREMENT_LINENO; - goto end_string; + break; default: break; -- 2.39.2