問題タブ [infix-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.
package - コードをパッケージにラップした後、リスト内の 2 つの要素だけが認識されなくなるのはなぜですか?
私はdefpackage
Lisp で足を濡らしており、不名誉なスタートを切りました。つまり、理解できないバグです。
以下のコードは、ベクトルに対して中置操作を実行するためのサブ言語を作成する試みです。線形代数を含むプロジェクトにこれを使用したいと思います。
私のコードの「肉」はparse-infix
. この関数は、優先度が最も高い演算子を見つけ、apply-op
その演算子とそのオペランドを置き換える呼び出しを呼び出してoperator (operand, operand)
リストを縮小し、リストに結果のみが含まれるまで繰り返します。サポートされている演算子は、4 つの規則、等価性 (結果を Lisp シンボルにバインドする)、およびベクトル連結です。
コード、疣贅などは次のとおりです。
そして、ここに問題があります。機能は動作しているようです...
...しかし、パッケージを離れると、連結 (&) 演算子が突然「死ぬ」:
パッケージの機能を追跡しようとしたところ、パッケージを離れると、何らかの理由で & が演算子として認識されなくなることに気付きましたinfix
。なぜこれが事実なのか、私には最も漠然とした考えがありません。どんな入力でも大歓迎です。
PS。多くの人が気付いていると思いますが、これらはすべて Clozure Common Lisp にあります。
haskell - Haskellでスラッシュはどういう意味ですか?
私は Haskell を学んでいて、中間の勉強をしています。型推論に関する質問で、私が現在見ているテストクイズがあります。いくつかの質問にはスラッシュが含まれており、それらが何を表しているのかわかりません。目標は、変数を見て関数の型を決定することです。以下は、次のタイプを見つけることになっている質問の例です。
うまくグーグルで検索しましたが、スラッシュとはどういう意味ですか?
postfix-notation - 'int' を 'node *' に変換できません
C++ ソース コードを読んでいて、infix を postfix に変換しています。turbo c++ を使用しています。
// .. 'int' を 'node *' に変換できません ...
誰か教えてください。そしてそれを解決する方法について。
完全なソースコードはこちら
parsing - バイナリの前置、中置、および後置演算子を使用した式の解析
バイナリプレフィックス、バイナリインフィックス、およびバイナリポストフィックス演算子 (すべてのシンボルが異なると仮定します) を含む式を (あいまいさなしで) 解析することは可能ですか? 例えば:
その後、後置演算子よりも優先順位が低く、 になるa
ため、5 に等しくなります。中置表記式を演算子の優先順位解析またはシャントヤードで解析できることは知っていますが、この問題は私にとってははるかに複雑に思えます。=
post+
b
14
編集:
括弧は許可されており、演算子の前後のバリエーションは中置のものと同じ優先順位を持ちます。
手書きのアルゴリズムを転がしたいと思います。
編集2:
優先的に、私は消費する量を意味します。たとえば、次のようになります。
次の AST が発生する可能性があります。
(2番目は、この状況で必要なものです)。演算子が動的に読み込まれるため、既存のパーサー ジェネレーターや固定文法をオペランドに実際に使用することはできません。