annotate regexParser/test/ccMerge.cc @ 206:e5302c2f6e00

implement printCCTree
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sun, 27 Dec 2015 16:00:19 +0900
parents b7b8f0c03fe3
children 2ec95755238e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
205
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdlib.h>
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <string.h>
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include "regexParser.h"
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #include "node.h"
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 #include "subsetConstraction.h"
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
206
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
8 void printCCTree(CharClassPtr cc) {
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
9 if (cc->left != NULL) {
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
10 printCCTree(cc->left);
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
11 }
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
12
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
13 printf("range : [%c-%c] NextState : %lu\n",(unsigned char)cc->cond.range.begin,(unsigned char)cc->cond.range.end, cc->nextState.bitContainer);
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
14
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
15 if (cc->right != NULL) {
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
16 printCCTree(cc->right);
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
17 }
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
18 }
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
19
205
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 int main(int argc, char **argv)
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 RegexInfo ri;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 unsigned char* merge = NULL;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 for (int i = 1; i < argc; i++) {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 if (strcmp(argv[i],"-regex") == 0) {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 ri.ptr = (unsigned char*)argv[i+1]; i++;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 } else if (strcmp(argv[i],"-merge") == 0) {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 merge = (unsigned char*)argv[i+1]; i++;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 }
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 printf("regex : %s\n",ri.ptr);
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 printf("merge : %s\n",merge);
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 unsigned char begin, end;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 if (merge[0] == '[') merge++;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 begin = *merge;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 end = *merge;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 for (; *merge && *merge != ']'; merge++) {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 if (*merge == '-') {
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 end = *(merge + 1);
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 merge++;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 continue;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 }
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 if (merge[0] == 0 || merge[0] == ']') break;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 begin = *merge;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 end = *merge;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 }
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 NodePtr n = regex(&ri);
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 TransitionGeneratorPtr tg = generateTransitionList(n);
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 BitVector nextState;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 nextState.bitContainer = 8;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 CharClassPtr cc = charClassMerge(n->cc,begin,end,nextState);
206
e5302c2f6e00 implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 205
diff changeset
52 printCCTree(cc);
205
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 return 0;
b7b8f0c03fe3 add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }