【发布时间】:2017-01-19 22:12:08
【问题描述】:
对于不是LL(1) 或LR(1) 的语言,如何尝试找出是否存在某个数字n 使得语法可以是LL(n) 或LR(n)?
您可以通过查看 LR(0) 项目的规范集合来检查语法是否为 LR(0)。然后,假设它不是LR(0),您可以通过引入前瞻符号来检查它是否是LR(1)。我的简单推理告诉我,要检查它是否为LR(2),您可能必须使前瞻包含接下来的两个符号,而不仅仅是一个。对于LR(3),您必须考虑三个符号等。
即使是这种情况,尽管我对此表示怀疑,但我仍在努力思考如何尝试识别(甚至暗示)n,或者它不存在,为此特定语法可以是LR(n) 和/或LL(n),而不需要从任意LR(m) 向上递增检查。
【问题讨论】: