用于scala的JavaScript源代码生成库

时间:2013-01-07 15:14:03

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

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

4 个答案:

答案 0 :(得分:7)

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

这些不同类的独立性和可重用性如何?只是给代码一个可视化的东西,在我看来,JScala和s2js中的AST类是独立的,可以很容易地被另一个项目借用。 Scala-JS AST课程似乎与周围环境纠缠在一起;提升,更是如此。 (我欢迎改进我的非正式印象的编辑。)

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

对于我自己的项目,我想我要复制并粘贴来自JScala的两个源文件,看看它是怎么回事。

P.S。我还提到,为了完整起见:

答案 1 :(得分:2)

Lift Web框架从AST生成JavaScript。但是,我从来没有看过它的一代。这里松散地描述了AST http://exploring.liftweb.net/master/index-10.html

答案 2 :(得分:2)

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

StringTemplate有一个Scala包装器(至少有一个,我好像记得我看到了更多):http://software.clapper.org/scalasti/

Virtualized-scala似乎并不是你所需要的,我会说,因为Scala开始使用Scala AST,而这似乎不是你想要的。

但是,如果您对这些事情感兴趣,也可以查看http://nescala.org/2013/talks#26(由Alvaro Carrasco提供)。

答案 3 :(得分:1)

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