]> granicus.if.org Git - re2c/commitdiff
Integrated patch from UTF2000 wiki.
authornuffer <nuffer@642ea486-5414-0410-9d7f-a0204ed87703>
Sat, 31 Jan 2004 17:42:53 +0000 (17:42 +0000)
committernuffer <nuffer@642ea486-5414-0410-9d7f-a0204ed87703>
Sat, 31 Jan 2004 17:42:53 +0000 (17:42 +0000)
bootstrap/scanner.cc
code.cc
scanner.cc

index af2d4888573077f08797bd0798aa9eb23446d83d..9ed57b1f2c20ebf3543ccdfcd615569d1bdad38e 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.2 on Sat Jan 31 10:36:26 2004 */
+/* Generated by re2c 0.9.2 on Sat Jan 31 10:43:47 2004 */
 #line 1 "scanner.re"
 /* $Id$ */
 #include <stdlib.h>
@@ -83,44 +83,53 @@ yy0:
        yych = *YYCURSOR;
        if(yych == '\n')        goto yy4;
        if(yych != '/') goto yy6;
+       goto yy2;
 yy2:   yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych == '*') goto yy7;
+       goto yy3;
 yy3:
 #line 88 "scanner.re"
 { goto echo; }
-#line 24 "re2c-output.c"
+#line 26 "re2c-output.c"
 yy4:   yych = *++YYCURSOR;
+       goto yy5;
 yy5:
 #line 84 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  out.write((const char*)(tok), cursor - tok);
                                  tok = pos = cursor; cline++;
                                  goto echo; }
-#line 32 "re2c-output.c"
+#line 35 "re2c-output.c"
 yy6:   yych = *++YYCURSOR;
        goto yy3;
 yy7:   yych = *++YYCURSOR;
        if(yych == '!') goto yy9;
+       goto yy8;
 yy8:   YYCURSOR = YYMARKER;
        switch(yyaccept){
        case 0: goto yy3;
        }
 yy9:   yych = *++YYCURSOR;
        if(yych != 'r') goto yy8;
+       goto yy10;
 yy10:  yych = *++YYCURSOR;
        if(yych != 'e') goto yy8;
+       goto yy11;
 yy11:  yych = *++YYCURSOR;
        if(yych != '2') goto yy8;
+       goto yy12;
 yy12:  yych = *++YYCURSOR;
        if(yych != 'c') goto yy8;
+       goto yy13;
 yy13:  yych = *++YYCURSOR;
+       goto yy14;
 yy14:
 #line 81 "scanner.re"
 { out.write((const char*)(tok), &cursor[-7] - tok);
                                  tok = cursor;
                                  RETURN(1); }
-#line 55 "re2c-output.c"
+#line 64 "re2c-output.c"
 }
 #line 89 "scanner.re"
 
@@ -136,7 +145,7 @@ scan:
     tline = cline;
     tok = cursor;
 
-#line 59 "re2c-output.c"
+#line 68 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -191,39 +200,44 @@ yy15:
                }
        }
 yy17:  yych = *++YYCURSOR;
+       goto yy18;
 yy18:
 #line 102 "scanner.re"
 { depth = 1;
                                  goto code;
                                }
-#line 119 "re2c-output.c"
+#line 129 "re2c-output.c"
 yy19:  yych = *++YYCURSOR;
        if(yych == '*') goto yy54;
+       goto yy20;
 yy20:
 #line 121 "scanner.re"
 { RETURN(*tok); }
-#line 125 "re2c-output.c"
+#line 136 "re2c-output.c"
 yy21:  yych = *++YYCURSOR;
        if(yych == '/') goto yy52;
+       goto yy22;
 yy22:
 #line 123 "scanner.re"
 { yylval.op = *tok;
                                  RETURN(CLOSE); }
-#line 132 "re2c-output.c"
+#line 144 "re2c-output.c"
 yy23:  yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych != '\n')        goto yy48;
+       goto yy24;
 yy24:
 #line 114 "scanner.re"
 { fatal("bad string"); }
