程序語言的單詞符號一般分爲以下五種:
關鍵字,標識符,常熟。運算符,界符。
輸入緩衝區、預處理子程序
(2)剔除無用的空白,跳格(TAB),回車,換行等編輯性字符;若空白符號爲單詞符號的界符,就將若干空白和併爲1個
(3)剔除註釋行
(4)源程序的出錯列表打印
(5)將預處理好的子程序放到掃描緩衝區中
掃描緩衝區、掃描器
(1)掃描緩衝區
設兩個半區,可互補使用
設兩個指針
起點指針:指出正在識別單詞起點位置
搜索指針:向前搜索以尋找單詞終點
(2)掃描器:掃描緩衝區,直接進行單詞的識別
狀態轉換圖法
(3)狀態轉換圖的結構
①結點:代表狀態,用圓圈表示
②箭弧:狀態之間用箭弧連接
③箭弧上的標記:代表在射出節點下可能出現的字符或字符串
這節的重點就是正規表達式和有限自動機
首先有正規式和正規集的概念
若兩個正規式U和V所表示的正規集相同,則認爲二者等價,記爲:U = V
確定的有限自動機(DFA)(Deterministic Finite Automata)
非確定的有限自動機(NFA)
(Non-deterministic Finite Automata)
自動機不是指一臺實際的機器,而是一種數學模型(集合,函數,序列等),利用它模擬計算機識別的功能。
所謂確定性是指,f(s, a) = s’ 是單值函數。 對任何狀態s∈S,和輸入符號 a∈∑ ,
f(s, a) 唯一的確定下一個狀態
所謂有限性是指,S是一個有限的狀態集合,
並且∑是一個有限的輸入符號的字母表
用上述5條,來定義一個DFA,來完成識別一個序列是否被機器所接受
正規式與有限自動機的等價性
定理一:對於任何∑上NFA M都可構造一個∑上的正規式V,使得 L(V) = L(M)
圖片展示了部分課後題。
本章主要學習了詞法分析器的要求,詞法分析器的設計,狀態轉換圖的實現,重點是正規式與有限自動機,和他們之間的相互轉化。
而狀態等價的概念是兩個狀態都能夠在讀出某個字而到停在狀態。
DFA就是要將狀態集進行分割,分割一些不相交的子集,並進行消去。本章的內容我感覺比較抽象,不是很好理解。