annotate c/regexParser/transition.cc @ 111:1d30f70702df pairPro

add determinize.cc and transition.cc
author masa
date Sat, 21 Nov 2015 18:04:25 +0900
parents
children ec485345daf9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
1 #include "transition.h"
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
2
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
3 TransitionPtr createTransition(CharClassPtr cc, BitVectorPtr state) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
4 TransitionPtr transition = (TransitionPtr)malloc(sizeof(Transition));
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
5 transition->condition = cc;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
6 transition->nextState = state;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
7 return transition;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
8 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
9
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
10 TransitionPtr appendTransition0(TransitionPtr x, TransitionPtr y) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
11 TransitionPtr x0 = x;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
12 for(;;) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
13 if (x->next == NULL) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
14 x->next = y
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
15 return x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
16 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
17 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
18 return x;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
19 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
20
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
21 TransitionPtr appendTransition(TransitionPtr x, TransitionPtr y) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
22 TransitionPtr x0 = createTransition(x->condition, x->nextState);
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
23 TransitionPtr x1 = x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
24 for(;;) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
25 if (x->next == NULL) {
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
26 x1->next = y;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
27 return x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
28 }
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
29 x = x->next;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
30 x1->next = createTransition(x->condition, x->nextState);
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
31 x1 = x1->next;
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 x0;
1d30f70702df add determinize.cc and transition.cc
masa
parents:
diff changeset
34 }