分别考虑以下语法 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)都是正确的。
这个问题的测验