-#line 139 "re2c-output.c"
+#line 152 "re2c-output.c"
 yy25:  yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych != '\n')        goto yy42;
+       goto yy26;
 yy26:
 #line 119 "scanner.re"
 { fatal("bad character constant"); }
-#line 146 "re2c-output.c"
+#line 160 "re2c-output.c"
 yy27:  yych = *++YYCURSOR;
        goto yy20;
 yy28:  yych = *++YYCURSOR;
@@ -235,37 +249,41 @@ yy30:
 { cur = cursor;
                                  yylval.symbol = Symbol::find(token());
                                  return ID; }
-#line 158 "re2c-output.c"
+#line 172 "re2c-output.c"
 yy31:  yych = *++YYCURSOR;
        goto yy38;
 yy32:
 #line 130 "scanner.re"
 { goto scan; }
-#line 164 "re2c-output.c"
+#line 178 "re2c-output.c"
 yy33:  yych = *++YYCURSOR;
+       goto yy34;
 yy34:
 #line 132 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  pos = cursor; cline++;
                                  goto scan;
                                }
-#line 172 "re2c-output.c"
+#line 187 "re2c-output.c"
 yy35:  yych = *++YYCURSOR;
+       goto yy36;
 yy36:
 #line 137 "scanner.re"
 { cerr << "unexpected character: " << *tok << endl;
                                  goto scan;
                                }
-#line 179 "re2c-output.c"
+#line 195 "re2c-output.c"
 yy37:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy38;
 yy38:  if(yych == '\t')        goto yy37;
        if(yych == ' ') goto yy37;
        goto yy32;
 yy39:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy40;
 yy40:  if(yych <= '@'){
                if(yych <= '/') goto yy30;
                if(yych <= '9') goto yy39;
@@ -279,8 +297,10 @@ yy40:      if(yych <= '@'){
 yy41:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy42;
 yy42:  if(yych <= '['){
                if(yych != '\n')        goto yy41;
+               goto yy43;
        } else {
                if(yych <= '\\')        goto yy44;
                if(yych <= ']') goto yy45;
@@ -297,21 +317,24 @@ yy44:     ++YYCURSOR;
        if(yych == '\n')        goto yy43;
        goto yy41;
 yy45:  yych = *++YYCURSOR;
+       goto yy46;
 yy46:
 #line 116 "scanner.re"
 { cur = cursor;
                                  yylval.regexp = ranToRE(token());
                                  return RANGE; }
-#line 225 "re2c-output.c"
+#line 246 "re2c-output.c"
 yy47:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy48;
 yy48:  if(yych <= '!'){
                if(yych == '\n')        goto yy43;
                goto yy47;
        } else {
                if(yych <= '"') goto yy50;
                if(yych != '\\')        goto yy47;
+               goto yy49;
        }
 yy49:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -319,31 +342,34 @@ yy49:     ++YYCURSOR;
        if(yych == '\n')        goto yy43;
        goto yy47;
 yy50:  yych = *++YYCURSOR;
+       goto yy51;
 yy51:
 #line 111 "scanner.re"
 { cur = cursor;
                                  yylval.regexp = strToRE(token());
                                  return STRING; }
-#line 247 "re2c-output.c"
+#line 271 "re2c-output.c"
 yy52:  yych = *++YYCURSOR;
+       goto yy53;
 yy53:
 #line 108 "scanner.re"
 { tok = cursor;
                                  RETURN(0); }
-#line 253 "re2c-output.c"
+#line 278 "re2c-output.c"
 yy54:  yych = *++YYCURSOR;
+       goto yy55;
 yy55:
 #line 105 "scanner.re"
 { depth = 1;
                                  goto comment; }
-#line 259 "re2c-output.c"
+#line 285 "re2c-output.c"
 }
 #line 140 "scanner.re"
 
 
 code:
 
-#line 263 "re2c-output.c"
+#line 289 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -367,9 +393,11 @@ yy56:
                        goto yy60;
                } else {
                        if(yych != '}') goto yy64;
+                       goto yy58;
                }
        }
 yy58:  yych = *++YYCURSOR;
