; a simple ATN grammar (setf network '( (s (cat aux t (setr v *) (setr type 'Question) (to* s/aux)) (push np t (setr subj *) (setr type 'Declaration) (to* s/subj))) (s/aux (push np t (setr subj *) (to* s/ques))) (s/ques (cat v t (setr v *) (to* s/v))) (s/subj (cat v t (setr v *) (to* s/v))) (s/v (cat v (and (getfeat pastpart)(eq (getr v) 'be)) (setr obj (getr subj)) (setr subj 'someone) (setr v *) (to* s/obj)) (push np (and (null (getr obj))(getfeat transitive (getr v))) (setr obj *) (to* s/obj)) (wrd to (getfeat inf (getr v))(to* s/inf)) (jump s/end (getfeat intrans (getr v)))) (s/obj (push np (getfeat indobj (getr v)) (setr indobj (getr obj))(setr obj *) (to* s/end)) (wrd by t (to* s/passiveagent)) (jump s/end t)) (s/passiveagent (push np t (setr subj *)(to* s/end))) (s/inf (push s/subj t (sendr subj (getr subj))(setr obj *)(to* s/end))) (s/end (push prepp (cat prep) (addr pps *)(to* s/end)) (pop (buildsentence) t)) (np (cat det t (setr det *) (to* np/det)) (cat pron t (setr n *) (to* np/end)) (jump np/det t)) (np/det (cat adj t (addr adj *) (to* np/det)) (cat n t (setr n *) (to* np/n)) (cat n t (addr adj *) (to* np/det))) (np/n (push prepp (cat prep) (addr modifiers *) (to* np/n)) (wrd (which who that) t (to* np/n/who)) (wrd (which that whom) t (to* np/n/whom)) (jump np/end t)) (np/n/who (push s/subj t (sendr subj (buildnp)) (addr modifiers *)(to* np/end))) (np/end (pop (buildnp) t)) (prepp (cat prep t (setr prep *)(to* pp/prep))) (pp/prep (push np t (setr np *) (to* pp/end))) (pp/end (pop (buildq (prepphrase + +) prep np) t)) )) (defun buildsentence nil (buildq (s (verb +) (agent +) (obj +) (indobj +) (pps +) (type +)) v subj obj indobj pps type)) (defun buildnp nil (buildq (nounphrase (noun +)(det +)(@ (adj) +) (@ (modifiers) +)) n det adj modifiers)) (setf dictionary '( (the det) (a det) (chase v (transitive)) (chased v (transitive pastpart) chase) (ate v (intrans transitive) eat) (eat v (intrans transitive)) (eaten v (intrans transitive pastpart) eat) (fail v (intrans transitive inf)) (gave v (transitive indobj) give) (give v (transitive indobj)) (has (v aux) (transitive) have) (had (v aux) (transitive) have) (have (v aux) (transitive)) (improve v (transitive intrans)) (improved v (transitive intrans) improve) (invite v (transitive)) (invited v (transitive pastpart) invite) (like v (transitive)) (liked v (transitive pastpart) like) (put v (transitive pastpart)) (see v (transitive strans intrans)) (believes v (strans transitive) believe) (believe v (strans transitive)) (was (v aux) (beverb) be) (be (v aux) (beverb)) (were (v aux) (beverb) be) (I pron) (he pron) (you pron) (John n) (Mary n) (Turing n) (book n) (friend n) (man n) (woman n) (dog n) (cat n) (children n (plural) child) (fish n) (performance n) (rocket (n v) (intrans)) (table n) (floor n) (old adj) (large adj) (hungry adj) (on prep) (near prep) (in prep) (of prep) (to prep) (by prep) )) (traceall t) (loaddict dictionary) (definenetwork network)