使用任何技术(替换,因子分解,左递归删除), 构造一个LL(1)语法,接受与G相同的语言。
G over Σ = {0, 1, 2}:
S → Y | 1X
X → 1X | 0
Y → Y0 | 1X1 | 2X2
到目前为止我这样做了:
X是递归的,所以:
X -> 1F | 0F
F -> 1F | e
构建LL(1)还需要做什么,我可以考虑Y吗?
答案 0 :(得分:0)
首先,X不是递归的,因为它的RHS不是以X开头的。而是它的尾递归并且没有问题。但是Y - > Y0告诉你Y是左递归的。在这种情况下,您执行以下操作:
S -> Y | 1X
X -> 1X | 0
Y -> 1X1F | 2X2F
F -> 0F | e
您可能还想添加和epsilon规则到X以及
X -> 1X | 0 | e
只是为了确保你永远不会以无限的句子结束。