logo
TurboProlog / Документация / TOM_2

Приложение c. Сообщения об ошибках

3 Неправильное ключевое слово.

Турбо Пролог узнает следующие ключевые слова:

database, predicates, domains, clauses,

goal, global, include, constants

и следующие директивы компилятора:

check_determ, nobreack, nowarnings, diagnostics,

trace, shorttrace, code, trail, errorlevel, project

4 Используйте формат

code = dddd, trail = dddd, prog = dddd или errorlevel = d

Например:

code = 4000 trail = 1000 prog = 6000 errorlevel = 0

5 Размер стека не может превышать 4000 параграфов (что соот-

ветствует 64 К).

6 Размер кода не может превышать 16000 параграфов (что соот-

ветствует 256 К).

7 Уровень ошибки должен быть один из следующих 0, 1 или 2.

10 Неправильный символ.

Правильными символами являются: большие и малые буквы, цифры и сле-

дующие символы:

<> $ - '

" * () /

: = + []

, ! ; |

11 Символьная константа должна завершаться одиночной кавычкой

('), как например: 'a' и '\254'.

12 Комментарий не завершается */ (звездочка-слеш).

14 Имя слишком длинное; максимум 250 символов.

15 Строка слишком длинная; максимум 250 символов.

16 Строка должна оканчиваться двойной кавычкой (") в той же

линии.

Если вам необходимо разместить символы строки на новой линии, ис-

пользуйте \n как First \n Next. Если вам нужна строка длинною более 250

символов, используйте concat() предикат для ее создания из коротких

строк.

17 Real - константа вышла за диапазон. Допустимый диапазон:

+-(1E+-308), т.е. 10^-308 до 10^308.

18 Шестнадцатиричная цифра ожидается после знака доллара.

Например, X = $B800.

20 Необходим (ожидается) идентификатор константы.

ifdef или ifndef

21 ожидается enddef, незакончен блок ifdef или ifndef.

22 Конец текста в незаконченном ifdef блоке.

23 Превышена вложенность условных блоков; максимум 25.

100 Необъявленный или орфографически неправильно написанный

домен.

103 Домен объявлен ранее.

104 Синтаксическая ошибка: ожидается знак равенства (=) или

запятая (,).

105 Ожидается имя (домена или функтора).

106 Альтернативы при объявлении списка неверны. Для объявления

списков используется только формат:

dom1, dom2, dom3 = otherdom*

107 Этот функтор уже был использован при объявлении доменов.

Каждый функтор может использоваться только один раз в каждом объяв-

лении доменов.

108 Ожидается имя функтора.

После or ожидается имя нового функтора.

109 Ожидается имя домена.

110 Синтаксическая ошибка при объявлении доменов.

Ожидается правая скобка [)] или запятая (,).

111 Предупреждение: Домен используется как функтор (F10 - OK,

Esc - аборт).

Это имя является также и именем домена. Вы можете обойти это предуп-

реждение, присоединив квадратные скобки к функтору, например, так:

functor_name[].

112 Предупреждение: Объявление доменов содержит единственный

функтор (F10 - OK, Esc - аборт).

Данное объявление понимается как домен только с одним функтором, что

используется очень редко.

113 Данная константа уже была определена.

201 Это имя зарезервировано для стандартного предиката.

Вы не имеете возможности переопределять стандартные предикаты.

202 Этот предикат уже объявлен.

Альтернативные определения для того же самого предиката должны быть

сгруппированы.

204 Ожидается имя домена или правая скобка [)].

205 Необъявленный или орфографически неправильно написанный

домен.

206 Слишком много параметров использовано для этого предиката.

Максимум 50.

208 Синтаксическая ошибка при объявлении предиката; ожидаются

правая скобка [)] или запятая (,).

209 Неправильное число параметров.

Все альтернативы одного и того же предиката должны иметь одинаковое

количество параметров.

210 Разрешается только одно объявление предиката базы данных.

Предикаты базы данных могут иметь только один тип объявления. Если

вы хотите добавлять в базу данных различные типы, то должны использовать

различные предикаты или объявить соответствующий домен.

