Синтаксическая ошибка: ожидается оператор - PullRequest
2 голосов
/ 08 января 2011

У меня проблема с моей программой Prolog. Кажется, что есть ошибка, но я не знаю, что это такое. Может, кто-нибудь подскажет, как ее решить ??? ошибка начинается со строки «симптом» вот мой код:

go:-
   write('insert patient name'),nl,
   read(Patient),nl,Patient=Patient,
   hypothesis(Patient,Disease),
   write(Patient),('probably has'),write(Disease),nl.
go:-
   write('sorry,the disease'),nl,write('cannot be diagnosed'),nl.

symptom(Patient,abdominal pain):-
   write('does'),write(Patient),
   write('have abdominal pain y/n'),read(Reply),
   Reply=y,nl.
symptom(Patient,fever):-
   write('does'),write(Patient),write('have a fever (y/)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,blood or mucus in stool):-
   write('does'),write(Patient)write('have blood or mucus in stool(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,nausea and vomiting):-
   write('does'),write(Patient)write('have nausea and vomiting (y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,diarrhea):-
   write('does'),write(Patient)write('have diarrhea (y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,leg cramp):-
   write('does'),write(Patient)write('leg cramp(y/n)?'),
   read(Reply),
   Reply=y,nl.    
symptom(Patient,abdominal cramp):-
   write('does'),write(Patient)write('have abdominal cramp(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,cold skin):-
   write('does'),write(Patient)write('have cold skin (y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,weak pulse):-
   write('does'),write(Patient)write('have weak pulse(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,voice change):-
   write('does'),write(Patient)write('have voice change(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,sea sickness):-
   write('does'),write(Patient)write('have sea-sickness(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,upset stomach):-
   write('does'),write(Patient)write('have upset stomach(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,feeling green around the gill):-
   write('does'),write(Patient)write('have feeling green around the gill(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,weakness):-
   write('does'),write(Patient)write('have weakness(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,flu like symptom):-
   write('does'),write(Patient)write('have flu-like symptom(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,fatigue):-
   write('does'),write(Patient)write('have fatigue(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,intestinal pain):-
   write('does'),write(Patient)write('have intestinal pain(y/n)?'),
   read(Reply),
   Reply=y,nl.
symptom(Patient,straining at stool):-
   write('does'),write(Patient)write('have straining at stool(y/n)?'),
   read(Reply),
   Reply=y,nl.

hypothesis(Patient,chorela):-
   symptom(Patient,diarrhea),
   symptom(Patient,vomiting),
   symptom(Patient,leg cramp),
   symptom(Patient,cold skin),
   symptom(Patient,weak pulse),
   symptom(Patient,voice change).
hypothesis(Patient,gastroenteritis):-
   symptom(Patient,vomiting),
   symptom(Patient,nausea),
   symptom(Patient,diarrhea),
   symptom(Patient,sea sickness),
   symptom(Patient,upset stomach),
   symptom(Patient,feeling green around the gill),
   symptom(Patient,abdominal pain),
   symptom(Patient,weakness),
   symptom(Patient,flu like symptom),
   symptom(Patient,fatigue),
   symptom(Patient,blood or mucus in stool).
hypotesis(Patient,shigellosis):-
   symptom(Patient,diarrihea),
   symptom(Patient,fever),
   symptom(Patient,nausea),
   symptom(Patient,vominting),
   symptom(Patient,abdominal pain),
   symptom(Patient,intestinal pain),
   symptom(Patient,straining at stool),
   symptom(Patient,blood or mucus in stool).

1 Ответ

3 голосов
/ 08 января 2011

Первая строка, которая определяет симптом / 2 , содержит пробел во втором аргументе экспликации. Возможно, вы имели в виду «боль в животе», состоящую из одного атома, но, как написано, парсер увидит два атома, боль в животе и боль, и не поймет, что вы имеете в виду.

Добавлено: Та же самая "внедренная пустая" ошибка появляется в заголовках большинства ваших статей для симптома / 2 , а также в теле пунктов для гипотезы / 2 где вызывается симптом. Также обратите внимание на неправильное написание слова «гипотеза» в вашем последнем предложении для этого предиката.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...