This commit is contained in:
janna
2006-06-22 11:17:01 +00:00
parent 47a3d736a6
commit 84b70bdd72
11 changed files with 209 additions and 170 deletions

View File

@@ -1196,8 +1196,8 @@ oper odinDet: Adjective = {s = table {
AF Gen _ APl => "одних";
AF Inst _ (ASg Masc) => "одним";
AF Inst _ (ASg Fem) => "одной";
AF Inst _ (ASg Neut) => "одним";
AF Inst _ APl => "одними";
AF Inst _ (ASg Neut) => "одним";
AF Inst _ APl => "одними";
AF Dat _ (ASg Masc) => "одному";
AF Dat _ (ASg Fem) => "одной";
AF Dat _ (ASg Neut) => "одному";
@@ -1227,7 +1227,7 @@ oper etotDet: Adjective = {s = table {
AF Inst _ (ASg Masc) => "этим";
AF Inst _ (ASg Fem) => "этой";
AF Inst _ (ASg Neut) => "этим";
AF Inst _ APl => "этими";
AF Inst _ APl => "этими";
AF Dat _ (ASg Masc) => "этому";
AF Dat _ (ASg Fem) => "этой";
AF Dat _ (ASg Neut) => "этому";
@@ -1257,37 +1257,37 @@ oper vesDet: Adjective = {s = table {
AF Inst _ (ASg Masc) => "всем";
AF Inst _ (ASg Fem) => "всей";
AF Inst _ (ASg Neut) => "всем";
AF Inst _ APl => "всеми";
AF Inst _ APl => "всеми";
AF Dat _ (ASg Masc) => "ему";
AF Dat _ (ASg Fem) => "ей";
AF Dat _ (ASg Neut) => "ему";
AF Dat _ APl => "всем";
AF Prepos _ (ASg Masc) => "всём";
AF Prepos _ (ASg Fem) => "всей";
AF Prepos _ (ASg Neut) => "всём";
AF Prepos _ APl => "всех" ;
AdvF => "полностью"
}
} ;
oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
AF Nom _ (ASg Masc) => Prelude.glue s "ый";
AF Nom _ (ASg Fem) => Prelude.glue s "ая";
AF Nom _ (ASg Neut) => Prelude.glue s "ое";
AF Nom _ APl => Prelude.glue s "ые";
AF Acc Inanimate (ASg Masc) => Prelude.glue s "ый";
AF Acc Animate (ASg Masc) => Prelude.glue s "ого";
AF Acc _ (ASg Fem) => Prelude.glue s "ую";
AF Acc _ (ASg Neut) => Prelude.glue s "ое";
AF Acc Inanimate APl => Prelude.glue s "ые";
AF Acc Animate APl => Prelude.glue s "ых";
AF Gen _ (ASg Masc) => Prelude.glue s "ого";
AF Gen _ (ASg Fem) => Prelude.glue s "ой";
AF Gen _ (ASg Neut) => Prelude.glue s "ого";
AF Gen _ APl => Prelude.glue s "ых";
AF Inst _ (ASg Masc) => Prelude.glue s "ым";
AF Inst _ (ASg Fem) => Prelude.glue s "ой";
AF Inst _ (ASg Neut) => Prelude.glue s "ым";
AF Inst _ APl => Prelude.glue s "ыми";
AF Dat _ APl => "всем";
AF Prepos _ (ASg Masc) => "всём";
AF Prepos _ (ASg Fem) => "всей";
AF Prepos _ (ASg Neut) => "всём";
AF Prepos _ APl => "всех" ;
AdvF => "полностью"
}
} ;
oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
AF Nom _ (ASg Masc) => s+ "ый";
AF Nom _ (ASg Fem) => s + "ая";
AF Nom _ (ASg Neut) => s + "ое";
AF Nom _ APl => s + "ые";
AF Acc Inanimate (ASg Masc) => s + "ый";
AF Acc Animate (ASg Masc) => s + "ого";
AF Acc _ (ASg Fem) => s + "ую";
AF Acc _ (ASg Neut) => s + "ое";
AF Acc Inanimate APl => s + "ые";
AF Acc Animate APl => s + "ых";
AF Gen _ (ASg Masc) => s + "ого";
AF Gen _ (ASg Fem) => s + "ой";
AF Gen _ (ASg Neut) => s + "ого";
AF Gen _ APl => s + "ых";
AF Inst _ (ASg Masc) => s + "ым";
AF Inst _ (ASg Fem) => s + "ой";
AF Inst _ (ASg Neut) => s + "ым";
AF Inst _ APl => s + "ыми";
AF Dat _ (ASg Masc) => s + "ому";
AF Dat _ (ASg Fem) => s + "ой";
AF Dat _ (ASg Neut) => s + "ому";
@@ -1317,7 +1317,7 @@ oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
AF Inst _ (ASg Masc) => s+"ьим";
AF Inst _ (ASg Fem) => s+"ьей";
AF Inst _ (ASg Neut) => s+"ьим";
AF Inst _ APl => s+"ьими";
AF Inst _ APl => s+"ьими";
AF Dat _ (ASg Masc) => s+"ьему";
AF Dat _ (ASg Fem) => s+"ьей";
AF Dat _ (ASg Neut) => s+"ьему";
@@ -1348,7 +1348,7 @@ oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
-- AF Inst _ (ASg Masc) => s+"им";
-- AF Inst _ (ASg Fem) => s+"ей";
-- AF Inst _ (ASg Neut) => s+"им";
-- AF Inst _ APl => s+"ими";
-- AF Inst _ APl => s+"ими";
-- AF Dat _ (ASg Masc) => s+"ему";
-- AF Dat _ (ASg Fem) => s+"ей";
-- AF Dat _ (ASg Neut) => s+"ему";
@@ -1388,7 +1388,7 @@ oper ij_EndK_G_KH_Decl : Str -> Adjective = \s ->{s = table {
AF Inst _ (ASg Masc) => s+"им";
AF Inst _ (ASg Fem) => s+"ой";
AF Inst _ (ASg Neut) => s+"им";
AF Inst _ APl => s+"ими";
AF Inst _ APl => s+"ими";
AF Dat _ (ASg Masc) => s+"ому";
AF Dat _ (ASg Fem) => s+"ой";
AF Dat _ (ASg Neut) => s+"ому";
@@ -1418,7 +1418,7 @@ oper shij_End_Decl : Str -> Adjective = \s ->{s = table {
AF Inst _ (ASg Masc) => s+"им";
AF Inst _ (ASg Fem) => s+"ей";
AF Inst _ (ASg Neut) => s+"им";
AF Inst _ APl => s+"ими";
AF Inst _ APl => s+"ими";
AF Dat _ (ASg Masc) => s+"ему";
AF Dat _ (ASg Fem) => s+"ей";
AF Dat _ (ASg Neut) => s+"ему";
@@ -1430,7 +1430,7 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
AdvF => s + "о"
}
} ;
--oper bolshoj: AdjDegr = mkAdjDeg (i_oj_EndDecl "больш" []) "больше";
--oper dorogoj: AdjDegr = mkAdjDeg (i_oj_EndDecl "дорог" []) "дороже";
oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
@@ -1439,7 +1439,8 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
AF Nom _ (ASg Neut) => s+"ое"+ chastica ;
AF Nom _ APl => s+"ие"+ chastica ;
AF Acc Animate (ASg Masc) => s+"ого"+ chastica ;
AF Acc Inanimate (ASg Masc) => s+"ое"+ chastica ;
AF Acc Inanimate (ASg Masc) => s+"ой"+ chastica ;
AF Acc _ (ASg Fem) => s+"ую"+ chastica ;
AF Acc _ (ASg Neut) => s+"ое"+ chastica ;
AF Acc Animate APl => s+"их"+ chastica ;
AF Acc Inanimate APl => s+"ие"+ chastica ;
@@ -1450,7 +1451,7 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
AF Inst _ (ASg Masc) => s+"им"+ chastica ;
AF Inst _ (ASg Fem) => s+"ой"+ chastica ;
AF Inst _ (ASg Neut) => s+"им"+ chastica ;
AF Inst _ (ASg Neut) => s+"им"+ chastica ;
AF Inst _ APl => s+"ими"+ chastica ;
AF Dat _ (ASg Masc) => s+"ому"+ chastica ;
AF Dat _ (ASg Fem) => s+"ой"+ chastica ;
@@ -1482,7 +1483,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
AF Gen _ APl => s+"ых";
AF Inst _ (ASg Masc) => s+"ым";
AF Inst _ (ASg Fem) => s+"ой";
AF Inst _ (ASg Neut) => s+"ым";
AF Inst _ (ASg Neut) => s+"ым";
AF Inst _ APl => s+"ыми";
AF Dat _ (ASg Masc) => s+"ому";
AF Dat _ (ASg Fem) => s+"ой";
@@ -1493,7 +1494,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
AF Prepos _ (ASg Neut) => s+"ом";
AF Prepos _ APl => s+"ых";
AdvF => s + "о"
}
}
} ;
--oper prostuzhen: Adjective = shortDecl1 "простужен" ;
--oper beremenen: Adjective = shortDecl "беремен" ;
@@ -1501,7 +1502,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
--oper shortDecl1 : Str -> Adjective = \s ->{s = table {
-- AF _ _ (ASg Masc) => s;
-- AF _ _ (ASg Fem) => s+"а";
-- AF _ _ (ASg Neut) => s+"о";
-- AF _ _ (ASg Neut) => s+"о";
-- AF _ _ APl => s+"ы" ;
-- AdvF => s + "о"
-- }
@@ -1522,13 +1523,14 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
--
---- 2 Verbs
--
---- Dummy verbum "have" that corresponds to the phrases like
---- "I have a headache" in English. The corresponding sentence
---- in Russian doesn't contain a verb:
---- in Russian doesn't contain a verb:
--
--oper have: Verbum = {s=\\ vf => "-" ; asp = Imperfective} ;
--
---- There are two common conjugations
---- There are two common conjugations
---- (according to the number and the person of the subject)
---- patterns in the present tense in the indicative mood.
--
param Conjugation = First | FirstE | Second | Mixed | Dolzhen;
@@ -1537,26 +1539,33 @@ oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "ид
--3 First conjugation (in Present) verbs :
oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "иди" "идти";
--oper verbGulyat : Verbum = verbDecl Imperfective First "гуля" "ю" "гулял" "гуляй" "гулять";
--oper verbGulyat : Verbum = verbDecl Imperfective First "гуля" "ю" "гулял" "гуляй" "гулять";
--oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать";
--oper verbVkluchat : Verbum = verbDecl Imperfective First "включа" "ю" "включал" "включай" "включать";
oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать";
--oper verbVukluchat : Verbum = verbDecl Imperfective First "выключа" "ю" "выключал" "выключай" "выключать";
--oper verbZhdat : Verbum = verbDecl Imperfective First "жд" "у" "ждал" "жди" "ждать" ;
--oper verbBegat : Verbum = verbDecl Imperfective First "бега" "ю" "бегал" "бегай" "бегать";
--oper verbPrinimat : Verbum = verbDecl Imperfective First "принима" "ю" "принимал" "принимай" "принимать";
--oper verbDokazuvat : Verbum = verbDecl Imperfective First "доказыва" "ю" "доказывал" "доказывай" "доказывать";
--oper verbPredpochitat : Verbum = verbDecl Imperfective First "предпочита" "ю" "предпочитал" "предпочитай" "предпочитать";
--oper verbOtpravlyat : Verbum = verbDecl Imperfective First "отправля" "ю" "отправлял" "отправляй" "отправлять";
--oper verbSlomat : Verbum = verbDecl Perfective First "слома" "ю" "сломал" "сломай" "сломать";
---- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink) :
--oper verbDavat : Verbum = verbDecl Imperfective FirstE "да" "ю" "давал" "давай" "давать";
--oper verbPit : Verbum = verbDecl Imperfective FirstE "пь" "ю" "пил" "пей" "пить";
--
oper verbByut : Verbum = verbDecl Perfective First "буд" "у" "был" "будь" "быть";
oper verbMoch : Verbum = verbDeclMoch Imperfective First "мог" "у" "мог" "моги" "мочь" "мож";
----3 Second conjugation (in Present) verbs :
--
--oper verbLubit : Verbum = verbDecl Imperfective Second "люб" "лю" "любил" "люби" "любить";
--oper verbGovorit : Verbum = verbDecl Imperfective Second "говор" "ю" "говорил" "говори" "говорить";
--
--oper verbBolet_2 : Verbum = verbDecl Imperfective Second "бол" "ю" "болел" "боли" "болеть";
--oper verbPoranit : Verbum = verbDecl Perfective Second "поран" "ю" "поранил" "порань" "поранить";
@@ -1595,7 +1604,7 @@ oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
PRF (ASg Masc) P3 => del+ sgP1End ;
PRF (ASg Fem) P3 => del+ "на" ;
PRF (ASg Neut) P3 => del+ "но" };
PRF (ASg Fem) P3 => del+ "на" ;
oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
table {
PRF (ASg _) P1 => del+ sgP1End ;
@@ -1623,7 +1632,7 @@ oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
PRF APl P1 => del+ "ём" ;
PRF APl P2 => del+ "ёте" ;
PRF APl P3 => del+ sgP1End + "т"
PRF APl P2 => del+ "ёте" ;
};
oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
table {
PRF (ASg _) P1 => del+ sgP1End ;
@@ -1708,10 +1717,10 @@ oper mkPassive: AspectVoice -> PastVerb -> AspectVoice = \av, pv ->
-- vowels : Strs = strs {
-- "а" ; "е" ; "ё" ; "и" ; "о" ; "у" ;
-- vowels : Strs = strs {
-- "а" ; "е" ; "ё" ; "и" ; "о" ; "у" ;
-- "ы" ; "э" ; "ю" ; "я"
-- } ;
-- "ы" ; "э" ; "ю" ; "я"
-- } ;
--
oper mkPassive: AspectVoice -> PastVerb -> AspectVoice = \av, pv ->
{ s = table {
VINF => av.s ! VINF + "ся";
VIMP Sg P1 => av.s ! (VIMP Sg P1) +"сь" ;
@@ -1743,28 +1752,28 @@ oper
VIND (ASg Masc) VPast => av.s ! (VIND (ASg Masc) VPast ) + "ся";
VIND (ASg Fem) VPast => av.s ! (VIND (ASg Fem) VPast ) + "сь";
VIND (ASg Neut) VPast => av.s ! (VIND (ASg Neut) VPast) + "сь";
VIND (ASg Fem) VPast => av.s ! (VIND (ASg Fem) VPast ) + "сь";
VIND (ASg Neut) VPast => av.s ! (VIND (ASg Neut) VPast) + "сь";
VIND APl VPast => av.s ! (VIND APl VPast ) + "сь"
} ;
asp = av.asp
};
asp = av.asp
};
-- Generation the imperfective active pattern given
-- a number of basic conjugation forms.
-- Generation the imperfective active pattern given
-- a number of basic conjugation forms.
oper
imperfectiveActivePattern : Str -> Str -> PresentVerb -> PastVerb -> AspectVoice =
\inf, imper, presentFuture, past -> { s= table {
VINF => inf ;
VIMP Sg P1 => "давайте" ++ inf ;
VIMP Pl P1 => "давайте" ++ inf ;
VIMP Sg P2 => imper ;
VIMP Pl P2 => imper+"те" ;
VIMP Sg P2 => imper ;
VIMP Pl P2 => imper+"те" ;
VIMP Sg P3 => ["пускай "] + presentFuture ! (PRF (ASg Masc) P3) ;
VIMP Pl P3 => ["пускай "] + presentFuture ! (PRF APl P3) ;
VSUB (ASg Masc) => past ! (PSF (ASg Masc)) +[" бы"];
VSUB (ASg Fem) => past ! (PSF (ASg Fem)) +[" бы"];
VIMP Sg P3 => "пусть" ++ presentFuture ! (PRF (ASg Masc) P3) ;
VIMP Pl P3 => "пусть" ++ presentFuture ! (PRF APl P3) ;
VSUB (ASg Masc) => past ! (PSF (ASg Masc)) ++"бы";
VSUB (ASg Fem) => past ! (PSF (ASg Fem)) ++"бы";
VSUB (ASg Neut) => past ! (PSF (ASg Neut) )++"бы";
VSUB APl => past ! (PSF APl) ++"бы";
VIND (ASg _) (VPresent P1) => presentFuture ! ( PRF (ASg Masc) P1);
VIND (ASg _) (VPresent P2) => presentFuture! (PRF (ASg Masc) P2) ;
VIND (ASg _) (VPresent P3) => presentFuture ! (PRF (ASg Masc) P3) ;
@@ -1776,17 +1785,17 @@ oper
VIND (ASg _) (VFuture P3) => "будет" ++ inf ;
VIND APl (VFuture P1) => "будем" ++ inf ;
VIND APl (VFuture P2) => "будете" ++ inf ;
VIND APl (VFuture P1) => ["будем "] + presentFuture ! (PRF APl P1) ;
VIND APl (VFuture P2) => ["будете "] + presentFuture ! (PRF APl P2) ;
VIND APl (VFuture P3) => "будут" ++ inf ;
VIND (ASg Masc) VPast => past ! (PSF (ASg Masc)) ;
VIND (ASg Fem) VPast => past ! (PSF (ASg Fem) ) ;
VIND (ASg Neut) VPast => past ! (PSF (ASg Neut)) ;
VIND (ASg Fem) VPast => past ! (PSF (ASg Fem) ) ;
VIND (ASg Neut) VPast => past ! (PSF (ASg Neut)) ;
VIND APl VPast => past ! (PSF APl)
} ;
VIND APl VPast => past ! (PSF APl)
} ;
asp = Imperfective
} ;
} ;
oper perfectiveActivePattern: Str -> Str -> PresentVerb -> PastVerb -> AspectVoice =
\inf, imper, presentFuture, past -> { s= table {
VINF => inf ;
VIMP Sg P1 => "давайте"++ presentFuture ! (PRF (ASg Masc) P1);
VIMP Pl P1 => "давайте" ++ presentFuture ! (PRF APl P1);