russian: new noun paradigms, including smart paradigm. Some things are still unhandled, notably vowel changes, -a plurals -u prepositions. I have changed the lexicon to use the new ones even though they are not finished, since it was in a pretty sorry state to begin with.

This commit is contained in:
bjorn
2008-06-24 18:44:41 +00:00
parent 3d63d3a966
commit 0b881cb489
3 changed files with 484 additions and 294 deletions

View File

@@ -0,0 +1,24 @@
--# -path=.:abstract:common
concrete ExtraLexRus of ExtraLexRusAbs = CatRus **
open ParadigmsRus in {
flags
coding=utf8 ;
lin
--- bridge_N = mkN "мост" ;
--- candle_N = nSvecha "свеч" ; -- +++ MG_UR: added +++
--- citizen_N = nGrazhdanin "господ" ; -- +++ MG_UR: added +++
--- daughter_N = nDoch "доч" ; -- +++ MG_UR: added +++
--- desk_N = nStol "стол" ;
--- dictionary_N = nSlovar "словар" ;
--- fellow_N = nTovarish "товарищ" ; -- +++ MG_UR: added +++
--- flag_N = nVremja "зна" ;
--- heaven_N = nNebo "неб" ; -- +++ MG_UR: added +++
--- museum_N = nMusej "музе" ; -- +++ MG_UR: added +++
-- name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имени" "имена" "имён" "именам" "имена" "именами" "именах" neuter inanimate ;
--- ocean_N = nMorje "мор" ; -- +++ MG_UR: added +++
--- son_N = nSyn "сын" ; -- +++ MG_UR: added +++
--- time_N = nVremja "вре" ; -- +++ MG_UR: added +++
--- vocationalschool_N = nUchilishe "училищ" ; -- +++ MG_UR: added +++
--- way_N = nPut "пут" ; -- +++ MG_UR: added +++
--- word_N = nSlovo "слов" ; -- +++ MG_UR: added +++
}

View File

