// // b2.c ... 構文木の構築 // #include #include "tokenizer.h" #include "parser.h" // 構文木の表示 void print(char *str, Tree *t) { //printf("%s: ", str); show_tree(t); putchar('\n'); // 内部構造を表示 printf("%s: ", str); print_tree(t); putchar('\n'); // 式の文字列を表示 } int main(void) { // ソースコードの文字列 char *source[] = { "-1234", "(def x -1234)", "(* (+ x 1) 2)", "(if (< x 0) (- 0 x) x)", // 必要に応じて例を追加 NULL }; // 構文解析と表示 char **p; for (p = source; *p != NULL; p++) { printf("source: \"%s\"\n", *p); tokenize(*p); init_parser(); Tree *tree = parse_expression(); // 構文解析と構文木の構築 print("tree", tree); putchar('\n'); } return 0; }