//
// b2.c ... 構文木の構築
//
#include <stdio.h>
#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;
}