Mercurial > hg > Applications > Grep
diff 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 |
line wrap: on
line diff
--- a/regexParser/test/ccMerge.cc Sun Dec 27 16:51:14 2015 +0900 +++ b/regexParser/test/ccMerge.cc Sun Dec 27 18:46:08 2015 +0900 @@ -19,36 +19,27 @@ int main(int argc, char **argv) { - RegexInfo ri; - unsigned char* merge = NULL; + RegexInfo riRegex; + NodePtr n = NULL; + StatePtr s = NULL; + TGValue tgv = createTGValue(); for (int i = 1; i < argc; i++) { if (strcmp(argv[i],"-regex") == 0) { - ri.ptr = (unsigned char*)argv[i+1]; i++; - } else if (strcmp(argv[i],"-merge") == 0) { - merge = (unsigned char*)argv[i+1]; i++; + riRegex.ptr = (unsigned char*)argv[i+1]; i++; + printf("regex : %s\n",riRegex.ptr); + NodePtr nMerge = regex(&riRegex); + StatePtr sMerge = createState(tgv,nMerge); + setState(sMerge->cc,sMerge->bitState); + if (s == NULL) { + s = sMerge; + n = nMerge; + printCCTree(s->cc); + continue; + } + CharClassPtr cc = mergeTransition(s,sMerge->cc); + s->cc = cc; + printCCTree(s->cc); } } - printf("regex : %s\n",ri.ptr); - printf("merge : %s\n",merge); - unsigned char begin, end; - if (merge[0] == '[') merge++; - begin = *merge; - end = *merge; - for (; *merge && *merge != ']'; merge++) { - if (*merge == '-') { - end = *(merge + 1); - merge++; - continue; - } - if (merge[0] == 0 || merge[0] == ']') break; - begin = *merge; - end = *merge; - } - NodePtr n = regex(&ri); - TransitionGeneratorPtr tg = generateTransitionList(n); - BitVector nextState; - nextState.bitContainer = 8; - CharClassPtr cc = charClassMerge(n->cc,begin,end,nextState); - printCCTree(cc); return 0; }