2016-03-26 11 views
1

プロローグでプロダクションルールを書く方法を学ぼうとしています。 これは私が持っているものです。プロローグ文法プロダクション

paragraph --> sentence, paragraph ; []. 
sentence --> proper_noun, [ ], verb, [ ], preposition, [ ], article, [ ], noun, period. 
proper_noun --> [Jimmy] ; [Yancy] ; [Clementine] ; [Astrid]. 
verb --> [runs] ; [walks] ; [skips] ; [flies]. 
preposition --> [to] ; [at] ; [around] ; [through]. 
article --> [the] ; [a]. 
noun --> [school] ; [house] ; [car] ; [spaceship]. 
period -->[.]. 

私はそれが出力としてを返さ

phrase(sentence, [Jimmy," ",walks," ",to," ",the," ",school], []), atom_codes(Output,[Jimmy," ",walks," ",to," ",the," ",school]). 

を使用して、それを呼び出そうとしました。私がどこに間違って行ったのか、そしてより良い文法を書く方法を理解するのを助けてください。

答えて

1

'Jimmy'などを使用します(大文字で始まるすべてのアトムを引用符で囲みます)。それ以外の場合は、論理変数として解釈されます。あなたは "シングルトン変数"の警告をたくさん取得します。

あなたはまた、いくつかの括弧を逃し、そしてさらにいくつかの誤字作った:ちょっと

30 ?- phrase(sentence, ['Jimmy', walks, to, the, school, .], []). 
true ; 
false. 
+0

paragraph --> sentence, (paragraph ; []). sentence --> proper_noun, verb, preposition, article, noun, period. proper_noun --> ['Jimmy'] ; ['Yancy'] ; ['Clementine'] ; ['Astrid']. verb --> [runs] ; [walks] ; [skips] ; [flies]. preposition --> [to] ; [at] ; [around] ; [through]. article --> [the] ; [a]. noun --> [school] ; [house] ; [car] ; [spaceship]. period -->[.]. 

テストを。括弧がどのように役立つのか聞いても構わないのですか?そして、文章の制作にはスペースも含めたいと思っています。どうすればいい?そして、私は '|'の代わりに ';' – InquisitiveCoder

+1

@ BryanD'silva:はい、かっこで素敵なショートカットを使用できます。右側の再帰的な段落// 0がどれほどエレガントであるかを考慮してください。スペースを扱う場合はライブラリを参照してください(dcg/basics)。そしてあなたは|の代わりに ; – CapelliC

+0

@CapelliCは踏み込んでくれてありがとう。) –