我试图在这个语法中找到歧义,所以我可以删除它并将其转换为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
答案 0 :(得分:1)
语法不含糊。尽管如此,它不是LL(1),因为当前瞻标记为if
时,无法知道将使用D
的两个产品中的哪一个。
要使其成为LL(1),您需要left-factor D
。