comparison c/regexParser/subsetConstraction.cc @ 116:66c633575b53 pairPro

remove error and warning
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 24 Nov 2015 17:07:08 +0900
parents a3adc5c24e19
children 166136236891
comparison
equal deleted inserted replaced
115:ca30f8334741 116:66c633575b53
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 #include <ctype.h> 3 #include <ctype.h>
4 #include "bitVector.h" 4 #include "bitVector.h"
5 #include "regexParser.h"
6 5
6 extern BitVectorListPtr initBitVector();
7 BitVectorListPtr setNextBitVectorList(unsigned char, BitVectorListPtr, BitVectorListPtr);
7 8
8 void printBitVectorList (BitVectorListPtr bvl) { 9 void printBitVectorList (BitVectorListPtr bvl) {
9 bool isFirstPrint = true; 10 bool isFirstPrint = true;
10 for (int i = 0; i < 256; i++) { 11 for (int i = 0; i < 256; i++) {
11 if (bvl->next[i] != NULL) { 12 if (bvl->next[i] != NULL) {
28 } 29 }
29 } 30 }
30 31
31 BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl, BitVectorListPtr prev, bool &fromOr, bool &fromAsterisk) { 32 BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl, BitVectorListPtr prev, bool &fromOr, bool &fromAsterisk) {
32 bool leftIsOr, rightIsOr; 33 bool leftIsOr, rightIsOr;
33 if (n->Value.character == '*') { 34 if (n->cc->cond->character == '*') {
34 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk); 35 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
35 unsigned char repertChar = 0; 36 unsigned char repertChar = 0;
36 for (int i = 0; i < 256; i++) { 37 for (int i = 0; i < 256; i++) {
37 if (prev->next[i] != NULL) repertChar = i; 38 if (prev->next[i] != NULL) repertChar = i;
38 } 39 }
39 setNextBitVectorList(repertChar, bvl, prev->next[repertChar]); // here 40 setNextBitVectorList(repertChar, bvl, prev->next[repertChar]); // here
40 bvl->isLoopAnker = true; 41 bvl->isLoopAnker = true;
41 fromAsterisk = true; 42 fromAsterisk = true;
42 43
43 return prev; 44 return prev;
44 } else if (n->Value.character == '|') { 45 } else if (n->cc->cond->character == '|') {
45 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk); 46 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
46 setNextBitVectorList(n->left->Value.character, prev, bvl); 47 setNextBitVectorList(n->left->cc->cond->character, prev, bvl);
47 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk); 48 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk);
48 setNextBitVectorList(n->right->Value.character, prev, bvl); 49 setNextBitVectorList(n->right->cc->cond->character, prev, bvl);
49 fromOr = true; 50 fromOr = true;
50 return prev; 51 return prev;
51 } else if (n->Value.character == '+') { 52 } else if (n->cc->cond->character == '+') {
52 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk); 53 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
53 setNextBitVectorList(n->left->Value.character, prev, bvl); 54 setNextBitVectorList(n->left->cc->cond->character, prev, bvl);
54 prev = bvl; 55 prev = bvl;
55 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk); 56 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk);
56 57
57 if (leftIsOr){ 58 if (leftIsOr){
58 for (int i = 0; i < 256; i++) 59 for (int i = 0; i < 256; i++)
59 if (prev->next[i] != NULL) 60 if (prev->next[i] != NULL)
60 setNextBitVectorList(n->right->Value.character, prev->next[i], bvl); 61 setNextBitVectorList(n->right->cc->cond->character, prev->next[i], bvl);
61 } 62 }
62 else { 63 else {
63 setNextBitVectorList(n->right->Value.character, prev, bvl); 64 setNextBitVectorList(n->right->cc->cond->character, prev, bvl);
64 } 65 }
65 66
66 fromOr = false; 67 fromOr = false;
67 } else if (n->tokenType == 'a') { 68 } else if (n->tokenType == 'a') {
68 bvl = createBitVector(n,bvl); 69 bvl = createBitVector(n,bvl);