请考虑以下语法。代表终端的名称已用大写字母指定。 下列哪一项是正确的?
(A) G 1是上下文无关的但不是常规的,而G 2是常规的
(B) G 2是上下文无关的但不是常规的,而G 1是常规的
(C) G 1和G 2都是规则的
(D) G 1和G 2都是上下文无关的,但它们都不是常规的答案: (D)
说明:给定的语法可以重写为:
假设,当= w,expr = E,stmt = S,其他= o
在这里,我们可以写出G 1的右线性语法为
S-> w(E)S
S-> o
E-> ID
因此,L(G 1 )是规则的。
现在对于G 2也可以写一个正确的线性语法:
S-> w(E)S
E-> E + E
E-> E * E
S-> o
但是在这个问题上,这些语法都不是右线性的,也不是左线性的。
因此,选项(D)是正确的。
这个问题的测验