changeset 143:32977f5a2ed0 pairPro

add charClassMerge
author masa
date Fri, 11 Dec 2015 15:04:58 +0900
parents de0f332d560c
children d8a4922eceae
files c/regexParser/regexParser.cc c/regexParser/subsetConstraction.cc
diffstat 2 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/c/regexParser/regexParser.cc	Fri Dec 11 14:54:00 2015 +0900
+++ b/c/regexParser/regexParser.cc	Fri Dec 11 15:04:58 2015 +0900
@@ -52,10 +52,7 @@
     return n;
 }
 
-CharClassPtr charClassMerge(CharClassPtr src, CharClassPtr add) {
-    // 重なっているccの領域を分割する
-    // 必要ならばnextStateを重ねあわせる
-    // 変更があった場合は新しくリストを作って返す
+CharClassPtr charClassMerge(CharClassPtr cc, unsigned char begin, unsigned char end, CharClassPtr next) {
     if (src->type == 'a') {
         if (add->type == 'a') {
             if (src->cond.w.word[0] > add->cond.w.word[0]) {
--- a/c/regexParser/subsetConstraction.cc	Fri Dec 11 14:54:00 2015 +0900
+++ b/c/regexParser/subsetConstraction.cc	Fri Dec 11 15:04:58 2015 +0900
@@ -3,6 +3,29 @@
 #include <ctype.h>
 #include "subsetConstraction.h"
 
+CharClassPtr charClassMerge(CharClassPtr src, CharClassPtr add) {
+    // 重なっているccの領域を分割する
+    // 必要ならばnextStateを重ねあわせる
+    // 変更があった場合は新しくリストを作って返す
+    if (src->type == 'a') {
+        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);
+            } 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->type == 'c') {
+
+    }
+}
+
 void printTransition(TransitionPtr ts) {
     for (;;) {
         printf("Input Condition : %c\n",ts->condition->cond->w->word);