LEZER:一个面向CodeMirror的增量式解析系统

2020-07-06 04:53:00

60多年来,结构化文本的解析问题一直在抵制“一刀切”的解决方案。Lezer也不是这样的解决方案,但它是一个非常不错的解析器生成器,特别适合在代码编辑器中使用。

Lezer(荷兰语中的读取器,发音类似于“LASSER”)提供了一个解析器生成器,该生成器输出JavaScript模块,可以加载这些模块将代码解析到非抽象语法树中。然后,该树可用于高亮显示和基本语义分析。

以声明方式编写语法,使用解析器生成器工具将其转换为高效的解析器。

通过重用旧解析中的节点,Lezer可以快速重新解析与以前解析的版本相比稍有变化的文档。

该解析器是为代码编辑器用例而设计的,配备了从语法错误中恢复的策略,并且可以为任何输入生成树。

通过使用LR解析算法(一种高效的标记器)和针对局部性进行了优化的数据结构,解析器可以像愤怒的狼獾一样撕裂其输入。

解析器生成器生成紧凑的解析表文件,这些文件与运行时库一起,就是您需要交付给客户端的全部内容。

语法树表示被设计为紧凑的,将较小的节点组打包成16位数字的数组。

莱泽正在GitHub上开发,欢迎您的贡献。讨论项目,或提出问题,最好是在论坛上进行。Bug应该通过IssuetRacker报告。我们的目标是成为一个包容、欢迎的社区。为了明确这一点,我们有一套适用于围绕项目进行沟通的行为准则。