+       goto yy59;
 yy59:
 #line 144 "scanner.re"
 { if(--depth == 0){
@@ -378,26 +406,29 @@ yy59:
                                        return CODE;
                                  }
                                  goto code; }
-#line 298 "re2c-output.c"
+#line 326 "re2c-output.c"
 yy60:  yych = *++YYCURSOR;
+       goto yy61;
 yy61:
 #line 150 "scanner.re"
 { ++depth;
                                  goto code; }
-#line 304 "re2c-output.c"
+#line 333 "re2c-output.c"
 yy62:  yych = *++YYCURSOR;
+       goto yy63;
 yy63:
 #line 152 "scanner.re"
 { if(cursor == eof) fatal("missing '}'");
                                  pos = cursor; cline++;
                                  goto code;
                                }
-#line 312 "re2c-output.c"
+#line 342 "re2c-output.c"
 yy64:  yych = *++YYCURSOR;
+       goto yy65;
 yy65:
 #line 156 "scanner.re"
 { goto code; }
-#line 317 "re2c-output.c"
+#line 348 "re2c-output.c"
 yy66:  yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych == '\n')        goto yy65;
@@ -409,8 +440,10 @@ yy67:      yyaccept = 0;
 yy68:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy69;
 yy69:  if(yych <= '&'){
                if(yych != '\n')        goto yy68;
+               goto yy70;
        } else {
                if(yych <= '\'')        goto yy64;
                if(yych == '\\')        goto yy71;
@@ -428,12 +461,14 @@ yy71:     ++YYCURSOR;
 yy72:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy73;
 yy73:  if(yych <= '!'){
                if(yych == '\n')        goto yy70;
                goto yy72;
        } else {
                if(yych <= '"') goto yy64;
                if(yych != '\\')        goto yy72;
+               goto yy74;
        }
 yy74:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -446,7 +481,7 @@ yy74:       ++YYCURSOR;
 
 comment:
 
-#line 363 "re2c-output.c"
+#line 398 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -465,37 +500,41 @@ yy75:
        }
 yy77:  yych = *++YYCURSOR;
        if(yych == '/') goto yy85;
+       goto yy78;
 yy78:
 #line 171 "scanner.re"
 { goto comment; }
-#line 385 "re2c-output.c"
+#line 421 "re2c-output.c"
 yy79:  yych = *++YYCURSOR;
        if(yych == '*') goto yy83;
        goto yy78;
 yy80:  yych = *++YYCURSOR;
+       goto yy81;
 yy81:
 #line 167 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  tok = pos = cursor; cline++;
                                  goto comment;
                                }
-#line 396 "re2c-output.c"
+#line 433 "re2c-output.c"
 yy82:  yych = *++YYCURSOR;
        goto yy78;
 yy83:  yych = *++YYCURSOR;
+       goto yy84;
 yy84:
 #line 165 "scanner.re"
 { ++depth;
                                  goto comment; }
-#line 404 "re2c-output.c"
+#line 442 "re2c-output.c"
 yy85:  yych = *++YYCURSOR;
+       goto yy86;
 yy86:
 #line 161 "scanner.re"
 { if(--depth == 0)
                                        goto scan;
                                    else
                                        goto comment; }
-#line 412 "re2c-output.c"
+#line 451 "re2c-output.c"
 }
 #line 172 "scanner.re"
 
