逆ポーランド記法
*が押されたら、 スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← -1) [7] スタックからデータを下ろしアキュムレータを掛けてアキュムレータに入れる(アキュムレータ ← POPした値 * アキュムレーター) [] アキュムレータの内容は -7 になる (7 * -1 = -7) アキュムレータの内容をスタックに積む [-7]
このように
スタックにデータを積む (PUSH) 操作
スタックからデータを下ろす (POP) 操作
二つのオペランド間の演算
だけで計算動作が可能である。
スタックトップの直接演算が可能な構造ならば、例えば最初の部分は
3をスタックに積む [3]
4をスタックに積む [3 4]
+が押されたら、 スタックからデータを下ろしレジスタに入れる(レジスタ←4) [3] スタックトップにレジスタの値を加算する [7]
と簡略化される。
逆ポーランド記法を使えば、式の計算をする(評価)には、先頭からひとつずつ順番に記号を読み込み、その記号が演算子以外であればスタックに値を積み、演算子であればスタックから値を取り出して演算し結果をスタックに積む、という簡単な操作の繰り返しだけでよい。そのため、プログラミング初心者の練習課題として、逆ポーランド記法の電卓を作ることがよく行われる。
前述の手順であれば、スタックに積むのは値(たとえば後述する例では整数値)だけである。もしこれが他の順序だったとしたら、演算子に相当するものを記憶するか、順番に読むだけでは済まず行きつ戻りつするか、などしなければならない。
プログラミング言語にForthやPostScriptなどのこの記法を採用したものがある。
ヒューレット・パッカード社の電卓(HP-35など)が有名で、他いくつかの電卓(特に関数電卓に採用がある)にもあるが、逆ポーランド記法順による入力方法を採用している電卓がある(近年の関数電卓のような数式入力ではなく、計算機械としてスタックモデルであり、それを直接操作しているという形なので、厳密なことを言うと逆ポーランド記法「順」ということになる)。