Mercurial > hg > Applications > Grep
annotate regexParser/test/ccMerge.cc @ 310:df27e6cab846
CharClassMerge with Word ( no match implementation )
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Feb 2016 19:23:37 +0900 |
parents | 1188debbef10 |
children |
rev | line source |
---|---|
205
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #include <stdio.h> |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 #include <stdlib.h> |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 #include <string.h> |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 #include "regexParser.h" |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 #include "node.h" |
308 | 6 #include "CharClass.h" |
216 | 7 #include "subsetConstruction.h" |
205
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 |
206
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
9 void printCCTree(CharClassPtr cc) { |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
10 if (cc->left != NULL) { |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
11 printCCTree(cc->left); |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
12 } |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
13 |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
14 printf("range : [%c-%c] NextState : %lu\n",(unsigned char)cc->cond.range.begin,(unsigned char)cc->cond.range.end, cc->nextState.bitContainer); |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
15 |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
16 if (cc->right != NULL) { |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
17 printCCTree(cc->right); |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
18 } |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
19 } |
e5302c2f6e00
implement printCCTree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
205
diff
changeset
|
20 |
205
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 int main(int argc, char **argv) |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 { |
213
11b6332f0a42
fix tgv.tg->totalStateCount increment
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
208
diff
changeset
|
23 RegexInfo ri; |
208
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
24 NodePtr n = NULL; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
25 StatePtr s = NULL; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
26 TGValue tgv = createTGValue(); |
310
df27e6cab846
CharClassMerge with Word ( no match implementation )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
308
diff
changeset
|
27 State dummy; |
df27e6cab846
CharClassMerge with Word ( no match implementation )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
308
diff
changeset
|
28 tgv.tg->stateEnd = &dummy; |
205
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 for (int i = 1; i < argc; i++) { |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 if (strcmp(argv[i],"-regex") == 0) { |
213
11b6332f0a42
fix tgv.tg->totalStateCount increment
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
208
diff
changeset
|
31 ri.ptr = (unsigned char*)argv[i+1]; i++; |
11b6332f0a42
fix tgv.tg->totalStateCount increment
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
208
diff
changeset
|
32 printf("regex : %s\n",ri.ptr); |
11b6332f0a42
fix tgv.tg->totalStateCount increment
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
208
diff
changeset
|
33 NodePtr nMerge = regex(&ri); |
208
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
34 StatePtr sMerge = createState(tgv,nMerge); |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
35 setState(sMerge->cc,sMerge->bitState); |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
36 if (s == NULL) { |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
37 s = sMerge; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
38 n = nMerge; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
39 printCCTree(s->cc); |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
40 continue; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
41 } |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
42 CharClassPtr cc = mergeTransition(s,sMerge->cc); |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
43 s->cc = cc; |
2ec95755238e
fix mergetest
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
44 printCCTree(s->cc); |
205
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 } |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 } |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 return 0; |
b7b8f0c03fe3
add test/ccMerge.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 } |