資源描述:
《第2章PL0編譯程序的實(shí)現(xiàn)編譯原理ppt課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第2章PL/0編譯程序的實(shí)現(xiàn)2.1PL/0語言描述2.2PL/0編譯程序的結(jié)構(gòu)2.3PL/0編譯程序的詞法分析2.4PL/0編譯程序的語法語義分析2.5PL/0編譯程序的目標(biāo)代碼結(jié)構(gòu)和代碼生成2.6PL/0編譯程序的語法錯誤處理2.7PL/0編譯程序的目標(biāo)代碼解釋執(zhí)行時的存儲分配2021/9/171何為PL/0語言?PL/0語言:PASCAL語言的子集,功能簡單,結(jié)構(gòu)清晰,可讀性強(qiáng),具備了一般高級語言的必備部分。PL/0程序示例:CONSTA=10;VARB,C;PROCEDUREP;VARD;PROCEDUREQ;VAR
2、X;BEGINREAD(X);D:=X;WHILEX#0DOCALLP;END;BEGINWRITE(D);CALLQ;END;BEGINCALLP;END.2021/9/172PL/0程序示例CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)PROCEDUREP;(*過程說明部分*)VARD;(*P的局部變量說明部分*)PROCEDUREQ;(*P的局部過程說明部分*)VARX;BEGINREAD(X);D:=X;WHILEX#0DOCALLP;END;BEGINWRITE(D
3、);CALLQ;END;BEGINCALLP;END.Q過程體p過程體主程序體2021/9/173輸入圓柱的半徑和高,計算一些面積、體積等varr,h,len,a1,a2,volumn;beginread(r);read(h);len:=2*3*r;a1:=3*r*r;a2:=a1+a1+len*h;volumn:=a1*h;write(len);write(a1);write(a2);write(volumn);end.2021/9/174計算最大公約數(shù)varm,n,r,q;{計算m和n的最大公約數(shù)}procedur
4、egcd;beginwhiler#0dobeginq:=m/n;r:=m-q*n;m:=n;n:=r;endend;beginread(m);read(n);{為了方便,規(guī)定m>=n}ifm5、llrec;end.2021/9/176計算sum=1!+2!+...+n!,n從控制臺讀入varn,m,fact,sum;{遞規(guī)計算fact=m!}procedurefactorial;beginifm>0thenbeginfact:=fact*m;m:=m-1;callfactorial;end;end;begin{讀入n}read(n);sum:=0;whilen>0dobeginm:=n;fact:=1;callfactorial;sum:=sum+fact;n:=n-1;end;{輸出n!}write(sum);e
6、nd.2021/9/177PL/0編譯程序pcode解釋程序PL/0源程序注:此處的pcode代碼專指PL/0的目標(biāo)代碼,與傳統(tǒng)pcode有區(qū)別pcode代碼2021/9/1782.1PL/0語言描述語法描述的目的:用有窮的文法形式,描述(驗(yàn)證)無窮的句子形式。語法描述的常用形式:非形式化描述(不規(guī)范)語法描述圖:直觀、易讀。EBNF(擴(kuò)充的巴科斯-瑙爾范式)NEXT2021/9/179PL/0語言的非形式描述數(shù)據(jù)類型只有整型標(biāo)識符的有效長度是10,以字母開始的字母數(shù)字串過程無參,可嵌套(最多三層),可遞歸調(diào)用變量的作用域同P
7、ASCAL,常量為全局的,無標(biāo)語句類型:賦值語句,if...then...,while...do...,read,write,call,復(fù)合語句begin...end,說明語句:const...,var...,procedure…13個保留字:if,then,while,do,read,write,call,begin,end,const,var,procedure,odd2021/9/1710PL/0語言的語法描述圖(1)終結(jié)符VT語法成分中的最小單位,構(gòu)成語言文法的單詞。橢圓或圓圈內(nèi)的單詞表示VT(2)非終結(jié)符VN語法成分
8、,在書寫程序時并不出現(xiàn),但可一直追溯成VT表示的形式。矩形內(nèi)的符號表示VN2021/9/1711程序分程序.內(nèi)的文字表示語法成分(短語)或內(nèi)的文字表示單詞符號程序.內(nèi)的文字表示語法成分(短語)語法圖2021/9/1712constidentnumber=,;varident,