Mercurial > hg > Applications > Grep
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c/regexParser/mergeTest.cc Sat Dec 19 14:22:17 2015 +0900 @@ -0,0 +1,43 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "subsetConstraction.h" + +extern NodePtr regex(RegexInfoPtr); +extern void printTree(NodePtr); + +int main(int argc, char **argv) +{ + RegexInfoPtr ri = (RegexInfoPtr)malloc(sizeof(RegexInfo)); + ri->nodeNumber = 1; + unsigned char* merge = NULL; + 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++; + } + } + 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); + printTree(n); + BitVector nextState; + charClassMerge(n->cc,begin,end,nextState); + return 0; +}