concrete StructuralRus of Structural = CatRus ** open ParadigmsRus, ResRus, MorphoRus, (X = ConstructX), Coordination, Prelude in { lin i_Pron = personalPron (Ag MSg P1) ; we_Pron = personalPron (Ag GPl P1) ; youSg_Pron = personalPron (Ag MSg P2) ; youPl_Pron = personalPron (Ag GPl P2) ; youPol_Pron = youPl_Pron ; he_Pron = personalPron (Ag MSg P3) ; she_Pron = personalPron (Ag FSg P3) ; it_Pron = personalPron (Ag NSg P3) ; they_Pron = personalPron (Ag GPl P3) ; whatSg_IP = what_sg ; whatPl_IP = what_pl ; whoSg_IP = who_sg ; whoPl_IP = who_pl ; -- : IQuant ; which_IQuant = (adjFormsAdjective (makeAdjectiveForms "который" "" "1a" PreferFull)) ** { preferShort=PreferFull ; g=Neut ; c=Nom } ; -- : Quant ; this_Quant = (adjFormsAdjective this_forms) ** { type=NormalDet ; preferShort=PreferFull ; g=Neut ; c=Nom } ; -- : Quant ; that_Quant = (adjFormsAdjective that_forms) ** { type=NormalDet ; preferShort=PreferFull ; g=Neut ; c=Nom } ; -- : Quant ; no_Quant = (adjFormsAdjective (makeAdjectiveForms "никакой" "" "3b" PreferFull)) ** { type=NormalDet ; preferShort=PreferFull ; g=Neut ; c=Nom } ; above_Prep = mkPrep above_prep_ins_mod Ins ; after_Prep = mkPrep "после" Gen ; before_Prep = mkPrep "перед" Ins ; behind_Prep = mkPrep "за" Ins ; between_Prep = mkPrep "между" Ins ; by8agent_Prep = mkPrep ["с помощью"] Gen ; by8means_Prep = mkPrep ["с помощью"] Gen ; during_Prep = mkPrep "в течение" Gen ; except_Prep = mkPrep ["за исключением"] Gen ; -- fix n for_Prep = mkPrep "для" Gen ; from_Prep = mkPrep ot_prep_gen_mod Gen ; in8front_Prep = mkPrep "перед" Ins ; in_Prep = mkPrep v_prep_mod Loc ; on_Prep = mkPrep "на" Loc ; part_Prep = {s="" ; c=Ptv ; neggen=False ; hasPrep=False } ; possess_Prep = {s="у" ; c=Gen ; neggen=False ; hasPrep=False} ; through_Prep = mkPrep "через" Acc ; to_Prep = mkPrep k_prep_dat_mod Dat ; under_Prep = mkPrep pod_prep_mod Ins ; without_Prep = mkPrep "без" Gen ; or_Conj = mkConj "или" Sg ; and_Conj = mkConj "и" Pl ; both7and_DConj = mkConj "как" (comma ++ "так и") Pl ; either7or_DConj = mkConj "либо" (comma ++ "либо") Sg ; if_then_Conj = mkConj "если" (comma ++ "то") Sg ; with_Prep = mkPrep s_prep_mod Ins ; please_Voc = ss "пожалуйста" ; everywhere_Adv = mkAdv "везде" ; here_Adv = mkAdv "здесь" ; here7to_Adv = mkAdv "сюда" ; here7from_Adv = mkAdv "отсюда" ; quite_Adv = mkAdv "довольно" ; somewhere_Adv = mkAdv "где-нибудь" ; there_Adv = mkAdv "там" ; there7to_Adv = mkAdv "туда" ; there7from_Adv = mkAdv "оттуда" ; how_IAdv = ss "как" ; how8much_IAdv = ss "сколько" ; when_IAdv = ss "когда" ; where_IAdv = ss "где" ; why_IAdv = ss "почему" ; so_AdA = ss "так"; less_CAdv = X.mkCAdv "менее" "чем" ; more_CAdv = X.mkCAdv "более" "чем" ; as_CAdv = X.mkCAdv "так же" "как и" ; -- requires short form adjective can8know_VV = {v=can; modal=\\a=>[]} ; can_VV = {v=can; modal=\\a=>[]} ; must_VV = {v=nullVerb; modal=adjFormsToShort (makeAdjectiveForms "должный" "" "1*a" PreferFull)} ; want_VV = {v=want; modal=\\a=>[]} ; -- : Det ; every_Det = { s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PreferFull)).s ! GSg g; type=NormalDet ; g = Masc ; c = Nom ; size = Num1 ; } ; -- : Det ; someSg_Det = { s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GSg g; type=NormalDet ; g = Masc ; c = Nom ; size = Num1 ; } ; -- : Det ; somePl_Det = { s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GPl; type=NormalDet ; g = Masc ; c = Nom ; size = NumAll ; } ; -- : Det ; few_Det = { s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PreferFull)).s ! GPl; type=NormalDet ; g = Masc ; c = Nom ; size = NumAll ; } ; -- : Det ; many_Det, much_Det = { s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PreferFull)).s ! GPl; type=NormalDet ; g = Neut ; c = Gen ; size = NumAll } ; only_Predet = (adjFormsAdjective (pronToAdj only_Pron)) ** {size=Num1} ; most_Predet = (makeAdjectiveFromNoun (nounFormsNoun (guessNounForms "большинство"))) ** {size=Num5} ; all_Predet = (adjFormsAdjective (pronToAdj all_Pron)) ** {size=NumAll}; not_Predet = (adjFormsAdjective (mkA "не" "" "0")) ** {size=Num1} ; how8many_IDet = { s=\\g,anim,cas => case of { <_,Nom|VocRus|Ptv> => "сколько" ; <_,Gen|Pre|Loc> => "скольких" ; <_,Dat> => "скольким" ; <_,Ins> => "сколькими" ; => "сколько" ; => "скольких" -- also as Nom? } ; g=Neut ; size=Num5 ; --it depends??? c=Gen --??? } ; almost_AdA = ss "почти" ; almost_AdN = ss "почти" ; always_AdV = ss "всегда" ; at_least_AdN = ss "по меньшей мере" ; at_most_AdN = ss "самое большее" ; too_AdA = ss "слишком" ; very_AdA = ss "очень" ; everybody_NP = lin NP everybody ; everything_NP = lin NP everything ; something_NP = lin NP something ; somebody_NP = lin NP somebody ; nothing_NP = lin NP nothing ; nobody_NP = lin NP nobody ; but_PConj = ss "но" ; otherwise_PConj = ss "иначе" ; therefore_PConj = ss "следовательно" ; although_Subj = ss "хотя" ; because_Subj = ss ["потому что"] ; if_Subj = ss "если" ; when_Subj = ss "когда" ; that_Subj = ss "что" ; -- TODO: ? have_V2 = dirV2 (mkV Imperfective "иметь" "имею" "имеет"); language_title_Utt = ss "русский" ; yes_Utt = ss ["да"] ; no_Utt = ss ["нет"] ; }