編譯原理:編譯過(guò)程概述和編譯程序的結(jié)構(gòu)[1]
本文關(guān)鍵詞:編譯原理,由筆耕文化傳播整理發(fā)布。
編譯原理:編譯過(guò)程概述和編譯程序的結(jié)構(gòu)[1]
作者:希賽教育 來(lái)源:希賽教育基礎(chǔ)學(xué)院 2013年5月15日
1.2編譯過(guò)程概述和編譯程序的結(jié)構(gòu)
編譯程序完成從源程序到目標(biāo)程序的翻譯工作,是一個(gè)復(fù)雜的整體的過(guò)程。從概念上來(lái)講,一個(gè)編譯程序的整個(gè)工作過(guò)程是劃分成階段進(jìn)行的,每個(gè)階段將源程序的一種表示形式轉(zhuǎn)換成另一種表示形式,各個(gè)階段進(jìn)行的操作在邏輯上是緊密連接在一起的。一般一個(gè)編譯過(guò)程劃分成詞法分析、語(yǔ)法分析、語(yǔ)義分析、中間代碼生成,代碼優(yōu)化和目標(biāo)代碼生成六個(gè)階段,這是一種典型的劃分方法。事實(shí)上,某些階段可能組合在一起,這些階段間的源程序的中間表示形式就沒(méi)必要構(gòu)造出來(lái)了。我們將分別介紹各階段的任務(wù)。另外兩個(gè)重要的工作:表格管理和出錯(cuò)處理與上述六個(gè)階段都有聯(lián)系。編譯過(guò)程中源程序的各種信息被保留在種種不同的表格里,編譯各階段的工作都涉及到構(gòu)造、查找或更新有關(guān)的表格,因此需要有表格管理的工作;如果編譯過(guò)程中發(fā)現(xiàn)源程序有錯(cuò)誤,編譯程序應(yīng)報(bào)告錯(cuò)誤的性質(zhì)和錯(cuò)誤發(fā)生的地點(diǎn),并且將錯(cuò)誤所造成的影響限制在盡可能小的范圍內(nèi),使得源程序的其余部分能繼續(xù)被編譯下去,有些編譯程序還能自動(dòng)校正錯(cuò)誤,,這些工作稱之為出錯(cuò)處理。圖1.3表示了編譯的各個(gè)階段。
圖1.3 編譯的各個(gè)階段
下面,我們從源程序在不同階段所被轉(zhuǎn)換成的表示形式來(lái)介紹各個(gè)階段的任務(wù)。
詞法分析
詞法分析階段是編譯過(guò)程的第一個(gè)階段。這個(gè)階段的任務(wù)是從左到右一個(gè)字符一個(gè)字符地讀入源程序,對(duì)構(gòu)成源程序的字符流進(jìn)行掃描和分解,從而識(shí)別出一個(gè)個(gè)單詞(也稱單詞符號(hào)或符號(hào))。這里所謂的單詞是指邏輯上緊密相連的一組字符,這些字符具有集體含義。比如標(biāo)識(shí)符用于表示變量名,是由字母字符開(kāi)頭,后跟字母、數(shù)字字符的字符序列組成的一種單詞。保留字(關(guān)鍵字或基本字)是一種單詞,此外還有算符,界符等等。例如某源程序片斷如下:
begin var sum, first, count: real; sum∶=first+count*10 end.
詞法分析階段將構(gòu)成這段程序的字符組成了如下19個(gè)單詞序列:
1. 保留字begin
2. 保留字var
3. 標(biāo)識(shí)符sum
4. 逗號(hào),
5. 標(biāo)識(shí)符first
6. 逗號(hào),
7. 標(biāo)識(shí)符count
8. 冒號(hào):
9. 保留字real
10. 分號(hào);
11. 標(biāo)識(shí)符sum
12. 賦值號(hào)∶=
13. 標(biāo)識(shí)符first
14. 加號(hào)+
15. 標(biāo)識(shí)符count
16. 乘號(hào)*
17. 整數(shù)10
18. 保留字end
19. 界符·
可以看出,五個(gè)字符即b,e,g,i和n構(gòu)成了一個(gè)稱為保留字的單詞begin,兩個(gè)字符即∶和=構(gòu)成了表示賦值運(yùn)算的符號(hào)∶=。這些單詞間的空格在詞法分析階段都被濾掉了。
我們知道, 標(biāo)識(shí)符用于表示變量名,可以很方便的使用id1,id2和id3分別表示sum,first和count三個(gè)標(biāo)識(shí)符的內(nèi)部形式,那么經(jīng)過(guò)詞法分析后上述程序片斷中的賦值語(yǔ)句
sum∶=first+count*10則表示為
id1∶=id2+id3*10
[1] [2] [3] [4] [5]
本文關(guān)鍵詞:編譯原理,由筆耕文化傳播整理發(fā)布。
本文編號(hào):303444
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/303444.html