comparison regexParser/subsetConstruction.cc @ 256:72f3673dd7a5

remove tg->stateTop
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 Jan 2016 18:28:57 +0900
parents 61d4d466e64c
children ebb429c2b6a7
comparison
equal deleted inserted replaced
255:61d4d466e64c 256:72f3673dd7a5
378 s->cc = merge; 378 s->cc = merge;
379 } 379 }
380 } 380 }
381 381
382 void subsetConstruction(TransitionGeneratorPtr tg) { 382 void subsetConstruction(TransitionGeneratorPtr tg) {
383 for (;tg->stateTop;tg->stateTop = tg->stateTop->next) { 383 for (StatePtr st = tg->stateList;st;st = st->next) {
384 CharClassWalkerPtr cw = createCharClassWalker(tg->stateTop->cc); 384 CharClassWalkerPtr cw = createCharClassWalker(st->cc);
385 while (hasNext(cw)) { 385 while (hasNext(cw)) {
386 CharClassPtr cc = getNext(cw); 386 CharClassPtr cc = getNext(cw);
387 BitVector bi = cc->nextState; 387 BitVector bi = cc->nextState;
388 if (tg->stateArray[bi.bitContainer]) continue; // already done 388 if (tg->stateArray[bi.bitContainer]) continue; // already done
389 StatePtr s = createState(tg,bi); 389 StatePtr s = createState(tg,bi); // s is added at the end of stateList.
390 tg->stateArray[bi.bitContainer] = s; 390 tg->stateArray[bi.bitContainer] = s;
391 determinize(s,tg); 391 determinize(s,tg);
392 } 392 }
393 free(cw); 393 free(cw);
394 } 394 }