編譯原理 文法複習

2021-08-15 03:22:02 字數 2262 閱讀 4272

文法是以有窮的集合刻畫無窮的集合的乙個工具。

語言:是句子組成的集合,是由一組符號所構成的集合

語法:是每個句子構成的規則

語義:是每個句子的含義

閉包的概念:

*代表任意次推導,也叫克林閉包

+代表至少一次推導,成為正閉包。

文法定義為四元組(vn,vt,p,s)

vn:非終結符的集合(一般用大寫字母表示)

vt:終結符的集合(一般用小寫字母表示)

p:產生式的集合

s:為開始符號

推導:用產生式的右側來替換產生式的左側。

規約:用產生式的左側來替換產生式的右側。

句型:從文法的開始符號經過任意次推導可以得到的符號串,稱為乙個句型,乙個文法可以有很多個句型。

文法是用來描述語言的,這個語言是該文法一切句子的集合。

喬姆斯基把文法分成4中型別,0型、1型、2型、3型,他們的差別在於對產生式施加不同的限制。

0型文法(psg): α∈(vn∪vt)* ,且至少含乙個vn

β∈(vn∪vt)*

對產生式沒有任何限制

例如:a0→a0 , a1→b

0型文法說明:

0型文法也稱為短語文法。

乙個非常重要的理論結果是,0型文法的能力相當於圖靈機(turing)。或者說,任何0型語言都是遞迴可列舉的;反之,遞迴可列舉集必定是乙個0型語言。

對0型文法產生式的形式作某些限制,以給出1,2和3型文法的定義。

(注意)

文法g 定義為四元組(vn ,vt ,p,s)

¨vn :非終結符集

¨vt :終結符集

¨p :產生式集合(規則集合)

¨s :開始符號(識別符號)

1型文法(上下文有關文法context-sensitive):

對任一產生式α→β,都有|β|>=|α|, 僅僅 s→ε除外

產生式的形式描述:α1aα2→α1βα2

(其中,α1、α2、β∈(vn∪vt)*,β≠ε,a∈vn)

即:a只有出現在α1α2的上下文中,才允許用β替換。

產生的語言稱「上下文有關語言」但s不能出現在產生式的右部。

例如:0a0→011000 1a1→101011

2型文法(cfg):對任一產生式α→β,都有α∈vn,β∈(vn∪vt)*

產生式的形式描述:a→β(a∈vn)

即β取代a時,與a所處的上下文無關。

產生的語言稱「上下文無關語言」

例如:g[s]:s→01 s→0s1

3型文法(rg):也稱正規文法

每個產生式均為 「a→ab」或「a→a」 —— 右線性

「a→ba」或「a→a」 —— 左線性

其中,a、b∈vn,a∈vt*

產生的語言稱「正規語言」

例如:g[s]: s→0a | 0

a→1b | b

b→1 | 0

4個文法類的定義是逐漸增加限制的,因此每一種正規文法都是上下文無關的,每一種上下文無關文法都是上下文有關的,而每一種上下文有關文法都是0型文法。

子樹:由任意節點和它的分支所構成的部分樹。

簡單子樹:只有父子兩代的子樹。

句型:每棵子樹的葉子組成乙個句型

短語:每棵子樹的葉子組成一短語

簡單短語:每棵簡單子樹的葉子組成乙個簡單短語

控制代碼:最左邊簡單子樹的葉子構成乙個控制代碼。

素短語:不含其它短語的短語

最左素短語:最左邊的素短語

規範:

如果每次推導都是對最左(最右)邊的非終結符進行替換,則成這種推導為最左(最右)推導。最右推導稱為規範推導,由規範推導所得的句型稱為右句型或規範句型。

最左規約為規範規約。

就是識別乙個符號串是否為某文法的句型。分為:自頂向下和自底向上。

自頂向下是從文法的開始符號觸發,反覆使用各種產生式,尋找「匹配」於輸入符號串的推導。

問題:如何選擇那乙個推導式來進行推導

自底向上則是從輸入符號開始,逐步進行「規約」,直至規約到文法的開始符號。

問題:如何識別可規約的串

編譯原理文法

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

編譯原理 文法

編譯原理這種課一聽就知道肯定特別晦澀難懂,上課沒聽懂,今天花了一天時間來學文法,看了一天也是是有些眉目,書上講的並不是特別清楚,倒是從各大部落格中汲取到不少知識。雖然感覺還只是停留在理論階段,但也要記錄一下吧,不然到時候理論都想不起來。文法 g 定義為乙個四元組 vn,vt,p,s 喬姆斯基 cho...

編譯原理 文法分析

編譯原理實驗二 語法分析一 time limit 1000ms,special time limit 2500ms,memory limit 32768kb total submit users 115,accepted users 109 problem 10835 no special judg...