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