我刚刚开始关注Erlang并尝试编译我的第一个程序。与教程相比,一切看起来都很正确,但我似乎无法摆脱这个错误。
这是我的代码,保存在“useless.erl':
”下-module(useless).
-export([add/2, hello/0, greet_and_add_two/1]).
add(A,B) ->
A + B.
%% Shows greetings.
%% io:format/1 is the standard function used to output text.
hello() ->
io:format("Hello, world!~n").
greet_and_add_two(X) ->
hello(),
add(X,2).
我将目录更改为useless.erl:
cd("C:/Users/CP/Documents/Erlang").
然而,当我跑
时c(useless).
我得到了
useless.erl:1: cannot parse file, giving up
useless.erl:1: no module definition
error
答案 0 :(得分:5)
如果您的文件看起来没问题,但是Erlang编译器抱怨它无法解析文件,那么您的代码可能编码无效。
根据documentation Erlang,只接受UTF-8
或Latin-1
编码中的源代码。
有效编码为Latin-1和UTF-8,其中字符的大小写可以自由选择
请注意,您仍然只能在字符串和注释中使用扩展字符集:
在Erlang / OTP R16B中,Erlang令牌的语法被扩展为处理Unicode。支持仅限于字符串文字和注释。
如果出现解析错误或非法字符错误,您应该
UTF-8
或Latin-1
编码使用较旧的Erlang版本(在Erlang 17之前),您可以尝试在文件前两行明确指定编码
%% coding: utf-8
%%% or
%% For this file we have chosen encoding = Latin-1
%%% or
%% -*- coding: latin-1 -*-