gpt4 book ai didi

intellij-idea - Intellij Idea 中基于 Xtext 的语言

转载 作者:行者123 更新时间:2023-12-03 16:40:10 32 4
gpt4 key购买 nike

我想为 Intellij Idea IDE 的一种语言制作一个插件。该语言是使用 Eclipse Xtext 开发的,并且是开源的。 Eclipse 的插件已经存在。

我的目标是将这种语言移植到 Intellij Idea。我希望能够使用 Intellij 创建源文件,具有特定的语法突出显示并能够编译和运行用这种语言编写的程序。

是否有使用 Xtext 项目生成 Intellij Idea 插件的简单方法?

如果没有,是否有一种有效的解决方案能够在 Intellij 中突出显示特定的语法? (如果可能,采用自动方式,我不希望每次更新 Xtext 项目时都重写所有内容)

最佳答案

简答

是的,需要一些工作。

长答案

可悲的是,Xtext 在后台使用 antlr 而 IntelliJ 使用他们自己的 grammar kit基于解析表达式语法。因此,您可能已经猜到,由 XText 生成的解析和编辑器代码将不起作用。

为了让您的语言在 IntelliJ 中工作,您需要:

  • 创建语法 *.bnf 文件
  • 生成词法分析器 *.flex 文件,可能对其进行调整,然后运行 ​​JFlex 生成器
  • 实现帮助器类以通过文件扩展名、语法突出显示、颜色设置页面、折叠等提供文件识别。

  • *.flex 文件是从 bnf 生成的。幸运的是,第 3 步中的大多数类都遵循非常相似的结构,因此可以轻松生成它们(稍后会详细介绍)。所以基本上,如果你设法生成 *.bnf 文件,你就成功了 80%。

    尽管来自不同的技术,bnf 文件的语法与 XText 文件非常相似。我最近将一些 antlr 语法迁移到 IntelliJ 的 bnf,我不得不做很小的改动。因此,应该可以从您的 XText 文件自动生成 bnf 文件。

    这让我回到第 3 点。使用 XTend, Epsilon's EGL ,或类似的,很容易生成所有的样板类。作为我之前提到的迁移的一部分,我也这样做了。我正在公开代码,所以我会在完成后在这里发布并添加一些细节。

    关于intellij-idea - Intellij Idea 中基于 Xtext 的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362549/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com