我所知道的大多数语法hightligters都不会对语法树做出反应,而只是根据它形成的标记类型来标记源和颜色文本.像荧光笔这样最困难的任务是识别多行注释(和/或字符串,如果语言允许的话); 其他一切都可以保存在一个源代码行中.
自动压痕引擎更复杂.从理论上讲,最好的结果将来自重建完整的语法树,但这很慢并且引发了错误处理的问题(因为大多数程序在编辑时甚至都没有良好的形成).相反,他们使用各种简化的扫描和启发式方法,并不总是能够匹配语言的真实语法.
(编辑:进一步认为这不完全正确.例如,Eclipse的Java编辑器也将根据它们是否命名局部变量,实例字段或静态变量/方法来更改标识符的颜色.这发生在与基本的单独传递中在编辑器解析并检查实时交叉引用的代码之后,词汇突出显示.