SkipToNewLine() now recognizes strings and character constants
authoreck <none@none>
Tue, 12 Dec 1989 12:41:39 +0000 (12:41 +0000)
committereck <none@none>
Tue, 12 Dec 1989 12:41:39 +0000 (12:41 +0000)
lang/cem/cpp.ansi/skip.c

index 5433b90..b890cda 100644 (file)
@@ -60,9 +60,20 @@ SkipToNewLine()
 {
        register int ch;
        register int garbage = 0;
+       register int delim = 0;
 
        while ((ch = GetChar()) != '\n') {
-               if (ch == '/') {
+               if (delim) {
+                       if (ch == '\\') {
+                               if (GetChar() == '\n') break;
+                       } else if (ch == delim) {
+                               delim = 0;
+                       }
+                       continue;
+               } else if (ch == '\'' || ch == '\"') {
+                       delim = ch;
+                       garbage = 1;
+               } else if (ch == '/') {
                        if ((ch = GetChar()) == '*' && !InputLevel) {
                                skipcomment();
                                continue;
@@ -71,6 +82,7 @@ SkipToNewLine()
                if (!is_wsp(ch))
                        garbage = 1;
        }
+       if (delim) strict("unclosed opening %c", delim);
        ++LineNumber;
        return garbage;
 }