Mercurial > hg > Applications > Grep
diff regexParser/generateSequentialSearch.cc @ 312:c9ac6f06e706
add loop
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 09 Feb 2016 10:59:22 +0900 |
parents | 1188debbef10 |
children | 879dc5d1cb6a |
line wrap: on
line diff
--- a/regexParser/generateSequentialSearch.cc Mon Feb 08 22:12:14 2016 +0900 +++ b/regexParser/generateSequentialSearch.cc Tue Feb 09 10:59:22 2016 +0900 @@ -5,9 +5,9 @@ #include "CharClass.h" #include "subsetConstruction.h" -void +static void generateState1(StatePtr state,long stateNum, bool accept, FILE *fp, TransitionGeneratorPtr tg) { - fprintf(fp,"TSValue state%lx(TSValue tsv) {\n",stateNum); + fprintf(fp,"static TSValue state%lx(TSValue tsv) {\n",stateNum); if (accept && state->accept) { fputs(" tsv=tsv.tg->stateMatch(tsv);\n",fp); } @@ -30,7 +30,7 @@ free(ccw); fprintf(fp," else { tsv=tsv.tg->stateSkip(tsv); return state0(tsv);}\n"); fputs("}\n\n",fp); -} +} void exportState(TransitionGeneratorPtr tg) { @@ -42,13 +42,17 @@ exit(1); } for (;state;state = state->next) { - fprintf(fp,"TSValue state%lx(TSValue tsv);\n",state->bitState.bitContainer); + if (state->bitState.bitContainer!=1) // state1 always unused but state0 + fprintf(fp,"static TSValue state%lx(TSValue tsv);\n",state->bitState.bitContainer); } fputs("\n",fp); // initial state must not accept empty string generateState1(tg->stateList,0L,false,fp,tg); for (state = tg->stateList;state;state = state->next) { - generateState1(state,state->bitState.bitContainer,true,fp,tg); + if (state->bitState.bitContainer!=1) // state1 always unused but state0 + generateState1(state,state->bitState.bitContainer,true,fp,tg); } fclose(fp); } + +