comparison regexParser/subsetConstraction.cc @ 176:c092dd0e1ae0 pairPro

implement appendState() and serchState()
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Wed, 23 Dec 2015 15:41:27 +0900
parents 3be0fbcd4b52
children 8de9a33f6ae5
comparison
equal deleted inserted replaced
175:3be0fbcd4b52 176:c092dd0e1ae0
146 if (walk->next->left && current->right) { 146 if (walk->next->left && current->right) {
147 walk->stack.left = true; 147 walk->stack.left = true;
148 CharClassPtr next = findLeftMost(current->right,walk)->next; 148 CharClassPtr next = findLeftMost(current->right,walk)->next;
149 walk->next = next; 149 walk->next = next;
150 } else { 150 } else {
151 /*
151 TransitionPtr tsOld = ts; 152 TransitionPtr tsOld = ts;
152 ts = ts->next; 153 ts = ts->next;
153 free(tsOld); 154 free(tsOld);
154 CharClassPtr ret; 155 CharClassPtr ret;
155 if (ts) ret = ts->cc; 156 if (ts) ret = ts->cc;
156 else ret = NULL; 157 else ret = NULL;
157 walk->next = ret; 158 walk->next = ret;
159 */
158 } 160 }
159 return current; 161 return current;
160 } 162 }
161 163
162 TransitionPtr mergeTransition(TransitionPtr x,TransitionPtr y) { 164 TransitionPtr mergeTransition(TransitionPtr x,TransitionPtr y) {
220 TransitionGenerator createTransitionGenerator() { 222 TransitionGenerator createTransitionGenerator() {
221 TransitionGenerator tg; 223 TransitionGenerator tg;
222 tg.ts = NEW(Transition); 224 tg.ts = NEW(Transition);
223 tg.state = NEW(State); 225 tg.state = NEW(State);
224 tg.transitionList = NEW(Transition); 226 tg.transitionList = NEW(Transition);
227 // Init State : 00...00(64bit)
225 BitVectorPtr initStateBi = NEW(BitVector); 228 BitVectorPtr initStateBi = NEW(BitVector);
226 bitSet(initStateBi,INIT_STATE_BIT); 229 bitSet(initStateBi,INIT_STATE_BIT);
227 tg.stateArray = createState(tg.stateArray,*initStateBi); 230 StatePtr initState = createState(tg.stateArray,*initStateBi);
231 // Last State : 10...00(64bit)
228 BitVectorPtr lastStateBi = NEW(BitVector); 232 BitVectorPtr lastStateBi = NEW(BitVector);
229 bitSet(lastStateBi,END_STATE_BIT); 233 bitSet(lastStateBi,END_STATE_BIT);
230 tg.stateArray = createState(tg.stateArray,*lastStateBi); 234 StatePtr lastState = createState(tg.stateArray,*lastStateBi);
231 tg.stateArrayLast = NEW(State); 235 tg.stateArray = appendState(initState,lastState);
236 tg.stateArrayLast = lastState;
232 tg.currentState = NEW(State); 237 tg.currentState = NEW(State);
233 tg.nextState = NEW(State); 238 tg.nextState = NEW(State);
234 return tg; 239 return tg;
235 } 240 }
236 241