如何显示语法不是LL(1)并将语法转换为LL(1)

时间:2013-05-05 07:15:37

标签: parsing compiler-construction grammar context-free-grammar compiler-theory

我试图在这个语法中找到歧义,所以我可以删除它并将其转换为LL(1),但是对于我的生活,我无法找到歧义。任何帮助将不胜感激。

D -> if (C) {S} | if (C) {S} else {S}
S -> D | SA | A
A -> V = T;
V -> x | y
T -> 1 | 2
C -> true | false

1 个答案:

答案 0 :(得分:1)

语法不含糊。尽管如此,它不是LL(1),因为当前瞻标记为if时,无法知道将使用D的两个产品中的哪一个。

要使其成为LL(1),您需要left-factor D