数式の評価を原始的に #20

演算子順位構文解析は解析器用の字句スタックのトップ要素と入力の最新字句との間の順位関係を見て、
入力字句を字句スタックへ移動するか、字句スタックのトップ要素を還元して消化するかの処理を行う。
最終的に字句スタックに先頭記号のみ、入力の最新字句が末尾記号になった時点で解析が終了する。
数式の計算用に字句スタックとは別に被演算子スタックも用意するが構文解析にとって本質的なものではない。
処理のおおまかな流れを以下に示す。

  1. 字句スタックトップが先頭記号かつ入力が末尾記号なら被演算子スタックから要素をポップ、表示して解析終了
  2. 字句スタックトップが先頭記号かつ入力が'\n'なら被演算子スタックから要素をポップ、表示して1.へ戻る
  3. 字句スタックトップと入力の順位関係をみる
  4. 入力が上位(か等しい)ならそれを字句スタックへプッシュし1.へ戻る(移動動作)
  5. 入力が下位なら字句スタックトップをポップする。
  6. ポップした字句のその種類に応じて処理を行う(還元動作)
  7. ポップした字句が新たな字句スタックトップより上位でなければさらにポップして6.へ戻る
  8. 1.へ戻る