annotate c/regexParser/createBitVectorList.cc @ 98:d0d2262d4edf impl-bitvector

implement if (NodeChar == '+')
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 10 Nov 2015 18:08:53 +0900
parents b807383bcc43
children 1e5b56e8263b
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>
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include "bitVector.h"
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include "regexParser.h"
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 extern BitVectorPtr bitSet(int);
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 extern void bitPrint(BitVectorPtr);
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 BitVectorListPtr createBitVector(NodePtr);
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 BitVectorListPtr descendTreeNode(NodePtr,BitVectorListPtr);
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 int bvlIndex;
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 BitVectorListPtr createBitVector(NodePtr n,BitVectorListPtr bvl) {
98
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
14 BitVectorListPtr nextBvl = bvl->next[(int)n->Value.character] = (BitVectorListPtr)malloc(sizeof(BitVectorList));
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
15 nextBvl->bi = (BitVectorPtr)malloc(sizeof(BitVector));
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
16 nextBvl->bi = bitSet(n->nodeNumber);
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
17 nextBvl->self = bvl->next[(int)n->Value.character];
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
18
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 puts("-----");
98
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
20 printf(" state : "); bitPrint(bvl->bi);
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
21 for (int i = 0; i < 256; i++) {
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
22 if (bvl->next[i] != NULL) {
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
23 printf("input char : %c\n",i);
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
24 }
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
25 }
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
26 printf("next state : ");bitPrint(bvl->next[(int)n->Value.character]->bi);
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 puts("-----");
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 return bvl->next[(int)n->Value.character];
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 BitVectorListPtr initBitVector() {
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 BitVectorListPtr bvl = (BitVectorListPtr)malloc(sizeof(BitVectorList));
98
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
33 bvl->self = bvl;
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
34 bvl->bi = (BitVectorPtr)malloc(sizeof(BitVector));
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
35 bvl->bi = bitSet(0);
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 return bvl;
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 BitVectorListPtr descendTreeNode(NodePtr n,BitVectorListPtr bvl) {
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 if (n->tokenType == '*') {
98
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
43 bvl = descendTreeNode(n->left,bvl);
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 } else if (n->tokenType == '|') {
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 } else if (n->Value.character == '+') {
98
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
47 bvl = descendTreeNode(n->left,bvl);
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
48 bvl = descendTreeNode(n->right,bvl);
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
49 } else if (n->tokenType == 'a') {
d0d2262d4edf implement if (NodeChar == '+')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 96
diff changeset
50 bvl = createBitVector(n,bvl);
96
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 }
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 return bvl;
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 BitVectorListPtr createBitVectorList(NodePtr n) {
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 bvlIndex = 0;
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 BitVectorListPtr bvl = initBitVector();
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 descendTreeNode(n,bvl);
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 return bvl;
b807383bcc43 add createBitVectorList.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }