sca*_*let 5 lisp tree structure editor
我听说S表达式可以表示为树; 例如(f 1 (g 2) 3)如
.
. . . .
f 1 . 3 [first level]
g 2 [second level]
Run Code Online (Sandbox Code Playgroud)
是否有编辑(最好免费)直接编辑这种结构?这个会
S表达式代表树,而不是相反.您的示例,使用换行符格式化:
(f 1
(g 2)
3)
Run Code Online (Sandbox Code Playgroud)
它代表以下cons树:
+---+---+ +---+---+ +---+---+ +---+---+
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
+---+---+ +---+---+ + ¦ +---+ +---+---+
v
+---+---+ +---+---+
| g | ----->| 2 |NIL|
+---+---+ +---+---+
Run Code Online (Sandbox Code Playgroud)
这同时是程序的实际抽象语法树 - 其他语言系列的编译器必须从错综复杂的规则构建.
对于编辑,括号是您和您的编辑器在树级别上操作所需的全部内容.在Emacs中它是paredit-mode,但我猜其他编辑器也有类似的实用程序或插件.
据我所知(正如维基百科文章所证实的那样),Interlisp-D中使用了结构编辑。我不知道目前广泛使用的 Common Lisp 结构编辑器是什么,但也许有一些我不知道的事情。Pascal J. Bourguignon 的网站上有一个示例,您可能想尝试一下。(我没有仔细研究它)我确实这样做了,但是前段时间在Oxygen中使用了类似的 XML。
(另外,我不认为 Interlisp 使用它的原因与删除括号有任何关系,例如,注释可能存在问题。)