语法错误:Prolog中的子句结尾意外

语法错误:Prolog中的子句结尾意外,prolog,syntax-error,Prolog,Syntax Error,Prolog中有以下错误:“语法错误:意外的子句结尾”声明过程triangulo、circulo和rectangulo行中的此错误,这是我的代码: areas:- nl, display('1.Area triangulo'),nl, display('2.Area circulo'),nl, display('3.Area rectangulo'),nl, display('4.Salir'),nl, display('Escoja opcion: '),nl, read(X)

Prolog中有以下错误:“语法错误:意外的子句结尾”声明过程triangulo、circulo和rectangulo行中的此错误,这是我的代码:

areas:- nl,

display('1.Area triangulo'),nl,
display('2.Area circulo'),nl,
display('3.Area rectangulo'),nl,
display('4.Salir'),nl,
display('Escoja opcion:        '),nl,
read(X),opcion(X),

opcion(4).
opcion(X):-X=1,triangulo(W),areas;X=2,circulo(W),areas;X=3,rectangulo(W),areas.

triangulo(W):- write('INgresa base'),nl,
    read(B),nl,
       display('INgresa altura'),nl,
    read(A),nl,
areaT(B,A,R),nl,
    display('EL area del triangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A)/2.

circulo(W):- display('INgresa radio de circulo'),nl,
    read(RA),nl,


    areaC(RA,R),nl,
    display('EL area del CIRCULO ES: '), display(R),nl,nl,
    areaC(B,A,R):-R is(RA*RA*3.14).

rectangulo(W):- display('INgresa base'),nl,
    read(B),nl,
       display('INgresa altura'),nl,
    read(A),nl,
areaT(B,A,R),nl,
    display('EL area del rectangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A).
我可以发现2个问题(可能是复制和粘贴):

这里呢

...
areaT(B,A,R),nl,
    display('EL area del rectangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A).
...
应该是

..., display(R),nl,nl.
..., display(R),nl,nl.