鉴于以下语法,为什么说 Z
不可为空
X -> Y | a
Y -> c | epsilon
Z -> X Y Z | d
最佳答案
因为它不包含epsilon
(空)。例如,Y 可以为 null,因为 Y 可以定义为 epsilon
。与X 一样,因为X 被定义为Y 或a。如果我们将Y设置为epsilon
,那么X也是epsilon
。
有趣的是,如果 Z 被定义为仅 X Y,那么 Z 也有可能可以为空,因为 X 和 Y 都可以设置为 epsilon
(如上所述),从而使 Z epsilon
,但因为 Z 必须以 Z 结尾,最终必须以终结符 d 结尾(为什么?),< strong>Z 不可为空。
关于parsing - 解析表中非终结符 A 的可为空性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689245/