首先...是否可以使用 PEG 来完成简单的语法突出显示。
我只是希望它能够识别和突出显示 C 风格语言常见的基本内容
第二......如果有任何这样的例子或类似的东西,请告诉我
第三......如果我以错误的方式解决这个问题,并且有更常见和经过验证的方法可以做到这一点,那么也请告诉我
使用解析表达式语法进行语法高亮绝对是可能的。例如,Scintillua 为基于 Scintilla 的文本编辑器提供基于 PEG 的语法突出显示。 Textadept 是使用 Scintillua 的文本编辑器的示例。
还有由 Zachary Yedidia 构建的更新的 flare 库,附带一篇关于增量 PEG 解析的科学论文。 Flare 的目标是在 Micro 文本编辑器中使用它进行语法突出显示。
使用解析表达式语法进行语法突出显示的困难之一是,您需要某种方法来增量地重新解析文件,以避免每次更改时完全重新解析整个文件而导致速度减慢。另一个困难是某些句法元素无法用 PEG 进行解析。例如,C++ 中的原始字符串使用
R"abc(hello)abc"
形式,其中
abc
可以是任意分隔符。