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

win*_*ing 3 scala antlr3 sbt

有没有人有一个如何设置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
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*fen 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版本,它很容易更改和重建,我仍在研究配置选项.

用法非常简单,只需包含插件和我的maven存储库 ./project/plugins/build.sbt

resolvers += "stefri" at "http://stefri.github.com/repo/snapshots"

addSbtPlugin("com.github.stefri" % "sbt-antlr" % "0.2-SNAPSHOT")
Run Code Online (Sandbox Code Playgroud)

然后将您的ANTLR3语法文件放入src/main/antlr3.它们将包含在您的下一个版本中.

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

seq(sbtantlr.SbtAntlrPlugin.antlrSettings: _*)
Run Code Online (Sandbox Code Playgroud)

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

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