私はshunting-yard アルゴリズムを実装しています。演算子に欠落している引数がある場合、検出に問題があります。ウィキペディアのエントリはこのトピックに関して非常に悪く、以下の例でもコードがクラッシュします。
たとえば、 には引数3 - (5 + )がないため、正しくありません。+
アルゴリズムが に到達する直前に)、演算子スタックには が含まれ- ( +、オペランド スタックには が含まれます3 5。次に、次のようになります。
+オペレータースタックからポップします+二項演算子であることを発見- 2 つのオペランドをポップし、演算子を適用し、結果 (
8) をオペランド スタックにプッシュします。 (次に、一致するものをスタックからポップし、続行します
+では、引数が欠落していることをどのように検出できますか? ウィキペディアも更新する場合は、さらに称賛します:-)