問題タブ [s-expression]
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.
xml - Clojure アプリケーションのデータ交換
Clojure アプリケーション間でデータを前後に移動したいと考えています。アプリケーション設定といくつかの状態情報。
xml と s-expressions のどちらを使用するか判断できません。各アプローチの長所と短所は何だと思いますか?
lisp - s 式のすべてのコンス ノードを破壊的に反転する
これについてどうすればいいですか?新しいノードを作成しないようにしています。
parsing - 構文と s 式の違いは何ですか
構文言語と s 式言語の主な違いは何ですか? s 式の使用はコンパイル時間 (解析プロセス) に影響しますか、それとも言語に何らかの利点をもたらしますか?
c - C を s 式として書く
s 式で C を記述し、コンパイル時マクロを使用したいと考えています。これを行うものを知っている人はいますか?s 式を標準 C に変換する必要があります。
emacs - Org-ModeテーブルからS式へ
Org-ModeテーブルからS式にエクスポートしたいと思います。
次のようになります:
まだ存在しない場合は、そのような設定を作成する予定ですが、車輪の再発明を開始する前に、スタックオーバーフローを利用することにしました。
emacs - Emacs: カーソルがある最小の S 式、または次の S 式を評価する方法
(+ 100 (+ 100 100))
部品を評価する良い方法は何ですか?
?
今のところ、私は Cx Ce でそれを行います。つまり、終わりの括弧を見つける必要がありますが、これはほとんどの場合困難です。Options > Paren Matching Highlighting
役立ちますが、強調表示された一致が開始括弧になるまで、カーソルを終了括弧に向かって移動する必要があります。
1 つの方法は、Cx Ce の逆バージョンを使用することです。これにより、次のように開始括弧にカーソルを配置できます。
次に、適切なキーバインドを押します。
または、カーソルを式内に配置できますが、より小さな式内には配置できません。
キーバインディングを押します。ターゲットが大きいほど、ターゲットを狙うのが簡単だからです。
どうすればそのようなコマンドを作成できますか? それともすでに提供されていますか?
補足: バーカーソルとボックスカーソル
ボックス カーソル (デフォルト) を使用する Emacsers は、上記のバー表記でカーソルをどこに置いているのか疑問に思うかもしれません。emacs では、ボックス カーソルまたはバー カーソルを選択できます(bar-cursor-mode t)
。バー カーソルが文字 A と B の間にある場合、ボックス カーソルは B にあります。つまり、バーはボックスの左側の壁です。
ところで、バー カーソルの概念は、いくつかの変わった方法で役立ちます。プログラミングで index1 から index2-1 まで反復処理を行うと、初心者は驚きます。インデックス 1 とインデックス 2 は、ボックスではなくバー (左の壁) を示していると想像するのに役立ちます。
programming-languages - ほとんどのS式言語が動的に型付けされるのはなぜですか?
ほとんどのLispとSchemeが動的に型付けされるのはなぜですか?静的型付けは、それらの一般的な機能のいくつかと混ざりませんか?
c# - C# で既知のスキーマを使用して Lisp S 式を解析する
Lisp のような S-Expression 文字列としてデータを提供するサービスを使用しています。このデータは大量かつ高速に到着するため、バックトラックなしで、理想的にはバイト ストリーム (シングル バイト文字のみ) で直接、できるだけ早く処理したいと考えています。これらの文字列は非常に長くなる可能性があり、メッセージ全体に文字列を割り当てるという GC チャーンは望ましくありません。
私の現在の実装では、CoCo/R と文法を使用していますが、いくつか問題があります。バックトラッキングにより、ストリーム全体を文字列に割り当てます。また、私のコードのユーザーが必要に応じて変更するのは少し面倒です。純粋な C# ソリューションが必要です。CoCo/R では、パーサー/スキャナー オブジェクトの再利用も許可されていないため、メッセージごとにそれらを再作成する必要があります。
概念的には、データ ストリームは一連の S 式と考えることができます。
このシーケンスを解析すると、3 つのオブジェクトが作成されます。各オブジェクトのタイプは、リストの最初の値 (上記の場合は「item」) によって決定できます。着信ストリームのスキーマ/文法はよく知られています。
コーディングを始める前に、すでにこれを行っているライブラリがあるかどうかを知りたいです。この問題を抱えたのは私が初めてではないと確信しています。
編集
元の質問が少し曖昧だったかもしれないと思うので、ここで私が欲しいものについてもう少し詳しく説明します。
次のようないくつかの SExpressions が与えられます。
これと同等のオブジェクトのリストが必要です:
私が取り組んでいる実際のデータ セットは、RoboCup 3D シミュレートされたサッカー リーグのロボット モデルからの知覚者のリストです。より複雑な構造を持つ関連データの別のセットをデシリアライズする必要がある可能性もあります。
programming-languages - コードがデータである静的型チェックを備えた言語を知っていますか?
静的な型チェックを行う言語 (Java など) と、コードがデータである言語 (LISP など) の名前を教えてください。1 つの言語で両方のことを意味します。
parsing - flex/bison で Lisp/Scheme ライクな解析ツリーを構築する
単純な Lisp/scheme のようなコードを解析しようとしていました
それからツリーを構築すると、使用せずに C で解析を行うことができますbison
(つまり、
flex
トークンを返すためだけに使用し、再帰を使用してツリーを構築します)。しかし、bison
文法では、リストを構築するコードをどこに追加すればよいか (すなわち、どのルールを終端記号の蓄積に関連付け、構築されたリストを親ノードにリンクするか) がわかりません。
私の文法は次のようなものです: Lisp grammar in yacc 文法は正しく、コードを認識できます。