• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

JetBrains/gradle-grammar-kit-plugin: Gradle plugin for generating lexers (with J ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

JetBrains/gradle-grammar-kit-plugin

开源软件地址(OpenSource Url):

https://github.com/JetBrains/gradle-grammar-kit-plugin

开源编程语言(OpenSource Language):

Kotlin 93.3%

开源软件介绍(OpenSource Introduction):

official JetBrains project Twitter Follow Build Slack

gradle-grammarkit-plugin

Important: This project requires Gradle 6.6 or newer, however it is recommended to use the latest Gradle available. Update it with:

./gradlew wrapper --gradle-version=VERSION

This Gradle plugin automates generating lexers and parsers to support custom language development in IntelliJ plugins when using Grammar-Kit.

NB: The plugin does not support two-pass generation. Therefore, it does not support method mixins.

Usage

Loading and applying the plugin

Groovybuild.gradle

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

Kotlin DSLbuild.gradle.kts

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

Note: The latest version is: Gradle Plugin Portal

Configuration

Global configuration allows you to select necessary JFlex and Grammar-Kit versions.

Groovybuild.gradle

grammarKit {
  // Version of IntelliJ patched JFlex (see the link below), Default is 1.7.0-1 
  jflexRelease = "1.7.0-1"

  // Release version, tag, or short commit hash of Grammar-Kit to use (see link below). By default, the latest available is used.
  grammarKitRelease = "2021.1.2"
  
  // Optionally provide an IntelliJ version to build the classpath for GenerateParser/GenerateLexer tasks
  intellijRelease = "203.7717.81"
}

Kotlin DSLbuild.gradle.kts

grammarKit {
  // Version of IntelliJ patched JFlex (see the link below), Default is 1.7.0-1 
  jflexRelease.set("1.7.0-1")

  // Release version, tag, or short commit hash of Grammar-Kit to use (see link below). Default is 2021.1.2
  grammarKitRelease.set("2021.1.2")

  // Optionally provide an IntelliJ version to build the classpath for GenerateParser/GenerateLexer tasks
  intellijRelease.set("203.7717.81")
}

Tasks

Generating lexer

Groovybuild.gradle

generateLexer {
    // source flex file
    source = "grammar/Perl.flex"
    
    // target directory for lexer
    targetDir = "gen/com/perl5/lang/perl/lexer/"
    
    // target classname, target file will be targetDir/targetClass.java
    targetClass = "PerlLexer"
    
    // optional, path to the task-specific skeleton file. Default: none
    skeleton = new File("/some/specific/skeleton")
    
    // if set, plugin will remove a lexer output file before generating new one. Default: false
    purgeOldFiles = true
}

Kotlin DSLbuild.gradle.kts

generateLexer {
    // source flex file
    source.set("grammar/Perl.flex")
    
    // target directory for lexer
    targetDir.set("gen/com/perl5/lang/perl/lexer/")
    
    // target classname, target file will be targetDir/targetClass.java
    targetClass.set("PerlLexer")
    
    // optional, path to the task-specific skeleton file. Default: none
    skeleton.set(File("/some/specific/skeleton"))
    
    // if set, plugin will remove a lexer output file before generating new one. Default: false
    purgeOldFiles.set(true)
}

Generating parser

Groovybuild.gradle

generateParser {
    // source bnf file
    source = "grammar/Perl5.bnf"

    // optional, task-specific root for the generated files. Default: none
    targetRoot = "gen"

    // path to a parser file, relative to the targetRoot  
    pathToParser = "/com/perl5/lang/perl/parser/PerlParserGenerated.java"

    // path to a directory with generated psi files, relative to the targetRoot 
    pathToPsiRoot = "/com/perl5/lang/perl/psi"

    // if set, the plugin will remove a parser output file and psi output directory before generating new ones. Default: false
    purgeOldFiles = true
}

Kotlin DSLbuild.gradle.kts

generateParser {
    // source bnf file
    source.set("grammar/Perl5.bnf")

    // optional, task-specific root for the generated files. Default: none
    targetRoot.set("gen")

    // path to a parser file, relative to the targetRoot  
    pathToParser.set("/com/perl5/lang/perl/parser/PerlParserGenerated.java")

    // path to a directory with generated psi files, relative to the targetRoot 
    pathToPsiRoot.set("/com/perl5/lang/perl/psi")

    // if set, the plugin will remove a parser output file and psi output directory before generating new ones. Default: false
    purgeOldFiles.set(true)
}

Links

Usage examples




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap