2017-05-07 20 views
1

私はNoun_PhraseVerb_Phraseという2つの部分に分割された文を(リストとして渡された)文を返すProlog文パーサを持っています。今、私はNoun_PhraseVerb_Phraseを取り、別のPrologの述語にそれらを渡したいが、最初私は(常に動詞であるべきである)Verb_Phraseから最初の用語を抽出したいPrologで複雑な複合語の変数を取得する

sentence(Sentence, sentence(np(Noun_Phrase), vp(Verb_Phrase))) :- 
     np(Sentence, Noun_Phrase, Remainder), 
     vp(Remainder, Verb_Phrase). 

:以下の例を参照してください。変数に、Verb_Phraseの残りの部分を別のものに変換し、次の述語に別々に渡します。

私はこのために統一を使用する方法について考えて、私が試してみました:

sentence(Sentence, sentence(np(Noun_Phrase), vp(Verb_Phrase))), 
    [Head|Tail] = Verb_Phrase, 
    next_predicate(_, Noun_Phrase, Head, Tail, _). 
をしかし、私は ERRORを取得しています:ローカルスタック例外のうちたびに。私はこれが本当にリストではないVerb_Phraseと関係があると思う。これはVerb_Phraseの可能isntanceです:

VP = vp(vp(verb(making), adj(quick), np2(noun(improvements)))) 

どのように私は、変数動詞としてverb(X)とプロローグで、このような化合物の用語のうちvaraible残りとしての用語の残りの部分を得ることができますか?

答えて

1

あなたが好き=../2を使用できます。

Verb_Phrase=..[Verb|Rest_Term_list]. 

例:私は必要なものと非常によく似た何かをするようだ

?- noun(improvements)=..[Verb|Rest_Term_list]. 
Verb = noun, 
Rest_Term_list = [improvements]. 
+0

おかげで、。 –

+0

喜んで助ける! – coder

関連する問題