rdx.cpp |
int main_rdx(void) { try { std::string command; std::string identifier, value; std::cout << "Usage: " << std::endl; // auto로 식별자에 대한 값을 설정합니다. std::cout << "- auto <identifier> <value>" << std::endl; // calc로 수식을 분석하고 값을 계산합니다. std::cout << "- calc <expression>" << std::endl; // exit로 프로그램을 종료합니다. std::cout << "- exit" << std::endl; while (true) { clear_input_buffer(); std::cout << "> "; std::cin >> command; if (command == "auto") { std::cin >> identifier >> value; Table::instance()->set(identifier, value); } else if (command == "calc") { std::cin.ignore(1); std::cin.getline(input, MAX_INPUT_SIZ); std::cout << calculate(input) << std::endl; } else if (command == "exit") { break; } else { std::cout << "unknown command; try again" << std::endl; } } return 0; } catch (Exception &ex) { std::cerr << ex.c_str() << std::endl; return 1; } } |
이 프로그램은 다음과 같이 실행된다. 바로 알아볼 수 있을 것이다.
Usage: - auto <identifier> <value> - calc <expression> - exit > calc 1+2*3+4 11 > auto var1 3 > auto var2 4 > calc var1+var2 7 > calc 1 *var1+var2/ 2 5 > exit |
이와 같이 변수 해석이 가능하게 rdx 모듈을 개선할 수 있었다.