編譯原理與編譯構造 由NFA變為DFA

2021-08-09 05:57:36 字數 2231 閱讀 3544

正規文法

形如 a→

aba→

a 缺點是不直觀

正規表示式

採用模板,好處是直觀

1) a∈r

e ,

ϵ 屬於特殊字元,ϵ∈

re

2)ifα

,βis

re,α

⋅β,α

|β,α

∗are

res

例:ω∈

(a,b

)∗,且倒數第3個是

a :(a

|b)∗

a(a|

b)(a

|b)

詞法分析:re

⇒fa⇒

詞法分析程式

fa: 狀態數目有限,是乙個有始有終的過程模型

fa的組成:s,

σ,s0

,f,m

ove

s表示狀態集,

σ表示字母表,s0

表示開始狀態,

f 表示結束狀態集/終止狀態集,mo

ve表示對映

其中,s0∈

s,f⊆

s 若

move

是n:1

/1:1

,則是乙個fu

ncti

on,則fa為dfa,否則fa為nfanc

ases

:存在ϵ−

邊有多個後繼狀態

1.第3張圖是乙個ϵ−

閉包2.

此時是乙個子集構造

=ϵ−c

()

i′0=

i′′0=i′

0⋃=

i′′′0=i

′′0⋃=

i′′′′0=

i′′′0⋃

∅=i′′′0

此時迭代完成,知i0

= 我們規定初始狀態是i0

,然後這個狀態是要算出來的,因為要算閉包

→i1 見上圖

由於 這個狀態不存在,我們命名為i1

最終所有的狀態都應該由上面

ϵ 閉包或子集構造得到。

結論1: 最多情況下由2n

−1種狀態,其中

n 是一開始圖中圈出來的x,

1,2,

3,4,

5,6,

y的個數 。減去的乙個是空集。

結論2:核相同,則ϵ−

c 相同if

⋂ii≠

∅ , 則ii

是乙個終態 。在此題中,f=

總的思想是,減少狀態數。使用的方法是,等價類劃分,使用聚類的思想。

division:

clustering(聚類)——自下而上

classifying(分類)——自上而下

在這裡我們需要將ii

以終態、非終態劃分st

atee

quiv

alen

ce:發出的邊數相同

對應的標記相同(就是箭頭上面的標記)

對應的後繼狀態等價

易見這是乙個遞迴定義。

若兩個狀態相同,則兩個狀態等價(強等價)。

若後繼狀態相同,則兩個狀態等價(強等價)。

若後繼狀態屬於同乙個已存在的葉節點,則弱等價。

由一開始的初始態和終態,得出上圖。

0→ai

1,i1

→ai3

,i2→

ai1

此時可見i1

在左邊,i3

在右邊,因此將i0

,i2 劃分到左邊,i1

劃分到右邊,得到上圖。

同理,由b得到上圖。

在每個葉節點中選乙個節點,在最右邊的葉節點中選i3

此時整個圖已經變成了這樣。這也叫做th

emin

imiz

eddf

a r

e⇒nf

a⇒df

a⇒df

ao⇒p

rogr

am

dfao

表示優化過的df

a 注意,需要用到lo

okba

ck來檢查是否之前的後繼狀態在同一節點而之後的後繼狀態不在同一節點的情況。

如下例子:

過程略一下。

一些re轉nfa的規則(人喜歡的方法,也是考試時用的方法):

方法2是龍書上的演算法,筆記上有,由於考試不考,實驗要用,因此現在先不管。以後再說。

乙個詞法分析程式分析所有單詞。

編譯原理 NFA構造DFA

本題摘自北郵的編譯原理與技術。首先,根據此圖構造狀態轉換表 表中第一列第一行表示從第乙個符號b通過任意個空轉換能到達的節點,ia表示由此行的狀態陣列 可以看作0狀態 經過乙個a可以到達的節點,同理,ib表示由狀態陣列經過乙個b可以到達的節點。當然,有些人可能覺得和看作兩個狀態不合理,他們之間不是有交...

編譯原理與編譯構造 由語言構造文法2

基本思想 產生的兩邊應該具有相同的特性 例1 l 解 s aa b b 這一步是說,句子可以以a b 開頭,之後加乙個a b 數量不等的式子 其中,s a b a a 1 b b a b 1 a aaa 這一步比較神,但是我的理解是這樣的,aa 這個表示式,滿足 a b 因此直接是在 a 之前加了乙...

編譯原理NFA確定化

1,實驗名稱 不確定有窮自動機的確定化。2,實驗目的 不確定有窮自動機的確定化。3,實驗原理 1.nfa 乙個不確定的有窮自動機m是乙個五元組,m k,e,f,s,z 其中 a.k是乙個有窮集,它的每個元素稱為乙個狀態 b.e是乙個有窮字母表,它的每個元素稱為乙個輸入符號 c.f是乙個從k e 到k...