詞法分析
功能:
根據詞法規則識別及組合單詞,進行詞法檢查
對數字常數完成 數字字符串 -->二進制數值 轉換
刪去空格字符和註釋
單詞種類: 保留字, 標識符, 常數, 分界符
單詞內部形式: 單詞類別 + 單詞值
單詞類別: 按單詞種類分類: 標識符, 無符號常數(整), 無符號浮點數, 布爾常數, 字符串常數, 保留字, 分界符.
保留字和分界符采用一符一類
常用狀態圖來作詞法分析
先將正則表達式轉化爲非確定自動機(NFA: Non-deterministic Finite Automata)(存在某一個狀態,對於同一個輸入有不同的結果)
再將非確定自動機轉化爲確定自動機(DFA: Deterministic Finite Automata)
將確定自動機簡化(直到不存在等價狀態): 利用一致性狀和蔓延性狀態不斷"分區",最終還在一個分區裏的狀態即可以簡化
畫圖以及程序
狀態圖中: 雙圈表示"終止符",圈內一般是非終止符,起始圈是新加進去的.
正則文法 和 正則表達式 的相互轉化:
- .
- .
- .
對於二義性問題:
- 最長匹配原則, 有更長則識別更長的
- 優先匹配原則, 規則序列越前優先級越高, 寫規則序列時要注意
NFA的確定化:
集合的閉包: (是自動機,是的狀態集一個子集)
若,則.
若,則從出發經過任意條弧而能到達的任何狀態都屬於.
是集合的閉包:
是從出發,沿弧到達的狀態所組成的集合.
.