String Processing in Prolog

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % String Processing in Prolog %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Nicolaie Popescu-Bodorin, 2009 % http://fmi.spiruharet.ro/bodorin/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Prolog, TP 2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CONSTANTS ofraza="Sunt Catalin. Sunt student si am o bursa aici. Tu?" DOMAINS fraza=string prop=string cuv=string lcuv=cuv* lprop=prop* PREDICATES % String processing in Prolog: % frontchar(String,FrontChar,RestString) % fronttoken(Str,Tok,Rest) % frontstr(Len,InpStr, StartStr, RestStr) % concat(Str1, Str2, StrResult) % str_len(Str, Len) fr2lprop(fraza,lprop) frontprop(fraza,prop,fraza) frontprop(fraza,prop,prop,fraza) propsep(char) CLAUSES % USAGE: fr2lprop(ofraza,LP) fr2lprop("",[]):-!.%not(fronttoken(S,_,_)). fr2lprop(S,[H|T]):-frontprop(S,H,ST),fr2lprop(ST,T). % USAGE: frontprop(ofraza,P,RF) frontprop("","",""):-!. frontprop(S,P,ST):-frontprop(S,"",P,ST). frontprop(Si,Pi,P,ST):- frontchar(Si,F,Sia), not(propsep(F)), str_char(SF,F), concat(Pi,SF,Pia), frontprop(Sia,Pia,P,ST),!. frontprop(Si,Pi,Pia,Sia):- frontchar(Si,F,Sia), propsep(F), str_char(SF,F), concat(Pi,SF,Pia),!. frontprop("",Pi,Pi,""). propsep(X):-X='.';X=';';X='?';X='!'.