% ==========================================================================
% $Id: parsetree_dictionary_clumsy.pl,v 1.1 2014/02/13 05:47:11 jlang Exp $
% CSI2120 example Code for lecture 9
% ==========================================================================
% (C)opyright:
%
%   Jochen Lang
%   EECS, University of Ottawa
%   800 King Edward Ave.
%   Ottawa, On., K1N 6N5
%   Canada. 
%   http://www.eecs.uottawa.ca/~jlang
% 
% Creator: jlang (Jochen Lang) based on Clocksin & Mellish
% Email:   jlang@eecs.uottawa.ca
% ==========================================================================
% $Log: parsetree_dictionary_clumsy.pl,v $
% Revision 1.1  2014/02/13 05:47:11  jlang
% Added grammar examples for lecture 9.
%
% ==========================================================================
sentence(PT) --> sentence(_,PT).

sentence(X,sentence(NP,VP)) -->  noun_phrase(X,NP), verb_phrase(X,VP).

noun_phrase(X,noun_phrase(D,N)) --> determiner(X,D), noun(X,N).

verb_phrase(X,verb_phrase(V)) --> verb(X,V).
verb_phrase(X,verb_phrase(VP,NP)) --> verb(X,VP), noun_phrase(_,NP).

determiner(X,determiner(Y)) --> [Y], isDeterminer(Y,X).
noun(X,noun(Y)) --> [Y], isNoun(Y,X).
verb(X,verb(Y)) --> [Y], isVerb(Y,X).


isDeterminer(the,_) --> [].
isDeterminer(a,singular) --> [].
isNoun(tomato,singular) --> [].
isNoun(tomatos,plural) --> [].
isNoun(bird,singular) --> [].
isNoun(birds,plural) --> [].
isNoun(man,singular) --> [].
isNoun(men,plural) --> [].
isNoun(cat,singular) --> [].
isNoun(cats,plural) --> [].
isVerb(eats,singular) --> [].
isVerb(eat,plural) --> [].
isVerb(sings,singular) --> [].
isVerb(sing,plural) --> [].
isVerb(loves,singular) --> [].
isVerb(love,plural) --> [].
