司法三等申論題
114年
[檢察事務官電子資訊組] 程式語言
第 三 題
以下 Python 程式碼,可以解析下列 BNF 規則。請先寫出 BNF 規則中 (I) ~ (V);並說明程式執行後之輸出。(25 分)
(程式碼包含 id_, expr, assign, test 函式解析特定字串,詳見原圖)
📝 此題為申論題
思路引導 VIP
看到解析 BNF 的 Python 程式碼(通常為遞迴下降剖析器),首先應將每個剖析函式(如 assign, expr, id_)對應到 BNF 的非終結符號,並觀察函式內的條件分支(if/elif/match)來反向推導產生式(Production rules)。接著,利用 Call Stack 觀念,逐步追蹤 test 函式輸入字串的遞迴呼叫順序,藉此判斷剖析是否成功並得出輸出結果。
🤖
AI 詳解
AI 專屬家教
【解題思路】將遞迴下降剖析器(Recursive Descent Parser)的程式邏輯反向推導為 BNF 語法規則,並透過模擬執行堆疊(Call Stack)來追蹤程式輸出。 【詳解】 一、推導 BNF 規則 (I) ~ (V)
▼ 還有更多解析內容