一、規則和產生式定義
規則,也稱為重寫規則、產生式或生成式,是形如α->β或α::=β的(α,β)有序對。其中α稱為規則的左部,β稱為規則的右部,中間符號讀作“定義為”。例如 A->a,讀作A定義為a,也把他說成是一條關於A的規則(產生式)。
二、語言的定義形式
定義一:G定義為(VN,VT,P,S)四元組,其中VN是非終結符(或語法實體,或變量),VT是終結符集;P為規則(α->β)的集合,α€(VNυVT)*,且至少包含一個非終結符,β€(VNυVT)*,,VN,VT,P為非空有窮集。S稱作是識別符或開始符,它是一個非終結符,至少在一條規則中作為左部出現。
VN和VT不含有公共元素,即VN∩VT=Ø(交集為空)
通常用V表示VNυVT,稱為文法G的字母表或字匯表。
終結符和非終結符:非終結符可理解為一個可拆分元素,而終結符是不可拆分的最小元素。
終結符指組成語言的基本符號(如基本字、標識符、常數、算符、界符)
非終結符號(也稱為語法變量)表示一定符號串的集合。
你看到的小寫字母一般是終結符,大寫字母肯定是非終結符
定義二:如果α->β是文法G=(VN,VT,P,S)的規則(或說是P中的一種產生式),γ和δ是V*中的任一符號,若有符號ν和ω滿足,v= γαδ,,ω=γβδ,則說v(α->β)直接產生ω,或說是ω是v的直接推導,或說成ω直接歸約到v,記作v=>ω。
定義三:如果存在直接推導的序列:v=ω0=>ω1=>ω2=>...=>ωn=ω(n>0),則稱v推導產生ω(推導長度為n),或稱ω歸約到v,記作,v加等於ω。
文法 到 字符 稱為 推導
字符 到 文法 稱為 歸約
注意:通過多重推導得到的最終的終結符稱為歸約。
定義四:若有v =>+ ω,或者v = ω,(兩種情況)則記作v=>* ω
例如,存在直接推導序列v=0s1=>00s11=>000s111=>00001111=ω,即0s1=>+00001111,也可記作0s1=>*00001111
定義五:設G[S]是一文法,如果符號串x是從識別符推導出來,即有S=>*x,則稱x是文法G 句型。若x僅有終結符構成,則稱x為文法G的句子。
定義六:文法描述的語言是該文法一切句子的集合。
注意:C語言中的語法分析是利用相應的規則將字符串或字符拼湊成合法的語法句子。