From 0b881cb48980df7e7ca8008b9bb975c43e5ebd52 Mon Sep 17 00:00:00 2001 From: bjorn Date: Tue, 24 Jun 2008 18:44:41 +0000 Subject: [PATCH] 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. --- lib/resource-1.4/russian/ExtraLexRus.gf | 24 ++ lib/resource-1.4/russian/LexiconRus.gf | 381 ++++++++++------------- lib/resource-1.4/russian/ParadigmsRus.gf | 373 +++++++++++++++++----- 3 files changed, 484 insertions(+), 294 deletions(-) create mode 100644 lib/resource-1.4/russian/ExtraLexRus.gf diff --git a/lib/resource-1.4/russian/ExtraLexRus.gf b/lib/resource-1.4/russian/ExtraLexRus.gf new file mode 100644 index 000000000..005f684a7 --- /dev/null +++ b/lib/resource-1.4/russian/ExtraLexRus.gf @@ -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 +++ +} \ No newline at end of file diff --git a/lib/resource-1.4/russian/LexiconRus.gf b/lib/resource-1.4/russian/LexiconRus.gf index 993387c34..94a35bbcb 100644 --- a/lib/resource-1.4/russian/LexiconRus.gf +++ b/lib/resource-1.4/russian/LexiconRus.gf @@ -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 "молод" "моложе"; } diff --git a/lib/resource-1.4/russian/ParadigmsRus.gf b/lib/resource-1.4/russian/ParadigmsRus.gf index 45c0194d6..ef3147b62 100644 --- a/lib/resource-1.4/russian/ParadigmsRus.gf +++ b/lib/resource-1.4/russian/ParadigmsRus.gf @@ -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+ о' дома").