Плагин Antlr4 maven не может найти файлы грамматики в разных каталогах

Я использую подключаемый модуль maven antlr4 для создания моего проекта maven, который использует antlr4:

     <groupId>org.antlr</groupId>
     <artifactId>antlr4-maven-plugin</artifactId>
     <version>4.0</version>

Я начал с одного файла грамматики, настроил pom.xml, и все шло хорошо.

Затем я решил разделить свою грамматику на логические части и поэтому использовал несколько файлов грамматики, но в разных каталогах (чтобы сгенерированный код помещался в отдельные пакеты), но все же в одном корневом каталоге src/main/antlr4.

Я использую оператор импорта в моем файле грамматики «верхнего» уровня для импорта других необходимых файлов.

Но теперь maven выдает следующую ошибку при попытке сборки:

[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR

Почему antlr не может найти другие файлы, которые я импортирую?

спасибо, Райан.


person user2482572    schedule 13.06.2013    source источник


Ответы (2)


У меня была такая же проблема, и я решил ее со следующей конфигурацией:

<libDirectory>${basedir}/src/main/antlr4/yourGrammarDirectory</libDirectory>

Посмотрите здесь: Как импортировать грамматику в Antlr4 для сборки с maven

person Roberto    schedule 30.10.2013

Для выпуска ANTLR 4.0 тестирование импорта в несколько каталогов не проводилось.

Из-за ограниченных преимуществ (IMO), предоставляемых текущим механизмом импорта грамматики, в настоящее время эта функция имеет очень низкий приоритет. В настоящее время совместное использование файлов грамматики с помощью импорта не позволит вам совместно использовать код для сгенерированных синтаксических анализаторов или создаваемых ими деревьев синтаксического анализа. Я использую ANTLR в течение многих лет для десятков продуктов (включая коммерческие выпуски) и ни разу не обнаружил, что составные грамматики приносят больше пользы, чем проблем. (Обратите внимание, что здесь я говорю об операторе import. Разделение грамматик лексера и парсера на отдельные файлы в одном и том же каталоге часто бывает выгодным и моим предпочтительным способом работы.)

person Sam Harwell    schedule 13.06.2013
comment
Большое спасибо за разъяснение. Я снова вернулся к одному файлу грамматики. - person user2482572; 14.06.2013
comment
Теперь это действительно печально. Меня разочаровал анализ URL-адресов, который включает в себя множество правил, но является лишь одним элементом грамматики. Было бы очень полезно каким-то образом модулировать грамматики. Если оператор импорта не сокращает его, что делает? См. stackoverflow.com/questions/46872405/ и ссылку на отчет об ошибке, который я подал относительно удобства использования. - person Wolfgang Fahl; 12.11.2017