Mercurial > hg > Members > masakoha > testcode
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 (2015-12-27) |
parents | b7b8f0c03fe3 |
children | 2ec95755238e |
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 } |