如果s->* αaβ and a->+γ,則稱γ是句型αγβ的相對於變數a的短語其實最簡單的判斷方法直接畫出語法樹了。如果s->* αaβ and a->γ,則稱γ是句型αγβ的相對於變數a的直接(簡單)短語 最左直接短語叫做控制代碼
文法s->(l)|as|a
l->l,s|s
分析(s,(a))
1.先畫出語法樹
2.判斷短語
乙個句型的語法樹中任一子樹葉節點所組成的符號串都是該句型的短語。很明顯的,最下面的a是s的葉子節點、最左邊的s是l的葉子節點。
其他的葉子節點從左往右分別是(,,,(,),)
在樹的第四層的(,l,)都是子樹s的孩子,因為短語都是葉子節點,所以這邊的短語有(a)
在樹的第三層的l,,,s都是子樹l的孩子,因為短語都是葉子節點,所以這邊的短語有s,(a)
在樹的第二層的(,l,)都是根節點s的孩子,因為短語都是葉子節點,所以這邊的短語有(s,(a))
所以短語有a (a) s,(a) (s,(a)) s
3.判斷直接(簡單)短語
當子樹不包含其他更小的子樹時,該子樹葉節點所組成的字串就是該句型的直接短語短語包含直接短語,我們可以直接在短語中判斷。
這裡只有第五層的s和第三層的l不包含其他更下的子樹,所以有a和s是直接短語。
其中(a)的父節點s包含l,s,(a)的父節點l包含l和s, (s,(a))的父節點s包含l
4.判斷控制代碼
控制代碼是最左邊的直接短語因為s處於最左邊,所以s是直接短語。
5.判斷素短語
素短語是乙個短語,它至少含有乙個終結符,而且除他之外不含有其他素短語。短語包含素短語,我們可以直接在短語中判斷。
因為s可以推導出其他字元,(a);s,(a);(s,(a))都包含其他素短語,所以符合條件的只有a。
**:
編譯原理 短語 直接短語 控制代碼 素短語
如果 and a 則稱 是句型 的相對於變數a的短語 如果 and a 則稱 是句型 的相對於變數a的直接 簡單 短語 最左直接短語叫做控制代碼 其實最簡單的判斷方法直接畫出語法樹了。文法s l as a l l,s s 分析 s,a 1.先畫出語法樹 2.判斷短語 乙個句型的語法樹中任一子樹葉節點...
語法樹,短語,直接短語,控制代碼
1.已知文法 s a t t t,s s 分析句型 t,a 求全部的短語 直接短語和控制代碼。語法書為 由語法樹可知全部短語 t,a t,a a a a 直接短語 a 控制代碼 2.構造上下文無關文法,描述語言 anbn n 0 ambn m n 0 ab n n 0 ambn m,n 1 s as...
語法樹,短語,直接短語,控制代碼2 0
1.已知文法 s a t t t,s s 分析句型 t,a 求全部的短語 直接短語和控制代碼。存在如下的語法樹 存在的短語如下 直接短語如下 控制代碼如下 2.構造上下文無關文法,描述語言 anbn n 0 ambn m n 0 ab n n 0 ambn m,n 1 s asb if n 0 th...