ANTLR 插件扩展了 Java 插件,增加了使用 ANTLR 生成解析器的支持。
ANTLR 插件支持 ANTLR 版本 2、3 和 4。 |
用法
要使用 ANTLR 插件,请在构建脚本中包含以下内容
plugins {
antlr
}
plugins {
id 'antlr'
}
任务
ANTLR 插件会向您的项目添加许多任务,如下所示。
ANTLR 插件会向 Java 插件添加的任务添加以下依赖项。
任务名称 | 依赖于 |
---|---|
|
|
|
|
|
|
项目布局
src/main/antlr
-
生产 ANTLR 语法文件。如果 ANTLR 语法是按包组织的,antlr 文件夹中的结构应反映包结构。这确保生成的源文件最终位于正确的目标子文件夹中。
src/test/antlr
-
测试 ANTLR 语法文件。
src/sourceSet/antlr
-
给定源集的 ANTLR 语法文件。
依赖管理
ANTLR 插件添加了一个 antlr
依赖配置,它提供要使用的 ANTLR 实现。以下示例展示了如何使用 ANTLR 版本 3。
repositories {
mavenCentral()
}
dependencies {
antlr("org.antlr:antlr:3.5.2") // use ANTLR version 3
// antlr("org.antlr:antlr4:4.5") // use ANTLR version 4
}
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 版本,请像上面那样将相应的依赖项添加到 antlr
依赖配置中。
贡献的扩展
antlr
— AntlrSourceDirectorySet-
此源集的 ANTLR 语法文件。包含 ANTLR 源目录中找到的所有
.g
或.g4
文件,并排除所有其他类型的文件。默认值为非空。
惯例属性(已废弃)
ANTLR 插件添加了一个惯例属性。
antlr
— SourceDirectorySet-
此源集的 ANTLR 语法文件。包含 ANTLR 源目录中找到的所有
.g
或.g4
文件,并排除所有其他类型的文件。默认值为非空。
此惯例属性已废弃,并由上面描述的扩展取代。
源集属性
ANTLR 插件为项目中的每个源集添加以下属性。
antlr.srcDirs
—Set<File>
-
包含此源集的 ANTLR 语法文件的源目录。可以使用隐式转换为文件集合的任何内容进行设置。默认值为
[projectDir/src/name/antlr]
。
控制 ANTLR 生成器进程
ANTLR 工具在一个独立的进程中执行。这允许对 ANTLR 进程的内存设置进行细粒度控制。要设置 ANTLR 进程的堆大小,可以使用 AntlrTask 的 maxHeapSize
属性。要传递额外的命令行参数,请附加到 AntlrTask 的 arguments
属性。
tasks.generateGrammarSource {
maxHeapSize = "64m"
arguments = arguments + listOf("-visitor", "-long-messages")
}
generateGrammarSource {
maxHeapSize = "64m"
arguments += ["-visitor", "-long-messages"]
}