21 根據下列 BNF(Backus-Naur Form)表示法,下列何者合乎此文法?
(A) WWW
(B) XYWW
(C) XWWYW
(D) XXWYYW
答案:登入後查看
統計: A(44), B(104), C(161), D(150), E(0) #3274422
統計: A(44), B(104), C(161), D(150), E(0) #3274422
詳解 (共 2 筆)
#6227543
解釋如下:
- <sentence> 結尾必須是 W。
- <term> 可以是 "W" 或 "X<term>Y"。
選項逐一檢視:
- (A) WWW:符合,因為 <term> 是 "W",最後有 "W"。
- (B) XYWW:不符合,沒有遵循正確的嵌套。
- (C) XWWYW:不符合,因為 "W" 後面沒有正確的結構。
- (D) XXWYYW:符合,因為 "XWYW" 符合規則。
因此,正確答案是 (D) XXWYYW。
4
0
#6247764
( 用 BNF 考遞迴 ( recursive ) 觀念。)
21 根據下列 BNF(Backus-Naur Form)表示法,下列何者合乎此文法?
<term> ::= X <term> Y | W # 50% 的機率,選擇遞迴:X <term> Y
<sentence> ::= <term> W # 句子的結尾+'W'
(A) WWW ->應改成是 WW : 深度呼叫0次。
(B) XYWW -> 應改成是XWYW: 深度呼叫1次。
(C) XWWYW -> 應改成是 XXWYYW 或 XXXWYYYW : 深度呼叫2、3次。
(B) XYWW -> 應改成是XWYW: 深度呼叫1次。
(C) XWWYW -> 應改成是 XXWYYW 或 XXXWYYYW : 深度呼叫2、3次。
(D) XXWYYW -> 正確遞迴。深度呼叫2次。
XXWYYW:
子句建構:
第一次: 0層
當 X< term >Y,尚未達到基底條件,繼續呼叫。
第二次: 1層
當 X< term >Y,尚未達到基底條件,繼續呼叫。
第三次: 2層
<term>=='W'。選擇了W,達到基底條件( base case ),開始回傳。
回傳: 1層
第2層的結果被第1層拿來用 -> X W Y -> 第1層的結果,被第0層拿來用。
回傳: 0層
X (XWY) Y
(第1層)
最後,拼接'W'。
顯示: XXWYYW。
ㅤㅤ
1 基底條件是 'W',開始返回。只會插入1次W,XY左右對稱。
2 依照遞迴呼叫層數,顯示會如 XXX...XWY...Y。
3 尾巴插入W。
ㅤㅤ
ㅤㅤ
此文法規則可以生成的句子有:
W W
X W Y W
X X W Y Y W
X X X W Y Y Y W
W W
X W Y W
X X W Y Y W
X X X W Y Y Y W
XXXXWYYYYW
2
0