sbt и antlr, есть простой пример? - PullRequest
3 голосов
/ 08 декабря 2011

Есть ли у кого-нибудь пример того, как настроить 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 Ответ

5 голосов
/ 10 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...