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)
{
o << indent(ind) << opts->yydebug << "(" << s->label << ", " << opts->input_api.expr_peek () << ");\n";
}
- if (s->isPreCtxt)
- {
- o << opts->input_api.stmt_backupctx (ind);
- }
}
}
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 + " ()";
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;
--- /dev/null
+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"
+
--- /dev/null
+/*!re2c
+ "" / "a" {}
+*/
default: goto xx9;
}
xx2:
- s.ctx = s.cur + 1;
++s.cur;
+ s.ctx = s.cur;
switch ((curr = *s.cur)) {
case '0':
case '2':
default: goto xx9;
}
xx2:
- s.ctx = s.cur + 1;
++s.cur;
+ s.ctx = s.cur;
switch ((curr = *s.cur)) {
case '0':
case '2':
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;
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;
default: goto yy9;
}
yy2:
- YYCTXMARKER = YYCURSOR + 1;
++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch ((yych = *YYCURSOR)) {
case '0':
case '2':
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;
default: goto yy6;
}
yy15:
- YYBACKUPCTX ();
YYSKIP ();
yych = YYPEEK ();
+ YYBACKUPCTX ();
switch (yych) {
case '[': goto yy16;
default: goto yy6;
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"
default: goto yy6;
}
yy15:
- YYBACKUPCTX ();
YYSKIP ();
yych = YYPEEK ();
+ YYBACKUPCTX ();
switch (yych) {
case '[': goto yy16;
default: goto yy6;
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"
default: goto yy6;
}
yy15:
- YYBACKUPCTX ();
YYSKIP ();
yych = YYPEEK ();
+ YYBACKUPCTX ();
switch (yych) {
case '[': goto yy16;
default: goto yy6;
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"
{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;
{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;
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;
{ RETURN(SU_LITERAL); }
#line 567 "<stdout>"
yy71:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
default: goto yy75;
}
yy72:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
#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;
{ RETURN(SU_LITERAL); }
#line 567 "<stdout>"
yy71:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
default: goto yy75;
}
yy72:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
{ RETURN(SU_LITERAL); }
#line 567 "<stdout>"
yy71:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
default: goto yy75;
}
yy72:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
switch (yych) {
case '!':
case '.':
#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;
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;
goto code;
}
yy114:
- YYCTXMARKER = YYCURSOR + 1;
++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
if ((yych = *YYCURSOR) == '=') goto yy224;
yy115:
{
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;
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;
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;
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 <= '^') {
RETURN(SETUP);
}
yy191:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
goto yy193;
yy192:
++YYCURSOR;
goto code;
}
yy255:
- YYCTXMARKER = YYCURSOR + 1;
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
+ YYCTXMARKER = YYCURSOR;
if (yych <= '\r') {
if (yych <= '\t') {
if (yych >= '\t') goto yy270;
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;
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;
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;
if (yych == '/') goto yy211;
goto yy125;
yy133:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
if (yych == '=') goto yy205;
goto yy113;
yy134:
if (yych == '>') goto yy198;
goto yy125;
yy135:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
goto yy164;
yy136:
yyaccept = 4;
fatal("unterminated range (missing ])");
}
yy138:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
if (yych == 'e') goto yy166;
goto yy164;
yy139:
return ID;
}
yy163:
- YYCTXMARKER = YYCURSOR + 1;
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
yy164:
if (yych <= '9') {
if (yych <= ' ') {
}
}
yy166:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
if (yych == '2') goto yy176;
goto yy164;
yy167:
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 <= '^') {
RETURN(SETUP);
}
yy198:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
goto yy200;
yy199:
++YYCURSOR;
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;
goto code;
}
yy255:
- YYCTXMARKER = YYCURSOR + 1;
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
+ YYCTXMARKER = YYCURSOR;
if (yych <= '\r') {
if (yych <= '\t') {
if (yych >= '\t') goto yy272;
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;
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;
if (yych == '\n') goto yy11;
goto yy3;
yy5:
- YYCTXMARKER = YYCURSOR + 1;
yych = *(YYMARKER = ++YYCURSOR);
+ YYCTXMARKER = YYCURSOR;
if (yych == '/') goto yy7;
goto yy3;
yy6:
{ echo(&s); nlcomment = 1; continue; }
#line 132 "<stdout>"
yy11:
- YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
+ YYCTXMARKER = YYCURSOR;
if (yych == '/') goto yy7;
goto yy8;
yy12: