編譯原理 文法

什麼是文法?我們從一個自然語言的例子講起:

                                    

這是一個簡化版本的英文文法。比如一個句子是由名詞短語和動詞短語構成的。名詞短語由形容詞和名詞短語構成。從這個例子中我們能夠看出語法的基本構成。用尖括號括起來的部分是語法成分,而沒有被尖括號括起來的部分是語言的基本符號。英文的基本符號就是單詞了。

那麼編譯語言的文法形式化定義是什麼呢?

                                                                 

文法G = (Vt, Vn, P, S)是由四元組Vt,Vn,P,S所構成的。

其中:

Vt是終結符集合,是文法定義語言的基本符號,就像是英文中的單詞一樣。

Vn是非終結符。用來表示語法成分的符號,類似上面的<名詞短語>,也就是語法變量。

P是產生式。描述了終結符和非終結符組合成串的方法。表示形式是:α -> β, α至少要包含一個非終結符。

S是開始符號。是一個非終結符,是一個文法的最大的語法成分。就如同上面的<句子>

例如:

                                                                 

上面這張圖中描述的是加法乘法表達式的文法。其中我們能夠看出,終結符Vt = {id, + * (,)}這些都是最終的一個一個語法不能被替換的元素;非終結符是E,他表示表達式,它可以被替換成各種數字等等。產生式P包含四種,可以被替換成加法,乘法,括號以及單獨的數字。S開始符號是E,因爲只有這一個非終結符,自然就是最大的了。

一般來說,第一個產生式的左部那個非終結符就是開始符號。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章