# HG changeset patch # User Masataka Kohagura # Date 1447137393 -32400 # Node ID b807383bcc43ca6adc475a64eaf898ef5aaab705 # Parent 1cdad0468484d526edd482f864c03cca42bb3603 add createBitVectorList.cc diff -r 1cdad0468484 -r b807383bcc43 c/regexParser/createBitVectorList.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c/regexParser/createBitVectorList.cc Tue Nov 10 15:36:33 2015 +0900 @@ -0,0 +1,56 @@ +#include +#include +#include "bitVector.h" +#include "regexParser.h" + +extern BitVectorPtr bitSet(int); +extern void bitPrint(BitVectorPtr); +BitVectorListPtr createBitVector(NodePtr); +BitVectorListPtr descendTreeNode(NodePtr,BitVectorListPtr); + +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); + puts("-----"); + bitPrint(bvl->bi); + 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; + return bvl; +} + + +BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl) { + + if (n->tokenType == '*') { + 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); + } + } + + return bvl; +} + +BitVectorListPtr createBitVectorList(NodePtr n) { + bvlIndex = 0; + BitVectorListPtr bvl = initBitVector(); + descendTreeNode(n,bvl); + + return bvl; +}