@@ -1,321 +1,287 @@
--# -path=.:../abstract:../common:../../prelude
--
--# -path=.:abstract:common
concrete LexiconRus of Lexicon = CatRus **
open ParadigmsRus, Prelude, StructuralRus, MorphoRus in {
--, IrregRus
flags
optimize=values ;
coding=utf8 ;
lin
add_V3 = mkV3 (regV imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative;
airplane_N = nTelefon "самолет" ;
airplane_N = mkN "самолёт" ;
already_Adv = mkAdv "уже" ;
animal_N = nZhivotnoe "животн" ;
animal_N = mkN "животное" animate;
answer_V2S = dirV2 (regV imperfective first "отвеча" "ю" "отвечал" "отвечай" "отвечать" );
apartment_N = nMashina "квартир" ;
-- apple_N = nChislo "яблок" ; -- +++ MG_UR: wrong! +++
-- art_N = nChislo "искусств" ; -- +++ MG_UR: wrong! +++
art_N = nSlovo "искусств" ; -- +++ MG_UR: added +++
ashes_N = nPepel "пеп" ;
apartment_N = mkN "квартира" ;
apple_N = mkN "яблоко" ;
art_N = mkN "искусство" ;
ashes_N = mkN "пепел" ;
ask_V2Q = dirV2 (regV imperfective first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ;
baby_N = nMalush "малыш";
back_N = nMashina "спин" ;
baby_N = mkN "малыш" animate;
back_N = mkN "спина" ;
bad_A = AKakoj_Nibud "плох" "" "хуже";
bank_N = nBank "банк" ;
bark_N = mkN "лай" "лая" "лаю" "лай" "лаем" "лае" "лае" "лаи" "лаев" "лаям" "лаи" "лаями" "лаях" masculine inanimate ;
bank_N = mkN "банк" ;
bark_N = mkN "кора";
beautiful_A = AStaruyj "красив" "красивее";
become_VA = regV perfective second "станов" "лю" "стал" "стань" "стать" ;
-- beer_N = nChislo "пив" ; -- +++ MG_UR: wrong! +++
beer_N = nSlovo "пив" ; -- +++ MG_UR: added +++
beer_N = mkN "пиво" ;
beg_V2V = dirV2 (mkV imperfective "прошу" "просишь" "просит" "просим" "просите" "просят" "просил" "проси" "просить" );
belly_N = nTelefon "живот" ;
belly_N = mkN "живот" ;
big_A = AKakoj_Nibud "больш" "" "больше" ;
bike_N = nTelefon "велосипед" ;
bird_N = nEdinica "птиц" ;
bike_N = mkN "велосипед" ;
bird_N = mkN "птица" animate;
bite_V2 = dirV2 (regV imperfective first "куса" "ю" "кусал" "кусай" "кусать");
black_A = AStaruyj "чёрн" "чернее";
blood_N = nBol "кров" ;
blood_N = mkN "кровь" ;
blow_V = regV imperfective first "ду" "ю" "дул" "дуй" "дуть" ;
blue_A = AMolodoj "голуб" "голубее";
boat_N = nMashina "лодк" ;
bone_N = nBol "кост" ;
book_N = nNoga "книг" ;
boot_N = nBank "сапог" ;
boss_N = nStomatolog "начальник" ;
boy_N = nStomatolog "мальчик" ;
bread_N = nAdres "хлеб" ;
boat_N = mkN "лодка" ;
bone_N = mkN "кость" ;
book_N = mkN "книга" ;
boot_N = mkN "сапог" ;
boss_N = mkN "начальник" animate;
boy_N = mkN "мальчик" animate;
bread_N = mkN "хлеб" ;
break_V2 = dirV2 (regV imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
breast_N = nBol "грудь" ;
breast_N = mkN "грудь" ;
breathe_V = regV imperfective second "дыш" "у" "дышал" "дыши" "дышать" ;
--- bridge_N = nMost "мост" ;
broad_A = AMalenkij "широк" "шире";
brother_N2 = mkN2 (nBrat "брат") ;
brother_N2 = mkN2 (mkN "брат" animate) ; -- FIXME: special case
brown_A = AStaruyj "коричнев" "коричневее";
burn_V = regV imperfective second "гор" "ю" "горел" "гори" "гореть" ;
-- butter_N = nChislo "масл"; -- +++ MG_UR: wrong! +++
butter_N = nSlovo "масл"; -- +++ MG_UR: added +++
butter_N = mkN "масло";
buy_V2 = dirV2 (regV imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
camera_N = nMashina "kamer" ;
--- candle_N = nSvecha "свеч" ; -- +++ MG_UR: added +++
cap_N = nNoga "чашк" ; -- чаш-ек Pl-Gen
car_N = nMashina "машин" ;
carpet_N = mkN "ковёр" "ковра" "ковру" "ковёр" "ковром" "ковре" "ковре" "ковры" "ковров" "коврам" "ковры" "коврами" "коврах" masculine inanimate ;
cat_N = nMashina "кошк" ;
ceiling_N = nPotolok "потол" ;
chair_N = nStul "стул" ;
cheese_N = nTelefon "сыр" ;
camera_N = mkN "фотоаппарат" ;
cap_N = mkN "чашка" ; -- vowel change
car_N = mkN "машина" ;
carpet_N = mkN "ковёр"; -- vowel change
cat_N = mkN "кошка" animate ; -- vowel change
ceiling_N = mkN "потолок" ; -- vowel change
chair_N = mkN "стул" ;
cheese_N = mkN "сыр" ;
--- child2_N = nRebenok "реб" ; -- Achtung: Hier 'child' im Sinne von "junge Lebewesen" (dann keine Suppletivformen(?))!
child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка" "ребёнком" "ребёнке" "ребёнке" "дети" "детей" "детям" "детей" "детьми" "детях" masculine animate ;
church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковью" "церкви" "церкви" "церкви" "церквей" "церквям" "церкви" "церквями" "церквях" masculine inanimate ;
--- citizen_N = nGrazhdanin "господ" ; -- +++ MG_UR: added +++
city_N = nAdres "город" ;
city_N = mkN "город" ;
clean_A = AStaruyj "чист" "чище";
clever_A = AStaruyj "умн" "умнее";
close_V2= dirV2 (regV imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" );
-- cloud_N = nChislo "облак" ; -- +++ MG_UR: wrong! +++
cloud_N = nChislo "облак" "облаков" ; -- +++ MG_UR: added +++
cloud_N = mkN "облако" ; -- irregular
coat_N = mkIndeclinableNoun "пальто" masculine inanimate ;
cold_A = AStaruyj "холодн" "холоднее";
come_V = regV imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ;
computer_N = nTelefon "компьютер" ;
computer_N = mkN "компьютер" ;
correct_A = AStaruyj "правильн" "правильнее";
count_V2 = dirV2 (regV imperfective first "счита" "ю" "считал" "считай" "считать" ) ;
country_N = nMashina "стран" ;
cousin_N = nTelefon "кузен" ;
cow_N = nMashina "коров" ;
country_N = mkN "страна" ;
cousin_N = mkN "кузен" ; -- FIXME: is this really correct? can't find it in the dictionary
cow_N = mkN "корова" animate ;
cut_V2 = dirV2 (regV imperfective first "реж" "у" "резал" "режь" "резать" ) ;
--- daughter_N = nDoch "доч" ; -- +++ MG_UR: added +++
-- day_N = mkN "день" "дня" "дню" "день" "днём" "дне" "дне" "дни" "дней" "дням" "дни" "днями" "днях" masculine inanimate ;
day_N = nDen "д" ; -- +++ MG_UR: class better than mkN +++
--- desk_N = nStol "стол" ;
--- dictionary_N = nSlovar "словар" ;
day_N = mkN "день" "дня" "дню" "день" "днём" "дне" "дне" "дни" "дней" "дням" "дни" "днями" "днях" masculine inanimate ;
die_V = regV imperfective first "умира" "ю" "умирал" "умирай" "умирать" ;
dig_V = regV imperfective first "копа" "ю" "копал" "копай" "копать" ;
dirty_A = AStaruyj "грязн" "грязнее" ;
distance_N3 = mkN3 (nProizvedenie "расстояни") from_Prep to_Prep ;
distance_N3 = mkN3 (mkN "расстояние") from_Prep to_Prep ;
do_V2 = dirV2 (regV imperfective first "дела" "ю" "делал" "делай" "делать" );
doctor_N = nAdres "доктор" ;
dog_N = nNoga "собак" ;
door_N = nBol "двер" ;
doctor_N = mkN "доктор" animate ;
dog_N = mkN "собака" animate;
door_N = mkN "дверь" ;
drink_V2 = dirV2 (regV imperfective firstE "пь" "ю" "пил" "пей" "пить" );
dry_A = AMolodoj "сух" "суше";
dull_A = AStaruyj "скучн" "скучнее";
dust_N = nBol "пыл" ;
-- ear_N = nChislo "ухо" ; -- +++ MG_UR: wrong! +++
earth_N = nTetya "земл" ;
dust_N = mkN "пыль" ;
ear_N = mkN "ухо" ;
earth_N = mkN "земля" ;
easy_A2V = mkA2 (AMalenkij "лёгк" "легче") "для" genitive ;
eat_V2 = dirV2 (regV imperfective first "куша" "ю" "кушал" "кушай" "кушать" );
-- egg_N = nChislo "яйц" ; -- +++ MG_UR: wrong! +++
egg_N = nChislo "яйц" "яиц" ; -- +++ MG_UR: added +++
egg_N = mkN "яйцо" ;
empty_A = AMolodoj "пуст" "пустее";
enemy_N = nStomatolog "враг" ;
eye_N = nAdres "глаз" ;
factory_N = nNoga "фабрик" ;
enemy_N = mkN "враг" animate ;
eye_N = mkN "глаз" ; -- FIXME: Pl -a
factory_N = mkN "фабрика" ;
fall_V = regV imperfective first "пада" "ю" "падал" "падай" "падать" ;
far_Adv = mkAdv "далеко";
fat_N = nBank "жир" ;
fat_N = mkN "жир" ;
father_N2 = mkN2 (mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate);
fear_V2 =dirV2 (regV imperfective first "бо" "ю" "боял" "бой" "боять" );
fear_VS = regV imperfective second "бо" "ю" "боял" "бой" "боять" ;
feather_N = mkN "перо" "пера" "перу" "пера" "пером" "пере" "пере" "перья" "перьев" "перьям" "перьев" "перьями" "перьях" neuter inanimate ;
--- fellow_N = nTovarish "товарищ" ; -- +++ MG_UR: added +++
fight_V2 = dirV2 (regV imperfective firstE "дер" "у" "драл" "дери" "драть" ) ;
find_V2 = dirV2 (mkV imperfective "нахожу" "находишь" "находит" "находим" "находите" "находят" "находил" "находи" "находить" );
fingernail_N = mkN "ноготь" "ногтя" "ногтю" "ногтя" "ногтем" "ногте" "ногте" "ногти" "ногтей" "ногтям" "ногтей" "ногтями" "ногтях" masculine inanimate ;
fire_N = mkN "огонь" "огня" "огню" "огня" "огнём" "огне" "огне" "огни" "огней" "огням" "огней" "огнями" "огнях" masculine inanimate ;
fish_N = nMashina "рыб" ;
--- flag_N = nVremja "зна" ;
fish_N = mkN "рыба" animate;
float_V = regV imperfective firstE "плыв" "у" "плыл" "плыви" "плыть" ;
floor_N = nTelefon "пол" ;
floor_N = mkN "пол" ;
flow_V = regV imperfective firstE "тек" "у" "тёк" "теки" "течь" ;
flower_N = mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate ;
flower_N = mkN "цветок";
fly_V = regV imperfective second "лета" "ю" "летал" "летай" "летать" ;
fog_N = nTelefon "туман" ;
foot_N = nTetya "ступн" ;
forest_N = nLes "лес" ;
fog_N = mkN "туман" ;
foot_N = mkN "ступня" ;
forest_N = mkN "лес" ; -- prepos -u
forget_V2= dirV2 (regV imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
freeze_V = regV imperfective first "замерза" "ю" "замерзал" "замерзай" "замерзать" ;
fridge_N = nBank "холодильник" ;
-- friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate ;
friend_N = nDrug "дру" ; -- +++ MG_UR: class better than mkN +++
fruit_N = nTelefon "фрукт" ;
fridge_N = mkN "холодильник" ;
friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate ;
fruit_N = mkN "фрукт" ;
full_A = AStaruyj "полн" "полнее";
fun_AV = AStaruyj "весёл" "веселее";
garden_N = nTelefon "сад" ;
girl_N = nNoga "девочк" ;
garden_N = mkN "сад" ;
girl_N = mkN "девочка" animate; -- vowel change
give_V3 = tvDirDir (regV imperfective firstE "да" "ю" "давал" "давай" "давать" ) ;
glove_N = nNoga "перчатк" ;
glove_N = mkN "перчатка" ; -- vowel change
go_V= regV imperfective second "хо" "жу" "ходил" "ходи" "ходить" ;
-- gold_N = nChislo "золот" ; -- +++ MG_UR: wrong! +++
gold_N = nSlovo "золот" ; -- +++ MG_UR: added +++
gold_N = mkN "золото" ;
good_A = AKhoroshij "хорош" "лучше" ;
grammar_N = nNoga "грамматик";
grass_N = nMashina "трав" ;
grammar_N = mkN "грамматикa";
grass_N = mkN "трава";
green_A = AStaruyj "зелен" "зеленее" ;
guts_N = nBol "внутренност" ;
hair_N = nTelefon "волос" ;
hand_N = nNoga "рук" ;
harbour_N = nTelefon "залив" ;
hat_N = nMashina "шляп" ;
guts_N = mkN "внутренность" ;
hair_N = mkN "волос" ; -- FIXME: always plural?
hand_N = mkN "рука" ;
harbour_N = mkN "порт" ; -- prepos -u
hat_N = mkN "шляпа" ;
hate_V2= dirV2 (regV imperfective second "ненави" "жу" "ненавидел" "ненавидь" "ненавидеть" );
have_V2= dirV2 (regV imperfective first "име" "ю" "имел" "имей" "иметь" );
head_N = nMashina "голов" ;
head_N = mkN "голова" ;
hear_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
heart_N = mkN "сердце" "сердца" "сердцу" "сердца" "сердцем" "сердце" "сердце" "сердца" "сердец" "сердцам" "сердец" "сердцами" "сердцах" neuter inanimate ;
--- heaven_N = nNebo "неб" ; -- +++ MG_UR: added +++
heavy_A = AStaruyj "тяжел" "тяжелее";
hill_N = nTelefon "холм" ;
hill_N = mkN "холм" ;
hit_V2 = dirV2 (regV imperfective first "ударя" "ю" "ударял" "ударяй" "ударять" );
hold_V2 = dirV2 (regV imperfective second "держ" "у" "держал" "держи" "держать" );
hope_VS= regV imperfective first "наде" "ю" "надеял" "надей" "надеять" ;
horn_N = nAdres "рог" ;
-- horse_N = nBol "лошад" ; -- +++ MG_UR: wrong! +++
horse_N = nLoshad "лошад" ; -- +++ MG_UR: added +++
horn_N = mkN "рог" ;
horse_N = mkN "лошадь" animate;
hot_A = AKhoroshij "горяч" "горячее" ;
house_N = nAdres "дом" ;
house_N = mkN "дом" ;
hunt_V2 = dirV2 (regV imperfective second "охоч" "у" "охотил" "охоть" "охотить" ) ;
husband_N = mkN "муж" "мужа" "мужу" "мужа" "мужем" "муже" "муже" "мужья" "мужей" "мужьям" "мужей" "мужьями" "мужьях" masculine animate ;
ice_N = mkN "лёд" "льда" "льду" "льда" "льдом" "льде" "льде" "льды" "льдов" "льдам" "льдов" "льдами" "льдах" masculine inanimate ;
important_A = AStaruyj "важн" "важнее" ;
-- industry_N = nChislo "производств" ; -- +++ MG_UR: wrong! +++
industry_N = nSlovo "производств" ; -- +++ MG_UR: added +++
-- iron_N = nChislo "желез" ; -- +++ MG_UR: wrong! +++
iron_N = nSlovo "желез" ; -- +++ MG_UR: added +++
industry_N = mkN "промышленность" ;
iron_N = mkN "железо" ;
jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ;
king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ;
knee_N = mkN "колено" "колена" "колену" "колена" "коленом" "колене" "колене" "колени" "колен" "коленам" "колен" "коленями" "коленях" neuter inanimate ;
know_V2= dirV2 (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
-- lake_N = nChislo "озер" ; -- +++ MG_UR: wrong! +++
lake_N = nChislo "озер" "озёр"; -- +++ MG_UR: added +++
lamp_N = nMashina "ламп" ;
language_N = nBank "язык" ;
lake_N = mkN "озеро" ; -- gen pl "озёр"
lamp_N = mkN "лампа" ;
language_N = mkN "язык" ;
laugh_V = regV imperfective firstE "сме" "ю" "смеял" "смей" "смеять" ;
leaf_N = nStul "лист" ;
leaf_N = mkN "лист" ; -- irregular pl
learn_V2= dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
leather_N = nEdinica "кож" ;
leather_N = mkN "кожа" ;
leave_V2= dirV2 (regV imperfective second "ухож" "у" "уходил" "уходи" "уходить" );
left_Ord = (uy_j_EndDecl "лев" ) ** {lock_A = <>};
leg_N = nNoga "ног" ;
leg_N = mkN "нога" ;
lie_V = regV imperfective firstE "лг" "у" "лгал" "лги" "лгать" ;
like_V2= dirV2 (regV imperfective second "нрав" "лю" "нравил" "нравь" "нравить" );
listen_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
live_V= regV imperfective firstE "жив" "у" "жил" "живи" "жить" ;
liver_N = nBol "печен" ;
liver_N = mkN "печень" ;
long_A = AStaruyj "длинн" "длиннее" ;
lose_V2 = dirV2 (regV imperfective first "теря" "ю" "терял" "теряй" "терять" );
louse_N = mkN "вошь" "вши" "вши" "вошь" "вошью" "вше" "вше" "вши" "вшей" "вшам" "вшей" "вшами" "вшах" feminine animate ;
love_N = nBol "любов" ;
love_N = mkN "любовь" ; -- vowel change
love_V2= dirV2 (regV imperfective second "люб" "лю" "любил" "люби" "любить" );
man_N = nStomatolog "человек" ;
man_N = mkN "человек" ; -- null gen pl
married_A2 = mkA2 (adjInvar "замужем") "за" instructive ;
-- meat_N = nChislo "мяс" ; -- +++ MG_UR: wrong! +++
-- milk_N = nChislo "молок" ; -- +++ MG_UR: wrong! +++
--- mister_N = nGospodin "господ" ; -- +++ MG_UR: added +++
--- mom_N = nMat "мат" ; -- +++ MG_UR: added +++
--- month_N = nMesjac "месяц" ; -- +++ MG_UR: added +++
moon_N = nMashina "лун" ;
mother_N2 = mkN2 ( nMashina "мам") ;
mountain_N = nMashina "гор" ;
meat_N = mkN "мясо" ;
milk_N = mkN "молоко" ;
moon_N = mkN "луна" ;
mother_N2 = mkN2 (mkN "мама") ;
mountain_N = mkN "гора" ;
mouth_N = mkN "рот" "рта" "рту" "рот" "ртом" "рте" "рте" "рты" "ртов" "ртам" "рты" "ртами" "ртах" masculine inanimate ;
--- museum_N = nMusej "музе" ; -- +++ MG_UR: added +++
music_N = nNoga "музык" ;
-- name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имени" "имена" "имён" "именам" "имена" "именами" "именах" neuter inanimate ;
name_N = nVremja "и" ; -- +++ MG_UR: class better than mkN +++
music_N = mkN "музыка" ;
name_N = mkN "имя" ;
narrow_A = AStaruyj "узк" "уже" ;
near_A = AMalenkij "близк" "ближе";
neck_N = nTetya "ше" ;
neck_N = mkN "шея" ;
new_A = AStaruyj "нов" "новее" ;
newspaper_N = nMashina "газет" ;
-- night_N = nBol "ноч" ; -- +++ MG_UR: wrong! +++
night_N = nNoch "ноч" ; -- +++ MG_UR: added +++
nose_N = nTelefon "нос" ;
newspaper_N = mkN "газета" ;
night_N = mkN "ночь" ;
nose_N = mkN "нос" ;
now_Adv = mkAdv "сейчас" ;
number_N = nChislo "числ" "чисел" ;
--- ocean_N = nMorje "мор" ; -- +++ MG_UR: added +++
oil_N = nBol "нефть" ;
number_N = mkN "число" ; -- gen pl "чисел"
oil_N = mkN "нефть" ;
old_A = AStaruyj "стар" "старше" ;
open_V2= dirV2 (regV imperfective first "открыва" "ю" "открывал" "открывай" "открывать" );
--- organise_V2 = dirV2 (regV imperfective foreign "организу" "ю" "организовал" "организуй" "организовать" ); -- +++ MG_UR: added +++
paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ;
--- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++
paper_N = nNoga "бумаг" ;
paper_N = mkN "бумага" ;
paris_PN = mkPN "Париж" Masc Inanimate ;
peace_N = nTelefon "мир" ;
pen_N = nNoga "ручк" ;
person_N = nBol "личность" ;
planet_N = nMashina "планет" ;
plastic_N = nMashina "пластмасс" ;
peace_N = mkN "мир" ;
pen_N = mkN "ручка" ;
person_N = mkN "лицo" animate ; -- irregular
planet_N = mkN "планета" ;
plastic_N = mkN "пластмасса" ;
play_V = regV imperfective first "игра" "ю" "играл" "играй" "играть" ;
play_V2 = mkV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" ) "c" instructive;
policeman_N = nTelefon "милиционер" ;
priest_N = nStomatolog "священник" ;
policeman_N = mkN "милиционер" animate ;
priest_N = mkN "священник" animate;
probable_AS = AStaruyj "возможн" "возможнее";
pull_V2 = dirV2 (regV imperfective first "тян" "у" "тянул" "тяни" "тянуть" ) ;
push_V2 = dirV2 (regV imperfective first "толка" "ю" "толкал" "толкай" "толкать" );
put_V2 = dirV2 (regV imperfective firstE "клад" "у" "клал" "клади" "класть" );
queen_N = nMashina "королев" ;
queen_N = mkN "королева" animate ;
question_N = mkN "вопрос" ;
radio_N = mkIndeclinableNoun "радио" neuter inanimate;
rain_N = nNol "дожд" ;
rain_N = mkN "дождь" ;
rain_V0 = idetDozhd verbIdti; -- No such verb in Russian!
read_V2 = dirV2 (regV imperfective first "чита" "ю" "читал" "читай" "читать" );
-- ready_A = ;
reason_N = mkN "причина";
red_A = AStaruyj "красн" "краснее" ;
religion_N = nMalyariya "религи" ;
restaurant_N = nTelefon "ресторан" ;
religion_N = mkN "религия" ;
restaurant_N = mkN "ресторан" ;
right_Ord = (uy_j_EndDecl "прав") ** {lock_A = <>} ;
river_N = nNoga "рек" ;
road_N = nNoga "дорог" ;
rock_N = nUroven "кам" ;
roof_N = nEdinica "крыш" ;
root_N = nUroven "кор" ;
rope_N = nNoga "веревк" ;
river_N = mkN "рекa" ;
road_N = mkN "дорогa" ;
rock_N = mkN "камень" ;
roof_N = mkN "крыша" ;
root_N = mkN "корень" ;
rope_N = mkN "верёвка" ;
rotten_A = AMolodoj "гнил" "гнилее";
round_A = AStaruyj "кругл" "круглее";
rub_V2 = dirV2 (regV imperfective firstE "тр" "у" "тёр" "три" "тереть" );
rubber_N = nMashina "резин" ;
-- rule_N = nChislo "правил" ; -- +++ MG_UR: wrong! +++
rule_N = nSlovo "правил" ; -- +++ MG_UR: added +++
rubber_N = mkN "резина" ;
rule_N = mkN "правило" ;
run_V = regV imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
salt_N = nBol "сол" ;
salt_N = mkN "соль" ;
sand_N = mkN "песок" "песка" "песку" "песок" "песком" "песке" "песке" "пески" "песков" "пескам" "песков" "песками" "песках" masculine inanimate ;
say_VS = regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ;
school_N = nMashina "школ" ;
science_N = nNoga "наук" ;
school_N = mkN "школа" ;
science_N = mkN "наука" ;
scratch_V2 = dirV2 (regV imperfective first "чеш" "у" "чесал" "чеши" "чесать" ) ;
sea_N = nProizvedenie "мор" ;
-- see_V2 = dirV2 (regV imperfective second "виж" "у" "видел" "видь" "видеть" );
see_V2 = dirV2 (regV imperfective second "ви" "жу" "видел" "видь" "видеть" ); -- changed !!
-- seed_N = mkN "семя" "семени" "семении" "семя" "семенем" "семени" "семени" "семена" "семян" "семенам" "семена" "семенами" "семенах" "семенах" neuter inanimate ;
seed_N = nVremja "се" ; -- +++ MG_UR: class better than mkN +++
sea_N = mkN "море" ;
see_V2 = dirV2 (regV imperfective second "ви" "жу" "видел" "видь" "видеть" );
seed_N = mkN "семя";
seek_V2 = dirV2 (regV imperfective first "ищ" "у" "искал" "ищи" "искать" );
sell_V3 = tvDirDir (regV imperfective firstE "прода" "ю" "продавал" "продавай" "продавать" );
send_V3 = tvDirDir (regV imperfective first "посыла" "ю" "посылал" "посылай" "посылать" );
sew_V = regV imperfective firstE "шь" "ю" "шил" "шей" "шить" ;
sharp_A = AStaruyj "остр" "острее";
sheep_N = nMashina "овц" ;
ship_N = nNol "корабл" ;
shirt_N = nNoga "рубашк" ;
sheep_N = mkN "овца" animate ;
ship_N = mkN "корабль" ;
shirt_N = mkN "рубашка" ;
shoe_N = mkN "туфля" "туфли" "туфле" "туфлю" "туфлей" "туфле" "туфле" "туфли" "туфель" "туфлям" "туфли" "туфлями" "туфлях" masculine inanimate ;
shop_N = nTelefon "магазин" ;
shop_N = mkN "магазин" ;
short_A = AMalenkij "коротк" "короче" ;
-- silver_N = nChislo "серебр" ; -- +++ MG_UR: wrong! +++
silver_N = nSlovo "серебр" ; -- +++ MG_UR: added +++
silver_N = mkN "серебро" ;
sing_V = regV imperfective firstE "по" "ю" "пел" "пой" "петь" ;
sister_N = nMashina "сестр" ;
sister_N = mkN "сестра" animate ;
sit_V = mkV imperfective "сижу" "сидишь" "сидит" "сидим" "сидите" "сидят" "сидел" "сиди" "сидеть" ;
skin_N = nEdinica "кож" ;
skin_N = mkN "кожа" ;
sky_N = mkN "небо" "неба" "небу" "небо" "небом" "небе" "небе" "небеса" "небес" "небесам" "небес" "небесами" "небесах" neuter inanimate ;
sleep_V = regV imperfective second "сп" "лю" "спал" "спи" "спать" ;
small_A = AMalenkij "маленьк" "меньше" ;
smell_V = regV imperfective first "пахн" "у" "пахнул" "пахни" "пахнуть" ;
smoke_N = nTelefon "дым" ;
smoke_N = mkN "дым" ;
smooth_A = AMalenkij "гладк" "глаже";
snake_N = nTetya "зме" ;
snake_N = nTetya"зме" ;
snow_N = nAdres "снег" ;
sock_N = nPotolok "нос" ;
--- son_N = nSyn "сын" ; -- +++ MG_UR: added +++
snake_N = mkN "змея" animate ;
snow_N = mkN "снег" ;
sock_N = mkN "носок" ;
song_N = nTetya "песн" ;
speak_V2 = mkV2 (regV imperfective secondA "говор" "ю" "говорил" "говори" "говорить")
"на" prepositional ;
@@ -324,14 +290,14 @@ lin
squeeze_V2 = dirV2 (regV imperfective first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ;
stab_V2 = dirV2 (regV imperfective first "кол" "ю" "колол" "коли" "колоть" ) ;
stand_V = regV imperfective second "сто" "ю" "стоял" "стой" "стоять" ;
star_N = nMashina "звезд" ;
steel_N = nBol "стал" ;
stick_N = nNoga "палк" ;
stone_N = nNol "камен" ;
star_N = mkN "звезда" ;
steel_N = mkN "сталь" ;
stick_N = mkN "палка" ;
stone_N = mkN "камень" ;
stop_V = regV imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
stove_N = nBol "печ" ;
stove_N = mkN "печь" ;
straight_A = AMolodoj "прям" "прямее";
student_N = nTelefon "студент" ;
student_N = mkN "студент" animate ;
stupid_A = AMolodoj "тупой" "тупее" ;
suck_V2 = dirV2 (regV imperfective firstE "сос" "у" "сосал" "соси" "сосать") ;
sun_N = mkN "солнце" "солнца" "солнцу" "солнце" "солнцем" "солнце" "солнце" "солнца" "солнц" "солнцам" "солнца" "солнцами" "солнцах" neuter inanimate ;
@@ -339,61 +305,54 @@ lin
swim_V = regV imperfective first "плава" "ю" "плавал" "плавай" "плавать" ;
switch8off_V2 = dirV2 (regV imperfective first "выключа" "ю" "выключал" "выключай" "выключать") ;
switch8on_V2 = dirV2 (regV imperfective first "включа" "ю" "включал" "включай" "включать") ;
table_N = nTelefon "стол" ;
tail_N = nTelefon "хвост" ;
table_N = mkN "стол" ;
tail_N = mkN "хвост" ;
talk_V3 = mkV3 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional;
teach_V2 = dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
-- teacher_N = nNol "учител" ; -- +++ MG_UR: wrong! +++
teacher_N = nUchitel "учител" ; -- +++ MG_UR: added +++
television_N = nProizvedenie "телевидени" ;
teacher_N = mkN "учитель" animate ;
television_N = mkN "телевидение" ; -- FIXME: televizor?
thick_A = AStaruyj "толст" "толще" ;
thin_A = AMalenkij "тонк" "тоньше" ;
think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ;
throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ;
tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ;
--- time_N = nVremja "вре" ; -- +++ MG_UR: added +++
tongue_N = nBank "язык" ;
tooth_N = nTelefon "зуб" ;
train_N = nAdres "поезд" ;
-- today_Adv = ;
tongue_N = mkN "язык" ;
tooth_N = mkN "зуб" ;
train_N = mkN "поезд" ;
travel_V = regV imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ;
tree_N = nDerevo "дерев" ; -- +++ MG_UR: added +++
tree_N = mkN "дерево" ; -- irregular
turn_V = regV imperfective first "поворачива" "ю" "поворачивал" "поворачивай" "поворачивать" ;
ugly_A = AStaruyj "некрасив" "некрасивее" ;
-- uncertain_A = ;
understand_V2 = dirV2 (regV imperfective first "понима" "ю" "понимал" "понимай" "понимать" );
university_N = nTelefon "университет" ;
village_N = nMalyariya "деревн" ;
--- vocationalschool_N = nUchilishe "училищ" ; -- +++ MG_UR: added +++
university_N = mkN "университет" ;
village_N = mkN "деревня" ;
vomit_V = regV imperfective firstE "рв" "у" "рвал" "рви" "рвать" ;
wait_V2 = dirV2 (regV imperfective firstE "жд" "у" "ждал" "жди" "ждать" );
walk_V = regV imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ;
--- want_V2 = dirV2 (regV imperfective mixed "хо" "чу" "хотел" "хоти" "хотеть" );
war_N = nMashina "войн" ;
war_N = mkN "война" ;
warm_A = AStaruyj "тёпл" "теплее" ;
wash_V2 = dirV2 (regV imperfective first "мо" "ю" "мыл" "мой" "мыть" ) ;
watch_V2 = dirV2 (regV imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" );
water_N = nMashina "вод" ;
--- way_N = nPut "пут" ; -- +++ MG_UR: added +++
water_N = mkN "вода" ;
wet_A = AStaruyj "мокр" "мокрее";
white_A = AStaruyj "бел" "белее" ;
wide_A = AMalenkij "широк" "шире";
wife_N = nMashina "жен" ;
wife_N = mkN "жена" animate ;
win_V2 = dirV2 (regV imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" );
wind_N = mkN "ветер" "ветра" "ветру" "ветер" "ветром" "ветра" "ветра" "ветров" "ветра" "ветрам" "ветров" "ветрами" "ветрах" masculine inanimate ;
-- window_N = nChislo "окн" ; -- +++ MG_UR: wrong! +++
window_N = nChislo "окн" "окон" ; -- +++ MG_UR: added +++
-- wine_N = nChislo "вин" ; -- +++ MG_UR: wrong! +++
wine_N = nSlovo "вин" ; -- +++ MG_UR: added +++
-- wing_N = mkN "крыло" "крыла" "крылу" "крыло" "крылом" "крыле" "крыле" "крылья" "крыльев" "крыльям" "крылья" "крыльями" "крыльях" neuter inanimate ;
wing_N = nDerevo "крыл" ; -- +++ MG_UR: class better than mkN +++
window_N = mkN "окно" ; -- "окон"
wine_N = mkN "вино" ;
wing_N = mkN "крыло" ; -- pl крылья крыльев etc
wipe_V2 = dirV2 (regV imperfective first "вытира" "ю" "вытирал" "вытирай" "вытирать" );
woman_N = nZhenchina "женщин" ;
woman_N = mkN "женщина" ;
wonder_VQ = regV imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать";
-- wood_N = nChislo "дерев" ; -- +++ MG_UR: wrong! +++
wood_N = nDerevo "дерев" ; -- +++ MG_UR: added +++
--- word_N = nSlovo "слов" ; -- +++ MG_UR: added +++
worm_N = nNol "черв" ;
wood_N = mkN "дерево" ;
worm_N = mkN "черв" ;
write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
year_N = nAdres "год" ;
year_N = mkN "годь" ;
yellow_A = AStaruyj "жёлт" "желтее" ;
young_A = AMolodoj "молод" "моложе";
}

View File

@@ -82,13 +82,9 @@ oper
-- to the Nominative or the Genetive one) is actually of no help,
-- since there are a lot of exceptions and the gain is just one form less.
-- +++ MG_UR: new case Prepos2 introduced! +++
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
mkWorstN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N ;
-- мужчина, мужчины, мужчине, мужчину, мужчиной, мужчине
-- мужчины, мужчин, мужчинам, мужчин, мужчинами, мужчинах
-- The regular function captures the variants for some popular nouns
-- endings below:
@@ -363,6 +359,21 @@ foreign = Foreign; -- +++ MG_UR: added +++
-- Noun definitions
mkN : overload {
mkN : (karta : Str) -> N ;
mkN : (tigr : Str) -> Animacy -> N ;
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N
} ;
mkN = overload {
mkN : (karta : Str) -> N = regN ;
mkN : (tigr : Str) -> Animacy -> N = \nom, anim -> case anim of { Animate => animateN (regN nom) ;
Inanimate => regN nom } ;
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N = mkWorstN
} ;
mkIndeclinableNoun = \s,g, anim ->
{
s = table { SF _ _ => s } ;
@@ -370,8 +381,7 @@ foreign = Foreign; -- +++ MG_UR: added +++
anim = anim
} ** {lock_N = <>};
-- +++ MG_UR: new case Prepos2 introduced! +++
mkN = \nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
mkWorstN = \nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl, g, anim ->
{
s = table {
@@ -393,95 +403,292 @@ foreign = Foreign; -- +++ MG_UR: added +++
anim = anim
} ** {lock_N = <>} ;
-- Makes a noun animate.
animateN : N -> N = \n ->
{
s = table {
SF Sg Acc => case n.g of {
Masc => n.s!(SF Sg Gen);
_ => n.s!(SF Sg Acc)
};
SF Pl Acc => n.s!(SF Pl Gen);
sf => n.s!sf } ;
g = n.g ;
anim = Animate
} ** {lock_N = <>};
regN = \ray ->
let
ra = Predef.tk 1 ray ;
y = Predef.dp 1 ray ;
r = Predef.tk 2 ray ;
ay = Predef.dp 2 ray ;
rays =
case y of {
"а" => nMashina ray ;
"ь" => nBol ray ;
"я" => case ay of {
"ия" => nMalyariya ray;
_ => nTetya ray };
"е" => case ay of {
"ее" => nObezbolivauchee ray ;
"ое" => nZhivotnoe ray ;
_ => nProizvedenie ray };
-- "о" => nChislo ray ; +++ MG_UR: commented out +++
_=> nStomatolog ray
}
in
rays ;
regN = \x ->
case x of {
-- stem+"oнoк" => nDecl10 stem ;
-- stem+"aнин" => nDecl11 stem ;
stem@(_+"и")+"й" => nDecl7Masc stem;
stem@(_+"и")+"я" => nDecl7Fem stem;
stem@(_+"и")+"е" => nDecl7Neut stem;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"й" => nDecl6Masc stem ;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"е" => nDecl6Neut stem ;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"я" => nDecl6Fem stem ;
-- stem+"ее" => nAdjectiveSoftNeut
-- stem+"ое" => nAdjectiveHardNeut
stem+"мя" => nDecl9 stem ;
stem@(_+("ч"|"щ"|"ш"|"ж"|"п"|"эн"|"м"|"ф"))+"ь" => nDecl8 stem ;
stem@(_+("д"|"т"|"ст"|"с"|"в"|"б"))+"ь" => nDecl8 stem ;
stem@(_+"ш"|"ж"|"ч"|"щ"|"ц")+"е" => regHardNeut stem;
stem+"е" => regSoftNeut stem ;
stem+"я" => regSoftFem stem ;
stem+"ь" => regSoftMasc stem ;
stem+"о" => regHardNeut stem ;
stem+"а" => regHardFem stem ;
stem => regHardMasc stem
};
nMashina = \s -> aEndInAnimateDecl s ** {lock_N = <>};
nEdinica = \s -> ej_aEndInAnimateDecl s ** {lock_N = <>};
nZhenchina = \s -> (aEndAnimateDecl s) ** { g = Fem ; anim = Animate } ** {lock_N = <>};
nNoga = \s -> aEndG_K_KH_Decl s ** {lock_N = <>};
nMalyariya = \s -> i_yaEndDecl s ** {lock_N = <>};
nTetya = \s -> (yaEndAnimateDecl s) ** {g = Fem; anim = Animate; lock_N = <>} ;
nBol = \s -> softSignEndDeclFem s ** {lock_N = <>};
{-
-- further classes added by Magda Gerritsen and Ulrich Real
nSvecha = \s -> oj_aEndInAnimateDecl s ** {lock_N = <>};
nMat = \s -> irregStemAnimateDecl s ** {g = Fem; anim = Animate; lock_N = <>};
nDoch = \s -> irregStemAnimateDeclInstr_MI s ** {g = Fem; anim = Animate; lock_N = <>};
nLoshad = \s -> softSignEndDeclFemInstr_MI s ** {g = Fem; anim = Animate; lock_N = <>};
nNoch = \s -> softSignEndDeclFemInanimate_ZH s ** {g = Fem; anim = Inanimate; lock_N = <>};
Paradigms:
1. hard regular
Masc -Consonant
Neut -o
Fem -a
1*. with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
2. soft regular:
Masc -ь
Neut -е
Fem -я
2*. with vowel changes, Masc in Gen Sg, Fem in Gen Pl (no Neut)
3. stem ending in г, к, х
- Masc, Fem same as 1 but use и instead of ы (Nom/Acc Pl, Gen Sg)
- Neut -кo has Nom Pl -ки instead of -кa
3* with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
4. stem ending in ш, ж, ч, щ, hard endings,
use и instead of ы, and use е instead of unstressed o
5. stem ending in ц, hard endings, use е instead of unstressed o
5*. with vowel changes, Masc in Gen Sg, Fem and Neut in Gen Pl
6. Masc ending in -й, Fem stem ending in vowel, Neut ending in ь?
6* with vowel changes
7. stem ending in и
8. F2, Fem ending in -ь
all -чь, -щь, -шь, -жь
all -пь, -энь, -мь, -фь,
most -дь, -ть, -сть, -сь, -вь, -бь,
8*. with vowel changes in Ins Sg, Gen Sg
9. Neut ending in -мя
10. Masc in -oнoк
11. Masc in -aнин
12. Nom Pl in -ья
-}
-- Neuter patterns.
nObezbolivauchee = \s -> eeEndInAnimateDecl s ** {lock_N = <>};
nZhivotnoe = \s -> oeEndAnimateDecl s ** {lock_N = <>};
nProizvedenie = \s -> eEndInAnimateDecl s ** {lock_N = <>};
nChislo = \s, o -> oEndInAnimateDecl3 s o ** {lock_N = <>}; -- +++ MG_UR: nChislo now expects two arguments +++
oper iAfter : Str -> Str = \stem ->
case stem of {
_ + ("г"|"к"|"х") => "и" ;
_ + ("ш"|"ж"|"ч"|"щ") => "и" ;
_ => "ы"
};
-- further classes added by Magda Gerritsen and Ulrich Real
nSlovo = \s -> hardCons_ZHInAnimateDecl s ** {lock_N = <>};
nMorje = \s -> weakConsInAnimateDecl s ** {lock_N = <>};
nUchilishe = \s -> hardCons_ZHInAnimateDeclE s ** {lock_N = <>};
nNebo = \s -> irregPlInAnimateDecl s ** {lock_N = <>};
nDerevo = \s -> irregPl_StemInAnimateDecl s ** {lock_N = <>};
nVremja = \s -> irregTotalInAnimateDecl s ** {lock_N = <>};
oper oAfter : Str -> Str = \stem ->
case stem of {
_ + ("ш"|"ж"|"ч"|"щ") => "е" ;
_ + "ц" => "е" ;
_ => "о"
};
-- 1. Hard regular masculine inanimate, e.g. spor.
-- 3. stem ending in г, к, х
-- 4. stem ending in ш, ж, ч, щ
-- 5. stem ending in ц
oper regHardMasc : Str -> N = \stem ->
let i = iAfter stem in
let o = oAfter stem in
{ s = table {
SF Sg Nom => stem ;
SF Sg Gen => stem+"а" ;
SF Sg Dat => stem+"у" ;
SF Sg Acc => stem ;
SF Sg Inst => stem+o+"м" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+i ;
SF Pl Gen => stem+case stem of { _+("ш"|"ж"|"ч"|"щ") => "ей"; _ => "ов" } ;
SF Pl Dat => stem+"ам" ;
SF Pl Acc => stem+i ;
SF Pl Inst => stem+"ами" ;
SF Pl (Prepos _) => stem+"ах" };
g = Masc; anim = Inanimate } ** {lock_N = <>} ;
-- Masculine patterns.
nBank = \s -> nullEndInAnimateDecl s ** {lock_N = <>};
nStomatolog = \s -> nullEndAnimateDecl s ** {lock_N = <>};
nMalush = \s -> shEndDeclMasc s ** {lock_N = <>};
nPotolok = \s ->okEndDeclMasc s ** {lock_N = <>};
-- 1. Hard regular neuter inanimate, e.g. pravilo.
-- 3. stem ending in г, к, х
-- 4. stem ending in ш, ж, ч, щ
-- 5. stem ending in ц
oper regHardNeut : Str -> N = \stem ->
let o = oAfter stem in
{ s = table {
SF Sg Nom => stem+o ;
SF Sg Gen => stem+"а" ;
SF Sg Dat => stem+"у" ;
SF Sg Acc => stem+o ;
SF Sg Inst => stem+o+"м" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+case stem of { _+"к" => "и" ; _ => "а" } ;
SF Pl Gen => stem ;
SF Pl Dat => stem+"ам" ;
SF Pl Acc => stem+"а" ;
SF Pl Inst => stem+"ами" ;
SF Pl (Prepos _) => stem+"ах" };
g = Neut; anim = Inanimate } ** {lock_N = <>} ;
nBrat = \s -> nullEndAnimateDeclBrat s** {lock_N = <>};
nStul = \s -> nullEndInAnimateDeclStul s** {lock_N = <>};
-- 1. Hard regular feminine inanimate, e.g. karta.
-- 3. stem ending in г, к, х
-- 4. stem ending in ш, ж, ч, щ
-- 5. stem ending in ц
oper regHardFem : Str -> N = \stem ->
let i = iAfter stem in
let o = oAfter stem in
{ s = table {
SF Sg Nom => stem+"а" ;
SF Sg Gen => stem+i ;
SF Sg Dat => stem+"е" ;
SF Sg Acc => stem+"у" ;
SF Sg Inst => stem+o+"й" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+i ;
SF Pl Gen => stem ;
SF Pl Dat => stem+"ам" ;
SF Pl Acc => stem+i ;
SF Pl Inst => stem+"ами" ;
SF Pl (Prepos _) => stem+"ах" };
g = Fem; anim = Inanimate } ** {lock_N = <>} ;
nAdres = \s -> nullEndInAnimateDecl2 s ** {lock_N = <>};
nTelefon = \s -> nullEndInAnimateDecl1 s ** {lock_N = <>};
nPepel = \s -> nullEndInAnimateDeclPepel s ** {lock_N = <>};
-- 2. Soft regular masculine inanimate, e.g. vichr'
oper regSoftMasc : Str -> N = \stem ->
{ s = table {
SF Sg Nom => stem+"ь";
SF Sg Gen => stem+"я" ;
SF Sg Dat => stem+"ю" ;
SF Sg Acc => stem+"ь" ;
SF Sg Inst => stem+"ем" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+"и" ;
SF Pl Gen => stem+"ей" ;
SF Pl Dat => stem+"ям" ;
SF Pl Acc => stem+"и" ;
SF Pl Inst => stem+"ями" ;
SF Pl (Prepos _) => stem+"ях" };
g = Masc; anim = Inanimate } ** {lock_N = <>} ;
nNol = \s -> softSignEndDeclMasc s ** {lock_N = <>};
nUchitel = \s -> softSignEndDeclMascAnimate s ** {lock_N = <>}; -- +++ MG_UR: added +++
nUroven = \s -> EN_softSignEndDeclMasc s ** {lock_N = <>};
-- 2. Soft regular neuter inanimate, e.g. more
oper regSoftNeut : Str -> N = \stem ->
{ s = table {
SF Sg Nom => stem+"е";
SF Sg Gen => stem+"я" ;
SF Sg Dat => stem+"ю" ;
SF Sg Acc => stem+"е" ;
SF Sg Inst => stem+"ем" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+"я" ;
SF Pl Gen => stem+"ей" ;
SF Pl Dat => stem+"ям" ;
SF Pl Acc => stem+"я" ;
SF Pl Inst => stem+"ями" ;
SF Pl (Prepos _) => stem+"ях" };
g = Neut; anim = Inanimate } ** {lock_N = <>} ;
-- further classes added by Magda Gerritsen and Ulrich Real
nStol = \s -> nullEndDecl s ** {lock_N = <>};
nSlovar = \s -> softSignEndDeclMascInAnimateInstrJO s ** {lock_N = <>};
nMusej = \s -> nullEndInAnimateDeclSoft s ** {lock_N = <>};
nDvorec = \s -> ZH_EndInAnimateDeclSoftGenOWithout s ** {lock_N = <>};
nTovarish = \s -> ZH_EndAnimateDeclSoftInstrE s ** {lock_N = <>};
nMesjac = \s -> ZH_EndInAnimateDeclSoftGenE s ** {lock_N = <>};
nGrazhdanin = \s -> PlStemChangeAnimateDecl s ** {lock_N = <>};
nRebenok = \s -> LittleAnimalDecl s ** {lock_N = <>};
nPut = \s -> UniqueIrregularDecl s ** {lock_N = <>};
nGospodin = \s -> A_PlStemChangeAnimateDecl s ** {lock_N = <>};
nDen = \s -> softSignEndDeclMascInAnimateGenEWithout s ** {lock_N = <>};
nDrug = \s -> nullEndAnimateDeclDrug s** {lock_N = <>};
nSyn = \s -> nullEndAnimateDeclSyn s** {lock_N = <>};
nLes = \s -> preposVNaEndUMasc s ** {lock_N = <>};
-- 2. Soft regular feminine inanimate, e.g. burya
oper regSoftFem : Str -> N = \stem ->
{ s = table {
SF Sg Nom => stem+"я";
SF Sg Gen => stem+"и" ;
SF Sg Dat => stem+"е" ;
SF Sg Acc => stem+"ю" ;
SF Sg Inst => stem+"ей" ;
SF Sg (Prepos _) => stem+"е" ;
SF Pl Nom => stem+"и" ;
SF Pl Gen => stem+"ь" ;
SF Pl Dat => stem+"ям" ;
SF Pl Acc => stem+"и" ;
SF Pl Inst => stem+"ями" ;
SF Pl (Prepos _) => stem+"ях" };
g = Fem; anim = Inanimate } ** {lock_N = <>} ;
-- 8. Feminine ending in soft consonant
oper nDecl8 : Str -> N = \stem ->
{ s = table {
SF Sg Nom => stem+"ь";
SF Sg Gen => stem+"и" ;
SF Sg Dat => stem+"и" ;
SF Sg Acc => stem+"ь" ;
SF Sg Inst => stem+"ью" ;
SF Sg (Prepos _) => stem+"и" ;
SF Pl Nom => stem+"и" ;
SF Pl Gen => stem+"ей" ;
SF Pl Dat => stem+"ям" ;
SF Pl Acc => stem+"и" ;
SF Pl Inst => stem+"ями" ;
SF Pl (Prepos _) => stem+"ях" };
g = Fem; anim = Inanimate } ** {lock_N = <>} ;
-- 6. Masc ending in -Vй (V = vowel)
oper nDecl6Masc : Str -> N = \stem ->
let n = regSoftMasc stem in
{ s = table {
SF Sg (Nom|Acc) => stem+"й";
SF Pl Gen => stem+"ев" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 6. Neut ending in -Ve (V = vowel) (not adjectives)
oper nDecl6Neut : Str -> N = \stem ->
let n = regSoftNeut stem in
{ s = table {
SF Pl Gen => stem+"й" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 6. Fem ending in -Vя (V = vowel)
oper nDecl6Fem : Str -> N = \stem ->
let n = regSoftFem stem in
{ s = table {
SF Pl Gen => stem+"й" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 7. stem ending in и
oper nDecl7Masc : Str -> N = \stem ->
let n = nDecl6Masc stem in
{ s = table {
SF Sg (Prepos _) => stem+"и" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 7. stem ending in и
oper nDecl7Neut : Str -> N = \stem ->
let n = nDecl6Neut stem in
{ s = table {
SF Sg (Prepos _) => stem+"и" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 7. stem ending in и
oper nDecl7Fem : Str -> N = \stem ->
let n = nDecl6Fem stem in
{ s = table {
SF Sg (Dat|Prepos _) => stem+"и" ;
sf => n.s!sf };
g = n.g; anim = n.anim } ** {lock_N = <>} ;
-- 9. Neut ending in -мя
oper nDecl9 : Str -> N = \stem ->
{ s = table {
SF Sg Nom => stem+"мя";
SF Sg Gen => stem+"мени" ;
SF Sg Dat => stem+"мени" ;
SF Sg Acc => stem+"мя" ;
SF Sg Inst => stem+"менем" ;
SF Sg (Prepos _) => stem+"мени" ;
SF Pl Nom => stem+"мена" ;
SF Pl Gen => stem+"мён" ;
SF Pl Dat => stem+"менам" ;
SF Pl Acc => stem+"мена" ;
SF Pl Inst => stem+"менами" ;
SF Pl (Prepos _) => stem+"менах" };
g = Fem; anim = Inanimate } ** {lock_N = <>} ;
-- An individual-valued function is a common noun together with the
-- preposition prefixed to its argument ("клZ+ о' дома").