Ide 代码着色是如何工作的?
代码着色引擎到底是如何工作的?他们只是生成一个解析树来保留空白、给叶子上色并重建原始程序吗?实时代码着色是如何高效地进行动态着色的 据我所知,大多数语法hightligter不会对语法树做出反应,而只是根据它形成的标记的类型对源文本和颜色文本进行标记。highlighter等最困难的任务是识别多行注释(和/或字符串,如果语言允许);其他所有内容都可以保存在单个源行中 自动压痕引擎更为复杂。理论上,最好的结果来自于重建完整的语法树,但这很慢,并且会产生错误处理问题(因为大多数程序在编辑时甚至格式不好)。取而代之的是,他们使用各种简化的扫描和启发式方法,这些方法并不总是能够匹配语言的真正语法Ide 代码着色是如何工作的?,ide,colors,Ide,Colors,代码着色引擎到底是如何工作的?他们只是生成一个解析树来保留空白、给叶子上色并重建原始程序吗?实时代码着色是如何高效地进行动态着色的 据我所知,大多数语法hightligter不会对语法树做出反应,而只是根据它形成的标记的类型对源文本和颜色文本进行标记。highlighter等最困难的任务是识别多行注释(和/或字符串,如果语言允许);其他所有内容都可以保存在单个源行中 自动压痕引擎更为复杂。理论上,最好的结果来自于重建完整的语法树,但这很慢,并且会产生错误处理问题(因为大多数程序在编辑时甚至格式不
(编辑:进一步考虑,这不是完全正确的。例如,Eclipse的Java编辑器还将根据标识符是否命名本地变量、实例字段或静态变量/方法来更改标识符的颜色。这在编辑器解析和键入检查代码后,与基本词汇突出显示分开进行r实时交叉引用)。据我所知,大多数语法HightLigger不会对语法树做出反应,而只是根据其形成的标记类型对源文本和彩色文本进行标记。highlighter等最困难的任务是识别多行注释(和/或字符串,如果语言允许的话);其他所有内容都可以保存在单个源行中 自动缩进引擎更为复杂。理论上,最好的结果来自于重建完整的语法树,但这很慢,并且会带来错误处理问题(因为大多数程序在编辑时甚至格式不好).相反,他们使用各种简化的扫描和启发式方法,这些方法并不总是能够匹配语言的真正语法
(编辑:进一步考虑,这不是完全正确的。例如,Eclipse的Java编辑器还将根据标识符是否命名本地变量、实例字段或静态变量/方法来更改标识符的颜色。这在编辑器解析和键入检查代码后,与基本词汇突出显示分开进行r实时交叉引用)。语法高亮显示通常在lexer级别工作,而不是解析器级别
它本质上是一个由一组正则表达式派生的有限状态机,因此运行速度非常快。语法高亮显示通常在lexer级别工作,而不是解析器级别 它本质上是一个由一组正则表达式派生的有限状态机,因此运行起来非常快