]> granicus.if.org Git - re2c/commitdiff
Fixed bug #116: "empty string with non-empty trailing context consumes code units".
authorUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Oct 2015 18:25:00 +0000 (19:25 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Oct 2015 18:25:00 +0000 (19:25 +0100)
Prior to this commit backup of trailing context position was done
before advancing input position and re2c either had to emit
    YYCTXMARKER = YYCURSOR + 1;
(with default input API), or
    YYRESTORECTX ();
    YYSKIP ();
(with custom input API).

The problem is that sometimes initial state doesn't sdvance input position
at all. Now re2c emits context backup after advancing input position and it
no longer needs '+1' or 'YYSKIP' hacks. It always backups the correct position.

21 files changed:
re2c/src/codegen/emit_action.cc
re2c/src/codegen/emit_dfa.cc
re2c/src/codegen/input_api.cc
re2c/test/bug116.c [new file with mode: 0644]
re2c/test/bug116.re [new file with mode: 0644]
re2c/test/config10.c
re2c/test/config8.c
re2c/test/config9.b.c
re2c/test/ctx.b.c
re2c/test/ctx.c
re2c/test/ctx.s.c
re2c/test/input_custom_default.--input(custom).c
re2c/test/input_custom_fgetc.--input(custom).c
re2c/test/input_custom_istringstream.--input(custom).c
re2c/test/modula.c
re2c/test/rexx.--empty-class(match-empty).c
re2c/test/rexx.--empty-class(match-none).c
re2c/test/rexx.c
re2c/test/scanner_re2c.bi.c
re2c/test/scanner_re2c_default.bi.c
re2c/test/strip_003.b.c

index e05eccd25312789399504f114ef973e8e05f5877..0c20343f3bf3815606db4c8214d5c650a9278d35 100644 (file)
@@ -51,6 +51,10 @@ void emit_action
                        emit_rule (o, ind, s, action.info.rule, condName, name);
                        break;
        }
+       if (s->isPreCtxt && opts->target != opt_t::DOT)
+       {
+               o << opts->input_api.stmt_backupctx (ind);
+       }
 }
 
 void emit_match (OutputFile & o, uint32_t ind, bool & readCh, const State * const s)
index 0088c2305298837d5301a48dbbab389f36d48127..869dc667b3b44f600c41e81c18739f8dc8879a6f 100644 (file)
@@ -52,10 +52,6 @@ void emit_state (OutputFile & o, uint32_t ind, const State * s, bool used_label)
                {
                        o << indent(ind) << opts->yydebug << "(" << s->label << ", " << opts->input_api.expr_peek () << ");\n";
                }
-               if (s->isPreCtxt)
-               {
-                       o << opts->input_api.stmt_backupctx (ind);
-               }
        }
 }
 
index 6c7f52aa47b818bc6c97ffcce783c6f74922c70d..73862a324c71f760681d8331a7fb10ee316c125e 100644 (file)
@@ -82,8 +82,7 @@ std::string InputAPI::stmt_backupctx (uint32_t ind) const
        switch (type_)
        {
                case DEFAULT:
-                       // backward compatibility: '+1' here instead of '++YYCURSOR;' in stmt_restorectx
-                       s = opts->yyctxmarker + " = " + opts->yycursor + " + 1";
+                       s = opts->yyctxmarker + " = " + opts->yycursor;
                        break;
                case CUSTOM:
                        s = opts->yybackupctx + " ()";
@@ -113,11 +112,10 @@ std::string InputAPI::stmt_restorectx (uint32_t ind) const
        switch (type_)
        {
                case DEFAULT:
-                       // backward compatibility: 'no ++YYCURSOR;' here; instead '+1' in stmt_backupctx
                        s = indent (ind) + opts->yycursor + " = " + opts->yyctxmarker + ";\n";
                        break;
                case CUSTOM:
-                       s = indent (ind) + opts->yyrestorectx + " ();\n" + stmt_skip (ind);
+                       s = indent (ind) + opts->yyrestorectx + " ();\n";
                        break;
        }
        return s;
diff --git a/re2c/test/bug116.c b/re2c/test/bug116.c
new file mode 100644 (file)
index 0000000..91a6303
--- /dev/null
@@ -0,0 +1,24 @@
+re2c: warning: line 3: control flow is undefined for strings that match '[\x0-\x60\x62-\xFF]', use default rule '*' [-Wundefined-control-flow]
+/* Generated by re2c */
+#line 1 "bug116.re"
+
+#line 5 "<stdout>"
+{
+       YYCTYPE yych;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy3;
+       default:        goto yy2;
+       }
+yy2:
+yy3:
+       ++YYCURSOR;
+       YYCURSOR = YYCTXMARKER;
+#line 2 "bug116.re"
+       {}
+#line 21 "<stdout>"
+}
+#line 3 "bug116.re"
+
diff --git a/re2c/test/bug116.re b/re2c/test/bug116.re
new file mode 100644 (file)
index 0000000..56d5d71
--- /dev/null
@@ -0,0 +1,3 @@
+/*!re2c
+    "" / "a" {}
+*/
index c2ff43f4808e6f39a5edeb3cb6e9398582cdf30b..bb38b3eef0f083f5431ceaaebc205560b0b57954 100644 (file)
@@ -66,8 +66,8 @@ std:
        default:        goto xx9;
        }
 xx2:
