Scala sbt和antlr,有简单的例子吗?

Scala sbt和antlr,有简单的例子吗?,scala,sbt,antlr3,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应该包含什么

有没有人举过一个例子来说明如何设置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引入规则,但我一直无法让它工作。(对这个世界来说还是新手)

我已经编写了一个sbt插件,用于从提供的antlr语法文件生成语法分析器和词法分析器代码。您可以在我的github页面上下载代码。它也在sbt插件列表中列出。最新的快照使用ANTLR 3.3,可通过我的github maven存储库(用于sbt 0.11.x系列)获得。如果您需要另一个ANTLR版本,很容易更改和重建,我仍在处理配置选项

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

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

addSbtPlugin("com.github.stefri" % "sbt-antlr" % "0.2-SNAPSHOT")
然后将ANTLR3语法文件放入
src/main/antl3
中。他们会的 包括在您的下一个构建中

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

seq(sbtantlr.SbtAntlrPlugin.antlrSettings: _*)
到您的
build.sbt
文件。注意,
sbtantlr
只生成一次源代码,只要语法文件没有更改,它就不会更改 重新生成java源文件


生成的java文件将输出到
target/scala-2.9.1/src_managed/main/antlr3
,因此请确保在IDE的构建路径中包含该路径。该插件仍在开发中,但它已经非常适合我的语法了。

很抱歉花了很长时间才找到这个插件。我渴望摆脱我的Makefile方法。。。但是,我无法确定您是否在项目设置中包含插件设置sbtantlr.SbtAntlrPlugin.antlrSettings。您是否有上面的示例build.sbt?我在回答中添加了一些信息,说明如何将这些设置添加到构建文件中,希望对您有所帮助。如果您使用的是完整的构建配置,您应该将其添加到那里,但方式取决于您自己的构建文件,因此很难用一般方式来描述。@Steffen谢谢,您能告诉我如何更改java源代码生成的目标目录吗?我想在某个包中生成生成生成的文件