【发布时间】:2016-08-17 06:27:29
【问题描述】:
我的理解是在 Scala 中创建和解析外部 DSL 非常简单(例如表示规则)。我的假设是否正确,即 DSL 只能在运行时解释,但不支持代码生成(如 ANTLR)以存档更好的性能?
编辑:更准确地说,我的问题是我是否可以使用内置的 Scala 工具/库(例如http://www.artima.com/pins1ed/combinator-parsing.html)来实现这一点(创建外部域特定语言并生成 java/scala 代码)。不是在 scala 中完全自己编写一个完整的解析器/代码生成器。很明显,您可以使用第三方工具来实现这一点,但您必须学习额外的东西并拥有额外的依赖项。我是实现 DSL 领域的新手,所以到目前为止,我对何时使用 ANTLR 之类的外部工具以及你可以(通过合理的努力)用 Scala 板载的东西做些什么没有直觉。
【问题讨论】:
-
你说的是哪种 DSL? DSL = 领域特定语言,我首先想到的。
-
既然可以在Java中使用ANTLR,为什么不能在Scala中使用呢?您可以从您的 Scala 代码中调用任何 Java API(它不会像使用专用的 Scala API 那样漂亮)。
-
我已将我的问题编辑得更准确