comparison regexParser/main.cc @ 228:399380ad95b7

fix generateTransitionGenerator
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Fri, 15 Jan 2016 19:48:53 +0900
parents c38a7b2dd996
children d67649929e96
comparison
equal deleted inserted replaced
227:8be58af605da 228:399380ad95b7
7 7
8 int main(int argc, char **argv) 8 int main(int argc, char **argv)
9 { 9 {
10 bool generate = true; 10 bool generate = true;
11 bool subset = false; 11 bool subset = false;
12 bool generateSequentialSearch = false;
12 13
13 RegexInfo ri; 14 RegexInfo ri;
14 ri.stateNumber = 1; 15 ri.stateNumber = 1;
15 for (int i = 1; i < argc; i++) { 16 for (int i = 1; i < argc; i++) {
16 if (strcmp(argv[i],"-regex") == 0) { 17 if (strcmp(argv[i],"-regex") == 0) {
17 ri.ptr = (unsigned char*)argv[i+1]; i++; 18 ri.ptr = (unsigned char*)argv[i+1]; i++;
18 } else if (strcmp(argv[i],"-noGeneration") == 0) { 19 } else if (strcmp(argv[i],"-noGeneration") == 0) {
19 generate = false; 20 generate = false;
20 } else if (strcmp(argv[i],"-subset") == 0) { 21 } else if (strcmp(argv[i],"-subset") == 0) {
21 subset = true; 22 subset = true;
23 } else if (strcmp(argv[i],"-seq") == 0) {
24 generateSequentialSearch = true;
22 } 25 }
23 } 26 }
24 if (!ri.ptr) return 0; 27 if (!ri.ptr) return 0;
25 28
26 printf("regex : %s\n",ri.ptr); 29 printf("regex : %s\n",ri.ptr);
29 32
30 if (generate && !subset) { // NFA generation 33 if (generate && !subset) { // NFA generation
31 TGValue tgv = generateTransitionList(n); 34 TGValue tgv = generateTransitionList(n);
32 printTree(n); 35 printTree(n);
33 printState(tgv.tg); 36 printState(tgv.tg);
34 exportState(tgv.tg); 37 if (generateSequentialSearch) {
38 exportState(tgv.tg);
39 }
35 } else if (subset) { 40 } else if (subset) {
36 TGValue tgv = generateTransitionList(n); 41 TGValue tgv = generateTransitionList(n);
37 SCValue scv = createSCValue(tgv); 42 SCValue scv = createSCValue(tgv);
38 subsetConstruction(scv); // Determinization 43 subsetConstruction(scv); // Determinization
39 printState(tgv.tg); 44 printState(tgv.tg);
40 exportState(tgv.tg); 45 if (generateSequentialSearch) {
46 exportState(tgv.tg);
47 }
41 } 48 }
42 return 0; 49 return 0;
43 } 50 }