編譯原理(二)

2021-09-27 10:08:07 字數 2884 閱讀 8190

bnf:

<> 表示需要加以說明的一種語法上的概念,通常叫語法成分或非終結符號。

::= 表示該符號的左部由右部定義,讀作「可以是」或「定義為」,也可寫作「→」。

| 表示用其連線的符號之間是或的關係,讀作「或」或「或者」。

ebnf

{} 表示{}內的語法成分可以重複,不加上下界時可重複0到任意次,有上下界時(即{} )表示對重複次數的限制,上標n表示最多可重複的次數,下標m表示至少要重複的次數。

表示方括號內的成分為可選項。例如,ab[c]可表示ab或abc,[x]表示ε或x。

() 表示圓括號內的成分優先。

字母表:元素的非空有窮集合,字母表中的元素稱為符號,故字母表又稱符號集

符號串:由字母表中的符號組成的任何有窮序列稱為符號串

有關符號串的一些運算

(1)符號串的頭、尾、固有頭和固有尾

若z=xy是一符號串,則x是z的頭,y是z的尾;

若x是非空的,則y是z的固有尾;

若y是非空的,則x是z的固有頭。

(2)符號串的省略寫法

如果只對符號串z=xy的頭感興趣,則可寫成z=x…;

如果只為強調x在符號串z中的某處出現,則可寫成z=…x…

(3)符號串的連線

設x和y是符號串,它們的連線xy是把y的符號寫在x的符號之後得到的符號串。、

(4)符號串的方冪

設x是符號串,把x自身連線n次得到的符號串z,即z=xx…x(共n個x),稱為符號串x的方冪,記作z=x

nz=x^n

z=xn

。(5)符號串的集合

若集合a中的一切元素都是某字母表上的符號串,則稱a為該字母表上符號串的集合。

(6)符號串集合的乘積

符號串集合a和b的乘積定義如下:

ab=,即ab是滿足x∊a且y∊b的所有符號串xy所組成的集合。

(7)字母表σ的閉包∑

∗\sum^*

∑∗和正閉包∑

+\sum^+

∑+規則:又稱重寫規則,產生式或生成式,是形如α→β或α::=β的(α,β)有序對,其中α是某字母表v的正閉包v

+v^+

v+中的乙個符號,β是v

∗v^*

v∗中的乙個符號,α稱為規則的左部,β稱為規則的右部

文法的直觀定義:規則的非空有窮集合。

文法的形式定義:

文法g定義為四元組(vn

,vt,

p,s)

(v_n,v_t,p,s)

(vn​,v

t​,p

,s),其中,v

nv_n

vn​為文法的非終結符號集合,v

tv_t

vt​為文法的終結符號集合,p為規則的集合,

s稱為文法的識別符號或開始符號,且s∊v

nv_n

vn​並至少在一條規則的左部出現。

注:(1) vn,

vt,p

v_n,v_t ,p

vn​,vt

​,p三個集合均為非空有窮集;

(2) vn⋂

vt=∅

v_n \bigcap v_t=\varnothing

vn​⋂vt

​=∅,即不含公共元素;

(3)用v=v

n⋃vt

v= v_n \bigcup v_t

v=vn​⋃

vt​表示文法g的字母表或字彙表。

推導:若α→β

α \rightarrow β

α→β是文法g[s]的一條規則,γ和δ是v

∗v^*

v∗中的任意符號,若有符號串v,w滿足

v=γαδ 和w=γβδ,則說v(應用規則α→β)直接產生w,或說w是v的直接推導(或w直接歸約到v),

也叫一步推導。記作v⇒w,其中「⇒」讀作「直接推導」。

如果存在直接推導的序列v=w0⇒w1⇒w2⇒…⇒wn=w,(n≧1),則稱v推導出w(推導長度為n),或稱w歸約到v,記作v⇒+

wv \overset w

v⇒+w,若v⇒+

wv \overset w

v⇒+w

或v=w,則記作v⇒∗

wv \overset w

v⇒∗w

。句型、句子和語言的定義

設g[s]是乙個文法,如果符號串x是從識別符號推導出來的,即有s⇒∗

xs \overset x

s⇒∗x

,則稱x是文法g[s]的句型。

若x僅由終結符號組成,即s⇒∗

x,x∈

vt∗s \overset x,x \in v_t^*

s⇒∗x,x

∈vt∗

​,則稱x為g[s]的句子。

文法g所產生的語言定義為集合 x

,可用l(g)表示該集合。

文法等價的概念: 若l(g1)=l(g2),則稱文法g1和g2是等價的。

文法的分類

短語、直接(簡單)短語和控制代碼

若g[s]是一文法,αβδ是g的乙個句型。如果有s⇒∗

αaδs\overset αaδ

s⇒∗αaδ

且a ⇒∗

βa \overset β

a⇒∗β

則稱β是句型αβδ相對於非終結符a的短語。

特別地,若a⇒β則稱β是句型αβδ相對於規則a→β的直接(簡單)短語。乙個句型的最左直接短語稱為該句型的控制代碼。

短語、直接短語、控制代碼和語法樹中的結點存在一定的對應關係:

語法樹子樹的末端結點符號串就是語法樹所描述句型的短語(相對於子樹的根),簡單子樹(只有父子兩代)的末端結點符號串就是直接短語,

最左簡單子樹的末端結點符號串就是控制代碼。

編譯原理複習 二

正規式等價是指兩個正規式所識別的語言集相等 中間 生成時所依據的是 語義規則 編譯程式絕大多數時間花在管理 上 詞法分析器的輸出結果是單詞的種別編碼和自身值 堆式動態分配申請和釋放儲存空間遵循任意原則 並不是每個文法都能改寫成ll 1 文法 lr分析器由三部分構成 總控程式 分析表 分析棧 自底而上...

編譯原理 詞法分析(二)

乙個有窮自動機可以把乙個描述詞素的模式變成乙個詞法分析器,從本質上來講,有窮自動機是與狀態轉換圖相類似的圖,它有以下特點 乙個不確定的有窮自動機 nondeterministic finite automate,下文簡稱nfa 由以下部分組成 從nfa的組成部分可以看出,它和狀態轉換圖的不同之處在於...

編譯原理(二)詞法分析

1.詞法分析程式的功能 2.實現方案 3.單詞種類及輸出形式 單詞種類 保留字 識別符號 常數 分界符等。輸出形式 二元式,單詞類別,單詞值 按單詞種類分類,也可以將保留字和界符採用一符一類。狀態圖 用於識別 接受 一定的字串。包含乙個初始狀態 初態 至少乙個終止狀態 終態 畫法比較簡單 注意 1....