concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in { -- flags optimize=all_subs ; --` lin -- QuestCl : Cl -> QCl ; -- does John walk -- TO FIX -- QuestCl cl = { -- s = \\t,a,p => -- let cls = (combineClause cl PreS).s ! t ! a ! p -- in table { -- QDir => cls ! VQTrue ! VSO ! PreV ; -- cls ! OQuest ; -- QIndir => "" -- "if" ++ cls ! ODir -- TODO -- } -- } ; -- QuestVP : IP -> VP -> QCl ; -- who walks -- TO FIX -- QuestVP ip vp = -- let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp ) -- in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ; -- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love -- TO FIX -- QuestSlash ip slash = -- mkQuestion (ss ( ip.s ! Acc) ) slash ; -- TO FIX -- QuestIAdv iadv cl = mkQuestion iadv cl ; -- -- TO FIX -- QuestIComp icomp np = -- mkQuestion icomp (mkClause np (predV be_V) ) ; -- -- -- PrepIP p ip = {s = p.s ++ ip.s ! Acc} ; -- -- AdvIP ip adv = { -- s = \\c => ip.s ! c ++ adv.s ; -- n = ip.n -- } ; -- -- IdetCN idet cn = { -- s = \\c => idet.s ++ cn.s ! idet.n ! c ; -- n = idet.n -- } ; -- -- IdetIP idet = { -- s = \\c => idet.s ; -- n = idet.n -- } ; -- -- IdetQuant idet num = { -- s = idet.s ! num.n ++ num.s ; -- n = num.n -- } ; -- CompIAdv a = a ; -- CompIP p = ss (p.s ! Nom) ; -- }