問題タブ [shunting-yard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - シャント ヤードで連鎖単項演算子を処理する
シャント ヤードで連結された単項マイナス演算子の処理に問題があったため、シャント ヤードの wiki ページを見ましたが、wiki アルゴリズムはそれを処理していないようです。
参考のための Wiki アルゴリズム:
次の式があると---1
します。rpn の出力は になると思いますが1---
、実際には次のようになります。
反復 1: operator stack: []
output queue: []
読み取るトークンは である-
ため、オペレータースタックにプッシュします
反復 2: operator stack: [-]
output queue: []
読み取るトークンは-
. on オペレーター スタックがあり、-
それを出力キューにポップする必要があります。次に、トークンをオペレーター スタックにプッシュします。
反復 3: operator stack: [-]
output queue: [-]
エラー--
出力キューにはまだありません。(無意味なのでアルゴは続きません)