一、定義
描述語言語法結構的規則
文法g是乙個四元組,可表示為g=(vn,vt,p,s)
ps:
vn:表示非終結符集合,一般使用大寫字母表示
vt:表示終結符集合,一般用小寫字母表示
p:表示產生式的集合
s:表示開始符號
二、推導
用產生式的右側替換產生式的左側,直到產生乙個終結符的序列為止。
例子:文法g[s]:s->0s1
s->01
s=>0s1=>00s11=>000111
在推導的時候有直接推導,這時候會遇見兩種符號「+」和「*」這兩個分表表示什麼呢?
+:表示至少一次
*:表示任意次
推導分為兩類:最左推導和最右推導,其中最右推導為規範推導
例子:文法g[s]:s->asba
a->aa|a
s->a
如皋要得到最後的推導的結果是aabaa,使用最右推導是怎樣的呢?
s=>asba=>asbaa=>asbaa=>asbaa=>aabaa (在=>上面寫r就可以了)
其實就是要在文法最右側開始進行推導,此題中也就是asba的最右側開始,最左推導就是與其相反,在asba的最左側開始
三、歸約
用產生式的左側替換產生式的右側
例子:文法g[s]:s->0s1
s->01
000111=>00s11=>0s1=>s
歸約分為兩種歸約:最左歸約和最右歸約,其中最左歸約為規範歸約
歸約就是推導的反面。
四、分類
類 型別 名
代 表描 述
0型文法
短語文法
圖靈機文法的每乙個產生式α->β,均有α∈(vn∪vt)^+,α至少含有乙個非終結符,且β∈(vn∪vt)^*
1型文法
上下文有關文法
線性界限自動機
在0型的基礎上,文法的每乙個產生式任意α->β,且|α|<=|β|
2型文法
上下文無關文法
下推自動機
在1型的基礎上,文法的每乙個產生式α->β,且α屬於非終結符
3型文法
正規文法
有限自動機
在2型的基礎上,文法的每乙個產生式任意α->β,且有類似於a->ab或者a->a(其中a,b為非終結符,a為終結符)
軟考之文法
要軟考了,文法是乙個考點,有的同學感覺這部分不太好理解,之所以不太好理解,很大的原因是教程裡的敘述 雲裡霧裡,可能是為了表明自己身為 教程 具有不可動搖的地位,所以狐假虎威了一次吧 明天周四活動技術分享,本person自告奮勇地要講關於這方面的東西,所以私下裡做了乙個ppt,感覺ppt不是很差,所以...
軟考路上 編譯原理
編譯原理在軟考中的考點大體上分為以下幾點 文法 語法推倒樹和算符優先 下面就從這三方面來總結一下。基本元素 首先要了解文法中最基本的兩個元素 非終結符和終結符。非終結符可以理解為還可以拆分的元素,一般用大寫字母來表示 終結符當然就可以看做是不可以拆分的元素,終結符不能轉換為其他狀態,也不能用其他的量...
軟考編譯原理總結
軟考中要考的主要的是文法 正規式 有窮自動機 語法推導樹和算符優先。有0型文法 1型文法 2型文法 3型文法。0型文法是限制最少的乙個。有 vn 非終結符集合。vt 終結符集合。p 推導式集合 s 開始符。只要推導式的左側至少含義 1個非終結符就可。1型文法又叫上下文有關文法,他要求在 0型文法的基...