【发布时间】:2015-03-18 21:22:13
【问题描述】:
假设我有这个语法
E -> T+Ex | F
T -> T*Fy | w
F -> E | z | ε
现在我需要将其设为 LL(1)。我一直在遵循这些步骤,但我想出的解决方案似乎不太正确。 拳头可以消除ε-产生式
E -> T+Ex | F | T+x
T -> T*Fy | w | T*y
F -> E | z
现在我们将消除循环
E -> T+Ex | T+x | z
T -> T*Fy | w | T*y
F -> T+Ex | T+x | z
不,我们将消除立即左递归
E -> T+Ex | T+x | z
T -> wT'
T' -> *FyT' | *yT' | ε
F -> T+Ex | T+x | z
最后,我们将替换出现 T 的某些 RHS 产品
E -> wT'+Ex | wT'+x | z
T -> wT'
T' -> *FyT' | *yT' | ε
F -> wT'+Ex | wT'+x | z
现在这对我来说似乎不是 LL(1),因为由此生成的解析表将包含多个终端的多个条目。我似乎缺少什么?
【问题讨论】:
标签: parsing compiler-construction grammar theory ll