免費開始練習
地特三等申論題 106年 [電力工程] 計算機概論

第 二 題

📖 題組:
四、下列為某一語言之 BNF(Backus-Naur Form)表示法: ::= = ::= + | – | * | ::= A | B | C | D | E ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
📝 此題為申論題,共 2 小題

小題 (二)

請問此語法是否為混淆的(ambiguous)?請詳細解釋理由。(10 分)

思路引導 VIP

遇到判斷文法是否為混淆(ambiguous)的問題,首要關鍵是回憶其定義:『若一個文法能為同一個字串產生兩棵以上的剖析樹(或兩種以上不同的最左推導),則該文法即為混淆的』。解題策略是直接構造一個包含多個運算子的簡單字串(如 A = 1 + 2 * 3),並實際寫出兩種不同的推導過程來作為嚴謹的證明。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用文法模糊性(ambiguity)的定義,證明是否存在一個字串可產生兩棵以上不同的剖析樹或最左推導。 【詳解】 已知:判斷文法是否混淆(ambiguous)的標準為「是否存在至少一個合法字串,具有兩種以上不同的最左推導(Leftmost Derivation)或剖析樹(Parse Tree)」。

小題 (一)

C = 8 + 3 * 2 – 5 是否合乎此語法?請詳細說明理由。(10 分)

思路引導 VIP

看到 BNF 語法判斷題,首先找出起始符號(通常為第一條規則左側的非終結符),並嘗試透過逐步推導(Derivation)或建構剖析樹(Parse Tree)來生成目標字串。若能成功推導出該字串,即代表合乎語法;反之則否。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用題目給定的 BNF 規則,嘗試從起始符號進行逐步推導,若能生成目標字串,即證明其合乎語法。 【詳解】 已知目標字串為:C = 8 + 3 * 2 - 5

📝 BNF 文法混淆性判定
💡 單一合法字串具備多種剖析路徑或剖析樹即為混淆文法。

🔗 文法混淆性驗證標準流程

  1. 1 選取測試字串 — 挑選含多個不同運算子的字串,如 1+2*3
  2. ↓
  3. 2 執行推導 A — 依某一結合順序展示最左推導過程
  4. ↓
  5. 3 執行推導 B — 更換運算子優先順序,展示第二種推導
  6. ↓
  7. 4 判定混淆 — 證明一個字串對應多條路徑,結論為混淆
🔄 延伸學習:進階延伸:學習如何透過增加非終端符號層級來改寫文法,消除歧義。
🧠 記憶技巧:一法兩樹、優先不明、結合未定、即屬混淆。
⚠️ 常見陷阱:答題時容易遺漏具體的推導過程證明,僅憑直覺描述而未列出最左推導步驟。
剖析樹 Parse Tree 運算子優先權與結合性 文法去混淆技術

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

資料結構與演算法
查看更多「[電力工程] 計算機概論」的主題分類考古題