【北航編譯原理筆記】2. 詞法分析

詞法分析

功能:
根據詞法規則識別及組合單詞,進行詞法檢查
對數字常數完成 數字字符串 -->二進制數值 轉換
刪去空格字符和註釋

單詞種類: 保留字, 標識符, 常數, 分界符
單詞內部形式: 單詞類別 + 單詞值
單詞類別: 按單詞種類分類: 標識符, 無符號常數(整), 無符號浮點數, 布爾常數, 字符串常數, 保留字, 分界符.
保留字和分界符采用一符一類

常用狀態圖來作詞法分析
先將正則表達式轉化爲非確定自動機(NFA: Non-deterministic Finite Automata)(存在某一個狀態,對於同一個輸入有不同的結果)
再將非確定自動機轉化爲確定自動機(DFA: Deterministic Finite Automata)
將確定自動機簡化(直到不存在等價狀態): 利用一致性狀和蔓延性狀態不斷"分區",最終還在一個分區裏的狀態即可以簡化
畫圖以及程序

狀態圖中: 雙圈表示"終止符",圈內一般是非終止符,起始圈是新加進去的.

正則文法 和 正則表達式 的相互轉化:

  1. AxB,By     AxyA\rightarrow xB, B\rightarrow y \ \ \ \ \ \Longleftrightarrow A \rightarrow xy.
  2. AxA  y             AxyA\rightarrow xA\ |\ y\ \ \ \ \ \ \ \ \ \ \ \ \ \Longleftrightarrow A \rightarrow x^*y.
  3. Ax,Ay        Ax  yA\rightarrow x, A\rightarrow y\ \ \ \ \ \ \ \ \Longleftrightarrow A \rightarrow x\ |\ y.

對於二義性問題:

  1. 最長匹配原則, 有更長則識別更長的
  2. 優先匹配原則, 規則序列越前優先級越高, 寫規則序列時要注意

NFA的確定化:
集合IIε\varepsilon-閉包: (MM是自動機,IIMM的狀態集一個子集)
sIs \in I,則sεClosure(I)s \in \varepsilon-Closure(I).
sIs \in I,則從ss出發經過任意條ε\varepsilon弧而能到達的任何狀態都屬於εClosure(I)\varepsilon-Closure(I).
εCloure(I)\varepsilon-Cloure(I)是集合IIε\varepsilon-閉包:
JJ是從II出發,沿aa弧到達的狀態所組成的集合.
Ia=εClosure(J)I_a = \varepsilon-Closure(J).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章