Mercurial > hg > Applications > Grep
view 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 |
line wrap: on
line source
#include <stdlib.h> #include "transition.h" StatePtr createState(StatePtr state,BitVector bi) { StatePtr s = state; if (state != NULL) { while (state->next) { state = state->next; } } state = NEW(State); state->bitState = bi; state->transition = NEW(Transition); state->nextNode = NEW(Node); return s; } TransitionPtr createTransition(CharClassPtr cc, BitVectorPtr state) { TransitionPtr transition = NEW(Transition); transition->condition = cc; transition->condition->nextState = *state; return transition; } TransitionPtr appendTransition0(TransitionPtr x, TransitionPtr y) { TransitionPtr x0 = x; for(;;) { if (x->next == NULL) { x->next = y; return x0; } } return x; } TransitionPtr appendTransition(TransitionPtr x, TransitionPtr y) { TransitionPtr x0 = createTransition(x->condition, &x->condition->nextState); TransitionPtr x1 = x0; for(;;) { if (x->next == NULL) { x1->next = y; return x0; } x = x->next; x1->next = createTransition(x->condition, &x->condition->nextState); x1 = x1->next; } return x0; }