Mercurial > hg > Applications > Grep
diff regexParser/subsetConstraction.cc @ 175:3be0fbcd4b52 pairPro
implement createTransitionGenerator
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Dec 2015 20:27:26 +0900 |
parents | cca8bb5aeded |
children | c092dd0e1ae0 |
line wrap: on
line diff
--- a/regexParser/subsetConstraction.cc Tue Dec 22 18:48:11 2015 +0900 +++ b/regexParser/subsetConstraction.cc Tue Dec 22 20:27:26 2015 +0900 @@ -200,7 +200,7 @@ return tgv2; } else if (n->tokenType == 'a'){ TGValue tgv; - tgv.ts = (TransitionPtr)malloc(sizeof(Transition)); + tgv.ts = NEW(Transition); tgv.ts->condition = n->cc; bitSet(&tgv.ts->condition->nextState,n->nodeNumber); tg.ts = appendTransition(tg.ts,tgv.ts); @@ -217,9 +217,25 @@ } } -TransitionGenerator generateTransitionList(NodePtr n) { +TransitionGenerator createTransitionGenerator() { TransitionGenerator tg; tg.ts = NEW(Transition); + tg.state = NEW(State); + tg.transitionList = NEW(Transition); + BitVectorPtr initStateBi = NEW(BitVector); + bitSet(initStateBi,INIT_STATE_BIT); + tg.stateArray = createState(tg.stateArray,*initStateBi); + BitVectorPtr lastStateBi = NEW(BitVector); + bitSet(lastStateBi,END_STATE_BIT); + tg.stateArray = createState(tg.stateArray,*lastStateBi); + tg.stateArrayLast = NEW(State); + tg.currentState = NEW(State); + tg.nextState = NEW(State); + return tg; +} + +TransitionGenerator generateTransitionList(NodePtr n) { + TransitionGenerator tg = createTransitionGenerator(); generateTransition(n,tg); printTransitionList(tg.ts); return tg;