2015-11-08 55 views
1

我有一个名为syntax.pl的文件。这是摘录它:SWI-prolog无法处理瑞典字母

% ---------- % 


allowed_char(C) :- 
    number(C), 
    (C >= 97, C =< 122) ; 
    (C >= 65, C =< 90) ; 
    (C >= 48, C =< 57) ; 
    C = 39 ; 
    C = 40 ; 
    C = 41 ; 
    C = 44 ; 
    C = 196 ; 
    C = 197 ; 
    C = 214 ; 
    C = 228 ; 
    C = 229 ; 
    C = 246 ; 
    % Wide characters 
    C = 195 ; 
    C = 165 ; % å 
    C = 164 ; % ä 
    C = 182 ; % ö 
    C = 133 ; % Å 
    C = 132 ; % Ä 
    C = 150. % Ö 

我运行SWI-prolog版本7.2.3。我运行下面的命令:

?- [syntax]. 

我收到以下错误信息:

ERROR: /Users/sahandz/.Trash/syntax/syntax.pl:185:97: Syntax error: Unexpected end of file 

我suspection是,这是因为在我张贴的摘录结束的瑞典字母。我相信是因为第185行是瑞典字母出现的第一行(请参阅错误消息)。

我该怎么办?

编辑:

在除去瑞典字母(他们毕竟在评论)我仍然得到同样的错误。

+0

请注意号(C)后'缺乏一个首轮支架'和在最后一个关闭的一个。如果您想要处理Unicode字符,请考虑内置的'code_type/2'和'char_type/2'。什么字符集有150个有效字符? – false

回答

0

两个解决方案(不相互排斥):

  1. 使用UTF-8编码和BOM文件。

  2. 使用encoding/1指令作为Prolog文件第一行中的第一项。在这种情况下,你仍然需要使用UTF-8编码的文件,但一个BOM将没有必要:

    :- endcoding(utf8). 
    
0

我通过用UTF-8编码重新保存syntax.pl文件解决了这个问题。这可以在许多文本编辑器中完成。