s([s, A, B]) --> np(A), vp(B).
det([det|A]) -->  [der], {A=[[der]]}
                ; [das], {A=[[das]]}.
np([np, A, B]) --> det(A), n(B).
n([n|A]) --> ['Programmierer'], {A=[['Programmierer']]}
           ; ['Programm'], {A=[['Programm']]}.
vp([vp|A]) --> v(B), {A=[B]}
             ; (v(C), np(D)), {A=[C, D]}.
v([v, [steht]]) --> [steht].
v([v, [schrieb]]) --> [schrieb].