211 Данный предикат объявлен как предикат базы данных.

Предикаты, объявленные в секции DATABASE, должны содержать только

факты, без свободных переменных.

220 Синтаксическая ошибка в объявлении глобальных предикатов;

ожидается знак минус (-).

Все глобальные предикаты должны быть созданы по одному из шаблонов

на параметры, таких как:

global predicates

determ status_RS232(integer, integer) -

(i, o)(o, i) language c

221 Синтаксическая ошибка; ожидается левая скобка [(].

Пример объявления глобального предиката:

global predicates

determ status_RS232(integer, integer) - (i,o)(o,i)

language c

222 Синтаксическая ошибка в шаблоне на параметры; ожидается i

или o.

Пример объявления глобального предиката:

global predicates

determ status_RS232(integer, integer) -

(i, o)(o, i) language c

223 Ошибочное число аргументов в шаблоне.

Все альтернативные шаблоны должны иметь то же самое число аргумен-

тов, что и введенное при объявлении предиката.

224 Синтаксическая ошибка в объявлении глобального предиката;

ожидается конструкция AS "Новое имя".

Явно определенное имя для внешней программы должно быть заключено в

кавычки. Например:

determ Routine(Integer) - (i) language c AS "MyRoutine"

225 Ожидается имя строки. Например:

global predicates

determ movmem(String, String, Integer) -

(i, i, i) language c as "movmem"

226 Синтаксическая ошибка; ожидается одно из ключевых слов:

PREDICATES, DOMAINS или DATABASE.

Ключевое слово GLOBAL должно предшествовать названию секции, если вы

хотите объявить ее глобальной.

227 Ожидается имя проекта или конфигурационного файла.

Например: project "parser"

config "myconfig.sys"

Файл конфигурации создается, когда вы укажете SAVE configuration в

SETUP меню.

228 Вы можете определить только одну внутреннюю цель (GOAL).

229 Указанный файл для включения в программу (INCLUDE) не су-

ществует в текущем каталоге.

230 Файл для вставки не может быть использован рекурсивно.

Данный файл для вставки уже был включен в программу.

231 Превышено число файлов для вставки; максимум 24.

232 Файл для вставки слишком большой; максимальный размер 64

К.

233 Глобальные объявления не могут следовать за локальными

объявлениями.

Все глобальные объявления появляются раньше любых локальных объявле-

ний. Секции PREDICATES, CLAUSES или DOMAINS, которым не предшествует клю-

чевое слово CLOBAL, считаются локальными и они не могут предшествовать

любому глобальному объявлению.

Данная стратегия была изменена после версии 1.x системы.

235 Домен file не может быть локальным доменом в проекте

(project).

236 Непоименованная база данных (database) должна быть гло-

бальной в проекте (project).

База данных с доменом dbasedom не может быть локальной, т. к. она не

должна ссылаться на любой локальный домен. Не должно быть ссылок на ло-

кальный домен, поскольку должна быть возможность сохранить базу данных в

другом модуле через предикат SAVE().

237 Ожидается имя файла для вставки.

401 Нет фактов (clauses) для данного предиката.

Предикат был объявлен, однако отсутствуют соответствующие факты.

Это часто возникает при тестировании модуля, входящего в проект; но

вы должны не ссылаться на всякий из глобальных предикатов, определенных в

другом модуле.

402 Синтаксическая ошибка; AND, запятая (,) или точка (.) ожи-

даются при записи факта.

403 Ожидаются имя предиката или ключевое слово (название) сек-

ции.

404 Необъявленный или орфографически неправильно написанный

домен.

405 Ожидается левая скобка [(].

406 Ожидается правая скобка [)] или запятая (,).

407 Неправильное число аргументов: сравните с объявлением.

408 Ожидается число после + или -.

409 Синтаксическая ошибка.

410 Ожидается переменная.

411 Ожидается запятая (,).

413 Синтаксическая ошибка; ожидается запятая (,), вертикальный

слеш (|) или правая квадратная скобка (]).

414 Ожидаются константа или переменная.

415 Факты одного и того же предиката должны быть сгруппирова-

