%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                           %
%       file:           grammar.pl                                          %
%       purpose:        example grammar with rule numbers                   %
%       author:         Sebastian Varges                                    %
%       date:           Mon Jan 27 16:10:41 MET 1997                        %
%       related files:  top.pl (links and declarations)                     %
%                                                                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grammar rules
node(1,[phon:[fi:Fi,re:Re],syn:[s],sem:Sem]) <---       
        [node([phon:[fi:Fi,re:Re1],syn:[np|SynNp],sem:SemNp]),
         node([phon:[fi:Re1,re:Re],syn:[vp,sc:[[syn:[np|SynNp],sem:SemNp]]],sem:Sem])].

node(2,[phon:[fi:Fi,re:Re],syn:[vp,sc:[Subj|Cs]],Sem]) <---
        [node([phon:[fi:Fi,re:Re1],
               syn:[vp,sc:[Subj,[syn:[np,Gen,Num,Cas,Pers],SemC]|Cs]],Sem]),
         node([phon:[fi:Re1,re:Re],syn:[np,Gen,Num,Cas,Pers],SemC])].                         
/*
% category of complement from subcat list 
% -> more item combinations with earley deduction
node(1,[phon:[fi:Fi,re:Re],syn:[s],sem:Sem]) <---       
        [node([phon:[fi:Fi,re:Re1],SynC,SemC]),
         node([phon:[fi:Re1,re:Re],syn:[vp,sc:[[SynC,SemC]]],sem:Sem])].

node(2,[phon:[fi:Fi,re:Re],syn:[vp,sc:[Subj|Cs]],Sem]) <---
        [node([phon:[fi:Fi,re:Re1],syn:[vp,sc:[Subj,[SynC,SemC]|Cs]],Sem]),
         node([phon:[fi:Re1,re:Re],SynC,SemC])].                         
*/
node(3,[phon:[fi:Fi,re:Re],syn:[vp,sc:Cs],Sem]) <---
        [node([phon:[fi:Fi,re:Re],syn:[v,sc:Cs],Sem])].

node(4,[phon:[fi:Fi,re:Re],syn:[np,Gen,Num,Cas,Pers],sem:[cont:Ct,quant:Q]]) <---
        [node([phon:[fi:Fi,re:Re1],syn:[det,Gen,Num,Cas],sem:[quant:Q]]),
         node([phon:[fi:Re1,re:Re],syn:[n,Gen,Num,Cas,Pers],sem:[cont:Ct,quant:Q]])].  

node(5,[phon:[fi:Fi,re:Re],syn:[np,Gen,Num,Cas,Pers],sem:Sem]) <---
        [node([phon:[fi:Fi,re:Re],syn:[pn,Gen,Num,Cas,Pers],sem:Sem])].

%% lexical entries
% determiners
node(6,[phon:[fi:[der|R],re:R],syn:[det,masc,sg,nom],sem:[quant:sg]]).
node(7,[phon:[fi:[den|R],re:R],syn:[det,masc,sg,acc],sem:[quant:sg]]).
node(8,[phon:[fi:[die|R],re:R],syn:[det,masc,pl,nom],sem:[quant:pl]]).
node(9,[phon:[fi:[die|R],re:R],syn:[det,masc,pl,acc],sem:[quant:pl]]).

node(10,[phon:[fi:[die|R],re:R],syn:[det,fem,sg,nom],sem:[quant:sg]]).
node(11,[phon:[fi:[die|R],re:R],syn:[det,fem,sg,acc],sem:[quant:sg]]).
node(12,[phon:[fi:[die|R],re:R],syn:[det,fem,pl,nom],sem:[quant:pl]]).
node(13,[phon:[fi:[die|R],re:R],syn:[det,fem,pl,acc],sem:[quant:pl]]).

% nouns
node(14,[phon:[fi:[mann|R],re:R],syn:[n,masc,sg,nom,3],sem:[cont:man,quant:sg]]).
node(15,[phon:[fi:[mann|R],re:R],syn:[n,masc,sg,acc,3],sem:[cont:man,quant:sg]]).
node(16,[phon:[fi:[ball|R],re:R],syn:[n,masc,sg,nom,3],sem:[cont:ball,quant:sg]]).
node(17,[phon:[fi:[ball|R],re:R],syn:[n,masc,sg,acc,3],sem:[cont:ball,quant:sg]]).
node(18,[phon:[fi:[maenner|R],re:R],syn:[n,masc,pl,nom,3],sem:[cont:man,quant:pl]]).
node(19,[phon:[fi:[maenner|R],re:R],syn:[n,masc,pl,acc,3],sem:[cont:man,quant:pl]]).

