【編譯原理】第3章 詞法分析

3 詞法分析


1、詞法分析程序

詞法分析----逐個讀入源程序字符並按照構詞規則切分成一系列單詞
主要任務:讀源程序,產生單詞符號
其他任務:濾掉空格,跳過註釋、換行符|追蹤換行標誌,複製出錯源程序|宏展開,……

單詞符號一般可分爲下列5種:
①基本字,關鍵字(保留字):BEGIN、 END、 IF、 THEN等
②標識符(用戶自定義標識符 + 關鍵字): 用戶定義的變量名、常數名、過程名
③常數(量):如10、25、100等整數
④運算符: 如+、-、*、/、:=、#、>=、<=等
⑤界符:如‘,’、‘.’ 、‘;’ 、‘(’ 、‘)’等

2、正規表達式與正規集(正規語言)

正規表達式----說明單詞的pattern的一種重要的表示法(記號),是定義正規集的工具

定義(正規式和它所表示的正規集
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

若兩個正規式e1和e2所表示的正規集相同,則說e1和e2等價,寫作e1=e2。

設r,s,t爲正規式,正規式服從的代數規律有:
在這裏插入圖片描述

正規文法和正規式
在這裏插入圖片描述
\sum上的正規式r ,存在一個RG=(VNV_N,VTV_T,P,S): L(G)= L(r)
對G=(VNV_N,VTV_T,P,S),存在一個=VT\sum=V_T上的正規式r : L(r)= L(G)

正規式與正規文法間的轉換
在這裏插入圖片描述
在這裏插入圖片描述

3、有窮自動機

確定有窮自動機(DFA) 不確定有窮自動機(NFA)

DFA\displaystyle\color{red}DFA
在這裏插入圖片描述
DFA與文法對應關係:
狀態集K —VNV_N    字母表—VTV_T    轉換函數f— P    初態S—S

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
NFA\displaystyle\color{red}NFA
在這裏插入圖片描述
與DFA區別:①S爲初態集 ②f函數值不唯一,即後繼狀態爲集合
在這裏插入圖片描述
在這裏插入圖片描述

NFA的確定化    子集法
DFA是NFA的特例.對每個NFA  N一定存在一個DFA M ,使得 L(M)=L(N)。
對每個NFA N存在着與之等價的DFA M ,與某一NFA等價的DFA不唯一。
對NFA確定化要解決的兩個問題→確定初態唯一性、確定後繼狀態唯一性

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
DFA的最小化    分割法
最小化操作:去除多餘狀態、合併等價狀態
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4、有窮自動機和正規表達式

有窮自動機和正規表達式的等價性:
1)對於∑上的一個NFA M,可以構造一個∑上的正規式R,使得L( R)=L(M)。
2)對於∑上的一個正規式R,可以構造一個∑上的NFA M,似的L(M)=L( R)。

有窮自動機與正規表達式間的相互轉換
在這裏插入圖片描述
在這裏插入圖片描述

5、有窮自動機和正規文法

有窮自動機和正規文法的等價性:
1)對於一個NFA M,都存在 一個正規文法G,使得L(G)=L(M).
2)對於一個正規文法G, 都存在一個NFA M, ,使得L(M)=L(G).

NFA與文法G[S]對應關係:
狀態集K —VNV_N 字母表—VTV_T 轉換函數f— P(產生式) 初態S—S(開始符號) 終態Z — 新增終態Z

有窮自動機與正規文法間的相互轉換
在這裏插入圖片描述
在這裏插入圖片描述

bingo~   ✨ 成功的唯一祕訣———堅持到最後一分鐘

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章