首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有用于Lisp的“树结构编辑器”吗?

有用于Lisp的“树结构编辑器”吗?
EN

Stack Overflow用户
提问于 2011-10-23 20:35:05
回答 4查看 1.6K关注 0票数 5

我听说S-表达式可以表示为树;例如,(f 1 (g 2) 3)作为

代码语言:javascript
运行
复制
      .
 .  .  .    .
f  1   .      3          [first level]
      g  2               [second level]

是否有直接编辑这种结构的编辑器(最好是免费的)?这将会

  1. 避免“所有这些括号”
  2. 展现我对lisp的理解的优雅。
EN

回答 4

Stack Overflow用户

发布于 2011-10-26 20:58:40

S-表达式表示一棵树,而不是相反。用换行符格式化的示例:

代码语言:javascript
运行
复制
(f 1
   (g 2)
   3)

它表示以下参数树:

代码语言:javascript
运行
复制
    +---+---+   +---+---+   +---+---+   +---+---+
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
    +---+---+   +---+---+   + ¦ +---+   +---+---+
                              v
                            +---+---+   +---+---+
                            | g | ----->| 2 |NIL|
                            +---+---+   +---+---+

这同时也是程序的实际抽象语法树--其他语言族的编译器必须根据复杂的规则进行构造。

对于编辑,括号是您和您的编辑器在树级操作所需的全部内容。在Emacs中,它是paredit模式的,但我猜其他编辑器也有类似的实用程序或插件。

票数 5
EN

Stack Overflow用户

发布于 2011-10-23 21:53:20

据我所知(正如维基百科的文章所证实的),结构编辑Interlisp-D中被使用。我不知道有任何结构编辑器的通用Lisp广泛使用今天,但也许有一些我不知道。在PascalJ.Bourguignon的网站上有一个示例,你可能会想玩一玩。(我没有仔细看过它),但是不久前我在含氧量中使用了类似的东西。

(而且,我不认为Interlisp使用它的原因与去掉括号有任何关系,例如,注释可能有问题。)

票数 2
EN

Stack Overflow用户

发布于 2013-08-12 10:03:13

emacs的ParEdit模式本质上是一个结构化编辑器。

另外,在他们的论文中,Gomolka & Humm提到了一个扩展尖尖 for Eclipse的研究原型,但我不知道一个可下载的实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7868999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档