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

Syntax error: Operator expected

06.02.2020, 20:12. Показов 6691. Ответов 8
Метки нет (Все метки)

Всем привет!
Подскажите, пожалуйста, в чем ошибка?

ругается на вторую строчку ERROR: c:/2.pl:2:1: Syntax error: Operator expected

Prolog
1
2
domains
  list = integer*
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2020, 20:12
Ответы с готовыми решениями:

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

Можете подсказать в чём ошибка "error c161 : Syntax error: '.' is expected"?
Грымзик, Здравствуйте. Можете подсказать в чём ошибка "error c161 : Syntax error: '.' is...

Ошибка: "Syntax error in clause body, predicate call expected"
Начал только изучать, выкидывает ошибку "Syntax error in clause body, predicate call expected". В...

Operator expected Prolog
ERROR: d:/study/dp/mkr/m.pl:1:8: Syntax error: Operator expected ERROR:...

8
Фрилансер
3690 / 2059 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
06.02.2020, 22:39 2
Подозреваю, что Вы используете SWI-Prolog, а приведён код для Turbo или Visual.
В SWI-Prolog вообще не используется понятие домена, это версия без типизации
2
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54
07.02.2020, 11:13  [ТС] 3
дада, работаю swi-prolog редактор. Понятно...получается надо убрать domains?
0
Фрилансер
3690 / 2059 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
07.02.2020, 11:23 4
Надо оставить только код из clauses
И то обычно надо доводить напильником
2
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54
07.02.2020, 11:37  [ТС] 5
Вот получается код, который идет до goal.
Как мне тогда изменить и раздел predicates? подскажите, пожалуйста.

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
domains
  list = integer*
predicates
  member(integer,list)
  create(list,list)
  print(list)
clauses
  member(X, [X|_]):- !.
  member(X, [_|T]):- member(X, T).
  create([], []).
  create([H|T], [H|L]) :- member(H, T), create(T, L), not(member(H, L)).
  create([_|T], L) :- create(T, L).
  print([]) :- !.
  print([H|[]]) :- write(H).
  print([H|T]) :- write(H, ", "), print(T).
Добавлено через 5 минут
и потом list вызывается в goal.

Добавлено через 1 минуту
и что-то не еще с create в SWI-Prolog
0
Фрилансер
3690 / 2059 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
09.02.2020, 03:40 6
Я же написал
Цитата Сообщение от Black Fregat Посмотреть сообщение
Надо оставить только код из clauses
И то обычно надо доводить напильником
В данном случае "доводить напильником":
1) выкинуть member, так как в SWI уже есть
2) разбить write на два, так как SWI не так понимает несколько параметров
Prolog
1
2
3
4
5
6
  create([], []).
  create([H|T], [H|L]) :- member(H, T), create(T, L), not(member(H, L)).
  create([_|T], L) :- create(T, L).
  print([]) :- !.
  print([H|[]]) :- write(H).
  print([H|T]) :- write(H), write(", "), print(T).
Не проверял работу.
1
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54
10.02.2020, 10:30  [ТС] 7
вот так пока получается. ругается на list, который в domains объявлялся. если list вообще убрать, программа выводит false.

его надо как-то объявлять?

Prolog
1
2
3
4
5
6
7
8
9
goal :-
  write( "список:"), nl,
  read(list, L), nl,
  append(L, RL),
  write("результат:"), nl,
  write('['),
  print(RL),
  write("]"), nl,
  read(_).
0
Фрилансер
3690 / 2059 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
10.02.2020, 13:06 8
В SWI предикат read не требует указания типа:
Код
?- read(L).
|: [1,2,3].

L = [1, 2, 3].

?-
Список вводить как положено в языке - со скобочками, запятыми и точкой в конце
1
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54
10.02.2020, 13:20  [ТС] 9
спасибо огромное! все учел,подправил!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2020, 13:20

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
написал вот ету прожку на visual prolog 7.3 Создайте предикат, вычисляющий сумму цифр...

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

Syntax error, не могу понять в чем причина
Доброго времени суток, нашел в интернете страницу с готовой экспертной системой, решил использовать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru