司法三等申論題
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),因此對於同一個字串會產生不只一種剖析樹。 【論述】
▼ 還有更多解析內容