sbt和antlr,举个简单的例子?

时间:2011-12-08 03:40:27

标签: scala sbt antlr3

有没有人举例说明如何设置sbt以构建ANTLR文件(到scala),然后编译生成的代码。

我的文件布局

 src/main/scala/Test.scala     // scala test rig
 src/main/scala/Test.g         // antlr grammar

 build/antlr/TestParser.scala  // antlr output files
 build/antlr/TestLexer.scala

我的sbt应该包含什么?我知道有一个插件用于拉动ANTLR的规则,但我无法使其工作。 (这个世界还是新手)

1 个答案:

答案 0 :(得分:5)

我编写了一个sbt插件,用于从提供的antlr语法文件生成解析器和词法分析器代码。您可以在我的github页面http://github.com/stefri/sbt-antlr上下载代码。它也列在sbt插件列表https://github.com/harrah/xsbt/wiki/sbt-0.10-plugins-list中。最新的快照使用ANTLR 3.3,可通过我的github maven存储库获取sbt 0.11.x系列。如果您需要另一个ANTLR版本,它很容易更改和重建,我仍然在处理配置选项。

用法很简单,只需在./project/plugins/build.sbt

中包含插件和我的maven存储库
resolvers += "stefri" at "http://stefri.github.com/repo/snapshots"

addSbtPlugin("com.github.stefri" % "sbt-antlr" % "0.2-SNAPSHOT")

然后将您的ANTLR3语法文件放在src/main/antlr3中。他们会 包含在你的下一个版本中。

确保您还在项目设置中包含插件设置sbtantlr.SbtAntlrPlugin.antlrSettings,例如,如果您使用的是简单配置方法,请添加以下行

seq(sbtantlr.SbtAntlrPlugin.antlrSettings: _*)

到您的build.sbt文件。注意,sbt-antlr只生成一次源代码,只要您的语法文件没有改变它没有 重新生成java源文件。

生成的java文件吐出到target/scala-2.9.1/src_managed/main/antlr3,因此请确保在IDE的构建路径中包含该路径。该插件仍在进行中,但它已经与我的语法很好用。