% Prolog translation of the following grammar: % % ::= % | a a % % ::= a % | a a % % ::= eo % | eo even(T,T). even([a,a|More],T) :- even(More,T). even(L) :- even(L, []). odd([a|T],T). odd([a,a|More],T) :- odd(More,T). odd(L) :- odd(L, []). foo(L,T) :- even(L,[eo|O]), odd(O,T). foo(L,T) :- odd(L,[oe|E]), even(E,T). foo(L) :- foo(L,[]).