Как автоматически генерировать парсер lexer + с ANTLR4 и Maven?
Я новичок в ANTLR4, и кажется, что нет Eclipse-Plug-In для v4. Поэтому неплохо было бы автоматически создавать источники Java из грамматик .g4. У меня простой, пустой Maven-проект с src/main/java, src/test/java. Где разместить файлы .g4? Как я могу автоматически строить грамматики с помощью Maven?
Не удалось выполнить мой собственный POM-тест:
<repository>
<id>mvn-public</id>
<name>MVNRepository</name>
<url>http://mvnrepository.com</url>
</repository>
...
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.0.0</version>
<executions>
<execution>
<goals>
<goal>antlr</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Eclipse говорит:
Failure to find org.antlr:antlr4-maven-plugin:pom:4.0.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of
central has elapsed or updates are forced
Ответы
Ответ 1
Я создал следующий Gist с pom.xml
, разработанный исключительно для поддержки автоматического генерации кода из ANTLR 4 грамматик во время сборки Eclipse. Он включает в себя необходимую информацию о жизненном цикле для m2e, чтобы знать, что генерация кода необходима, и явно добавляет папку генерации кода с помощью build-helper-maven-plugin
, поскольку Eclipse, похоже, обнаружил некоторые проблемы с поиском в противном случае.
В этой конфигурации файлы грамматики (*.g4
) помещаются рядом с другими исходными файлами Java. Плагин Maven автоматически добавит правильный оператор package ...
к сгенерированным файлам, поэтому вы не должны включать строку @header{package ...}
в самой грамматике.
https://gist.github.com/sharwell/4979017
Ответ 2
Проверьте этот плагин Antlr4 для Eclipse
https://github.com/jknack/antlr4ide