-       s.ctx = s.cur + 1;
        ++s.cur;
+       s.ctx = s.cur;
        switch ((curr = *s.cur)) {
        case '0':
        case '2':
index 6d2345f6160f89aeaf68539e4270d0433b505bcc..b767e07ecc6d3bd8069e80ab09d44b9aae8fa377 100644 (file)
@@ -66,8 +66,8 @@ std:
        default:        goto xx9;
        }
 xx2:
-       s.ctx = s.cur + 1;
        ++s.cur;
+       s.ctx = s.cur;
        switch ((curr = *s.cur)) {
        case '0':
        case '2':
index 0e00095cdb4aa84b44ebb934e45b3cc7ef37a0f9..f7180dadef190fe11f06b6455ac6fefb21091f89 100644 (file)
@@ -99,8 +99,8 @@ std:
                        if (curr >= 'c') goto xx9;
                }
        }
-       s.ctx = s.cur + 1;
        ++s.cur;
+       s.ctx = s.cur;
        if ((curr = (unsigned char)*s.cur) <= '/') goto xx3;
        if (curr == '1') goto xx15;
        if (curr <= '9') goto xx12;
index 9371cddeabfc73a2719933bf0d543386addbecd1..ac820bb9aa85d05ed27e72b1869ab00c81d3a25f 100644 (file)
@@ -103,8 +103,8 @@ std:
                        if (yych >= 'c') goto yy9;
                }
        }
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy3;
        if (yych == '1') goto yy15;
        if (yych <= '9') goto yy12;
index f9f6a739088b93cea75de9e2643c43d198ddf56d..bdbae3c936a29c2516d7f6fbc655ad6bcaad9df8 100644 (file)
@@ -70,8 +70,8 @@ std:
        default:        goto yy9;
        }
 yy2:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch ((yych = *YYCURSOR)) {
        case '0':
        case '2':
index 9fb3025bdf3daac067aafdd569078380936fe15e..f9ab9309783f980bb7b15327c555cf1f4e192720 100644 (file)
@@ -69,8 +69,8 @@ std:
                        if (yych >= 'c') goto yy9;
                }
        }
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy3;
        if (yych == '1') goto yy15;
        if (yych <= '9') goto yy12;
index 4eff8f903f5a46ddc6fd92cbb2aadb598050b46f..93a916d78105382e01be8faf51f228fe1c2a4424 100644 (file)
@@ -104,9 +104,9 @@ yy14:
        default:        goto yy6;
        }
 yy15:
-       YYBACKUPCTX ();
        YYSKIP ();
        yych = YYPEEK ();
+       YYBACKUPCTX ();
        switch (yych) {
        case '[':       goto yy16;
        default:        goto yy6;
@@ -148,10 +148,9 @@ yy17:
 yy19:
        YYSKIP ();
        YYRESTORECTX ();
-       YYSKIP ();
 #line 15 "input_custom_default.--input(custom).re"
        { return true; }
-#line 155 "<stdout>"
+#line 154 "<stdout>"
 }
 #line 17 "input_custom_default.--input(custom).re"
 
index b67ded71ffc2be2a3146247318d178750bebc097..46b250310a87c55166d4648955abd02b86499f85 100644 (file)
@@ -113,9 +113,9 @@ yy14:
        default:        goto yy6;
        }
 yy15:
-       YYBACKUPCTX ();
        YYSKIP ();
        yych = YYPEEK ();
+       YYBACKUPCTX ();
        switch (yych) {
        case '[':       goto yy16;
        default:        goto yy6;
@@ -157,10 +157,9 @@ yy17:
 yy19:
        YYSKIP ();
        YYRESTORECTX ();
-       YYSKIP ();
 #line 24 "input_custom_fgetc.--input(custom).re"
        { return true; }
-#line 164 "<stdout>"
+#line 163 "<stdout>"
 }
 #line 26 "input_custom_fgetc.--input(custom).re"
 
