第三章 詞法分析及詞法分析程序(1)

       編譯程序的整個工作過程,是從接收字符串形式的源程序文件作爲輸入,並對此輸入串進行詞法分析開始的。詞法分析的任務就在於依次掃視輸入串中的各個字符,並從其中識別出一系列具有獨立意義的基本語法單位—單詞(token,也稱爲記號)對程序語言來說,關鍵字(如i fforwhilebeginend等)、標識符、各種常數、各種運算符(+* >> = > >+ = A)及分隔符(如逗號、冒號、分號及括號等)都是單詞我們通常把構成各個單詞的字符串(如whiie>=)稱爲該單詞的詞文(lexeme)

      作爲詞法分析的結果,通常是把從源程序中所識別出的各個單詞的詞文轉換爲某種內部表示,並依次進行輸出。而此種內部編碼形式的單詞串,將作爲語法分析程序的輸入和編譯程序後續相關工作階段的處理對象。可見,詞法分析是整個編譯工作的基礎

1、源程序的輸入及預處理

      在詞法分析過程中,編譯程序是通過操作系統從外部介質(如磁盤、軟盤及終端鍵盤等)來讀取源程序文件中的各個字符的。同時,爲正確地識別單詞,有時還需進行超前搜索和回退字符等操作。因此,爲了提高讀盤效率和便於掃描器進行工作,通常可採用緩衝輸入的方案,即在內存中設置一個適當大小的輸人緩衝區,讓操作系統直接將磁盤上的源程序字符串分批送入此緩衝區中,供掃描器進行處理

       從磁盤中讀取信息,必須以扇區爲單位(因爲任何磁盤的存儲空間都是按扇區劃分的),即使僅需從磁盤讀取一個字節,操作系統亦須將整個扇區都讀入緩衝區,然後再從緩衝區讀取一個字節。爲了提高訪問磁盤的效率,一些操作系統(例如MS-DOS)甚至規定將一組扇區,即所謂簇(duster)或塊(block),作爲直接訪問的最小單位。通常,我們把能直接從磁盤中讀取的最小字節數稱爲分配單位(allocation unit)。換言之,每次從磁盤所讀取的字節數應是分配單位的倍數。一般而言,緩衝區愈大則讀盤時間開銷愈小。


發佈了111 篇原創文章 · 獲贊 14 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章