解決方案步驟 1 - 構造增廣文法並對產生式編號 (0) E′ → E (1) E → E + T (2) E → T (3) T → T * F (4) T → F (5) F → (E) (6) F → id 步驟 2 - 對條目集應用閉包並查詢 goto 方框代表新的狀態或條目,圓圈代表重複的條目。因此,透過對 I0 應用 goto,I0 的所有規則都已完成。現在,以相同的方式對 I1、I2 應用 goto,然後繼續。繪製 DFA 每個條目集都可以作為 DFA 的狀態,即 I0、I1…… 閱讀更多
解決方案FIRST 的計算 S → L = R ∵ L 不能匯出 ε。根據 FIRST 的規則 (4b) ∴ FIRST(S) = {FIRST(L)} S → R ∵ R 不能匯出 ε。根據 FIRST 的規則 (4b) ∴ FIRST(S) = {FIRST(R)} L → * R 應用 FIRST 的規則 (3) FIRST(L) = {* } … 閱讀更多
文法 G 的 LR(0) 條目由一個產生式組成,其中在產生式的 RHS 中的某個位置插入了符號點(.)。例如 - 對於產生式 S → ABC,生成的 LR(0) 條目將是 - S →∙ ABC | S → A ∙ BC | S → AB ∙ C | S → ABC ∙ 產生式 S → ε 只生成一個條目,即 S →∙ 規範 LR(0) 集合有助於構建稱為簡單 LR(SLR) 分析器的 LR 分析器。要為文法建立規範 LR(0) 集合,需要三件事 - 增廣文法 | 閉包函式 | goto 函式 增廣文法 - 如果文法 G 的起始符號… 閱讀更多
解決方案FIRST 的計算 A → b B ∴ FIRST(A) = {b} B → ε ∴ FIRST(B) = {ε} S → A a A 應用 FIRST 的規則 (4) 即,將 S → A a A 與 X → Y1Y2Y3 進行比較 ∴ FIRST(S) = FIRST(A a A) = FIRST(A) = {b} ∴ FIRST(S) = {b} S → B b B ∵ FIRST(B) 包含 ε 或 B 匯出 ε ∴ 應用規則 (4c) ∴ FIRST(S) = FIRST(B to B) ∴ FIRST(S) = FIRST(B) - {ε} ∪ FIRST(bB) ∴ FIRST(S) = FIRST(B) - {ε} ∪ {b} = {ε} - {ε} ∪ {b} = {b} ∴ FIRST(A) = {b} FIRST(B) … 閱讀更多
FIRST 和 FOLLOW 是與文法相關的兩個函式,它們幫助我們填充 M 表的條目。FIRST() - 它是一個函式,它給出從產生式規則匯出的字串開頭的終結符集。當且僅當 α ⇒ cβ(對於某個語法符號序列 β)時,符號 c 位於 FIRST(α) 中。當且僅當存在從文法的起始符號 S 的推導,使得 S ⇒ αNαβ(其中 α 和 β 是(可能為空的)語法符號序列)時,終結符 a 位於 FOLLOW(N) 中。在… 閱讀更多