# HG changeset patch # User Masataka Kohagura # Date 1447745754 -32400 # Node ID 07f4761c6c5891e64555c3d9d2d81917cd4457e5 # Parent 2cc0974191691f5a981c4a6204374a8cb5a53261 revert descendTreeNode function diff -r 2cc097419169 -r 07f4761c6c58 c/regexParser/createBitVectorList.cc --- a/c/regexParser/createBitVectorList.cc Tue Nov 17 06:51:12 2015 +0900 +++ b/c/regexParser/createBitVectorList.cc Tue Nov 17 16:35:54 2015 +0900 @@ -21,9 +21,8 @@ } BitVectorListPtr createBitVector(NodePtr n,BitVectorListPtr bvl) { - // BitVectorListPtr nextBvl = bvl->next[(int)n->Value.character] = allocateBitVectorList(); - BitVectorListPtr nextBvl = allocateBitVectorList(); - // nextBvl->self = bvl->next[(int)n->Value.character]; + BitVectorListPtr nextBvl = bvl->next[(int)n->Value.character] = allocateBitVectorList(); + nextBvl->self = bvl->next[(int)n->Value.character]; nextBvl->bi = bitSet(n->nodeNumber); nextBvl->initBvl = initBvl; @@ -45,16 +44,16 @@ } void printBitVectorList (BitVectorListPtr bvl) { - bool flag = true; + bool initPrintFlag = true; for (int i = 0; i < 256; i++) { if (bvl->next[i] != NULL) { - if (flag){ - puts("----"); - printf(" state : "); bitPrint(bvl->bi); - flag = false; - } + if (initPrintFlag) { + puts("----"); + printf(" state : "); bitPrint(bvl->bi); + initPrintFlag = false; + } printf("input char : %c\n",i); - printf("next state : ");bitPrint(bvl->next[i]->bi); + printf("next state : "); bitPrint(bvl->next[i]->bi); } } @@ -66,29 +65,21 @@ } BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl) { - BitVectorListPtr prev = bvl; + if (n->tokenType == '*') { - - } else if (n->Value.character == '|') { - setNextBitVectorList(prev,descendTreeNode(n->left,bvl),n->left); - bvl = setNextBitVectorList(bvl,descendTreeNode(n->right,bvl),n->right); - + bvl = descendTreeNode(n->left,bvl); + } else if (n->tokenType == '|') { + bvl = descendTreeNode(n->left,bvl); + bvl = descendTreeNode(n->parent->right,bvl); } else if (n->Value.character == '+') { - bvl = setNextBitVectorList(prev,descendTreeNode(n->left,bvl),n->left); - bvl = setNextBitVectorList(bvl,descendTreeNode(n->right,bvl),n->right); + bvl = descendTreeNode(n->left,bvl); + bvl = descendTreeNode(n->right,bvl); } else if (n->tokenType == 'a') { bvl = createBitVector(n,bvl); } return bvl; } -BitVectorListPtr setNextBitVectorList(BitVectorListPtr bvl, BitVectorListPtr next, NodePtr n){ - if (isalnum((int)n->Value.character)){ - bvl->next[(int)n->Value.character] = next; - } - return next; -} - BitVectorListPtr createBitVectorList(NodePtr n) { BitVectorListPtr bvl = initBitVector(); descendTreeNode(n,bvl);