Mercurial > hg > Applications > Grep
annotate regexParser/transition.cc @ 175:3be0fbcd4b52 pairPro
implement createTransitionGenerator
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Dec 2015 20:27:26 +0900 |
parents | 540fc12871d9 |
children | c092dd0e1ae0 |
rev | line source |
---|---|
116
66c633575b53
remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
1 #include <stdlib.h> |
111 | 2 #include "transition.h" |
3 | |
175
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
4 StatePtr createState(StatePtr state,BitVector bi) { |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
5 StatePtr s = state; |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
6 if (state != NULL) { |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
7 while (state->next) { |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
8 state = state->next; |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
9 } |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
10 } |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
11 state = NEW(State); |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
12 state->bitState = bi; |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
13 state->transition = NEW(Transition); |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
14 state->nextNode = NEW(Node); |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
15 return s; |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
16 } |
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
17 |
111 | 18 TransitionPtr createTransition(CharClassPtr cc, BitVectorPtr state) { |
175
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
172
diff
changeset
|
19 TransitionPtr transition = NEW(Transition); |
111 | 20 transition->condition = cc; |
172
540fc12871d9
remove some warnings and errors (not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
21 transition->condition->nextState = *state; |
111 | 22 return transition; |
23 } | |
24 | |
25 TransitionPtr appendTransition0(TransitionPtr x, TransitionPtr y) { | |
26 TransitionPtr x0 = x; | |
27 for(;;) { | |
28 if (x->next == NULL) { | |
116
66c633575b53
remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
29 x->next = y; |
111 | 30 return x0; |
31 } | |
32 } | |
33 return x; | |
34 } | |
35 | |
36 TransitionPtr appendTransition(TransitionPtr x, TransitionPtr y) { | |
172
540fc12871d9
remove some warnings and errors (not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
37 TransitionPtr x0 = createTransition(x->condition, &x->condition->nextState); |
111 | 38 TransitionPtr x1 = x0; |
39 for(;;) { | |
40 if (x->next == NULL) { | |
41 x1->next = y; | |
42 return x0; | |
43 } | |
44 x = x->next; | |
172
540fc12871d9
remove some warnings and errors (not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
167
diff
changeset
|
45 x1->next = createTransition(x->condition, &x->condition->nextState); |
111 | 46 x1 = x1->next; |
47 } | |
48 return x0; | |
49 } |