index 2fea4076c8fb1d0411ceb3564c0d086fa340ad0b..f9c8b85a2c0d4a3080370e9e800ea55470d96404 100644 (file)
@@ -106,9 +106,9 @@ yy14:
        default:        goto yy6;
        }
 yy15:
-       YYBACKUPCTX ();
        YYSKIP ();
        yych = YYPEEK ();
+       YYBACKUPCTX ();
        switch (yych) {
        case '[':       goto yy16;
        default:        goto yy6;
@@ -150,10 +150,9 @@ yy17:
 yy19:
        YYSKIP ();
        YYRESTORECTX ();
-       YYSKIP ();
 #line 17 "input_custom_istringstream.--input(custom).re"
        { return true; }
-#line 157 "<stdout>"
+#line 156 "<stdout>"
 }
 #line 19 "input_custom_istringstream.--input(custom).re"
 
index b5828194a83019a222c475400687377e19ceedf3..7c36b1f1be3b437e016e51efde10ecf3e62318d2 100644 (file)
@@ -173,18 +173,18 @@ yy3:
        {RETURN(9);}
 #line 175 "<stdout>"
 yy4:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
+       YYCTXMARKER = YYCURSOR;
        goto yy292;
 yy5:
 #line 70 "modula.re"
        {RETURN(1);}
 #line 184 "<stdout>"
 yy6:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
+       YYCTXMARKER = YYCURSOR;
        goto yy278;
 yy7:
        yyaccept = 1;
@@ -4061,11 +4061,11 @@ yy276:
        {RETURN(5);}
 #line 4063 "<stdout>"
 yy277:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy278:
        switch (yych) {
        case '.':       goto yy275;
@@ -4193,11 +4193,11 @@ yy289:
        default:        goto yy276;
        }
 yy291:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy292:
        switch (yych) {
        case '.':       goto yy275;
index 4cd310b3e2617e8a00a576824097f1b2196d356e..3e1e2db225525bd0b1558dc6c5d9a302b000181c 100644 (file)
@@ -566,8 +566,8 @@ yy70:
        { RETURN(SU_LITERAL); }
 #line 567 "<stdout>"
 yy71:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
@@ -638,8 +638,8 @@ yy71:
        default:        goto yy75;
        }
 yy72:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
@@ -6857,9 +6857,9 @@ strip:
 #line 6857 "<stdout>"
 {
        YYCTYPE yych;
-       YYCTXMARKER = YYCURSOR + 1;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case ' ':       goto yy433;
index 1a66bfd6a6f421eeeef3d836aa2d1e66b6d0424d..f63359575c75404f06f03f8b73ab46cdacf216d4 100644 (file)
@@ -570,8 +570,8 @@ yy70:
        { RETURN(SU_LITERAL); }
 #line 567 "<stdout>"
 yy71:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
@@ -642,8 +642,8 @@ yy71:
        default:        goto yy75;
        }
 yy72:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
index f2c401130dc24987df7dc4d23b32933f55f6cd45..987bc4ea6a75b8a721f7a0cfd081e0ba252e3924 100644 (file)
@@ -566,8 +566,8 @@ yy70:
        { RETURN(SU_LITERAL); }
 #line 567 "<stdout>"
 yy71:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
@@ -638,8 +638,8 @@ yy71:
        default:        goto yy75;
        }
 yy72:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '!':
        case '.':
@@ -6857,9 +6857,9 @@ strip:
 #line 6857 "<stdout>"
 {
        YYCTYPE yych;
-       YYCTXMARKER = YYCURSOR + 1;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        switch (yych) {
        case '\t':
        case ' ':       goto yy433;
index 1bc26f963ce2910af611405eb2daca8448b70a8e..7771960b40e982c9f502e51f1afb69c59e721f72 100644 (file)
@@ -194,10 +194,10 @@ yy14:
        if (yych <= '9') goto yy13;
        goto yy21;
 yy20:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy21:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy20;
@@ -723,8 +723,8 @@ yy113:
                                        goto code;
                                }
 yy114:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if ((yych = *YYCURSOR) == '=') goto yy224;
 yy115:
        {
@@ -795,13 +795,13 @@ yy129:
                                        RETURN(CLOSE);
                                }
 yy131:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych == 'e') goto yy178;
        goto yy167;
 yy132:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        goto yy167;
 yy133:
        ++YYCURSOR;
@@ -908,10 +908,10 @@ yy145:
        if (yych <= '9') goto yy144;
        goto yy152;
 yy151:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy152:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy151;
