算术表达式FOLLOW的推理(编译原理)

更新时间:2023-03-20 15:26:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

LOGO

算术表达式FOLLOW的推 的推 算术表达式 理

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: E TE’ E’ +TE’ | ε T FT’ T’ *FT’ | ε F (E) 最终答案: 最终答案:| id E:{$,)} E’:{$,)} : :

FIRST集合 集合 FIRST(F) = {(, id}; ; FIRST(E) =FIRST(T) = {(,id} FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} T,T’:{+, ), $} F:{+,*,),$} : :

LOGO

规则编号: 规则编号: a、如果存在产生式 中所有非 、如果存在产生式A αBβ,那么 ,那么FIRST(β)中所有非ε的符号 中所有 的符号 都在FOLLOW(B)中。 都在 中 b1、如果存在一个产生式 、如果存在一个产生式A αB,那么 ,那么FOLLOW(A)中的所有 中的所有 符号都加入到FOLLOW(B)中. 符号都加入到 中 b2、或者 包含ε, 、或者A αBβ且FIRST(β)包含 ,那么 且 包含 那么FOLLOW(A)中的所 中的所 有符号都加入到FOLLOW(B)中. 有符号都加入到 中 推理步骤0.FOLLOW(E) {$} {} {} {} {}

即初如化

FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: E TE’ E’ +TE’ | ε T FT’ T’ *FT’ | ε F (E) | id 1. 最终答案: 最终答案: E:{$,)} E’:{$,)} : :

FIRST集合 集合 FIRST(F) = {(, id}; ; FIRST(E) =FIRST(T) = {(,id} FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

1. 规则a:FIRST(E’) ∈ FOLLOW(T)=> FOLLOW(T)={+} 由E->TE’ => 规则 ( ) ( ) 规则b1:FOLLOW(E)∈ FOLLOW(E’)=> FOLLOW(E’)={$} 由E->TE’ =>规则 规则 ( ) ( ) ( ) 规则b2:FOLLOW(E)∈ FOLLOW(T)=> FOLLOW(T)={+,$} 由E->TE’ =>规则 规则 ( ) ( ) ( )FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {$} {} {} {} {} FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {$} {+,$} {$} {} {}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: E TE’ E’ +TE’ | ε T FT’ T’ *FT’ | ε F (E) | id 最终答案: 最终答案: E:{$,)} E’:{$,)} : :

FIRST集合 集合 FIRST(F) = {(, id}; ; FIRST(E) =FIRST(T) = {(,id} FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

2. 规则a:FIRST(E’) ∈FOLLOW(T)=> FOLLOW(T)= {+,$} 由E’->+TE’=>规则 规则 规则b1:FOLLOW(E’)∈ FOLLOW(E’)=> FOLLOW(E’)={$} 由E’->+TE’ =>规则 规则 ( ) ( ) ( ) 由E’->+TE’ =>规则 规则b2:FOLLOW(E’)∈ FOLLOW(T)=> FOLLOW(T)={+,$} ( ) ( ) ( ) 规则

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {} {}

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {} {}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: E TE’ E’ +TE’ | ε T FT’ T’ *FT’ | ε F (E) | id 最终答案: 最终答案: E:{$,)} E’:{$,)} : :

FIRST集合 集合 FIRST(F) = {(, id}; ; FIRST(E) =FIRST(T) = {(,id} FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} T,T’:{+,

), $} : F:{+,*,),$} :

LOGO

