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