1. 程式人生 > >編譯原理:句型分析和有關文法實用的說明

編譯原理:句型分析和有關文法實用的說明

句型分析:

自上而下的分析方法:

從開始符出發,試圖推導給定的字串,

自下而上的分析方法:

推導的逆過程,從符號串開始試圖將其規約為開始符。

最左推導:

每次推導都施加在句型最左邊的語法變數上

最右推導:

每次推導都施加在句型最右邊的語法變數上

最右推導稱為規範推導,右句型稱為規範句型;

語法樹:直接的描述一個句型或句子的語法結構,是一個有向樹,滿足如下條件:

1.每個結點都有標記x∈V,

2.根標記為S(開始符);

3.若x有後繼,則x∈Vn;

4.A有k個後繼,則依次為x1,x2....xk;

文法的二義性:

描述一個句子的文法不是唯一的

對一個句子的分析應該是唯一的

如果一個句子存在兩顆語法書,則是該句子二義性的

如果一個文法包含二義性的句子,則該文法是二義性的,否則該文法是無二義性的。

短語和控制代碼:

短語定義:


設G[Z]是給定文法,  w=xuy∈V+,為該文法的句型,如果滿足下面兩個條件:


① Z  xUy;


② U  u;


 則稱句型xuy 中的子串u是句型xuy的短語。


直接短語定義:


設G[Z]是給定文法,  w=xuy∈V+,為該文法的句型,如果滿足下面兩個條件:


① Z  xUy;


② U Þ u;


 則稱句型xuy 中的子串u是句型xuy的簡單短語(或直接短語)。


直觀理解:短語是前面句型中的某個非終結符所能推出的符號串。


控制代碼定義:


任一句型的最左簡單短語稱為該句型的控制代碼。


 






用語法樹求短語、簡單短語和控制代碼的方法是:


1)每個句型都有一棵語法樹;


2)每棵語法樹的葉(從左到右)組成一句型;


3)每個子樹 的葉(從左到右)組成一短語;


4)每個簡單子樹 的葉(從左到右)組成一簡單短語;


5)最左簡單子樹 的葉(從左到右)組成一控制代碼。