2010-11-20 6 views
-1

私は操作と書き出しが必要な攪拌のリストを持っています。 H |テイル再帰で文字列を取得します。 FOO
バー: Hは "声明(FOO、foo2は、foo3、foo4、foo5)" 私は唯一のfooを書き出すことができるようにしたい、foo2は、別の行にfoo3プロローグで文字列を操作する

アウトのようになります。 foo2は
...
...
DIV:foo5コードへ

答えて

1

変換文字列、用語のコード、そして用語destructure:

/* SWI Prolog 
*/ 
read_from_string(String, Term) :- 
    string_to_list(String, List), 
    read_from_chars(List, Term). 

demo:- 
    String="statement(foo, foo2, foo3,foo4,foo5)", 
    read_from_string(String, Term), 
    Term =.. [Fst,Snd,Thr|Rest], 
    write(functor:Fst),nl, 
    write(arg1:Snd),nl, 
    write(arg2:Thr),nl, 
    write(rest:Rest),nl. 

デモセッション:

?- demo. 
functor:statement 
arg1:foo 
arg2:foo2 
rest:[foo3,foo4,foo5] 
true. 

(= ..)から得られたリスト内のそれぞれの位置に応じて印刷するアイテムを選択してください。ここで彼らはすべて印刷されました。

+0

素晴らしい – user514706