mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-11 08:06:34 -06:00
85 lines
2.2 KiB
Plaintext
85 lines
2.2 KiB
Plaintext
--# -path=.:../abstract:../common:../../prelude
|
|
|
|
concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
|
|
flags optimize=all_subs ; coding=utf8 ;
|
|
|
|
lin
|
|
-- : Cl -> QCl ; -- does John walk
|
|
QuestCl cl = cl ** {qf=QDir} ;
|
|
|
|
-- : IP -> VP -> QCl ; -- who walks
|
|
QuestVP ip vp = {
|
|
subj=ip.nom ;
|
|
adv=vp.adv ! ip.a ;
|
|
verb=vp.verb ;
|
|
dep=vp.dep ;
|
|
compl=\\p => vp.compl ! p ! ip.a ; --???
|
|
a=ip.a
|
|
} ;
|
|
|
|
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
|
QuestSlash ip cls = cls ** {
|
|
subj=(applyIPronPrep cls.c ip) ++ cls.subj ;
|
|
a=cls.a
|
|
} ;
|
|
|
|
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
|
QuestIAdv iadv cl = cl ** {
|
|
subj=iadv.s ++ cl.subj
|
|
} ;
|
|
|
|
-- : IComp -> NP -> QCl ; -- where is John
|
|
QuestIComp icomp np = {
|
|
subj=icomp.s ! Ag (GSg Neut) P3 ; --???
|
|
compl=table {
|
|
Pos => np.s ! Nom ; --???
|
|
Neg => np.s ! Gen -- TODO: Check!
|
|
};
|
|
adv=icomp.adv ;
|
|
verb=selectCopula icomp.cop ;
|
|
dep=[] ;
|
|
a=np.a
|
|
} ;
|
|
|
|
-- : Prep -> IP -> IAdv ; -- with whom
|
|
PrepIP prep ip = {s=applyIPronPrep prep ip} ;
|
|
|
|
-- : IP -> Adv -> IP
|
|
AdvIP ip adv = appendToIP (ip ** {a=ip.a}) adv.s ;
|
|
|
|
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
|
AdvIAdv = cc2 ;
|
|
|
|
-- : IAdv -> IComp ; -- where (is it)
|
|
CompIAdv iadv = {
|
|
s=\\a=>[] ;
|
|
adv=iadv.s ;
|
|
cop=EllCopula -- ???
|
|
} ;
|
|
|
|
-- : IP -> IComp ; -- who (is it)
|
|
CompIP ip = {
|
|
s=\\a=>ip.nom ; -- ???
|
|
adv=[] ;
|
|
cop=EllCopula -- ???
|
|
} ;
|
|
|
|
-- : IDet -> CN -> IP ; -- which five songs
|
|
IdetCN idet cn = caseTableToRecord (\\cas => idet.s ! cn.g ! cn.anim ! cas
|
|
++ cn.s ! animNumSizeNum cn.anim cas idet.size ! numSizeCase cas idet.size)
|
|
(Ag (gennum cn.g (forceMaybeNum cn.mayben (numSizeNumber idet.size))) P3) cn.anim ;
|
|
|
|
-- : IDet -> IP ; -- which five
|
|
IdetIP idet = caseTableToRecord (\\cas => idet.s ! idet.g ! Inanimate ! cas)
|
|
(Ag (gennum idet.g (numSizeNumber idet.size)) P3) Inanimate ;
|
|
|
|
-- : IQuant -> Num -> IDet ; -- which (five)
|
|
IdetQuant iq num = {
|
|
s=\\g,a,cas => iq.s ! gennum g (numSizeNumber num.size) ! a ! cas ++ num.s ! iq.g ! a ! cas ;
|
|
size=num.size ;
|
|
g=iq.g ;
|
|
c=iq.c
|
|
} ;
|
|
|
|
}
|