
算术表达式FOLLOW的推理(编译原理).docx
11页本文格式为Word版,下载可任意编辑算术表达式FOLLOW的推理(编译原理) 这是我们老师自己写的有关编译原理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。
