Mercurial > hg > Applications > Grep
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) { |