% Deklarativní popis češtiny I
% Gramatika 2
% Teorie

:- tree_extensions.
:- multifile if/2.

% Lexicon

pepa ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:sg,
                    gend:ma))).
kozu ~~> (word,
          cat:(noun,
               case:acc,
               agr:(num:sg,
                    gend:f))).
máňa ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:sg,
                    gend:f))).
pase ~~> (word,
          cat:(verb,
               agr:num:sg)).


% Phrase Structure Rules

s ##
    (phrase,
     cat:(sentence,
          agr:Agr),
     head_dtr:Head,
     nonh_dtr:Subj)
===>
    cat> (Subj,
          cat:(noun,
               case:nom,
               agr:Agr)),
    cat> (Head,
          cat:((verb_phrase;verb_intrans),
               agr:Agr)).

vp ##
    (phrase,
     cat:(verb_phrase,
          agr:Agr),
     head_dtr:Head,
     nonh_dtr:Obj)
===>
    cat> (Head,
          cat:(verb_trans,
               agr:Agr)),
    cat> (Obj,
          cat:(noun,
               case:acc)).

% Test sentences

t(1, "pepa pase", phrase, 1, 'Gramatika1: neprechodne sloveso').
t(2, "pepa pase kozu", phrase, 1, 'Gramatika1: prechodne sloveso').
t(3, "pase kozu", phrase, 1, 'Gramatika1: prechodne sloveso').
t(4, "pase pepa", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(5, "kozu pase pepa", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(6, "kozu pepa pase", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(7, "pase kozu pepa", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(8, "pase pepa kozu", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(9, "pepa kozu pase", phrase, 0, 'Gramatika1: neumi volny slovosled').
t(10, "kozu pase", bot, 0, 'Gramatika1: neumi volny slovosled').

