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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
2 #include "transition.h"
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
22 return transition;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
23 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
24
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
25 TransitionPtr appendTransition0(TransitionPtr x, TransitionPtr y) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
26 TransitionPtr x0 = x;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
27 for(;;) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
30 return x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
31 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
32 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
33 return x;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
34 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
35
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
38 TransitionPtr x1 = x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
39 for(;;) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
40 if (x->next == NULL) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
41 x1->next = y;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
42 return x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
43 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
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
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
46 x1 = x1->next;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
47 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
48 return x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
49 }