免費開始練習
司法三等申論題 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)

▼ 還有更多解析內容

升級 VIP 解鎖