diff --git a/code.cc b/code.cc
index f114d465310d0b5766440b3bef2440bfce860187..b6331d18d6a7972c7bea3f885f4fdd4e3eb556aa 100644 (file)
--- a/code.cc
+++ b/code.cc
@@ -279,6 +279,7 @@ void doLinear(ostream &o, uint i, Span *s, uint n, State *next){
        while(n >= 3 && s[2].to == bg && (s[1].ub - s[0].ub) == 1){
            if(s[1].to == next && n == 3){
                indent(o, i); genIf(o, "!=", s[0].ub); genGoTo(o, bg);
+               indent(o, i); genGoTo(o, next);
                return;
            } else {
                indent(o, i); genIf(o, "==", s[0].ub); genGoTo(o, s[1].to);
@@ -286,18 +287,20 @@ void doLinear(ostream &o, uint i, Span *s, uint n, State *next){
            n -= 2; s += 2;
        }
        if(n == 1){
-           if(bg != next){
+//         if(bg != next){
                indent(o, i); genGoTo(o, s[0].to);
-           }
+//         }
            return;
        } else if(n == 2 && bg == next){
            indent(o, i); genIf(o, ">=", s[0].ub); genGoTo(o, s[1].to);
+           indent(o, i); genGoTo(o, next);
            return;
        } else {
            indent(o, i); genIf(o, "<=", s[0].ub - 1); genGoTo(o, bg);
            n -= 1; s += 1;
        }
     }
+    indent(o, i); genGoTo(o, next);
 }
 
 void Go::genLinear(ostream &o, State *next){
index af2d4888573077f08797bd0798aa9eb23446d83d..9ed57b1f2c20ebf3543ccdfcd615569d1bdad38e 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.2 on Sat Jan 31 10:36:26 2004 */
+/* Generated by re2c 0.9.2 on Sat Jan 31 10:43:47 2004 */
 #line 1 "scanner.re"
 /* $Id$ */
 #include <stdlib.h>
@@ -83,44 +83,53 @@ yy0:
        yych = *YYCURSOR;
        if(yych == '\n')        goto yy4;
        if(yych != '/') goto yy6;
+       goto yy2;
 yy2:   yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych == '*') goto yy7;
+       goto yy3;
 yy3:
 #line 88 "scanner.re"
 { goto echo; }
-#line 24 "re2c-output.c"
+#line 26 "re2c-output.c"
 yy4:   yych = *++YYCURSOR;
+       goto yy5;
 yy5:
 #line 84 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  out.write((const char*)(tok), cursor - tok);
                                  tok = pos = cursor; cline++;
                                  goto echo; }
-#line 32 "re2c-output.c"
+#line 35 "re2c-output.c"
 yy6:   yych = *++YYCURSOR;
        goto yy3;
 yy7:   yych = *++YYCURSOR;
        if(yych == '!') goto yy9;
+       goto yy8;
 yy8:   YYCURSOR = YYMARKER;
        switch(yyaccept){
        case 0: goto yy3;
        }
 yy9:   yych = *++YYCURSOR;
        if(yych != 'r') goto yy8;
+       goto yy10;
 yy10:  yych = *++YYCURSOR;
        if(yych != 'e') goto yy8;
+       goto yy11;
 yy11:  yych = *++YYCURSOR;
        if(yych != '2') goto yy8;
+       goto yy12;
 yy12:  yych = *++YYCURSOR;
        if(yych != 'c') goto yy8;
+       goto yy13;
 yy13:  yych = *++YYCURSOR;
+       goto yy14;
 yy14:
 #line 81 "scanner.re"
 { out.write((const char*)(tok), &cursor[-7] - tok);
                                  tok = cursor;
                                  RETURN(1); }
-#line 55 "re2c-output.c"
+#line 64 "re2c-output.c"
 }
 #line 89 "scanner.re"
 
@@ -136,7 +145,7 @@ scan:
     tline = cline;
     tok = cursor;
 
-#line 59 "re2c-output.c"
+#line 68 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -191,39 +200,44 @@ yy15:
                }
        }
 yy17:  yych = *++YYCURSOR;
+       goto yy18;
 yy18:
 #line 102 "scanner.re"
 { depth = 1;
                                  goto code;
                                }
-#line 119 "re2c-output.c"
+#line 129 "re2c-output.c"
 yy19:  yych = *++YYCURSOR;
        if(yych == '*') goto yy54;
+       goto yy20;
 yy20:
 #line 121 "scanner.re"
 { RETURN(*tok); }
