Mercurial > hg > Applications > Grep
view c/regexParser/subsetConstraction.cc @ 148:d1ebba6e117a pairPro
add test routing
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Dec 2015 18:09:54 +0900 |
parents | 1c74ac7d56ec |
children | 1c9e8ba64f6a |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include "subsetConstraction.h" static CharClassPtr createCharClassWord(unsigned char *w, CharClassPtr cc1, CharClassPtr cc2) { CharClassPtr cc = NEW(CharClass); return cc1; } CharClassPtr charClassMerge(CharClassPtr src, CharClassPtr add) { // 重なっているccの領域を分割する // 必要ならばnextStateを重ねあわせる // 変更があった場合は新しくリストを作って返す if (src->type == 'a') { 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); } else { } } else if (add->type == 'c') { if (src->cond.w.word[0] < add->cond.range.begin) { } else if (src->cond.w.word[0] < add->cond.range.end) { } } } else if (src->type == 'c') { } } void printTransition(TransitionPtr ts) { } 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.ts->state->bitContainer |= tgv1.ts->state->bitContainer; return tgv; } bitSet(tgv.ts->state,n->right->nodeNumber); return tgv; } else if (n->tokenType == '|') { } else if (n->tokenType == '*') { } else if (n->tokenType == 'c'){ } else if (n->tokenType == 'a'){ } else { // error } } TransitionGenerator generateTransitionList(NodePtr n) { TransitionGenerator tg; generateTransition(n,tg); return tg; }