forked from GitHub/gf-rgl
Improvements of Russian Phrasebook that do not rely on Participles and Numerals
This commit is contained in:
@@ -122,6 +122,8 @@ abstract Structural = Cat ** {
|
|||||||
as_CAdv : CAdv ;
|
as_CAdv : CAdv ;
|
||||||
|
|
||||||
have_V2 : V2 ;
|
have_V2 : V2 ;
|
||||||
|
have_V3 : V3 ;
|
||||||
|
have_not_V3 : V3;
|
||||||
|
|
||||||
fun language_title_Utt : Utt ;
|
fun language_title_Utt : Utt ;
|
||||||
|
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ lin
|
|||||||
important_A = mkA "важный" ;
|
important_A = mkA "важный" ;
|
||||||
industry_N = mkN "промышленность" ;
|
industry_N = mkN "промышленность" ;
|
||||||
iron_N = mkN "железо" ;
|
iron_N = mkN "железо" ;
|
||||||
john_PN = mkPN "Иван" Masc Animate ;
|
john_PN = mkPN "Иван" Masc Sg Animate ;
|
||||||
jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
|
jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
|
||||||
kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ;
|
kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ;
|
||||||
king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ;
|
king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ;
|
||||||
@@ -211,7 +211,7 @@ lin
|
|||||||
paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ;
|
paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ;
|
||||||
--- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++
|
--- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++
|
||||||
paper_N = mkN "бумага" ;
|
paper_N = mkN "бумага" ;
|
||||||
paris_PN = mkPN "Париж" Masc Inanimate ;
|
paris_PN = mkPN "Париж" Masc Sg Inanimate ;
|
||||||
peace_N = mkN "мир" ;
|
peace_N = mkN "мир" ;
|
||||||
pen_N = mkN "ручка" ;
|
pen_N = mkN "ручка" ;
|
||||||
person_N = mkN "лицo" animate ; -- irregular
|
person_N = mkN "лицo" animate ; -- irregular
|
||||||
@@ -317,7 +317,7 @@ lin
|
|||||||
think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ;
|
think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ;
|
||||||
throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ;
|
throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ;
|
||||||
tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ;
|
tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ;
|
||||||
-- today_Adv = ;
|
today_Adv = mkAdv "сегодня" ;
|
||||||
tongue_N = mkN "язык" ;
|
tongue_N = mkN "язык" ;
|
||||||
tooth_N = mkN "зуб" ;
|
tooth_N = mkN "зуб" ;
|
||||||
train_N = mkN "поезд" ;
|
train_N = mkN "поезд" ;
|
||||||
@@ -353,7 +353,7 @@ lin
|
|||||||
wood_N = mkN "дерево" ;
|
wood_N = mkN "дерево" ;
|
||||||
worm_N = mkN "черв" ;
|
worm_N = mkN "черв" ;
|
||||||
write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
|
write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
|
||||||
year_N = mkN "годь" ;
|
year_N = mkN "год" ;
|
||||||
yellow_A = mkA "жёлтый" ;
|
yellow_A = mkA "жёлтый" ;
|
||||||
young_A = mkA "молодой" "моложе";
|
young_A = mkA "молодой" "моложе";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ oper pronTu : Pronoun =
|
|||||||
Prepos _ => "тебе" } }
|
Prepos _ => "тебе" } }
|
||||||
in pronYaTu nonPoss "тво" P2 ;
|
in pronYaTu nonPoss "тво" P2 ;
|
||||||
|
|
||||||
-- Pronouns ya, tu, svoj
|
-- Pronouns ya, ty, svoj
|
||||||
oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun =
|
oper pronYaTu : { s : Case => Str } -> Str -> Person -> Pronoun =
|
||||||
\nonPoss, mo, pers ->
|
\nonPoss, mo, pers ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
@@ -1313,4 +1313,15 @@ oper ProperName : Type = {s : Case => Str ; g : Gender ; anim : Animacy} ;
|
|||||||
(Prepos _) => masha + "е" };
|
(Prepos _) => masha + "е" };
|
||||||
g = Fem ; anim = anim };
|
g = Fem ; anim = anim };
|
||||||
|
|
||||||
|
-- Люберцы, Нидерланды
|
||||||
|
mkProperNamePl : Str -> Animacy -> ProperName = \lubercy, anim ->
|
||||||
|
let a : Str = case lubercy of {_+("ч"|"щ"|"ш"|"ж") => "а"; _ => "о" } in
|
||||||
|
{ s = table { Nom => lubercy + "ы";
|
||||||
|
Gen => lubercy + a + "в";
|
||||||
|
Dat => lubercy + "ам";
|
||||||
|
Acc => lubercy + "ы";
|
||||||
|
Inst => lubercy + "ей";
|
||||||
|
(Prepos _) => lubercy + "ах" };
|
||||||
|
g = Neut ; anim = anim };
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ oper
|
|||||||
|
|
||||||
-- Proper names.
|
-- Proper names.
|
||||||
|
|
||||||
mkPN : Str -> Gender -> Animacy -> PN ; -- "Иван", "Маша"
|
mkPN : Str -> Gender -> Number -> Animacy -> PN ; -- "Иван", "Маша"
|
||||||
nounPN : N -> PN ;
|
nounPN : N -> PN ;
|
||||||
|
|
||||||
|
|
||||||
@@ -130,6 +130,7 @@ oper
|
|||||||
-- Adjectives with irregular comparative.
|
-- Adjectives with irregular comparative.
|
||||||
|
|
||||||
mkA : (positive, comparative : Str) -> A ;
|
mkA : (positive, comparative : Str) -> A ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Two-place adjectives need a preposition and a case as extra arguments.
|
-- Two-place adjectives need a preposition and a case as extra arguments.
|
||||||
@@ -361,10 +362,13 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ;
|
mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ;
|
||||||
|
|
||||||
|
|
||||||
mkPN = \ivan, g, anim ->
|
mkPN = \ivan, g, n, anim ->
|
||||||
case g of {
|
case n of {
|
||||||
|
Sg => case g of {
|
||||||
Masc => mkProperNameMasc ivan anim ;
|
Masc => mkProperNameMasc ivan anim ;
|
||||||
_ => mkProperNameFem ivan anim
|
_ => mkProperNameFem ivan anim
|
||||||
|
} ;
|
||||||
|
Pl => mkProperNamePl ivan anim
|
||||||
} ** {lock_PN =<>};
|
} ** {lock_PN =<>};
|
||||||
nounPN n = {s=\\c => n.s! NF Sg c; anim=n.anim; g=n.g; lock_PN=<>};
|
nounPN n = {s=\\c => n.s! NF Sg c; anim=n.anim; g=n.g; lock_PN=<>};
|
||||||
|
|
||||||
@@ -377,7 +381,7 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
|
|
||||||
makeCN = UseN;
|
makeCN = UseN;
|
||||||
|
|
||||||
makeNP = \x,y,z -> UsePN (mkPN x y z) ;
|
makeNP = \x,y,z -> UsePN (mkPN x y singular z) ;
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (positive : Str) -> A = mk1A ;
|
mkA : (positive : Str) -> A = mk1A ;
|
||||||
@@ -397,6 +401,12 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
stem => mkAdjDeg (adjInvar stem) comparative
|
stem => mkAdjDeg (adjInvar stem) comparative
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- mkParticiple : VP -> AP = \v, voice ->
|
||||||
|
-- case voice of {
|
||||||
|
-- Act => ;
|
||||||
|
-- Pass => ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
-- khaki, mini, hindi, netto
|
-- khaki, mini, hindi, netto
|
||||||
adjInvar : Str -> Adjective = \stem -> { s = \\_ => stem } ;
|
adjInvar : Str -> Adjective = \stem -> { s = \\_ => stem } ;
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ lin
|
|||||||
here7from_Adv = ss "отсюда" ;
|
here7from_Adv = ss "отсюда" ;
|
||||||
how_IAdv = ss "как" ;
|
how_IAdv = ss "как" ;
|
||||||
how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen};
|
how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen};
|
||||||
|
how8much_IAdv = ss "сколько" ;
|
||||||
i_Pron = pronYa ;
|
i_Pron = pronYa ;
|
||||||
if_Subj = ss "если" ;
|
if_Subj = ss "если" ;
|
||||||
in8front_Prep = { s = "перед" ; c = Inst};
|
in8front_Prep = { s = "перед" ; c = Inst};
|
||||||
@@ -114,6 +115,9 @@ lin
|
|||||||
youPol_Pron = pronVu;
|
youPol_Pron = pronVu;
|
||||||
|
|
||||||
have_V2= P.dirV2 (P.regV P.imperfective P.first "име" "ю" "имел" "имей" "иметь" );
|
have_V2= P.dirV2 (P.regV P.imperfective P.first "име" "ю" "имел" "имей" "иметь" );
|
||||||
|
have_V3 = P.mkV3 (P.mkV P.imperfective "есть" "есть" "есть" "есть" "есть" "есть" "был" "будь" "есть") "" "у" Nom Gen;
|
||||||
|
|
||||||
|
have_not_V3 = P.mkV3 (P.mkV P.imperfective "нет" "нет" "нет" "нет" "нет" "нет" "не было" "не будь" "нет") "" "у" Gen Gen;
|
||||||
|
|
||||||
--- NoDet = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
--- NoDet = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
||||||
--- AnyDet = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
--- AnyDet = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
|
||||||
|
|||||||
@@ -2,30 +2,9 @@
|
|||||||
|
|
||||||
concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in {
|
concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in {
|
||||||
|
|
||||||
{- TODO!
|
{- TODO! -}
|
||||||
lin
|
-- lin
|
||||||
SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ;
|
-- SymbPN i = {s = i.s ; g = Neut } ;
|
||||||
IntPN i = {s = addGenitiveS i.s ; g = Neutr} ;
|
|
||||||
FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ;
|
|
||||||
NumPN i = {s = i.s ; g = Neutr} ;
|
|
||||||
CNIntNP cn i = {
|
|
||||||
s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ;
|
|
||||||
a = agrgP3 Sg cn.g
|
|
||||||
} ;
|
|
||||||
CNSymbNP det cn xs = {
|
|
||||||
s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ;
|
|
||||||
a = agrgP3 det.n cn.g
|
|
||||||
} ;
|
|
||||||
CNNumNP cn i = {
|
|
||||||
s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ;
|
|
||||||
a = agrgP3 Sg cn.g
|
|
||||||
} ;
|
|
||||||
|
|
||||||
SymbS sy = sy ;
|
|
||||||
|
|
||||||
SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ;
|
|
||||||
SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ;
|
|
||||||
-}
|
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|
||||||
@@ -37,5 +16,4 @@ lin
|
|||||||
-- BaseSymb = infixSS "and" ;
|
-- BaseSymb = infixSS "and" ;
|
||||||
ConsSymb = infixSS "," ;
|
ConsSymb = infixSS "," ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
|
|||||||
};
|
};
|
||||||
-- infinitive does not save GenNum,
|
-- infinitive does not save GenNum,
|
||||||
-- but indicative does for the sake of adjectival predication !
|
-- but indicative does for the sake of adjectival predication !
|
||||||
ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
-- ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
|
||||||
|
ClIndic Present _ => zloj.s ! AFShort gn ;
|
||||||
ClIndic PastRus _ => case gn of
|
ClIndic PastRus _ => case gn of
|
||||||
{ (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem);
|
{ (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem);
|
||||||
(GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);
|
(GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);
|
||||||
|
|||||||
Reference in New Issue
Block a user