【问题标题】:Use ANTLR grammar for IntelliJ IDEA code highlighting plugins?对 IntelliJ IDEA 代码高亮插件使用 ANTLR 语法?
【发布时间】:2019-05-12 07:29:14
【问题描述】:

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

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

是否可以:

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

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

【问题讨论】:

  • 如果是java(而不是全新的语言),最好使用intellij已经构建好的AST/node结构。为了向 intellij 添加新的语言支持,我以前做过一次,我只使用了 Flex 解析器格式,因为它与 intellij 插件架构巧妙地插入。如果你想使用 ANTLR,那么你必须找到一种方法让它工作......对我来说似乎更复杂
  • This 2013 post 由 ANTLR 的创建者兼 IntelliJ 用户 Terence Parr 撰写,似乎表明他梦想提供您所要求的功能,但目前还没有。 (不是我的专业领域,所以我可能混淆了这些问题。)
  • 我对“尝试 ANTLR v4 语法插件 – Andrey 2018 年 12 月 11 日 11:07”的回复:该插件不是旨在从现有的 ANTLR 生成 IntelliJ 插件语法。
  • @BasilBourque 是的,在我看来,您准确地阅读了 Parr 先生的博文。

标签: intellij-idea antlr grammar jetbrains-ide intellij-plugin


【解决方案1】:

于 2020 年 12 月 22 日更新

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

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

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


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

是的,但这是一个很大的话题。我会引导您阅读这篇 Stack Overflow 帖子:Are there tools to convert between ANTLR and other forms of BNF?


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

推荐文档:此外,JetBrains 为其编辑提供了有关 how to extend language support 的大量文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2013-05-13
    • 2012-04-25
    • 2016-07-07
    • 2019-06-13
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多