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

第 一 題

一、在 Backus-Naur Form(BNF)語法中,試說明剖析樹(Parse Tree),並使用以下語法,寫出語句為 A:=B+C*A 之兩種剖析樹。(25 分) := → A|B|C + * |() |
📝 此題為申論題

思路引導 VIP

看到這題,首先要回想「剖析樹」的定義:它是將字串推導過程具象化的階層樹狀圖。接著要敏銳地察覺到題目給定的 <expr> 語法沒有定義運算子優先級(Precedence),因此這是一個「二義性語法(Ambiguous Grammar)」。要畫出兩種不同的樹,只需在展開表達式時,分別讓 + 成為最高層級節點(先算乘法),以及讓 * 成為最高層級節點(先算加法)即可。

🤖
AI 詳解 AI 專屬家教

【破題】 在程式語言編譯過程的語法分析(Syntax Analysis)階段,剖析樹(Parse Tree)是用來驗證程式碼字串是否符合語法規則(Grammar Rules)的核心資料結構。本題給定的語法缺乏運算子優先順序的定義,屬於二義性語法(Ambiguous Grammar),因此對於同一個字串會產生不只一種剖析樹。 【論述】

▼ 還有更多解析內容

升級 VIP 解鎖