중위 표기법 (infix notation)
(A + B) * (C + D)
후위 표기법 (postfix notation)
A B + C D + *
앞의 두 개가 피연산자이고, 그 뒤에 나타나는 연산자를 두 피연산자에 적용한다.
즉, 피연산자를 만나면 스택에 넣고, 연산자를 만나면 두 개의 피연산자를 빼내서 연산을 한다.
발생한 연산 결과는 다시 스택에 넣어서 다음 연산에 영향을 받도록 한다.
스택 연산으로 아래의 후위 표기식의 계산을 표현한다면
A B + C D + *
push(A) —> push(B) —> pop(A), pop(B), push(A + B) —> push(C) —> push(D) —> pop(D), pop(C), push(C + D) —> pop(A + B), pop(C + D), push((A + B) * (C + D)) —> pop(…) —> return
[중위] (A + B) * C