ны.

Факты данного предиката уже появились в другом месте.

416 Ожидается оператор сравнения; один из следующих:

= равны

< меньше чем

<= меньше чем или равны

> больше чем

>= больше чем или равны

>< не равны

<> не равны

417 В данном тексте, следующий после точки (.), является неп-

равильным.

418 Не ожидаемый конец текста.

419 Синтаксическая ошибка внутри описания факта, ожидается

название предиката.

420 Предупреждение: Данная переменная используется только один

раз (F10 = OK, ESC = аборт).

Вы можете отключить появление этого предупреждения, использовав оп-

цию компилятора nowarning, однако вы получите вероятность где-то орфогра-

фически неправильно написать имя переменной; или, в противном случае, не-

обходимо использовать анонимную переменную (_).

422 Ожидается точка (.), "if" символ (:-) или if?

423 Ожидается запятая (,) или правая скобка [)].

425 Список должен заканчиваться правой квадратной скобкой (]).

426 Вы не можете инициализировать глобальную базу данных в

подмодуле (submodule).

Вы можете определять факты для базы данных только в том же самом мо-

дуле. Это означает, что все факты глобальной базы данных должны быть ини-

циализированы в главном модуле (main module).

Единственное различие между главным и подмодулем заключа ется в том,

что главный модуль содержит секцию цель (GOAL). Если эта ошибка появляет-

ся в главном модуле, это означает, что вы попытались инициализировать ба-

зу данных перед определением секции GOAL, компилятор предположил, что это

не главный модуль. Для устранения ошибки поместите секцию GOAL перед ини-

циализацией базы данных.

427 Для генерации объектного модуля ваша программа должна со-

держать секцию GOAL

Если вы хотите скомпилировать одиночный модуль в .OBJ файл, то мо-

дуль должен содержать секцию GOAL или быть частью проекта.

428 Свободная переменная в findall может быть использована

только внутри findall.

429 Свободная переменная в findall не должна появляться в пре-

дикате.

Пример использования findall:

findall (Name, person (Name, _, _), L).

430 Ожидается название языка программирования. Пример объявле-

ния глобального предиката:

global predicates

determ status_RS232(Integer, Integer) - (i, o)(o, i)

language c.

431 Неизвестный язык программирования. Должен быть один из

следующих:

pascal, fortran, c или asm.

432 Ожидается имя базы данных. Пример объявления базы данных:

database - lineinp

insmode

lineinpstate(String, Col)

lineinpflag

433 Домен уже был определен.

Определение базы данных автоматически генерирует соответствующее оп-

ределение домена (dbasedom - для глобальной базы данных), где имя домена

есть имя базы данных. Вы не можете определять базу данных с именем, сов-

падающим с уже введенным доменом.

434 База данных уже была определена.

Главная (глобальная) база данных уже была объявлена. Для объявления

новой (локальной) базы данных вы должны указать ее имя так, как в приме-

ре:

database - lineinp

insmode

lineinpstate(String, Col)

lineinpflag

435 Это должно быть первым значением переменной Errorcode.

Переменная Errorcode не может быть связана ни с каким значением до

того, как появится trap() предикат, и не может быть выходным аргументом

управляемого предиката. Первым значением переменной должно быть присвоен-

ное ей значение кода ошибки, с помощью trap() предиката.

450 Синтаксическая ошибка; ожидается ключевое слово.

500 Ошибка в типе.

501 Несвязанная переменная в выражении.

Переменная встречается здесь в первый раз.

504 Переменная используется в первый раз.

bound не может возвращать связанную переменную. Используйте знак ра-

венства для связывания переменной с константой.

505 Ошибка в типе: неправильный тип переменной в данной пози-

ции.

Тип, ассоциированный с переменной, не совпадает с любым из типов,

определенных для данного предиката.

506 Ошибка в типе: Функтор не принадлежит домену.

507 Ошибка в типе: Ошибочное число аргументов в составном объ-

екте.

508 Выражение не может содержать объекты данного типа.

509 Сравнение может производиться только между стандартными

типами.

