0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 5
1

Syntax error: Operator priority clash SWI-Prolog

03.05.2013, 16:46. Показов 2445. Ответов 0
Метки нет (Все метки)

Здравствуйте все,
Пишу мини экспертную систему по комбинированию костюма рубашки и галстука.использую для этого SWI-Prolog.
ВО время запуска файла с исходным кодом в консоли появляется данное сообщение о ошибке:
Prolog
1
ERROR: d:/skydrive/документы/3 course/экспертные системы/expertsystem.pl:41:0: Syntax error: Operator priority clash
К сожалению, я не как не могу перестроить себя и мыслить в стиле пролог программирования, поэтому, я думаю мой код, вызовет панику у некоторых опытных программистов. Поэтому, очень благодарен, за советы в общей рационализации кода. Спасибо.
Весь код:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
:-initialization(goal).
goal:-writeln('================================================================================================'),
      writeln('Данная программа является простой экспертной системой с предметной областью Одежжда, а именно   '),
      writeln('сочитание галстука рубкашки и костюма. В процессе работы программы Вам будут задаваться вопросы.'),
      writeln('Вы можете на них отвечать yes,если ответ положительный, no, если ответотрицательный, либо номер '),
      writeln('варината ответа'),
      writeln('НЕ ЗАБЫВАЙТЕ ПОСЛЕ КАЖДОГО ОТВЕТА СТАВИТЬ ТОЧКУ '),
      writeln('================================================================================================'),
      retractall(_), %удаляем все факты из внутреней базы фактов
      retractall(yanswer(_)),
      retractall(nanswer(_)),
      retractall(vanswer(_)),
      retractall(manswer(_)),
      askquestion. 
      %задаем начальный вопрос 
      
%Главный вопрос 
question(0):-writeln('Выбирите вариант схемы комбинировнаия вещей: 1.(3 однотонные вещи); 2.(Две однотонные вещи, одна с рисунком); 3.(Одна однотоная вещь, две с рисунком)').    
 
%Вопросы для первой схемы
question(101):-writeln('Выбирите тон костюма: 1. Тёмный тон; 2. Средний тон; 3. Светлый тон').
question(102):-writeln('Выбирите цвет рубашки: 1. Светлая рубашка 2. Средний тон;').
question(103):-writeln('Выбирите цвет галстука: 1. Любой цвет; 2. Тёмный цвет;').
 
%Вопросы для второй схемы
question(201):-writeln('Рисунок галстука и рубашка одного цвета? (yes/no)').
question(202):-writeln('Рисунок рубашки и галстук одного цвета? (yes/no)').
question(201):-writeln('Рисунок пиджака и рубашка одного цвета? (yes/no)').
 
%Вопросы для третей схемы
question(301):-writeln('Рисунок галстука и рубашки разные, но совпадают по цвету? (yes/no)').
question(302):-writeln('Рисунок пиджака и галстук одинаковые, но розличаються по масштабу? (yes/no)').
question(301):-writeln('Рисунок пиджака и галстука разные, но совпадает по цвету? (yes/no)').
 
%Сохранение ответов в динамичискую базу
 
%Сохранениие ответа на главный вопрос
mainanswer(A):- assertz(manswer(0,A)).
 
%Сохранение ответа на вопросы с вариантами ответа
variantanswer(N, A):- assertz(vanswer(N,A));
 
%Сохранение ответа на вопросы yes|no
ynanswer(N, A):- A==yes,!,
                assertz(yanswer(N)).
ynanswer(N, A):- A==no,
                assertz(nanswer(N)).
                
%Задаем главный вопрос       
askquestion:- question(0),
                read(A),
                mainanswer(A),( 
                (A=:=1,askquestion1([101,102,103])); 
                (A=:=2,askquestion2([201,202,203]));
                (A=:=3,askquestion3([301,302,303]))
                ).
                
%Задаем вопроссы первой схемы
askquestion1([]).
askquestion1([H|T]):- question(H),
                      read(O),
                      variantanswer(H, O),
                      askquestion1([T]).
 
%Задаем вопроссы второй схемы
askquestion2([]).
askquestion2([H|T]):- question(H),
                     read(O),
                     ynanswer(H, O),
                     askquestion2([T]).
                     
%Задаем вопроссы третей схемы
askquestion3([H|T]):-askquestion2([H|T]).
 
%Принятие решения для первой схемы
conclusion1:-fact(101, TONKOSTYMA),
             fact(102, CVETRYBSCHKI),
             fact(102, CVETGALSTYKA),((
             TONKOSTYMA=:=1, 
             CVETRYBSCHKI=:=1,
             CVETGALSTYKA=:=1,lastсonclusion(ok) 
             );(
             TONKOSTYMA=:=2, 
             CVETRYBSCHKI=:=1,
             CVETGALSTYKA=:=2,lastсonclusion(ok)
             );(
             TONKOSTYMA=:=3, 
             CVETRYBSCHKI=:=2,
             CVETGALSTYKA=:=2,lastсonclusion(ok)
             )
             ).
             
%Принятие решения для второй схемы
conclusion2:-(yanswer(201); 
              yanswer(202); 
              yanswer(203)),
              lastсonclusion(ok).
 
%Принятие решения для третей схемы
conclusion3:- (yanswer(301); 
               yanswer(302); 
               yanswer(303)),        
               lastсonclusion(ok).
              
%Принятия оканчательного реения
lastсonclusion(C):- C==ok,
                    writeln('Косюм, рубашка и галстук подобраны правильно').
lastсonclusion(C):- C\==ok,
                    writeln('Косюм, рубашка и галстук подобраны  не правильно').
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2013, 16:46
Ответы с готовыми решениями:

Ошибка в коде Syntax error: Operator priority clash
Всем привет. Имеется ошибка Syntax error: Operator priority clash в строке ?-mother(pam,bob); , не...

Syntax error: Operator expected
Всем привет! Подскажите, пожалуйста, в чем ошибка? ругается на вторую строчку ERROR:...

SWI Prolog " ERROR: Type error: `dict' expected, found `s140_1' (an atom)"
В SWI Prolog выскакивает ошибка " ERROR: Type error: `dict' expected, found `s140_1' (an...

Syntax error (missing operator) in query expression 'tblMembers.id = tblSubjects.au_id
Добрый день! Столкнулся с такой ситуацией. Создал небольшой запрос с вложенным соединением...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2013, 16:46

Visual Prolog, e150 Syntax Error
Начал познавать Вижуал, слепил примитивную экспертную систему на основе найденной в интернете, прир...

ERROR: toplevel: Undefined procedure: readint/1 (DWIM could not correct goal) | SWI-Prolog
Начали изучать пролог по методичке отсюда. Пример: Сформировать список из N элементов, начиная с...

Ошибка "Syntax error (missing operator)"
Требуется в БД вставить дату из datetimepicker. Формат даты одинаковый в БД и в компоненте. Ошибка...

Как переделать программу написанную на Turbo-Prolog в SWI-Prolog?
Ребята подскажите пожалуйста как переделать эту программу написанную на Turbo-Prolog в SWI-Prolog?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.