第三章 - 有穷自动机与词法分析(二)
3.2 有窮自動機
自動機一方面是單詞的描述工具,另一方面可以比較容易構造出識別器程序。
有窮自動機FA分為(非確定有窮自動機NFA)和(確定有窮自動機DFA)
3.2.1 確定有窮自動機
包含以下五部分:
【1】符號集∑(輸入符號集)
【2】狀態集合SS = {S0,S1,S2,S3,...,Sn}
【3】開始狀態S0
【4】終止(接受)狀態集: {S0,S1,S2,S3,...,Sn}
【5】狀態轉換器
?
自動機定義方式主要包括(圖形法)、(轉換表法)和(函數法)
【函數法】下面是一個有窮自動機,接受所有以‘a’開頭并由‘a’、0、1符號組成的符號串(可以沒有0、1部分)
【1】符號集∑={0、1、‘a’}
【2】狀態集合SS = {S0,S1}
【3】開始狀態S0
【4】終止(接受)狀態集: {S1}
【5】狀態轉換函數。。。。。
【表格法】
【圖形法】
被動機接受 及一些特殊例子
?
3.2.2 確定有窮自動機的實現
有窮自動機用于構造詞法分析器Scanner。下面考慮DFA的實現,一種是(面向狀態轉換表)的方法,一種是(面向狀態轉換圖)的方法。
?
3.2.3 非確定有窮自動機
區別主要有三點:
①一個狀態的不同輸出邊可標有相同的符號
②允許有多個開始狀態
③允許有ε邊
?
3.2.4 NFA到DFA的轉換
轉化時把ε邊刪除
【ε-閉包】如圖:
轉化原理:DFA的狀態被表示為NFA的狀態之集? --用SS(狀態集)的形式表示DFA
3.2.5 確定有窮自動機的極小化
【DFA化簡】減少狀態個數到最少
【狀態等價】稱有窮自動機兩個狀態等價,當且僅當他們從他們到接受狀態產生的符號串集相同。
【狀態集劃分】
【初始劃分】
【異類狀態】
【分裂】
3.2.6 自動機狀態轉換表的實現
詞法分析器
詞法分析器是使用頻度很高的程序段,提高其速度是非常重要的事情。
對應的實現方法:全查法(節省空間速度慢),不查法即索引法(占用空間大但是速度慢),半查法(折中)
?
轉載于:https://www.cnblogs.com/yangf428/p/10128302.html
總結
以上是生活随笔為你收集整理的第三章 - 有穷自动机与词法分析(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop集群中master: Per
- 下一篇: c语言|程序设计|指针~字母出现次数(1