510 Объекты из этого домена не могут быть сравнены.

511 Данный список не согласован с доменом.

Для использования findall соответствующий списку домен должен быть

объявлен в DOMAINS секции.

512 Ошибка в типе: неправильный тип объекта.

513 Ошибка в типе: данный аргумент не может быть числом типа

real.

В div() и mod() оба аргумента должны быть значениями типа integer.

590 Предупреждение: недетерминисткий факт (F10 = OK, Esc =

аборт).

Имеется один или несколько фактов, которые содержат тоже самое, что

и данный факт (совпадает список аргументов или вообще без аргументов);

возможный поиск с возвратом вызовет новые решения, поскольку факт не со-

держит отсечения (cut). Используйте nondeterm перед объявлением предика-

та, если вам это необходимо.

591 Предупреждение: недетерминисткий предикат (F10 = OK, Esc

= аборт).

Предикат отмечен как недетерминисткий; он может быть успешно передо-

казан в случае поиска с возвратом. Это будет отражаться на вызываемых

предикатах, которые также становятся недетерминисткими. Заметим, что пре-

дикаты базы данных, по своей натуре, недетерминисткие; это также относит-

ся ко всем использованиям retract(). Используйте nondeterm перед объявле-

нием предиката, если вам это необходимо.

592 Ошибка: недетерминисткий факт в детерминистком глобальном

предикате.

Имеется один или несколько фактов, которые содержат то же самое, что

и данный факт (совпадает список аргументов или вообще без аргументов);

возможный поиск с возвратом вызовет новые решения, поскольку факт не со-

держит отсечения (cut). Используйте nondeterm перед объявлением предика-

та, если вам это необходимо.

593 Ошибка: вызывается недетерминисткий предикат в детерми-

нистком глобальном предикате.

Предикат отмечен как недетерминисткий; он может быть успешно передо-

казан в случае поиска с возвратом. Это будет отражаться на вызываемых

предикатах, которые также становятся недетерминисткими. Заметим, что пре-

дикаты базы данных, по своей натуре, недетерминисткие; это также относит-

ся ко всем использованиям retract(). Используйте nondeterm перед объявле-

нием предиката, если вам это необходимо.

600 Слишком много имен доменов: максимум 250.

Разделите программу на отдельные модули с определением локальных до-

менов.

601 Слишком много альтернатив в объявлении доменов: максимум

250.

602 Слишком много имен предикатов; максимум в одном модуле

320.

Это включает и объявление предикатов, и объявление базы данных, и

различные варианты модели использования для каждого предиката. Разделите

модуль на два или более подмодулей.

603 Слишком много переменных в этом факте; максимум 100.

Разделите факт на два или более отдельных факта.

604 Слишком много символов в этом факте; максимум 100.

Разделите факт на два или более отдельных факта.

605 Слишком много фактов; максимум 400 для каждого предиката.

Разделите предикат на два или более предикатов.

606 Слишком много аргументов; максимум 50.

Скомбинируйте некоторые аргументы с функторами из подходящего доме-

на.

607 Слишком много имен доменов в левой части объявления доме-

нов; максимум 20.

608 Слишком много предикатов в базе данных; максимум 250 для

каждого определения базы данных.

Если вам необходимо такое большое количество предикатов, то объявите

некоторые предикаты в одной или более локальных баз данных.

610 Мал массив для кода.

Используйте code = размер для увеличения пространства.

612 Переполнение: слишком много структур в факте.

Разделите факт на два или более фактов.

614 Переполнение при генерации объектного (OBJ) модуля.

Разделите модуль на два или более отдельных компилируемых модуля.

620 Ошибка чтения таблицы сигналов.

Что-то испорчено в <имя проекта>.SYM файле. Перекомпилируйте мо-

дуль(-u) или проект.

699 Внутренняя ошибка системы.

Надеемся, что данная ошибка никогда не проявится. Однако, если это

произошло, есть надежда, что вам удастся сохранить исходный текст и ниче-

го не потерять.

701 Зацикливание при анализе flow.

Здесь нельзя использовать данный состав flow pattern (шаблона на по-

ток аргументов). Проблема в том, что компилятор безнадежно ушел в цикл,

