annotate regexParser/node.cc @ 324:879dc5d1cb6a default tip

fix
author mir3636
date Fri, 27 May 2016 21:21:09 +0900
parents 058c87665213
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
79
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
190
3e8e5780ad4a change node::State to State
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 187
diff changeset
2 #include "regexParser.h"
117
166136236891 add header files
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 116
diff changeset
3 #include "node.h"
112
ec485345daf9 some function use static
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
4
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
5 static void printCharClassWord(CharClassPtr cc) {
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
6 for (int i = 0; i < cc->cond.w.length; i++) {
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
7 putchar(cc->cond.w.word[i]);
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
8 }
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
9 }
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
10
190
3e8e5780ad4a change node::State to State
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 187
diff changeset
11 void printCharacterClass(CharClassPtr cc, long nodeNumber,int d) {
192
ecf70fb215a5 print charclass
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 190
diff changeset
12 if (!cc) return;
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
13 if (cc->left) {
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
14 printCharacterClass(cc->left,nodeNumber,d+1);
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
15 }
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
16 printf("%*c",d*4, ' ');
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
17 if (cc->cond.w.word) {
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
18 printCharClassWord(cc);
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
19 } else {
300
3e78631a6222 remove ragne list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
20 RangeList range = cc->cond.range;
3e78631a6222 remove ragne list
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 217
diff changeset
21 printf("[%c-%c] ",(unsigned char)range.begin,(unsigned char)range.end);
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
22 }
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
23 printf("(0x%lx)\n",cc->nextState.bitContainer);
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
24 if (cc->right) {
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
25 printCharacterClass(cc->right,nodeNumber,d+1);
135
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
26 }
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
27 }
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
28
190
3e8e5780ad4a change node::State to State
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 187
diff changeset
29 void descendTree(NodePtr n, int d) {
134
dbafc753078e fix concatination & selection & grouping
masa
parents: 131
diff changeset
30 if (n->left != NULL) {
147
84d32375383a implement insertCharClass
masa
parents: 145
diff changeset
31 descendTree(n->left, d+1);
79
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
135
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
33 if (n->tokenType == 'a') {
131
a436526756b9 fix printTree
masa
parents: 130
diff changeset
34 printf("%*c",d*4, ' ');
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
35 printCharClassWord(n->cc);
217
a9e3512120e2 NFA generation end
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 216
diff changeset
36 if (n->state && n->nextState) {
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
37 printf("(0x%lx)->(0x%lx)\n",n->state->bitState.bitContainer,n->nextState->bitState.bitContainer);
217
a9e3512120e2 NFA generation end
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 216
diff changeset
38 } else if (n->state) {
309
058c87665213 small fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 300
diff changeset
39 printf("(0x%lx)\n",n->state->bitState.bitContainer);
216
4852bfa85db4 spell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 214
diff changeset
40 } else {
4852bfa85db4 spell fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 214
diff changeset
41 printf("\n");
214
a94f57af1600 remove allocateCCstate createCCState
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 212
diff changeset
42 }
135
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
43 } else if (n->tokenType == 'c') {
187
ef798db705e9 remove some warnings and errors(not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 174
diff changeset
44 printCharacterClass(n->cc,n->stateNum,d);
174
b9e913030a47 allocate nodeNumber to character and cclist (not allocate nodenumber '+' '*' '|')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
45 } else if (n->tokenType == 'a') {
187
ef798db705e9 remove some warnings and errors(not working)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 174
diff changeset
46 printf("%*c%c(%d)\n",d*4, ' ',n->tokenType,n->stateNum);
135
e1a262ec75f0 impl charclass
masa
parents: 134
diff changeset
47 } else {
174
b9e913030a47 allocate nodeNumber to character and cclist (not allocate nodenumber '+' '*' '|')
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 167
diff changeset
48 printf("%*c%c\n",d*4, ' ',n->tokenType);
130
7925e9abb078 add or flag
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 120
diff changeset
49 }
89
50a146c05192 add NodeNumber in Regex Parser tree
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 79
diff changeset
50
134
dbafc753078e fix concatination & selection & grouping
masa
parents: 131
diff changeset
51 if (n->right != NULL) {
147
84d32375383a implement insertCharClass
masa
parents: 145
diff changeset
52 descendTree(n->right, d+1);
79
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 }
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 void printTree(NodePtr n) {
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 puts("---Print Node----");
90
d139af3bbd67 remove static variable in printTree.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
58 int d = 0;
d139af3bbd67 remove static variable in printTree.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 89
diff changeset
59 descendTree(n,d);
79
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 puts("-----------------");
52da06c3f050 add printTree.cc & fix Makefile
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 }