【编译原理】词法分析(正规式与自动机)
文章目錄
- 一·單詞的形式化描述工具
- 二·有窮自動機(有限自動機)
- 三· 正規式和有窮自動機的等價性
- 四· 正規文法和有窮自動機的等價性
?
?
?
?
一·單詞的形式化描述工具
? 正規文法
即3型文法,是一個四元式:G = (VN, VT, S, P)
?
? 正規式
也稱為正則表達式,形式諸如:(a|b)*(aa|bb)(a|b)*
?
? 正規文法與正規式的等價性
一個正規語言可以由正規文法定義,也可以由正規式定義——它們當然就可能是等價的
可以使用的轉化規則(理解🌟)
| A→xB B→y | A = xy |
| A→xA|y | A = x*y |
| A→x A→y | A = x|y |
?
?
?
二·有窮自動機(有限自動機)
?
? 確定的有窮自動機(DFA)
是一個五元組 M = (K, ∑, f, S, Z)
其中:K是狀態集,∑是輸入符號集,f是轉化映像,S是唯一初態,Z是終態集
給定當前狀態和輸入符號,f就可以唯一確定下一個狀態
?
? 不確定的有窮自動機(NFA)
是一個五元組 M = (K, ∑, f, S, Z)
其中:K是狀態集,∑是輸入符號集,f是轉化映像,S是初態集,Z是終態集
不確定是說下一個狀態可以有多個
?
?
? NFA轉化為等價的DFA——NFA的確定化(🌟)
DFA是NFA的一種特例。和剛剛說的“正規文法和正規式的等價”一樣,如果兩個自動機所定義的語言相同,則它們等價
算法:子集法
通俗的說:既然“不確定”的原因是因為同時有多個狀態,那么我們就把這些狀態的集合看作一種狀態,然后再BFS。最終這些子集的轉化關系就稱為了一個DFA。
典型例題:《編譯原理(清華大學第三版)》P64 3
?
?
? 確定的有窮狀態機的化簡——DFA的最小化(🌟)
DFA的最小化,其實就是消除無用狀態和合并等價狀態。其實關鍵在于合并等價狀態。那么,怎樣的兩個狀態是等價的呢?
狀態的等價需要滿足兩個條件:
算法:分割法
通俗的說:先根據是否為終態分為兩組,然后對同一組中的狀態,用所有輸入符號去試著轉化,如果轉化不到一組,則再分。不斷進行上述操作。
典型例題:《編譯原理(清華大學第三版)》P65 8
?
?
三· 正規式和有窮自動機的等價性
?
?
?
四· 正規文法和有窮自動機的等價性
?
?
?
?
?
?
?
?
?
?
?
?
ENDENDEND
總結
以上是生活随笔為你收集整理的【编译原理】词法分析(正规式与自动机)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RISC-V指令系统
- 下一篇: C语言 第六章 指针 重点 典型题