он продолжает генерировать новые варианты потока параметров с более и бо-

лее комплексированными шаблонами на поток аргументов.

Если это не ошибка в программе, то замените аргумент с переменной и

сделайте унификацию перед или после вызова предиката.

703 Данный шаблон на поток аргументов не существует для этого

стандартного/глобального предиката.

Вы сделали попытку вызвать стандартный или глобальный предикат с не-

распознанным шаблоном на поток аргументов.

Шаблон на поток аргументов может быть не узнан в следующих случаях:

а. если он не существует (в случае стандартного предика-

та),

б. если он не объявлен (в случае глобального предиката).

Данная ошибка может наступить из-за верхнего уровня вызова, когда

означенная переменная, являющаяся входным аргументом, используется как

выходной аргумент (возможно с подчеркиванием). В этом случае вы должны

расположить последовательность вызовов наоборот.

704 Вы не можете использовать свободную переменную в not или

retractall предикатах.

Невозможно использовать связанную переменную при вызове not или

retractall, вы должны использовать символы подчеркивания для всех выход-

ных аргументов.

705 Несвязанная переменная здесь не разрешена.

assert writer и format требуют, чтобы все переменные были связаны

перед их вызовом (предикатов).

Только write может показать свободную переменную или подчеркивание.

706 Переменная списка в findall должна быть свободной (несвя-

занной).

Если необходимо сравнить результат вызова findall с уже существующим

списком, то вызовите findall со свободной переменной, а затем уже произ-

водите сравнение, например, так:

findall(x, p(x), Lnew), L = Lnew,

707 Свободная переменная в выражении.

Арифметическое выражение не может быть вычислено, если оно содержит

свободную переменную.

708 Предупреждение: Переменная не связана в данном факте.

(F10 = OK, Esc = аборт).

Когда выходная переменная не связана в факте, это означает, что она

связана со свободной переменной. Старайтесь избегать этого без необходи-

мости.

709 Предупреждение: Две свободные переменные в выражении.

(F10 = OK, Esc = аборт).

Две переменные будут связаны с одной свободной переменной. Старай-

тесь избегать этого без необходимости.

710 Предупреждение: Переменная используется дважды в шаблоне

на поток аргументов. (F10 = OK, Esc = аборт).

Переменная используется дважды как выходная переменная в вызове пре-

диката. Старайтесь избегать этого без необходимости.

711 Предупреждение: Создается свободная переменная. (F10 = OK,

Esc = аборт).

712 Переменная не связана в этом факте.

713 Две свободных переменных в выражении.

714 Переменная используется дважды в шаблоне на поток аргумен-

тов.

715 Создается свободная переменная.

716 Данный аргумент может быть только входным аргументом.

717 Данный аргумент может быть только выходным аргументом.

718 Данный домен ссылается на глобальный не ссылочный домен.

719 Ссылка на стандартный домен, который не сможет сделаться

ссылочным доменом.

Когда домен становится ссылочным доменом, все подчиненные домены

также становятся ссылочными доменами. Однако, по техническим мотивам,

стандартные домены file, db_selector, bt_selector, reg и place не могут

сделаться ссылочными доменами.

1000 Аргумент в makewindow неправильный. Проверьте:

- номер окна должен быть 1 ... 127,

- Start Row (Начальная строка) + No Of Rows (Количество

строк) должно быть <= количества строк на экране (25

43),

- Start Col (Начальный колонка) + No Of Col (Количество

колонок) должно быть <= количества колонок на экране

(80 или 120).

1001 Значение позиции курсора неправильны.

Row (Строка) и Column (Колонка) должны быть внутри активного окна.

1002 Стек переполнен.

Измените Setup при необходимости.

1003 Память (Heap) переполнена.

Не хватает памяти или бесконечный цикл.

1004 Арифметическое переполнение в операциях с реальными чис-

лами.

Допустимый диапазон -1.OE308 до 1.OE308.

1005 Неизвестная ссылка на окно.

Окно либо не создавалось, либо было изъято посредством shiftwindow

