将 ANTLR4-Intellij-Adaptor 库与 UVL 语法一起使用 - IntelliJ Custom Lanugage 支持

Using ANTLR4-Intellij-Adaptor library with UVL grammar - IntelliJ Custom Lanugage Support

提问人:treufabian 提问时间:9/4/2023 更新时间:9/4/2023 访问量:73

问:

我目前正在开发一个 Intellij 插件来支持 UVL 作为自定义语言。由于 UVL 1 已经存在 ANTLR4 语法,我想按照 IntelliJ 文档中的建议将此语法用于解析器和词法分析器。为此,我需要使用 antlr4-intellij-adaptor 2

还有一个使用这种技术 3 的自定义语法示例插件,其中字符串的语法突出显示对我来说效果很好。所以我的设置应该没问题。但是当使用 UVL 语法时,当运行插件并尝试打开文件(以 .uvl 结尾)时,我只会得到一个空白窗口。语法的生成没有任何错误,并且在运行插件并打开文件时也没有错误输出,然后保持空白。 我还尝试了另一种语法来测试,但这也不起作用 - 同样的问题。只有示例插件中的语法有效......

我很难调试它,因为没有错误输出。是否有任何明显的我做错了,或者我需要更改 UVL 语法以使其与适配器一起使用?感谢您的帮助!如果你想看看我的代码:https://github.com/treufabian/IntelliJ-UVL-Plugin

解析 antlr antlr4 intellij-plugin 词法分析器

评论

0赞 Ilya Rodionov 9/14/2023
你能详细说明一下吗?我已经尝试了你的插件,但我没有得到任何空白窗口。
0赞 treufabian 9/15/2023
当我打开一个包含 uvl 内容的 .uvl 文件时(当然,我的插件处于活动状态),我的编辑器保持空白,就好像它永远不会完成文件加载一样。
0赞 Ilya Rodionov 9/15/2023
我没有Ultimate许可证,所以我在运行您的插件之前禁用/评论了所有与Ultimate相关的内容(LSP等)。也许这就是原因。此外,我取消了在 中突出显示的 STRING。截图:ibb.co/jDRd0LQ 补丁:pastebin.com/TX77eHTEUVLSyntaxHighlighter
0赞 treufabian 9/19/2023
是的,那是因为您的版本是激活了示例语法的版本(其工作原理与原始帖子中所述)。出于测试目的,我在 UVL.g4 文件中放置了多个语法。对不起,我应该明确提到这一点!我现在已经激活了UVL语法,现在你也应该得到空白窗口。(github.com/treufabian/IntelliJ-UVL-Plugin/commit/......)
0赞 Ilya Rodionov 9/20/2023
现在我可以重现它了。我相信原因是方法抛出的“不连续的标记序列是由词法分析器生成的”异常。我不知道为什么IDEA不向用户报告,而只显示一个空白编辑器。您应该向 JetBrains 报告。若要解决此问题,词法分析器应生成一系列没有任何间隙的标记。ValidatingLexerWrapper.advance

答: 暂无答案