Mercurial > hg > Applications > Grep
annotate c/regexParser/subsetConstraction.cc @ 137:c292c67b3100 pairPro
add generateTransitionList function
author | masa |
---|---|
date | Fri, 04 Dec 2015 20:32:09 +0900 |
parents | 166136236891 |
children | 6c258910cacb |
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 | 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 |
137 | 6 typedef struct transitionGenerator { |
7 TransitionListPtr tl; | |
8 StatePtr state; | |
9 long stateMax; | |
10 } TransitionGenerator, *TransitionGeneratorPtr; | |
11 | |
12 typedef struct tgValue { | |
13 TransitionListPtr tl; | |
14 bool asterisk; | |
15 } TGValue, *TGValuePtr; | |
16 | |
17 TGValue generateTransitionList(NodePtr n,TransitionGeneretorPtr tg) { | |
18 | |
19 if (n->left != NULL) { | |
20 TGValue tl = generateTransitionList(n->left, tg); | |
21 } | |
22 if (n->tokenType == 'a') { | |
23 printf("%*c",d*4, ' '); | |
24 for (int i = 0; i < n->cc->cond->w->length; i++) { | |
25 putchar(n->cc->cond->w->word[i]); | |
105
766fc2476f01
fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
104
diff
changeset
|
26 } |
137 | 27 printf("(%lu)\n",n->nodeNumber); |
28 } else if (n->tokenType == 'c') { | |
29 TGValue tl = generateTransitionList(n->cc,tg); | |
30 } else { | |
31 printf("%*c%c(%lu)\n",d*4, ' ',n->tokenType,n->nodeNumber); | |
104
3eb3cb5d581f
implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
103
diff
changeset
|
32 } |
105
766fc2476f01
fix indent size
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
104
diff
changeset
|
33 |
137 | 34 if (n->right != NULL) { |
35 TGValue tl = generateTransitionList(n->right, tg); | |
104
3eb3cb5d581f
implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
103
diff
changeset
|
36 } |
3eb3cb5d581f
implemented 'or' node translator
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
103
diff
changeset
|
37 } |