Syntax 语法突出显示是如何构建的?

Syntax 语法突出显示是如何构建的?,syntax,editor,syntax-highlighting,lazarus,Syntax,Editor,Syntax Highlighting,Lazarus,我现在正在使用Lazarus构建一个开发者编辑器,作为每一个优秀的开发者编辑器,它需要有一个语法突出显示,因此我想知道一些事情: 语法突出显示通常是如何构建的(使用许多ifs来更改文本字段上的字体) TSynEdit这样做很好吗 如何使用TSynEdit(链接和资源) 如果你看一下,你实际上可以看到一个很好的例子。它是用C#实现的,但是使用了很好的OOP,应该可以很容易地移植到其他平台或语言 大多数自制的语法高亮工具倾向于使用MS Windows RichText控件,但它们通常速度慢且笨重,

我现在正在使用Lazarus构建一个开发者编辑器,作为每一个优秀的开发者编辑器,它需要有一个语法突出显示,因此我想知道一些事情:

  • 语法突出显示通常是如何构建的(使用许多
    if
    s来更改
    文本字段上的字体)
  • TSynEdit
    这样做很好吗
  • 如何使用
    TSynEdit
    (链接和资源)

如果你看一下,你实际上可以看到一个很好的例子。它是用C#实现的,但是使用了很好的OOP,应该可以很容易地移植到其他平台或语言


大多数自制的语法高亮工具倾向于使用MS Windows RichText控件,但它们通常速度慢且笨重,并且在添加大量代码时速度会非常慢。

您可以阅读Eclipse或VIM的源代码。在Eclipse中,您会发现一个抽象语法树库。在它之上是精心编写的语法分析器,以保持容错性错误,因为正在进行的代码通常不满足语言的完整语法。突出显示使用语法树中的信息