編譯原理521-4-算符優(yōu)先關(guān)系表構(gòu)造ppt課件_第1頁
編譯原理521-4-算符優(yōu)先關(guān)系表構(gòu)造ppt課件_第2頁
編譯原理521-4-算符優(yōu)先關(guān)系表構(gòu)造ppt課件_第3頁
編譯原理521-4-算符優(yōu)先關(guān)系表構(gòu)造ppt課件_第4頁
編譯原理521-4-算符優(yōu)先關(guān)系表構(gòu)造ppt課件_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、5.2.1 算符優(yōu)先文法及優(yōu)先表構(gòu)造算符優(yōu)先文法及優(yōu)先表構(gòu)造 1、算符文法、算符文法2、算符優(yōu)先關(guān)系的定義、算符優(yōu)先關(guān)系的定義3、算符優(yōu)先文法、算符優(yōu)先文法 4、優(yōu)先關(guān)系表的構(gòu)造、優(yōu)先關(guān)系表的構(gòu)造4、優(yōu)先關(guān)系表的構(gòu)造、優(yōu)先關(guān)系表的構(gòu)造1) 1) 定義定義 FIRSTVT FIRSTVT集集 和和 LASTVT LASTVT集集2) 2) 根據(jù)根據(jù) FIRSTVT FIRSTVT集集 和和 LASTVT LASTVT集集 計算計算三種優(yōu)先關(guān)系三種優(yōu)先關(guān)系 3) 3) 計算計算FIRSTVTFIRSTVT集和集和 LASTVT LASTVT集集4) 4) 構(gòu)造優(yōu)先關(guān)系表構(gòu)造優(yōu)先關(guān)系表 1) 1)

2、定義定義FIRSTVTFIRSTVT集集 和和 LASTVT LASTVT集集FIRSTVT(P) = a | P a 或或 P Qa留意留意: 在算符文法中在算符文法中, 一個非終結(jié)符推導(dǎo)出的一個非終結(jié)符推導(dǎo)出的首個算符的位置要么是第一個首個算符的位置要么是第一個, 要么是第二個要么是第二個LASTVT(P) = a | P a 或或 P aQ2) 2) 根據(jù)根據(jù) FIRSTVT FIRSTVT集集 和和 LASTVT LASTVT集集計算三種優(yōu)先關(guān)系計算三種優(yōu)先關(guān)系 : 直接查看產(chǎn)生式右部,如有直接查看產(chǎn)生式右部,如有 P ab 或或 PaQb , 那么那么a b 成成 立立 : 假定有產(chǎn)

3、生式的候選形為假定有產(chǎn)生式的候選形為 aP , 對任何對任何 bFIRSTVT(P) , 有有a b成立成立 : 假定有產(chǎn)生式的候選形為假定有產(chǎn)生式的候選形為 Pb , 對任何對任何 aLASTVT(P) , 有有a b成立成立3) 3) 計算計算FIRSTVTFIRSTVT集和集和 LASTVT LASTVT集集(1) (1) 根據(jù)定義直觀計算根據(jù)定義直觀計算FIRSTVTFIRSTVT集集(2) (2) 用方式化算法計算用方式化算法計算FIRSTVTFIRSTVT(3) (3) 由簡單關(guān)系圖形計算由簡單關(guān)系圖形計算FIRSTVTFIRSTVT* *(1) (1) 根據(jù)定義直觀計算根據(jù)定義直

4、觀計算FIRSTVTFIRSTVT集集a) 假設(shè)有產(chǎn)生式假設(shè)有產(chǎn)生式 Pa 或或 pQa 那么那么 aFIRSTVT(P)b) 假設(shè)有產(chǎn)生式假設(shè)有產(chǎn)生式 PQ , 假設(shè)假設(shè) aFIRSTVT(Q) 那么那么 aFIRSTVT(P)例例5.4 p90(0) E#E#(1) EE+T(2) ET(3) TT*F(4) TF(5) FPF (6) FP(7) P(E) (8) PiFIRSTVTLASTVTE # #E + * ( i + * ) iT * ( i *) iF ( i ) iP ( i ) iE#E# 為對原文法的擴展為對原文法的擴展# 表示句子括號表示句子括號(2) (2) 用方式