-#line 125 "re2c-output.c"
+#line 136 "re2c-output.c"
 yy21:  yych = *++YYCURSOR;
        if(yych == '/') goto yy52;
+       goto yy22;
 yy22:
 #line 123 "scanner.re"
 { yylval.op = *tok;
                                  RETURN(CLOSE); }
-#line 132 "re2c-output.c"
+#line 144 "re2c-output.c"
 yy23:  yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych != '\n')        goto yy48;
+       goto yy24;
 yy24:
 #line 114 "scanner.re"
 { fatal("bad string"); }
-#line 139 "re2c-output.c"
+#line 152 "re2c-output.c"
 yy25:  yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych != '\n')        goto yy42;
+       goto yy26;
 yy26:
 #line 119 "scanner.re"
 { fatal("bad character constant"); }
-#line 146 "re2c-output.c"
+#line 160 "re2c-output.c"
 yy27:  yych = *++YYCURSOR;
        goto yy20;
 yy28:  yych = *++YYCURSOR;
@@ -235,37 +249,41 @@ yy30:
 { cur = cursor;
                                  yylval.symbol = Symbol::find(token());
                                  return ID; }
-#line 158 "re2c-output.c"
+#line 172 "re2c-output.c"
 yy31:  yych = *++YYCURSOR;
        goto yy38;
 yy32:
 #line 130 "scanner.re"
 { goto scan; }
-#line 164 "re2c-output.c"
+#line 178 "re2c-output.c"
 yy33:  yych = *++YYCURSOR;
+       goto yy34;
 yy34:
 #line 132 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  pos = cursor; cline++;
                                  goto scan;
                                }
-#line 172 "re2c-output.c"
+#line 187 "re2c-output.c"
 yy35:  yych = *++YYCURSOR;
+       goto yy36;
 yy36:
 #line 137 "scanner.re"
 { cerr << "unexpected character: " << *tok << endl;
                                  goto scan;
                                }
-#line 179 "re2c-output.c"
+#line 195 "re2c-output.c"
 yy37:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy38;
 yy38:  if(yych == '\t')        goto yy37;
        if(yych == ' ') goto yy37;
        goto yy32;
 yy39:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy40;
 yy40:  if(yych <= '@'){
                if(yych <= '/') goto yy30;
                if(yych <= '9') goto yy39;
@@ -279,8 +297,10 @@ yy40:      if(yych <= '@'){
 yy41:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy42;
 yy42:  if(yych <= '['){
                if(yych != '\n')        goto yy41;
+               goto yy43;
        } else {
                if(yych <= '\\')        goto yy44;
                if(yych <= ']') goto yy45;
@@ -297,21 +317,24 @@ yy44:     ++YYCURSOR;
        if(yych == '\n')        goto yy43;
        goto yy41;
 yy45:  yych = *++YYCURSOR;
+       goto yy46;
 yy46:
 #line 116 "scanner.re"
 { cur = cursor;
                                  yylval.regexp = ranToRE(token());
                                  return RANGE; }
-#line 225 "re2c-output.c"
+#line 246 "re2c-output.c"
 yy47:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy48;
 yy48:  if(yych <= '!'){
                if(yych == '\n')        goto yy43;
                goto yy47;
        } else {
                if(yych <= '"') goto yy50;
                if(yych != '\\')        goto yy47;
+               goto yy49;
        }
 yy49:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -319,31 +342,34 @@ yy49:     ++YYCURSOR;
        if(yych == '\n')        goto yy43;
        goto yy47;
 yy50:  yych = *++YYCURSOR;
+       goto yy51;
 yy51:
 #line 111 "scanner.re"
 { cur = cursor;
                                  yylval.regexp = strToRE(token());
                                  return STRING; }
-#line 247 "re2c-output.c"
+#line 271 "re2c-output.c"
 yy52:  yych = *++YYCURSOR;
+       goto yy53;
 yy53:
 #line 108 "scanner.re"
 { tok = cursor;
                                  RETURN(0); }
-#line 253 "re2c-output.c"
+#line 278 "re2c-output.c"
 yy54:  yych = *++YYCURSOR;
+       goto yy55;
 yy55:
 #line 105 "scanner.re"
 { depth = 1;
                                  goto comment; }
-#line 259 "re2c-output.c"
+#line 285 "re2c-output.c"
 }
 #line 140 "scanner.re"
 
 
 code:
 
-#line 263 "re2c-output.c"
+#line 289 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -367,9 +393,11 @@ yy56:
                        goto yy60;
                } else {
                        if(yych != '}') goto yy64;
+                       goto yy58;
                }
        }
 yy58:  yych = *++YYCURSOR;
