地特三等申論題
106年
[電力工程] 計算機概論
第 一 題
📖 題組:
四、下列為某一語言之 BNF(Backus-Naur Form)表示法:
<assignment> ::= <identifier> = <expr>
<expr> ::= <expr> + <expr> | <expr> – <expr> | <expr> * <expr> | <digit>
<identifier> ::= A | B | C | D | E
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
四、下列為某一語言之 BNF(Backus-Naur Form)表示法:
<assignment> ::= <identifier> = <expr>
<expr> ::= <expr> + <expr> | <expr> – <expr> | <expr> * <expr> | <digit>
<identifier> ::= A | B | C | D | E
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
📝 此題為申論題,共 2 小題
小題 (一)
C = 8 + 3 * 2 – 5 是否合乎此語法?請詳細說明理由。(10 分)
思路引導 VIP
看到 BNF 語法判斷題,首先找出起始符號(通常為第一條規則左側的非終結符),並嘗試透過逐步推導(Derivation)或建構剖析樹(Parse Tree)來生成目標字串。若能成功推導出該字串,即代表合乎語法;反之則否。
小題 (二)
請問此語法是否為混淆的(ambiguous)?請詳細解釋理由。(10 分)
思路引導 VIP
遇到判斷文法是否為混淆(ambiguous)的問題,首要關鍵是回憶其定義:『若一個文法能為同一個字串產生兩棵以上的剖析樹(或兩種以上不同的最左推導),則該文法即為混淆的』。解題策略是直接構造一個包含多個運算子的簡單字串(如 A = 1 + 2 * 3),並實際寫出兩種不同的推導過程來作為嚴謹的證明。