1

以下で構成されるツリーを含む results.txt を読む必要があります。

ROOT ( S( NP(..) NV(..) . ) )

そして私に役立たない他のもの、

リストに "ROOT (...)" だけを挿入するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

あなたの質問は漠然としていますが、ここに実際のコードのスニペットがあります。実際の要件に合わせて調整する必要があります

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')) .
于 2013-02-07T12:24:00.857 に答える