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

2021-07-11 13:34:51 字數 1915 閱讀 9987

一、對程式語言的描述從語法、語義和語用三個因素考慮:

a)語法:對語言結構的定義;

b)語義:語言的含義;

c)語用:從使用的角度描述語言。

形式語言理論是編譯的理論基礎。

二、字母表:元素的非空有窮集合;

符號/字元:字母表中的元素;

符號串:符號的有窮序列。

三、符號串運算:

a)符號串的連線:εx=xε=x;

b)集合的乘積:ab=;a=a=a;

c)符號串的冪運算:x=abc,x^2=abcabc;

d)集合的冪運算

e)正閉包a+與閉包a*:a*=∪a+

四、形式語言:字母表上按照某種規則構成的所有符號串的集合,其不考慮語義。描述形式語言的方式有兩種:

a)列舉——當語言為有窮集合時;

b)文法——描述了無窮集合的語言。

五、文法:g=(vn,vt,p,s)

a)規則p:也稱為產生式,是乙個符號與乙個符號串的有序對(a,β)

a→βi.一組規則定義了乙個語言的語法結構;

ii.規則中出現的符號分為終結符號和非終結符號

b)vn為非終結符(non-terminate);

c)vt為終結符(terminate);

d)s為非終結符號,稱為文法的開始符號/識別符號,至少要在一條規則的左部出現。

六、推導:推導的依據是規則

a)直接推導:僅使用一次規則;

b)推導:至少使用一次規則;

c)廣義推導:經過0步或若干步的推導。

d)最右推導又稱規範推導,推導出的句型為規範舉行;與之對應的最左規約為規範規約。

七、句型、句子和語言:

a)句型:s=*>x, x∈(vn∪vt)*,其中s=*>x為廣義推導。

b)句子:s=*>x, x∈vt*,其中s=*>x為廣義推導,x必須是終結符的閉包(可為ε)。

c)語言:l(g[s])=,其中s=+>x為推導,至少使用一次規則。

八、遞迴:

a)遞迴規則:在規則的左部和右部具有相同非終結符的規則;

i.規則左遞迴:a->a…;

ii.規則右遞迴:a->…a;

iii.規則遞迴:a->…a…;

b)文法遞迴:對文法中的任一非終結符,若能建立乙個推導過程使得右部再次出現該非終結符,則文法是遞迴的。如:u->vx, v->uy|z,雖然這兩個規則都不是遞迴規則,但組成的文法是遞迴文法u->vx->uyx。所以含有遞迴規則的文法一定是遞迴文法,而遞迴文法不一定含有遞迴規則。

九、短語、直接短語和控制代碼:都是針對某一句型的

a)短語:s=*>αaδ且a=+>β,則稱β是相對於非終結符a的句型αaδ的短語;對應語法樹中的子樹概念。

b)直接短語:其中a=>β為直接推導;對應語法樹中的簡單子樹。每個直接短語都是某規則的右部。

c)控制代碼:是直接短語(即某規則的右部),且具有最左性;對應簡單子樹中最左的一棵。

十、文法的二義性:如果乙個文法存在某個句子對應兩棵不同的語法樹|包含兩個或兩個以上的最右(最左)推導(規約),則該文法是二義性的,可以利用文法之間的等價性來消除二義性。

a)不改變文法中原有的語法規則,進增加一些語法的非形式定義,如優先順序;

b)構造乙個等價的無二義性文法。

十一、文法的分類:

a)0型文法/無限制文法:α->β,其中α∈(vn∪vt)*且至少含有乙個非終結符,β∈(vn∪vt)*。

b)1型文法/上下文有關文法:αaβ->αuβ,其中a∈vn,α,β∈(vn∪vt)*,u∈(vn∪vt)+。

c)2型文法/上下文無關文法:a->β,其中a∈vn,β∈(vn∪vt)*。常用於句法分析。

d)3型文法/正規文法:常用於詞法分析

i.右線性文法:只能對推出式的右邊展開,a->αb|α,a,b∈vn,α∈vt*。

ii.左線性文法:只能對推出式的左邊展開,a->bα|α,a,b∈vn,α∈vt*。

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

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

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

1.字母表與符號串 2.連線 乘積 運算 串集間的乘積 串集的方冪 串集的自身乘積 例如 a b 則ab 1 a 0 2 字母表a的 n次方冪是字母表 a上所有長度為 n的串集。3.字母表的閉包與正閉包 1 字母表a 的閉包 a 2 字母表a 的正閉包 a 除了空串的所有次方冪和 4.文法 文法是描...

編譯原理01 文法

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