編譯原理 作業十一

2022-08-31 20:42:08 字數 1041 閱讀 2910

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->ε)=  select(c->aadc)=  

select(c->ε)=  select(d->b)=  select(d->c)=

select(a->da)交select(a->ε)!=∅

所以g(s)不是ll(1)文法。

2.法消除左遞迴之後的表示式文法是否是ll(1)文法?

g(s)消除左遞迴後文法g『(s):

e -> te『  

e『 -> +te『|ε

t -> ft『

t『 -> *ft『|ε

f -> (e) | i

select(e『 -> +te『) = first(+te『) =

select(e『 -> ε) = (first(ε)-)∪follow(e『) =

select(t『 -> *ft『) = first(*ft『) =

select(t『 -> ε) = (first(ε)-)∪follow(t『) =

select(f -> (e)) = first((e)) =

select(f -> i ) = first(i) =

∵select(e『 -> +te『) ∩ select(e『 -> ε) = ∅

select(t『 -> *ft『) ∩ select(t『 -> ε) = ∅

select(f -> (e)) ∩ select(f -> i ) = ∅

∴ 文法g『(s)是ll(1)文法。

3.接2,如果是ll(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...

編譯原理作業五

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