編譯原理考試教程 3 文法和語言(1)

2021-09-28 19:20:02 字數 1409 閱讀 3620

文法和語法的關係

闡明語法的乙個工具是文法,這是形式語言理論的基本概念之一。

文法的概念

以自然語言為例,人們無法列出所有go的句子,以給出一些規則,用這些規則來說明或定義句子的組成結構。這些規則成為判別句子結構合法與否的依據,換句話說,將這些規則看作一種元語言,用它描述語言。這樣的語言描述叫做文法。

例如漢語可以由主語後接謂語組成,構成謂語的是動詞和直接賓語。所以「我是大學生」符合規則,「我大學生是」不符合規則。

字母表字母表是元素的非空有窮集合,字母表中的元素稱為符合,因此字母表也叫符號表。例如漢語的字母表包括漢字,數字及標點符號等。

符號串由字母表中的符號組成的任何有窮序列稱為符號串,如00111是字母表σ=上的符號串。

符號串x有m個符號,則稱其長度為m,表示為|x|=m。空符號串用ε表示,長度為0。

符號串的運算

1.符號串的頭尾,固有頭,固有尾

如果z=xy是符號串,那麼x是z的頭,y是z的尾,如果x是非空的,那麼y是固有尾;如果y非空,那麼x是固有頭。

2.符號串的連線

x,y是符號串,它們的連線xy是把y的符號寫在x的符號之後得到的符號串。

3.符號串的方冪

x為符號串,把x自身連線n次得到的z,即z=xx…xx,稱為x的方冪,寫作z=x^n。

4.符號串集合

集合 σ的閉包:σ^∗=σ ^0 ∪σ^1∪ σ^2…∪ σ^n…

集合 σ的正閉包:σ^+= σ^1∪ σ^2…∪ σ^n…

規則,也稱重寫規則,產生式或生成式,是形如α→β或α::=β的(α,β)有序對,α稱為規則的左部,β稱為規則的右部。這裡→(::=)讀作「定義為」。

1.文法g定義為四元組(v_n,v_t,p,s)

v_n為非終結符(或語法實體,或變數)集,v_t為終結符集;p為規則α→β的集合,α∈(v_n∪v_t)* 且至少包含乙個非終結符,β ∈(v_n∪v_t)* ;v_n,v_p,p是非空有窮集。s稱作識別符或開始符,它是乙個非終結符,至少要在一條規則中作為左部出現。v表示v_n∪v_p,稱作文法g的字母表或字彙表。

2.設α→β是文法g(v_n,v_t,p,s)的規則,γ,δ是v*中的任意符號,如有符號串v,w滿足v=γαδ,w=γβδ,則說v直接產生w,或w是v的直接推導,或說w直接歸約到v,記作v=>w。

3.如果存在直接推導序列:v=w_0⇒w_1⇒w_2…⇒w_n=w(n>0) 則稱v推導出w,或w歸約到v。記作v⇒+w。(加號在箭頭上)

4.若有v⇒+w,或v=w,則記作v⇒ *w。(*在箭頭上)

5.設g[s]是乙個文法,如果符號串x是從識別符號推到出來的,即有s⇒ *x,則稱x是文法g[s]的句型。若x僅由終結符號組成,即s⇒ *x,s∈v_t *,則稱x是文法g[s]的句子

6.文法g所產生的語言定義為集合。可用l(g)表示該集合。

編譯原理實驗 LL(1)文法

目標任務 實現 ll 1 分析中控制程式 表驅動程式 完成以下描述算術表示式的 ll 1 文法的 ll 1 分析程式。g e e te e ate t ft t mft f e i a m 說明 終結符號 i 為使用者定義的簡單變數,即識別符號的定義。compiler3.cpp 定義控制台應用程式的...

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

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

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

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