
% Grammar 5.6: Prolog-GRN version of program 5.2

s --> np(Per, Num), vp(Per, Num).

np(Per, Num) --> pro(Per, Num).
np(3, Num) --> det(Num), nbar(Num).

nbar(Num) --> n(Num).
nbar(Num) --> adj, n(Num).

vp(Per, Num) --> vi(Per, Num).
vp(Per, Num) --> vbe(Per, Num), adj.

det(sing) --> [this].
det(plu) --> [these].
det(_Num) --> [the].

n(sing) --> [knight].
n(plu) --> [knights].
n(_Num) --> [sheep].

pro(1, sing) --> [i].
pro(1, plu) --> [we].
pro(2, _Num) --> [you].
pro(3, sing) --> [it].
pro(3, plu) --> [they].

adj --> [tipsy].

vbe(1, sing) --> [am].
vbe(1, plu) --> [are].
vbe(2, _Num) --> [are].
vbe(3, plu) --> [are].
vbe(3, sing) --> [is].

vi(_Per, _Num) --> [slept].
vi(1, _Num) --> [sleep].
vi(2, _Num) --> [sleep].
vi(3, plu) --> [sleep].
vi(3, sing) --> [sleeps].

