3
プロローグを学習していますが、問題が残っています。私は質問と回答システムを作っています。
たとえば、「車の色は青です」と入力します。プログラムは「OK」と言ってその新しいルールを追加するので、「車の色は何ですか?」と尋ねられます。それは青で応答します。
「車の色は緑色です」と答えると、「それはありません」と返信します。 しかし、 "車の色は青です"と入力すると、質問版では真、偽を返します。誰かがどこへ向かうか指示してくれますか?私はどのようにプログラムが「青い」か何かを言うようにする方法を知らない。プロローグのクエリと回答システムの作成
input :-
read_line_to_codes(user_input, Input),
string_to_atom(Input,Atoms),
atomic_list_concat(Alist, ' ', Atoms),
phrase(sentence(S), Alist),
process(S).
statement(Statement) --> np(Description), np(N), ap(A),
{ Statement =.. [Description, N, A]}.
query(Fact) --> qStart, np(A), np(N),
{ Fact =.. [A, N, X]}.
np(Noun) --> det, [Noun], prep.
np(Noun) --> det, [Noun].
ap(Adj) --> verb, [Adj].
qStart --> adjective, verb.
vp --> det, verb.
adjective --> [what].
det --> [the].
prep --> [of].
verb -->[is].
%% Combine grammar rules into one sentence
sentence(statement(S)) --> statement(S).
sentence(query(Q)) --> query(Q).
process(statement(S)) :- asserta(S).
process(query(Q)) :- Q.
あなたの質問をトレースして、watが間違っていますか? '? - Query.'の代わりに'? - trace、Query.'と書いて、それを実行してください。しかし、しかし、してください警告を無視しないでください私は彼らがちょうど警告であることを知っているが、警告を無視し、さらにエラーを無視して、あなたがちょうどStackoverflowに来るならば、 –
あなたはいくつかの*シングルトン*可変警告と構文エラーを持っていますので、それらをさらに進める前に解決する必要があります。 – lurker
私は何を変更するべきかわからないので、説明を除いて、エラーを取り出しました。私はその変数は必要ありません。誰か私の元の質問から私を指示することはできますか? – user3277930