5、化算法計算用方式化算法計算FIRSTVTFIRSTVT集集建立一個布爾數(shù)組建立一個布爾數(shù)組FP, a , 和棧和棧STACKFP, a=TRUE , 當且僅當當且僅當 aFIRSTVT(P)PROCEDUE INSERT(P, a)IF NOT FP, a THENBEGIN FP, a:=TRUEPUSH(P, a) ONTO STACKEND MAINBEGIN (MAIN)FOR 每個非終結(jié)符每個非終結(jié)符P和終結(jié)符和終結(jié)符aDO FP, a:= FALSE;FOR 每個形如每個形如Pa或或PQ a 的產(chǎn)生式的產(chǎn)生式DO INSERT(P, a)WHILE STACK 非空非空 DOBEG

6、IN把把STACK的頂項記為的頂項記為(Q,a) , 托出去托出去FOR 每個形如每個形如PQ 的產(chǎn)生式的產(chǎn)生式 DO INSERT(P, a)ENDEND (MAIN) 例例5.4 p90(0) E#E#(1) EE+T(2) ET(3) TT*F(4) TF(5) FPF (6) FP(7) P(E) (8) Pi用方式化算法計算用方式化算法計算FIRSTVT集集過程見黑板過程見黑板(3) (3) 由簡單關(guān)系圖形計算由簡單關(guān)系圖形計算FIRSTVT FIRSTVT 圖中的結(jié)點為非終結(jié)符的圖中的結(jié)點為非終結(jié)符的FIRSTVT(P)和終結(jié)和終結(jié)符符對每個形如對每個形如Pa或或PQ a 的產(chǎn)生式

7、的產(chǎn)生式, 由由FIRSTVT(P)結(jié)點到結(jié)點結(jié)點到結(jié)點a用箭弧銜接用箭弧銜接對每個形如對每個形如PQ 的產(chǎn)生式,的產(chǎn)生式, 由由FIRSTVT(P)到到FIRSTVT(Q)用箭弧銜接用箭弧銜接對每個非終結(jié)符的對每個非終結(jié)符的FIRSTVT(P) , 經(jīng)箭弧有途徑能到達的終結(jié)符結(jié)點經(jīng)箭弧有途徑能到達的終結(jié)符結(jié)點a , 那么有那么有a FIRSTVT(P)補充補充(0) E#E#(1) EE+T(2) ET(3) TT*F(4) TF(5) FPF (6) FP(7) P(E) (8) PiFIRSTVT(T)FIRSTVT(F)FIRSTVT(P)+*(iFIRSTVT(E)FIRSTVT(E

8、)4) 4) 構(gòu)造優(yōu)先關(guān)系表構(gòu)造優(yōu)先關(guān)系表FOR 每個產(chǎn)生式每個產(chǎn)生式 PX1 X2 Xn DO FOR i:=1 TO n-1 DO IF Xi 和和 X i+1 均為終結(jié)符均為終結(jié)符THEN 置置 Xi X i+1 IF Xi 和和 X i+2 均為終結(jié)符均為終結(jié)符, X i+1 為非終結(jié)符為非終結(jié)符 , i n-2, THEN 置置 Xi X i+2 IF Xi為終結(jié)符為終結(jié)符, 但但X i+1 為非終結(jié)符為非終結(jié)符 THEN FOR FIRSTVT(X i+1 )中的每個中的每個a DO 置置 Xi a IF Xi為非終結(jié)符為非終結(jié)符, 但但X i+1 為終結(jié)符為終結(jié)符 THEN FOR LASTVT(X i )中的每個中的每個a DO 置置 a X i+1 例例5.4 p90(0) E#E#(1) EE+T(2) ET(3) TT*F(4) TF(5) FPF (6) FP(7) P(E) (8) PiFIRSTVTLASTVTE # #E + * ( i + * ) iT * ( i *) iF ( i ) iP ( i ) i構(gòu)造算符優(yōu)先關(guān)系表構(gòu)造算符優(yōu)先關(guān)系表Pab PaQb PaR PRb (0) E#E#(1) EE+T(2) ET(3) TT*F(4) TF(5) FPF(6) FP(7) P(E) (8) Pi# #( )# FIRSTVT(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論