我怎么能在prolog中读取一个文件,然后只列出几个单词



我必须读取results.txt,该文件包含一个由组成的树

根(S(NP(..)NV(..)。。))

以及其他不适合我的东西,

如何在列表中只插入"ROOT(…)"?

感谢

尽管您的问题很模糊,但这里有一段工作代码。您需要根据实际需求调整

tree(Tree) -->
    sym(Functor), "(", arguments(Args), ")",
    {Tree =.. [Functor|Args]}.
sym(S) -->
    [F], { sym_char(F) },
    sym_rest(Cs),
    !, { atom_codes(S, [F|Cs]) }.
sym_rest([C|Cs]) -->
    [C], { sym_char(C) },
    sym_rest(Cs).
sym_rest([]) --> [].
sym_char(F) :- F >= 0'A, F =< 0'Z .
arguments([A|Args]) --> argument(A), ",", arguments(Args).
arguments([A]) --> argument(A).
argument(A) --> tree(A) ; sym(A).
... --> [] ; [_], ... .

在列表中使用phrase_from_file/2和cons返回的术语,在这里我显示了一个使用phrase/2的测试。

?- phrase((..., tree(T), ...), " -- garbage -- A(X,Y,Z(A,B,C)) -- garbage --").
T = 'A'('X', 'Y', 'Z'('A', 'B', 'C')) .

相关内容

  • 没有找到相关文章

最新更新