編譯原理之文法一

2021-07-22 13:21:58 字數 1761 閱讀 3158

一、先簡單介紹一下形式語言基本知識

1、字母表:符號的

非空有限

集合稱為字母表 2

、符號串:由某一字母表中的符號組成的

有限符號串行

稱為該字母表的符號串

二、非形式化的語言:

①語言l和

m的合併

,lum=

②語言l和

m的連線

,lm=

③語言l的kleene

閉包,l*

=    

④語言l

正閉包,l

+=解釋:

前面①,②都很好理解,關於③和④,這裡說明一下。

③: 集合 l 的第 i 次冪是集合 l 同自身的 i 次串接的簡寫。即,l

i  可以被理解成由 l 中的符號形成的所有長度為 i 的字串的集合。

l =   l

0 =  l1

=  (由l中符號形成的所有長度為1的字串的集合)l2

= ,(由l中符號形成的所有長度為2的字串的集合)等等

由此,kleene 星號應用於字串集合的例子:l*

=  * =    

=∪∪ ∪∪

∪∪∪∪

∪∪∪∪∪∪∪……}

= 同理,kleene 星號應用於字元集合的例子:

* = ④:

和③類似,只不過④中沒有l

0 =  

更多參見:

三、文法

(grammar)g=

vt是乙個非空

有限的符號集合,它的每個元素稱為

終結符號

(terminal) v

n是乙個非空有限的符號集合,它的每個元素稱為

非終結符號(non-terminal)s∈

vn,稱為文法g的

開始符號p

是乙個非空有限

集合,它的元素稱為

產生式

vt∩v

n=∅產生式,其形式為α→

β,α稱為產生式的左部,

β稱為產生式的右部,符號「→」表示「定義為」,並且α、

β∈(vt

∪vn)

*,α≠

ε,即α、

β是由終結符和非終結符組成的符號串。

開始符s必須至少在某一產生式的左部出現一次。

另外可以對形式α→

β,α→

γ的產生式縮寫為α→

β|γ,以方便書寫。

解釋:(vt

∪vn)

*:也就是vt

∪vn的

kleene閉包

α≠ε:

α不等於空符號串

用小寫字母

代表終結符,如:

abc……

,不能被拆分

用大寫字母

代表非終結符,如:

asbx……

,可以被拆分

編譯原理之文法

文法 以有窮的集合描述無窮的計畫的工具。字母表 元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。符號串 由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串 長度為0。符號串的運算 連線 符號串x ab,y cd,xy abcd 方冪 z xn,當n 0,z 當 n ...

編譯原理之文法推導

已知文法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.演算法思想 描述的是大概的過程,具體實現的細節見 注釋。...

編譯原理文法

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