comparison regexParser/cerium/CeriumMain.cc @ 278:99d635926ef3

ceriumCreateAnyState implemented
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sat, 30 Jan 2016 21:19:05 +0900
parents 7b4bcc7b5ae6
children 6cc1d9779f45
comparison
equal deleted inserted replaced
277:7b4bcc7b5ae6 278:99d635926ef3
19 struct timeval tv; 19 struct timeval tv;
20 gettimeofday(&tv, NULL); 20 gettimeofday(&tv, NULL);
21 return tv.tv_sec + (double)tv.tv_usec*1e-6; 21 return tv.tv_sec + (double)tv.tv_usec*1e-6;
22 } 22 }
23 23
24 static
25 TSValue stateNothing(TSValue tsv) {
26 return tsv;
27 }
28
29 static
30 TSValue stateSkip(TSValue tsv) {
31 tsv.buff.matchBegin = tsv.buff.buffptr;
32 return tsv;
33 }
34
35 static
36 TSValue stateMatch(TSValue tsv) {
37 ResultPtr r = NEW(Result);
38 r->begin = tsv.buff.matchBegin;
39 r->end = tsv.buff.buffptr;
40 *tsv.resultEnd = r;
41 r->next = NULL;
42 tsv.resultEnd = &r->next;
43 tsv.current = tsv.tg->stateList->tState;
44 tsv.buff.buffptr--;
45 tsv = stateSkip(tsv);
46 return tsv;
47 }
48
49 void ceriumCreateAnyState(TransitionGeneratorPtr tg) {
50 tg->stateSkip = stateSkip;
51 tg->stateMatch = stateMatch;
52 tg->stateNothing = stateNothing;
53 createAnyState(tg);
54 generateTState(tg->anyState,tg);
55 // generateTState for startState. It is used in stateMatch.
56 generateTState(tg->stateList,tg);
57 }
58
24 int 59 int
25 TMmain(TaskManager *manager, int argc, char *argv[]) 60 TMmain(TaskManager *manager, int argc, char *argv[])
26 { 61 {
27 char *filename = 0; 62 char *filename = 0;
28 st_time = getTime(); 63 st_time = getTime();
29 Search s = grep(argc,argv,true); 64 Search s = grep(argc,argv,true);
30 65
31 createAnyState(s.tg); 66 ceriumCreateAnyState(s.tg);
32 generateTState(s.tg->anyState,s.tg);
33 // generateTState for startState. It is used in stateMatch.
34 generateTState(s.tg->stateList,s.tg);
35 67
36 FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT); 68 FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT);
37 filename = fmp->init(argc, argv); 69 filename = fmp->init(argc, argv);
38 fmp->w->global = (void*)s.tg; 70 fmp->w->global = (void*)s.tg;
39 if (filename < 0) { 71 if (filename < 0) {