编译原理第三章 词法分析与有穷自动机
詞法分析與有窮自動機
- 1、詞法分析程序的功能
- 2、正規集、正規式、正規文法、確定的有窮自動機、不確定的有窮自動機的定義。
- 3、正規文法、有窮自動機、正規式三者之間的互相轉換方法。不確定有窮自動機到確定自動機的轉換及確定有窮自動機的化簡。
1、詞法分析程序的功能
詞法分析程序(詞法分析器、掃描器):執行詞法分析的程序,以字符串形式的源程序作為輸入,以單詞符號或單詞符號表示的源程序作為輸出。
語言的單詞符號一般可分為五種:關鍵字、標識符、常數、運算符和界符。
詞法分析的輸出形式:(單詞種別,單詞自身的值)
2、正規集、正規式、正規文法、確定的有窮自動機、不確定的有窮自動機的定義。
語言單詞符號的兩種定義方式:正規式+正規文法。
正規式:設有字母表∑={a1,a2,a3,a4…an},在該字母表上的正規式D和所表示的正規集L有以下關系。
正規式D包含三種運算符:連接"."、或“|”、閉包“*”,優先級遞增。連接一般忽略不寫。
L(e1 | e2) = L(e1) ∪L(e2).
L(e1e2) = L(e1)L(e2)
L((e1)*) = L( (e1)*)
正規式等價:正規式R1和R2描述的正規集相同。
正規文法和正規式的轉換:
正規文法 => 正規式:
求解規則:
- 若x = ax + b,則 x = x*b;
- 若x = xa + b,則x = bx*。
正規式 => 正規文法:
字母表∑上的正規式R到文法G={VN,VT,P,S}的轉換。
有窮自動機,具有離散輸入輸出的一種抽象數學模型,有“確定的”和“不確定”之分,兩類都能準確識別正規集。
確定有窮自動機(DFA):一個確定有窮自動機M是五元組M={Q,∑,f,S,Z}。
Q是有窮狀態集合,一個元素對應一個狀態
∑是有窮輸入字母表,每個元素是一個輸入字符
f是從Q X ∑到Q的單值映射:f(qi, a) = qi
S是唯一的初態
Z是終態集
一個DFA可由狀態轉化矩陣表示,DFA M存在狀態轉化圖。
對于∑*的任何字符串B,如存在一條從初態到某一終態的道路上的所有弧的標記和為B,則稱B為該DFA M所接受(識別)。特別的,如果初態等于某一終態,則ε可被M識別(接受)。
非確定有窮自動機(NFA):一個非確定有窮自動機M是五元組{Q,∑,f,S,Z}
其中Q,∑,Z意義等同于DFA,狀態轉換函數f不是單值函數,是多值函數。
f(qi,a)={某些狀態集合},a可以為ε,S是非空初態集。
通過數學歸納法,對于每個NFA M存在DFA M’,使L(M)=L(M’)
3、正規文法、有窮自動機、正規式三者之間的互相轉換方法。不確定有窮自動機到確定自動機的轉換及確定有窮自動機的化簡。
由正規式R構造NFA:P40
NFA確定化為DFA:P41
DFA的化簡:P44
有窮自動機到正規式的轉換:P46
右線性文法到有窮自動機的轉換:P47
左線性文法到有窮自動機的轉換:P48
總結
以上是生活随笔為你收集整理的编译原理第三章 词法分析与有穷自动机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL ifnull 函数 、if判
- 下一篇: c语言设计函数删除大写字母,C语言第七周