Tree 是否有一个“问题”;树结构编辑器“;口齿不清?

Tree 是否有一个“问题”;树结构编辑器“;口齿不清?,tree,editor,lisp,structure,Tree,Editor,Lisp,Structure,我听说S表达式可以表示为树;例如(f1(g2)3)as . . . . . f 1 . 3 [first level] g 2 [second level] 是否有一个编辑器(最好是免费的)可以直接编辑这种结构?这会 避免“所有那些括号” 展示我对lisp的理解 据我所知(维基百科的文章也证实了这一点),它被用于。我不知道现在有哪种通用Lisp的结构编辑器被广泛使用,但也许有一些我不知道的地方。

我听说S表达式可以表示为树;例如
(f1(g2)3)
as

      .
 .  .  .    .
f  1   .      3          [first level]
      g  2               [second level]
是否有一个编辑器(最好是免费的)可以直接编辑这种结构?这会

  • 避免“所有那些括号”
  • 展示我对lisp的理解
  • 据我所知(维基百科的文章也证实了这一点),它被用于。我不知道现在有哪种通用Lisp的结构编辑器被广泛使用,但也许有一些我不知道的地方。在Pascal J.Bourguignon的网站上有一个你可能想玩的游戏。(我没有仔细看它)但是,我确实在不久前为XML使用了类似的东西


    (此外,我认为Interlisp使用此选项的原因与去掉括号无关,例如,注释可能有问题。)

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

    (f 1
       (g 2)
       3)
    
    它表示以下cons树:

        +---+---+   +---+---+   +---+---+   +---+---+
    --->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
        +---+---+   +---+---+   + ¦ +---+   +---+---+
                                  v
                                +---+---+   +---+---+
                                | g | ----->| 2 |NIL|
                                +---+---+   +---+---+
    
    这同时也是程序的实际抽象语法树,其他语系的编译器必须根据复杂的规则来构造

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

    Emacs的模式本质上是结构化编辑器

    此外,在中,Gomolka&Humm提到了一个为Eclipse扩展的研究原型,但我不知道有什么可下载的实现。

    我们正在努力让你(一个通用的树结构编辑器)

    从树到源代码的转换非常简单,所以真正缺少的只是更多的深度(银杏目前仅限于3个级别)


    [这仍然是非常实验性的,所以我希望Lisp专家提供反馈和输入。]

    如果我能找出如何将Pascal的程序集成到emacs中,我想Pascal的程序可能会很有用。不过,它并不是我想要的树编辑器,所以我想我应该暂时保留这个问题。我承认,即使在谷歌上搜索了一下,我也不太理解Interlisp;它是Lisp机器的操作系统吗?(不幸的是,这可能不会有多大帮助!:)是的,Interlisp运行在Lisp机器上,是Common Lisp之前使用的系统之一。然而,CommonLisp受Maclisp的影响更为强烈,结构编辑器的使用也没有流行起来。即使这“帮助不大”,知道结构编辑不是一个新的想法,但在几十年前就已经被使用了,这也许是件好事。(我记得在C.L.L上讨论过这个问题,所以你可能想在谷歌组中搜索这个话题。)如果你真的想为这样的事情写一个Emacs模式,也许你也可以考虑一种模式,它只是改变代码的表示和编辑方式,而不是像Pascal的代码那样直接改变性别。(这是Oxgen等XML工具的方法)这样就可以避免代码内注释可能出现的问题,并且与不使用结构编辑的其他人交换代码会更容易;我只是想知道是否有一个编辑器将树显示为图表树供用户编辑。(我不确定指针对于这样的事情是否是用户友好的,但我想它可能会起作用。)这太令人愤怒了。提供结构编辑器的完整描述,包括图片、代码行、调查结果,然后不提示从何处获取。(老实说,我现在可能不会从emacs转换过来,但还是一样。)谢谢你的更新。