首先,我检查了类似的问题,但没有一个包含我所寻求的信息。
我想知道,给定上下文无关的语法,是否有可能:
- 知道是否存在等效的 LL(1) 语法。等效于它应该生成相同的语言。
- 将上下文无关文法转换为等效的 LL(1) 文法,前提是它存在。如果存在等效的 LL(1) 语法,则转换应该成功。如果不存在等价物,它不终止也没关系。
如果这些问题的答案是肯定的,那么这些算法或工具是否在某处可用?我自己的研究没有结果。
另一个答案提到 Dragon Book 有一种算法可以消除左递归并留下上下文无关语法。我可以访问这本书并检查了它,但我不清楚语法是否保证为 LL(1)。对上下文无关语法(没有空产生和没有循环)施加的限制对我来说是可以接受的。