diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index f607487cc..2503250cc 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -290,6 +290,87 @@ oper } ; } ; + compoundN = overload { + compoundN : A -> N -> N + = \a, n -> applyMaybeNumber + {snom = case n.g of { + Fem => preOrPost (notB a.p) a.fsnom n.snom ; + Masc => preOrPost (notB a.p) a.msnom n.snom ; + Neut => preOrPost (notB a.p) a.nsnom n.snom + } ; + sgen = case n.g of { + Fem => preOrPost (notB a.p) a.fsgen n.sgen ; + _ => preOrPost (notB a.p) a.msgen n.sgen + } ; + sdat = case n.g of { + Fem => preOrPost (notB a.p) a.fsgen n.sdat ; + _ => preOrPost (notB a.p) a.msdat n.sdat + } ; + sacc = case n.g of { + Fem => preOrPost (notB a.p) a.fsacc n.sacc ; + Masc => case n.anim of { + Inanimate => preOrPost (notB a.p) a.msnom n.sacc ; + Animate => preOrPost (notB a.p) a.msgen n.sacc + } ; + Neut => preOrPost (notB a.p) a.nsnom n.sacc + } ; + sins = case n.g of { + Fem => preOrPost (notB a.p) a.fsins n.sins ; + _ => preOrPost (notB a.p) a.msins n.sins + } ; + sprep= case n.g of { + Fem => preOrPost (notB a.p) a.fsgen n.sprep ; + _ => preOrPost (notB a.p) a.msprep n.sprep + } ; + sloc = case n.g of { + Fem => preOrPost (notB a.p) a.fsgen n.sloc ; + _ => preOrPost (notB a.p) a.msprep n.sloc + } ; + sptv = case n.g of { + Fem => preOrPost (notB a.p) a.fsgen n.sptv ; + _ => preOrPost (notB a.p) a.msgen n.sptv + } ; + svoc = case n.g of { + Fem => preOrPost (notB a.p) a.fsnom n.svoc ; + Masc => preOrPost (notB a.p) a.msnom n.svoc ; + Neut => preOrPost (notB a.p) a.nsnom n.svoc + } ; + pnom = preOrPost (notB a.p) a.pnom n.pnom ; + pgen = preOrPost (notB a.p) a.pgen n.pgen ; + pdat = preOrPost (notB a.p) a.msins n.pdat ; + pacc = case n.anim of { + Inanimate => preOrPost (notB a.p) a.pnom n.pacc ; + Animate => preOrPost (notB a.p) a.pgen n.pacc + } ; + pins = preOrPost (notB a.p) a.pins n.pins ; + pprep= preOrPost (notB a.p) a.pgen n.sprep ; + anim=n.anim; + mayben=n.mayben ; + g=n.g ; + rel=(guessAdjectiveForms "") ; + rt=GenType + } ; + + compoundN : N -> Str -> N + = \n, adv -> n ** { + snom = n.snom ++ adv; + sgen = n.sgen ++ adv; + sdat = n.sdat ++ adv; + sacc = n.sacc ++ adv; + sins = n.sins ++ adv; + sprep = n.sprep ++ adv; + sloc = n.sloc ++ adv; + sptv = n.sptv ++ adv; + svoc = n.svoc ++ adv; + pnom = n.pnom ++ adv; + pgen = n.pgen ++ adv; + pdat = n.pdat ++ adv; + pacc = n.pacc ++ adv; + pins = n.pins ++ adv; + pprep = n.pprep ++ adv + } ; + } ; + mkN2 = overload { mkN2 : N -> N2 = \n -> lin N2 (mkFun n nullPrep) ;