diff regexParser/subsetConstraction.cc @ 187:ef798db705e9 pairPro

remove some warnings and errors(not working)
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Thu, 24 Dec 2015 22:38:50 +0900
parents 3e8aae8beba9
children 109d22faf7b5
line wrap: on
line diff
--- a/regexParser/subsetConstraction.cc	Thu Dec 24 20:37:29 2015 +0900
+++ b/regexParser/subsetConstraction.cc	Thu Dec 24 22:38:50 2015 +0900
@@ -186,7 +186,7 @@
     }
 }
 
-CharClassPtr mergeTransition(StatePtr x,CharClassPtr y) {
+CharClassPtr mergeTransition(node::StatePtr x,CharClassPtr y) {
     if (x->cc == NULL) {
         return y;
     }
@@ -208,14 +208,15 @@
     bitvector を index とした配列に BitVectorPtr を格納
     state に対応する NodePtr を
  */
-TGValue createState(TGValue tg,NodePtr n) {
-    StatePtr s = NEW(State);
+node::StatePtr createState(TGValue tg,NodePtr n) {
+    node::StatePtr s = NEW(node::State);
     s->next = tg.tg->currentState;
     tg.tg->currentState = s;
     s->node = n;
-    BitVector bi = createBitVector(tg.stateBegin);
+    BitVector bi = createBitVector(n->stateNum);
     s->bitState = bi;
     s->cc = NULL;
+    return s;
 }
 
 /**
@@ -273,11 +274,11 @@
             tgRight.asterisk = true;
             return tgRight;
         }
-        StatePtr left = tg.state;
-        tg.state = n->left->state;
-        tg.tg.stateArray[tg.state->bitState.bitContainer] = tg.state;
+        node::StatePtr left = tg.tgState;
+        tg.tgState = n->left->state;
+        // tg.tg->stateArray[tg.tgState->bitState.bitContainer] = tg.tgState;
         TGValue tgLeft = generateTransition(n->left,tg);
-        tg.state = left;
+        tg.tgState = left;
         TGValue tgv1 = generateTransition(n->right,tgLeft);
         return tgv1;
     } else if (n->tokenType == '|') {
@@ -285,7 +286,7 @@
         TGValue tgv1 = generateTransition(n->right,tgv);
         return tgv1;
     } else if (n->tokenType == '*') {
-        tgAstah = generateTransition(n->left,tgAstah);
+        TGValue tgAstah = generateTransition(n->left,tg);
         tgAstah.asterisk = true;
         return tgAstah;
     } else if (n->tokenType == 'c' || n->tokenType == 'a'){
@@ -293,43 +294,36 @@
         tgv.asterisk = false;
         BitVector bi = createBitVector(n->nextStateNum);
         setState(n->cc,bi);
-        tgv.state->cc = mergeTransition(tgv.state,n->cc);
+        tgv.tgState->cc = mergeTransition(tgv.tgState,n->cc);
         return tgv;
     } else {
         return tg;
     }
 }
 
-void printTransitionList(TransitionPtr ts) {
-    for (;ts;ts = ts->next) {
-        printf("\n");
-    }
-}
-
 TransitionGeneratorPtr createTransitionGenerator() {
     TransitionGeneratorPtr tg = NEW(TransitionGenerator);
     tg->stateMax = 0;
     tg->stack = NULL;
-    tg->state = NEW(State);
+    tg->state = NEW(node::State);
     tg->stateArray = NULL;
     tg->currentState = NULL;
     return tg;
 }
 
-TransitionGenerator generateTransitionList(NodePtr n) {
+TransitionGeneratorPtr generateTransitionList(NodePtr n) {
     TransitionGeneratorPtr tg = createTransitionGenerator();
     TGValue tgv;
     tgv.asterisk = false;
     tgv.tg = tg;
-    StatePtr start = createState(tgv,n);
+    node::StatePtr start = createState(tgv,n);
     NodePtr eof = createNode(NULL,'e',NULL,NULL,NULL);
-    StatePtr end = createState(tgv,eof);
+    node::StatePtr end = createState(tgv,eof);
     tgv.stateBegin = 0;
     tgv.stateEnd = 1;
     stateAllocate(n,tgv);
-    tgv.tg->stateMax = tg.stateNum;
-    tgv.tg.stateArray = (StatePtr)calloc(tg.stateNum,sizeof(StatePtr));
+    tgv.tg->stateMax = tg->stateMax;
+    tgv.tg->stateArray = (node::StatePtr)calloc(tg->stateMax,sizeof(node::StatePtr));
     generateTransition(n,tgv);
-    printTransitionList(tg.ts);
     return tg;
 }