1. 程式人生 > >理解:語法樹,短語,直接短語,控制代碼

理解:語法樹,短語,直接短語,控制代碼

 

概念:

語法樹求短語、簡單短語和控制代碼:

1)短語:子樹的末端結點形成的符號串。

2)簡單子樹:只有一層分支的子樹。

3)直接短語(簡單短語):簡單子樹的末端結點形成的符號串。

4)控制代碼:子樹中最左邊的那棵只有父子兩代的子樹的所有葉結點自左至右排列起來,就是該句型的控制代碼。

 例子:

由此可得S=(Sd(T)db)為此文法的一個句型:

 

  • 短語:S,(T),b,Sd(T),Sd(T)db,(Sd(T)db)

  • 直接短語:S,(T),b

  • 控制代碼:S

  • 此時的最左直接短語是S所有控制代碼為S

 

 

題目:

1.已知文法:

S->a|^|(T)

T->T,S|S

分析句型(T,(^,a)),求全部的短語、直接短語和控制代碼。

   答:依題意得到語法樹如下圖:

 

 

 

    全部短語:(T,(^,a))  T,(^,a)  (^,a)  ^,a  ^  a

    直接短語:^  a

    控制代碼:^

2.構造上下文無關文法,描述語言:

(1){anbn|n>=0}

(2){ambn|m>=n>=0}

(3)   if語句

  答:(1)G[S]:S -> aSb | ab | ε

    (2)G[S]:S -> aSb | a | ε

    (3)if語句 -> if<條件>then<語句> | if<條件>then<語句>else<語句>

&n