資源描述:
《第二章PL0編譯程序的實現(xiàn).ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、復(fù)習(xí)編譯程序的邏輯階段?編譯程序的構(gòu)成?編譯程序與解釋程序的區(qū)別?書上12頁練習(xí)。第2章PL/0編譯程序本章目的:PL/0語言基礎(chǔ)、PL/0編譯程序?qū)崿F(xiàn)的基本步驟和相關(guān)技術(shù)1.PL/0語言基礎(chǔ)知識2.PL/0語言描述(語法圖、EBNF)3.PL/0編譯程序的結(jié)構(gòu)4.PL/0編譯程序的分析工作(詞法、語法和語義)5.PL/0編譯程序的錯誤處理方法6.目標(biāo)代碼生成和類pcode代碼解釋器PL/0語言:PASCAL語言的子集PL/0程序示例PL/0的語法描述圖PL/0語言的EBNF表示1.PL/0語言基
2、礎(chǔ)知識PL/0程序示例CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)BEGINCALLP;END.程序體說明部分PL/0程序示例CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)BEGINREAD(B);C:=B;WHILEB#0DOBEGINC:=C+B;B:=B-1;END;WRITE(C);END.程序體說明部分PL/0程序示例CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)PROCEDUREP;(*過程說明部分
3、*)VARD;(*P的局部變量說明部分*)BEGINWRITE(D);CALLQ;END;BEGINCALLP;END.p過程體主程序體說明部分PL/0程序示例CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)PROCEDUREP;(*過程說明部分*)VARD;(*P的局部變量說明部分*)PROCEDUREQ;(*P的局部過程說明部分*)BEGINWRITE(D);CALLR;END;BEGINCALLP;END.p過程體主程序體說明部分PL/0程序示例
4、CONSTA=10;(*常量說明部分*)VARB,C;(*變量說明部分*)PROCEDUREP;(*過程說明部分*)VARD;(*P的局部變量說明部分*)PROCEDUREQ;(*P的局部過程說明部分*)VARX;BEGINREAD(X);D:=X;WHILEX#0DOCALLP;END;BEGINWRITE(D);CALLQ;END;BEGINCALLP;END.Q過程體p過程體主程序體說明部分輸入圓柱的半徑和高,計算一些面積、體積等varr,h,len,a1,a2,volumn;
5、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.計算最大公約數(shù)varm,n,r,q;{計算m和n的最大公約數(shù)}proceduregcd;beginwhiler#0dobeginq:=m/n;r:=m-q*n;m:=n;n:=r;end;end;beginread(m);read(n);{為了方便,規(guī)定m>=n
6、}ifm7、eginifm>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);end.第2章PL/0編譯程序1.PL/0語言基礎(chǔ)知識2.PL/0語言描述(語法圖、EBNF)3.PL/0編譯程序的結(jié)構(gòu)4.PL/0編譯程序的分析工作(詞法、語法和
8、語義)5.PL/0編譯程序的錯誤處理方法6.目標(biāo)代碼生成和類pcode代碼解釋器程序分程序或內(nèi)的文字表示單詞符號(終結(jié)符).內(nèi)的文字表示語法成分(非終結(jié)符)非終結(jié)符:可由其它文法符號定義。終結(jié)符:語法成分的最小單位,不能由其它文法符號定義。2.PL/0語言描述(語法圖、EBNF)PL/0語言的EBNF(巴科斯-瑙爾范式)表示構(gòu)成EBNF的元素:非終結(jié)符,終結(jié)符,開始符,規(guī)則。EBNF的表示符號說明:<>:用左右尖括號括起來的內(nèi)容為非終結(jié)符∷=:讀做‘定義為’,∷=的左部由右部定義→