私はS表現が木として表現できると聞いてきました。Lisp用の「ツリー構造エディタ」はありますか?
.
. . . .
f 1 . 3 [first level]
g 2 [second level]
例として(f 1 (g 2) 3)
に直接この種の構造を編集するためのエディタ(好ましく無料)がありますか?これは
- 避け「すべてのものを括弧」
- は、私はlispのを理解してきた優雅さを示すであろう。
私はS表現が木として表現できると聞いてきました。Lisp用の「ツリー構造エディタ」はありますか?
.
. . . .
f 1 . 3 [first level]
g 2 [second level]
例として(f 1 (g 2) 3)
に直接この種の構造を編集するためのエディタ(好ましく無料)がありますか?これは
Interlisp-Dには私が知っている限り(そしてウィキペディアの記事が確認した通り)、structure editingが使われました。私はCommon Lispの構造エディタを今日広く使用していることに気づいていませんが、私が知らないことが多分あります。 Pascal J. Bourguignonのサイトにはexampleがあります。 (私はそれを詳しく見ていませんでした)私はしましたが、XMLのために何か類似のものを少し前にOxygenで使用します。
(また、私はInterlispのは、これは括弧を取り除くこと、およびコメントに問題がある可能性があり、例えばとは何かを持っていた使用理由はないと思います。)
S-式は木を表現します、 その逆ではありません。改行でフォーマットあなたの例、:
(f 1
(g 2)
3)
これは、次の短所ツリーを表します
+---+---+ +---+---+ +---+---+ +---+---+
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
+---+---+ +---+---+ + ¦ +---+ +---+---+
v
+---+---+ +---+---+
| g | ----->| 2 |NIL|
+---+---+ +---+---+
これは、同時に他の言語の家族のためのコンパイラプログラム—何かの実際の抽象構文木であります複雑なルールから構築する必要があります。
編集の場合、括弧は、あなたとあなたのエディタがツリーレベルで操作する必要があるすべてのものです。 Emacsではparedit-modeですが、他のエディタにも同様のユーティリティやプラグインがあると思います。
括弧がツリー構造をどのように表しているかを知ることができます。私は、ツリーを編集するための図式的なツリーとして表示するエディタがあるかどうか疑問に思っていました。 (私はポインタがそのようなもののためにユーザーフレンドリーであるとは確信していないが、私はそれがうまくいくと思う) – scarlet
ParEdit emacsのモードは基本的に構造化エディタです。
はまた、their paperで、Gomolka &ヒュムは、Eclipse用のCUSPを拡張する研究プロトタイプを言及したが、私はダウンロード可能な実装を知りません。
それは怒っている。写真、コード行、調査結果を含むストラクチャエディタの完全な記述を提供し、次にどこを入手するかについてのヒントはありません。 (正直言って、私はおそらく、最近emacsから切り替えることはないだろうが、まったく同じだ。)アップデートをありがとう。 – scarlet
私たちはあなたのwrite Lisp with Gingko(一般的なツリー構造エディタを)させるに取り組んでいます。
ツリーからソースへの変換は些細なので、本当に唯一欠けているのは深さです(銀杏は現在3レベルに制限されています)。
は、[これはまだ非常に実験的なものですので、私はLispの専門家からのフィードバック&入力してみたい。]
私はemacsのに統合する方法を見つけ出すことができればパスカルのプログラムは、役に立つかもしれませんね。しかし、私が探していたツリーエディタはそれほどではありませんでしたので、私は今質問を開いておくべきだと思います。私はいくつかのグーグルでもInterlispを本当に理解していないと告白します。それはLispマシンのためのオペレーティングシステムでしたか?(残念ながら、あまり役に立たないでしょう!:) – scarlet
はい、InterlispはLispマシン上で動作し、Common Lispの前で使用されていたシステムの1つでした。しかし、Common LispはMaclispの影響を強く受け、構造エディタの使用には追いつかなかった。これが "あまり役に立たない"場合でも、構造編集が新しいアイデアではないことは知っているかもしれませんが、数十年前に既に使用されていました。 (私はcllに関するこれについての議論を覚えているので、Googleグループでこのトピックを検索したいかもしれません) – danlei
本当にこのような方法でEmacsモードを書いたければ、ちょうど方法を変えるモードPascalのコードのように、直接セックスを変更する代わりに、コードが表現され、編集されます。 (これはOxgenのようなXMLツールのアプローチです)そして、コード内のコメントの問題を避けることができ、構造編集を使用しない他の人とコードを交換する方が簡単になります。 – danlei