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;