语法问题,FIRST的问题

时间:2010-11-29 19:48:41

标签: grammar

考虑遵循语法:

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}

这是对的吗?

1 个答案:

答案 0 :(得分:2)

是的,你没事。左递归对FIRST没有贡献,因为当Ba匹配B时,B中的Ba必须以B可以启动的内容开头毕竟,因为它是B。 :)

你也可以先考虑左递归。