編譯原理第三章 詞法分析

2021-08-18 05:50:45 字數 2549 閱讀 4695

一、詞法分析器

1、功能:輸入源程式,輸出單詞符號

2、單詞符號常常用二元式來表示:單詞種別,單詞符號的屬性

(1)單詞種別:通常用整數編碼來表示

一字一種:關鍵字,運算子,界符

按型別:常數                        

統歸一種:識別符號

(2)單詞符號的屬性值:反映單詞特性或特徵的值

3、詞法分析器運作過程(詞法分析器設計):

輸入源程式文字->輸入串放入輸入緩衝區->預處理子程式預處理輸入串->預處理好的子程式放到掃瞄緩衝區->

在緩衝區進行單詞符號的識別

4、單詞符號的識別方法:

(1)超前搜尋:向前多讀幾個符號,一旦確定識別到的單詞之後,需要進行掃瞄指標的回退

(2)直接分析法:根據讀來的第乙個字元的種類分別轉到各種子程式處理

(3)狀態轉換圖:一張有限方向圖,能夠識別(接受)一定的符號串

結點:代表狀態,用圓圈表示

箭弧:狀態之間用箭弧連線

箭弧上的標記:代表在射出節點下可能出現的輸入字元或字元類

乙個狀態轉換圖包含有限個狀態,其中有乙個初態,至少要有乙個終態(用雙圓圈表示)

二、正規表示式與有限自動機

1、正規式:有限次使用下述三個步驟而得到的表示式:

(1)ε和φ是∑上的正規式,它們所表示的正規集分別為和φ

(2)任何a∈∑,是∑上的乙個正規式,他所表示的正規集為

(3)假定u和v都是∑上的正規式,他們所表示的正規集分別記為l(u)和l(v),那麼:

a.(u|v)是正規式,所表示的正規集為l(u)∪l(v)

b.(uv)是正規式,所表示的正規集為l(u) · l(v)(連線積)

c.(u)*是正規式,所表示的正規集為 (l(u))*(閉包)

2、正規集:僅由這些正規式所表示的字集

3、非確定的有限自動機nfa(non-deterministic finite automata)

定義:乙個非確定有限自動機(nfa)m是乙個五元式:m = (s, ∑, f, s0, f),其中:

4、確定的有限自動機dfa(deterministic finite automata)

定義:乙個確定有限自動機(dfa)m是乙個五元式:m = (s, ∑, f, s0, f),其中:

5、表示方法:

(1)狀態轉換矩陣(實際是乙個表):行表示狀態,列表示輸入字元,矩陣元素f(s,a)的值

(2)狀態轉換圖

6、dfa是nfa的特例,對於每個nfa m存在乙個dfa m』使得l(m) = l(m』),即m和m』等價

nfa確定化為dfa:子集法

(1)假定i是m』的狀態集的子集,定義i的ε閉包ε_closure(i)為:

a.若q∈i,則q∈ε_closure(i)

b.若q∈i,那麼從q出發經任意條ε弧而能到達的任何狀態q』都屬於ε_closure(i)

(2)假定i是m』的狀態集的子集,a∈∑,定義ia =ε_closure(j),

j是所有可從i中的某一狀態結點出發經過一條a弧而到達的狀態結點的全體

求ia:先根據集合i,求集合j(一條a弧);然後求j的ε閉包ε_closure(j)

三、正規式與有限自動機的等價性

1、對於任何∑上的nfa m都可構造乙個∑上的正規式r,使得l(r)=l(m)

多變少,合併,替換規則如下:

2、對於∑上的正規式r,存在乙個∑上的dfa m,使得l(m) = l(r)

少變多,**,步驟如下:

(1)根據r構造乙個nfa m',使得l(m』) = l(v)

(2)將m'確定化,變為dfa m(子集法)

四、確定有限自動機的化簡

即尋找乙個狀態數比m少的dfa m』,使得l(m』) = l(m)

1、化簡演算法思想:

將m的狀態集分割成一些不相交的子集,使得:

最後在每個子集中選乙個代表,同時消去其它等價狀態

2、化簡步驟:    

(1)檢查狀態轉換函式是否為全函式。

全函式是指每個狀態對每個輸入符號都有轉換

(2)用化簡演算法進行化簡

(3)去掉死狀態

本章的重點知識是正規式與有限自動機的相互轉化。確定有限自動機dfa是非確定有限自動機nfa的特例,當我們知道乙個正規式可以將其轉化為有限自動機,反之當知道乙個有限自動機也可以寫出它的正規式,這兩者是乙個等價的關係。有限自動機到正規式是乙個多變少的過程,要按替換規則進行合併;正規式到有限自動機是乙個少變多的過程,要進行**,先構造nfa,然後把nfa按子集法確定化為dfa。通過

這一章的學習我

對編譯原理的概念又有了乙個更深一步的認識,這些概念的是十分抽象的,看知識點和課本例題時感覺自己掌握了,但是自己做起課後題來還是比較吃力的。

編譯原理 第三章 詞法分析

一,詞法分析器的作用 詞法分析是編譯的第一階段。詞法分析器主要任務是讀入源程式的輸入字元 將他們組成詞素,生成並輸出乙個詞法單元序列,每個詞法單元對應於乙個詞素。分析部分 詞法分析 語法分析 簡化編譯器設計 提高編譯器效率 增強編譯器可移植性 1 詞法單元 詞法單元名和可選的屬性值組成。關鍵字 操作...

編譯原理第三章詞法分析總結

這一章我們將從詞法分析器 正規表示式與有限自動機以及語法分析器的自動產生三方面了解詞法分析,但我理解的這張的重點是正規表示式與有限自動機。首先我們來了解一下詞法分析器是什麼 它是一組把輸入的源程式轉換成單詞符號的程式,而語法分析器的構造方法包括兩方面,一方面是根據詞法直接程式設計序即有限自動機的手工...

編譯原理 第三章詞法分析總結

詞法分析 在詞法分析這一章主要通過學習了詞法分析 正規表示式和有限自動機來了解詞法分析器的構造。詞法分析器是執行詞法分析的程式。將源程式輸入詞法分析器後,詞法分析器從左至右逐個字元的對源程式進行掃瞄,輸出相應的單詞符號,把字串形式的源程式改造成為由單詞符號串組成的程式。輸出的單詞符號一般分為 基本字...