comparison c/regexParser/main.cc @ 79:52da06c3f050

add printTree.cc & fix Makefile
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 29 Sep 2015 18:36:31 +0900
parents 7f53a587bf97
children 0a452d69f0e2
comparison
equal deleted inserted replaced
78:23a96fefa643 79:52da06c3f050
12 #include "regexParser.h" 12 #include "regexParser.h"
13 13
14 unsigned char *ptr; 14 unsigned char *ptr;
15 unsigned char tokenType; 15 unsigned char tokenType;
16 int tokenValue; 16 int tokenValue;
17 NodePtr regexHeadNode;
18 17
19 NodePtr charClass(); 18 NodePtr charClass();
20 NodePtr group(); 19 NodePtr group();
21 NodePtr regex(); 20 NodePtr regex();
22 NodePtr createNode(unsigned char,NodePtr,NodePtr); 21 NodePtr createNode(unsigned char,NodePtr,NodePtr);
23 void token(); 22 void token();
24 NodePtr regexAtom(); 23 NodePtr regexAtom();
24 extern void printTree(NodePtr);
25 25
26 26
27 bool isLiteral(char c) { 27 bool isLiteral(char c) {
28 if (*ptr > 0x7f) return true; 28 if (*ptr > 0x7f) return true;
29 else if (*ptr == '(') return false; 29 else if (*ptr == '(') return false;
158 n = createNode('+',n,n1); 158 n = createNode('+',n,n1);
159 } 159 }
160 } return n; 160 } return n;
161 } 161 }
162 162
163 void descendTree(NodePtr n) {
164 static int d = 0;
165 if (n->right != NULL) {
166 d++;
167 descendTree(n->right);
168 d--;
169 }
170 printf("%*c%c\n",d*4, ' ',n->Value.character);
171 if (n->left != NULL) {
172 d++;
173 descendTree(n->left);
174 d--;
175 }
176 }
177
178 void printTree(NodePtr n) {
179 puts("---Print Node----");
180 descendTree(n);
181 puts("-----------------");
182 }
183
184 163
185 int main(int argc, char **argv) 164 int main(int argc, char **argv)
186 { 165 {
187 for (int i = 1; i < argc; i++) { 166 for (int i = 1; i < argc; i++) {
188 if (strcmp(argv[i],"-regex") == 0) { 167 if (strcmp(argv[i],"-regex") == 0) {