IntelliJ Platform Plugin SDK Help

Gradle Grammar-Kit Plugin

This Gradle plugin automates generating lexers and parsers to support the custom language development of plugins for IntelliJ-based IDEs when using Grammar-Kit.

Usage

To enable this plugin in your Gradle-based project, register the plugin in the Gradle build script's plugins section:

plugins { id("org.jetbrains.grammarkit") version "..." }
plugins { id "org.jetbrains.grammarkit" version "..." }

Grammar-Kit Extension

After the Gradle Grammar-Kit Plugin is applied, the grammarKit extension can be used to configure the plugin and common settings of the provided tasks.

Example:

grammarKit { jflexRelease.set("1.7.0-1") grammarKitRelease.set("2021.1.2") intellijRelease.set("203.7717.81") }
grammarKit { jflexRelease = "1.7.0-1" grammarKitRelease = "2021.1.2" intellijRelease = "203.7717.81" }

grammarKitRelease

The release version of the Grammar-Kit to use.

Type

String

Default value

2021.1.2

jflexRelease

The version of the IntelliJ-patched JFlex, a fork of JFlex lexer generator for IntelliJ Platform API.

Type

String

Default value

1.7.0-1

intellijRelease

An optional IntelliJ version to build the classpath for GenerateParser and GenerateLexer tasks.

If provided, grammarKitRelease and jflexRelease properties are ignored as both dependencies will be provided from the given IntelliJ IDEA release.

Type

String

Default value

null

generateLexer Task

The generateLexer task generates a lexer for the given grammar. The task is configured using common grammarKit extension.

source

The source Flex file to generate the lexer from.

Required

true

Type

String

targetDir

The path to the target directory for the generated lexer.

Required

true

Type

String

targetClass

The Java file name where the generated lexer will be written.

Required

true

Type

String

skeleton

An optional path to the skeleton file to use for the generated lexer. The path will be provided as --skel option. By default, it uses the idea-flex.skeleton skeleton file.

Type

String

Default

null

purgeOldFiles

Purge old files from the target directory before generating the lexer.

Type

Boolean

Default

false

generateParser Task

The generateParser task generates a parser for the given grammar. The task is configured using common grammarKit extension.

source

The source BNF file to generate the parser from.

Required

true

Type

String

targetRoot

The path to the target directory for the generated parser.

Type

String

Default

null

pathToParser

The location of the generated parser class, relative to the targetRoot.

Required

true

Type

String

pathToPsiRoot

The location of the generated PSI files, relative to the targetRoot.

Required

true

Type

String

purgeOldFiles

Purge old files from the target directory before generating the parser.

Type

Boolean

Default

false

Useful Resources

Usage Examples

Last modified: 13 June 2022