Eri*_*ver 5 language-agnostic syntax-highlighting
我正在寻找一些关于在文本框中启用语法突出显示的最佳实践和常用模式的概述.这似乎是一种非常常见的练习,几乎所有语言都具有UI控件,可以使用不同语言进行语法突出显示.我只是想知道是否有一个共同的实现模式.
每个人都使用正则表达式?是否存在常用于语法突出显示方案的正则表达式的存储库?
是否有替代/更好的语法突出显示方法?
更新
关于以给定语言执行语法突出显示的相关资源的链接或与语法突出显示相关的概念将是很好的.Lexing(词汇分析)提出了一个答案,但没有链接可以了解更多信息.任何有助于更好地理解这个通常解决的问题的东西都会很棒.
正则表达式绝对是最先开始的地方。然而,它们无法真正应对大多数语言中遇到的许多边缘情况 - 看起来像关键字的文本可以位于找到的字符串文字中,而字符串文字又可以包含转义分隔符以及特殊字符。评论等也是如此。
基本上,要做好语法突出显示,您需要对源代码进行词法分析 - 使用特定于语言的启发式方法对其进行解析,以构建区域列表,其中源代码的每个区域都注释了其样式。
进行编辑时,您可以再次应用语言规则来查看此更改可以在多大程度上改变区域的呈现。例如,在字符串文字中键入字母只会使字符串文字区域变长,但键入结束引号会截断该区域并将其剩余部分转换为代码,并遵守所有其他词法分析规则。