% file: grammar-e.p % recognizer for X-bar verb phrases % - elimination of left recursion % - role of entities stored in database (used/1) % ---------- base productions ---------- :- dynamic used/1. sentence --> np(nom), vp, ['.']. sentence --> []. % np --> def_article, adj_list, noun. np(nom) --> [she]. np(obj) --> [the], [space], [shuttle]. vp --> vbar. % elimination of left-recursion % vbar --> verb, vcomp. % vbar --> vbar, vcomp. vbar --> verb, vcomp(obj). vbar --> verb, vcomp(obj), lvbar. lvbar --> vcomp(X), { X \== obj }. lvbar --> ( { used(a), used(b), write_ln('retracting all for used/1'), retractall(used(_)); true } ), vcomp(X), { X \== obj }, lvbar, { ! }. vcomp(obj) --> np(obj). vcomp(modifier) --> pp(X), { \+used(X), assert(used(X)) }. % vcomp(modifier) --> pp(X). vcomp(modifier) --> []. pp(a) --> [at], [the], [airfield]. pp(b) --> [on], [a], [friday]. verb --> [landed].