sbt и antlr, есть простой пример?
У кого-нибудь есть пример того, как настроить 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 ответ
Я написал плагин 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")
затем поместите ваши файлы грамматики 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. Плагин все еще находится в стадии разработки, но он уже работает довольно хорошо с моими грамматиками.