Код, который я написал для грамматики определенных предложений. Я очень внимательно следил за книгой "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 ([студент, делает, его, задание], []). ОШИБКА: вне локального стека
Я уже пробовал переместить лексикон, но это не сработало. Что касается синтаксических ошибок, то при компиляции ничего не было обнаружено.
Извините, если я плохо написал вопрос, но я не знаю, что еще сказать, если вам нужна дополнительная информация о коде, оставьте комментарий, и я постараюсь ответить как можно лучше.