%% np([gen]) --> det([gen]), n([gen]).
np([Gen],Baum) --> det([Gen],BaumDet), n([Gen],BaumN),
    { Baum = [np([Gen]), BaumDet,BaumN] }.

%% det --> [der] ; [das].
det([Gen],Baum) --> [der], { Baum = [det([Gen]), [der]], Gen=mask } ; 
              [das], { Baum = [det([Gen]), [das]], Gen=neutr }.

%% n --> ['Programmierer'] ; ['Programm'].
n([Gen],Baum) -->
    ['Programmierer'], { Baum = [n([Gen]), ['Programmierer']], Gen=mask}
    ; ['Programm'], { Baum = [n([Gen]), ['Programm']], Gen=neutr }.
