changeset 205:b7b8f0c03fe3

add test/ccMerge.cc
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sun, 27 Dec 2015 14:57:40 +0900
parents e6e862e92fdc
children e5302c2f6e00
files regexParser/Makefile regexParser/node.cc regexParser/test/ccMerge.cc
diffstat 3 files changed, 71 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/regexParser/Makefile	Sun Dec 27 13:21:18 2015 +0900
+++ b/regexParser/Makefile	Sun Dec 27 14:57:40 2015 +0900
@@ -1,4 +1,5 @@
 TARGET= regexParser
+MERGE = ccMerge
 CFLAGS= -Wall -O0 -g
 CC= clang++
 
@@ -18,13 +19,16 @@
 test/searchBit: test/searchBit.cc
 	$(CC) -I. $< bitVector.cc -o $@
 
+test/ccMerge: test/ccMerge.cc
+	$(CC) -I. $< subsetConstraction.cc regexParser.cc node.cc error.cc bitVector.cc -o $@
+
 clean:
 	rm -f $(TARGET) $(OBJS)
 	rm -f *~ \#*
 
 .SUFFIXES: .cc .o
 
-test:
+test1:
 	./$(TARGET) -regex 'a'
 	./$(TARGET) -regex 'ab'
 	./$(TARGET) -regex 'a*b'
@@ -68,25 +72,25 @@
 	./$(TARGET) -regex '[d-gh-ja-e]'
 
 merge_test:
-	./$(MERGE) -regex '[f-i]' -merge '[d-e]'
-	./$(MERGE) -regex '[f-i]' -merge '[d-f]'
-	./$(MERGE) -regex '[f-i]' -merge '[d-g]'
-	./$(MERGE) -regex '[f-i]' -merge '[d-i]'
-	./$(MERGE) -regex '[f-i]' -merge '[d-k]'
-	./$(MERGE) -regex '[f-i]' -merge '[f-g]'
-	./$(MERGE) -regex '[f-i]' -merge '[f-i]'
-	./$(MERGE) -regex '[f-i]' -merge '[f-k]'
-	./$(MERGE) -regex '[f-i]' -merge '[g-h]'
-	./$(MERGE) -regex '[f-i]' -merge '[g-i]'
-	./$(MERGE) -regex '[f-i]' -merge '[g-k]'
-	./$(MERGE) -regex '[f-i]' -merge '[i-k]'
-	./$(MERGE) -regex '[f-i]' -merge '[j-k]'
-	./$(MERGE) -regex '[c-ef-i]' -merge '[d-e]'
-	./$(MERGE) -regex '[c-ef-i]' -merge '[d-f]'
-	./$(MERGE) -regex '[c-ef-i]' -merge '[d-g]'
-	./$(MERGE) -regex '[c-ef-i]' -merge '[d-i]'
-	./$(MERGE) -regex '[c-ef-ij-m]' -merge '[d-k]'
-	./$(MERGE) -regex '[f-ij-m]' -merge '[f-k]'
-	./$(MERGE) -regex '[f-ij-m]' -merge '[g-k]'
-	./$(MERGE) -regex '[f-ij-m]' -merge '[i-k]'
-	./$(MERGE) -regex '[f-ij-m]' -merge '[j-k]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[d-e]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[d-f]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[d-g]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[d-i]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[d-k]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[f-g]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[f-i]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[f-k]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[g-h]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[g-i]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[g-k]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[i-k]'
+	./test/$(MERGE) -regex '[f-i]' -merge '[j-k]'
+	./test/$(MERGE) -regex '[c-ef-i]' -merge '[d-e]'
+	./test/$(MERGE) -regex '[c-ef-i]' -merge '[d-f]'
+	./test/$(MERGE) -regex '[c-ef-i]' -merge '[d-g]'
+	./test/$(MERGE) -regex '[c-ef-i]' -merge '[d-i]'
+	./test/$(MERGE) -regex '[c-ef-ij-m]' -merge '[d-k]'
+	./test/$(MERGE) -regex '[f-ij-m]' -merge '[f-k]'
+	./test/$(MERGE) -regex '[f-ij-m]' -merge '[g-k]'
+	./test/$(MERGE) -regex '[f-ij-m]' -merge '[i-k]'
+	./test/$(MERGE) -regex '[f-ij-m]' -merge '[j-k]'
--- a/regexParser/node.cc	Sun Dec 27 13:21:18 2015 +0900
+++ b/regexParser/node.cc	Sun Dec 27 14:57:40 2015 +0900
@@ -4,7 +4,7 @@
 
 void printCharacterClass(CharClassPtr cc, long nodeNumber,int d) {
     if (!cc) return;
-    if (cc->type == 'a') {
+    if (cc->type == 'a' || cc->type == 'r') {
         if (cc->left) {
             printCharacterClass(cc->left,nodeNumber,d+1);
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/regexParser/test/ccMerge.cc	Sun Dec 27 14:57:40 2015 +0900
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "regexParser.h"
+#include "node.h"
+#include "subsetConstraction.h"
+
+int main(int argc, char **argv)
+{
+    RegexInfo ri;
+    unsigned char* merge = NULL;
+    for (int i = 1; i < argc; i++) {
+        if (strcmp(argv[i],"-regex") == 0) {
+            ri.ptr = (unsigned char*)argv[i+1]; i++;
+        } else if (strcmp(argv[i],"-merge") == 0) {
+            merge = (unsigned char*)argv[i+1]; i++;
+        }
+    }
+    printf("regex : %s\n",ri.ptr);
+    printf("merge : %s\n",merge);
+    unsigned char begin, end;
+    if (merge[0] == '[') merge++;
+    begin = *merge;
+    end = *merge;
+    for (; *merge && *merge != ']'; merge++) {
+        if (*merge == '-') {
+            end = *(merge + 1);
+            merge++;
+            continue;
+        }
+        if (merge[0] == 0 || merge[0] == ']') break;
+        begin = *merge;
+        end = *merge;
+    }
+    NodePtr n = regex(&ri);
+    TransitionGeneratorPtr tg = generateTransitionList(n);
+    printTree(n);
+    BitVector nextState;
+    nextState.bitContainer = 8;
+    CharClassPtr cc = charClassMerge(n->cc,begin,end,nextState);
+    printf("type : %c range : [%c-%c] NextState : %lu\n",cc->type,(unsigned char)cc->cond.range.begin,(unsigned char)cc->cond.range.end, cc->nextState.bitContainer);
+    return 0;
+}