我听说S-表达式可以表示为树;例如,(f 1 (g 2) 3)
作为
.
. . . .
f 1 . 3 [first level]
g 2 [second level]
是否有直接编辑这种结构的编辑器(最好是免费的)?这将会
发布于 2011-10-26 20:58:40
S-表达式表示一棵树,而不是相反。用换行符格式化的示例:
(f 1
(g 2)
3)
它表示以下参数树:
+---+---+ +---+---+ +---+---+ +---+---+
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
+---+---+ +---+---+ + ¦ +---+ +---+---+
v
+---+---+ +---+---+
| g | ----->| 2 |NIL|
+---+---+ +---+---+
这同时也是程序的实际抽象语法树--其他语言族的编译器必须根据复杂的规则进行构造。
对于编辑,括号是您和您的编辑器在树级操作所需的全部内容。在Emacs中,它是paredit模式的,但我猜其他编辑器也有类似的实用程序或插件。
发布于 2011-10-23 21:53:20
据我所知(正如维基百科的文章所证实的),结构编辑在Interlisp-D中被使用。我不知道有任何结构编辑器的通用Lisp广泛使用今天,但也许有一些我不知道。在PascalJ.Bourguignon的网站上有一个示例,你可能会想玩一玩。(我没有仔细看过它),但是不久前我在含氧量中使用了类似的东西。
(而且,我不认为Interlisp使用它的原因与去掉括号有任何关系,例如,注释可能有问题。)
发布于 2013-08-12 10:03:13
emacs的ParEdit模式本质上是一个结构化编辑器。
另外,在他们的论文中,Gomolka & Humm提到了一个扩展尖尖 for Eclipse的研究原型,但我不知道一个可下载的实现。
https://stackoverflow.com/questions/7868999
复制相似问题