消除文法的左递归例题 编译原理,如何消除文法的左递归?

编译原理,如何消除文法的左递归?1. A->aa2。A->baB->ab(A和B属于非终结符,A和B属于终结符)一般来说,左递归是在情况1中“>”的两边包含相同的非终结符;在情况2中,

编译原理,如何消除文法的左递归?

1. A->aa

2。A->ba

B->ab(A和B属于非终结符,A和B属于终结符)

一般来说,左递归是在情况1中“>”的两边包含相同的非终结符;

在情况2中,a->ba中“>”后的B和B->ab中“>”前的B是同一个非终结符

这两种情况称为左递归。

消除下列文法G[S]的左递归,获得与其等价的、无左递归的文法G’[S]?

[Q→RB[b(2),我们可以得到

R->(BCA B B | B | B[B

]R->(BCA BCA | B | a)R“

]R->bcar“”->bcar“124124124(2)R”

R“->bcar”ε