1

私は、独自のオペレーターを定義できるインタラプターに取り組んでいます。目標は、次のように見える AST を取得し、2 つの演算子の相対的な優先順位と結合性に基づいてorexp op exp op expに変換することです。言語は動的であるため、使用する演算子のバージョンを知る唯一の方法は、最初の式を評価し、使用するバージョンを尋ねることです。exp op (exp op exp)(exp op exp) op expop

一方、2 番目の式を評価しないことが重要です。なぜなら、op(||一般的に使用される) である場合、最初の式が である場合、短絡できるはずだからexpですfalse

一部の演算子が右結合で短絡している場合、問題が発生します。 私の質問は、一般的に使用されている適切な連想演算子、短絡演算子はありますか(選択された「共通」の値に対して)?

Nb の割り当てはパーサーによって個別に処理されるため、=は演算子ではなく、 のa (op)= bシンタックス シュガーですa = a op b

4

1 に答える 1

1

ブール値の意味かもしれません。

私はおそらく読むだろう

a → b → c

「aはbがcを意味することを意味する」ため、括弧で囲む必要があることが示唆されます

a → (b → c)

a が false の場合、(a → b) の右側は結果とは無関係であるため、ブール値の含意はおそらくショートサーキットである必要があります。

于 2012-06-19T04:34:44.227 に答える