Mercurial > hg > Applications > Grep
comparison regexParser/test/ccMerge.cc @ 208:2ec95755238e
fix mergetest
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 27 Dec 2015 18:46:08 +0900 |
parents | e5302c2f6e00 |
children | 11b6332f0a42 |
comparison
equal
deleted
inserted
replaced
207:58d3c01bf421 | 208:2ec95755238e |
---|---|
17 } | 17 } |
18 } | 18 } |
19 | 19 |
20 int main(int argc, char **argv) | 20 int main(int argc, char **argv) |
21 { | 21 { |
22 RegexInfo ri; | 22 RegexInfo riRegex; |
23 unsigned char* merge = NULL; | 23 NodePtr n = NULL; |
24 StatePtr s = NULL; | |
25 TGValue tgv = createTGValue(); | |
24 for (int i = 1; i < argc; i++) { | 26 for (int i = 1; i < argc; i++) { |
25 if (strcmp(argv[i],"-regex") == 0) { | 27 if (strcmp(argv[i],"-regex") == 0) { |
26 ri.ptr = (unsigned char*)argv[i+1]; i++; | 28 riRegex.ptr = (unsigned char*)argv[i+1]; i++; |
27 } else if (strcmp(argv[i],"-merge") == 0) { | 29 printf("regex : %s\n",riRegex.ptr); |
28 merge = (unsigned char*)argv[i+1]; i++; | 30 NodePtr nMerge = regex(&riRegex); |
31 StatePtr sMerge = createState(tgv,nMerge); | |
32 setState(sMerge->cc,sMerge->bitState); | |
33 if (s == NULL) { | |
34 s = sMerge; | |
35 n = nMerge; | |
36 printCCTree(s->cc); | |
37 continue; | |
38 } | |
39 CharClassPtr cc = mergeTransition(s,sMerge->cc); | |
40 s->cc = cc; | |
41 printCCTree(s->cc); | |
29 } | 42 } |
30 } | 43 } |
31 printf("regex : %s\n",ri.ptr); | |
32 printf("merge : %s\n",merge); | |
33 unsigned char begin, end; | |
34 if (merge[0] == '[') merge++; | |
35 begin = *merge; | |
36 end = *merge; | |
37 for (; *merge && *merge != ']'; merge++) { | |
38 if (*merge == '-') { | |
39 end = *(merge + 1); | |
40 merge++; | |
41 continue; | |
42 } | |
43 if (merge[0] == 0 || merge[0] == ']') break; | |
44 begin = *merge; | |
45 end = *merge; | |
46 } | |
47 NodePtr n = regex(&ri); | |
48 TransitionGeneratorPtr tg = generateTransitionList(n); | |
49 BitVector nextState; | |
50 nextState.bitContainer = 8; | |
51 CharClassPtr cc = charClassMerge(n->cc,begin,end,nextState); | |
52 printCCTree(cc); | |
53 return 0; | 44 return 0; |
54 } | 45 } |