s(s(N,V))-->np2(N),vp2(V).
np2(np2(N))-->pron(N).
np2(np2(D,N))-->det(D),np1(N).
np1(np1(N,P)) --> n(N), pp(P).
np1(np1(N))-->n(N).
vp2(vp2(V,P))-->vp1(V),pp(P).
vp2(vp2(V,P1,P2))-->vp1(V),pp(P1),pp(P2).
vp2(vp2(V))-->vp1(V).
vp1(vp1(V,N))-->v(V),np2(N).
pp(pp(P,N))-->prep(P),np2(N).

prep(p(on))-->[on].
prep(p(with))-->[with].
pron(pr(i))-->[i].
det(det(a))-->[a].
det(det(the))-->[the].
n(n(man))-->[man].
n(n(hill))-->[hill].
n(n(telescope))-->[telescope].
v(v(saw))-->[saw].
