IntelliJ IDEA 代码高亮插件使用 ANTLR 语法吗?

Yur*_*kyy 5 grammar antlr jetbrains-ide intellij-idea intellij-plugin

我使用 ANTLRv4 语法来解析我的DSL。我想为我的 DSL 创建一个插件来支持 IntelliJ IDEA 中的代码突出显示和代码完成。

据我所知,IntelliJ 使用BNFFlex格式进行解析。

是否有可能:

  1. 使用 ANTLR 语法,或者
  2. 将 ANTLR 语法转换为 BNF 和 Flex ...

...为我的 DSL 制作一个 IntelliJ 插件?

Dav*_* J. 3

更新于 2020 年 12 月 22 日

问题#1:是否可以直接使用 ANTLR 语法生成 JetBrains 插件以提供语言支持?

是的,在某种程度上。看起来antlr4-intellij-adaptor库会有所帮助。我没有第一手经验。它将自己描述为“一个支持在基于 IntelliJ 的 IDE 插件开发中使用自定义语言的 ANTLRv4 语法的库”。

澄清一下,IntelliJ 的 ANTLRv4 插件是一个不同的工具,旨在帮助开发 ANTLRv4 语法。它不支持使用 ANTLRv4 语法生成供 JetBrains 编辑器(例如 CLion、GoLand、IntelliJ、PyCharm、RubyMine 等)使用的词法分析器和解析器。


问题#2:是否可以将 ANTLR 语法转换为其他形式(例如 BNF 和 Flex),用于生成语言支持的 JetBrains 插件?

是的,但这是一个很大的话题。我会引导您阅读 Stack Overflow 上的这篇文章:是否有工具可以在 ANTLR 和其他形式的 BNF 之间进行转换?


相关工具:您可能会发现Jetbrains 的 Grammar Kit很有用,它是“面向语言插件开发人员的 IntelliJ IDEA 插件”。

推荐文档:此外,JetBrains 还提供了有关如何为其编辑器扩展语言支持的大量文档。