//===================================================================== // // ast.cpp: mini-C プログラムの抽象構文木 (実装) // // コンパイラ実習 2004 (c) 平岡佑介, 石浦菜岐佐 // //===================================================================== #include "ast.h" //--------------------------------------------------------------------- // Type_string の実装 //--------------------------------------------------------------------- std::string Type_string(Type t) { switch (t) { case Type_INT: return "int"; case Type_CHAR: return "char"; default: return "UNDEF"; } } //--------------------------------------------------------------------- // Opeartor_string の実装 //--------------------------------------------------------------------- std::string Operator_string(Operator o) { switch (o) { case Operator_PLUS: return "+"; case Operator_MINUS: return "-"; case Operator_MUL: return "*"; case Operator_DIV: return "/"; case Operator_MOD: return "%"; case Operator_LT: return "<"; case Operator_GT: return ">"; case Operator_LE: return "<="; case Operator_GE: return ">="; case Operator_NE: return "!="; case Operator_EQ: return "=="; default: return "???"; } } static int tmp = 0; //--------------------------------------------------------------------- // tab(int) // インデントを行うための関数 (ast.cpp の中だけで用いる) // indent で指定された段数の 2 倍のスペースを返す //--------------------------------------------------------------------- static std::string tab(int indent) { std::string tab_ = ""; for(int i=0; i