模式匹配空间字符

时间:2018-04-28 16:24:16

标签: prolog

这是我的问题:

etp(V W,[V W|G]).
etp(W V,[V W|G]).
etp(V W,[_|G]):- etp(V W,G). 

Prolog说Syntax error: Operator expected。我试图逃避像'\s'"\s"这样的空白符号,并结合我认为可行的其他可能性。好吧,两者都没有正常工作。什么是逃避空间角色以匹配的正确方法,例如:etp(A B,[A B,C D].

编辑: 列表按以下方式创建:

read_line(L,C) :-
    get_char(C),
    (isEOFEOL(C), L = [], !;
        read_line(LL,_),% atom_codes(C,[Cd]),
        [C|LL] = L).

%Tests if character is EOF or LF.
isEOFEOL(C) :-
    C == end_of_file;
    (char_code(C,Code), Code==10).

read_lines(Ls) :-
    read_line(L,C),
    ( C == end_of_file, Ls = [] ;
      read_lines(LLs), Ls = [L|LLs]
    ).

所以它读取的输入看起来像

A B
C D
E F
G H

read_lines(L)返回L = [[A ,, B],[C ,, D],[E ,, F],[G ,, H]]。 这就是我如何获得它们之间的空间。 好吧,我实际上需要将, ,替换为-,我试图这样做:

read_line(L,C) :-
    get_char(C),
    ( (char_code(C,Code), Code == 32)
        -> C = '-'
        ; C = C),
    (isEOFEOL(C), L = [], !;
        read_line(LL,_),% atom_codes(C,[Cd]),
        [C|LL] = L).

Prolog说Syntax error: Unexpected end of file。不知道什么是错的。

0 个答案:

没有答案