diff c/regexParser/subsetConstraction.cc @ 144:d8a4922eceae pairPro

remove some errors (not working)
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2015 17:14:33 +0900
parents 32977f5a2ed0
children 1c74ac7d56ec
line wrap: on
line diff
--- a/c/regexParser/subsetConstraction.cc	Fri Dec 11 15:04:58 2015 +0900
+++ b/c/regexParser/subsetConstraction.cc	Mon Dec 14 17:14:33 2015 +0900
@@ -3,6 +3,11 @@
 #include <ctype.h>
 #include "subsetConstraction.h"
 
+static
+CharClassPtr createCharClassWord(unsigned char *w, CharClassPtr cc1, CharClassPtr cc2) {
+    return cc1;
+}
+
 CharClassPtr charClassMerge(CharClassPtr src, CharClassPtr add) {
     // 重なっているccの領域を分割する
     // 必要ならばnextStateを重ねあわせる
@@ -11,56 +16,48 @@
         if (add->type == 'a') {
             if (src->cond.w.word[0] > add->cond.w.word[0]) {
                 // add のほうが小さいので小さい順のccをつくる
-                CharClassPtr left = charClassMerge(add->left.src);
-                return createCharClassWord(add->cond->w.word, left, add->right);
+                CharClassPtr left = charClassMerge(add->left,src);
+                return createCharClassWord(add->cond.w.word, left, add->right);
             } else {
-                
+
             }
         } else if (add->type == 'c') {
-            // 
             if (src->cond.w.word[0] < add->cond.range.begin) {
 
-            } else (src->cond->w.word[0] < add->end) {
+            } else if (src->cond.w.word[0] < add->cond.range.end) {
+
+            }
+        }
     } else if (src->type == 'c') {
 
     }
 }
 
 void printTransition(TransitionPtr ts) {
-    for (;;) {
-        printf("Input Condition : %c\n",ts->condition->cond->w->word);
-        printf("Next  State     : "); bitPrint(ts->nextState); printf("\n");
-        if (ts->next == NULL) break;
-        ts = ts->next;
-    }
+
 }
 
 TGValue generateTransition(NodePtr n,TransitionGenerator tg) {
-
     if (n->tokenType == '+') {
         TGValue tgv = generateTransition(n->left,tg);
         if (tgv.asterisk) {
             TGValue tgv1 = generateTransition(n->right,tg);
-            tgv.state |= tgv1.state;
+            tgv.ts->state->bitContainer |= tgv1.ts->state->bitContainer;
             return tgv;
         }
-        tgv.state = n->right->nodeNumber;
+        bitSet(tgv.ts->state,n->right->nodeNumber);
         return tgv;
     } else if (n->tokenType == '|') {
-        tgv0 = generateTransition(n->left,tg);
-        tgv1 = generateTransition(n->right,tg);
-        tg->state->transition = appendTransition(tgv0->ts,tgv1->ts);
+
     } else if (n->tokenType == '*') {
-        tgv0 = generateTransition(n->left,tg);
-        tgv0->asterisk = true;
+
+    } else if (n->tokenType == 'c'){
+
+    } else if (n->tokenType == 'a'){
+
     } else {
-        tgv0 = (TGValuePtr)malloc(sizeof(TGValue));
-        BitVectorPtr bi = createBitVector(n);
-        tgv0->ts = createTransition(n->cc,bi);
-        tgv0->asterisk = false;
+        // error
     }
-
-    return tgv0;
 }
 
 StatePtr createStateList(NodePtr n) {
@@ -73,7 +70,7 @@
         BitVectorPtr bi = createBitVector(n);
         StatePtr s1 = createState(bi,0,0);
     } else if (n->tokenType == '+' || n->tokenType == '|') {
-        
+
     }
 
     if (n->right != NULL) {
@@ -82,10 +79,9 @@
     return s0;
 }
 
-TransitionGeneratorPtr generateTransitionList(NodePtr n) {
-    TransitionGeneratorPtr tg = (TransitionGeneratorPtr)malloc(sizeof(TransitionGenerator));
-    int d = 0;
-    tg->state = createStateList(n);
+TransitionGenerator generateTransitionList(NodePtr n) {
+    TransitionGenerator tg;
+    tg.state = createStateList(n);
     generateTransition(n,tg);
     return tg;
 }