編譯原理之文法

2021-08-28 05:03:02 字數 2559 閱讀 2580

文法:以有窮的集合描述無窮的計畫的工具。

字母表:元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。

符號串:由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串ε,長度為0。

符號串的運算:

連線-符號串x = ab,y=cd, xy = abcd

方冪-z=xn,當n = 0, z = ε,當 n = 2, z = xx

集合的閉包-∑* = ∑0 ∪∑1 ∪∑2 ∪…∪∑n

∑+ 為正閉包 = ∑1 ∪∑2 ∪…∪∑n

規則|產生式|生成式,是形如α->β的有序對,讀作α定義為β,相同左部的產生式可縮寫a->a|b|c|d。

文法定義的形式-四元組(vn,vt,p,s):vn為非終結符集,vt 為終結符集,p為規則集,s為識別符|開始符,至少要在乙個規則中作為左部出現,vn ∩ vt = ∅。

直接推導=>, 長度為n(n>=1)的推導+=>,長度為n(n>=0)的推導=>【+在=上面】,v=0s1,w=0011,直接推導:0s1 =>0011,使用規則:s->01,γ=0,δ=1;可以說w是v的直接推導,或者w直接歸約於v,由識別符號s推導出來的符號串稱為文法的句型,如果該符號串僅由終結符號組成,稱為句子。

g[s]稱為文法,l[g]為文法的集合表示形式

若l[g1] = l[g2],則稱文法g1和g2是等價的。

g[s]:s->0s1,s->01

g[a]:a->0r,a->01,r->a1

l[s]=l[a]=

根據對文法施加不同的限制,分成4種型別。

0型或短語文法:文法的每個產生式α->β都是α、β屬於字符集的閉包區間內且α至少包含有乙個非終結符;左邊有非終結符,右邊有終結符;0型文法的能力相當於圖靈機(turing)。或者說,任何0型語言都是遞迴可列舉的;反之,遞迴可列舉集必定是乙個0型語言。總之一般文法都是0型文法。

1型文法:又稱為上下文有關文法,

2型文法:又稱為上下文無關文法,

3型文法:又稱為正規文法(正規文法又包括左線性文法和右線性文法)

正規文法——左線性文法:

(1):必須是三型文法

(2):式子右邊的產生是(非終結符+終結符)的格式

正規文法——右線型文法:

(1):必須是三型文法

(2):式子右邊的產生式是(終結符+非終結符)的格式

描述一種上下文無關的推導工具:句型的推導和語法樹(推導樹)

給定文法g(vn,vt,p ,s),對於g的任何句型都能構造與之關聯的語法樹。這棵樹滿足下面四個條件:

① 每個結點都有乙個標記,此標記是v的 乙個符號。(說的是節點一定是終結符或非終結符)

② 根的標記是s。(說的是樹根的標記是開始符號s)

③ 若一結點標記a,至少有乙個從它出發的分枝,則a肯定在vn中(說的是如果乙個節點有分支的話,這個節點一定是非終結符)

④ 如果標記為a,有n個從它出發的分枝,並且這些分枝的結點的標記(從左到右)為b1, b2,…,bn,那麼a→b1b2,…,bn一定是p中的乙個產生式。(說的是從a出發的葉子節點從左到右排列,一定是p中規則的乙個產生式)

推導的每一步都是對最左非終結符進行替換,稱為最左推導;最右推導也稱規範推導

句型的分析:自上而下的分析和自下而上的分析。

乙個句型的語法樹中任一子樹葉結點所組成的符號串都是該句型的短語;相對於非終結符的短語

如果子樹中不再包含其他的子樹,即a只能推導出b,而b不能再推出其他的式子,則b為此句型的直接短語;相對於規則的直接短語

直接短語中的最左直接短語為該句型的控制代碼[最右推導,右句型];某句型的控制代碼

案例:s -> a|b|(t)

t -> tds|s

證明(sd(t)db)是s的乙個句型,並求出短語,直接短語,控制代碼

此文法的抽象語法樹為:

由此可得s=(sd(t)db)為此文法的乙個句型:

• 短語:s,(t),b,sd(t),sd(t)db,(sd(t)db)

• 直接短語:s,(t),b

• 控制代碼:s

文法的實用限制:

有害規則:形如u->u的規則,沒用,容易引起二義性;

多餘規則:非終結符不在任意規則的右部出現,不可到達;非終結符不能推導出終結符,不可終止;

編譯原理之文法一

一 先簡單介紹一下形式語言基本知識 1 字母表 符號的 非空有限 集合稱為字母表 2 符號串 由某一字母表中的符號組成的 有限符號串行 稱為該字母表的符號串 二 非形式化的語言 語言l和 m的合併 lum 語言l和 m的連線 lm 語言l的kleene 閉包,l 語言l 的正閉包,l 解釋 前面 都...

編譯原理之文法推導

已知文法g 表示式 項 表示式 項 項 因子 項 因子 因子 表示式 i 試給出下列表示式的推導。1 i 2 i 3 i i 4 i i i 5 i i i 6 i i i 7 i i i 8 i i 9 i i i i 10 i i i 3.演算法思想 描述的是大概的過程,具體實現的細節見 注釋。...

編譯原理文法

文法是用於描述語言的語法結構的形式規則。任何一種語言都有它自己的文法,不管它是機器語言還是自然語言。就像自然語言裡有主謂賓這樣的文法一樣,機器語言也有描述它語言構成的特定文法終結符和 非終結符 在電腦科學和語言學的領域是用來指定推導規則的元素。在某個 形式語法 之中,終結符和非終結符是兩個不交的集合...