为什么 T⇒T 为假,而 T⇒*T 为真?

Why is T⇒T false, but T⇒∗T true?

R -> XRX | S
S -> aTb | bTa
T -> XTX | X | ε (empty string)
X -> a | b


1) T⇒T
2) T⇒∗T

我知道第一个是假的,因为你不能将它导出到 T 但第二个我的朋友说它是真的,而我认为它是假的。我想知道你最终是如何从 T 派生到 T 的。 谁能告诉我T⇒∗T的过程。

运算符⇒ 表示“恰好一个生产”。确实没有单出T到T的作品

运算符⇒*表示“任意数量的产品”。任何数字都包括零。因为零产生式不会将 LHS 带到任何地方,所以 LHS 总是 ⇒* 的 本身 (感谢 rici 指出原始 post 中的错误渲染)。

我的感觉是 ⇒* 以这种方式定义是为了使其用法的某些方面比它表示“至少一个”时更加精简。