2015-11-08 51 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文件解決了這個問題。這可以在許多文本編輯器中完成。