Mercurial > hg > Applications > Grep
view c/regexParser/createBitVectorList.cc @ 96:b807383bcc43 impl-bitvector
add createBitVectorList.cc
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 10 Nov 2015 15:36:33 +0900 |
parents | |
children | d0d2262d4edf |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #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; }