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....