私はメタプログラミングとDCGを使用して、Prologを使用してリストを句のリストに変換しようとしています。たとえば、[a、man、is、a、human]を[(human(X):-man(X))]に変換したいと思います。
構成要素のリストから用語を構成するために=..を使用できると思いました。たとえば、呼び出しTerm =.. [f,a,b,c]
はTermをにバインドしf(a,b,c)
ます。
私の問題は、DCGを使用してこれを組み合わせようとしていることです。これまで、DCGを使用して、文が有効な形式であるかどうかを確認してきました。
%% syllogism( +S )
% Holds if the sentence S is one of four syllogisms
% a B is a C
syllogism --> article, subject, is_, (article ; [] ), subject .
% some B is a C
syllogism --> some, subject, is_, (article ; [] ), subject .
% no B is a C
syllogism --> no, subject, is_, (article ; [] ), subject .
% some B is not a C
syllogism --> some, subject, is_, not, (article ; [] ), subject .
subject --> [X] .
some --> [some] .
is_ --> [is] .
article --> [a] .
article --> [every] .
not --> [not] .
no --> [no] .
ただし、DCGに依存しながら句のリストを作成できるように、これを変更しようとしています。
編集:基本的に私が達成しようとしているのは、リストLを取得し、句のリストを生成することです:[a、man、is、a、human]は[man(X):-human(X)]を生成する必要があります
同様に:[no、B、is、a、C]は[(false:-B(X)、C(X))]を生成する必要があります
御時間ありがとうございます。