【发布时间】:2010-11-13 00:24:42
【问题描述】:
我正在为 Mac 编写一个开源文本编辑器,终于到了我想要添加语法突出显示的地步。在过去的几天里,我一直在反复讨论各种解决方案,最后我决定向更广泛的受众公开这个问题。
这是我看到的选项:
- 基本上用一系列正则表达式模式匹配定义语言(类似于TextMate如何定义它的语言)
- 使用正式语法(如 BNF 或 PEG)定义语言
使用正则表达式模式匹配似乎不太理想,因为它不能像正式语法一样正式地表示一种语言;然而,一些不太正式的语言将很难适应 BNF(即 Markdown——尽管我知道有一个很棒的 PEG implementation)。
实时语法突出显示的性能权衡是什么?多种语言的灵活性如何?
如果我走 BNF 路线,Todd Ditchendorf 创建了很棒的 ParseKit 框架,它可以很好地开箱即用。有人知道 PEG 有什么类似的吗?
【问题讨论】:
标签: regex parsing grammar bnf peg