% Regeln
% ------

s --> np(Number), vp(Number).

vp(Number) --> v(1, Number).
vp(Number) --> v(2, Number), np(_).
vp(Number) --> v(3, Number), np(_), np(_).
vp(Number) --> v(4, Number), s.


np(Number) --> n(Number).
np(Number) --> d(Number), n(Number).



% Lexikon
% -------

d(_)        --> [the].
d(singular) --> [a].

n(singular) --> [butler]; [cat]; [dog]; [garden]; [gardener]; [mouse]; [policeman].
n(plural)   --> [butlers]; [cats]; [dogs]; [gardens]; [gardeners]; [mice]; 
	        [policemen].

v(1, singular) --> [barks]; [sleeps].
v(1, plural)   --> [bark]; [sleep].
v(1, _)        --> [barked]; [slept].
v(2, singular) --> [chases]; [sees].
v(2, plural)   --> [chase]; [see].
v(2, _)        --> [saw].
v(3, singular) --> [gives]; [sells].
v(3, plural)   --> [give]; [sell].
v(3, _)        --> [gave]; [sold].
v(4, singular) --> [says]; [thinks].
v(4, plural)   --> [say]; [think].
v(4, _)        --> [said]; [thought].
