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. Плагин все еще находится в стадии разработки, но он уже работает довольно хорошо с моими грамматиками.

Другие вопросы по тегам