Mercurial > hg > Applications > Grep
diff regexParser/subsetConstruction.cc @ 225:0c28ff35b4f0
add generateSequentialSearch
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 15 Jan 2016 16:47:03 +0900 |
parents | 474fc9f844db |
children | 8be58af605da |
line wrap: on
line diff
--- a/regexParser/subsetConstruction.cc Fri Jan 15 16:12:19 2016 +0900 +++ b/regexParser/subsetConstruction.cc Fri Jan 15 16:47:03 2016 +0900 @@ -314,48 +314,6 @@ return tgv; } -void exportState(TransitionGeneratorPtr tg) { - StatePtr state = tg->stateList; - FILE *fp = fopen("state.cc","w"); - char s[SIZE]; - fputs("unsigned char *buff, *buffptr, buffend;\n",fp); - for (;state;state = state->next) { - sprintf(s,"void state%lx() {\n",state->bitState.bitContainer); - fputs(s,fp); - if (state->bitState.bitContainer == 2) { // Accept - fputs(" // Accept\n",fp); - } else { // not Accept - fputs(" unsigned char c = *buffptr++;\n",fp); - CharClassWalkerPtr ccw = createCharClassWalker(state->cc); - bool flag = true; - while (hasNext(ccw)) { - CharClassPtr cc = getNext(ccw); - unsigned long begin = cc->cond.range.begin; - unsigned long end = cc->cond.range.end; - BitVector bi = cc->nextState; - if (flag) { - flag = false; - } else { - fputs(" else ",fp); - } - if (begin == end) { - sprintf(s," if (c=='%c') state%lu();\n",(unsigned char)begin, bi.bitContainer); - fputs(s,fp); - } else { - sprintf(s," if (c<'%c') state1();\n",(unsigned char)begin); - fputs(s,fp); - sprintf(s," else if (c<='%c') state%lu();\n",(unsigned char)end, bi.bitContainer); - fputs(s,fp); - } - } - sprintf(s," else state1();\n"); - fputs(s,fp); - } - fputs("}\n\n",fp); - } - fclose(fp); -} - void printState(StatePtr state) { printf("state : %lx\n",state->bitState.bitContainer); long nodeNumber = 0;