分别考虑以下语法G1和G2。
语法– G1:
A1 → A2A3
A2 → A3A1 | b
A3 → A1A1 | a
语法– G2:
S → AA | 0
A → SS | 1
请考虑以下有关上述语法的陈述:
(I):该语法不是递归的,等效于语法– G1:
A1 → A2A3
A2 → A3A1 | b
A3 → a | bA3A1 | aK | bA3A1K
k → A1A3A1 | A1A3A1K
(II):该语法不是递归的,等效于语法– G2:
S → A A | 0
A → 0S | 1 | 0SK | 1K
K → AS | ASK
(A)只有陈述(I)是正确的
(B)只有陈述(II)是正确的
(C)陈述(I)和(II)都是正确的
(D)陈述(I)不正确(II)均不正确答案: (C)
说明:语法– G1:
A1 → A2A3
A2 → A3A1 | b
A3 → A1A1 | a
将A3→A1 A1替换为A3→A2A3A1,然后将其替换为A3→A3A1A3A1和A3→bA3A1。
消除上面的直接左递归,可以得出:
A3 → a | bA3A1 | aK | b A3A1K
k → A1 A3 A1 | A1 A3 A1K
生成的语法为:
A1 → A2A3
A2 → A3A1 | b
A3 → a | bA3A1 | aK | bA3A1K
k → A1A3A1 | A1A3A1K
语法– G2:
S → AA | 0
A → SS | 1
考虑到排序S,A,我们得到:
S → AA | 0
A → AAS | 0S | 1
并删除立即的左递归,我们得到
S → A A | 0
A → 0S | 1 | 0SK | 1K
K → AS | ASK
因此,陈述(I)和(II)都是正确的。
这个问题的测验