1

私が書いた定節文法のコード 「Learn Prolog Now」という本に非常に厳密に従った

lex(the,det(single)).
lex(the,det(plural)).
lex(a,det(single)).
lex(some,det(plural)).
lex(at,det(single)).

lex(student,n(single)).
lex(students,n(plural)).
lex(assignment,n(single)).
lex(assignments,n(plural)).
lex(teacher,n(single)).
lex(teachers,n(plural)).
lex(lecture,n(single)).
lex(lecture,n(plural)).
lex(school,n(single)).
lex(home,n(single)).

lex(does,v(single)).
lex(do,v(plural)).
lex(corrects,v(single)).
lex(correct,v(plural)).
lex(writes,v(single)).
lex(write,v(plural)).
lex(gives,v(single)).
lex(give,v(plural)).

lex(his,pro(single)).
lex(her,pro(single)).
lex(their,pro(plural)).

lex(and,conj).
lex(while,conj).

s--> s, conj, s.
s--> np(X),vp(X).
np(X)--> det(X),n(X);pro(X), n(X).
vp(X)--> v(X), np(X).
vp(X)--> v(X).
det(X)--> [A],{lex(A,det(X))}.
pro(X)--> [A],{lex(A,pro(X))}.
v(X)--> [A],{lex(A,v(X))}.
n(X)--> [A],{lex(A,n(X))}.

以下は、上記のコードを求めたクエリです

3 ?- s([生徒は、する、彼の、課題]、[])。エラー: ローカル スタックが不足しています

すでにレキシコンの位置を変更しようとしましたが、うまくいきませんでした構文エラーに関しては、コンパイル時に何も検出されませんでした

質問をうまく書いていない場合は申し訳ありませんが、他に何を言うべきかわかりません。コードについてさらに情報が必要な場合は、コメントを残してください。できる限り回答します。

4

1 に答える 1