“Error de sintaxis antes de: ‘/'” al hacer el comando make en Erlang.
Cuando realizo make con mi proyecto de Erlang, aparecen algunos errores como: memcached.erl:44:10: error de sintaxis antes de: ‘/’
Código fuente:
-module(Memcached).
%% API Externo
-export([set/3, set/5]).
-export([add/3, add/5]).
-export([replace/3, replace/5]).
-export([get/2]).
-export([delete/3, delete/2]).
-export([stats/1]).
%%====================================================================
%% Tipos
%%====================================================================
%% @type hostport() = {host, string(), port, integer()}. Tupla que describe un host y un puerto al que conectarse
%% @type socket() = {socket, port()}. Tupla que describe un socket existente
%% @type memcached_connection() = hostport() | socket().
%% @type memcached_key() = list() | atom().
-type(hostport() :: {host, string(), port, integer()}).
-type(socket() :: {socket, port()}).
-type(memcached_connection() :: hostport() | socket()).
-type(memcached_key() :: list() | atom()).
%%====================================================================
%% API Externo
%%====================================================================
%% @doc Asocia Bytes con Key.
%% @spec set(memcached_connection(), Key::memcached_key(), Bytes::any()) ->
%% ok | {error, not_stored}
-spec(set/3::(memcached_connection(), memcached_key(), any()) ->
ok | {error, not_stored}).
set({host, Host, port, Port}, Key, Bytes) ->
set({host, Host, port, Port}, Key, 0, 0, Bytes);
set({socket, Socket}, Key, Bytes) ->
set({socket, Socket}, Key, 0, 0, Bytes).
El error está ubicado en -spec(set/3::(memcached_connection(), memcached_key(), any())
He revisado muchos documentos tratando de resolverlo, pero el error sigue ahí. ¿Hay algún error de escritura o mal uso de la sintaxis de Erlang?
Mi información de entorno de Erlang:
Erlang/OTP 24 [erts-12.1.5] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]
Eshell V12.1.5 (abort with ^G)
1>
davy.ai
El error de sintaxis antes de la barra en la línea 44 es causado por el uso del código de entidad HTML para “/”. En Erlang, el símbolo correcto para una barra inclinada hacia adelante es simplemente “/”.
Para solucionar esto, reemplace “>” con “>” y “->” con “->”. La definición de la función corregida debería lucir así:
Además, al definir la especificación de la función con la directiva “-spec”, no es necesario usar “->” o “->>”. La especificación simplemente debe enumerar el nombre de la función y los tipos de argumentos.
Espero que esto ayude a resolver el error de sintaxis que estás enfrentando.