@@ -988,10 +988,10 @@ yy165:
        if (yych == ' ') goto yy164;
        goto yy136;
 yy166:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy167:
        if (yybm[0+yych] & 32) {
                goto yy166;
@@ -1074,14 +1074,14 @@ yy176:
        yych = *++YYCURSOR;
        goto yy172;
 yy178:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych != '2') goto yy167;
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych != 'c') goto yy167;
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych != ':') goto yy167;
        yych = *++YYCURSOR;
        if (yych <= '^') {
@@ -1169,8 +1169,8 @@ yy189:
                                        RETURN(SETUP);
                                }
 yy191:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        goto yy193;
 yy192:
        ++YYCURSOR;
@@ -1537,9 +1537,9 @@ yy253:
                                        goto code;
                                }
 yy255:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
+       YYCTXMARKER = YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych >= '\t') goto yy270;
@@ -1693,10 +1693,10 @@ yy273:
        if (yych <= '9') goto yy265;
        goto yy280;
 yy279:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy280:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy279;
@@ -1896,10 +1896,10 @@ yy305:
        if (yych <= '9') goto yy304;
        goto yy312;
 yy311:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy312:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy311;
index 2da4371b71fcbc13ac7b7b7893c999f1088643ca..9e280fdd6901cda3826ec0d81cff44104dc4b54b 100644 (file)
@@ -485,10 +485,10 @@ yy91:
        if (yych <= '9') goto yy12;
        goto yy98;
 yy97:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy98:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy97;
@@ -778,8 +778,8 @@ yy132:
        if (yych == '/') goto yy211;
        goto yy125;
 yy133:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych == '=') goto yy205;
        goto yy113;
 yy134:
@@ -789,8 +789,8 @@ yy134:
        if (yych == '>') goto yy198;
        goto yy125;
 yy135:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        goto yy164;
 yy136:
        yyaccept = 4;
@@ -803,8 +803,8 @@ yy137:
                                        fatal("unterminated range (missing ])");
                                }
 yy138:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych == 'e') goto yy166;
        goto yy164;
 yy139:
@@ -945,10 +945,10 @@ yy161:
                                        return ID;
                                }
 yy163:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy164:
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -999,8 +999,8 @@ yy165:
                                        }
                                }
 yy166:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych == '2') goto yy176;
        goto yy164;
 yy167:
@@ -1041,11 +1041,11 @@ yy175:
        yych = *++YYCURSOR;
        goto yy170;
 yy176:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych != 'c') goto yy164;
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        if (yych != ':') goto yy164;
        yych = *++YYCURSOR;
        if (yych <= '^') {
@@ -1182,8 +1182,8 @@ yy196:
                                        RETURN(SETUP);
                                }
 yy198:
-       YYCTXMARKER = YYCURSOR + 1;
        yych = *++YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
        goto yy200;
 yy199:
        ++YYCURSOR;
@@ -1354,10 +1354,10 @@ yy228:
        if (yych <= '9') goto yy143;
        goto yy235;
 yy234:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy235:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy234;
@@ -1523,9 +1523,9 @@ yy254:
                                        goto code;
                                }
 yy255:
-       YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
+       YYCTXMARKER = YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych >= '\t') goto yy272;
@@ -1693,10 +1693,10 @@ yy275:
        if (yych <= '9') goto yy265;
        goto yy282;
 yy281:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy282:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy281;
@@ -1910,10 +1910,10 @@ yy311:
        if (yych <= '9') goto yy310;
        goto yy318;
 yy317:
-       YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYCTXMARKER = YYCURSOR;
 yy318:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy317;
index ad8633561dbcd84a105623922169b11523901aa9..8afd52e0e6ef40f3130aacc2ef8b2f76f6615b17 100644 (file)
@@ -110,8 +110,8 @@ yy4:
                        if (yych == '\n') goto yy11;
                        goto yy3;
 yy5:
-                       YYCTXMARKER = YYCURSOR + 1;
                        yych = *(YYMARKER = ++YYCURSOR);
+                       YYCTXMARKER = YYCURSOR;
                        if (yych == '/') goto yy7;
                        goto yy3;
 yy6:
@@ -130,8 +130,8 @@ yy9:
                        { echo(&s); nlcomment = 1; continue; }
 #line 132 "<stdout>"
 yy11:
-                       YYCTXMARKER = YYCURSOR + 1;
                        yych = *++YYCURSOR;
+                       YYCTXMARKER = YYCURSOR;
                        if (yych == '/') goto yy7;
                        goto yy8;
 yy12: