このディレクトリの索引
#
#  単純な置換 s/_a/_b/
#  

's/a/b/'(_文字列,_置換された文字列) :-
        's/_a/_b/'(_文字列,a,b,_置換された文字列).

's/_a/_b/'(_文字列,_a,_b,_置換された文字列) :-
        単純な文字列置換(_文字列,_a,_b,_置換された文字列).

単純な文字列置換(_文字列,_a,_b,_置換された文字列) :-
        '_aを決定性に探索する'(_文字列,_a,_b,_前文字列,_後文字列),
        単純な文字列置換(_a,_b,_前文字列,_後文字列,_置換された文字列).

単純な文字列置換(_a,_b,_前文字列,_後文字列,_置換された文字列) :-
        atomic_list_concat([_前文字列,_b,_後文字列],_置換された文字列).
単純な文字列置換(_a,_b,_前文字列,_後文字列,_置換された文字列) :-
        単純な文字列置換(_後文字列,_a,_b,_置換された文字列_2),
        atomic_list_concat([_前文字列,_b,_置換された文字列_2],_置換された文字列).

'_aを決定性に探索する'(_文字列,_a,_b,_前文字列,_後文字列) :-
        sub_atom(_文字列,S,Len,R,_a),
        sub_atom(_文字列,0,S,_,_前文字列),
        sub_atom(_文字列,_,R,0,_後文字列),!.