# HG changeset patch # User Masataka Kohagura # Date 1447146533 -32400 # Node ID d0d2262d4edf1fb8f01e9174e3c799f816198768 # Parent 0b6940588e88a27185c5c61a648d5a87f551f6d4 implement if (NodeChar == '+') diff -r 0b6940588e88 -r d0d2262d4edf c/regexParser/bitVector.cc --- a/c/regexParser/bitVector.cc Tue Nov 10 16:18:06 2015 +0900 +++ b/c/regexParser/bitVector.cc Tue Nov 10 18:08:53 2015 +0900 @@ -15,9 +15,6 @@ bi->arrayNum = (bitSetPosition + 1) / bitBlock; if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; - printf("Array Num : %d\n",bi->arrayNum); - - for (int i = 0; i < bi->arrayNum; i++) { bi->bitContainer[i] = 0; } diff -r 0b6940588e88 -r d0d2262d4edf c/regexParser/bitVector.h --- a/c/regexParser/bitVector.h Tue Nov 10 16:18:06 2015 +0900 +++ b/c/regexParser/bitVector.h Tue Nov 10 18:08:53 2015 +0900 @@ -4,6 +4,7 @@ }BitVector,*BitVectorPtr; typedef struct bitVectorList { + bitVectorList *self; BitVectorPtr bi; bitVectorList* next[256]; }BitVectorList, *BitVectorListPtr; diff -r 0b6940588e88 -r d0d2262d4edf c/regexParser/createBitVectorList.cc --- a/c/regexParser/createBitVectorList.cc Tue Nov 10 16:18:06 2015 +0900 +++ b/c/regexParser/createBitVectorList.cc Tue Nov 10 18:08:53 2015 +0900 @@ -11,19 +11,28 @@ int bvlIndex; BitVectorListPtr createBitVector(NodePtr n,BitVectorListPtr bvl) { - bvl->next[(int)n->Value.character] = (BitVectorListPtr)malloc(sizeof(BitVectorList)); - bvl->next[(int)n->Value.character]->bi = bitSet(n->nodeNumber); + BitVectorListPtr nextBvl = bvl->next[(int)n->Value.character] = (BitVectorListPtr)malloc(sizeof(BitVectorList)); + nextBvl->bi = (BitVectorPtr)malloc(sizeof(BitVector)); + nextBvl->bi = bitSet(n->nodeNumber); + nextBvl->self = bvl->next[(int)n->Value.character]; + puts("-----"); - bitPrint(bvl->bi); - bitPrint(bvl->next[(int)n->Value.character]->bi); + printf(" state : "); bitPrint(bvl->bi); + for (int i = 0; i < 256; i++) { + if (bvl->next[i] != NULL) { + printf("input char : %c\n",i); + } + } + printf("next state : ");bitPrint(bvl->next[(int)n->Value.character]->bi); puts("-----"); return bvl->next[(int)n->Value.character]; } BitVectorListPtr initBitVector() { BitVectorListPtr bvl = (BitVectorListPtr)malloc(sizeof(BitVectorList)); - BitVectorPtr bi = bitSet(0); - bvl->bi = bi; + bvl->self = bvl; + bvl->bi = (BitVectorPtr)malloc(sizeof(BitVector)); + bvl->bi = bitSet(0); return bvl; } @@ -31,17 +40,14 @@ BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl) { if (n->tokenType == '*') { - descendTreeNode(n->left,bvl); + bvl = descendTreeNode(n->left,bvl); } else if (n->tokenType == '|') { } else if (n->Value.character == '+') { - descendTreeNode(n->left,bvl); - descendTreeNode(n->right,bvl); - } else { - if (n->parent->right->tokenType == 'a') { - descendTreeNode(n->parent->right,bvl); - bvl = createBitVector(n,bvl); - } + bvl = descendTreeNode(n->left,bvl); + bvl = descendTreeNode(n->right,bvl); + } else if (n->tokenType == 'a') { + bvl = createBitVector(n,bvl); } return bvl;