diff options
author | dgp <dgp@users.sourceforge.net> | 2013-03-06 16:26:18 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2013-03-06 16:26:18 (GMT) |
commit | 596e86d26f839d7ffb40012c2c511e33b6de0b12 (patch) | |
tree | b23c1bf3d217e1d241ba5dc806685386744dd848 /generic/regc_nfa.c | |
parent | fe7e82dfed8be6f8a8c99cfd68d8e1119faee568 (diff) | |
download | tcl-596e86d26f839d7ffb40012c2c511e33b6de0b12.zip tcl-596e86d26f839d7ffb40012c2c511e33b6de0b12.tar.gz tcl-596e86d26f839d7ffb40012c2c511e33b6de0b12.tar.bz2 |
New routine hasnonemptyout() for minor improvement to new fixempties().
Diffstat (limited to 'generic/regc_nfa.c')
-rw-r--r-- | generic/regc_nfa.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/generic/regc_nfa.c b/generic/regc_nfa.c index 5dab7bc..f072985 100644 --- a/generic/regc_nfa.c +++ b/generic/regc_nfa.c @@ -497,6 +497,22 @@ freearc( } /* + - hasnonemptyout - Does state have a non-EMPTY out arc? + ^ static int hasnonemptyout(struct state *); + */ +static int +hasnonemptyout(s) +struct state *s; +{ + struct arc *a; + + for (a = s->outs; a != NULL; a = a->outchain) + if (a->type != EMPTY) + return 1; + return 0; +} + +/* - nonemptyouts - count non-EMPTY out arcs of a state ^ static int nonemptyouts(struct state *); */ @@ -1375,7 +1391,7 @@ fixempties( * forward to it, not pull them back to s; and (2) we can optimize * away the push-forward, per comment above. So do nothing. */ - if (s2->flag || nonemptyouts(s2) > 0) + if (s2->flag || hasnonemptyout(s2)) replaceempty(nfa, s, s2); /* Reset the tmp fields as we walk back */ |