给出了一个模棱两可的语法,我被要求重写语法以使其明确。事实上,我不知道为什么给定的语法是模棱两可的,更不用说将它重写为一个明确的语法了。
给定的语法是 S -> SS | 一个 | b ,我有四个选择:
A: S -> Sa | Sb | epsilon
B: S -> SS’
S’-> a | b
C: S -> S | S’
S’-> a | b
D: S -> Sa | Sb.
对于每个选择,我已经知道 D 不正确,因为它根本不生成字符串,C 不正确,因为它只匹配字符串 'a' 和 'b'。
但是,我认为答案是 A 而正确答案是 BI 认为 B 是错误的,因为它只是一遍又一遍地生成 S,而 B 无法处理空字符串。
为什么给定的语法不明确?</p>
为什么A不正确而B正确?