comparison regexParser/cerium/CeriumMain.cc @ 288:f2491681914e

special state for start search
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 01 Feb 2016 01:35:12 +0900
parents 555ca452f031
children 868f01f1ba8e
comparison
equal deleted inserted replaced
287:2f3e7bba038e 288:f2491681914e
27 return tsv; 27 return tsv;
28 } 28 }
29 29
30 static 30 static
31 TSValue stateSkip(TSValue tsv) { 31 TSValue stateSkip(TSValue tsv) {
32 tsv.current = tsv.tg->stateList->tState; 32 tsv.current = tsv.tg->stateStart->tState;
33 tsv.buff.matchBegin = tsv.buff.buffptr; 33 tsv.buff.matchBegin = tsv.buff.buffptr;
34 return tsv; 34 return tsv;
35 } 35 }
36 36
37 static 37 static
41 r->begin = tsv.buff.matchBegin; 41 r->begin = tsv.buff.matchBegin;
42 r->end = tsv.buff.buffptr; 42 r->end = tsv.buff.buffptr;
43 *tsv.resultEnd = r; 43 *tsv.resultEnd = r;
44 r->next = NULL; 44 r->next = NULL;
45 tsv.resultEnd = &r->next; 45 tsv.resultEnd = &r->next;
46 tsv.current = tsv.tg->stateList->tState;
47 tsv.buff.buffptr--; 46 tsv.buff.buffptr--;
48 tsv = stateSkip(tsv); 47 tsv = stateSkip(tsv);
49 return tsv; 48 return tsv;
50 } 49 }
51 50
61 puts(""); 60 puts("");
62 } 61 }
63 return prev; 62 return prev;
64 } 63 }
65 64
66 void ceriumCreateAnyState(TransitionGeneratorPtr tg) { 65 void
66 ceriumCreateAnyState(TransitionGeneratorPtr tg) {
67 tg->stateSkip = stateSkip; 67 tg->stateSkip = stateSkip;
68 tg->stateMatch = stateMatch; 68 tg->stateMatch = stateMatch;
69 tg->stateNothing = stateNothing; 69 tg->stateNothing = stateNothing;
70 createAnyState(tg); 70 createAnyState(tg);
71 generateTState(tg->anyState,tg); 71 generateTState(tg->anyState,tg);
72 // generateTState for startState. It is used in stateMatch. 72 // generateTState for startState. It is used in stateMatch.
73 generateTState(tg->stateList,tg); 73 generateTState(tg->stateList,tg);
74 tg->stateStart = NEW(State);
75 *tg->stateStart = *tg->stateList;
76 tg->stateStart->accept = false; // Start state never accept
77 generateTState(tg->stateStart,tg);
74 } 78 }
75 79
76 int 80 int
77 TMmain(TaskManager *manager, int argc, char *argv[]) 81 TMmain(TaskManager *manager, int argc, char *argv[])
78 { 82 {