【发布时间】:2015-05-08 08:22:13
【问题描述】:
我有以下语法
S -> E | S A | A
E -> if (C) {S} | if (C) {S} else {S}
A -> V := T;
T -> a | b
V -> x | y
C -> V O T | T O V | V O V | T O T
O -> < | >
据此,我说这个语法不是 LL(1) 是否正确,因为对于规则 E,“如果 (C) {S}”可以被左分解并且规则 S 具有左递归?
解决此问题的正确方法是什么? 我在想这样的事情:
S -> P
P -> ER | AR
R -> AR | ε
E -> if (C) {S} B
B -> else {S}
A -> V := T;
T -> a | b
V -> x | y
C -> V O T | T O V | V O V | T O T
O -> < | >
【问题讨论】:
-
这个问题更适合cs.stackexchange.com。