Mercurial > hg > Applications > Grep
annotate regexParser/mergeTest.cc @ 174:b9e913030a47 pairPro
allocate nodeNumber to character and cclist (not allocate nodenumber '+' '*' '|')
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Dec 2015 18:48:11 +0900 |
parents | 3bf2c6d6d53e |
children | 109d22faf7b5 |
rev | line source |
---|---|
164
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #include <stdio.h> |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 #include <stdlib.h> |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 #include <string.h> |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 #include "subsetConstraction.h" |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 extern NodePtr regex(RegexInfoPtr); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 extern void printTree(NodePtr); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 int main(int argc, char **argv) |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 RegexInfoPtr ri = (RegexInfoPtr)malloc(sizeof(RegexInfo)); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 ri->nodeNumber = 1; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 unsigned char* merge = NULL; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 for (int i = 1; i < argc; i++) { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 if (strcmp(argv[i],"-regex") == 0) { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 ri->ptr = (unsigned char*)argv[i+1]; i++; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 } else if (strcmp(argv[i],"-merge") == 0) { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 merge = (unsigned char*)argv[i+1]; i++; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 } |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 } |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 printf("regex : %s\n",ri->ptr); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 printf("merge : %s\n",merge); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 unsigned char begin, end; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 if (merge[0] == '[') merge++; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 begin = *merge; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 end = *merge; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 for (; *merge && *merge != ']'; merge++) { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 if (*merge == '-') { |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 end = *(merge + 1); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 merge++; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 continue; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 } |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 if (merge[0] == 0 || merge[0] == ']') break; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 begin = *merge; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 end = *merge; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 } |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 NodePtr n = regex(ri); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 printTree(n); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 BitVector nextState; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 charClassMerge(n->cc,begin,end,nextState); |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 return 0; |
93d3ad1d20ed
add mergeTest.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 } |