Mercurial > hg > Applications > Grep
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 } |