資源描述:
《第2章 PL0編譯程序ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、PL/0語言:功能簡單結構清晰可讀性強具備一般高級語言的必須部分第2章PL/0編譯程序的實現(xiàn)(1).PL/0語言的編譯程序能充分體現(xiàn)一個高級語言編譯程序實現(xiàn)的基本技術和步驟(2).PL/0語言編譯程序是一個非常合適的小型編譯程序的教學模型。PL/0編譯程序的特點1.PL/0語言描述2.PL/0編譯程序的結構3.PL/0編譯程序的詞法分析4.PL/0編譯程序的語法分析5.PL/0編譯程序的目標代碼結構與生成6.PL/0編譯程序的語法錯誤處理7.PL/0編譯程序的目標代碼執(zhí)行本章的重點與主要內(nèi)容本節(jié)將用語法圖擴充的巴科斯一瑙爾范式(E
2、BNF)兩種形式給出PL/0語言的語法2.1PL/0語言描述用語法圖描述語法規(guī)則的優(yōu)點:直觀易讀.在圖2.l的語法圖中用橢圓和圓圈中的英文字表示終結符,用長方形內(nèi)的中文字表示非終結符1.PL/0語言的語法描述圖終結符:是構成語言文法的單詞,是語法成分的最小單位.非終結符:是一個語法成分,在書寫語言程序時并不出現(xiàn),它是由終結符和非終結符串、或終結符串定義的。PL/0編譯程序的特點程序描述圖程序分程序圖2.1(a)程序語法描述圖圖2.1(b)程序語法描述圖分程序constident=number,;varident,;procedur
3、eident;分程序;語句consta=10;varb,c;procedurep;constd=12,e=13,varf;beginf=d+e;end;beginc:=b+a;end;語句語法描述圖語句表達式語句語句語句條件ident:=callidentbeginend;ifthen語句條件whiledoread()ident,write(),表達式表達式語法描述圖表達式項項+-+-條件表達式語法描述圖表達式odd條件表達式=#<<=>>=表達式項語法描述圖項因子因子*/因子identnumber表達式()因子語法描述圖(1).
4、EBNF表示的符號說明a.<>用左右尖括號括起來的中文字表示語法構造成分或稱語法單位,為非終結符b.::=該符號左部由右部定義.讀作‘定義為’c.
5、表示‘或’.為左部可由多個右部定義2PL/0語言文法的EBNF表示d.{}表示花括號內(nèi)的語法成分可以重復.在不加上下界時可重復0到任意次被有上下界時為可重復次數(shù)的限制。e.[]表示方括號內(nèi)的成分為任選項f.()表示圓括號內(nèi)的成分優(yōu)先。a.<程序>::=<分程序>b.<分程序>::=[<常量說明部分>][<變量說明部分>][<過程說明部分>]<語句>(2).PL/0語言文法的EBNF表示
6、c.<常量說明部分>::=const<常量定義>{,<常量定義>}d.<常量定義>::=<標識符>=<無符號整數(shù)>e.<無符號整數(shù)>::=<數(shù)字>{<數(shù)字>}f.<變量說明部分>::=VAR<標識符>{,<標識符>};g.<標識符>::=<字母>{<字母>
7、<數(shù)字>}h.<過程說明部分>::=<過程首部><分程序>{;<過程說明部分>};i.<過程首部>::=procedure<標識符>;j.<語句>::=<賦值語句>
8、<條件語句
9、<當型循環(huán)語句>
10、<過程調(diào)用語句>
11、<該語句>
12、<寫語句>
13、<復合語句>
14、<空>k.<賦值語句>::
15、=<標識符>:=<表達式>l.<復合語句>::=BEGIN<語句>{;<語句>}ENDm.<條件>::=<表達式><關系運算符><表達式>
16、ODD<表達式>n.<表達式>::=[十
17、一]<項>{<加法運算符><項>}o.<項>::=<因子>{<乘法運算符><因子>}p.<因子>::=<標識符>
18、<無符號整數(shù)>
19、<表達式>q.<加法運算符>::=十
20、一q.<加法運算符>::=十
21、一r.<乘法運算符>::=*
22、/s.<關系運算符>::==
23、#
24、<
25、<=
26、>
27、>=t.<條件語句}::=IF<條件>THEN<語句>u.<過程調(diào)用語句>::
28、=call<標識符>v.<當型循環(huán)語句>::=WHllE<條件>Do<語句>w.<讀語句>::=READ(<標識符>{,<標識符>})x.<寫語句>::=WRITE(<表達式>{,<表達式>})y.<字母>::=a
29、b
30、...
31、x
32、y
33、zz.<數(shù)字>::=0
34、1
35、2
36、...
37、8
38、9.PL/0語言是PASCAL語言子集;.它的編譯程序是編譯解釋執(zhí)行系統(tǒng);.PL/0的目標程序為假想棧式計算機的匯編語言,與具體計算機無關;2.2PL/0編譯程序的結構.PL/0的編譯程序和目標程序的解釋執(zhí)行程序都是用PASCAL語言書寫的,因此PI/O語
39、言可在配備PASCAL.語言的任何機器上實現(xiàn)。PL/0編譯程序的結構PL/0源程序詞法分析程序語法分析程序代碼程序目標程序表格管理程序出錯處理程序PI/0編程序是用PASCAL語言書寫,整個編譯程序(包括主程序)是由18個嵌套及并列的過程或函數(shù)組成