changeset 30138:d00767029418

(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.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 10 Jul 2000 20:36:58 +0000
parents 4a3808257cf4
children 1311deba5ed3
files lib-src/ebrowse.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/ebrowse.c	Mon Jul 10 20:32:14 2000 +0000
+++ b/lib-src/ebrowse.c	Mon Jul 10 20:36:58 2000 +0000
@@ -1462,7 +1462,7 @@
 int
 process_pp_line ()
 {
-  int in_comment = 0;
+  int in_comment = 0, in_string = 0;
   int c;
   char *p = yytext;
 
@@ -1501,7 +1501,7 @@
 	}
     }
   
-  while (c && (c != '\n' || in_comment))
+  while (c && (c != '\n' || in_comment || in_string))
     {
       if (c == '\\')
 	GET (c);
@@ -1515,13 +1515,15 @@
 	  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 @@
                   else switch (c)
                     {
                     case '\n':
+		      INCREMENT_LINENO;
                     case 'a':
                     case 'b':
                     case 'f':
@@ -1641,7 +1644,7 @@
                   else
                     yyerror ("newline in string constant");
                   INCREMENT_LINENO;
-                  goto end_string;
+                  break;
 
                 default:
                   break;