% translate(+DCG-Regel,-Prolog-Klausel).  % translate/2
% z.B. translate((s --> np,vp), (s(I,J) :- np(I,K), vp(K,J))).

translate((Links --> Rechts), (Kopf :- Rumpf)) :-
   !, translate(Links,Kopf,I,J),    % translate/4
   translate(Rechts,Rumpf,I,J),
   portray_clause((Kopf :- Rumpf)).  % zur Entwicklung

translate(Term,Term).

% translate(+DCG-Teil,-Programm-Teil,+Eingabeliste,-Restliste)

%Fall Dcg-Teil = Linke Regelseite = Kategorie, i.a. ein komplexer Term
%wie s(Temp,Modus).

translate((A,B),(Atr,Btr),I,J) :-
    !, translate(A,Atr,I,K),
    translate(B,Btr,K,J).

translate((A;B),(Atr;Btr),I,J) :-
    !, translate(A,Atr,I,J),
    translate(B,Btr,I,J).

translate({Nebenbedingung},Nebenbedingung,I,J) :-
    !, I=J.


translate([],(I=J),I,J) :-
    !.

translate([Atom|Atome],append([Atom|Atome],J,I),I,J) :-
    !.

translate(Term,Kopf,I,J) :-   % Term = s(X,Y) => Kopf := s(X,Y,I,J)
   Term =.. [Fun|Argumente],  %                  Kopf =.. [s,X,Y,I,J].
   append(Argumente,[I,J],ArgumenteIJ),
   Kopf =.. [Fun|ArgumenteIJ].

