Нужны ли файлам SWI-Prolog начальные и конечные символы? - PullRequest
2 голосов
/ 27 февраля 2011

Я новичок в SWI-Prolog и пробую некоторые учебники.Однако каждый файл, который я пытаюсь загрузить через командную строку, получает 2 сообщения об ошибках - одно в начале (ожидается оператор) и одно в конце (неожиданный конец файла).Файлы сохраняются в той же директории, в которой я работаю.

Например, у меня этот файл сохранен как kb2.pl

listensToMusic(mia).  
happy(yolanda).   
playsAirGuitar(mia) :- listensToMusic(mia).   
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).  

С самого начала открытия Prolog (через / opt / local / bin / swipl) моя командная строка выглядит следующим образом:

% библиотека (swi_hooks) скомпилирована в pce_swi_hooks 0,00 сек, 3928 байт
Добро пожаловать в SWI-Prolog (Multi- многопоточный, 64 бита, версия 5.10.2)
Copyright (c) 1990-2010 Университет Амстердама, ВУ Амстердам
SWI-Prolog поставляется с АБСОЛЮТНО НЕТ ГАРАНТИИ.Это бесплатное программное обеспечение,
, и вы можете распространять его при определенных условиях.
Пожалуйста, посетите http://www.swi -prolog.org для получения подробной информации.

помогите, воспользуйтесь? - помогите (тема).или? - apropos (Word).

? - [kb2].
ОШИБКА: /Users/name/Desktop/kb2.pl:1:0: Синтаксическая ошибка: ожидается оператор
ОШИБКА:/Users/name/Desktop/kb2.pl:10:52: Синтаксическая ошибка: неожиданный конец файла
% kb2 скомпилирован 0,00 с, 2584 байта
true.

? -

Когда я запрашиваю список скомпилированного файла, я получаю:

\ happy (yolanda).
\ playsAirGuitar (mia): - listensToMusic (mia).
\ playsAirGuitar (yolanda): - слушает ToMusic (yolanda).
true.

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

Я искал эти сообщения об ошибках в Интернете и нашел много полезных советов по форматированию для Prolog, нони один, который обращается к этой ситуации.Существуют ли какие-либо специальные символы или форматирование, которые следует использовать для начала и конца файла для Пролога?

Ответы [ 2 ]

1 голос
/ 27 февраля 2011

В какой операционной системе вы работаете? Вы уверены, что файл ASCII (а не UTF-16)? У него есть родная строка, заканчивающаяся для вашей платформы? Можете ли вы опубликовать весь файл (необработанный), чтобы люди могли его проверить?

0 голосов
/ 22 августа 2017

Многие системы Prolog, такие как SWI-Prolog, Jekejeke Prolog, позволяют определять спецификацию в качестве первого символа текстового файла. Спецификация - это пробел, обозначающий кодировку текстового файла:

254 255          UTF-16BE
255 254          UTF-16LE
239 187 191      UTF-8

Так что нет необходимости ограничивать себя ASCII. Многие текстовые редакторы разместят спецификацию для вас. И SWI-Prolog, Jekejeke Prolog, по умолчанию исследуют спецификацию.

...