【问题标题】:JavaScript source code generation library for scala [closed]scala的JavaScript源代码生成库[关闭]
【发布时间】:2012-12-21 08:12:33
【问题描述】:

我在 scala 中寻找一个从抽象语法树生成 JavaScript 的库。 我想在最后生成 JavaScript 的编译器中使用它,我不想自己实现漂亮的打印部分。

【问题讨论】:

    标签: javascript scala code-generation abstract-syntax-tree


    【解决方案1】:

    Lift Web 框架从 AST 生成 JavaScript。但是,我从来没有看过它的世代结束。这里对 AST 进行了粗略的描述 http://exploring.liftweb.net/master/index-10.html

    【讨论】:

    【解决方案2】:

    有一个 Virtualized-Scala 项目,它的一个实例是从 Scala 代码生成 Javascript,js-scala。在那里你会找到项目的链接并讨论它。

    【讨论】:

      【解决方案3】:

      StringTemplate(来自 ANTLR)非常适合代码生成,我想说,它确实 跟踪缩进并将嵌套语句的缩进保持在正确的级别。不是很漂亮的印刷,但总比没有好。 (同时,我想知道你为什么要打印漂亮的 JavaScript,如果最终它会被缩小。)

      有一个用于 StringTemplate 的 Scala 包装器(至少有一个,我记得我见过更多):http://software.clapper.org/scalasti/

      我想说,Virtualized-scala 似乎不是您需要的,因为它以 Scala 和 Scala AST 开头,而这似乎不是您所需要的。

      但是,如果您也对这类事情感兴趣,您可能还想查看http://nescala.org/2013/talks#26(由 Alvaro Carrasco 撰写)。

      【讨论】:

        【解决方案4】:

        我昨天花了一半时间研究这个。似乎没有标准的、独立的解决方案。我看过的每个项目都有自己的:

        这些不同的类的独立性和可重用性如何?只是给代码一个视觉效果,在我看来,JScala 和 s2js 中的 AST 类是独立的,可以很容易地被另一个项目借用。 Scala-JS AST 类似乎与周围环境更加纠缠不清;电梯,更是如此。 (我欢迎修改我的非正式印象。)

        这些不同的项目有多成熟和久经考验?我的非正式印象是它们按降序排列如下:Lift、Scala-JS、JScala、s2js。

        对于我自己的项目,我想我会从 JScala 复制并粘贴两个源文件,看看效果如何。

        附:为了完整起见,我还提到:

        【讨论】:

        • 我深入了解了 Lift,但据我所知,javascript ast 并非旨在表达该语言的全部范围,因此我无法使用它。我也将 Rhino 视为一种可能性,但它非常麻烦。请考虑一下,我在半年前看过这两本书,我不记得所有细节。不过最后我自己写了:github.com/choeger/sl2/blob/master/src/main/scala/modules/…
        • 我认为 JScala 是这里的最佳选择,但我有偏见 :) 它只是一个 jar,发布到 Maven Central,因此很容易添加为库。如果您想将其复制粘贴到您的代码中,您只需要 2 个文件。很简单。
        猜你喜欢
        • 2011-11-05
        • 2017-09-25
        • 2023-03-19
        • 2014-03-21
        • 2011-05-31
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多