node(20,[phon:[fi:[frau|R],re:R],syn:[n,fem,sg,nom,3],sem:[cont:woman,quant:sg]]).
node(21,[phon:[fi:[frau|R],re:R],syn:[n,fem,sg,acc,3],sem:[cont:woman,quant:sg]]).
node(22,[phon:[fi:[frauen|R],re:R],syn:[n,fem,pl,nom,3],sem:[cont:woman,quant:pl]]).
node(23,[phon:[fi:[frauen|R],re:R],syn:[n,fem,pl,acc,3],sem:[cont:woman,quant:pl]]).

% proper nouns  
node(24,[phon:[fi:[peter|R],re:R],syn:[pn,masc,sg,dat,3],sem:[cont:peter,quant:sg]]).     
node(25,[phon:[fi:[peter|R],re:R],syn:[pn,masc,sg,nom,3],sem:[cont:peter,quant:sg]]). 
node(26,[phon:[fi:[petra|R],re:R],syn:[pn,fem,sg,_,3],sem:[cont:petra,quant:sg]]).
node(27,[phon:[fi:[du|R],re:R],syn:[pn,_,sg,nom,2],sem:[cont:you,quant:sg]]).

%% verbs
%   with one conplement
node(28,[phon:[fi:[traeumt|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem]]],
      sem:[pred:dream,arg1:ArgSem]]).

node(29,[phon:[fi:[schlaeft|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem]]],
      sem:[pred:sleep,arg1:ArgSem]]).

node(30,[phon:[fi:[schlafen|R],re:R],
      syn:[v,sc:[[syn:[np,_,pl,nom,3],sem:ArgSem]]],
      sem:[pred:sleep,arg1:ArgSem]]).

node(31,[phon:[fi:[schlaefst|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,2],sem:ArgSem]]],
      sem:[pred:sleep,arg1:ArgSem]]).

% verbs with two complements
node(32,[phon:[fi:[liebt|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem1],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:love,arg1:ArgSem1,arg2:ArgSem2]]).

node(33,[phon:[fi:[liebst|R],re:R],      
      syn:[v,sc:[[syn:[np,_,sg,nom,2],sem:ArgSem1],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:love,arg1:ArgSem1,arg2:ArgSem2]]).

node(34,[phon:[fi:[sieht|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem1],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:see,arg1:ArgSem1,arg2:ArgSem2]]).

node(35,[phon:[fi:[siehst|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,2],sem:ArgSem1],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:see,arg1:ArgSem1,arg2:ArgSem2]]).

% verbs with three complements
node(36,[phon:[fi:[gibst|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,2],sem:ArgSem1],
                 [syn:[np,_,_,dat,_],sem:ArgSem3],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:give,arg1:ArgSem1,arg2:ArgSem2,arg3:ArgSem3]]).

node(37,[phon:[fi:[gibt|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem1],
                 [syn:[np,_,_,dat,_],sem:ArgSem3],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:give,arg1:ArgSem1,arg2:ArgSem2,arg3:ArgSem3]]).


node(38,[phon:[fi:[schenkst|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,2],sem:ArgSem1],
                 [syn:[np,_,_,dat,_],sem:ArgSem3],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:donate,arg1:ArgSem1,arg2:ArgSem2,arg3:ArgSem3]]).

node(39,[phon:[fi:[schenkt|R],re:R],
      syn:[v,sc:[[syn:[np,_,sg,nom,3],sem:ArgSem1],
                 [syn:[np,_,_,dat,_],sem:ArgSem3],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:donate,arg1:ArgSem1,arg2:ArgSem2,arg3:ArgSem3]]).


node(40,[phon:[fi:[schenken|R],re:R],
      syn:[v,sc:[[syn:[np,_,pl,nom,3],sem:ArgSem1],
                 [syn:[np,_,_,dat,_],sem:ArgSem3],
                 [syn:[np,_,_,acc,_],sem:ArgSem2]]],
      sem:[pred:donate,arg1:ArgSem1,arg2:ArgSem2,arg3:ArgSem3]]).

% append
node(41,([],L,L)).
node(42,([F|R],L,[F|R1])) <---
        [node((R,L,R1))].