2011-02-26 7 views
2

저는 SWI-Prolog를 처음 사용하고 있으며 튜토리얼을 시도하고 있습니다. 그러나 명령 줄을 통해로드하려고하는 모든 파일에는 시작시 (운영자 예상)와 끝 (예상치 못한 파일 끝)에 2 개의 오류 메시지가 표시됩니다. 파일은 내가에서 일하고 있어요 것과 같은 디렉토리에 저장됩니다.SWI-Prolog 파일에는 시작 문자와 종료 문자가 필요합니까?

예를 들어, 내가 프롤로그 개방의 시작부터 kb2.pl

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

로 저장이 파일이 (/ 옵션을 통해/내가 컴파일 된 파일의 목록을 요청하는 경우

% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,928 bytes
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.2)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

help, use ?- help(Topic). or ?- apropos(Word).

?- [kb2].
ERROR: /Users/name/Desktop/kb2.pl:1:0: Syntax error: Operator expected
ERROR: /Users/name/Desktop/kb2.pl:10:52: Syntax error: Unexpected end of file
% kb2 compiled 0.00 sec, 2,584 bytes
true.

?-

, 내가 얻을 :

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

,691 지방/빈/swipl)는 내 명령 줄은 다음과 같습니다

그래서 파일의 첫 번째 줄과 마지막 줄을 잘라냅니다.

나는 이러한 오류 메시지를 온라인에서 검색하여 Prolog의 서식 지정에 대한 유용한 힌트를 많이 찾았지만이 상황을 해결하지 못했습니다. Prolog 용 파일의 시작과 끝 부분에 특수 문자 나 형식을 사용해야합니까?

답변

1

사용중인 운영 체제는 무엇입니까? 파일이 ASCII이고 UTF-16이 아닌 것은 확실합니까? 플랫폼에 기본 줄이 끝나 있습니까? 사람들이 확인할 수 있도록 전체 파일을 게시 할 수 있습니까?

+0

위의 텍스트를 다시 포맷하고 SWI Prolog에 복사 할 수 있습니다 ('with (user) '사용). –

+0

그것은 서식있는 텍스트 (UTF-16을 의미한다고 생각합니다) 형식입니다. 난 그냥 ASCII로 전환하고 지금 작동합니다 - 감사합니다! 다음 번에는 전체 원시 파일을 어떻게 게시합니까? 스택 오버플로에 직접 업로드 할 수 있습니까? – Kristen

+2

@Kristen : RTF (Rich Text Format)는 오래 전에 마이크로 소프트가 창안 한 워드 프로세싱 형식입니다. SWI-Prolog는 그러한 파일의 텍스트를 둘러싸는 여분의 글꼴 및 기타 "서식 지정"명령에 문제가 있음을 의심하지 않습니다. 간단한 텍스트 편집기에서 RTF 파일을 열고 추가 문자를 직접 볼 수 있습니다. – hardmath

0

Jekejeke Prolog와 같은 SWI-Prolog와 같은 많은 Prolog 시스템은 BOM을 텍스트 파일의 첫 번째 문자로 탐지 할 수 있습니다. BOM은 텍스트 파일의 인코딩을 나타내는 공백입니다.

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

따라서 ASCII로 제한 할 필요가 없습니다. 많은 텍스트 편집자가 BOM을 배치합니다. 그리고 SWI-Prolog, Jekejeke Prolog는 기본적으로 BOM을 조사합니다.

관련 문제