2009-11-24 48 views

回答

0

不知道的纯Scala的解决方案,但如果你发现自己需要执行B计划,您可以通过检查ANTLRRats!

2

不能单从语法建立斯卡拉的AST启动。有暗示考虑,并考虑他们,有类型推理考虑。

但是,您可以调用编译器本身 - 毕竟它只是一个jar文件。特别是,Scala 2.8对于其他程序的锁定有很多障碍 - Miles Sabin的工作,他正在这样做,以便Eclipse的Scala插件可以以这种方式利用编译器。

我建议你去Scala工具邮件列表,并与那里的人联系。

+3

您可以在不考虑语言的语义方面(如类型和含义)的情况下为Scala构建AST。毫无疑问,对于许多应用程序而言,您希望将它们考虑在内,但不一定全部。 – 2009-11-24 15:24:04

+1

我可以想象,仅仅需要用户写一个AST以及一个反映蕴含和其他因素对最终用于代码生成的精确AST有贡献的因素。 – 2009-11-24 15:26:19

+0

最初,我在想,我并不关心scala代码的真正语义解释,但是你关于隐含和类型推断的观点是一个很好的观点......我想我肯定会需要后者,所以仔细观察Scala编译器似乎比较谨慎。 – AWhitford 2009-11-27 08:20:53

4

一些现有的解析器:

要小心,如果使用来自规范的EBNF,有明显:

“不匹配的附件和内联语法之间,并且不匹配由scalac编译(和利用在斯卡拉的语言之间来源)和语法声明的语言“ - Scala Trac bug #1826

+0

关于EBNF的提示很有用。这意味着JavaCC,ANTLR等可能是一个挑战。 IDE编译器倾向于有自己的细微差别,因为他们对实时编译感兴趣 - 这不是我需要的。 – AWhitford 2009-11-27 08:30:46