Mercurial > hg > Applications > Grep
diff c/regexParser/subsetConstraction.cc @ 144:d8a4922eceae pairPro
remove some errors (not working)
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2015 17:14:33 +0900 |
parents | 32977f5a2ed0 |
children | 1c74ac7d56ec |
line wrap: on
line diff
--- a/c/regexParser/subsetConstraction.cc Fri Dec 11 15:04:58 2015 +0900 +++ b/c/regexParser/subsetConstraction.cc Mon Dec 14 17:14:33 2015 +0900 @@ -3,6 +3,11 @@ #include <ctype.h> #include "subsetConstraction.h" +static +CharClassPtr createCharClassWord(unsigned char *w, CharClassPtr cc1, CharClassPtr cc2) { + return cc1; +} + CharClassPtr charClassMerge(CharClassPtr src, CharClassPtr add) { // 重なっているccの領域を分割する // 必要ならばnextStateを重ねあわせる @@ -11,56 +16,48 @@ if (add->type == 'a') { if (src->cond.w.word[0] > add->cond.w.word[0]) { // add のほうが小さいので小さい順のccをつくる - CharClassPtr left = charClassMerge(add->left.src); - return createCharClassWord(add->cond->w.word, left, add->right); + CharClassPtr left = charClassMerge(add->left,src); + return createCharClassWord(add->cond.w.word, left, add->right); } else { - + } } else if (add->type == 'c') { - // if (src->cond.w.word[0] < add->cond.range.begin) { - } else (src->cond->w.word[0] < add->end) { + } else if (src->cond.w.word[0] < add->cond.range.end) { + + } + } } else if (src->type == 'c') { } } void printTransition(TransitionPtr ts) { - for (;;) { - printf("Input Condition : %c\n",ts->condition->cond->w->word); - printf("Next State : "); bitPrint(ts->nextState); printf("\n"); - if (ts->next == NULL) break; - ts = ts->next; - } + } TGValue generateTransition(NodePtr n,TransitionGenerator tg) { - if (n->tokenType == '+') { TGValue tgv = generateTransition(n->left,tg); if (tgv.asterisk) { TGValue tgv1 = generateTransition(n->right,tg); - tgv.state |= tgv1.state; + tgv.ts->state->bitContainer |= tgv1.ts->state->bitContainer; return tgv; } - tgv.state = n->right->nodeNumber; + bitSet(tgv.ts->state,n->right->nodeNumber); return tgv; } else if (n->tokenType == '|') { - tgv0 = generateTransition(n->left,tg); - tgv1 = generateTransition(n->right,tg); - tg->state->transition = appendTransition(tgv0->ts,tgv1->ts); + } else if (n->tokenType == '*') { - tgv0 = generateTransition(n->left,tg); - tgv0->asterisk = true; + + } else if (n->tokenType == 'c'){ + + } else if (n->tokenType == 'a'){ + } else { - tgv0 = (TGValuePtr)malloc(sizeof(TGValue)); - BitVectorPtr bi = createBitVector(n); - tgv0->ts = createTransition(n->cc,bi); - tgv0->asterisk = false; + // error } - - return tgv0; } StatePtr createStateList(NodePtr n) { @@ -73,7 +70,7 @@ BitVectorPtr bi = createBitVector(n); StatePtr s1 = createState(bi,0,0); } else if (n->tokenType == '+' || n->tokenType == '|') { - + } if (n->right != NULL) { @@ -82,10 +79,9 @@ return s0; } -TransitionGeneratorPtr generateTransitionList(NodePtr n) { - TransitionGeneratorPtr tg = (TransitionGeneratorPtr)malloc(sizeof(TransitionGenerator)); - int d = 0; - tg->state = createStateList(n); +TransitionGenerator generateTransitionList(NodePtr n) { + TransitionGenerator tg; + tg.state = createStateList(n); generateTransition(n,tg); return tg; }