Syntax error, не могу понять в чем причина - Prolog
Формулировка задачи:
Доброго времени суток, нашел в интернете страницу с готовой экспертной системой, решил использовать как пример для себя, вначале попробовал экспортировать код на SWI prolog, т.к. пользовался им, но не вышло (Если можно, то скажите, что надо копировать из этого кода в SWI) Выдавало 2 ошибки вначале
main.pro(15,1)
error c150 : Syntax error
и
main.pro(118,1)
error c150 : Syntax error
Но после того, как весь раздел clauses я взял в скобки, проблема с goal исчезла, и осталась с nondeterm, подскажите, в чем причина?
Поправочка: Координаты ошибок на самом деле main.pro(9,1) main.pro(112,1), просто вводные закомментированные строки не были удалены сразу
Решение задачи: «Syntax error, не могу понять в чем причина»
textual
Листинг программы
rule(1,"блюдо","первое",[1,2]).
rule(2,"блюдо","фастфуд",[1,3]).
rule(3,"блюдо","второе",[1]).
rule(4,"блюдо","салат",[4]).
rule(5,"блюдо","десерт",[5]).
rule(6,"первое","суп щавелевый с галушками",[6,10,12,18,27]).
rule(7,"первое","рассольник",[6,12,16,27]).
rule(8,"первое","борщ",[6,12,14]).
rule(9,"первое","куриный суп",[7,11,12]).
rule(10,"первое","суп с фрикадельками",[8,11,12]).
rule(11,"первое","молочный суп",[11,26]).
rule(12,"первое","уха",[9,12]).
rule(13,"второе","пюре с котлетой",[8,12,29]).
rule(14,"второе","голубцы",[8,13,14]).
rule(15,"второе","плов",[6,13]).
rule(16,"второе","манты",[8,10,28]).
rule(17,"второе","пельмени",[8,10]).
rule(18,"второе","мясо по-французски",[6,12,20,22]).
rule(19,"второе","рыба фаршированная",[9,24]).
rule(20,"фастфуд","пицца",[10,15,17,20,21]).
rule(21,"фастфуд","бутерброд",[10,17,20,22]).
rule(22,"салат","зимний",[6,12,16,18,22,29]).
rule(23,"салат","греческий",[15,16,20,21,22]).
rule(24,"салат","хе",[6,19,27]).
rule(25,"салат","красная шапочка",[12,18,20,22,23]).
rule(26,"салат","летний",[15,16,22]).
rule(27,"салат","нежность",[7,12,16,18,20,22]).
rule(28,"десерт","блин сладкий",[10,24,26]).
rule(29,"десерт","блин",[10,26]).
rule(30,"десерт","шоколадные конфеты",[24,25]).
rule(31,"десерт","торт",[10,24]).
rule(32,"десерт","мороженое",[26,24,30]).
rule(33,"десерт","мороженое",[26,25,30]).
rule(34,"десерт","мороженое",[26,30]).
rule(35,"десерт","молочный коктейль",[26]).
ask(X):-fact(X,"y"),!.
ask(X):-fact(X,"n"),!,fail.
ask(1):-write("блюдо должно подаваться горячим/теплым ?"),!,complete(1).
ask(2):-write("блюдо жидкое?"),!,complete(2).
ask(3):-write("блюдо быстрого приготовления?"),!,complete(3).
ask(4):-write("блюдо легкое?"),!,complete(4).
ask(5):-write("блюдо сладкое?"),!,complete(5).
ask(6):-write("из мяса?"),!,complete(6).
ask(7):-write("из курицы?"),!,complete(7).
ask(8):-write("из мясного фарша?"),!,complete(8).
ask(9):-write("из рыбы?"),!,complete(9).
ask(10):-write("с тестом / из теста?"),!,complete(10).
ask(11):-write("с лапшой?"),!,complete(11).
ask(12):-write("с картофелем?"),!,complete(12).
ask(13):-write("с рисом?"),!,complete(13).
ask(14):-write("с капустой?"),!,complete(14).
ask(15):-write("с помидорами?"),!,complete(15).
ask(16):-write("с солеными/свежими огурцами?"),!,complete(16).
ask(17):-write("с колбасой?"),!,complete(17).
ask(18):-write("с яйцом?"),!,complete(18).
ask(19):-write("с морковью?"),!,complete(19).
ask(20):-write("с сыром?"),!,complete(20).
ask(21):-write("с оливками?"),!,complete(21).
ask(22):-write("с майонезом?"),!,complete(22).
ask(23):-write("с гранатами?"),!,complete(23).
ask(24):-write("с начинкой?"),!,complete(24).
ask(25):-write("с шоколадом?"),!,complete(25).
ask(26):-write("из молока?"),!,complete(26).
ask(27):-write("кисловатое?"),!,complete(27).
ask(28):-write("на пару?"),!,complete(28).
ask(29):-write("традиционное?"),!,complete(29).
ask(30):-write("очень холодное?"),!,complete(30).
recognition(X):- rule(N, X, Y, Z), discover(Z), !,
format(' это более всего похоже на %s - %s (правило %d)', X, Y, N),
recognition(Y).
recognition("блюдо"):- write("это блюдо системе не известно!"),nl,!.
recognition("первое"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("второе"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("фастфуд"):- write("это блюдо системе не известно!"),nl,!.
recognition("салат"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("десерт"):- write("это блюдо системе не известно!"),nl,!.
recognition(_).
discover([]).
discover([X|Y]):- ask(X), discover(Y).
complete(X):- nl, read(Y), assert(fact(X, Y)), Y="y".