или gotowindow.

1006 Нет достаточной памяти в редакторе для текста.

Максимальный размер текста - 64 К.

1007 Память (Heap) незаполнена.

Не хватает памяти или бесконечный цикл.

1008 Арифметическое переполнение в целочисленных операциях.

Результат операции должен быть в диапазоне -32768 до 32767.

1009 След (Trail) переполнен.

Используйте trail = <новый размер> для увеличения памяти.

1010 Попытка открыть уже открытый файл.

Символическое имя файла может использоваться только для одного фай-

ла.

1011 Попытка переназначить входное устройство для закрытого

файла.

1012 Попытка переназначить выходное устройство для закрытого

файла.

1013 Неудача при вызове "system".

1014 Деление на ноль.

1015 Неправильный номер окна.

Для проверки используйте existwindow.

1016 Максимальное число окон превышено.

1018 Файл уже открыт.

1019 Неправильный режим файла, должен 0 или 1. 0 - Текст, 1 -

Двоичный.

1020 Свободные переменные здесь не разрешены.

Вы не можете вставлять свободные переменные в базу данных.

1021 Отрицательные значения или 0 не могут быть аргументами

'log' или 'ln'.

1022 Отрицательные значения не могут быть аргументами 'sgrt'.

1023 Переполнение в операции с реальными числами.

1024 Ошибка при выполнении внешней программы.

1030 Ошибка ввода/вывода на диске.

1031 Переполнение в системе расширенной памяти (EMS).

1032 База данных уже открыта.

1033 Неправильное имя файла базы данных.

1034 База данных не открыта.

База данных не ассоциирована сейчас с db_selector.

1035 B+ дерево не открыто.

1036 B+ дерево уже существует.

1038 Имя базы данных уже существует в указанном размещении.

1039 Ошибка переоткрытия базы данных в течение операции за-

полнения.

db_flush закрывает и открывает файл для заполнения DOS- буферов.

1040 Неправильное значение Order (Порядковый номер); должно

быть между 1 и 255.

1041 Неправильная длина Key (Ключа); длина ключа должна быть

между 1 и 255.

1042 Попытка обновить открытое несколькими пользователями

B+-дерева.

1043 Конфликт по типу.

Терм базы данных не соответствует объявленному домену.

2000 Нет достаточного размера памяти для текста (text).

2001 Невозможно выполнить операцию записи (на диск).

2002 Невозможно открыть: <имя файла>.

Файл не существует или не может быть создан.

2003 Невозможно удалить (стереть): <имя файла>.

Файл не существует.

2004 Неправильный диск: <маршрут>.

Неправильные буквы дисковода или маршрут.

2005 Буфер для текста заполнен.

2006 Невозможно выполнить операцию чтения (с диска).

2007 Невозможно выполнить операцию записи в файл журнализации/

протокола (LOG): <имя файла>.

Обычно это сообщение появляется, когда диск заполнен. Log-файл дол-

жен быть закрыт.

5103 Отрицательный номер строки.

5104 Номер строки слишком большой.

Указанный номер строки вышел за пределы текущего окна.

5105 Отрицательный номер колонки.

5106 Номер колонки слишком большой.

Превышен размер текущего окна.

5107 Неправильный режим экрана, должен быть в диапазоне 1 до

8.

5109 Направление (direction) должно быть 0 или 1.

5114 Координаты линии выходят за пределы окна.

6000 BGI (графические интерфейсы) не установлены.

6001 Аппаратные средства графики не распознаны.

6002 Файл драйвера устройства не найден.

6003 Неправильный файл драйвера устройства.

6004 Нет достаточной памяти для загрузки драйвера.

6005 Нехватка памяти in scan fill.

6006 Нехватка памяти in flood fill.

6007 Файл шрифта не найден.

6008 Не хватает памяти для загрузки шрифта.

6009 Неправильный режим графики для выбранного драйвера.

6010 Ошибка графики.

6011 Ошибка ввода/вывода графики.

6012 Неправильный файл шрифта.

6013 Неправильный номер шрифта.

6014 Неправильный номер устройства.