gpt4 book ai didi

c# - 语法高亮 - 最有效和专业的方式

转载 作者:行者123 更新时间:2023-11-30 12:36:52 25 4
gpt4 key购买 nike

问题:
我想要代码:(编程语言的)语法高亮
语言:C#或汇编x86(最好是C#)
平台:Windows
资格:最有效的实现可能/最专业/像微软这样的大公司做事的方式
改述:如何以目前已知的最有效方式在 C# for Windows 中实现语法高亮显示?


阐述(随意跳过 - 不需要回答问题:)):
我不想只是任何实现它的方式 - 我已经看到了几种。
我想知道的是 Microsoft 如何在 Visual Studio(无论哪个版本)上做得如此出色。

在语法高亮方面,人们一直在尝试重新发明轮子。我不明白为什么。
这被认为是一个非常困难的问题吗?我见过仅突出显示当前显示在屏幕上的内容的实现,我认为这是要走的路......(它使用一些聪明的 API 来了解文本框的哪些行实际显示)。
我还看到了使用 RichTextBox 的实现,我认为这不是要走的路(也许我在这里错了)-我认为类似于子类化在常规文本框上绘制文本的例程并更改其刷子可能更好(也许我在某个地方看到过 - 我怀疑我自己会想到)
我还听说有些人用 AST 来实现它,就像编译器被编码一样(我认为是词法分析器部分?)——我希望那是矫枉过正——我认为这不是高效的。 (毫无根据的猜测)

如果这确实是一个难题,那么大军团怎么总是做对呢?例如,我从未听说过有一种方法可以破坏 Visual Studio 中的语法突出显示。
但是任何其他实现它的工具都做得很差,或者比大家伙还差。
“这是最好的方法,任何其他方法效率较低”的官方说法是什么?

我真的没有任何证据表明微软的方式更好,但看到他们可能比其他任何人都更了解 Windows API,我猜想实现它的方式是最好的(我很想错 - 想象一下可以说我的语法高亮实现比 MS 的好!)

抱歉,我的阐述不连贯。
另外,我提前为任何失礼道歉 - 这是我的第一个问题。

最佳答案

我认为没有“这是最好的方法,任何其他方法效率较低”的方法。实际上,我不认为效率是主要问题。相当复杂。一个好的语法高亮器基于一个好的解析器。只要你能解析代码,你就可以用任何你喜欢的方式突出显示它的每个部分。但是,当代码格式不正确时会发生什么?许多语法高亮器只是高亮关键字和一些 block 结构来克服这个问题。通过这样做,他们可以使用简单的正则表达式,而不是拥有一个成熟的、语法错误容忍的解析器(这是 Visual Studio 拥有的)。

关于c# - 语法高亮 - 最有效和专业的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417693/

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