% Uebung 11 % % a) Parser % pair(X,Y,(X,Y)). char_atom(C,A) :- maplist(pair, "CHNOPS", [c,h,n,o,p,s], CAs), member((C,A),CAs). is_digit_code(X) :- code_type(X,digit). text_number(1,[]). text_number(N,[D|Ds]) :- number_codes(N,[D|Ds]). text_formula([],[]). text_formula([C|Cs],[(A,N)|S]) :- char_atom(C,A), append(NS,R,Cs), maplist(is_digit_code, NS), text_number(N,NS), text_formula(R,S).