編譯原理5214算符優(yōu)先關系表構造_第1頁
編譯原理5214算符優(yōu)先關系表構造_第2頁
編譯原理5214算符優(yōu)先關系表構造_第3頁
編譯原理5214算符優(yōu)先關系表構造_第4頁
編譯原理5214算符優(yōu)先關系表構造_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、5.2.1 算符優(yōu)先文法及優(yōu)先表構造算符優(yōu)先文法及優(yōu)先表構造 1、算符文法、算符文法2、算符優(yōu)先關系的定義、算符優(yōu)先關系的定義3、算符優(yōu)先文法、算符優(yōu)先文法 4、優(yōu)先關系表的構造、優(yōu)先關系表的構造4、優(yōu)先關系表的構造、優(yōu)先關系表的構造1) 1) 定義定義 FIRSTVTFIRSTVT集集 和和 LASTVTLASTVT集集2) 2) 根據根據 FIRSTVTFIRSTVT集集 和和 LASTVTLASTVT集集 計算計算三種優(yōu)先關系三種優(yōu)先關系 3) 3) 計算計算FIRSTVTFIRSTVT集集和和 LASTVTLASTVT集集4) 4) 構造優(yōu)先關系表構造優(yōu)先關系表 1) 1) 定義定義F

2、IRSTVTFIRSTVT集集 和和 LASTVTLASTVT集集FIRSTVT(P) = a | P a 或或 P Qa注意注意: 在算符文法中在算符文法中, 一個非終結符推導出的一個非終結符推導出的首個算符的位置要么是第一個首個算符的位置要么是第一個, 要么是第二個要么是第二個LASTVT(P) = a | P a 或或 P aQ2) 2) 根據根據 FIRSTVTFIRSTVT集集 和和 LASTVTLASTVT集集計算三種優(yōu)先關系計算三種優(yōu)先關系 : 直接查看產生式右部,如有直接查看產生式右部,如有 P ab 或或 PaQb , 則則a b 成成 立立 : 假定有產生式的候選形為假定有

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

4、TVT集集a) 若有產生式若有產生式 Pa 或或 pQa 則則 aFIRSTVT(P)b) 若有產生式若有產生式 PQ , 若若 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) 用形式化算法計算用形式化算法計算FIRSTVTFIRST

5、VT集集建立一個布爾數組建立一個布爾數組FP, a , 和棧和棧STACKFP, a=TRUE , 當且僅當當且僅當 a FIRSTVT(P)PROCEDUE INSERT(P, a)IF NOT FP, a THENBEGIN FP, a:=TRUEPUSH(P, a) ONTO STACKEND MAINBEGIN (MAIN)FOR 每個非終結符每個非終結符P和終結符和終結符aDO FP, a:= FALSE;FOR 每個形如每個形如Pa或或PQ a 的產生式的產生式DO INSERT(P, a)WHILE STACK 非空非空 DOBEGIN把把STACK的頂項記為的頂項記為(Q,a)

6、 , 托出去托出去FOR 每個形如每個形如PQ 的產生式的產生式 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) 由簡單關系圖形計算由簡單關系圖形計算FIRSTVT FIRSTVT 圖中的結點為非終結符的圖中的結點為非終結符的FIRSTVT(P)和和終結終結符符對每個形如對每個形如Pa或或PQ a 的產生式的產生式, 由由FIRSTVT(P)結點結點到到結

7、點結點a用箭弧連接用箭弧連接對每個形如對每個形如PQ 的產生式,的產生式, 由由FIRSTVT(P)到到FIRSTVT(Q)用箭弧連接用箭弧連接對每個非終結符的對每個非終結符的FIRSTVT(P) , 經箭弧有路徑能到達的經箭弧有路徑能到達的終結符結點終結符結點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)4) 4) 構造優(yōu)先關系表構造優(yōu)先關系表FOR 每個

8、產生式每個產生式 PX1 X2 Xn DO FOR i:=1 TO n-1 DO IF Xi 和和 X i+1 均為終結符均為終結符THEN 置置 Xi X i+1 IF Xi 和和 X i+2 均為終結符均為終結符, X i+1 為非終結符為非終結符 , i n-2, THEN 置置 Xi X i+2 IF Xi為終結符為終結符, 但但X i+1 為非終結符為非終結符 THEN FOR FIRSTVT(X i+1 )中的每個中的每個a DO 置置 Xi a IF Xi為非終結符為非終結符, 但但X i+1 為終結符為終結符 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構造算符優(yōu)先關系表構造算符優(yōu)先關系表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(E

溫馨提示

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

評論

0/150

提交評論