編譯原理筆記4 文法與語言

2021-07-31 15:24:02 字數 2588 閱讀 6214

1.

字母表與符號串

2.連線(乘積)運算:串集間的乘積;串集的方冪:串集的自身乘積

例如:a=;b=

則ab=

1)a^0=

2)字母表a的

n次方冪是字母表

a上所有長度為

n的串集。

3.字母表的閉包與正閉包

1)字母表a

的閉包(a*

) 2)

字母表a

的正閉包(a*

),除了空串的所有次方冪和

4.文法:文法是描述語言的語法結構的形式規則

1)非終結符:出現在規則左部、用<>

括起來、表示一定語法規則的詞,用

vn表示

2)終結符:語言中不可再分割的字串。終結符是組成句子的基本單位。用vt表示

3)開始符號:表示所定義的語法範疇的非終結符,又叫識別符號

4)產生式:形式a->

5)推導:從開始符號開始,通過使用產生式的右部取代左部,最終能產生語言的乙個句子的過程。最左推導和最右推導成為規範推導。

6)規約:推導的逆過程,從源語言的句子開始,通過規則的左部取代右部,最終達到識別符號的過程。——最左(右)規約是最右(左)推導的逆過程。

7)句型、句子和語言:——句型:從文法的識別符號,每步推導(包括0

步推導)得到的字串阿爾法。——句子:是僅含終結符的句型。——語言:語言是由

s開始通過1步或

1步以上推導所得句子的集合。記為:

l(g)

8)文法規則遞迴定義。

9)文法規則的擴充表示——擴充的bnf

表示。——()提因子。——

{}重複次數的指定。——

任選符號。

10)元語言符號:用來說明文法符號之間關係的符號。如->、|

。5.文法與語言的形式定義。

1)chomsky對文法的定義:從形式上說文法

g是乙個四元式(vn

,vt,p,

s)2)根據對文法產生式的限制分為四類。0.1.2.3

型文法。

3)0型文法,產生式的左邊至少有乙個符號,且至少有乙個非終結符。——識別

0型語言的自動機成為圖靈機(

tm)。——

0型文法是對產生式限制最少的文法。——任何

0型都是遞迴可列舉的。

4)1型文法——

p中產生式除了開始符號可以產生空串,其他規則右部的長度一定大於等於左部;如果開始符號產生空串,開始符號就不能出現在產生式右部。 

或者,規則中,除可能有開是符號產生空串外,都有

aab->ayb,

其中a,b

屬於閉包,

a屬於非終結符,

y屬於正閉包。

5)—識別的自動機是線性界限自動機 

——其實1

型文法是個長度增加文法,只能不變或增不能減。

6)2型文法:產生式左部一定是非終結符,產生式右邊可以是任意符號,包括空串;非終結符的替換不必靠了上下文。——識別

2型語言的自動機稱為下推自動機(

pda);

2型文法也稱上下文無關文法。

7)3型文法——規則中產生式的左邊是乙個非終結符,右邊是終結符 

| ab

,或者a->ba

,a->a,a

屬於終結符閉包。——

3型文法的產生式要麼全是右線性產生式,要麼是左線性產生式,不能即是左右時右。——

3型文法也稱為正規文法

rg——識別

3型語言的自動機稱為有限狀態自動機。

8)詞法分析和語法分析中對產生式的限制——不存在p->p

。——非終結一定能夠轉換為終結符。

文法的構造與簡化:

1.由於同一語言可以用不同的文法來描述,顯然應當選擇產生式的個數最少,最符合語言特徵的來描述。

2.在文法中,有些產生式對推導不起作用,要刪除掉。

3.簡化步驟:1

)查詢有無形如p-〉

p的產生式,有就刪除。

2)若某個產生式在推到中永遠不會被用到,就刪掉。

3)不能推導出終結符的,刪除它。

4)整理剩餘產生式就得到了簡化的文法。

4.構造無空串產生式的上下文無關文法。規則中要麼不出現空串產生式,要麼只有開始符號有空串產生式。——如果開始符號能推出空串,則開始符號不出現在任何產生式右部。

語法樹與文法的二義性

1.定義:用來表示語言句子結構的樹

2.作用:使用語法樹可以使語法分析過程直觀、形象,易於判斷文法二義性。

3.語法樹中的概念:1

)子樹:所有的非葉子結點連同它的所有子孫結點構成子樹。

2)修剪子樹:減去子樹樹根的所有孩子。

3)句型:在一棵語法樹生長過程中的任何時刻,所有那些葉子結點排列起來就是乙個句型。

4)短語:如果z=〉

xuy,且u=〉

+ u,則稱

u是句型

w中相對於

u的短語。簡單短語:若短語是某一子樹根經過

1步推導得到的,則稱之為該字數根的簡單短語。

5)控制代碼:句型中的最左簡單短語。注:控制代碼是最左歸約時要尋找的簡單短語。

4.句子二義性:如果文法的乙個句子存在對應的兩顆或兩棵以上的語法樹,則稱句子是二義的。

編譯原理01 文法

文法編譯就是高階語言翻譯成低階語言的過程,翻譯完全部 後執行。解釋也是翻譯的過程,但和編譯不同,解釋時逐句翻譯,一邊解釋一邊執行。程式語言是乙個記號系統。可以看作是一定字符集 字母表 上的字串,包括語法和語義兩部分。文法是描述語言的語法結構的形式規則。young men like pop music...

編譯原理 學習筆記(二) 文法和語言

一 對程式語言的描述從語法 語義和語用三個因素考慮 a 語法 對語言結構的定義 b 語義 語言的含義 c 語用 從使用的角度描述語言。形式語言理論是編譯的理論基礎。二 字母表 元素的非空有窮集合 符號 字元 字母表中的元素 符號串 符號的有窮序列。三 符號串運算 a 符號串的連線 x x x b 集...

編譯原理 學習筆記(二) 文法和語言

一 對程式語言的描述從語法 語義和語用三個因素考慮 a 語法 對語言結構的定義 b 語義 語言的含義 c 語用 從使用的角度描述語言。形式語言理論是編譯的理論基礎。二 字母表 元素的非空有窮集合 符號 字元 字母表中的元素 符號串 符號的有窮序列。三 符號串運算 a 符號串的連線 x x x b 集...