編譯原理作業五

2021-10-11 10:43:38 字數 853 閱讀 8032

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.type=e1.type else e.type=float

(2)e->t

e.type==t.type

(3)t->num

t.type=integer

(4)e->num.num

t.type==float

5.4.3

下面的 sdt 計算了乙個由 0 和 1 組成的串的值。它把輸入的符號串當做正二進位制數來解釋。

b -> b_1 0

| b_1 1

| 1

改寫這個 sdt,使得基礎文法不再是左遞迴的,但仍然可以計算出整個輸入串的相同的 b.val 的值。

a->aa|b

a->ba』

a』->aa』|ε

提取左公因子:

b -> b_1 num

| 1

num -> 0

| 1

消除左遞迴:

b -> 1 b』

a -> num b』_1

| ε

num -> 0

| 1

編譯原理作業 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...

編譯原理 作業十四

算符優先分析 1.接上個作業 p121練習1 完成4 5 兩個步驟。1 計算firstvt和 lastvt。2 找三種關係對。3 構造算符優先關係表。4 是否算符優先文法?答 是。5 給出輸入串 a,a,a 的算符優先分析過程。棧關係 輸入串動作 a,a,a 移進a,a,a 移進 a a,a 歸約 ...

編譯原理 作業十一

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 ...