Mercurial > hg > Applications > Grep
diff regexParser/subsetConstraction.cc @ 187:ef798db705e9 pairPro
remove some warnings and errors(not working)
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 24 Dec 2015 22:38:50 +0900 |
parents | 3e8aae8beba9 |
children | 109d22faf7b5 |
line wrap: on
line diff
--- a/regexParser/subsetConstraction.cc Thu Dec 24 20:37:29 2015 +0900 +++ b/regexParser/subsetConstraction.cc Thu Dec 24 22:38:50 2015 +0900 @@ -186,7 +186,7 @@ } } -CharClassPtr mergeTransition(StatePtr x,CharClassPtr y) { +CharClassPtr mergeTransition(node::StatePtr x,CharClassPtr y) { if (x->cc == NULL) { return y; } @@ -208,14 +208,15 @@ bitvector を index とした配列に BitVectorPtr を格納 state に対応する NodePtr を */ -TGValue createState(TGValue tg,NodePtr n) { - StatePtr s = NEW(State); +node::StatePtr createState(TGValue tg,NodePtr n) { + node::StatePtr s = NEW(node::State); s->next = tg.tg->currentState; tg.tg->currentState = s; s->node = n; - BitVector bi = createBitVector(tg.stateBegin); + BitVector bi = createBitVector(n->stateNum); s->bitState = bi; s->cc = NULL; + return s; } /** @@ -273,11 +274,11 @@ tgRight.asterisk = true; return tgRight; } - StatePtr left = tg.state; - tg.state = n->left->state; - tg.tg.stateArray[tg.state->bitState.bitContainer] = tg.state; + node::StatePtr left = tg.tgState; + tg.tgState = n->left->state; + // tg.tg->stateArray[tg.tgState->bitState.bitContainer] = tg.tgState; TGValue tgLeft = generateTransition(n->left,tg); - tg.state = left; + tg.tgState = left; TGValue tgv1 = generateTransition(n->right,tgLeft); return tgv1; } else if (n->tokenType == '|') { @@ -285,7 +286,7 @@ TGValue tgv1 = generateTransition(n->right,tgv); return tgv1; } else if (n->tokenType == '*') { - tgAstah = generateTransition(n->left,tgAstah); + TGValue tgAstah = generateTransition(n->left,tg); tgAstah.asterisk = true; return tgAstah; } else if (n->tokenType == 'c' || n->tokenType == 'a'){ @@ -293,43 +294,36 @@ tgv.asterisk = false; BitVector bi = createBitVector(n->nextStateNum); setState(n->cc,bi); - tgv.state->cc = mergeTransition(tgv.state,n->cc); + tgv.tgState->cc = mergeTransition(tgv.tgState,n->cc); return tgv; } else { return tg; } } -void printTransitionList(TransitionPtr ts) { - for (;ts;ts = ts->next) { - printf("\n"); - } -} - TransitionGeneratorPtr createTransitionGenerator() { TransitionGeneratorPtr tg = NEW(TransitionGenerator); tg->stateMax = 0; tg->stack = NULL; - tg->state = NEW(State); + tg->state = NEW(node::State); tg->stateArray = NULL; tg->currentState = NULL; return tg; } -TransitionGenerator generateTransitionList(NodePtr n) { +TransitionGeneratorPtr generateTransitionList(NodePtr n) { TransitionGeneratorPtr tg = createTransitionGenerator(); TGValue tgv; tgv.asterisk = false; tgv.tg = tg; - StatePtr start = createState(tgv,n); + node::StatePtr start = createState(tgv,n); NodePtr eof = createNode(NULL,'e',NULL,NULL,NULL); - StatePtr end = createState(tgv,eof); + node::StatePtr end = createState(tgv,eof); tgv.stateBegin = 0; tgv.stateEnd = 1; stateAllocate(n,tgv); - tgv.tg->stateMax = tg.stateNum; - tgv.tg.stateArray = (StatePtr)calloc(tg.stateNum,sizeof(StatePtr)); + tgv.tg->stateMax = tg->stateMax; + tgv.tg->stateArray = (node::StatePtr)calloc(tg->stateMax,sizeof(node::StatePtr)); generateTransition(n,tgv); - printTransitionList(tg.ts); return tg; }