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