語法樹 句型的分析 空規則

2021-09-27 08:22:34 字數 1884 閱讀 3111

上下文無關文法及其語法樹

語法樹就是上下文無關文法句型推導的直觀工具

給定文法g=(vn,vt,p,s),對於g的任何句型都能構造與之關聯的語法樹。這棵樹滿足下列4個條件:

(1)每個結點都有乙個標記,此標記是v的乙個符號

(2)根的標記是s

(3)若一結點n至少有乙個它自己除外的子孫,並且有標記a,則a肯定是在vn中

(4)若結點n的直接子孫,從左到右的次序是結點n1,n2,…,nk,其標記分別為a1,a2,…,ak,那麼a->a1a2…ak一定是p中的乙個產生式

我自己對語法樹的理解:

根結點是開始字元s,除根以外所有的結點都必須是(vt u vn)集合的元素,如果乙個結點有子孫的話,那麼這個結點一定是非終結符,並且存在規則結點->子孫(從左到右依次)

最左推導、最右推導

如果在推導的任何一步a=>b,其中a、b是句型,都是對a中最左(最右)非終結符進行替換,則稱這種推導為最左(最右)推導。

最右推導常被稱為規範推導。由規範推導所得的句型稱為規範句型。

定義說的很明白,就不多贅述了

句型的分析

自上而下的分析方法

由文法開始符號s到句子x的最左推導中所用規則序列

自下而上的分析方法

由s到句子x的最右推導所用規則逆序列

短語、直接短語、控制代碼

短語一棵子樹的所有葉子自左至右排列起來形成乙個相對於子樹根的短語。

直接短語

僅有父子兩代的一棵子樹,它的所有葉子自左至右排列起來所形成的符號串。

控制代碼乙個句型的分析樹中最左最下那棵只有父子兩代的子樹的所有葉子的自左至右排列。

乙個句型的最左直接短語就是控制代碼。

對實用文法的限制與擴充

簡化文法

(1)文法中不存在p→p的規則(p∈vn),這是乙個有害規則,會產生二義性。

(2)每個非終極符都必須是可達和可終止的。

設s是文法的開始符號,對任意p∈vn,若存在s * αpβ,則稱p是可達的;同時p * γ(γ∈vt*),稱p是可終止的,又稱為活符號。

【eg1】化簡文法:① s→aaa ② a→sb ③ a→bbb ④ b→ac ⑤ b→abb ⑥ c→aca

首先求活符號,就是推導出來的句型全部為終結符。

w1=w2=

w3=我們發現文法和c無關,所以刪掉所有帶c的規則,剩下:

① s→aaa ② a→sb ③ a→bbb ⑤ b→abb

然後再求可達符,就是能夠推導出來的符號

w1=w2=

w3=所以簡化後的文法為: ① s→aaa ② a→sb ③ a→bbb ⑤ b→abb

【eg2】簡化文法:①s→asb ②s→bab ③s→a ④b→d ⑤a→aac ⑥c→asbs ⑦c→aba

還是先求活符號

w1=刪去和a有關的所有規則,剩下:

①s→asb ③s→a ④b→d ⑥c→asbs ⑦c→aba

然後求可達字元

w1=w2=

再刪掉帶b、c的所有規則,剩下:

①s→asb ③s→a

所以簡化後的文法為:s->asb | a

空規則與文法擴充

(1)對給定的帶ε規則的文法,在不生成空串的情況下,可構造出乙個不帶空規則的等價文法。

(2)不帶ε規則的文法不能生成空串。

(3)對任意文法中的任意非終極符a,形如a→ε的產生式不改變文法的語言型別,因此在需要時,可以出現形如a→ε的產生式。

(4)原來的1型~3型文法,若想生成空串,可在文法規則p中增加新的開始符號s′及新的產生式s′→s,s′→ε。而不影響文法的分類。

Markdown 語法的簡要規則

標題是每篇文章都需要也是最常用的格式,在 markdown 中,如果一段文字被定義為標題,只要在這段文字前加 號即可。一級標題 二級標題 標題 以此類推,總共六級標題,建議在井號後加乙個空格,這是最標準的 markdown 語法。熟悉 html 的同學肯定知道有序列表與無序列表的區別,在 markd...

MarkDown語法的簡要規則

先看markdown基本語法 為方便將其放入 區域中,不然不好輸出 markdown語法的簡要規則 標題 標題是每篇文章都需要也是最常用的格式,在 markdown 中,如果一段文字被定義為標題,只要在這段文字前加 號即可。乙個 至六個 分別代表標題1到標題6 分割線 我是一條華麗的分割線,三個 代...

XHTML MP 的語法規則

xhtml mp 是 xhtml 的乙個子集.xhtml mp 的語法規則遵守 xhtml 的.正如本 xhtml mp 教程前面提到的,xhtml 只是 html 更為嚴格整潔的形式.如果你已經會了 html,你可以按如下的 xhtml mp 語法規則立即開始編寫 xhtml mp 標記 必須恰當...