自顶向下的语法分析

语法分析

消除直接左递归

A => A α | β
修改后:
A => β A’
A’ => α A’ | ε

例如

E => E + T | T   # α为+T,β为T
T => T * F | F    # α为*F,β为F
F => (E) | id    # 不含左递归,直接照抄下来

修改成

E => T E’
E’ => + T E’ | ε
T => F T’
T’ => * F T’ | ε
F => (E) | id

消除间接左递归

直接代入即可

First集

如 果 X 是 终 结 符 或 者 ϵ , F i r s t ( X ) = X 如果X是终结符或者\epsilon, First(X) = {X} Xϵ,First(X)=X
如 果 X 是 非 终 结 符 且 X 如果X是非终结符且X XX -> X 1 X 2 X 3 . . . . . . X n , F i r s t ( X ) 包 含 了 F i r s t ( X 1 ) − { ϵ } X_1X_2X_3......X_n,First(X) 包含了 First(X_1) - \{\epsilon\} X1X2X3......Xn,First(X)First(X1){ϵ}
如 果 F i r s t ( X 1 ) 包 括 了 ϵ , 那 么 F i r s t ( X ) 也 包 含 了 F i r s t ( X 2 ) − { ϵ } 如果First(X_1)包括了\epsilon,那么First(X)也包含了First(X_2)- \{\epsilon\} First(X1)ϵ,First(X)First(X2){ϵ}
如 果 F i r s t ( X 2 ) 也 包 括 了 ϵ , 那 么 F i r s t ( X ) 也 包 含 了 F i r s t ( X 3 ) − { ϵ } 如果First(X_2)也包括了\epsilon,那么First(X)也包含了First(X_3)- \{\epsilon\} First(X2)ϵ,First(X)First(X3){ϵ}
. . . . . . ...... ......
如 果 F i r s t ( X 1 ) , F i r s t ( X 2 ) , F i r s t ( X 3 ) . . . . . . F i r s t ( X n ) 都 包 括 了 ϵ , 那 么 F i r s t ( X ) 也 包 含 了 { ϵ } 如果First(X_1),First(X_2),First(X_3)......First(X_n)都包括了\epsilon,那么First(X)也包含了\{\epsilon\} First(X1),First(X2),First(X3)......First(Xn)ϵ,First(X){ϵ}

Follow集

如 果 S 是 文 法 开 始 符 号 , 那 么 F o l l o w ( S ) 包 含 了 如果S是文法开始符号,那么Follow(S)包含了 SFollow(S)$
如 果 G 如果G G -> α S γ , 那 么 F o l l o w ( S ) 包 含 了 F i r s t ( γ ) − { ϵ } αSγ,那么Follow(S)包含了 First ( γ) -\{\epsilon\} αSγ,Follow(S)First(γ){ϵ}
如 果 G 如果G G -> α S γ 且 F i r s t ( γ ) 包 含 了 ϵ , 那 么 F o l l o w ( S ) 还 包 含 了 F o l l o w ( G ) αSγ且First(γ)包含了\epsilon,那么Follow(S)还包含了Follow(G) αSγFirst(γ)ϵ,Follow(S)Follow(G)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值