From f056583f37eea15d72927e6013ee682a2d7d2064 Mon Sep 17 00:00:00 2001 From: krasimir Date: Thu, 13 Mar 2008 08:28:30 +0000 Subject: [PATCH] Reorganize the ParadigmsBul & co modules. Now ParadigmsBul is auto-generated and contains all BG paradigms. The Lexicon is also largely extended --- lib/resource/bulgarian/AdjParadigmsBul.gf | 188 --- lib/resource/bulgarian/LexiconBul.gf | 261 +++- lib/resource/bulgarian/MorphoBul.gf | 147 +- lib/resource/bulgarian/MorphoFunsBul.gf | 99 ++ lib/resource/bulgarian/NumeralBul.gf | 22 +- lib/resource/bulgarian/ParadigmsBul.gf | 1565 ++++++++++++++++++-- lib/resource/bulgarian/ResBul.gf | 149 +- lib/resource/bulgarian/VerbParadigmsBul.gf | 644 -------- 8 files changed, 1965 insertions(+), 1110 deletions(-) delete mode 100644 lib/resource/bulgarian/AdjParadigmsBul.gf create mode 100644 lib/resource/bulgarian/MorphoFunsBul.gf delete mode 100644 lib/resource/bulgarian/VerbParadigmsBul.gf diff --git a/lib/resource/bulgarian/AdjParadigmsBul.gf b/lib/resource/bulgarian/AdjParadigmsBul.gf deleted file mode 100644 index 830bd4c82..000000000 --- a/lib/resource/bulgarian/AdjParadigmsBul.gf +++ /dev/null @@ -1,188 +0,0 @@ -resource AdjParadigmsBul = open - (Predef=Predef), - Prelude, - MorphoBul, - CatBul - in { -oper - mkA76 : Str -> A = - \nov -> mkAdjective nov - (nov+"ия") - (nov+"ият") - (nov+"а") - (nov+"ата") - (nov+"о") - (nov+"ото") - (nov+"и") - (nov+"ите") - ** {lock_A = <>} ; - mkA77 : Str -> A = - \vish -> mkAdjective vish - (vish+"ия") - (vish+"ият") - (vish+"а") - (vish+"ата") - (vish+"е") - (vish+"ето") - (vish+"и") - (vish+"ите") - ** {lock_A = <>} ; - mkA78 : Str -> A = - \bylgarski -> - let bylgarsk = init bylgarski - in mkAdjective bylgarski - (bylgarsk+"ия") - (bylgarsk+"ият") - (bylgarsk+"а") - (bylgarsk+"ата") - (bylgarsk+"о") - (bylgarsk+"ото") - (bylgarsk+"и") - (bylgarsk+"ите") - ** {lock_A = <>} ; - mkA79 : Str -> A = - \silen -> let siln : Str = case silen of { sil+"ен" => sil+"н" } - in mkAdjective silen - (siln+"ия") - (siln+"ият") - (siln+"а") - (siln+"ата") - (siln+"о") - (siln+"ото") - (siln+"и") - (siln+"ите") - ** {lock_A = <>} ; - mkA80 : Str -> A = - \dobyr -> let dobr : Str = case dobyr of { dob+"ъ"+r@("ш"|"р"|"л"|"к"|"г"|"в") => dob+r } - in mkAdjective dobyr - (dobr+"ия") - (dobr+"ият") - (dobr+"а") - (dobr+"ата") - (dobr+"о") - (dobr+"ото") - (dobr+"и") - (dobr+"ите") - ** {lock_A = <>} ; - mkA81 : Str -> A = - \bial -> let bel : Str = ia2e bial - in mkAdjective bial - (bel+"ия") - (bel+"ият") - (bial+"а") - (bial+"ата") - (bial+"о") - (bial+"ото") - (bel+"и") - (bel+"ите") - ** {lock_A = <>} ; - mkA82 : Str -> A = - \ostrowryh -> let ostrowyrh : Str = case ostrowryh of { ostrow+"ръ"+h@("з"|"х"|"б") => ostrow+"ър"+h } - in mkAdjective ostrowryh - (ostrowyrh+"ия") - (ostrowyrh+"ият") - (ostrowyrh+"а") - (ostrowyrh+"ата") - (ostrowyrh+"о") - (ostrowyrh+"ото") - (ostrowyrh+"и") - (ostrowyrh+"ите") - ** {lock_A = <>} ; - mkA82а : Str -> A = - \dyrzyk -> let dryzk : Str = case dyrzyk of { d+"ързък" => d+"ръзк" } - in mkAdjective dyrzyk - (dryzk+"ия") - (dryzk+"ият") - (dryzk+"а") - (dryzk+"ата") - (dryzk+"о") - (dryzk+"ото") - (dryzk+"и") - (dryzk+"ите") - ** {lock_A = <>} ; - mkA83 : Str -> A = - \riadyk ->let riadk : Str = case riadyk of { riad+"ък" => riad+"к"} - in mkAdjective riadyk - (ia2e riadk+"ия") - (ia2e riadk+"ият") - (riadk+"а") - (riadk+"ата") - (riadk+"о") - (riadk+"ото") - (ia2e riadk+"и") - (ia2e riadk+"ите") - ** {lock_A = <>} ; - mkA84 : Str -> A = - \veren -> let viarn : Str = case veren of { v + "е" + r@("д"|"з"|"н"|"р"|"с"|"т")+"ен" => v+"я"+r+"н" } - in mkAdjective veren - (ia2e viarn+"ия") - (ia2e viarn+"ият") - (viarn+"а") - (viarn+"ата") - (viarn+"о") - (viarn+"ото") - (ia2e viarn+"и") - (ia2e viarn+"ите") - ** {lock_A = <>} ; - mkA84а : Str -> A = - \svesten -> - let sviastn : Str = case svesten of { sv + "естен" => sv+"ястн" } - in mkAdjective svesten - (ia2e sviastn+"ия") - (ia2e sviastn+"ият") - (sviastn+"а") - (sviastn+"ата") - (sviastn+"о") - (sviastn+"ото") - (ia2e sviastn+"и") - (ia2e sviastn+"ите") - ** {lock_A = <>} ; - mkA85 : Str -> A = - \stroen -> - let stroin : Str = case stroen of { stro + "ен" => stro+"йн" } - in mkAdjective stroen - (stroin+"ия") - (stroin+"ият") - (stroin+"а") - (stroin+"ата") - (stroin+"о") - (stroin+"ото") - (stroin+"и") - (stroin+"ите") - ** {lock_A = <>} ; - mkA86 : Str -> A = - \sin -> mkAdjective sin - (sin+"ия") - (sin+"ият") - (sin+"я") - (sin+"ята") - (sin+"ьо") - (sin+"ьото") - (sin+"и") - (sin+"ите") - ** {lock_A = <>} ; - mkA87 : Str -> A = - \ovchi -> let ovch : Str = case ovchi of { ovch+"и" => ovch } - in mkAdjective ovchi - (ovch+"ия") - (ovch+"ият") - (ovch+"а") - (ovch+"ата") - (ovch+"е") - (ovch+"ето") - (ovch+"и") - (ovch+"ите") - ** {lock_A = <>} ; - mkA88 : Str -> A = - \kozi -> let koz : Str = case kozi of { koz+"и" => koz } - in mkAdjective kozi - (koz+"ия") - (koz+"ият") - (koz+"я") - (koz+"ята") - (koz+"е") - (koz+"ето") - (koz+"и") - (koz+"ите") - ** {lock_A = <>} ; -} \ No newline at end of file diff --git a/lib/resource/bulgarian/LexiconBul.gf b/lib/resource/bulgarian/LexiconBul.gf index 5ddf57877..c9d07a386 100644 --- a/lib/resource/bulgarian/LexiconBul.gf +++ b/lib/resource/bulgarian/LexiconBul.gf @@ -1,110 +1,276 @@ --# -path=.:prelude concrete LexiconBul of Lexicon = CatBul ** - open ParadigmsBul, Prelude in { + open ParadigmsBul, ResBul, Prelude in { flags optimize=values ; lin - bad_A = mkA76 "лош" ; - beautiful_A = mkA76 "красив" ; + airplane_N = mkN007 "самолет" ; + apartment_N = mkN007 "апартамент" ; + apple_N = mkN041 "ябълка" ; + art_N = mkN054 "изкуство" ; + baby_N = mkN065 "бебе" ; + bad_A = mkA076 "лош" ; + bank_N = mkN041 "банка" ; + beautiful_A = mkA076 "красив" ; become_VA = mkVA (mkV186 "ставам") ; - big_A = mkA81 "голям" ; - black_A = mkA79 "черен" ; - blue_A = mkA86 "син" ; + beer_N = mkN041 "бира" ; + big_A = mkA081 "голям" ; + bike_N = mkN061 "колело" ; + bird_N = mkN041 "птица" ; + black_A = mkA079 "черен" ; + blue_A = mkA086 "син" ; + boat_N = mkN007 "кораб" ; + book_N = mkN041 "книга" ; + boot_N = mkN041 "обувка" ; + boss_N = mkN001 "шеф" ; + boy_N = mkN065 "момче" ; + bread_N = mkN001 "хляб" ; break_V2 = dirV2 (mkV173 "чупя") ; - brown_A = mkA76 "кафяв" ; + brother_N2 = {s = table { + NF Sg Indef => "брат" ; + NF Sg Def => "брата" ; + NFSgDefNom => "братът" ; + NF Pl Indef => "братя" ; + NF Pl Def => "братята" ; + NFPlCount => "братя" ; + NFVocative => "брате" + }; + g = DMascPersonal; + c2 = "на"} ; + brown_A = mkA076 "кафяв" ; + butter_N = mkN054 "масло" ; buy_V2 = dirV2 (mkV173 "купя") ; - clean_A = mkA76 "чист" ; - clever_A = mkA79 "умен" ; + camera_N = mkN041 "камера" ; + cap_N = mkN041 "шапка" ; + car_N = mkN041 "кола" ; + carpet_N = mkN007 "килим" ; + cat_N = mkN041 "котка" ; + cheese_N = mkN066 "сирене" ; + child_N = mkN067 "дете" ; + church_N = mkN041 "църква" ; + city_N = mkN001 "град" ; + clean_A = mkA076 "чист" ; + clever_A = mkA079 "умен" ; close_V2 = dirV2 (mkV173 "затворя") ; - cold_A = mkA76 "студен" ; + cold_A = mkA076 "студен" ; come_V = mkV146a "дойда" ; + computer_N = mkN009 "компютър" ; + country_N = mkN041 "държава" ; + cousin_N = mkN007a "братовчед" ; + cow_N = mkN041 "крава" ; die_V = mkV150a "умра" ; - dirty_A = mkA79 "мръсен" ; + dirty_A = mkA079 "мръсен" ; + doctor_N = mkN007a "доктор" ; + dog_N = mkN065 "куче" ; + door_N = mkN041 "врата" ; drink_V2 = dirV2 (mkV163 "пия") ; eat_V2 = dirV2 (mkV169 "ям") ; - empty_A = mkA79 "празен" ; + empty_A = mkA079 "празен" ; + enemy_N = mkN001 "враг" ; + factory_N = mkN041 "фабрика" ; fear_VS = mkVS (mkV186 "страхувам") ; find_V2 = dirV2 (mkV173 "намеря") ; + fish_N = mkN041 "риба" ; + floor_N = mkN007 "етаж" ; + fridge_N = mkN007 "фризер" ; + friend_N = mkN031a "приятел" ; + fruit_N = mkN001 "плод" ; forget_V2 = dirV2 (mkV173 "забравя") ; - good_A = mkA80 "добър" ; + garden_N = mkN041 "градина" ; + girl_N = mkN065 "момиче" ; +-- glove_N = regN "glove" ; + gold_N = mkN054 "злато" ; + good_A = mkA080 "добър" ; go_V = mkV186 "отивам" ; - green_A = mkA76 "зелен" ; + green_A = mkA076 "зелен" ; hate_V2 = dirV2 (mkV173 "мразя") ; + hat_N = mkN041 "шапка" ; have_V2 = dirV2 (mkV186 "имам") ; hear_V2 = dirV2 (mkV186 "чувам") ; - hope_VS = mkVS (mkV186 "надявам") ; - hot_A = mkA76 "горещ" ; - important_A = mkA79 "важен" ; + hill_N = mkN001 "хълм" ; + hope_VS = mkVS (reflV (mkV186 "надявам") Acc) ; + horse_N = mkN035 "кон" ; + hot_A = mkA076 "горещ" ; + house_N = mkN041 "къща" ; + important_A = mkA079 "важен" ; + industry_N = mkN047 "индустрия" ; + iron_N = mkN057 "желязо" ; + king_N = mkN035a "цар" ; know_V2 = dirV2 (mkV162 "зная") ; + lake_N = mkN054 "езеро" ; + lamp_N = mkN041 "лампа" ; learn_V2 = dirV2 (mkV176 "уча") ; leave_V2 = dirV2 (mkV173 "оставя") ; like_V2 = dirV2 (mkV186 "харесвам") ; listen_V2 = dirV2 (mkV186 "слушам") ; live_V = mkV160 "живея" ; - long_A = mkA80 "дълъг" ; + long_A = mkA080 "дълъг" ; lose_V2 = dirV2 (mkV173 "губя") ; + love_N = mkN049 "любов" ; love_V2 = dirV2 (mkV186 "обичам") ; - married_A2 = mkA2 (mkA76 "женен") zaP ; - narrow_A = mkA84 "тесен" ; - new_A = mkA76 "нов" ; - old_A = mkA76 "стар" ; + man_N = mkN024 "мъж" ; + married_A2 = mkA2 (mkA076 "женен") zaP ; + meat_N = mkN054 "месо" ; + milk_N = mkN057 "мляко" ; + moon_N = mkN041 "луна" ; + mountain_N = mkN041 "планина" ; + music_N = mkN041 "музика" ; + narrow_A = mkA084 "тесен" ; + new_A = mkA076 "нов" ; + newspaper_N = mkN014 "вестник" ; + oil_N = mkN065 "олио" ; + old_A = mkA076 "стар" ; open_V2 = dirV2 (mkV187 "отварям") ; + paper_N = mkN047 "хартия" ; paris_PN = mkPN "Париж" Masc ; + planet_N = mkN041 "планета" ; play_V2 = dirV2 (mkV161 "играя") ; + queen_N = mkN041 "кралица" ; + radio_N = mkN054 "радио" ; read_V2 = dirV2 (mkV145 "чета") ; - red_A = mkA76 "червен" ; + red_A = mkA076 "червен" ; + religion_N = mkN047 "религия" ; + restaurant_N = mkN007 "ресторант" ; + river_N = mkN041 "река" ; + rock_N = mkN041 "скала" ; + roof_N = mkN007 "покрив" ; +-- rubber_N = regN "rubber" ; run_V = (mkV186 "бягам") ; say_VS = mkVS (mkV186 "казвам") ; + school_N = mkN066 "училище" ; + science_N = mkN041 "наука" ; + sea_N = mkN065 "море" ; seek_V2 = dirV2 (mkV173 "търся") ; see_V2 = dirV2 (mkV186 "виждам") ; sell_V3 = dirV3 (mkV186 "продавам") naP ; send_V3 = dirV3 (mkV186 "пращам") doP ; - short_A = mkA76 "къс" ; + sheep_N = mkN044 "овца" ; + ship_N = mkN007 "кораб" ; + shop_N = mkN007 "магазин" ; + short_A = mkA076 "къс" ; + silver_N = mkN054 "сребро" ; + sister_N = mkN041a "сестра" ; sleep_V = mkV182 "спя" ; - small_A = mkA80 "малък" ; + small_A = mkA080 "малък" ; + snake_N = mkN047 "змия" ; + sock_N = mkN007 "чорап" ; speak_V2 = dirV2 (mkV173 "говоря") ; - stupid_A = mkA76 "глупав" ; + star_N = mkN041 "звезда" ; +-- steel_N = regN "steel" ; + stone_N = mkN017 "камък" ; +-- stove_N = regN "stove" ; + student_N = mkN007a "студент" ; + stupid_A = mkA076 "глупав" ; + sun_N = mkN066 "слънце" ; switch8off_V2 = dirV2 (mkV186 "изключвам") ; switch8on_V2 = dirV2 (mkV186 "включвам") ; + table_N = mkN041 "маса" ; + teacher_N = mkN031a "учител" ; teach_V2 = dirV2 (mkV186 "преподавам") ; - thick_A = mkA76 "дебел" ; - thin_A = mkA80 "тънък" ; + television_N = mkN047 "телевизия" ; + thick_A = mkA076 "дебел" ; + thin_A = mkA080 "тънък" ; + train_N = mkN001 "влак" ; travel_V = mkV186 "пътувам" ; - ugly_A = mkA76 "глупав" ; + tree_N = mkN061 "дърво" ; + ugly_A = mkA076 "глупав" ; understand_V2 = dirV2 (mkV186 "разбирам") ; + university_N = mkN007 "университет" ; + village_N = mkN054 "село" ; wait_V2 = prepV2 (mkV186 "чакам") zaP ; walk_V = mkV173 "ходя" ; - warm_A = mkA80 "топъл" ; + warm_A = mkA080 "топъл" ; + war_N = mkN041 "война" ; watch_V2 = dirV2 (mkV186 "гледам") ; - white_A = mkA81 "бял" ; + water_N = mkN041 "вода" ; + white_A = mkA081 "бял" ; + window_N = mkN008 "прозорец" ; + wine_N = mkN054 "вино" ; win_V2 = dirV2 (mkV174 "победя") ; - + woman_N = mkN041a "жена" ; write_V2 = dirV2 (mkV159 "пиша") ; - yellow_A = mkA76 "жълт" ; - young_A = mkA76 "млад" ; + yellow_A = mkA076 "жълт" ; + young_A = mkA076 "млад" ; -- do_V2 = dirV2 (mk5V "do" "does" "did" "done" "doing") ; now_Adv = mkAdv "сега" ; already_Adv = mkAdv "вече" ; + song_N = mkN050 "песен" ; + number_N = mkN054 "число" ; -- put_V2 = prepV2 (irregDuplV "put" "put" "put") noPrep ; stop_V = mkV150 "спра" ; jump_V = mkV176 "скоча" ; far_Adv = mkAdv "далече" ; - correct_A = mkA79 "правилен" ; - dry_A = mkA76 "сух" ; + correct_A = mkA079 "правилен" ; + dry_A = mkA076 "сух" ; -- dull_A = regA "dull" ; - full_A = mkA79 "пълен" ; - heavy_A = mkA80 "тежък" ; - near_A = mkA80 "близък" ; + full_A = mkA079 "пълен" ; + heavy_A = mkA080 "тежък" ; + near_A = mkA080 "близък" ; -- rotten_A = (regA "rotten") ; - round_A = mkA80 "кръгъл" ; - sharp_A = mkA80 "остър" ; + round_A = mkA080 "кръгъл" ; + sharp_A = mkA080 "остър" ; -- smooth_A = regA "smooth" ; -- straight_A = regA "straight" ; - wet_A = mkA80 "мокър" ; ---- - wide_A = mkA76 "широк" ; + wet_A = mkA080 "мокър" ; ---- + wide_A = mkA076 "широк" ; + animal_N = mkN062 "животно" ; + belly_N = mkN007 "корем" ; + blood_N = mkN053 "кръв" ; + bone_N = mkN049 "кост" ; + cloud_N = mkN014 "облак" ; + day_N = mkN033 "ден" ; + earth_N = mkN047 "земя" ; + egg_N = mkN066 "яйце" ; + eye_N = mkN063 "око" ; + fat_N = mkN041 "fat" ; + feather_N = mkN038 "баща" ; + fire_N = mkN030 "огън" ; + flower_N = mkN068 "цвете" ; + fog_N = mkN041 "мъгла" ; + foot_N = mkN041 "стъпка" ; + forest_N = mkN041 "гора" ; + grass_N = mkN041 "трева" ; + hair_N = mkN041 "коса" ; + hand_N = mkN045 "ръка" ; + head_N = mkN041 "глава" ; + heart_N = mkN066 "сърце" ; + horn_N = mkN001 "рог" ; + husband_N = mkN015 "съпруг" ; -- personal + ice_N = mkN001 "лед" ; +-- knee_N = mkN "knee" ; + leaf_N = mkN054 "листо" ; + leg_N = mkN022 "крак" ; +-- liver_N = mkN "liver" ; +-- louse_N = mk2N "louse" "lice" ; +-- mouth_N = mkN "mouth" ; + name_N = mkN069 "име" ; + neck_N = mkN003 "гръб" ; + night_N = mkN049 "нощ" ; +-- nose_N = mkN "nose" ; + person_N = mkN014 "човек" ; + rain_N = mkN001 "дъжд" ; + road_N = mkN037 "път" ; + root_N = mkN007 "корен" ; + rope_N = mkN065 "въже" ; + salt_N = mkN049 "сол" ; + sand_N = mkN014 "пясък" ; + seed_N = mkN069 "семе" ; + skin_N = mkN041 "кожа" ; + sky_N = mkN070 "небе" ; + smoke_N = mkN014 "пушек" ; + snow_N = mkN002 "сняг" ; +-- stick_N = mkN "stick" ; + tail_N = mkN041 "опашка" ; + tongue_N = mkN014 "език" ; + tooth_N = mkN007 "зъб" ; + wife_N = mkN041 "съпруга" ; + wind_N = mkN004 "вятър" ; + wing_N = mkN056 "крило" ; + worm_N = mkN032 "червей" ; + year_N = mkN041 "година" ; -- blow_V = IrregEng.blow_V ; -- breathe_V = dirV2 (regV "breathe") ; burn_V = mkV187 "изгарям" ; @@ -151,10 +317,15 @@ lin wash_V2 = dirV2 (mkV163 "мия") ; -- wipe_V2 = dirV2 (regV "wipe") ; + grammar_N = mkN041 "граматика" ; + language_N = mkN014 "език" ; + rule_N = mkN054 "правило" ; + john_PN = mkPN "Джон" Masc ; - ready_A = mkA76 "готов" ; + question_N = mkN007 "въпрос" ; + ready_A = mkA076 "готов" ; today_Adv = mkAdv "днес" ; - uncertain_A = mkA79 "неясен" ; + uncertain_A = mkA079 "неясен" ; oper zaP = mkPrep "за" Acc ; diff --git a/lib/resource/bulgarian/MorphoBul.gf b/lib/resource/bulgarian/MorphoBul.gf index 10fa8a8bb..7e65d2faf 100644 --- a/lib/resource/bulgarian/MorphoBul.gf +++ b/lib/resource/bulgarian/MorphoBul.gf @@ -8,7 +8,11 @@ -- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which -- gives a higher-level access to this module. -resource MorphoBul = ResBul ** open Prelude, (Predef=Predef) in { +resource MorphoBul = ResBul ** open + Predef, + Prelude, + CatBul + in { flags optimize=all ; @@ -31,4 +35,145 @@ oper spec = Indef } ; + +--2 Verbs + + mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> V = + \cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti -> { + s = table { + VPres Sg P1 => cheta; + VPres Sg P2 => chete + "ш"; + VPres Sg P3 => chete; + VPres Pl P1 => case chete of { + _ + ("а"|"я") => chete + "ме"; + _ => chete + "м" + }; + VPres Pl P2 => chete + "те"; + VPres Pl P3 => case cheta of { + vika + "м" => case chete of { + dad + "е" => dad + "ат"; + vika => vika + "т" + }; + _ => cheta + "т" + }; + VAorist Sg P1 => chetoh; + VAorist Sg _ => case chetoh of { + chet+"ох" => chete; + zova+ "х" => zova + }; + VAorist Pl P1 => chetoh + "ме"; + VAorist Pl P2 => chetoh + "те"; + VAorist Pl P3 => chetoh + "а"; + VImperfect Sg P1 => chetqh; + VImperfect Sg _ => case chete of { + rabot + "и" => rabot + "eше"; + _ => chete + "ше" + }; + VImperfect Pl P1 => chetqh + "ме"; + VImperfect Pl P2 => chetqh + "те"; + VImperfect Pl P3 => chetqh + "а"; + VPerfect aform =>let chel1 : Str = + case chel of { + pas+"ъл" => pas+"л"; + _ => chel + } + in (mkAdjective chel + (chel+"ия") + (chel+"ият") + (chel1+"a") + (chel1+"ата") + (chel1+"о") + (chel1+"ото") + (ia2e chel1+"и") + (ia2e chel1+"ите")).s ! aform ; + VPluPerfect aform => regAdjective chetql ! aform ; + VPassive aform => regAdjective cheten ! aform ; + VPresPart aform => regAdjective chetqst ! aform ; + VImperative Sg => cheti; + VImperative Pl => case cheti of { + chet + "и" => chet + "ете"; + ela => ela + "те" + }; + VGerund => case chete of { + rabot + "и" => rabot + "ейки"; + _ => chete + "йки" + } + } ; + vtype = VNormal ; + lock_V = <> + } ; + + +--2 Nouns + + mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> { + s = table { + NF Sg Indef => sg ; + NF Sg Def => case sg of { + _+"а"=>sg+"та" ; + _+"я"=>sg+"та" ; + _+"о"=>sg+"то" ; + _+"е"=>sg+"то" ; + _+"и"=>sg+"то" ; + s+"й"=>s +"я" ; + _+("тел"|"ар"|"яр"|"ден" + |"път"|"огън"|"сън" + |"кон"|"крал"|"цар" + |"зет"|"лакът"|"нокът") + =>sg +"я" ; + _ =>case g of { + DFem => sg+"та" ; + _ => sg+"а" + } + } ; + NF Pl Indef => pl ; + NF Pl Def => case pl of { + _+"а"=>pl+"та" ; + _+"е"=>pl+"те" ; + _+"и"=>pl+"те" ; + s+"я"=>s +"та" ; + s =>s +"те" + } ; + NFSgDefNom => case sg of { + _+"а"=>sg+"та" ; + _+"я"=>sg+"та" ; + _+"о"=>sg+"то" ; + _+"е"=>sg+"то" ; + _+"и"=>sg+"то" ; + s+"й"=>s +"ят" ; + _+("тел"|"ар"|"яр"|"ден" + |"път"|"огън"|"сън" + |"кон"|"крал"|"цар" + |"зет"|"лакът"|"нокът") + =>sg+"ят" ; + _ =>case g of { + DFem => sg+"та" ; + _ => sg+"ът" + } + } ; + NFPlCount => count ; + NFVocative => voc + } ; + g = g ; + lock_N = <> + } ; + + +--2 Adjectives + + mkAdjective : (_,_,_,_,_,_,_,_,_ : Str) -> A = + \dobyr,dobria,dobriat,dobra,dobrata,dobro,dobroto,dobri,dobrite -> { + s = table { + ASg Masc Indef => dobyr ; + ASg Masc Def => dobria ; + ASgMascDefNom => dobriat ; + ASg Fem Indef => dobra ; + ASg Fem Def => dobrata ; + ASg Neut Indef => dobro ; + ASg Neut Def => dobroto ; + APl Indef => dobri ; + APl Def => dobrite + } ; + lock_A = <> + } ; } \ No newline at end of file diff --git a/lib/resource/bulgarian/MorphoFunsBul.gf b/lib/resource/bulgarian/MorphoFunsBul.gf new file mode 100644 index 000000000..336f79fe1 --- /dev/null +++ b/lib/resource/bulgarian/MorphoFunsBul.gf @@ -0,0 +1,99 @@ +--# -path=.:../abstract:../../prelude:../common + +resource MorphoFunsBul = open + Prelude, + CatBul, + MorphoBul + in { + +oper +--2 Adverbs + +-- Adverbs are not inflected. Most lexical ones have position +-- after the verb. Some can be preverbal (e.g. "always"). + + mkAdv : Str -> Adv = \x -> ss x ** {lock_Adv = <>} ; + mkAdV : Str -> AdV = \x -> ss x ** {lock_AdV = <>} ; + +-- Adverbs modifying adjectives and sentences can also be formed. + + mkAdA : Str -> AdA = \x -> ss x ** {lock_AdA = <>} ; + + +--2 Two-place adjectives +-- +-- Two-place adjectives need a preposition for their second argument. + + mkA2 : A -> Prep -> A2 ; + mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + + +--2 Verbs +-- + + reflV : V -> Case -> V ; + reflV v c = {s = v.s; vtype = VMedial c; lock_V=<>} ; + + phrasalV : V -> Case -> V ; + phrasalV v c = {s = v.s; vtype = VPhrasal c; lock_V=<>} ; + + +--3 Two-place verbs +-- + + prepV2 : V -> Prep -> V2 ; + prepV2 v p = {s = v.s; c2 = p; vtype = v.vtype; lock_V2 = <>} ; + + dirV2 : V -> V2 ; + dirV2 v = prepV2 v noPrep ; + + +--3 Three-place verbs +-- +-- Three-place (ditransitive) verbs need two prepositions, of which +-- the first one or both can be absent. + + mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about + mkV3 v p q = {s = v.s; s1 = v.s1; c2 = p; c3 = q; vtype = v.vtype; lock_V3 = <>} ; + + dirV3 : V -> Prep -> V3 ; -- give,_,to + dirV3 v p = mkV3 v noPrep p ; + + dirdirV3 : V -> V3 ; -- give,_,_ + dirdirV3 v = dirV3 v noPrep ; + + +--3 Other verbs +-- + + mkVS : V -> VS ; + mkVS v = v ** {lock_VS = <>} ; + + mkVV : V -> VV ; + mkVV v = v ** {lock_VV = <>} ; + + mkVA : V -> VA ; + mkVA v = v ** {lock_VA = <>} ; + + +--2 Prepositions +-- +-- A preposition as used for rection in the lexicon, as well as to +-- build $PP$s in the resource API, just requires a string. + + mkPrep : Str -> Case -> Prep = \p,c -> {s = p; c = c; lock_Prep = <>} ; + noPrep : Prep = mkPrep [] Acc ; + + +--2 Proper Names +-- + mkPN : Str -> Gender -> PN ; + mkPN s g = {s = s; g = g ; lock_PN = <>} ; + + +--2 IAdv +-- + + mkIAdv : Str -> IAdv ; + mkIAdv s = {s1 = s; s2 = s + "то"; lock_IAdv = <>} ; +} \ No newline at end of file diff --git a/lib/resource/bulgarian/NumeralBul.gf b/lib/resource/bulgarian/NumeralBul.gf index 6ddea8053..d09573b6c 100644 --- a/lib/resource/bulgarian/NumeralBul.gf +++ b/lib/resource/bulgarian/NumeralBul.gf @@ -30,15 +30,17 @@ lin pot01 = NCard DFemDef => "едната" ; NCard DNeutIndef => "едно" ; NCard DNeutDef => "едното" ; - NOrd aform => (mkAdjective "първи" - "първия" - "първият" - "първа" - "първата" - "първо" - "първото" - "първи" - "първите").s ! aform + NOrd aform => case aform of { + ASg Masc Indef => "първи" ; + ASg Masc Def => "първия" ; + ASgMascDefNom => "първият" ; + ASg Fem Indef => "първа" ; + ASg Fem Def => "първата" ; + ASg Neut Indef => "първо" ; + ASg Neut Def => "първото" ; + APl Indef => "първи" ; + APl Def => "първите" + } } ; teen => mkCardOrd "единадесет" "единадесетима" "единадесет" "единадесети" ; ten => mkCardOrd "десет" "десетима" "десет" "десети" ; @@ -119,7 +121,7 @@ lin pot3plus n m = { mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ти") ; mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { - s = table {NCard _ => c ; NOrd aform => (regAdjective o).s ! aform} ; + s = table {NCard _ => c ; NOrd aform => regAdjective o ! aform} ; n = n } ; diff --git a/lib/resource/bulgarian/ParadigmsBul.gf b/lib/resource/bulgarian/ParadigmsBul.gf index 90eb64189..b3f4d6a0c 100644 --- a/lib/resource/bulgarian/ParadigmsBul.gf +++ b/lib/resource/bulgarian/ParadigmsBul.gf @@ -1,120 +1,1455 @@ ---# -path=.:../abstract:../../prelude:../common - ---1 Bulgarian Lexical Paradigms --- --- Krasimir Angelov 2008 --- --- This is an API for the user of the resource grammar --- for adding lexical items. It gives functions for forming --- expressions of open categories: nouns, adjectives, verbs. --- --- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API, $Structural.gf$. --- --- The main difference with $MorphoBul.gf$ is that the types --- referred to are compiled resource grammar types. We have moreover --- had the design principle of always having existing forms, rather --- than stems, as string arguments of the paradigms. --- --- The structure of functions for each word class $C$ is the following: --- first we give a handful of patterns that aim to cover all --- regular cases. Then we give a worst-case function $mkC$, which serves as an --- escape to construct the most irregular words of type $C$. - -resource ParadigmsBul = VerbParadigmsBul, AdjParadigmsBul ** open - (Predef=Predef), - Prelude, +resource ParadigmsBul = MorphoFunsBul ** open + Predef, + Prelude, MorphoBul, CatBul in { - oper ---3 Two-place adjectives --- --- Two-place adjectives need a preposition for their second argument. - - mkA2 : A -> Prep -> A2 ; - ---2 Adverbs - --- Adverbs are not inflected. Most lexical ones have position --- after the verb. Some can be preverbal (e.g. "always"). - - mkAdv : Str -> Adv ; - mkAdV : Str -> AdV ; - --- Adverbs modifying adjectives and sentences can also be formed. - - mkAdA : Str -> AdA ; - ---2 Prepositions --- --- A preposition as used for rection in the lexicon, as well as to --- build $PP$s in the resource API, just requires a string. - - mkPrep : Str -> Case -> Prep ; - noPrep : Prep ; - - mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; - ---2 Verbs --- - - reflV : V -> Case -> V ; - phrasalV : V -> Case -> V ; - ---3 Two-place verbs --- --- Two-place verbs need a preposition, except the special case with direct object. --- (transitive verbs). Notice that a particle comes from the $V$. - - reflV v c = {s = v.s; vtype = VMedial c; lock_V=<>} ; - phrasalV v c = {s = v.s; vtype = VPhrasal c; lock_V=<>} ; - - mkAdv x = ss x ** {lock_Adv = <>} ; - mkAdV x = ss x ** {lock_AdV = <>} ; - mkAdA x = ss x ** {lock_AdA = <>} ; - - prepV2 : V -> Prep -> V2 ; - dirV2 : V -> V2 ; - ---3 Three-place verbs --- --- Three-place (ditransitive) verbs need two prepositions, of which --- the first one or both can be absent. - - mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about - dirV3 : V -> Prep -> V3 ; -- give,_,to - dirdirV3 : V -> V3 ; -- give,_,_ - - mkVS : V -> VS ; - - mkVV : V -> VV ; - - mkVA : V -> VA ; - - mkPN : Str -> Gender -> PN ; - - mkIAdv : Str -> IAdv ; - - - mkPrep p c = {s = p; c = c; lock_Prep = <>} ; - noPrep = mkPrep [] Acc ; - - prepV2 v p = {s = v.s; c2 = p; vtype = v.vtype; lock_V2 = <>} ; - dirV2 v = prepV2 v noPrep ; - - mkV3 v p q = {s = v.s; s1 = v.s1; c2 = p; c3 = q; vtype = v.vtype; lock_V3 = <>} ; - dirV3 v p = mkV3 v noPrep p ; - dirdirV3 v = dirV3 v noPrep ; - - mkVS v = v ** {lock_VS = <>} ; - - mkVV v = v ** {lock_VV = <>} ; - - mkVA v = v ** {lock_VA = <>} ; - - mkPN s g = {s = s; g = g ; lock_PN = <>} ; - - mkIAdv s = {s1 = s; s2 = s + "то"; lock_IAdv = <>} ; + mkN001 : Str -> N ; + mkN001 base = let v0 = base + in mkNoun (v0) + (v0+"ове") + (v0+"а") + (v0+"-") + DMasc ; + mkN002 : Str -> N ; + mkN002 base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"я"+v1) + (v0+"е"+v1+"ове") + (v0+"я"+v1+"а") + (v0+"-") + DMasc ; + mkN002a : Str -> N ; + mkN002a base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"я"+v1) + (v0+"е"+v1+"ове") + (v0+"я"+v1+"а") + (v0+"-") + DMasc ; + mkN003 : Str -> N ; + mkN003 base = let v0 = tk 3 base; + v1 = last (base) + in mkNoun (v0+"ръ"+v1) + (v0+"ър"+v1+"ове") + (v0+"ър"+v1+"а") + (v0+"-") + DMasc ; + mkN004 : Str -> N ; + mkN004 base = let v0 = tk 4 base + in mkNoun (v0+"ятър") + (v0+"етрове") + (v0+"ятъра") + (v0+"-") + DMasc ; + mkN005 : Str -> N ; + mkN005 base = let v0 = base + in mkNoun (v0) + (v0+"ове") + (v0+"а") + (v0+"-") + DMasc ; + mkN006 : Str -> N ; + mkN006 base = let v0 = base + in mkNoun (v0) + (v0+"ове") + (v0+"а") + (v0+"-") + DMasc ; + mkN007 : Str -> N ; + mkN007 base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"а") + (v0+"-") + DMasc ; + mkN007b : Str -> N ; + mkN007b base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"а") + (v0+"о") + DMasc ; + mkN007a : Str -> N ; + mkN007a base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"а") + (v0+"е") + DMascPersonal ; + mkN008 : Str -> N ; + mkN008 base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"е"+v1) + (v0+v1+"и") + (v0+"е"+v1+"а") + (v0+"-") + DMasc ; + mkN008a : Str -> N ; + mkN008a base = let v0 = tk 2 base + in mkNoun (v0+"ец") + (v0+"ци") + (v0+"-") + (v0+"ецо") + DMasc ; + mkN009 : Str -> N ; + mkN009 base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"ъ"+v1) + (v0+v1+"и") + (v0+"ъ"+v1+"а") + (v0+"-") + DMasc ; + mkN009a : Str -> N ; + mkN009a base = let v0 = tk 2 base + in mkNoun (v0+"ър") + (v0+"рове") + (v0+"ъра") + (v0+"-") + DMasc ; + mkN010 : Str -> N ; + mkN010 base = let v0 = tk 2 base + in mkNoun (v0+"ър") + (v0+"ри") + (v0+"ра") + (v0+"-") + DMasc ; + mkN011 : Str -> N ; + mkN011 base = let v0 = tk 2 base + in mkNoun (v0+"ъм") + (v0+"ми") + (v0+"ъма") + (v0+"-") + DMasc ; + mkN012 : Str -> N ; + mkN012 base = let v0 = tk 3 base + in mkNoun (v0+"рък") + (v0+"ърци") + (v0+"-") + (v0+"ърко") + DMasc ; + mkN013 : Str -> N ; + mkN013 base = let v0 = tk 2 base + in mkNoun (v0+"ец") + (v0+"йци") + (v0+"-") + (v0+"ецо") + DMasc ; + mkN014 : Str -> N ; + mkN014 base = let v0 = tk 1 base + in mkNoun (v0+"к") + (v0+"ци") + (v0+"ка") + (v0+"-") + DMasc ; + mkN014a : Str -> N ; + mkN014a base = let v0 = tk 1 base + in mkNoun (v0+"к") + (v0+"ци") + (v0+"ка") + (v0+"ко") + DMasc ; + mkN015 : Str -> N ; + mkN015 base = let v0 = tk 1 base + in mkNoun (v0+"г") + (v0+"зи") + (v0+"га") + (v0+"-") + DMasc ; + mkN016 : Str -> N ; + mkN016 base = let v0 = tk 1 base + in mkNoun (v0+"х") + (v0+"си") + (v0+"ха") + (v0+"-") + DMasc ; + mkN017 : Str -> N ; + mkN017 base = let v0 = tk 1 base + in mkNoun (v0+"к") + (v0+"ни") + (v0+"ка") + (v0+"-") + DMasc ; + mkN018 : Str -> N ; + mkN018 base = let v0 = tk 2 base + in mkNoun (v0+"ин") + (v0+"и") + (v0+"-") + (v0+"ино") + DMasc ; + mkN018a : Str -> N ; + mkN018a base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"и"+v1) + (v0+"и") + (v0+"-") + (v0+"-") + DMasc ; + mkN019 : Str -> N ; + mkN019 base = let v0 = tk 2 base + in mkNoun (v0+"ък") + (v0+"ци") + (v0+"-") + (v0+"ко") + DMasc ; + mkN019a : Str -> N ; + mkN019a base = let v0 = tk 2 base + in mkNoun (v0+"ек") + (v0+"йци") + (v0+"ека") + (v0+"-") + DMasc ; + mkN020 : Str -> N ; + mkN020 base = let v0 = tk 3 base; + v1 = last (tk 2 base) + in mkNoun (v0+v1+"ец") + (v0+"ъ"+v1+"ци") + (v0+"-") + (v0+v1+"ецо") + DMasc ; + mkN021 : Str -> N ; + mkN021 base = let v0 = tk 3 base + in mkNoun (v0+"чин") + (v0+"ци") + (v0+"-") + (v0+"чино") + DMasc ; + mkN022 : Str -> N ; + mkN022 base = let v0 = base + in mkNoun (v0) + (v0+"а") + (v0+"а") + (v0+"-") + DMasc ; + mkN023 : Str -> N ; + mkN023 base = let v0 = tk 2 base + in mkNoun (v0+"ин") + (v0+"а") + (v0+"-") + (v0+"ине") + DMasc ; + mkN024 : Str -> N ; + mkN024 base = let v0 = base + in mkNoun (v0) + (v0+"е") + (v0+"-") + (v0+"о") + DMasc ; + mkN024a : Str -> N ; + mkN024a base = let v0 = tk 1 base + in mkNoun (v0+"з") + (v0+"зе") + (v0+"-") + (v0+"же") + DMasc ; + mkN025 : Str -> N ; + mkN025 base = let v0 = base + in mkNoun (v0) + (v0+"я") + (v0+"-") + (v0+"е") + DMascPersonal ; + mkN026 : Str -> N ; + mkN026 base = let v0 = base + in mkNoun (v0) + (v0+"илища") + (v0+"а") + (v0+"-") + DMasc ; + mkN027 : Str -> N ; + mkN027 base = let v0 = tk 2 base + in mkNoun (v0+"ец") + (v0+"овце") + (v0+"еца") + (v0+"-") + DMasc ; + mkN028 : Str -> N ; + mkN028 base = let v0 = tk 1 base + in mkNoun (v0+"й") + (v0+"еве") + (v0+"я") + (v0+"-") + DMasc ; + mkN028a : Str -> N ; + mkN028a base = let v0 = tk 1 base + in mkNoun (v0+"й") + (v0+"йове") + (v0+"я") + (v0+"-") + DMasc ; + mkN029 : Str -> N ; + mkN029 base = let v0 = base + in mkNoun (v0) + (v0+"ьове") + (v0+"-") + (v0+"ко") + DMasc ; + mkN030 : Str -> N ; + mkN030 base = let v0 = tk 2 base + in mkNoun (v0+"ън") + (v0+"ньове") + (v0+"ъня") + (v0+"-") + DMasc ; + mkN031 : Str -> N ; + mkN031 base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"я") + (v0+"-") + DMasc ; + mkN031a : Str -> N ; + mkN031a base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"-") + (v0+"ю") + DMasc ; + mkN032 : Str -> N ; + mkN032 base = let v0 = tk 1 base + in mkNoun (v0+"й") + (v0+"и") + (v0+"я") + (v0+"-") + DMasc ; + mkN032a : Str -> N ; + mkN032a base = let v0 = tk 1 base + in mkNoun (v0+"й") + (v0+"и") + (v0+"-") + (v0+"ю") + DMasc ; + mkN033 : Str -> N ; + mkN033 base = let v0 = tk 2 base + in mkNoun (v0+"ен") + (v0+"ни") + (v0+"ена") + (v0+"-") + DMasc ; + mkN034 : Str -> N ; + mkN034 base = let v0 = tk 2 base + in mkNoun (v0+"ът") + (v0+"ти") + (v0+"ътя") + (v0+"-") + DMasc ; + mkN035 : Str -> N ; + mkN035 base = let v0 = base + in mkNoun (v0) + (v0+"е") + (v0+"я") + (v0+"-") + DMasc ; + mkN035a : Str -> N ; + mkN035a base = let v0 = base + in mkNoun (v0) + (v0+"е") + (v0+"я") + (v0+"ю") + DMascPersonal ; + mkN036 : Str -> N ; + mkN036 base = let v0 = tk 1 base + in mkNoun (v0+"й") + (v0+"ища") + (v0+"я") + (v0+"-") + DMasc ; + mkN037 : Str -> N ; + mkN037 base = let v0 = base + in mkNoun (v0) + (v0+"ища") + (v0+"я") + (v0+"-") + DMasc ; + mkN038 : Str -> N ; + mkN038 base = let v0 = tk 1 base + in mkNoun (v0+"а") + (v0+"и") + (v0+"-") + (v0+"а") + DMascPersonal ; + mkN039 : Str -> N ; + mkN039 base = let v0 = tk 1 base + in mkNoun (v0+"я") + (v0+"и") + (v0+"-") + (v0+"-") + DMasc ; + mkN040 : Str -> N ; + mkN040 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"овци") + (v0+"-") + (v0+"о") + DMasc ; + mkN040a : Str -> N ; + mkN040a base = let v0 = base + in mkNoun (v0) + (v0+"-") + (v0+"-") + (v0+"-") + DMasc ; + mkN041 : Str -> N ; + mkN041 base = let v0 = tk 1 base + in mkNoun (v0+"а") + (v0+"и") + (v0+"и") + (v0+"-") + DFem ; + mkN041a : Str -> N ; + mkN041a base = let v0 = tk 1 base + in mkNoun (v0+"а") + (v0+"и") + (v0+"и") + (v0+"о") + DFem ; + mkN041b : Str -> N ; + mkN041b base = let v0 = tk 1 base + in mkNoun (v0+"а") + (v0+"и") + (v0+"и") + (v0+"е") + DFem ; + mkN042 : Str -> N ; + mkN042 base = let v0 = base + in mkNoun (v0) + (v0) + (v0) + (v0+"-") + DFem ; + mkN043 : Str -> N ; + mkN043 base = let v0 = tk 3 base; + v1 = last (tk 1 base) + in mkNoun (v0+"я"+v1+"а") + (v0+"е"+v1+"и") + (v0+"е"+v1+"и") + (v0+"-") + DFem ; + mkN043a : Str -> N ; + mkN043a base = let v0 = tk 4 base; + v1 = last (tk 2 base) + in mkNoun (v0+"я"+v1+"ка") + (v0+"е"+v1+"ки") + (v0+"е"+v1+"ки") + (v0+"-") + DFem ; + mkN044 : Str -> N ; + mkN044 base = let v0 = tk 1 base + in mkNoun (v0+"а") + (v0+"е") + (v0+"е") + (v0+"-") + DFem ; + mkN045 : Str -> N ; + mkN045 base = let v0 = tk 2 base + in mkNoun (v0+"ка") + (v0+"це") + (v0+"це") + (v0+"-") + DFem ; + mkN046 : Str -> N ; + mkN046 base = let v0 = tk 2 base + in mkNoun (v0+"га") + (v0+"зе") + (v0+"зе") + (v0+"-") + DFem ; + mkN047 : Str -> N ; + mkN047 base = let v0 = tk 1 base + in mkNoun (v0+"я") + (v0+"и") + (v0+"и") + (v0+"-") + DFem ; + mkN048 : Str -> N ; + mkN048 base = let v0 = tk 1 base + in mkNoun (v0+"я") + (v0+"е") + (v0+"е") + (v0+"ьо") + DFem ; + mkN049 : Str -> N ; + mkN049 base = let v0 = base + in mkNoun (v0) + (v0+"и") + (v0+"и") + (v0+"-") + DFem ; + mkN050 : Str -> N ; + mkN050 base = let v0 = tk 2 base + in mkNoun (v0+"ен") + (v0+"ни") + (v0+"ни") + (v0+"-") + DFem ; + mkN051 : Str -> N ; + mkN051 base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"ъ"+v1) + (v0+v1+"и") + (v0+v1+"и") + (v0+"-") + DFem ; + mkN052 : Str -> N ; + mkN052 base = let v0 = tk 5 base + in mkNoun (v0+"ялост") + (v0+"ялости") + (v0+"ялости") + (v0+"-") + DFem ; + mkN052a : Str -> N ; + mkN052a base = let v0 = tk 6 base + in mkNoun (v0+"ярност") + (v0+"ярности") + (v0+"ярности") + (v0+"-") + DFem ; + mkN053 : Str -> N ; + mkN053 base = let v0 = tk 3 base; + v1 = last (base) + in mkNoun (v0+"ръ"+v1) + (v0+"ър"+v1+"и") + (v0+"ър"+v1+"и") + (v0+"-") + DFem ; + mkN054 : Str -> N ; + mkN054 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"а") + (v0+"а") + (v0+"о") + DNeut ; + mkN055 : Str -> N ; + mkN055 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"а") + (v0+"а") + (v0+"о") + DNeut ; + mkN056 : Str -> N ; + mkN056 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"а") + (v0+"а") + (v0+"о") + DNeut ; + mkN057 : Str -> N ; + mkN057 base = let v0 = tk 3 base; + v1 = last (tk 1 base) + in mkNoun (v0+"я"+v1+"о") + (v0+"е"+v1+"а") + (v0+"е"+v1+"а") + (v0+"я"+v1+"о") + DNeut ; + mkN057a : Str -> N ; + mkN057a base = let v0 = tk 4 base + in mkNoun (v0+"ясто") + (v0+"еста") + (v0+"еста") + (v0+"ясто") + DNeut ; + mkN058 : Str -> N ; + mkN058 base = let v0 = tk 3 base + in mkNoun (v0+"яно") + (v0+"ена") + (v0+"ена") + (v0+"яно") + DNeut ; + mkN059 : Str -> N ; + mkN059 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"ене") + (v0+"ене") + (v0+"о") + DNeut ; + mkN060 : Str -> N ; + mkN060 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"еса") + (v0+"еса") + (v0+"о") + DNeut ; + mkN061 : Str -> N ; + mkN061 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"а") + (v0+"а") + (v0+"о") + DNeut ; + mkN062 : Str -> N ; + mkN062 base = let v0 = tk 1 base + in mkNoun (v0+"о") + (v0+"и") + (v0+"и") + (v0+"о") + DNeut ; + mkN063 : Str -> N ; + mkN063 base = let v0 = tk 2 base + in mkNoun (v0+"ко") + (v0+"чи") + (v0+"чи") + (v0+"ко") + DNeut ; + mkN064 : Str -> N ; + mkN064 base = let v0 = tk 2 base + in mkNoun (v0+"хо") + (v0+"ши") + (v0+"ши") + (v0+"хо") + DNeut ; + mkN065 : Str -> N ; + mkN065 base = let v0 = base + in mkNoun (v0) + (v0+"та") + (v0+"та") + (v0) + DNeut ; + mkN066 : Str -> N ; + mkN066 base = let v0 = tk 1 base + in mkNoun (v0+"е") + (v0+"а") + (v0+"а") + (v0+"е") + DNeut ; + mkN067 : Str -> N ; + mkN067 base = let v0 = tk 2 base + in mkNoun (v0+"те") + (v0+"ца") + (v0+"ца") + (v0+"те") + DNeut ; + mkN068 : Str -> N ; + mkN068 base = let v0 = tk 1 base + in mkNoun (v0+"е") + (v0+"я") + (v0+"я") + (v0+"е") + DNeut ; + mkN069 : Str -> N ; + mkN069 base = let v0 = base + in mkNoun (v0) + (v0+"на") + (v0+"на") + (v0) + DNeut ; + mkN070 : Str -> N ; + mkN070 base = let v0 = base + in mkNoun (v0) + (v0+"са") + (v0+"са") + (v0) + DNeut ; + mkN071 : Str -> N ; + mkN071 base = let v0 = tk 1 base + in mkNoun (v0+"е") + (v0+"ия") + (v0+"ия") + (v0+"е") + DNeut ; + mkN072 : Str -> N ; + mkN072 base = let v0 = tk 1 base + in mkNoun (v0+"е") + (v0+"я") + (v0+"я") + (v0+"е") + DNeut ; + mkN073 : Str -> N ; + mkN073 base = let v0 = base + in mkNoun (v0) + (v0+"та") + (v0+"та") + (v0) + DNeut ; + mkN074 : Str -> N ; + mkN074 base = let v0 = tk 1 base + in mkNoun (v0+"-") + (v0) + (v0) + (v0+"-") + DNeut ; + mkN075 : Str -> N ; + mkN075 base = let v0 = tk 1 base + in mkNoun (v0+"-") + (v0) + (v0) + (v0+"-") + DNeut ; + mkA076 : Str -> A ; + mkA076 base = let v0 = base + in mkAdjective (v0) + (v0+"ия") + (v0+"ият") + (v0+"а") + (v0+"ата") + (v0+"о") + (v0+"ото") + (v0+"и") + (v0+"ите") ; + mkA077 : Str -> A ; + mkA077 base = let v0 = base + in mkAdjective (v0) + (v0+"ия") + (v0+"ият") + (v0+"а") + (v0+"ата") + (v0+"е") + (v0+"ето") + (v0+"и") + (v0+"ите") ; + mkA078 : Str -> A ; + mkA078 base = let v0 = tk 1 base + in mkAdjective (v0+"и") + (v0+"ия") + (v0+"ият") + (v0+"а") + (v0+"ата") + (v0+"о") + (v0+"ото") + (v0+"и") + (v0+"ите") ; + mkA079 : Str -> A ; + mkA079 base = let v0 = tk 2 base + in mkAdjective (v0+"ен") + (v0+"ния") + (v0+"ният") + (v0+"на") + (v0+"ната") + (v0+"но") + (v0+"ното") + (v0+"ни") + (v0+"ните") ; + mkA080 : Str -> A ; + mkA080 base = let v0 = tk 2 base; + v1 = last (base) + in mkAdjective (v0+"ъ"+v1) + (v0+v1+"ия") + (v0+v1+"ият") + (v0+v1+"а") + (v0+v1+"ата") + (v0+v1+"о") + (v0+v1+"ото") + (v0+v1+"и") + (v0+v1+"ите") ; + mkA081 : Str -> A ; + mkA081 base = let v0 = tk 2 base; + v1 = last (base) + in mkAdjective (v0+"я"+v1) + (v0+"е"+v1+"ия") + (v0+"е"+v1+"ият") + (v0+"я"+v1+"а") + (v0+"я"+v1+"ата") + (v0+"я"+v1+"о") + (v0+"я"+v1+"ото") + (v0+"е"+v1+"и") + (v0+"е"+v1+"ите") ; + mkA082 : Str -> A ; + mkA082 base = let v0 = tk 3 base; + v1 = last (base) + in mkAdjective (v0+"ръ"+v1) + (v0+"ър"+v1+"ия") + (v0+"ър"+v1+"ият") + (v0+"ър"+v1+"а") + (v0+"ър"+v1+"ата") + (v0+"ър"+v1+"о") + (v0+"ър"+v1+"ото") + (v0+"ър"+v1+"и") + (v0+"ър"+v1+"ите") ; + mkA082a : Str -> A ; + mkA082a base = let v0 = tk 5 base + in mkAdjective (v0+"ързък") + (v0+"ръзкия") + (v0+"ръзкият") + (v0+"ръзка") + (v0+"ръзката") + (v0+"ръзко") + (v0+"ръзкото") + (v0+"ръзки") + (v0+"ръзките") ; + mkA083 : Str -> A ; + mkA083 base = let v0 = tk 4 base; + v1 = last (tk 2 base) + in mkAdjective (v0+"я"+v1+"ък") + (v0+"е"+v1+"кия") + (v0+"е"+v1+"кият") + (v0+"я"+v1+"ка") + (v0+"я"+v1+"ката") + (v0+"я"+v1+"ко") + (v0+"я"+v1+"кото") + (v0+"е"+v1+"ки") + (v0+"е"+v1+"ките") ; + mkA084 : Str -> A ; + mkA084 base = let v0 = tk 4 base; + v1 = last (tk 2 base) + in mkAdjective (v0+"е"+v1+"ен") + (v0+"е"+v1+"ния") + (v0+"е"+v1+"ният") + (v0+"я"+v1+"на") + (v0+"я"+v1+"ната") + (v0+"я"+v1+"но") + (v0+"я"+v1+"ното") + (v0+"е"+v1+"ни") + (v0+"е"+v1+"ните") ; + mkA084a : Str -> A ; + mkA084a base = let v0 = tk 5 base + in mkAdjective (v0+"естен") + (v0+"естния") + (v0+"естният") + (v0+"ястна") + (v0+"ястната") + (v0+"ястно") + (v0+"ястнота") + (v0+"естни") + (v0+"естните") ; + mkA085 : Str -> A ; + mkA085 base = let v0 = tk 2 base + in mkAdjective (v0+"ен") + (v0+"йния") + (v0+"йният") + (v0+"йна") + (v0+"йната") + (v0+"йно") + (v0+"йното") + (v0+"йни") + (v0+"йните") ; + mkA086 : Str -> A ; + mkA086 base = let v0 = base + in mkAdjective (v0) + (v0+"ия") + (v0+"ият") + (v0+"я") + (v0+"ята") + (v0+"ьо") + (v0+"ьото") + (v0+"и") + (v0+"ите") ; + mkA087 : Str -> A ; + mkA087 base = let v0 = tk 1 base + in mkAdjective (v0+"и") + (v0+"ия") + (v0+"ият") + (v0+"а") + (v0+"ата") + (v0+"е") + (v0+"ето") + (v0+"и") + (v0+"ите") ; + mkA088 : Str -> A ; + mkA088 base = let v0 = tk 1 base + in mkAdjective (v0+"и") + (v0+"ия") + (v0+"ият") + (v0+"я") + (v0+"ята") + (v0+"е") + (v0+"ето") + (v0+"и") + (v0+"ите") ; + mkA089 : Str -> A ; + mkA089 base = let v0 = tk 1 base + in mkAdjective (v0+"-") + (v0+"ия") + (v0+"ият") + (v0+"-") + (v0+"ата") + (v0+"-") + (v0+"ото") + (v0+"-") + (v0+"ите") ; + mkA089a : Str -> A ; + mkA089a base = let v0 = base + in mkAdjective (v0) + (v0) + (v0) + (v0) + (v0) + (v0) + (v0) + (v0) + (v0) ; + mkV142 : Str -> V ; + mkV142 base = let v0 = tk 3 base + in mkVerb (v0+"съм") + (v0+"е") + (v0+"бях") + (v0+"бях") + (v0+"бил") + (v0+"бил") + (v0+"-") + (v0+"-") + (v0+"бъди") ; + mkV143 : Str -> V ; + mkV143 base = let v0 = tk 3 base + in mkVerb (v0+"ъда") + (v0+"ъде") + (v0+"их") + (v0+"ъдех") + (v0+"ил") + (v0+"ъдел") + (v0+"-") + (v0+"ъдещ") + (v0+"ъди") ; + mkV144 : Str -> V ; + mkV144 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"-") + (v0+"-") + (v0+"-") ; + mkV145 : Str -> V ; + mkV145 base = let v0 = tk 2 base; + v1 = last (tk 1 base) + in mkVerb (v0+v1+"а") + (v0+v1+"е") + (v0+v1+"ох") + (v0+v1+"ях") + (v0+"л") + (v0+v1+"ял") + (v0+v1+"ен") + (v0+v1+"ящ") + (v0+v1+"и") ; + mkV145a : Str -> V ; + mkV145a base = let v0 = tk 3 base; + v1 = last (tk 2 base) + in mkVerb (v0+v1+"са") + (v0+v1+"се") + (v0+v1+"сох") + (v0+v1+"сях") + (v0+v1+"съл") + (v0+v1+"сял") + (v0+v1+"сен") + (v0+v1+"сящ") + (v0+v1+"си") ; + mkV145b : Str -> V ; + mkV145b base = let v0 = tk 2 base + in mkVerb (v0+"та") + (v0+"те") + (v0+"тох") + (v0+"тях") + (v0+"ъл") + (v0+"тял") + (v0+"-") + (v0+"тящ") + (v0+"ти") ; + mkV146 : Str -> V ; + mkV146 base = let v0 = tk 2 base + in mkVerb (v0+"да") + (v0+"де") + (v0+"дох") + (v0+"дех") + (v0+"шъл") + (v0+"дел") + (v0+"-") + (v0+"-") + (v0+"ди") ; + mkV146a : Str -> V ; + mkV146a base = let v0 = tk 3 base + in mkVerb (v0+"йда") + (v0+"йде") + (v0+"йдох") + (v0+"йдех") + (v0+"шъл") + (v0+"йдел") + (v0+"-") + (v0+"-") + (v0+"йди") ; + mkV147 : Str -> V ; + mkV147 base = let v0 = tk 3 base + in mkVerb (v0+"яза") + (v0+"езе") + (v0+"язох") + (v0+"езех") + (v0+"язъл") + (v0+"езел") + (v0+"-") + (v0+"-") + (v0+"ез") ; + mkV148 : Str -> V ; + mkV148 base = let v0 = tk 2 base + in mkVerb (v0+"ка") + (v0+"че") + (v0+"кох") + (v0+"чех") + (v0+"къл") + (v0+"чел") + (v0+"чен") + (v0+"чащ") + (v0+"чи") ; + mkV149 : Str -> V ; + mkV149 base = let v0 = tk 3 base + in mkVerb (v0+"ека") + (v0+"ече") + (v0+"якох") + (v0+"ечех") + (v0+"якъл") + (v0+"ечел") + (v0+"ечен") + (v0+"-") + (v0+"ечи") ; + mkV150 : Str -> V ; + mkV150 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"ян") + (v0+"-") + (v0+"и") ; + mkV150a : Str -> V ; + mkV150a base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"-") + (v0+"-") + (v0+"и") ; + mkV151 : Str -> V ; + mkV151 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"ах") + (v0+"ях") + (v0+"ал") + (v0+"ял") + (v0+"ящ") + (v0+"ан") + (v0+"и") ; + mkV152 : Str -> V ; + mkV152 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"ах") + (v0+"ех") + (v0+"ал") + (v0+"ел") + (v0+"ат") + (v0+"-") + (v0+"и") ; + mkV152a : Str -> V ; + mkV152a base = let v0 = tk 4 base + in mkVerb (v0+"ягна") + (v0+"егне") + (v0+"ягнах") + (v0+"ягнех") + (v0+"ягнал") + (v0+"ягнел") + (v0+"ягнат") + (v0+"-") + (v0+"егни") ; + mkV153 : Str -> V ; + mkV153 base = let v0 = tk 3 base + in mkVerb (v0+"яна") + (v0+"ене") + (v0+"янах") + (v0+"енех") + (v0+"янал") + (v0+"енел") + (v0+"янат") + (v0+"-") + (v0+"ени") ; + mkV154 : Str -> V ; + mkV154 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"е") + (v0+"ах") + (v0+"ех") + (v0+"ал") + (v0+"ел") + (v0+"ан") + (v0+"ещ") + (v0+"и") ; + mkV155 : Str -> V ; + mkV155 base = let v0 = tk 2 base + in mkVerb (v0+"ча") + (v0+"че") + (v0+"ках") + (v0+"чех") + (v0+"кал") + (v0+"чел") + (v0+"-") + (v0+"чещ") + (v0+"чи") ; + mkV156 : Str -> V ; + mkV156 base = let v0 = tk 2 base + in mkVerb (v0+"жа") + (v0+"же") + (v0+"зах") + (v0+"жех") + (v0+"зал") + (v0+"жел") + (v0+"зан") + (v0+"-") + (v0+"жи") ; + mkV157 : Str -> V ; + mkV157 base = let v0 = tk 3 base + in mkVerb (v0+"ежа") + (v0+"еже") + (v0+"язах") + (v0+"ежех") + (v0+"язал") + (v0+"ежел") + (v0+"язан") + (v0+"ежещ") + (v0+"ежи") ; + mkV158 : Str -> V ; + mkV158 base = let v0 = tk 2 base + in mkVerb (v0+"жа") + (v0+"же") + (v0+"гах") + (v0+"жех") + (v0+"гал") + (v0+"жел") + (v0+"ган") + (v0+"жещ") + (v0+"жи") ; + mkV159 : Str -> V ; + mkV159 base = let v0 = tk 2 base + in mkVerb (v0+"ша") + (v0+"ше") + (v0+"сах") + (v0+"шех") + (v0+"сал") + (v0+"шел") + (v0+"сан") + (v0+"шещ") + (v0+"ши") ; + mkV160 : Str -> V ; + mkV160 base = let v0 = tk 2 base + in mkVerb (v0+"ея") + (v0+"ее") + (v0+"ях") + (v0+"еех") + (v0+"ял") + (v0+"еел") + (v0+"ян") + (v0+"еещ") + (v0+"ей") ; + mkV160a : Str -> V ; + mkV160a base = let v0 = tk 2 base + in mkVerb (v0+"ея") + (v0+"ее") + (v0+"ах") + (v0+"еех") + (v0+"ал") + (v0+"еел") + (v0+"ан") + (v0+"еещ") + (v0+"ей") ; + mkV161 : Str -> V ; + mkV161 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"е") + (v0+"х") + (v0+"ех") + (v0+"л") + (v0+"ел") + (v0+"н") + (v0+"ещ") + (v0+"й") ; + mkV161a : Str -> V ; + mkV161a base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"е") + (v0+"х") + (v0+"ех") + (v0+"л") + (v0+"ел") + (v0+"т") + (v0+"ещ") + (v0+"й") ; + mkV162 : Str -> V ; + mkV162 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"е") + (v0+"ях") + (v0+"ех") + (v0+"ял") + (v0+"ел") + (v0+"-") + (v0+"ещ") + (v0+"й") ; + mkV163 : Str -> V ; + mkV163 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"е") + (v0+"х") + (v0+"ех") + (v0+"л") + (v0+"ел") + (v0+"т") + (v0+"ещ") + (v0+"й") ; + mkV164 : Str -> V ; + mkV164 base = let v0 = tk 2 base + in mkVerb (v0+"ея") + (v0+"ее") + (v0+"ях") + (v0+"еех") + (v0+"ял") + (v0+"еел") + (v0+"ят") + (v0+"еещ") + (v0+"ей") ; + mkV165 : Str -> V ; + mkV165 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"е") + (v0+"-") + (v0+"ех") + (v0+"-") + (v0+"ел") + (v0+"-") + (v0+"ещ") + (v0+"и") ; + mkV166 : Str -> V ; + mkV166 base = let v0 = tk 2 base + in mkVerb (v0+"га") + (v0+"же") + (v0+"жах") + (v0+"жех") + (v0+"гъл") + (v0+"жел") + (v0+"-") + (v0+"жещ") + (v0+"-") ; + mkV167 : Str -> V ; + mkV167 base = let v0 = tk 2 base + in mkVerb (v0+"ка") + (v0+"че") + (v0+"ках") + (v0+"чех") + (v0+"кал") + (v0+"чел") + (v0+"кан") + (v0+"чещ") + (v0+"чи") ; + mkV168 : Str -> V ; + mkV168 base = let v0 = tk 1 base + in mkVerb (v0+"м") + (v0+"де") + (v0+"дох") + (v0+"дях") + (v0+"л") + (v0+"дял") + (v0+"ден") + (v0+"-") + (v0+"й") ; + mkV169 : Str -> V ; + mkV169 base = let v0 = tk 1 base + in mkVerb (v0+"м") + (v0+"де") + (v0+"дох") + (v0+"дях") + (v0+"л") + (v0+"дял") + (v0+"ден") + (v0+"дещ") + (v0+"ж") ; + mkV170 : Str -> V ; + mkV170 base = let v0 = tk 3 base + in mkVerb (v0+"ера") + (v0+"ере") + (v0+"рах") + (v0+"ерях") + (v0+"рал") + (v0+"ерял") + (v0+"ран") + (v0+"ерящ") + (v0+"ери") ; + mkV171 : Str -> V ; + mkV171 base = let v0 = tk 2 base + in mkVerb (v0+"ма") + (v0+"ме") + (v0+"х") + (v0+"мех") + (v0+"л") + (v0+"мел") + (v0+"т") + (v0+"-") + (v0+"ми") ; + mkV172 : Str -> V ; + mkV172 base = let v0 = tk 4 base + in mkVerb (v0+"ълна") + (v0+"ълне") + (v0+"лех") + (v0+"ълнех") + (v0+"лел") + (v0+"ълнел") + (v0+"ълнат") + (v0+"ълнещ") + (v0+"ълни") ; + mkV173 : Str -> V ; + mkV173 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"их") + (v0+"ех") + (v0+"ил") + (v0+"ел") + (v0+"ен") + (v0+"ещ") + (v0+"и") ; + mkV174 : Str -> V ; + mkV174 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"их") + (v0+"ях") + (v0+"ил") + (v0+"ял") + (v0+"ен") + (v0+"ящ") + (v0+"и") ; + mkV175 : Str -> V ; + mkV175 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"их") + (v0+"ях") + (v0+"ил") + (v0+"ял") + (v0+"ен") + (v0+"ящ") + (v0+"й") ; + mkV176 : Str -> V ; + mkV176 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"и") + (v0+"их") + (v0+"ех") + (v0+"ил") + (v0+"ел") + (v0+"ен") + (v0+"ещ") + (v0+"и") ; + mkV177 : Str -> V ; + mkV177 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"ян") + (v0+"ящ") + (v0+"и") ; + mkV178 : Str -> V ; + mkV178 base = let v0 = tk 1 base + in mkVerb (v0+"а") + (v0+"и") + (v0+"ах") + (v0+"ех") + (v0+"ал") + (v0+"ел") + (v0+"-") + (v0+"ащ") + (v0+"и") ; + mkV179 : Str -> V ; + mkV179 base = let v0 = tk 4 base + in mkVerb (v0+"ържа") + (v0+"ържи") + (v0+"ържах") + (v0+"ържех") + (v0+"ържал") + (v0+"ържел") + (v0+"ържан") + (v0+"ържащ") + (v0+"ръж") ; + mkV180 : Str -> V ; + mkV180 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"-") + (v0+"ящ") + (v0+"й") ; + mkV181 : Str -> V ; + mkV181 base = let v0 = tk 2 base + in mkVerb (v0+"дя") + (v0+"ди") + (v0+"дях") + (v0+"дех") + (v0+"дял") + (v0+"дел") + (v0+"дян") + (v0+"-") + (v0+"ж") ; + mkV182 : Str -> V ; + mkV182 base = let v0 = tk 1 base + in mkVerb (v0+"я") + (v0+"и") + (v0+"ах") + (v0+"ях") + (v0+"ал") + (v0+"ял") + (v0+"-") + (v0+"ящ") + (v0+"и") ; + mkV183 : Str -> V ; + mkV183 base = let v0 = tk 3 base + in mkVerb (v0+"ежа") + (v0+"ежи") + (v0+"язах") + (v0+"ежех") + (v0+"язал") + (v0+"ежел") + (v0+"язан") + (v0+"ежещ") + (v0+"ежи") ; + mkV184 : Str -> V ; + mkV184 base = let v0 = tk 3 base + in mkVerb (v0+"еля") + (v0+"ели") + (v0+"лях") + (v0+"елех") + (v0+"лял") + (v0+"елел") + (v0+"лян") + (v0+"елещ") + (v0+"ели") ; + mkV185 : Str -> V ; + mkV185 base = let v0 = tk 3 base + in mkVerb (v0+"оля") + (v0+"оли") + (v0+"лах") + (v0+"олех") + (v0+"лал") + (v0+"олел") + (v0+"лан") + (v0+"олещ") + (v0+"оли") ; + mkV186 : Str -> V ; + mkV186 base = let v0 = tk 2 base + in mkVerb (v0+"ам") + (v0+"а") + (v0+"ах") + (v0+"ах") + (v0+"ал") + (v0+"ал") + (v0+"ан") + (v0+"ащ") + (v0+"ай") ; + mkV187 : Str -> V ; + mkV187 base = let v0 = tk 2 base + in mkVerb (v0+"ям") + (v0+"я") + (v0+"ях") + (v0+"ях") + (v0+"ял") + (v0+"ял") + (v0+"ян") + (v0+"ящ") + (v0+"яй") ; } \ No newline at end of file diff --git a/lib/resource/bulgarian/ResBul.gf b/lib/resource/bulgarian/ResBul.gf index bfa4e0c12..d270bab76 100644 --- a/lib/resource/bulgarian/ResBul.gf +++ b/lib/resource/bulgarian/ResBul.gf @@ -281,10 +281,10 @@ resource ResBul = ParamX ** open Prelude in { VImperfect Pl P1 => "бяхме" ++ se ; VImperfect Pl P2 => "бяхте" ++ se ; VImperfect Pl P3 => "бяха" ++ se ; - VPerfect aform => (regAdjective "бил").s ! aform ++ se ; - VPluPerfect aform => (regAdjective "бил").s ! aform ++ se ; - VPassive aform => (regAdjective "бъден").s ! aform ++ se ; - VPresPart aform => (regAdjective "бъдещ").s ! aform ++ se ; + VPerfect aform => regAdjective "бил" ! aform ++ se ; + VPluPerfect aform => regAdjective "бил" ! aform ++ se ; + VPassive aform => regAdjective "бъден" ! aform ++ se ; + VPresPart aform => regAdjective "бъдещ" ! aform ++ se ; VImperative Sg => "бъди" ++ se ; VImperative Pl => "бъдете" ++ se ; VGerund => "бидейки" ++ se @@ -308,10 +308,10 @@ resource ResBul = ParamX ** open Prelude in { VImperfect Pl P1 => "бъдехме" ++ se ; VImperfect Pl P2 => "бъдехте" ++ se ; VImperfect Pl P3 => "бъдеха" ++ se ; - VPerfect aform => (regAdjective "бил").s ! aform ++ se ; - VPluPerfect aform => (regAdjective "бъдел").s ! aform ++ se ; - VPassive aform => (regAdjective "бъден").s ! aform ++ se ; - VPresPart aform => (regAdjective "бъдещ").s ! aform ++ se ; + VPerfect aform => regAdjective "бил" ! aform ++ se ; + VPluPerfect aform => regAdjective "бъдел" ! aform ++ se ; + VPassive aform => regAdjective "бъден" ! aform ++ se ; + VPresPart aform => regAdjective "бъдещ" ! aform ++ se ; VImperative Sg => "бъди" ++ se ; VImperative Pl => "бъдете" ++ se ; VGerund => "бъдейки" ++ se @@ -364,95 +364,18 @@ resource ResBul = ParamX ** open Prelude in { _ => s }; - mkAdjective : (_,_,_,_,_,_,_,_,_ : Str) -> {s : AForm => Str} = - \dobyr,dobria,dobriat,dobra,dobrata,dobro,dobroto,dobri,dobrite -> { - s = table { - ASg Masc Indef => dobyr ; - ASg Masc Def => dobria ; - ASgMascDefNom => dobriat ; - ASg Fem Indef => dobra ; - ASg Fem Def => dobrata ; - ASg Neut Indef => dobro ; - ASg Neut Def => dobroto ; - APl Indef => dobri ; - APl Def => dobrite - } - } ; - - regAdjective : Str -> {s : AForm => Str} = - \base -> mkAdjective base - (base+"ия") - (base+"ият") - (base+"a") - (base+"ата") - (base+"о") - (base+"ото") - (ia2e base+"и") - (ia2e base+"ите") ; - - mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> Verb = - \cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti -> { - s = table { - VPres Sg P1 => cheta; - VPres Sg P2 => chete + "ш"; - VPres Sg P3 => chete; - VPres Pl P1 => case chete of { - _ + ("а"|"я") => chete + "ме"; - _ => chete + "м" - }; - VPres Pl P2 => chete + "те"; - VPres Pl P3 => case cheta of { - vika + "м" => case chete of { - dad + "е" => dad + "ат"; - vika => vika + "т" - }; - _ => cheta + "т" - }; - VAorist Sg P1 => chetoh; - VAorist Sg _ => case chetoh of { - chet+"ох" => chete; - zova+ "х" => zova - }; - VAorist Pl P1 => chetoh + "ме"; - VAorist Pl P2 => chetoh + "те"; - VAorist Pl P3 => chetoh + "а"; - VImperfect Sg P1 => chetqh; - VImperfect Sg _ => case chete of { - rabot + "и" => rabot + "eше"; - _ => chete + "ше" - }; - VImperfect Pl P1 => chetqh + "ме"; - VImperfect Pl P2 => chetqh + "те"; - VImperfect Pl P3 => chetqh + "а"; - VPerfect aform =>let chel1 : Str = - case chel of { - pas+"ъл" => pas+"л"; - _ => chel - } - in (mkAdjective chel - (chel+"ия") - (chel+"ият") - (chel1+"a") - (chel1+"ата") - (chel1+"о") - (chel1+"ото") - (ia2e chel1+"и") - (ia2e chel1+"ите")).s ! aform ; - VPluPerfect aform => (regAdjective chetql ).s ! aform ; - VPassive aform => (regAdjective cheten ).s ! aform ; - VPresPart aform => (regAdjective chetqst).s ! aform ; - VImperative Sg => cheti; - VImperative Pl => case cheti of { - chet + "и" => chet + "ете"; - ela => ela + "те" - }; - VGerund => case chete of { - rabot + "и" => rabot + "ейки"; - _ => chete + "йки" - } - } ; - vtype = VNormal - } ; + regAdjective : Str -> AForm => Str = + \base -> table { + ASg Masc Indef => base ; + ASg Masc Def => (base+"ия") ; + ASgMascDefNom => (base+"ият") ; + ASg Fem Indef => (base+"a") ; + ASg Fem Def => (base+"ата") ; + ASg Neut Indef => (base+"о") ; + ASg Neut Def => (base+"ото") ; + APl Indef => (ia2e base+"и") ; + APl Def => (ia2e base+"ите") + }; -- For $Sentence$. @@ -497,15 +420,17 @@ resource ResBul = ParamX ** open Prelude in { NCard dg => digitGenderSpecies dva dvama dve ! dg ; NOrd aform => let vtora = init vtori + "а" ; vtoro = init vtori + "о" - in (mkAdjective vtori - (vtori+"я") - (vtori+"ят") - vtora - (vtora+"та") - vtoro - (vtoro+"то") - vtori - (vtori+"те")).s ! aform + in case aform of { + ASg Masc Indef => vtori ; + ASg Masc Def => vtori+"я" ; + ASgMascDefNom => vtori+"ят" ; + ASg Fem Indef => vtora ; + ASg Fem Def => vtora+"та" ; + ASg Neut Indef => vtoro ; + ASg Neut Def => vtoro+"то" ; + APl Indef => vtori ; + APl Def => vtori+"те" + } } ; digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str = @@ -548,7 +473,17 @@ resource ResBul = ParamX ** open Prelude in { RObj Dat => mi ; RVoc => az } ; - gen = (mkAdjective moj moia moiat moia_ moiata moe moeto moi moite).s ; + gen = table { + ASg Masc Indef => moj ; + ASg Masc Def => moia ; + ASgMascDefNom => moiat ; + ASg Fem Indef => moia_ ; + ASg Fem Def => moiata ; + ASg Neut Indef => moe ; + ASg Neut Def => moeto ; + APl Indef => moi ; + APl Def => moite + } ; a = { gn = gn ; p = p diff --git a/lib/resource/bulgarian/VerbParadigmsBul.gf b/lib/resource/bulgarian/VerbParadigmsBul.gf deleted file mode 100644 index 03013880c..000000000 --- a/lib/resource/bulgarian/VerbParadigmsBul.gf +++ /dev/null @@ -1,644 +0,0 @@ -resource VerbParadigmsBul = open - (Predef=Predef), - Prelude, - MorphoBul, - CatBul - in { -oper - mkV142 : Str -> V ; - mkV142 base = let stem = (init (init (init base))) - in mkVerb (stem+"съм") - (stem+"е") - (stem+"бях") - (stem+"бях") - (stem+"бил") - (stem+"бил") - (stem+"-") - (stem+"-") - (stem+"бъди") - ** {s1 = [] ; lock_V = <>} ; - mkV143 : Str -> V ; - mkV143 base = let stem = (init (init (init base))) - in mkVerb (stem+"ъда") - (stem+"ъде") - (stem+"их, идох") - (stem+"ъдех, ях") - (stem+"ил") - (stem+"ъдел") - (stem+"-") - (stem+"ъдещ") - (stem+"ъди") - ** {s1 = [] ; lock_V = <>} ; - mkV144 : Str -> V ; - mkV144 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"-") - (stem+"-") - (stem+"-") - ** {s1 = [] ; lock_V = <>} ; - mkV145 : Str -> V ; - mkV145 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ох") - (stem+"ях") - (init stem+"л") - (stem+"ял") - (stem+"ен") - (stem+"ящ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV145a : Str -> V ; - mkV145a base = let stem = (init (init base)) - in mkVerb (stem+"са") - (stem+"се") - (stem+"сох") - (stem+"сях") - (stem+"съл") - (stem+"сял") - (stem+"сен") - (stem+"сящ") - (stem+"си") - ** {s1 = [] ; lock_V = <>} ; - mkV145b : Str -> V ; - mkV145b base = let stem = (init (init base)) - in mkVerb (stem+"та") - (stem+"те") - (stem+"тох") - (stem+"тях") - (stem+"ъл") - (stem+"тял") - (stem+"-") - (stem+"тящ") - (stem+"ти") - ** {s1 = [] ; lock_V = <>} ; - mkV146 : Str -> V ; - mkV146 base = let stem = (init (init base)) - in mkVerb (stem+"да") - (stem+"де") - (stem+"дох") - (stem+"дех") - (stem+"шъл") - (stem+"дел") - (stem+"-") - (stem+"-") - (stem+"ди") - ** {s1 = [] ; lock_V = <>} ; - mkV146a : Str -> V ; - mkV146a base = let stem = (init (init (init base))) - in mkVerb (stem+"йда") - (stem+"йде") - (stem+"йдох") - (stem+"йдех") - (stem+"шъл") - (stem+"йдел") - (stem+"-") - (stem+"-") - (stem+"йди") - ** {s1 = [] ; lock_V = <>} ; - mkV147 : Str -> V ; - mkV147 base = let stem = (init (init (init base))) - in mkVerb (stem+"яза") - (stem+"езе") - (stem+"язох") - (stem+"езех") - (stem+"язъл") - (stem+"езел") - (stem+"-") - (stem+"-") - (stem+"ез") - ** {s1 = [] ; lock_V = <>} ; - mkV148 : Str -> V ; - mkV148 base = let stem = (init (init base)) - in mkVerb (stem+"ка") - (stem+"че") - (stem+"кох") - (stem+"чех") - (stem+"къл") - (stem+"чел") - (stem+"чен") - (stem+"чащ") - (stem+"чи") - ** {s1 = [] ; lock_V = <>} ; - mkV149 : Str -> V ; - mkV149 base = let stem = (init (init (init base))) - in mkVerb (stem+"ека") - (stem+"ече") - (stem+"якох") - (stem+"ечех") - (stem+"якъл") - (stem+"ечел") - (stem+"ечен") - (stem+"-") - (stem+"ечи") - ** {s1 = [] ; lock_V = <>} ; - mkV150 : Str -> V ; - mkV150 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"ян") - (stem+"-") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV150a : Str -> V ; - mkV150a base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"-") - (stem+"-") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV151 : Str -> V ; - mkV151 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ах") - (stem+"ях") - (stem+"ал") - (stem+"ял") - (stem+"ящ") - (stem+"ан") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV152 : Str -> V ; - mkV152 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ах") - (stem+"ех") - (stem+"ал") - (stem+"ел") - (stem+"ат") - (stem+"-") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV152a : Str -> V ; - mkV152a base = let stem = (init (init (init (init base)))) - in mkVerb (stem+"ягна") - (stem+"егне") - (stem+"ягнах") - (stem+"ягнех") - (stem+"ягнал") - (stem+"ягнел") - (stem+"ягнат") - (stem+"-") - (stem+"егни") - ** {s1 = [] ; lock_V = <>} ; - mkV153 : Str -> V ; - mkV153 base = let stem = (init (init (init base))) - in mkVerb (stem+"яна") - (stem+"ене") - (stem+"янах") - (stem+"енех") - (stem+"янал") - (stem+"енел") - (stem+"янат") - (stem+"-") - (stem+"ени") - ** {s1 = [] ; lock_V = <>} ; - mkV154 : Str -> V ; - mkV154 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"е") - (stem+"ах") - (stem+"ех") - (stem+"ал") - (stem+"ел") - (stem+"ан") - (stem+"ещ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV155 : Str -> V ; - mkV155 base = let stem = (init (init base)) - in mkVerb (stem+"ча") - (stem+"че") - (stem+"ках") - (stem+"чех") - (stem+"кал") - (stem+"чел") - (stem+"-") - (stem+"чещ") - (stem+"чи") - ** {s1 = [] ; lock_V = <>} ; - mkV156 : Str -> V ; - mkV156 base = let stem = (init (init base)) - in mkVerb (stem+"жа") - (stem+"же") - (stem+"зах") - (stem+"жех") - (stem+"зал") - (stem+"жел") - (stem+"зан") - (stem+"-") - (stem+"жи") - ** {s1 = [] ; lock_V = <>} ; - mkV157 : Str -> V ; - mkV157 base = let stem = (init (init (init base))) - in mkVerb (stem+"ежа") - (stem+"еже") - (stem+"язах") - (stem+"ежех") - (stem+"язал") - (stem+"ежел") - (stem+"язан") - (stem+"ежещ") - (stem+"ежи") - ** {s1 = [] ; lock_V = <>} ; - mkV158 : Str -> V ; - mkV158 base = let stem = (init (init base)) - in mkVerb (stem+"жа") - (stem+"же") - (stem+"гах") - (stem+"жех") - (stem+"гал") - (stem+"жел") - (stem+"ган") - (stem+"жещ") - (stem+"жи") - ** {s1 = [] ; lock_V = <>} ; - mkV159 : Str -> V ; - mkV159 base = let stem = (init (init base)) - in mkVerb (stem+"ша") - (stem+"ше") - (stem+"сах") - (stem+"шех") - (stem+"сал") - (stem+"шел") - (stem+"сан") - (stem+"шещ") - (stem+"ши") - ** {s1 = [] ; lock_V = <>} ; - mkV160 : Str -> V ; - mkV160 base = let stem = (init (init base)) - in mkVerb (stem+"ея") - (stem+"ее") - (stem+"ях") - (stem+"еех") - (stem+"ял") - (stem+"еел") - (stem+"ян") - (stem+"еещ") - (stem+"ей") - ** {s1 = [] ; lock_V = <>} ; - mkV160a : Str -> V ; - mkV160a base = let stem = (init (init base)) - in mkVerb (stem+"ея") - (stem+"ее") - (stem+"ах") - (stem+"еех") - (stem+"ал") - (stem+"еел") - (stem+"ан") - (stem+"еещ") - (stem+"ей") - ** {s1 = [] ; lock_V = <>} ; - mkV161 : Str -> V ; - mkV161 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"е") - (stem+"х") - (stem+"ех") - (stem+"л") - (stem+"ел") - (stem+"н") - (stem+"ещ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV161a : Str -> V ; - mkV161a base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"е") - (stem+"х") - (stem+"ех") - (stem+"л") - (stem+"ел") - (stem+"т") - (stem+"ещ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV162 : Str -> V ; - mkV162 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"е") - (stem+"ях") - (stem+"ех") - (stem+"ял") - (stem+"ел") - (stem+"-") - (stem+"ещ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV163 : Str -> V ; - mkV163 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"е") - (stem+"х") - (stem+"ех") - (stem+"л") - (stem+"ел") - (stem+"т") - (stem+"ещ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV164 : Str -> V ; - mkV164 base = let stem = (init (init base)) - in mkVerb (stem+"ея") - (stem+"ее") - (stem+"ях") - (stem+"еех") - (stem+"ял") - (stem+"еел") - (stem+"ят") - (stem+"еещ") - (stem+"ей") - ** {s1 = [] ; lock_V = <>} ; - mkV165 : Str -> V ; - mkV165 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"е") - (stem+"ех") - (stem+"ех") - (stem+"ел") - (stem+"ел") - (stem+"ел") - (stem+"ещ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV166 : Str -> V ; - mkV166 base = let stem = (init (init base)) - in mkVerb (stem+"га") - (stem+"же") - (stem+"жах") - (stem+"жех") - (stem+"гъл") - (stem+"жел") - (stem+"-") - (stem+"жещ") - (stem+"-") - ** {s1 = [] ; lock_V = <>} ; - mkV167 : Str -> V ; - mkV167 base = let stem = (init (init base)) - in mkVerb (stem+"ка") - (stem+"че") - (stem+"ках") - (stem+"чех") - (stem+"кал") - (stem+"чел") - (stem+"кан") - (stem+"чещ") - (stem+"чи") - ** {s1 = [] ; lock_V = <>} ; - mkV168 : Str -> V ; - mkV168 base = let stem = (init base) - in mkVerb (stem+"м") - (stem+"де") - (stem+"дох") - (stem+"дях") - (stem+"л") - (stem+"дял") - (stem+"ден") - (stem+"-") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV169 : Str -> V ; - mkV169 base = let stem = (init base) - in mkVerb (stem+"м") - (stem+"де") - (stem+"дох") - (stem+"дях") - (stem+"л") - (stem+"дял") - (stem+"ден") - (stem+"дещ") - (stem+"ж") - ** {s1 = [] ; lock_V = <>} ; - mkV170 : Str -> V ; - mkV170 base = let stem = (init (init (init base))) - in mkVerb (stem+"ера") - (stem+"ере") - (stem+"рах") - (stem+"ерях") - (stem+"рал") - (stem+"ерял") - (stem+"ран") - (stem+"ерящ") - (stem+"ери") - ** {s1 = [] ; lock_V = <>} ; - mkV171 : Str -> V ; - mkV171 base = let stem = (init (init base)) - in mkVerb (stem+"ма") - (stem+"ме") - (stem+"х") - (stem+"мех") - (stem+"л") - (stem+"мел") - (stem+"т") - (stem+"-") - (stem+"ми") - ** {s1 = [] ; lock_V = <>} ; - mkV172 : Str -> V ; - mkV172 base = let stem = (init (init (init (init base)))) - in mkVerb (stem+"ълна") - (stem+"ълне") - (stem+"лех") - (stem+"ълнех") - (stem+"лел") - (stem+"ълнел") - (stem+"ълнат") - (stem+"ълнещ") - (stem+"ълни") - ** {s1 = [] ; lock_V = <>} ; - mkV173 : Str -> V ; - mkV173 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"их") - (stem+"ех") - (stem+"ил") - (stem+"ел") - (stem+"ен") - (stem+"ещ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV174 : Str -> V ; - mkV174 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"их") - (stem+"ях") - (stem+"ил") - (stem+"ял") - (stem+"ен") - (stem+"ящ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV175 : Str -> V ; - mkV175 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"их") - (stem+"ях") - (stem+"ил") - (stem+"ял") - (stem+"ен") - (stem+"ящ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV176 : Str -> V ; - mkV176 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"и") - (stem+"их") - (stem+"ех") - (stem+"ил") - (stem+"ел") - (stem+"ен") - (stem+"ещ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV177 : Str -> V ; - mkV177 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"ян") - (stem+"ящ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV178 : Str -> V ; - mkV178 base = let stem = (init base) - in mkVerb (stem+"а") - (stem+"и") - (stem+"ах") - (stem+"ех") - (stem+"ал") - (stem+"ел") - (stem+"-") - (stem+"ащ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV179 : Str -> V ; - mkV179 base = let stem = (init (init (init (init base)))) - in mkVerb (stem+"ържа") - (stem+"ържи") - (stem+"ържах") - (stem+"ържех") - (stem+"ържал") - (stem+"ържел") - (stem+"ържан") - (stem+"ържащ") - (stem+"ръж") - ** {s1 = [] ; lock_V = <>} ; - mkV180 : Str -> V ; - mkV180 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"-") - (stem+"ящ") - (stem+"й") - ** {s1 = [] ; lock_V = <>} ; - mkV181 : Str -> V ; - mkV181 base = let stem = (init (init base)) - in mkVerb (stem+"дя") - (stem+"ди") - (stem+"дях") - (stem+"дех") - (stem+"дял") - (stem+"дел") - (stem+"дян") - (stem+"-") - (stem+"ж") - ** {s1 = [] ; lock_V = <>} ; - mkV182 : Str -> V ; - mkV182 base = let stem = (init base) - in mkVerb (stem+"я") - (stem+"и") - (stem+"ах") - (stem+"ях") - (stem+"ал") - (stem+"ял") - (stem+"-") - (stem+"ящ") - (stem+"и") - ** {s1 = [] ; lock_V = <>} ; - mkV183 : Str -> V ; - mkV183 base = let stem = (init (init (init base))) - in mkVerb (stem+"ежа") - (stem+"ежи") - (stem+"язах") - (stem+"ежех") - (stem+"язал") - (stem+"ежел") - (stem+"язан") - (stem+"ежещ") - (stem+"ежи") - ** {s1 = [] ; lock_V = <>} ; - mkV184 : Str -> V ; - mkV184 base = let stem = (init (init (init base))) - in mkVerb (stem+"еля") - (stem+"ели") - (stem+"лях") - (stem+"елех") - (stem+"лял") - (stem+"елел") - (stem+"лян, лят") - (stem+"елещ") - (stem+"ели") - ** {s1 = [] ; lock_V = <>} ; - mkV185 : Str -> V ; - mkV185 base = let stem = (init (init (init base))) - in mkVerb (stem+"оля") - (stem+"оли") - (stem+"лах") - (stem+"олех") - (stem+"лал") - (stem+"олел") - (stem+"лан") - (stem+"олещ") - (stem+"оли") - ** {s1 = [] ; lock_V = <>} ; - mkV186 : Str -> V ; - mkV186 base = let stem = (init (init base)) - in mkVerb (stem+"ам") - (stem+"а") - (stem+"ах") - (stem+"ах") - (stem+"ал") - (stem+"ал") - (stem+"ан") - (stem+"ащ") - (stem+"ай") - ** {s1 = [] ; lock_V = <>} ; - mkV187 : Str -> V ; - mkV187 base = let stem = (init (init base)) - in mkVerb (stem+"ям") - (stem+"я") - (stem+"ях") - (stem+"ях") - (stem+"ял") - (stem+"ял") - (stem+"ян") - (stem+"ящ") - (stem+"яй") - ** {s1 = [] ; lock_V = <>} ; -} \ No newline at end of file