dcg - Prolog Parse Tree a^n b^n -


i trying make parse tree language a^n b^n.

below i've tried, turns true without priting parse tree.

%% a^n, b^n.        ex) s([a,a,b,b],[]). = true  s --> a,s,b. s --> [].  s(ab(s)) --> a,s(s),s. s([]) --> []. 

for example, i'd print ab(ab([])) if type s(t,[a,a,b,b],[]).

please help!

s(ab(s)) --> a,s(s),s. should s(ab(s)) --> [a],s(s),[b]. give correct results:

s([]) --> []. s(ab(s)) --> [a], s(s), [b].  | ?- phrase(s(l), [a,a,b,b]).  l = ab(ab([])) ? ;  no | ?- phrase(s(ab(ab([]))), l).  l = [a,a,b,b]  yes | ?- phrase(s(l), t).  l = [] t = [] ? ;  l = ab([]) t = [a,b] ? ;  l = ab(ab([])) t = [a,a,b,b] ? ;  l = ab(ab(ab([]))) t = [a,a,a,b,b,b] ? ;  l = ab(ab(ab(ab([])))) t = [a,a,a,a,b,b,b,b] ? ; ...