編譯原理:句型分析和有關文法實用的說明
阿新 • • 發佈:2019-02-08
句型分析:
自上而下的分析方法:
從開始符出發,試圖推導給定的字串,
自下而上的分析方法:
推導的逆過程,從符號串開始試圖將其規約為開始符。
最左推導:
每次推導都施加在句型最左邊的語法變數上
最右推導:
每次推導都施加在句型最右邊的語法變數上
最右推導稱為規範推導,右句型稱為規範句型;
語法樹:直接的描述一個句型或句子的語法結構,是一個有向樹,滿足如下條件:
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)最左簡單子樹 的葉(從左到右)組成一控制代碼。