gpt4 book ai didi

regex - 为文本编辑器定义语法的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 08:40:11 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

3个月前关闭。




Improve this question




我正在自虐地为 Mac 编写一个开源文本编辑器,并且终于达到了我想要添加语法突出显示的地步。过去几天我一直在讨论各种解决方案,我终于决定向更广泛的受众提出这个问题。

以下是我看到的选项:

  • 基本上用一系列 定义语言正则表达式模式匹配 (类似于 TextMate 定义其语言的方式)
  • 定义语言正式语法像 BNF 或 PEG

  • 使用正则表达式模式匹配似乎不太理想,因为它不能像形式语法一样正式表示语言;然而,一些不太正式的语言将很难适应 BNF(即 Markdown——尽管我知道有一个很棒的 PEG implementation)。

    实时语法突出显示的性能权衡是什么?广泛的语言的灵活性如何?

    如果我走 BNF 路线,Todd Ditchendorf 创造了很棒的 ParseKit开箱即用的框架。任何人都知道任何类似的 PEG 吗?

    最佳答案

    除非您想为要处理的每种语言(或者更糟的是,对于要处理的语言的每种方言)获得完全无上下文(或更糟,完全上下文敏感)语法的战斗。 . 有多少种 C++?),为了突出语法的目的,您可能最好放弃完全正确性并接受有时您会弄错的情况。在这种情况下,正则表达式似乎是一个非常好的答案。它们也可以非常快,因此它们不会干扰进行编辑的人员。

    如果您坚持进行完整的语法检查/完成(我认为您不是),那么您将需要完整的语法。您还将需要很长时间才能为真正的语言制作编辑器。

    有时最好不要太认真。您可以获得的 98% 解决方案比永远不会实现的 100% 解决方案要好。

    关于regex - 为文本编辑器定义语法的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170180/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com