annotate c/regexParser/subsetConstraction.cc @ 117:166136236891 pairPro

add header files
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Wed, 25 Nov 2015 14:58:03 +0900
parents 66c633575b53
children c292c67b3100
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdlib.h>
101
2cc097419169 fix print
masasann
parents: 100
diff changeset
3 #include <ctype.h>
117
166136236891 add header files
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 116
diff changeset
4 #include "subsetConstraction.h"
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
101
2cc097419169 fix print
masasann
parents: 100
diff changeset
6 void printBitVectorList (BitVectorListPtr bvl) {
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
7 bool isFirstPrint = true;
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
8 for (int i = 0; i < 256; i++) {
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
9 if (bvl->next[i] != NULL) {
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
10 if (isFirstPrint){
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
11 puts("----");
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
12 printf(" state : "); bitPrint(bvl->bi);
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
13 isFirstPrint = false;
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
14 }
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
15 printf("input char : %c\n",i);
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
16 printf("next state : ");bitPrint(bvl->next[i]->bi);
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
17 bvl->isLoop = bvl->isLoopAnker;
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
18 }
104
3eb3cb5d581f implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
19 }
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
20
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
21 for (int i = 0; i < 256; i++) {
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
22 if ((bvl->next[i] != NULL) && !(bvl->isLoop && bvl->isLoopAnker)) {
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
23 // if ((bvl->next[i] != NULL) ) {
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
24 printBitVectorList(bvl->next[i]);
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
25 }
104
3eb3cb5d581f implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
26 }
3eb3cb5d581f implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
27 }
3eb3cb5d581f implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
28
117
166136236891 add header files
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 116
diff changeset
29 const
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
30 BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl, BitVectorListPtr prev, bool &fromOr, bool &fromAsterisk) {
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
31 bool leftIsOr, rightIsOr;
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
32 if (n->cc->cond->character == '*') {
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
33 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
107
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
34 unsigned char repertChar = 0;
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
35 for (int i = 0; i < 256; i++) {
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
36 if (prev->next[i] != NULL) repertChar = i;
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
37 }
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
38 setNextBitVectorList(repertChar, bvl, prev->next[repertChar]); // here
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
39 bvl->isLoopAnker = true;
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
40 fromAsterisk = true;
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
41
107
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
42 return prev;
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
43 } else if (n->cc->cond->character == '|') {
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
44 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
45 setNextBitVectorList(n->left->cc->cond->character, prev, bvl);
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
46 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk);
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
47 setNextBitVectorList(n->right->cc->cond->character, prev, bvl);
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
48 fromOr = true;
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
49 return prev;
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
50 } else if (n->cc->cond->character == '+') {
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
51 bvl = descendTreeNode(n->left, bvl, prev, leftIsOr, fromAsterisk);
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
52 setNextBitVectorList(n->left->cc->cond->character, prev, bvl);
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
53 prev = bvl;
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
54 bvl = descendTreeNode(n->right, bvl, prev, rightIsOr, fromAsterisk);
104
3eb3cb5d581f implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 103
diff changeset
55
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
56 if (leftIsOr){
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
57 for (int i = 0; i < 256; i++)
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
58 if (prev->next[i] != NULL)
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
59 setNextBitVectorList(n->right->cc->cond->character, prev->next[i], bvl);
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
60 }
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
61 else {
116
66c633575b53 remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
62 setNextBitVectorList(n->right->cc->cond->character, prev, bvl);
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
63 }
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
64
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
65 fromOr = false;
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
66 } else if (n->tokenType == 'a') {
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
67 bvl = createBitVector(n,bvl);
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
68 fromOr = false;
101
2cc097419169 fix print
masasann
parents: 100
diff changeset
69 }
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
70 return bvl;
101
2cc097419169 fix print
masasann
parents: 100
diff changeset
71 }
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
117
166136236891 add header files
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 116
diff changeset
73 const
107
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
74 BitVectorListPtr setNextBitVectorList(unsigned char inputChar, BitVectorListPtr bvl, BitVectorListPtr next){
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
75 if (isalnum((int)inputChar)){
c9f5ee891b5e change variable of setNextBitVectorList()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 105
diff changeset
76 bvl->next[(int)inputChar] = next;
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
77 }
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
78 return next;
101
2cc097419169 fix print
masasann
parents: 100
diff changeset
79 }
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 BitVectorListPtr createBitVectorList(NodePtr n) {
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
82 BitVectorListPtr bvl = initBitVector();
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
83 bool fromOr = false;
109
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
84 bool fromAsterisk = false;
6401c708f5dd fix printBitVectorList (print Loop when include asterisk node)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 108
diff changeset
85 descendTreeNode(n, bvl, bvl, fromOr, fromAsterisk);
105
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
86 printBitVectorList(bvl);
766fc2476f01 fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 104
diff changeset
87 return bvl;
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 }