Mercurial > hg > Applications > Grep
annotate regexParser/main.cc @ 260:3f3c9902bb6d
initialize node in allocateNode()
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 14:30:20 +0900 |
parents | 6a6546a753cf |
children | 157f6886ba55 |
rev | line source |
---|---|
45 | 1 #include <stdio.h> |
56
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
2 #include <stdlib.h> |
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
3 #include <string.h> |
235
4aab1e93a971
fix condition grepWalk.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
232
diff
changeset
|
4 #include <unistd.h> |
187
ef798db705e9
remove some warnings and errors(not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
5 #include "regexParser.h" |
216 | 6 #include "subsetConstruction.h" |
190
3e8e5780ad4a
change node::State to State
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
189
diff
changeset
|
7 #include "node.h" |
231
d67649929e96
add grepWalk
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
8 #include "grepWalk.h" |
232
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
9 #include "fileread.h" |
260
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
10 #include "threadedSearch.h" |
76 | 11 |
62
a49b4a8b8c14
implement isLiteral
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
61
diff
changeset
|
12 int main(int argc, char **argv) |
55 | 13 { |
216 | 14 bool generate = true; |
15 bool subset = false; | |
228
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
16 bool generateSequentialSearch = false; |
260
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
17 bool ts = false; |
232
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
18 char *filename; |
216 | 19 |
178
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
20 RegexInfo ri; |
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
21 ri.stateNumber = 1; |
56
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
22 for (int i = 1; i < argc; i++) { |
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
23 if (strcmp(argv[i],"-regex") == 0) { |
178
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
24 ri.ptr = (unsigned char*)argv[i+1]; i++; |
216 | 25 } else if (strcmp(argv[i],"-noGeneration") == 0) { |
26 generate = false; | |
27 } else if (strcmp(argv[i],"-subset") == 0) { | |
28 subset = true; | |
228
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
29 } else if (strcmp(argv[i],"-seq") == 0) { |
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
30 generateSequentialSearch = true; |
232
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
31 } else if (strcmp(argv[i],"-file") == 0) { |
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
32 filename = argv[i+1]; i++; |
260
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
33 } else if (strcmp(argv[i],"-ts") == 0) { |
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
34 ts = true; |
56
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
35 } |
8901bc071d33
implement string() and literal()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
36 } |
216 | 37 if (!ri.ptr) return 0; |
38 | |
178
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
39 printf("regex : %s\n",ri.ptr); |
216 | 40 NodePtr n = regex(&ri); // parse only |
214
a94f57af1600
remove allocateCCstate createCCState
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
195
diff
changeset
|
41 printTree(n); |
216 | 42 |
231
d67649929e96
add grepWalk
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
43 TGValue tgv; |
219
a8e477f1352d
add an example for subset construction
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
217
diff
changeset
|
44 if (generate && !subset) { // NFA generation |
231
d67649929e96
add grepWalk
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
45 tgv = generateTransitionList(n); |
217 | 46 printTree(n); |
216 | 47 printState(tgv.tg); |
228
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
48 if (generateSequentialSearch) { |
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
49 exportState(tgv.tg); |
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
50 } |
216 | 51 } else if (subset) { |
231
d67649929e96
add grepWalk
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
52 tgv = generateTransitionList(n); |
249
9493800265a8
remove SCValue(not all remove)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
235
diff
changeset
|
53 subsetConstruction(tgv.tg); // Determinization |
216 | 54 printState(tgv.tg); |
228
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
55 if (generateSequentialSearch) { |
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
56 exportState(tgv.tg); |
399380ad95b7
fix generateTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
222
diff
changeset
|
57 } |
216 | 58 } |
231
d67649929e96
add grepWalk
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
59 |
232
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
60 if (filename != NULL) { |
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
61 int fd = 0; |
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
62 st_mmap_t st_mmap = createSt_mmap(filename,fd); |
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
63 Buffer buff = createBuffer(st_mmap); |
260
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
64 TSValue tsv; |
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
65 tsv.buff = buff; |
3f3c9902bb6d
initialize node in allocateNode()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
259
diff
changeset
|
66 if (ts) tSearch(tsv); |
259
6a6546a753cf
tSearch of driver in main.cc (not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
249
diff
changeset
|
67 else grepWalk(tgv.tg,buff); |
235
4aab1e93a971
fix condition grepWalk.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
232
diff
changeset
|
68 close(fd); |
232
1a34e702776a
add fileread.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
231
diff
changeset
|
69 } |
45 | 70 return 0; |
71 } |