ANTLR语法在Visual Studio中突出显示DSL

alm*_*ing 7 c# dsl antlr syntax-highlighting visual-studio

我有一个定义DSL(特定于域的语言)的ANTLR语法.这个语法相对简单.它正在解析语言并输出C代码以创建一个非常基本的翻译器.

这种语言用于C#应用程序(键入某种控件,无论是RichTextBox还是自定义控件),一种要求是为此语言提供语法高亮显示.我已经浏览了互联网,希望能找到关于如何实现这一目标的某种信息,或者找到一种工具来让自己变得更容易.

在没有找到太多信息之后,我最好的假设是我需要使用ANTLR生成的词法分析器来查看标记并相应地对它们进行着色.这是正确的操作路径,还是有其他方法/工具为自定义域特定语言提供语法突出显示?如果这是正确的方法,我该如何识别特定的令牌?

如果我遗漏了任何重要信息,请询问!谢谢!

use*_*210 3

该语言旨在在 C# 应用程序中使用(键入某种控件,无论是 RichTextBox 还是自定义控件),并且一个要求是该语言具有语法突出显示。

考虑使用Scintilla进行控制。它是一个用于 IDE 风格文本编辑的文本控件。Notepad++使用它作为文本控件,它的起源 SciTE IDE 也是如此。我在一个用 C# 编写的小型自定义 IDE 项目中使用了它,使用非官方的 .NET 特定版本——我认为它是ScintillaNET

Scintilla 支持自定义关键字突出显示以及各种可编程功能,例如波浪线下划线等。


如果您有一个更愿意使用的控件,我认为使用小型 ANTLR 词法分析器为您生成标记是合理的。每个标记都包含行号、起始字符位置、源文本和标记类型——您需要知道要突出显示的内容以及如何突出显示的所有内容。唯一的麻烦是每次文本更改时都通过词法分析器运行文本。有一些有效的方法可以做到这一点,而无需重新分析整个文档,但这仍然是需要记住的事情。