考虑遵循语法:
A → BC
B → Ba | epsilon
C → bD | epsilon
D → …
…
这里的问题是规则B
可以派生epsilon
并且也可以左递归。
为了查找FIRST(A)
我正在搜索FIRST(B)
但是我坚持FIRST(B)
,因为它是左递归的。
那么FIRST(B)
是什么?并且FIRST(A)
?
我的版本是:
FIRST(B) → {a, epsilon}
FIRST(A) → {a, b, epsilon}
这是对的吗?
答案 0 :(得分:2)
是的,你没事。左递归对FIRST没有贡献,因为当Ba
匹配B
时,B
中的Ba
必须以B
可以启动的内容开头毕竟,因为它是B
。 :)
你也可以先考虑左递归。