// 
// evaluator ... 評価器
// 

#include <string.h>
#include "base.h"
#include "tree.h"

// 名前が等しいか否かの判定
static int equal_name(char *name, char *str) { return strcmp(name, str) == 0; }

int evaluate(Tree *tree) {
  // 式 -> 数 | 名前 | ( if 式 式 式 ) | ( 名前 式* )
  // 【課題b4】式の評価器を完成させる (入力プログラムが正しいと仮定して実装)
  if (is_number_tree(tree)) {
    return 0;
  } else if (is_name_tree(tree)) {
    return 0;
  } else /* (is_list_tree(tree)) */ {
    Tree *head = get_subtree(tree, 0);
    char *op = get_name(head);
    if (equal_name(op, "if")) {
      return 0;
    } else /* 呼び出し */ {
      if (equal_name(op, "+")) return 0;
      else if (equal_name(op, "-")) return 0;
      else return 0;
    }
  }
}