JSCC: JavaScript로 개발하는 C Compiler

코스 전체목록

닫기

rdx 모듈 개선 (2)

 

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 모듈을 개선할 수 있었다.

댓글

댓글 본문
graphittie 자세히 보기