Mercurial > hg > Applications > Grep
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); |