編譯原理實用教程 楊德芳 第3章 詞法分析

編譯原理實用教程 楊德芳 第3章 詞法分析

ID:40336234

大?。?94.00 KB

頁數(shù):15頁

時間:2019-07-31

編譯原理實用教程 楊德芳 第3章 詞法分析_第1頁
編譯原理實用教程 楊德芳 第3章 詞法分析_第2頁
編譯原理實用教程 楊德芳 第3章 詞法分析_第3頁
編譯原理實用教程 楊德芳 第3章 詞法分析_第4頁
編譯原理實用教程 楊德芳 第3章 詞法分析_第5頁
資源描述:

《編譯原理實用教程 楊德芳 第3章 詞法分析》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫

1、第三章詞法分析本章學習目標詞法分析程序的主要任務是對源程序進行掃描,從中識別出單詞。它是編譯程序的第一步,也是編譯過程中不可缺少的部分。本章的主要內容是:正則表達式和有限自動機文法、正規(guī)表達式、正規(guī)集及自動機的相互轉換詞法分析器的C語言實現(xiàn)詞法分析器的自動生成3.1詞法分析器與單詞符號3.1.1詞法分析詞法分析是編譯過程的第一個階段。這個階段的任務是從左到右一個字符一個字符地讀入源程序,對構成源程序的字符流進行掃描和分解,從而識別出一個一個的單詞。編譯程序中完成詞法分析任務的程序段,稱為詞法分析程序。詞法

2、分析程序對源程序進行掃描,從中識別出一個個的單詞符號,因此,詞法分析程序又稱為詞法分析器,又稱掃描器。詞法分析器作為編譯程序的一部分,它與語法分析程序之間接口方式有兩種。一種方式是詞法分析程序獨立工作,把字符流的源程序變?yōu)閱卧~序列,輸出在一個中間文件上,這個文件稱為語法分析程序的輸入而繼續(xù)編譯,如圖3-1所示就是將詞法分析單獨作為一遍的接口方式。源程序詞法分析程序單詞序列圖3-1詞法分析單獨作為一遍取符號源程序詞法分析程序語法分析程序圖3-2詞法分析作為語法分析子程序送符號另一種方法,也是常用的一種方法就

3、是把詞法分析程序設計成一個子程序,每當語法分析程序需要一個單詞時,就調用該程序。詞法分析程序每得到一次調用,就從源程序文件中讀入一個字符,直到識別出一個單詞為止。這種方法省去了中間文件。源程序詞法分析程序單詞序列圖3-1詞法分析單獨作為一遍取符號源程序詞法分析程序語法分析程序圖3-2詞法分析作為語法分析子程序送符號3.1.2單詞符號單詞符號是程序設計語言的基本語法單位和最小語義單位。單詞符號一般分為五類。(1)關鍵字(又稱保留字或基本字)如if,then,else,while,do,begin和end。(

4、2)標識符,用于表示變量名、過程名等。(3)常數(shù),如123,實數(shù)型45.67等。(4)運算符,如+,-,*,/,<,=等。(5)界限符,如逗號、分號和括號等。程序設計語言中的關鍵字、運算符和界限符的數(shù)量都是確定的。而常數(shù)和標識符的數(shù)量是不確定的。1.單詞類別的表示單詞類別表示單詞的種類,它是語法分析所需要的信息。一個語言的單詞符號如何劃分種類、分為幾種,如何編碼都屬于技術性的問題,主要取決于處理上的方便。單詞符號有5個類別:關鍵字、標識符、常數(shù)、運算符和界限符,可以用1、2、3、4、5來表示。也可以用一字

5、符一類別碼的編碼形式,如保留字可以采用一字一類別。分界符也可以采用一字一類別。對于一字一類別的單詞,單詞的類型就是單詞的自身值,詞法分析程序就不必輸出其值了。常數(shù)的自身值是其自身的二進制。2.單詞的自身值單詞自身的值是編譯程序中其他階段所需要的信息。對于單詞符號來說,如果一個種別只含有一個單詞符號,那么這個單詞符號,其種別就安全地代表了它的自身值。如果一個種別含有多個單詞符號,那么對于它的每個單詞符號,除了給出種別編碼之外,還應該給出單詞符號自身的值,以便把同一種單詞區(qū)別開來。注意,標識符自身的值就是標識

6、符自身的字符串。而常數(shù)自身的值是常數(shù)本身的二進制數(shù)值。3.1.3一個簡單的詞法分析程序的設計1.預處理詞法分析器在識別單詞符號之前,需要對輸入區(qū)的源程序進行預處理。預處理包括刪除無用的空格、跳格、回車和換行等編輯性字符以及注釋部分。每一次對一串定長的輸入字符進行預處理,并裝進一個指定的緩沖區(qū)。2.狀態(tài)轉換圖利用狀態(tài)轉換圖可以設計詞法分析器。狀態(tài)轉換圖是一個有向圖,僅包含有限個結點,每個結點表示一個狀態(tài),其中有一個初始結點,至少有一個終態(tài)結點,結點間弧的標記是輸入字符或字符類。例3.2有狀態(tài)轉換圖3-4所示

7、,其中,0結點用‘S’標記,表示初態(tài)結點;2結點用‘E’標記,表示終態(tài)結點。從初態(tài)結點出發(fā)到某一終態(tài)結點所經過的路徑,稱為能為該狀態(tài)轉換圖所接受的符號串。012SE字母其它字符圖3-4掃描緩沖區(qū)字母或數(shù)字012SE字母非字母、數(shù)字35678146174E數(shù)字數(shù)字+——*—=—();/其他EEEEEEE11109非數(shù)字126136166156EEEE非**=—非=圖3-6識別各類單詞符號的狀態(tài)集合字母或數(shù)字—+++++++++++E+詞法分析程序的構造如下:初始化:arr:=′′;getch;getnbc;

8、casechof′a′‥′z′:beginwhileletterordigitdobeginconcat;getchend;retract;c:=reserve;ifc=0thenreturn(1,arr);elsereturn(c,);end;′0′‥′9′:beginwhiledigitdobeginconcat;getch;end;retract;return(2,dtb);end;′+′:return(31,);′-′

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。