Prolog 是一個邏輯程式語言(logic programming language),它可以描述事實(fact)、
規則(rule)以及目標(goal),以下有5 個事實、2 個規則:
1) parent(carol, john).
2) parent(john, mary).
3) parent(mary, jim).
4) parent(john, sue).
5) parent(david, jim).
6) ancestor(X, Y) :=parent(X, Y).
7) ancestor(X, Z) :=parent(X, Y), ancestor(Y, Z).
假設目標是ancestor(john, X).則根據這些事實,滿足條件的X 有那些?(20 分)
六、程式語言的語法可用BNF(Backus-Naur Form)來描述,請參考以下語法,其中開
始符號(starting symbol)是S、a 為運算元(operand)、其餘3 個terminal symbols
為運算子(operator),請回答下列問題:(20 分)
1) S → S @ T | T
2) T → W ! T | W
3) W → # W | a
依照句子的長度,從短到長,寫出符合語法且長度不超過3 的所有句子。
依照從高到低的優先順序(precedence),列出此語言的3 個運算子。
那些為二元運算子?
那些二元運算子是左結合(left associative)?那些二元運算子是右結合(right
associative)?