-
인터프리터...23일지 2020. 12. 7. 12:01
역 폴란드 표기법 프로그램
역 폴란드 표기법 처리 함수 작성
ReversePolish.h
#pragma region 역 폴란드 표기법 char polish_result[80]; void Polish(char* str) { int temp; char* result = polish_result; top = 0; while (true) { while (isspace(*str)) { str++; } // 행의 마지막인 경우 if (*str == '\0') { while (top > 0) { *result = Pop(); if (*result == '(') { std::cout << "괄호 '('의 쌍이 올바르지 않습니다.\n"; exit(1); } result++; } break; } // 문자나 숫자인 경우 if (islower(*str) || isdigit(*str)) { *result++ = *str++; continue; } switch (*str) { case '(': Push(*str); break; case ')': while (true) { temp = Pop(); if (temp != '(') { *result++ = temp; if (top == 0) { std::cout << "괄호 '('의 쌍이 올바르지 않습니다.\n"; exit(1); } } else { break; } } break; default: if (Order(*str) == -1) { std::cout << "우선순위가 결정되지 않은 문자입니다.\n"; exit(1); } while (top > 0 && Order(Peek()) >= Order(*str)) { *result++ = Pop(); } Push(*str); break; } str++; } *result = '\0'; } #pragma endregion
더보기참고문헌