【編譯原理系列】文法的定義


當我們要描述一種語言時,需要給出這種語言的所有句子,當句子的數目是有限可數時,就要都列出來;當句子是一個無窮集,也就是無限不可數時,就要給出可以表示它們的結構的描述方法或者說,句子的組成規則。這種規則就是文法。

從形式上用於描述和規定結構的稱為文法(或者說語法)

下面是文法的定義:

文法G定義為一個四元組(VN,VT,P,S),其中,VN為非終結符集合,VT終結符集合;P是產生式結合;S稱為識別符或開始符號,也是一個非終結符,至少要在一條產生式的左邊出現。

出現了幾個名詞,終結符、非終結符、產生式、識別符/開始符號等。下面具體聊聊這些名詞和文法的定義。

VN是非終結符集合,非終結符N指的是可以被拆分的字符或串,它采取遞歸定義:一個非終結符是由終結符和至少一個非終結符組成的串,相對應的,終結符就是不可拆分的,語言中要用到的字符。所以VN中所存儲的是所有的非終結符,VT中存儲的是所有的終結符。

簡單點講:終結符就是推導到終結符時,不可再推導下去;而非終結符可以繼續推導下去。

集合P存儲的是所有的產生式。那什么是產生式呢?產生式就是推導規則。比方說 a→b 就是一條規則,即一條產生式,可以通過 a 推導出 b。

對照前面說的非終結符和終結符,就應該可以理解,在產生式左邊的只能是非終結符,因為終結符不能再推導下去。而右邊可以有終結符和非終結符。用數學的集合知識表示就是:

產生式的形式是α → β,α稱為產生式左部,β稱為產生式右部,α屬於VN,β∈(VN∪VT)*,α∉ε

最后是S,S是開始符號,也就是最開始的那條產生式左邊的非終結符,一切的推導從它開始。比方說

a → b
b → c|d
c → e
1
2
3
其中,a → b就是最開始的產生式,a就是最開始的非終結符,就是S。S是非終結符,所以S∈VN。

以上就是編譯原理中文法的定義以及相對應的沒那么學術化的解釋。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM