mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-11 08:06:34 -06:00
152 lines
4.1 KiB
Plaintext
152 lines
4.1 KiB
Plaintext
concrete QuestionMay of Question = CatMay ** open
|
|
Prelude, ResMay, ParadigmsMay, (VS=VerbMay), (NM=NounMay), (SS=StructuralMay) in {
|
|
|
|
-- A question can be formed from a clause ('yes-no question') or
|
|
-- with an interrogative.
|
|
|
|
-- Interrogative pronouns can be formed with interrogative
|
|
-- determiners, with or without a noun.
|
|
lin
|
|
-- : IDet -> CN -> IP ; -- which five songs
|
|
IdetCN idet cn = NM.DetCN idet cn ** {
|
|
sp = \\nf => idet.sp ! nf ++ cn.s ! nf
|
|
} ;
|
|
|
|
-- : IDet -> IP ; -- which five
|
|
IdetIP idet = NM.DetNP idet ** {sp = idet.sp};
|
|
|
|
-- : IQuant -> Num -> IDet ; -- which (five)
|
|
IdetQuant iquant num = iquant ** {
|
|
pr = num.s ++ case iquant.isPre of {True => iquant.s ; False => [] } ;
|
|
-- if isPre is True, then: "berapa kucing"
|
|
s = case iquant.isPre of { False => iquant.s ; True => [] };
|
|
-- if isPre is False, use s: "kucing berapa"
|
|
n = num.n ;
|
|
count = "" ;
|
|
} ;
|
|
|
|
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
|
QuestSlash ip cls = cls ** {
|
|
pred = \\vf,pol => cls.pred ! vf ! pol ++ ip.s ! Bare
|
|
} ;
|
|
|
|
-- : Subj -> Pred -> QCl ;
|
|
-- QuestCl cl = cl ** {
|
|
-- pred = \\vf,pol => cl.pred ! vf ! pol
|
|
-- };
|
|
QuestCl cl = cl ** {
|
|
subj = "adakah" ++ cl.subj;
|
|
} ;
|
|
|
|
-- missing record fields: pred type of vp
|
|
|
|
-- : IP -> VP -> QCl ;
|
|
-- expected: ParamMay.VForm => ParamX.Polarity => Str
|
|
-- inferred: {s : ParamMay.VForm => ParamX.Polarity => Str}
|
|
|
|
QuestVP ip cl = cl ** {
|
|
pred = \\vf,pol => cl.s ! vf ! pol;
|
|
subj = ip.s ! Bare ;
|
|
};
|
|
|
|
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
|
QuestIAdv iadv cls = {
|
|
subj = case iadv.isPre of {
|
|
True => iadv.s ++ cls.subj ; False => cls.subj
|
|
} ;
|
|
pred = \\vf,pol => case iadv.isPre of {
|
|
True => cls.pred ! iadv.vf ! pol ;
|
|
False => cls.pred ! iadv.vf ! pol ++ iadv.s
|
|
} ;
|
|
} ;
|
|
|
|
-- : IP -> IComp ;
|
|
CompIP ip = {s = ip.s ! Bare } ; -- who (is it)
|
|
|
|
-- : IComp -> NP -> QCl ; -- where is John?
|
|
QuestIComp icomp np = {
|
|
pred = \\vf,pol => np.s ! Bare ;
|
|
subj = icomp.s ;
|
|
} ;
|
|
|
|
-- \\vf,pol,posadv =>
|
|
-- {
|
|
-- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol;
|
|
-- } ;
|
|
|
|
{- ----
|
|
s = \\t,a,p =>
|
|
let
|
|
cl = oldClause slash ;
|
|
cls : Direct -> Str =
|
|
\d -> cl.s ! d ! t ! a ! p ! Indic ;
|
|
---- \d -> cl.s ! ip.a ! d ! t ! a ! p ! Indic ;
|
|
who = slash.c2.s ++ ip.s ! slash.c2.c
|
|
in table {
|
|
QDir => who ++ cls DInv ;
|
|
QIndir => who ++ cls DDir
|
|
}
|
|
-}
|
|
|
|
{-
|
|
lin
|
|
|
|
|
|
|
|
|
|
|
|
-- : IComp -> NP -> QCl ; -- where is John?
|
|
QuestIComp icomp np =
|
|
|
|
|
|
-- Interrogative pronouns can be formed with interrogative
|
|
-- determiners, with or without a noun.
|
|
|
|
-- : IDet -> CN -> IP ; -- which five songs
|
|
IdetCN idet cn = {contractSTM = False} ** NS.DetCN idet cn ;
|
|
|
|
-- : IDet -> IP ; -- which five
|
|
IdetIP idet = {contractSTM = False} ** NS.DetNP idet ;
|
|
|
|
-- They can be modified with adverbs.
|
|
-- : IP -> Adv -> IP ; -- who in Paris
|
|
--AdvIP = NS.AdvNP ;
|
|
|
|
-- Interrogative quantifiers have number forms and can take number modifiers.
|
|
|
|
-- : IQuant -> Num -> IDet ; -- which (five)
|
|
IdetQuant = NS.DetQuant ;
|
|
|
|
-- Interrogative adverbs can be formed prepositionally.
|
|
-- : Prep -> IP -> IAdv ; -- with whom
|
|
PrepIP prep ip = SS.prepIP prep (ip.s ! Abs) False ;
|
|
|
|
-- They can be modified with other adverbs.
|
|
|
|
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
|
-- AdvIAdv iadv adv =
|
|
|
|
-- Interrogative complements to copulas can be both adverbs and
|
|
-- pronouns.
|
|
|
|
-- : IAdv -> IComp ;
|
|
CompIAdv iadv = iadv ; -- where (is it)
|
|
|
|
|
|
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
|
|
|
-- Wh questions with two or more question words require a new, special category.
|
|
|
|
cat
|
|
QVP ; -- buy what where
|
|
fun
|
|
ComplSlashIP : VPSlash -> IP -> QVP ; -- buys what
|
|
AdvQVP : VP -> IAdv -> QVP ; -- lives where
|
|
AddAdvQVP : QVP -> IAdv -> QVP ; -- buys what where
|
|
|
|
QuestQVP : IP -> QVP -> QCl ; -- who buys what where
|
|
-}
|
|
|
|
|
|
}
|