associativity

    1

    4答えて

    printf ("%d \n", 2 > !3 && 4 - 1 != 5 || 6) ; これはどのように評価されるのですか?私が最も混乱しているのは、3の正面にある!シンボルです... 2 > !3の評価方法は?

    5

    2答えて

    再帰的(何も囲まれていない)式が可能な場合に左結合式を実行する方法を理解しようとしています。例えば、私がやってみたい: expr + OP + expr (expr OP expr) OP expr結果に1 x 2 x 3のような2つの操作を解析しています。 私はexprは無限再帰からパースを防止しようとすると、私のような何かを行うことができます: expr -> Group(simple_e

    7

    2答えて

    isAssociativeは、2つの引数の別の関数を取り、その関数が結合的であるかどうかを判断する高次関数を構築できますか? 同様の質問ですが、可換性などの他のプロパティについても同様です。 これが不可能な場合は、どの言語でも自動化する方法はありますか? Agda、Coq、またはPrologのソリューションがある場合、私は興味があります。 考えられるすべての引数の組み合わせをチェックし、決して終了

    61

    9答えて

    (演算子のための)結合性とは何ですか?それはなぜ重要ですか? 更新:オペレータ連想

    2

    2答えて

    C言語の演算子の連想性について言えば、同じ優先順位を持つ演算子の間に相違点があるのはなぜだろうかと思っていました。例えば、後置インクリメントと後置インクリメントは結合性を残しました。接頭辞のインクリメントと接頭辞のデクリメントは正しい連想性を持っています。すべての同じ優先順位演算子に対して左または右の結合性を持つことは簡単ではありませんか? それには何らかの理由がありますか?

    8

    2答えて

    C99標準では、式によって優先順位と結合が可能です。 文書内に演算子が現れる順序は優先順位が低いため、関数呼び出しは加算演算子の前にくる乗法演算子の前に来るため、優先順位は非常によく文書化されています。 ただし、左か右かにかかわらず、結合性についての明確な説明は見つかりません。これは重要である。35/5*2は、1つの変種に対しては14、他の変種に対しては(35/5)*2、3となるから、重要である。

    11

    2答えて

    私たちが表現している場合: a $ b @ c $を@が右結合で、左結合演算子です。 これらは同じ優先順位を持ちます。 この式はどのように解析されていますか? (a $ b) @ cまたはa $ (b @ c)として?