3. 规则a: 由T -> FT’=>规则 FIRST(T’) ∈FOLLOW(F)=> FOLLOW(F)= {}∩{*}={*} 规则 规则b1:FOLLOW(T)∈ FOLLOW(T’)=> FOLLOW(T’)= {+,$} 由T -> FT’=>规则 规则 ( ) ( ) ( ) 由T -> FT’=>规则 规则b2:FOLLOW(T)∈ FOLLOW(F)=> FOLLOW(F)={+,$} ( ) ( ) ( ) 规则

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {} {}

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {+,$} {+,$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

4. 规则a: 由T’ *FT’ =>规则 FIRST(T’) ∈FOLLOW(F)=> FOLLOW(F)= {+,$} ∩{*}={+,*,$} 规则 规则b1:FOLLOW(T’)∈ FOLLOW(T’)=> FOLLOW(T’)= {+,$} 由T’ *FT’ =>规则 规则 ( ) ( ) ( ) 由T’ *FT’ =>规则 规则b2:FOLLOW(T’)∈ FOLLOW(F)=> FOLLOW(F)= {+,*,$} ( ) ( ) ( ) 规则

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {+,$} {+,$}

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {+,$} {+,*,$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

5. 规则a: 由F (E) | id =>规则 FIRST(‘)’) ∈FOLLOW(E)=> FOLLOW(E)= {$}∩{)}={),$} 规则 规则b1:无 由F (E) | id =>规则 无 规则 规则b2:无 由F (E) | id =>规则 无 规则

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{$} {+,$} {$} {+,$} {+,*,$}

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{),$} {+,$} {$} {+,$} {+,*,$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式6. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

注意,由于FIRST集合是不会改变的, 在第二遍时实际上可忽略

规则a:FIRST(E’) ∈ FOLLOW(T) 由E->TE’ => 规则 ( ) 规则b1:FOLLOW(E)∈ FOLLOW(E’)=> FOLLOW(E’)={),$} 由E->TE’ =>规则 规则 ( ) ( ) ( ) 由E->TE’ =>规则 规则b2:FOLLOW(E)∈ FOLLOW(T)=> FOLLOW(T)={+,),$} ( ) ( ) ( ) 规则FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,$} {$} {+,$} {+,*,$} FOLLOW(E) FOLLO

W(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,$} {+,*,$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式7. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

注意,由于FIRST集合是不会改变的, 在第二遍时实际上可忽略

规则a:FIRST(E’) ∈FOLLOW(T) 由E’->+TE’=>规则 规则 规则b1:FOLLOW(E’)∈ FOLLOW(E’)=> FOLLOW(E’)={),$} 由E’->+TE’ =>规则 规则 ( ) ( ) ( ) 由E’->+TE’ =>规则 规则b2:FOLLOW(E’)∈ FOLLOW(T)=> FOLLOW(T)={+,),$} ( ) ( ) ( ) 规则FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,$} {+,*,$} FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式8. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

注意,由于FIRST集合是不会改变的, 在第二遍时实际上可忽略

规则a: 由T -> FT’=>规则 FIRST(T’) ∈FOLLOW(F) 规则 规则b1:FOLLOW(T)∈ FOLLOW(T’)=> FOLLOW(T’)= {+,),$} 由T -> FT’=>规则 规则 ( ) ( ) ( ) 由T -> FT’=>规则 规则b2:FOLLOW(T)∈ FOLLOW(F)=> FOLLOW(F)= {+,*,),$} ( ) ( ) ( ) 规则FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,$} FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,),$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式9. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

注意,由于FIRST集合是不会改变的, 在第二遍时实际上可忽略

规则a: 由T’ *FT’ =>规则 FIRST(T’) ∈FOLLOW(F) 规则 规则b1:FOLLOW(T’)∈ FOLLOW(T’)=> FOLLOW(T’)= {+,),$} 由T’ *FT’ =>规则 规则 ( ) ( ) ( ) 规则b2:FOLLOW(T’)∈ FOLLOW(F)=> FOLLOW(F)= {+,*,),$} 由T’ *FT’ =>规则 规则 ( ) ( ) ( )FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,),$} FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,),$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E

TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式10. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

注意,由于FIRST集合是不会改变的, 在第二遍时实际上可忽略

规则a: 由F (E) | id =>规则 FIRST(‘)’) ∈FOLLOW(E) 规则 规则b1:无 由F (E) | id =>规则 无 规则 规则b2:无 由F (E) | id =>规则 无 规则FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,),$} FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F) {),$} {+,),$} {),$} {+,),$} {+,*,),$}

这是我们老师自己写的有关编译原理follow处理办法的资料,挺不错的

文法: 文法: FIRST集合 集合 E TE’ E’ +TE’ FIRST(F) = {(, id}; ; |ε FIRST(E) =FIRST(T) = T FT’ T’ *FT’ | ε {(,id} F (E) | id FIRST(E’) = {+, ε}; FIRST(T’)={*, ε} 最终答案: 最终答案: E:{$,)} E’:{$,)} : : 重新回到开 始式11->15. T,T’:{+, ), $} : F:{+,*,),$} :

LOGO

第三遍时发现没有任何集合变化, 算法退出,与上述答案一致。

FOLLOW(E) FOLLOW(T) FOLLOW(E’) FOLLOW(T’) FOLLOW(F)

{),$} {+,),$} {),$} {+,),$} {+,*,),$}

本文来源:https://www.bwwdw.com/article/3mq4.html

Top