Files
gf-rgl/src/russian/AdjectiveRus.gf
T
2020-08-14 21:00:25 +03:00

62 lines
2.4 KiB
Plaintext

concrete AdjectiveRus of Adjective = CatRus ** open ResRus, Prelude, Coordination in {
lin
-- : A -> AP ; -- warm - тёплый
PositA a = adjFormsAdjective a ** {isPost = a.p} ;
-- : A2 -> AP ; -- married
UseA2 a = adjFormsAdjective a ** {isPost = False} ;
-- : A -> AP ; -- warmer - теплее
UseComparA a = adjFormsAdjective (immutableAdjForms a.comp)
** {isPost = a.p; preferShort = PrefShort} ; -- TODO: non-qual
-- : AP -> Adv -> AP ; -- warm by nature
AdvAP ap adv = ap ** {
s = \\gn,a,c => adv.s ++ ap.s ! gn ! a ! c ;
short=\\a => adv.s ++ ap.short ! a ;
isPost = False
} ;
-- : AdA -> AP -> AP ;
AdAP ada ap = ap ** {
s=\\gn,anim,c => ada.s ++ ap.s ! gn ! anim ! c ;
short=\\a => ada.s ++ ap.short ! a
} ;
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
CAdvAP cadv ap np = ap ** {
s = \\gn,anim,c => cadv.s ++ ap.s ! gn ! anim ! c ++ embedInCommas (cadv.p ++ np.s ! Nom) ;
short = \\a => cadv.s ++ ap.short ! a ++ embedInCommas (cadv.p ++ np.s ! Nom)
} ;
-- : AP -> SC -> AP ; -- good that she is here
SentAP ap sc = ap ** {
s = \\gn,anim,c => ap.s ! gn ! anim ! c ++ sc.s ;
short = \\a => ap.short ! a ++ sc.s ;
preferShort = PrefShort ;
isPost = True
} ;
-- : A -> NP -> AP ; -- warmer than I - теплее меня
ComparA a np = {
s = \\gn,anim,cas => a.comp ++ (applyPrep {s="" ; c=Gen ; neggen=True ; hasPrep=False} np) ; -- True?
short = \\ag=>a.comp ++ (applyPrep {s="" ; c=Gen ; neggen=True ; hasPrep=False} np) ;
isPost = False ;
preferShort = PrefShort
} ;
-- : Ord -> AP ; -- warmest
AdjOrd ord = adjFormsAdjective ord ** {isPost = False; preferShort = PreferFull} ;
-- : A2 -> NP -> AP ; -- married to him - замужем за ним (NB: gender change requires different word!)
ComplA2 a2 np = let af=adjFormsAdjective a2 in {
s = \\gn,anim,cas => af.s ! gn ! anim ! (a2.c.c) ++ applyPrep a2.c np ;
short = \\a=>af.short ! a ++ applyPrep a2.c np ;
isPost = False ;
preferShort = a2.preferShort
} ;
-- : A2 -> AP ; -- married to itself - замужем за собой
ReflA2 a2 = let af=adjFormsAdjective a2 in {
s = \\gn,anim,cas => af.s ! gn ! anim ! cas ++ a2.c.s ++ sebya.s ! (a2.c.c) ;
short = \\a=>af.short ! a ++ a2.c.s ++ sebya.s ! (a2.c.c) ;
isPost = False ;
preferShort = a2.preferShort
} ;
}