問題タブ [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.

0 投票する
1 に答える
371 参照

c++ - 接頭辞への中置は機能しますが、累乗 (キャレット) 関数式では機能しませんか?

中置式を取り、前置式に変換する関数があります。これが私のコードです:

この関数は、教授が私に使用してほしいサンプル式でうまく機能しました。"3-4-5" は "--345" を生成し、"5*(4/2)" は "*5/42" を生成します。ただし、これは「3^4^5」という式では機能しません。「^3^45」であるはずの「^^345」が表示され続けます。

私のアルゴリズムは間違っていますか?それとも、これは ICP と ISP に関係があるのでしょうか (彼女が私にくれたコードでは、どちらも "^" = 3 です)。

0 投票する
0 に答える
654 参照

parsing - バイナリの前置、中置、および後置演算子を使用した式の解析

バイナリプレフィックス、バイナリインフィックス、およびバイナリポストフィックス演算子 (すべてのシンボルが異なると仮定します) を含む式を (あいまいさなしで) 解析することは可能ですか? 例えば:

その後、後置演算子よりも優先順位が低く、 になるaため、5 に等しくなります。中置表記式を演算子の優先順位解析またはシャントヤードで解析できることは知っていますが、この問題は私にとってははるかに複雑に思えます。=post+b14

編集:

括弧は許可されており、演算子の前後のバリエーションは中置のものと同じ優先順位を持ちます。

手書きのアルゴリズムを転がしたいと思います。

編集2:

優先的に、私は消費する量を意味します。たとえば、次のようになります。

次の AST が発生する可能性があります。

(2番目は、この状況で必要なものです)。演算子が動的に読み込まれるため、既存のパーサー ジェネレーターや固定文法をオペランドに実際に使用することはできません。