
% Frank Richter
% Die Sprache a^n b^n c^n als einfache DCG
% Ausgabe: Geklammerte Baumstruktur,
%          Anzahl der Wiederholungen als Successorfunktion

parse(List) :- s(Tree, Num, List, []), write('Tree = '), write(Tree), nl,
	                               write('Num = '), write(Num).


s(s(A,B,C),suc(Num)) --> a(A,Num), b(B,Num), c(C,Num).

a(a(As,A),suc(N)) --> as(As), a(A,N).
a(a(At),zero)      --> as(At).

b(b(Bs,B),suc(N)) --> bs(Bs), b(B,N).
b(b(Bt),zero)      --> bs(Bt).

c(c(Cs,C),suc(N)) --> cs(Cs), c(C,N).
c(c(Ct),zero)      --> cs(Ct).

as(a_t) --> [a].

bs(b_t) --> [b].

cs(c_t) --> [c].