fool2fish / dragon-book-exercise-answers

Compilers Principles, Techniques, & Tools (purple dragon book) second edition exercise answers. 编译原理(紫龙书)第2版习题答案。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

4.4.6 练习4.4.1 a)没有左递归吧,感觉不需要消除左递归

FubinSama opened this issue · comments

commented

S -> 0 A
A -> S 1 | 1

commented

感觉我跟博主对消除左递归的算法的理解有点不一样。算法中说将非终结符排成一个序列A1,A2,...,Ak。然后用k做的循环,感觉上不需要把在消除左递归过程中产生的新的非终结符加入序列,并动态的扩大k值。如果需要加入序列的话,作者写的算法中,应该会有说明吧。

同问,感觉这个不是左递归啊

赞同楼上,这个没有左递归的吧。

感觉我跟博主对消除左递归的算法的理解有点不一样。算法中说将非终结符排成一个序列A1,A2,...,Ak。然后用k做的循环,感觉上不需要把在消除左递归过程中产生的新的非终结符加入序列,并动态的扩大k值。如果需要加入序列的话,作者写的算法中,应该会有说明吧。

你理解错意思了,这里就是严格按照书上的算法来的,
S -> 0 A
A->S | 1 》 A -> 0 A 1 | 1
这一步是为了保证性质:所有产生式Ak->Al a都满足l>k成立

commented

这里也不是间接左递归吧