免費開始練習
司法三等申論題 108年 [檢察事務官電子資訊組] 程式語言

第 一 題

📖 題組:
若有下列的 Backus-Naur Form(BNF)語法,S -> SaS | SbS | ε。
📝 此題為申論題,共 2 小題

小題 (一)

請畫出 aba 的剖析樹(Parsing Tree)。(15 分)

思路引導 VIP

遇到 BNF 推導剖析樹的題目,首先觀察目標字串 aba 的結構,並尋找對應的替換規則。此文法為模糊文法(Ambiguous grammar),因此會有多種合法的剖析樹。建議採取由上而下(Top-down)的方式,以中間字元 b 為切入點使用 S -> SbS 展開,再將左右兩側的 S 分別展開為 SaS,最後將剩餘的非終結符號 S 替換為空字串 ε,這樣能畫出結構最對稱且直觀的樹狀圖。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用由上而下剖析法(Top-down Parsing),根據 BNF 規則逐步將非終結符號 S 替換,推導出目標字串 aba。 【詳解】 已知 BNF 語法規則:

小題 (二)

請確認是否為不明確的語法(Ambiguous Grammar),若是不明確的語法,則請舉例說明可能的解決方式;若非不明確的語法,則請說明為何沒有問題。(10 分)

思路引導 VIP

面對 BNF 語法題,首先回想「不明確語法(Ambiguous Grammar)」的定義:是否能找尋到一個句子,存在兩棵以上的剖析樹(或兩個以上的極左/極右推導)。接著,嘗試用最短的終結符號組合(例如字串 'aa')帶入推導,若能產生不同的推導路徑,即證明其為不明確。最後,分析原語法同時具備左、右遞迴導致結合律不清的缺陷,並透過改寫為單純的右遞迴或左遞迴來提供解決方案。

🤖
AI 詳解
AI 專屬家教

【破題】 給定的 BNF 語法 S -> SaS | SbS | ε 為「不明確的語法(Ambiguous Grammar)」。 【論述】

升級 VIP 解鎖