russian: reimplement pronYa and pronTu in terms of a common operation.

This commit is contained in:
bjorn
2008-06-23 18:01:27 +00:00
parent fac2e5cf13
commit 1bcdd06409

View File

@@ -18,83 +18,58 @@ resource MorphoRus = ResRus ** open Prelude, (Predef=Predef) in {
flags coding=utf8 ; flags coding=utf8 ;
----2 Personal (together with possesive) pronouns. ----2 Personal (together with possesive) pronouns.
oper pronYa: Pronoun =
oper pronYa : Pronoun =
let nonPoss = { s = table { Nom => "я" ;
Gen => "меня" ;
Dat => "мне" ;
Acc => "меня" ;
Inst => "мной" ;
Prepos _ => "мне" } }
in pronYaTu nonPoss "мо" P1 ;
oper pronTu : Pronoun =
let nonPoss = { s = table { Nom => "ты" ;
Gen => "тебя" ;
Dat => "тебе" ;
Acc => "тебя" ;
Inst => "тобой" ;
Prepos _ => "тебе" } }
in pronYaTu nonPoss "тво" P2 ;
-- Pronouns ya, tu, svoj
oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun =
\nonPoss, mo, pers ->
{ s = table { { s = table {
PF Nom _ NonPoss => "я" ; PF c _ NonPoss => nonPoss.s!c ;
PF Gen _ NonPoss => "меня" ; PF c _ (Poss gn) => case <c, gn> of {
PF Dat _ NonPoss => "мне" ; <Nom, ASg Neut > => mo + "ё" ;
PF Acc _ NonPoss => "меня" ; <Nom, ASg Masc > => mo + "й" ;
PF Inst _ NonPoss => "мной" ; <Gen, ASg (Masc | Neut)> => mo + "его" ;
PF (Prepos _) _ NonPoss => "мне" ; <Dat, ASg (Masc | Neut)> => mo + "ему" ;
PF Nom _ (Poss (ASg Masc)) => "мой" ; <Acc, ASg (Masc | Neut)> => mo + "его" ;
PF Gen _ (Poss (ASg Masc)) => "моего" ; <Inst, ASg (Masc | Neut)> => mo + "им" ;
PF Dat _ (Poss (ASg Masc)) => "моему" ; <Prepos _, ASg (Masc | Neut)> => mo + "ём" ;
PF Acc _ (Poss (ASg Masc)) => "моего" ;
PF Inst _ (Poss (ASg Masc)) => "моим" ; <Nom, ASg Fem> => mo + "я" ;
PF (Prepos _) _ (Poss (ASg Masc)) => "моём" ; <Gen, ASg Fem> => mo + "ей" ;
PF Nom _ (Poss (ASg Fem)) => "моя" ; <Dat, ASg Fem> => mo + "ей" ;
PF Gen _ (Poss (ASg Fem)) => "моей" ; <Acc, ASg Fem> => mo + "ю" ;
PF Dat _ (Poss (ASg Fem)) => "моей" ; <Inst, ASg Fem> => mo + "ей" ;
PF Acc _ (Poss (ASg Fem)) => "мою" ; <Prepos _, ASg Fem> => mo + "ей" ;
PF Inst _ (Poss (ASg Fem)) => "моею" ;
PF (Prepos _) _ (Poss (ASg Fem)) => "моей" ; <Nom, APl> => mo + "и" ;
PF Nom _ (Poss (ASg Neut)) => "моё" ; <Gen, APl> => mo + "их" ;
PF Gen _ (Poss (ASg Neut)) => "моего" ; <Dat, APl> => mo + "им" ;
PF Dat _ (Poss (ASg Neut)) => "моему" ; <Acc, APl> => mo + "их" ;
PF Acc _ (Poss (ASg Neut)) => "моё" ; <Inst, APl> => mo + "им" ;
PF Inst _ (Poss (ASg Neut)) => "моим" ; <Prepos _, APl> => mo + "их"
PF (Prepos _) _ (Poss (ASg Neut)) => "моём" ;
PF Nom _ (Poss APl) => "мои" ; }
PF Gen _ (Poss APl)=> "моих" ;
PF Dat _ (Poss APl) => "моим" ;
PF Acc _ (Poss APl) => "моих" ;
PF Inst _ (Poss APl) => "моими" ;
PF (Prepos _) _ (Poss APl) => "моих"
} ; } ;
g = PNoGen ; g = PNoGen ; n = Sg ; p = pers ; pron = True
n = Sg ;
p = P1 ;
pron = True
} ; } ;
oper pronTu: Pronoun =
{ s = table {
PF Nom _ NonPoss => "ты" ;
PF Gen _ NonPoss => "тебя" ;
PF Dat _ NonPoss => "тебе" ;
PF Acc _ NonPoss => "тебя" ;
PF Inst _ NonPoss => "тобой" ;
PF (Prepos _) _ NonPoss => ["о тебе"] ;
PF Nom _ (Poss (ASg Masc)) => "твой" ;
PF Gen _ (Poss (ASg Masc)) => "твоего" ;
PF Dat _ (Poss (ASg Masc)) => "твоему" ;
PF Acc _ (Poss (ASg Masc)) => "твоего" ;
PF Inst _ (Poss (ASg Masc)) => "твоим" ;
PF (Prepos _) _ (Poss (ASg Masc)) => "твоём" ;
PF Nom _ (Poss (ASg Fem)) => "твоя" ;
PF Gen _ (Poss (ASg Fem)) => "твоей" ;
PF Dat _ (Poss (ASg Fem)) => "твоей" ;
PF Acc _ (Poss (ASg Fem)) => "твою" ;
PF Inst _ (Poss (ASg Fem)) => "твоею" ;
PF (Prepos _) _ (Poss (ASg Fem)) => "твоей" ;
PF Nom _ (Poss (ASg Neut)) => "твоё" ;
PF Gen _ (Poss (ASg Neut)) => "твоего" ;
PF Dat _ (Poss (ASg Neut)) => "твоему" ;
PF Acc _ (Poss (ASg Neut)) => "твоё" ;
PF Inst _ (Poss (ASg Neut)) => "твоим" ;
PF (Prepos _) _ (Poss (ASg Neut)) => "твоём" ;
PF Nom _ (Poss APl) => "твои" ;
PF Gen _ (Poss APl)=> "твоих" ;
PF Dat _ (Poss APl) => "твоим" ;
PF Acc _ (Poss APl) => "твоих" ;
PF Inst _ (Poss APl) => "твоими" ;
PF (Prepos _) _ (Poss APl) => "твоих"
} ;
g = PNoGen ;
n = Sg ;
p = P2 ;
pron = True
} ;
oper pronOn: Pronoun = oper pronOn: Pronoun =
{ s = table { { s = table {