消除左遞迴

2021-07-05 02:36:31 字數 837 閱讀 3738

參考關健young的部落格,**:

左遞迴形式為:

1)a→aβ,a∈vn,β∈v*

2)a→bβ,b→aα,a、b∈vn,α、β∈v*

稱其為左遞迴。

其中可以採取修改左遞迴為右遞迴:

a→aβ|γ。其中β非空,γ不以a打頭

可寫為:a→γa'

a'→βa'|ε

即:a→aα1| aα2 ||aαm|β1|β2||βn

其中,αi(1≤i≤m)均不為空,βj(1≤j≤n)均不以a打頭。

則消除直接左遞迴後改寫為:

a→ β1a'| β2 a' || βna'

a'→ α1a' | α2a' || αma'|ε

例4.12:有文法g(e):

e→e +t |t

t→t*f | f

f→i| (e)

消除該文法的直接左遞迴。

解:按轉換規則,可得:

e→te'

e'→+te'|ε

t→ft '

t'→*ft'|ε

f→i| (e)

s->aa|b a->ac|sd|e,消除左遞迴

左遞迴消除方法如下:其中e為空集

u=ux1|ux2|y1|y2--àu=y1u』|y2u』 u』=x1u』|x2u』|e

故此為:a->ac|sd|e

a=ac|aad|bd|e ---àa=bda』|a』  a』=ca』|ada』|e

消除左遞迴

first集的求法 對於文法g的任一符號串 x1x2 xn可按下列步驟構造其first 集合 1 置first 2 將first x1 中的一切非 符號加進first 3 若 first x1 將first x2 中的一切非 符號加進first 若 first x1 和first x2 將first...

消除左遞迴

1.將以下文法消除左遞迴,並分析符號串 i i i e e t t t t f f f e i 消除左遞迴 e t e e te t ft t ft f e i first集 first e first e first t first t first f follow集 follow e follo...

消除左遞迴

1.將以下文法消除左遞迴,分析符號串 i i i 並分別求first集 follow集,和select集 e e t t t t f f f e i e te e te t ft t ft f i e first te first te first first ft first ft first i...