+       goto yy59;
 yy59:
 #line 144 "scanner.re"
 { if(--depth == 0){
@@ -378,26 +406,29 @@ yy59:
                                        return CODE;
                                  }
                                  goto code; }
-#line 298 "re2c-output.c"
+#line 326 "re2c-output.c"
 yy60:  yych = *++YYCURSOR;
+       goto yy61;
 yy61:
 #line 150 "scanner.re"
 { ++depth;
                                  goto code; }
-#line 304 "re2c-output.c"
+#line 333 "re2c-output.c"
 yy62:  yych = *++YYCURSOR;
+       goto yy63;
 yy63:
 #line 152 "scanner.re"
 { if(cursor == eof) fatal("missing '}'");
                                  pos = cursor; cline++;
                                  goto code;
                                }
-#line 312 "re2c-output.c"
+#line 342 "re2c-output.c"
 yy64:  yych = *++YYCURSOR;
+       goto yy65;
 yy65:
 #line 156 "scanner.re"
 { goto code; }
-#line 317 "re2c-output.c"
+#line 348 "re2c-output.c"
 yy66:  yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych == '\n')        goto yy65;
@@ -409,8 +440,10 @@ yy67:      yyaccept = 0;
 yy68:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy69;
 yy69:  if(yych <= '&'){
                if(yych != '\n')        goto yy68;
+               goto yy70;
        } else {
                if(yych <= '\'')        goto yy64;
                if(yych == '\\')        goto yy71;
@@ -428,12 +461,14 @@ yy71:     ++YYCURSOR;
 yy72:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       goto yy73;
 yy73:  if(yych <= '!'){
                if(yych == '\n')        goto yy70;
                goto yy72;
        } else {
                if(yych <= '"') goto yy64;
                if(yych != '\\')        goto yy72;
+               goto yy74;
        }
 yy74:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -446,7 +481,7 @@ yy74:       ++YYCURSOR;
 
 comment:
 
-#line 363 "re2c-output.c"
+#line 398 "re2c-output.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -465,37 +500,41 @@ yy75:
        }
 yy77:  yych = *++YYCURSOR;
        if(yych == '/') goto yy85;
+       goto yy78;
 yy78:
 #line 171 "scanner.re"
 { goto comment; }
-#line 385 "re2c-output.c"
+#line 421 "re2c-output.c"
 yy79:  yych = *++YYCURSOR;
        if(yych == '*') goto yy83;
        goto yy78;
 yy80:  yych = *++YYCURSOR;
+       goto yy81;
 yy81:
 #line 167 "scanner.re"
 { if(cursor == eof) RETURN(0);
                                  tok = pos = cursor; cline++;
                                  goto comment;
                                }
-#line 396 "re2c-output.c"
+#line 433 "re2c-output.c"
 yy82:  yych = *++YYCURSOR;
        goto yy78;
 yy83:  yych = *++YYCURSOR;
+       goto yy84;
 yy84:
 #line 165 "scanner.re"
 { ++depth;
                                  goto comment; }
-#line 404 "re2c-output.c"
+#line 442 "re2c-output.c"
 yy85:  yych = *++YYCURSOR;
+       goto yy86;
 yy86:
 #line 161 "scanner.re"
 { if(--depth == 0)
                                        goto scan;
                                    else
                                        goto comment; }
-#line 412 "re2c-output.c"
+#line 451 "re2c-output.c"
 }
 #line 172 "scanner.re"