#include "orga-comp.h" void interpreter::evalSTM(struct token stm) { switch (stm.tok_type) { case token::STM_ASSIGN: table[stm.value] = evalEXP(*stm.rvalue); std::cout << stm.value << " igual a " << table.at(stm.value) << '\n'; break; case token::STM_COMPOUND: evalSTM(*stm.lvalue); evalSTM(*stm.rvalue); break; default: std::cout << "ERROR \n"; exit(-1); break; } } int interpreter::evalEXP(struct token exp) { switch (exp.tok_type) { case token::EXP_NUMBER: return std::stoi(exp.value); break; case token::EXP_ID: return table.at(exp.value); break; case token::EXP_OPERATION: if(exp.value == "+") return evalEXP(*exp.lvalue) + evalEXP(*exp.rvalue); if(exp.value == "-") return evalEXP(*exp.lvalue) - evalEXP(*exp.rvalue); break; default: std::cout << "ERROR \n"; exit(-1); break; } exit(-1); }