消除左递归语法分析指南

左递归的文法,确实是搞语法绕不开的一关,是用递归下降或者LL(1)解析器的时候。

文档里讲得挺细,从怎么识别左递归开始,到怎么改写产生式,再到验证等价性,甚至还提醒你要注意新引入的非终结符命名别冲突,挺贴心的。

像那种常见的 S → S*a 的形式,它就用 T → *aT | ε 来改写,结构清晰也容易看懂,适合刚入门或者在重构语法时对照用。

我比较喜欢它还提到要做文档记录,团队协作时这一点太重要了,不然过几天谁都忘了自己改了啥。还有,链接里还有个 Quadsim Demo 的可视化演示,想上手练练的可以点进去看看。

如果你最近正好在优化自己的语法规则,或者准备上手写一个递归下降解析器,这篇文档还是蛮值得一读的。

doc 文件大小:14KB