bool is_better(const clos_t &c1, const clos_t &c2, Tagpool &tagpool);
static bool compare_by_rule(const clos_t &c1, const clos_t &c2);
static void prune_final_items(closure_t &clos, std::valarray<Rule> &rules);
-static void update_versions(closure_t &clos, Tagpool &tagpool, tagver_t &maxver);
+static void update_versions(closure_t &clos, Tagpool &tagpool, tagver_t &maxver, tagver_t *newvers);
void closure(closure_t &clos1, closure_t &clos2, Tagpool &tagpool,
- std::valarray<Rule> &rules, tagver_t &maxver, bool lookahead)
+ std::valarray<Rule> &rules, tagver_t &maxver, tagver_t *newvers,
+ bool lookahead)
{
// build tagged epsilon-closure of the given set of NFA states
clos2.clear();
std::sort(clos2.begin(), clos2.end(), compare_by_rule);
// merge tags from different rules, find nondeterministic tags
- update_versions(clos2, tagpool, maxver);
+ update_versions(clos2, tagpool, maxver, newvers);
}
/* note [epsilon-closures in tagged NFA]
}
}
-void update_versions(closure_t &clos, Tagpool &tagpool, tagver_t &maxver)
+void update_versions(closure_t &clos, Tagpool &tagpool,
+ tagver_t &maxver, tagver_t *newvers)
{
const size_t ntag = tagpool.ntags;
tagver_t *cur = tagpool.buffer1,
// normal transition, however absolute value should be unique
// among all versions of all tags)
for (size_t t = 0; t < ntag; ++t) {
+ tagver_t &newcur = newvers[t],
+ &newbot = newvers[ntag + t];
cur[t] = bot[t] = TAGVER_ZERO;
for (c = b; c != e; ++c) {
if (tagpool[c->ttran][t] == TAGVER_CURSOR) {
- cur[t] = ++maxver;
+ if (newcur == TAGVER_ZERO) {
+ newcur = ++maxver;
+ }
+ cur[t] = newcur;
break;
}
}
for (c = b; c != e; ++c) {
if (tagpool[c->ttran][t] == TAGVER_BOTTOM) {
- bot[t] = -(++maxver);
+ if (newbot == TAGVER_ZERO) {
+ newbot = -(++maxver);
+ }
+ bot[t] = newbot;
break;
}
}
typedef closure_t::const_iterator cclositer_t;
void closure(closure_t &clos1, closure_t &clos2, Tagpool &tagpool,
- std::valarray<Rule> &rules, tagver_t &maxver, bool lookahead);
+ std::valarray<Rule> &rules, tagver_t &maxver, tagver_t *newvers,
+ bool lookahead);
} // namespace re2c
Tagpool tagpool(ntag);
kernels_t kernels(tagpool, opts->bijective_mapping);
closure_t clos1, clos2;
+ tagver_t *newvers = new tagver_t[ntag * 2];
dump_dfa_t dump(*this, tagpool, nfa, opts->dump_dfa_raw);
// all-zero tag configuration must have static number zero
clos_t c0 = {NULL, nfa.root, INITIAL_TAGS, ZERO_TAGS, ZERO_TAGS};
clos1.push_back(c0);
- closure(clos1, clos2, tagpool, rules, maxtagver, lookahead);
+ std::fill(newvers, newvers + ntag * 2, TAGVER_ZERO);
+ closure(clos1, clos2, tagpool, rules, maxtagver, newvers, lookahead);
find_state(*this, dfa_t::NIL, 0/* any */, tagpool, kernels, clos2, dump);
for (size_t i = 0; i < kernels.size(); ++i) {
+ std::fill(newvers, newvers + ntag * 2, TAGVER_ZERO);
for (size_t c = 0; c < nchars; ++c) {
reach(kernels[i], clos1, charset[c]);
- closure(clos1, clos2, tagpool, rules, maxtagver, lookahead);
+ closure(clos1, clos2, tagpool, rules, maxtagver, newvers, lookahead);
find_state(*this, i, c, tagpool, kernels, clos2, dump);
}
}
warn_nondeterministic_tags(kernels, tagpool, vartags, rules, cond, warn);
+
+ delete[] newvers;
}
/*
yych = *YYCURSOR;
switch (yych) {
case '0':
- yyt2 = YYCURSOR;
+ yyt5 = YYCURSOR;
goto yy4;
case '1':
- yyt2 = yyt3 = YYCURSOR;
+ yyt4 = yyt5 = YYCURSOR;
goto yy7;
case '2':
- yyt2 = yyt3 = yyt4 = YYCURSOR;
+ yyt3 = yyt4 = yyt5 = YYCURSOR;
goto yy9;
case '3':
yyt2 = yyt3 = yyt4 = yyt5 = YYCURSOR;
switch (yych) {
case '0': goto yy4;
case '1':
- yyt3 = YYCURSOR;
+ yyt4 = YYCURSOR;
goto yy7;
case '2':
yyt3 = yyt4 = YYCURSOR;
goto yy9;
case '3':
- yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy6;
}
yy6:
p4 = yyt1;
- p3 = yyt5;
- p2 = yyt4;
- p1 = yyt3;
- p0 = yyt2;
+ p3 = yyt2;
+ p2 = yyt3;
+ p1 = yyt4;
+ p0 = yyt5;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%.*s'\n",
p1 - p0, p0,
switch (yych) {
case '1': goto yy7;
case '2':
- yyt4 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy9;
case '3':
- yyt4 = yyt5 = YYCURSOR;
+ yyt2 = yyt3 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = YYCURSOR;
goto yy6;
}
yy9:
switch (yych) {
case '2': goto yy9;
case '3':
- yyt5 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = YYCURSOR;
goto yy6;
}
yy11:
yych = YYPEEK ();
switch (yych) {
case '0':
- YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt5);
goto yy4;
case '1':
- YYBACKUPTAG (yyt2);
- YYBACKUPTAG (yyt3);
+ YYBACKUPTAG (yyt4);
+ YYBACKUPTAG (yyt5);
goto yy7;
case '2':
- YYBACKUPTAG (yyt2);
YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
+ YYBACKUPTAG (yyt5);
goto yy9;
case '3':
YYBACKUPTAG (yyt2);
switch (yych) {
case '0': goto yy4;
case '1':
- YYBACKUPTAG (yyt3);
+ YYBACKUPTAG (yyt4);
goto yy7;
case '2':
YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
goto yy9;
case '3':
+ YYBACKUPTAG (yyt2);
YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
goto yy11;
case '4':
YYBACKUPTAG (yyt1);
+ YYBACKUPTAG (yyt2);
YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
goto yy13;
default:
YYBACKUPTAG (yyt1);
+ YYBACKUPTAG (yyt2);
YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
goto yy6;
}
yy6:
YYRESTORETAG (yyt1);
- YYCOPYTAG (p3, yyt5);
- YYCOPYTAG (p2, yyt4);
- YYCOPYTAG (p1, yyt3);
- YYCOPYTAG (p0, yyt2);
+ YYCOPYTAG (p3, yyt2);
+ YYCOPYTAG (p2, yyt3);
+ YYCOPYTAG (p1, yyt4);
+ YYCOPYTAG (p0, yyt5);
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
p1 - p0, p0,
switch (yych) {
case '1': goto yy7;
case '2':
- YYBACKUPTAG (yyt4);
+ YYBACKUPTAG (yyt3);
goto yy9;
case '3':
- YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt3);
goto yy11;
case '4':
YYBACKUPTAG (yyt1);
- YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt3);
goto yy13;
default:
YYBACKUPTAG (yyt1);
- YYBACKUPTAG (yyt4);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt3);
goto yy6;
}
yy9:
switch (yych) {
case '2': goto yy9;
case '3':
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
goto yy11;
case '4':
YYBACKUPTAG (yyt1);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
goto yy13;
default:
YYBACKUPTAG (yyt1);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
goto yy6;
}
yy11:
yych = *YYCURSOR;
switch (yych) {
case '0':
- yyt2 = YYCURSOR;
+ yyt5 = YYCURSOR;
goto yy4;
case '1':
- yyt2 = yyt3 = YYCURSOR;
+ yyt4 = yyt5 = YYCURSOR;
goto yy7;
case '2':
- yyt2 = yyt3 = yyt4 = YYCURSOR;
+ yyt3 = yyt4 = yyt5 = YYCURSOR;
goto yy9;
case '3':
yyt2 = yyt3 = yyt4 = yyt5 = YYCURSOR;
switch (yych) {
case '0': goto yy4;
case '1':
- yyt3 = YYCURSOR;
+ yyt4 = YYCURSOR;
goto yy7;
case '2':
yyt3 = yyt4 = YYCURSOR;
goto yy9;
case '3':
- yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt3 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = yyt4 = YYCURSOR;
goto yy6;
}
yy6:
YYCURSOR = yyt1;
- p3 = yyt5;
- p2 = yyt4;
- p1 = yyt3;
- p0 = yyt2;
+ p3 = yyt2;
+ p2 = yyt3;
+ p1 = yyt4;
+ p0 = yyt5;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
p1 - p0, p0,
switch (yych) {
case '1': goto yy7;
case '2':
- yyt4 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy9;
case '3':
- yyt4 = yyt5 = YYCURSOR;
+ yyt2 = yyt3 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt4 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = yyt3 = YYCURSOR;
goto yy6;
}
yy9:
switch (yych) {
case '2': goto yy9;
case '3':
- yyt5 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy11;
case '4':
- yyt1 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = YYCURSOR;
goto yy13;
default:
- yyt1 = yyt5 = YYCURSOR;
+ yyt1 = yyt2 = YYCURSOR;
goto yy6;
}
yy11:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '1':
- yyt1 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy5;
case '2':
- yyt1 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy8;
default: goto yy3;
}
yych = *++YYCURSOR;
switch (yych) {
case '3':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy9;
case '4':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy11;
default: goto yy7;
}
}
yy11:
++YYCURSOR;
- p3 = yyt2;
- p1 = yyt1;
+ p3 = yyt1;
+ p1 = yyt2;
p4 = YYCURSOR - 1;
- p2 = yyt2 - 1;
- p0 = yyt1 - 1;
+ p2 = yyt1 - 1;
+ p0 = yyt2 - 1;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%.*s'\n",
p1 - p0, p0,
yych = YYPEEK ();
switch (yych) {
case '0':
- YYBACKUPTAG (yyt3);
+ YYBACKUPTAG (yyt5);
goto yy4;
default: goto yy2;
}
YYBACKUPTAG (yyt4);
goto yy5;
case '2':
- YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
goto yy8;
default: goto yy3;
switch (yych) {
case '1': goto yy5;
case '2':
- YYBACKUPTAG (yyt2);
+ YYBACKUPTAG (yyt3);
goto yy8;
default: goto yy7;
}
yych = YYPEEK ();
switch (yych) {
case '3':
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
goto yy9;
case '4':
YYBACKUPTAG (yyt1);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt2);
goto yy11;
default: goto yy7;
}
yy11:
YYSKIP ();
YYRESTORETAG (yyt1);
- YYCOPYTAG (p3, yyt5);
- YYCOPYTAG (p2, yyt2);
+ YYCOPYTAG (p3, yyt2);
+ YYCOPYTAG (p2, yyt3);
YYCOPYTAG (p1, yyt4);
- YYCOPYTAG (p0, yyt3);
+ YYCOPYTAG (p0, yyt5);
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
p1 - p0, p0,
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '1':
- yyt1 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy5;
case '2':
- yyt1 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy8;
default: goto yy3;
}
yych = *++YYCURSOR;
switch (yych) {
case '3':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy9;
case '4':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy11;
default: goto yy7;
}
}
yy11:
++YYCURSOR;
- p3 = yyt2;
- p1 = yyt1;
+ p3 = yyt1;
+ p1 = yyt2;
YYCURSOR -= 1;
- p2 = yyt2 - 1;
- p0 = yyt1 - 1;
+ p2 = yyt1 - 1;
+ p0 = yyt2 - 1;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
p1 - p0, p0,
yych = *YYCURSOR;
switch (yych) {
case '0':
- yyt2 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy4;
case '1':
- yyt2 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy5;
default: goto yy2;
}
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '2':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy10;
case '3':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy12;
default: goto yy3;
}
yych = *++YYCURSOR;
switch (yych) {
case '2':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy10;
case '3':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy12;
default: goto yy8;
}
goto yy15;
yy13:
p4 = yyt1;
- p2 = yyt3;
- p0 = yyt2;
+ p2 = yyt2;
+ p0 = yyt3;
p3 = yyt1 - 1;
- p1 = yyt3 - 1;
+ p1 = yyt2 - 1;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%.*s'\n",
p1 - p0, p0,
YYBACKUPTAG (yyt4);
goto yy4;
case '1':
- YYBACKUPTAG (yyt3);
YYBACKUPTAG (yyt4);
+ YYBACKUPTAG (yyt5);
goto yy5;
default: goto yy2;
}
yych = YYPEEK ();
switch (yych) {
case '2':
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt3);
goto yy10;
case '3':
YYBACKUPTAG (yyt2);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt3);
goto yy12;
default: goto yy3;
}
switch (yych) {
case '0': goto yy6;
case '1':
- YYBACKUPTAG (yyt3);
+ YYBACKUPTAG (yyt5);
goto yy9;
default: goto yy8;
}
yych = YYPEEK ();
switch (yych) {
case '2':
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt3);
goto yy10;
case '3':
YYBACKUPTAG (yyt2);
- YYBACKUPTAG (yyt5);
+ YYBACKUPTAG (yyt3);
goto yy12;
default: goto yy8;
}
yy13:
YYRESTORETAG (yyt1);
YYCOPYTAG (p3, yyt2);
- YYCOPYTAG (p2, yyt5);
- YYCOPYTAG (p1, yyt3);
+ YYCOPYTAG (p2, yyt3);
+ YYCOPYTAG (p1, yyt5);
YYCOPYTAG (p0, yyt4);
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
yych = *YYCURSOR;
switch (yych) {
case '0':
- yyt2 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy4;
case '1':
- yyt2 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy5;
default: goto yy2;
}
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '2':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy10;
case '3':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy12;
default: goto yy3;
}
yych = *++YYCURSOR;
switch (yych) {
case '2':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy10;
case '3':
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy12;
default: goto yy8;
}
goto yy15;
yy13:
YYCURSOR = yyt1;
- p2 = yyt3;
- p0 = yyt2;
+ p2 = yyt2;
+ p0 = yyt3;
p3 = yyt1 - 1;
- p1 = yyt3 - 1;
+ p1 = yyt2 - 1;
{
printf("'%.*s', '%.*s', '%.*s', '%.*s', '%s'\n",
p1 - p0, p0,
yych = *(YYMARKER = YYCURSOR);
switch (yych) {
case 'a':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy5;
case 'b': goto yy7;
default:
default: goto yy6;
}
yy6:
- p = yyt2;
+ p = yyt1;
{}
yy7:
yych = *++YYCURSOR;
switch (yych) {
case 'a':
- yyt2 = NULL;
+ yyt1 = NULL;
goto yy5;
case 'b': goto yy4;
default:
yy8:
yych = *++YYCURSOR;
switch (yych) {
- case 'a': goto yy10;
+ case 'a':
+ yyt1 = yyt2;
+ goto yy10;
default: goto yy4;
}
yy9:
yych = *++YYCURSOR;
switch (yych) {
- case 'a': goto yy10;
- default:
- yyt2 = yyt1;
- goto yy6;
+ case 'a':
+ yyt1 = yyt2;
+ goto yy10;
+ default: goto yy6;
}
yy10:
++YYCURSOR;
yych = *(YYMARKER = YYCURSOR);
switch (yych) {
case 'a':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy5;
case 'b': goto yy7;
default:
default: goto yy6;
}
yy6:
- p = yyt2;
+ p = yyt1;
{}
yy7:
yych = *++YYCURSOR;
switch (yych) {
case 'a':
- yyt2 = NULL;
+ yyt1 = NULL;
goto yy5;
case 'b': goto yy4;
default:
yy8:
yych = *++YYCURSOR;
switch (yych) {
- case 'a': goto yy10;
+ case 'a':
+ yyt1 = yyt2;
+ goto yy10;
default: goto yy4;
}
yy9:
yych = *++YYCURSOR;
switch (yych) {
- case 'a': goto yy10;
- default:
- yyt2 = yyt1;
- goto yy6;
+ case 'a':
+ yyt1 = yyt2;
+ goto yy10;
+ default: goto yy6;
}
yy10:
++YYCURSOR;
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
+ yyt1 = NULL;
+ yyt2 = YYCURSOR;
switch (yych) {
- case 'a':
- yyt1 = NULL;
- yyt2 = YYCURSOR;
- goto yy3;
- case 'b':
- yyt3 = NULL;
- yyt1 = YYCURSOR;
- goto yy5;
- default:
- yyt1 = NULL;
- yyt2 = YYCURSOR;
- goto yy2;
+ case 'a': goto yy3;
+ case 'b': goto yy5;
+ default: goto yy2;
}
yy2:
p = yyt1;
}
yy5:
yych = *(YYMARKER = ++YYCURSOR);
- yyt2 = NULL;
switch (yych) {
- case 'a': goto yy6;
- case 'b': goto yy7;
- default: goto yy2;
+ case 'a':
+ yyt3 = NULL;
+ goto yy6;
+ case 'b':
+ yyt3 = NULL;
+ goto yy7;
+ default:
+ yyt1 = yyt2;
+ yyt2 = NULL;
+ goto yy2;
}
yy6:
yych = *++YYCURSOR;
switch (yych) {
- case 'a': goto yy3;
- default:
- yyt2 = yyt1;
- yyt1 = yyt3;
- goto yy2;
+ case 'a':
+ yyt1 = yyt2;
+ yyt2 = yyt3;
+ goto yy3;
+ default: goto yy2;
}
yy7:
yych = *++YYCURSOR;
}
yy8:
YYCURSOR = YYMARKER;
+ yyt1 = yyt2;
yyt2 = NULL;
goto yy2;
yy9:
++YYCURSOR;
+ yyt1 = yyt2;
+ yyt2 = yyt3;
goto yy2;
}
yych = *(YYMARKER = YYCURSOR);
switch (yych) {
case 'a':
- yyt2 = YYCURSOR;
+ yyt3 = YYCURSOR;
goto yy4;
case 'b':
yyt1 = yyt2 = yyt3 = YYCURSOR;
goto yy6;
default:
- yyt3 = YYCURSOR;
+ yyt2 = YYCURSOR;
goto yy3;
}
yy2:
s = yyt4;
- r = yyt2;
+ r = yyt1;
{}
yy3:
yyaccept = 1;
yyt4 = YYCURSOR;
goto yy10;
case 'b':
- yyt2 = yyt4 = YYCURSOR;
+ yyt1 = yyt4 = YYCURSOR;
goto yy11;
default:
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy8;
}
yy4:
YYCURSOR = YYMARKER;
switch (yyaccept) {
case 0:
- yyt2 = yyt4 = NULL;
+ yyt1 = yyt4 = NULL;
goto yy2;
case 1:
- yyt2 = yyt3;
+ yyt1 = yyt2;
yyt4 = YYCURSOR;
goto yy2;
- case 2:
- yyt3 = yyt1;
- yyt1 = yyt2;
- goto yy7;
+ case 2: goto yy7;
case 3:
yyt4 = YYCURSOR;
goto yy2;
- case 4:
- yyt2 = yyt3;
+ default:
+ yyt1 = yyt2;
goto yy2;
- default: goto yy7;
}
yy6:
yyaccept = 2;
yyt4 = YYCURSOR;
goto yy10;
case 'b':
- yyt2 = yyt4 = YYCURSOR;
+ yyt1 = yyt4 = YYCURSOR;
goto yy11;
default:
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy8;
}
yy7:
y = yyt1;
- q = yyt3;
- p = yyt2;
+ q = yyt2;
+ p = yyt3;
{}
yy8:
yyaccept = 3;
yych = *YYCURSOR;
switch (yych) {
case 'a':
- yyt3 = yyt2;
+ yyt2 = yyt1;
yyt4 = YYCURSOR;
goto yy10;
case 'b':
- yyt3 = yyt2;
- yyt2 = yyt4 = YYCURSOR;
+ yyt2 = yyt1;
+ yyt1 = yyt4 = YYCURSOR;
goto yy11;
default:
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy8;
}
yy10:
switch (yych) {
case 'a': goto yy14;
case 'b':
- yyt3 = yyt2;
- yyt2 = yyt4 = YYCURSOR;
+ yyt2 = yyt1;
+ yyt1 = yyt4 = YYCURSOR;
goto yy11;
default:
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy8;
}
yy13:
switch (yych) {
case 'a': goto yy17;
case 'b':
- yyt3 = NULL;
+ yyt2 = NULL;
yyt1 = YYCURSOR;
goto yy18;
default:
- yyt3 = NULL;
+ yyt2 = NULL;
yyt1 = YYCURSOR;
goto yy15;
}
switch (yych) {
case 'a': goto yy10;
case 'b':
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy11;
default:
- yyt2 = YYCURSOR;
+ yyt1 = YYCURSOR;
goto yy8;
}
yy15:
yych = *++YYCURSOR;
switch (yych) {
case 'a':
- yyt2 = NULL;
+ yyt3 = NULL;
goto yy20;
case 'b':
- yyt2 = NULL;
- yyt1 = yyt3 = YYCURSOR;
+ yyt3 = NULL;
+ yyt1 = yyt2 = YYCURSOR;
goto yy18;
default:
- yyt2 = NULL;
- yyt1 = yyt3 = YYCURSOR;
+ yyt3 = NULL;
+ yyt1 = yyt2 = YYCURSOR;
goto yy15;
}
yy18:
- yyaccept = 5;
+ yyaccept = 2;
YYMARKER = ++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch (yych) {
case 'a': goto yy5;
case 'b':
- yyt3 = NULL;
+ yyt2 = NULL;
yyt1 = YYCURSOR;
goto yy18;
default:
- yyt3 = NULL;
+ yyt2 = NULL;
yyt1 = YYCURSOR;
goto yy15;
}