Глава 58. Плагин ANTLR.

Плагин ANTLR расширяет плагин Java и добавляет поддержку генерации парсеров, используя ANTLR.

Плагин ANTLR поддерживает ANTLR версии 2, 3 и 4.

58.1. Использование.

Чтобы использовать плагин ANTLR, включите следующую строчку в ваш сборочный скрипт:

Пример 58.1. Использование плагина ANTLR

build.gradle

apply plugin: 'antlr'
	  

58.2. Задачи.

Плагин ANTLR добавляет несколько задач, как показано ниже, к вашему проекту.

Таблица 58.1. Плагин ANTLR - задачи
Имя задачиЗависит отТипОписание
generateGrammarSource-AntlrTaskГенерирует исходные файлы для всех грамматик ANTLR.
generateTestGrammarSource-AntlrTaskГенерирует исходные файлы для всех тестовых грамматик ANTLR.
generateНаборИсходниковGrammarSource-AntlrTaskГенерирует исходные файлы для всех грамматик ANTLR данного набора исходников.

Плагин ANTLR добавляет следующие зависимости к задачам, добавленным плагином Java.

Таблица 58.2. Плагин ANTLR - дополнительные зависимости задач
Имя задачиЗависит от
compileJavagenerateGrammarSource
compileTestJavagenerateTestGrammarSource
compileНаборИсходниковJavagenerateНаборИсходниковGrammarSource

58.3. Разметка проекта.

Таблица 58.3. Плагин ANTLR - разметка проекта
ПапкаЗначение
src/main/antlrФайлы грамматик ANTLR. Если грамматика ANTLR объединена в пакеты, структура папки antlr должна отображать структуру пакета. Это гарантирует, что сгенерированные исходники окажутся в корректной целевой подпапке.
src/test/antlrТестовые файлы грамматик ANTLR.
src/наборИсходников/antlrФайлы грамматик ANTLR данного набора исходников.

58.4. Управление зависимостями.

Плагин ANTLR добавляет конфигурацию зависимостей antlr, которая предоставляет реализацию ANTLR для использования. В следующем примере показано как использовать ANTLR версии 3.

Пример 58.2. Объявление версии ANTLR

build.gradle

repositories {
    mavenCentral()
}

dependencies {
    antlr "org.antlr:antlr:3.5.2" // use ANTLR version 3
    // antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
}
	  

Если зависимость не объявлена, по умолчанию будет использоваться antlr:antlr:2.7.7. Чтобы использовать другую версию ANTLR, добавьте соответствующую зависимость в конфигурацию зависимостей, как показано выше.

58.5. Условные свойства.

Плагин ANTLR не добавляет никаких условных свойств.

58.6. Свойства наборов исходников.

Плагин ANTLR добавляет следующие свойства к каждому набору исходников в проекте.

Таблица 58.4. Плагин ANTLR - свойства наборов исходников
Имя свойстваТипЗначение по умолчаниюОписание
antlrSourceDirectorySet (только для чтения)Не nullФайлы грамматик ANTLR этого набора исходников. Содержит все файлы .g или .g4, найденные в исходных папках ANTLR и исключает все остальные типы файлов.
antlr.srcDirsSet<File>. Может быть установлено любым способом, описанным в Секции 20.5 Указание набора входных файлов.[папкаПроекта/src/имя/antlr]Исходные папки, содержащие файлы грамматик ANTLR этого набора исходников.

58.7. Контроль процесса генератора ANTLR .

Иструмент ANTRL выполняется в отдельном процессе. Это позволяет точно контролировать настройки памяти процесса ANTLR. Чтобы установить размер кучу процесса ANTLR, можно использовать свойство maxHeapSize задачи AntlrTask. Чтобы передать дополнительные аргументы командной строки, добавьте их к свойству arguments задачи AntlrTask.

Пример 58.3. Установка максимального размера кучи и дополнительных аргументов ANTLR

build.gradle

generateGrammarSource {
    maxHeapSize = "64m"
    arguments += ["-visitor", "-long-messages"]
}