5

我正在寻找一些关于在文本框中启用语法突出显示的最佳实践和常见模式的良好概述。这似乎是一个非常常见的练习,几乎所有语言都有一个 UI 控件,可以在不同语言中启用语法突出显示。我只是想看看是否有一个共同的实现模式。

每个人都在使用正则表达式吗?是否有语法高亮场景中常用的正则表达式存储库?

语法高亮是否有替代/更好的方法?

更新

链接到有关以给定语言执行语法突出显示的相关资源或与语法突出显示相关的概念会很棒。Lexing(词法分析)在答案中提出,但没有链接以了解更多信息。任何有助于更好地理解这个普遍解决的问题的东西都会很棒。

维基百科的词法分析

4

1 回答 1

2

正则表达式绝对是最开始的第一个地方。但是,它们无法真正应对大多数语言中遇到的许多边缘情况——看起来像关键字的文本可以在找到的字符串文字中,而字符串文字又可以包含转义的分隔符以及特殊字符。评论等也是如此。

基本上,要做好语法突出显示,您需要对源代码进行词法分析 - 使用特定于语言的启发式方法对其进行解析,以构建区域列表,其中源代码的每个区域都用它的样式进行注释.

随着编辑的进行,您可以再次应用语言规则来查看此更改可以在多大程度上改变区域的呈现方式。例如,在字符串文字中键入一个字母只会使字符串文字区域更长,但键入右引号会截断该区域并将其剩余部分转换为代码,这取决于所有其他词法规则。

于 2009-04-02T05:25:21.230 回答