用于紧凑LR(1)解析器的APLR(1)算法介绍Hocc编译器中实现的APLR(1)解析器生成算法。该算法旨在生成紧凑且无LR(1)相对不足的解析器自动机,支持非确定性语法,并能与IELR+(1)等算法结合使用以消除不必要的状态分裂。文章对比了LR(1)、LALR(1)、IELR(1)等算法在自动机大小、生成开销及处理能力上的差异,并提供了详细的算法原理和实现细节。 评论点赞收藏62 天前
启程:利用双向Transpiler实现Hemlock语言自举作者分享了自研编译器前端hocc的自举进展,通过对比手写递归下降解析器与生成代码的优劣,阐述了自举带来的工程红利。随后提出利用双向Transpiler(OCaml与Hemlock互转)实现语言自举的技术路线图,旨在避免机械式重写,加速原生运行时开发。 评论点赞收藏718 天前
Hocc中实现的IELR(1)解析算法详解本文详细阐述了Hemlock语言项目中的hocc解析器生成器如何实现IELR(1)算法。文章对比了LR(1)、LALR(1)和PGM(1)等解析算法,指出IELR(1)在消除状态冗余的同时避免了LALR(1)的不足。作者提供了从工作队列处理到状态合并的详细工程实现视角,特别是针对冲突追踪和元数据传播的算法细节,适合对编译器前端和解析器理论感兴趣的开发者。 评论点赞收藏764 天前