編譯原理 作業十四

2022-08-31 20:39:14 字數 2109 閱讀 1199

算符優先分析

1.接上個作業(p121練習1),完成4),5)兩個步驟。

1)計算firstvt和 lastvt。

2)找三種關係對。

3)構造算符優先關係表。

4)是否算符優先文法?

答:是。

5)給出輸入串(a,(a,a))#的算符優先分析過程。棧關係

輸入串動作

(a,(a,a))#

移進a,(a,a))#

移進#(a

,(a,a))#

歸約#(a

,(a,a))#

移進#(a,

(a,a))#

移進#(a,(

a,a))#

移進#(a,(a

,a))#

歸約#(a,(a

,a))#

移進#(a,(a,

a))#

移進#(a,(a,a

歸約#(a,(a,a

歸約#(a,(a

移進#(a,(a)

歸約#(a,a

歸約#(a

移進#(a)

歸約#a

2.嘗試編寫自下而上的語法分析程式。

可以只寫表示式部分。

void isleft( )

while(s[j]>q);

// 把s[j+1]…s[k]歸約為某個n;

k=j+1;

s[k]=n;

}if(s[j]k=k+1;

s[k]=a;

}}while(a!=』#』);

}3.給出下面語句的三元式、四元式和逆波蘭式。

a*b+(c-d)/e 

三元式:

(*,a,b)

(-,c,d)

(/,(-,c,d),e)

(4) (+,(*,a,b),(/,(/,(-,c,d),e)))

四元式:

(*,a,b,t1)

(-,c,d,t2)

(/,t2,e.t3)

(+,t1,t3,t4)

逆波蘭式:

a*b+(c-d)/e

->ab*cd-e/+

1.接上個作業(p121練習1),完成4),5)兩個步驟。

1)計算firstvt和 lastvt。

2)找三種關係對。

3)構造算符優先關係表。

4)是否算符優先文法?

答:是。

5)給出輸入串(a,(a,a))#的算符優先分析過程。棧關係

輸入串動作

(a,(a,a))#

移進a,(a,a))#

移進#(a

,(a,a))#

歸約#(a

,(a,a))#

移進#(a,

(a,a))#

移進#(a,(

a,a))#

移進#(a,(a

,a))#

歸約#(a,(a

,a))#

移進#(a,(a,

a))#

移進#(a,(a,a

歸約#(a,(a,a

歸約#(a,(a

移進#(a,(a)

歸約#(a,a

歸約#(a

移進#(a)

歸約#a

2.嘗試編寫自下而上的語法分析程式。

可以只寫表示式部分。

void isleft( )

while(s[j]>q);

// 把s[j+1]…s[k]歸約為某個n;

k=j+1;

s[k]=n;

}if(s[j]k=k+1;

s[k]=a;

}}while(a!=』#』);

}3.給出下面語句的三元式、四元式和逆波蘭式。

a*b+(c-d)/e 

三元式:

(*,a,b)

(-,c,d)

(/,(-,c,d),e)

(4) (+,(*,a,b),(/,(/,(-,c,d),e)))

四元式:

(*,a,b,t1)

(-,c,d,t2)

(/,t2,e.t3)

(+,t1,t3,t4)

逆波蘭式:

a*b+(c-d)/e

->ab*cd-e/+

編譯原理作業 RE NFA DFA minDFA

題目將乙個正規表示式 regular expression 轉換成nfa,之後從nfa轉換成dfa,之後在這個dfa中找出mindfa。一 re到nfa re regular expression 為 a b aba a b 將re化成nfa的三個主要的類別是 a b 和a 和ab 二 nfa到df...

編譯原理作業五

5.3.1 下面是涉及運算子 和整數或浮點運算分量的表示式的文法。區分浮點數的方法是看它有無小數點。e e t t t num.num num 1 給出乙個 sdd 來確定每個項 t 和表示式 e 的型別 sdd 產生式語義規則 1 e e1 t if e1.type t.type then e.t...

編譯原理 作業十一

1.文法 g s 1 s ab 2 a da 3 b cc 4 c aadc 5 d b 驗證文法 g s 是不是 ll 1 文法?解 first da first first aadc first b follow a follow c follow d select a da select a ...