問題タブ [prefix-operator]
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.
c++ - 接頭辞への中置は機能しますが、累乗 (キャレット) 関数式では機能しませんか?
中置式を取り、前置式に変換する関数があります。これが私のコードです:
この関数は、教授が私に使用してほしいサンプル式でうまく機能しました。"3-4-5" は "--345" を生成し、"5*(4/2)" は "*5/42" を生成します。ただし、これは「3^4^5」という式では機能しません。「^3^45」であるはずの「^^345」が表示され続けます。
私のアルゴリズムは間違っていますか?それとも、これは ICP と ISP に関係があるのでしょうか (彼女が私にくれたコードでは、どちらも "^" = 3 です)。
parsing - バイナリの前置、中置、および後置演算子を使用した式の解析
バイナリプレフィックス、バイナリインフィックス、およびバイナリポストフィックス演算子 (すべてのシンボルが異なると仮定します) を含む式を (あいまいさなしで) 解析することは可能ですか? 例えば:
その後、後置演算子よりも優先順位が低く、 になるa
ため、5 に等しくなります。中置表記式を演算子の優先順位解析またはシャントヤードで解析できることは知っていますが、この問題は私にとってははるかに複雑に思えます。=
post+
b
14
編集:
括弧は許可されており、演算子の前後のバリエーションは中置のものと同じ優先順位を持ちます。
手書きのアルゴリズムを転がしたいと思います。
編集2:
優先的に、私は消費する量を意味します。たとえば、次のようになります。
次の AST が発生する可能性があります。
(2番目は、この状況で必要なものです)。演算子が動的に読み込まれるため、既存のパーサー ジェネレーターや固定文法をオペランドに実際に使用することはできません。