微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Monaco:在 monaco 编辑器中为自定义语言创建语言语法定义的最佳方法是什么?

如何解决Monaco:在 monaco 编辑器中为自定义语言创建语言语法定义的最佳方法是什么?

我在 antlr4 中创建了一个相当简单的自定义 DSL。我正在尝试找到在基于网络的摩纳哥编辑器中使用它的最简单方法,其中包含所有花里胡哨的功能

  1. 我发现您可以使用以下命令从头开始创建君主定义:https://microsoft.github.io/monaco-editor/monarch.html (问题是为了将来的更改,我必须保持两件事最新,antlr 语法和君主 json 定义。此外,由于它们是单独的实现,我怎么能确定它们都匹配/同意)。

  2. 我还看到您可以手动使用 ANTLR 生成的词法分析器/解析器,仅使用 ANTLR 就可以自己完成所有事情:https://tomassetti.me/writing-a-browser-based-editor-using-monaco-and-antlr/ (与君主相比,这似乎是大量的手工工作,而且我很难找到很多示例或文档)。

  3. 是否有一种简单的方法可以从 antlr 文件生成君主 json 定义?如果否,通常首选前 2 个选项中的哪一个?为什么?

解决方法

ANTLR 文件实际上只是您的语法。可能可以从那里获得语法突出显示,但我不记得看到任何对摩纳哥这样做的东西。

除了语法高亮,您还需要代码补全。如果您的目标是 Typescript 目标,那么就有 Mike Lischke(希望我拼写正确)放在一起的 C3 代码完成项目。它可以让您尽可能地从语法中获得 I,但是您仍然需要在符号表中查找内容,同时考虑范围。等等。将其置于正确的逻辑光标位置也很棘手(Mike 写了很好的指导以使其正确(尽管我在完成它后重新阅读它对我来说更有意义)。

可以与 JavaScript 目标一起工作,但这需要做更多的工作。 (主要是添加到方法中,类型脚本目标具有而 JavaScript 目标没有。

此外,它不会只是插入摩纳哥。不过,它会在您编写代码时为您节省大量工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。