卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

消除文法的左遞歸例題 編譯原理,如何消除文法的左遞歸?

編譯原理,如何消除文法的左遞歸?1. A->aa2。A->baB->ab(A和B屬于非終結(jié)符,A和B屬于終結(jié)符)一般來說,左遞歸是在情況1中“>”的兩邊包含相同的非終結(jié)符;在情況2中,

編譯原理,如何消除文法的左遞歸?

1. A->aa

2。A->ba

B->ab(A和B屬于非終結(jié)符,A和B屬于終結(jié)符)

一般來說,左遞歸是在情況1中“>”的兩邊包含相同的非終結(jié)符;

在情況2中,a->ba中“>”后的B和B->ab中“>”前的B是同一個非終結(jié)符

這兩種情況稱為左遞歸。

編譯原理的消除左遞歸是怎么回事???

如果像這樣的CFG a-> ABA-> E離開了遞歸,那么遞歸下降法和語法分析中的LL(1)就不能處理它,因為程序會陷入遞歸,無法前進。Cfga-> BA“a”-> BA“| e與前面的表達式相同,但所有語法的第一項是終止符,它消除了左遞歸。有消除左遞歸的算法,一般編譯原理書中會介紹,不是很復(fù)雜。

【編譯原理】自頂向下LL(1)分析中,消除左遞歸和提取左因子的目的是什么?

通常,LL(1)是通過函數(shù)遞歸實現(xiàn)的

]例如,語法:a-> a | a

代碼實現(xiàn)是:[function a()

{

a()

match(”)

term(a)]}

!]這樣就可以看到死循環(huán)了…

消除了左遞歸后的語法

a-> AA“

a”-> AA“

]這個問題可以避免

公因子就是剛剛提出的就像你在樓上說的,避免程序回溯,消除歧義