Pet*_*erM 5 c# performance syntax-highlighting
问题:
我想要代码:语法高亮(编程语言)
语言:C# 或汇编 x86(最好是 C#)
平台:Windows
资格:最有效的实现可能/最专业/像微软这样的大公司这样做的方式
改写:如何做我以目前已知的最有效的方式在 C# for Windows 中实现语法高亮?
详细说明(随意跳过 - 不需要回答问题 :)):
我不想要任何实现它的方式 - 我已经看过几个。
我想知道的是微软如何在 Visual Studio(无论哪个版本)上做得这么好。
当谈到语法高亮时,人们一直试图重新发明轮子。我不明白为什么。
这被认为是一个非常困难的问题吗?我见过只突出显示屏幕上当前显示内容的实现,我认为这是要走的路......(它使用了一些聪明的 API 来知道文本框的哪些行实际显示)。
我还看到了使用 RichTextBox 的实现,我认为这不是可行的方法(也许我在这里错了)-我认为将在常规文本框上绘制文本的例程子类化并更改其画笔可能会更好(也许我在某处看到过 - 我怀疑我自己会想到这一点)
另外我听说有些人用 AST 实现它就像编译器会被编码一样(我认为是词法分析器部分?) - 我希望那是矫枉过正 - 我认为这不是有效的。(没教养的猜测)
如果真的是一道难题,那么大部队怎么总能把它做好?例如,我从未听说过在 Visual Studio 中打破语法高亮的方法。
但是任何其他实现它的工具都做得很差,或者比大家伙更糟糕。
什么是官方的“这是最好的方法,任何其他方法效率都较低”的做法?
我真的没有任何证据表明微软的方式更好,但看到他们可能比其他任何人都更了解 Windows API,我猜想实现它的方式是最好的(我很想错 - 想象一下可以说我的语法高亮实现比 MS 更好!)
抱歉我的阐述不连贯。
另外,我提前为任何失礼道歉——这是我的第一个问题。
我不认为有“这是最好的方法,任何其他方法效率较低”的方法来做到这一点。事实上,我不认为效率是主要问题。相反,复杂性是。一个好的语法荧光笔基于一个好的解析器。只要您可以解析代码,您就可以以您喜欢的任何方式突出显示它的每个部分。但是,当代码格式不正确时会发生什么?许多语法荧光笔只是突出显示关键字和一些块结构来克服这个问题。通过这样做,他们可以使用简单的正则表达式,而不是使用成熟的、语法容错的解析器(这是 Visual Studio 所拥有的)。