comparison regexParser/CeriumGrep.cc @ 312:c9ac6f06e706

add loop
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 09 Feb 2016 10:59:22 +0900
parents bdfe0a32c48f
children a4484c02cba5
comparison
equal deleted inserted replaced
311:1d79e61a9365 312:c9ac6f06e706
6 #include "subsetConstruction.h" 6 #include "subsetConstruction.h"
7 #include "node.h" 7 #include "node.h"
8 #include "grepWalk.h" 8 #include "grepWalk.h"
9 #include "fileread.h" 9 #include "fileread.h"
10 #include "threadedSearch.h" 10 #include "threadedSearch.h"
11 #include "generateSequentialSearch.h"
11 12
12 Search grep(int argc,char **argv,bool parallel) 13 Search grep(int argc,char **argv,bool parallel)
13 { 14 {
14 bool generate = true; 15 bool generate = true;
15 bool subset = false; 16 bool subset = false;
16 bool generateSequentialSearch = false; 17 void (*generateSequentialSearch)(TransitionGeneratorPtr) = NULL;
17 bool ts = false; 18 bool ts = false;
18 char *filename = NULL; 19 char *filename = NULL;
19 Search s; 20 Search s;
20 s.filename = 0; 21 s.filename = 0;
21 s.tg = NULL; 22 s.tg = NULL;
28 } else if (strcmp(argv[i],"-noGeneration") == 0) { 29 } else if (strcmp(argv[i],"-noGeneration") == 0) {
29 generate = false; 30 generate = false;
30 } else if (strcmp(argv[i],"-subset") == 0) { 31 } else if (strcmp(argv[i],"-subset") == 0) {
31 subset = true; 32 subset = true;
32 } else if (strcmp(argv[i],"-seq") == 0) { 33 } else if (strcmp(argv[i],"-seq") == 0) {
33 generateSequentialSearch = true; 34 generateSequentialSearch = exportState;
35 } else if (strcmp(argv[i],"-loop") == 0) {
36 generateSequentialSearch = exportStateLoop;
37 } else if (strcmp(argv[i],"-cbc") == 0) {
38 generateSequentialSearch = exportStateCbC;
34 } else if (strcmp(argv[i],"-file") == 0) { 39 } else if (strcmp(argv[i],"-file") == 0) {
35 s.filename = filename = argv[i+1]; i++; 40 s.filename = filename = argv[i+1]; i++;
36 } else if (strcmp(argv[i],"-ts") == 0) { 41 } else if (strcmp(argv[i],"-ts") == 0) {
37 ts = true; 42 ts = true;
38 } 43 }
54 } else if (subset) { 59 } else if (subset) {
55 tgv = generateTransitionList(n); 60 tgv = generateTransitionList(n);
56 subsetConstruction(tgv.tg); // Determinization 61 subsetConstruction(tgv.tg); // Determinization
57 printState(tgv.tg); 62 printState(tgv.tg);
58 if (generateSequentialSearch) { 63 if (generateSequentialSearch) {
59 exportState(tgv.tg); 64 generateSequentialSearch(tgv.tg);
60 } 65 }
61 } 66 }
62 67
63 if (filename != NULL && !parallel) { 68 if (filename != NULL && !parallel) {
64 int fd = 0; 69 int fd = 0;