一、先簡單介紹一下形式語言基本知識
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.演算法思想 描述的是大概的過程,具體實現的細節見 注釋。...
編譯原理文法
文法是用於描述語言的語法結構的形式規則。任何一種語言都有它自己的文法,不管它是機器語言還是自然語言。就像自然語言裡有主謂賓這樣的文法一樣,機器語言也有描述它語言構成的特定文法終結符和 非終結符 在電腦科學和語言學的領域是用來指定推導規則的元素。在某個 形式語法 之中,終結符和非終結符是兩個不交的集合...