//
// tree.h ... 構文木の基本操作のためのヘッダ
//
#ifndef _TREE_H_INCLUDED_
#define _TREE_H_INCLUDED_
typedef struct _tree Tree; // 構文木の型
Tree *make_number_tree(int number); // 数の節の生成
Tree *make_name_tree(char *name); // 名前の節の生成
Tree *make_list_tree(void); // 空の部分木列の生成
int is_number_tree(Tree *tree); // 数か否かの判定
int is_name_tree(Tree *tree); // 名前か否かの判定
int is_list_tree(Tree *tree); // 列か否かの判定
int get_number(Tree *tree); // 数の節から数を取得
char *get_name(Tree *tree); // 名前の節から名前を取得
void add_subtree(Tree *tree, Tree *subtree); // 部分木列の最後に追加
int num_subtree(Tree *tree); // 子の個数を取得
Tree *get_subtree(Tree *tree, int n); // n番目の子を取得 (n≧0)
void show_tree(Tree *tree); // 木をデータ構造確認用の文字列で表示
void print_tree(Tree *tree); // 木をプログラムの文字列で表示
#endif // _TREE_H_INCLUDED_