diff --git a/lib/resource-1.0/russian/CatRus.gf b/lib/resource-1.0/russian/CatRus.gf index f23d8625b..4c6b8bcbd 100644 --- a/lib/resource-1.0/russian/CatRus.gf +++ b/lib/resource-1.0/russian/CatRus.gf @@ -6,9 +6,14 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { lincat +-- Phrase + + Utt, Voc = {s : Str} ; + -- Tensed/Untensed S = {s : Str} ; + SC = {s : Str} ; QS = {s : QForm => Str} ; RS = {s : GenNum => Case => Animacy => Str} ; @@ -23,7 +28,7 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { QCl = {s :Polarity => ClForm => QForm => Str}; IP = { s : PronForm => Str ; n : Number ; p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ; - IComp = {s : Str} ; + IAdv, IComp = {s : Str} ; IDet = Adjective ** {n: Number; g: PronGen; c: Case} ; -- Relative @@ -60,6 +65,10 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { QuantSg, QuantPl , Det = {s : AdjForm => Str; n: Number; g: PronGen; c: Case} ; Predet, Quant= {s : AdjForm => Str; g: PronGen; c: Case} ; +-- Adverb + + Adv, AdV, AdA, AdS, AdN = {s : Str} ; + -- Numeral Num, Numeral = {s : Case => Gender => Str} ; @@ -71,6 +80,8 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { Conj = {s : Str ; n : Number} ; DConj = {s1,s2 : Str ; n : Number} ; + PConj = {s : Str} ; + CAdv = {s : Str} ; Subj = {s : Str} ; Prep = {s : Str ; c: Case } ; diff --git a/lib/resource-1.0/russian/ExtRus.gf b/lib/resource-1.0/russian/ExtRus.gf deleted file mode 100644 index eb9d9caa2..000000000 --- a/lib/resource-1.0/russian/ExtRus.gf +++ /dev/null @@ -1,28 +0,0 @@ ---# -path=.:../abstract:../common:../../prelude - -concrete ExtRus of ExtRusAbs = CatRus ** open ResRus in { --- --- lincat --- --- Aux = {s : Polarity => Str} ; --- --- lin --- --- PredAux np aux vp = mkClause (np.s ! Nom) np.a { --- s = \\t,ant,b,ord,agr => --- let --- fin = aux.s ! b ; --- vf : Str -> Str -> {fin, inf : Str} = \x,y -> --- {fin = x ; inf = y} ; --- in --- case ant of { --- Simul => vf fin [] ; --- Anter => vf fin "have" --- } ; --- s2 = \\agr => infVP vp agr --- } ; --- --- can_Aux = {s = \\p => posneg p "can"} ; ---- cannt --- must_Aux = {s = \\p => posneg p "must"} ; --- -} diff --git a/lib/resource-1.0/russian/IdiomRus.gf b/lib/resource-1.0/russian/IdiomRus.gf index 5ebc56691..451e9aca7 100644 --- a/lib/resource-1.0/russian/IdiomRus.gf +++ b/lib/resource-1.0/russian/IdiomRus.gf @@ -14,6 +14,13 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in { } } ; + ExistIP Kto = + let { kto = Kto.s ! (PF Nom No NonPoss) } in + {s = \\b,clf,_ => case b of + {Pos => kto ++ verbByut.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ; + Neg => kto ++ "не" ++ verbByut.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) + } + } ; ImpersCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>""} in diff --git a/lib/resource-1.0/russian/LangRus.gf b/lib/resource-1.0/russian/LangRus.gf index b8415b5c4..a91740233 100644 --- a/lib/resource-1.0/russian/LangRus.gf +++ b/lib/resource-1.0/russian/LangRus.gf @@ -1,14 +1,12 @@ --# -path=.:../abstract:../common:../../prelude concrete LangRus of Lang = - NounRus, VerbRus, AdjectiveRus, AdverbRus, NumeralRus, SentenceRus, - QuestionRus, RelativeRus, ConjunctionRus, @@ -16,7 +14,4 @@ concrete LangRus of Lang = TextX, StructuralRus, IdiomRus, - - LexiconRus - -** { flags startcat = Phr ; unlexer = text ; lexer = text ;} ; + LexiconRus ** { flags startcat = Phr ; unlexer = text ; lexer = text ;} ; diff --git a/lib/resource-1.0/russian/LexiconRus.gf b/lib/resource-1.0/russian/LexiconRus.gf index cc1e26b8c..2958b9b6e 100644 --- a/lib/resource-1.0/russian/LexiconRus.gf +++ b/lib/resource-1.0/russian/LexiconRus.gf @@ -1,402 +1,403 @@ ---# -path=.:../abstract:../common:../../prelude - -concrete LexiconRus of Lexicon = CatRus ** open ParadigmsRus, Prelude, MorphoRus in { - -flags - optimize=values ; - coding=utf8 ; -lin - airplane_N = nTelefon "самолет" ; - answer_V2S = tvDir (mkRegVerb imperfective first "о‚веч°" "ю" "о‚вечал" "о‚вечай" "о‚веча‚ь" ); - apartment_N = nMashina "квар‚и€" ; - apple_N = nChislo "яблок" ; - art_N = nChislo "икƒств" ; - ask_V2Q = tvDir (mkRegVerb imperfective first "спраˆива" "ю" "спраˆива»" "спраˆива¹" "спраˆиватŒ") ; - baby_N = nMalush "малыˆ"; - bad_A = AKakoj_Nibud "плох" "" "хƒже"; - bank_N = nBank "банº" ; - beautiful_A = AStaruyj "к€аив" "к€аивеµ"; - become_VA = mkRegVerb perfective second "с‚ано²" "лŽ" "с‚ал" "с‚ань" "с‚а‚ь" ; - beer_N = nChislo "пив" ; - beg_V2V = tvDir (mkRegVerb imperfective second "п€¾" "шƒ" "п€оил" "п€о¸" "п€ои‚ь" ); - big_A = AKakoj_Nibud "больˆ" "" "больˆµ" ; - bike_N = nTelefon "велоипе´" ; - bird_N = nEdinica "п‚и†" ; - black_A = AStaruyj "ч‘рн" "чернее"; - blue_A = AMolodoj "голуб" "голубеµ"; - boat_N = nMashina "лодº" ; - book_N = nMashina "кни³" ; - boot_N = nBank "сапог" ; - boss_N = nStomatolog "начальник" ; - boy_N = nStomatolog "маль‡ик" ; - bread_N = nAdres "хле±" ; - break_V2 = tvDir (mkRegVerb imperfective first "п€е€ыва" "ю" "п€е€ыва»" "п€е€ыва¹" "п€е€ыватŒ" ); - broad_A = AMalenkij "широк" "ширµ"; - brother_N2 = mkN2 (nBrat ",б€а‚") ; - brown_A = AStaruyj "кори‡нев" "кори‡невее"; - butter_N = nChislo "мас»"; - buy_V2 = tvDir (mkRegVerb imperfective first "покупа" "ю" "покупа»" "покупа¹" "покупатŒ" ); - camera_N = nMashina "kamer" ; - 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 "с‹р" ; -child_N = mkN "ребёноº" "ребёнк°" "ребёнку" "ребёнк°" "ребёнком" "ребёнкµ" "дет¸" "детей" "детям" "детей" "детьми" "детя…" masculine animate ; - church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковьŽ" "церкви" "церкви" "церкве¹" "церквя¼" "церкви" "церквями" "церквях" masculine inanimate; - city_N = nAdres "город" ; - clean_A = AStaruyj "чист" "чищµ"; - clever_A = AStaruyj "умн" "умнее"; - close_V2= tvDir (mkRegVerb imperfective first "закр‹ва" "ю" "закр‹вал" "закр‹вай" "закр‹вать" ); - coat_N = mkIndeclinableNoun "паль‚¾" masculine inanimate ; - cold_A = AStaruyj "холодн" "холоднее"; - come_V = mkRegVerb imperfective first "п€и…¾" "жƒ" "п€и…оди»" "п€и…оди" "п€и…одитŒ" ; - computer_N = nTelefon "компŒю‚е€" ; - country_N = nMashina "с‚ран" ; -cousin_N = nTelefon "кƒзен" ; -cow_N = nMashina "коров" ; -die_V = mkRegVerb imperfective first "умира" "ю" "умирал" "умрай" "умирать" ; -dirty_A = AStaruyj "г€язн" "г€язнее" ; -doctor_N = nAdres "доктор" ; -dog_N = nNoga "собак" ; -door_N = nBol "двер" ; -drink_V2 = tvDir (mkRegVerb imperfective firstE "пŒ" "ю" "пил" "пей" "пить" ); -eat_V2 = tvDir (mkRegVerb imperfective first "кƒша" "ю" "кƒшал" "кƒшай" "кƒшать" ); -enemy_N = nStomatolog "в€аг" ; -factory_N = nNoga "фабрик" ; -father_N2 = mkN2 (mkN "о‚е†" "о‚ца" "о‚цƒ" "о‚ца" "о‚цом" "о‚це" "о‚ц‹" "о‚цов" "о‚цам" "о‚цов" "о‚цам¸" "о‚цах" masculine animate); -fear_VS= mkRegVerb imperfective second "бо" "ю" "боя»" "бой" "боятŒ" ; -find_V2 = tvDir (mkRegVerb imperfective second "нах¾" "жƒ" "находи»" "находи" "находитŒ" ); -fish_N = nMashina "р‹±" ; -floor_N = nTelefon "пол" ; -forget_V2= tvDir (mkRegVerb imperfective first "забыва" "ю" "забыва»" "забыва¹" "забыватŒ" ); -fridge_N = nBank "холодилŒник" ; -friend_N = mkN "д€уг" "д€уга" "д€угу" "д€уга" "д€уго¼" "д€уге" "д€узья" "д€узе¹" "д€узьям" "д€узе¹" "дƒзŒями" "д€узья…" masculine animate; -fruit_N = nTelefon "ф€укт" ; -garden_N = nTelefon "сад" ; -girl_N = nNoga "дево‡º" ; -glove_N = nNoga "перчатº" ; -gold_N = nChislo "золо‚" ; -good_A = AKhoroshij "хороˆ" "лƒчˆµ" ; -go_V= mkRegVerb imperfective second "хо" "жƒ" "ходил" "ход¸" "ходи‚ь" ; -green_A = AStaruyj "зелен" "зеленеµ" ; -harbour_N = nTelefon "залив" ; -hate_V2= tvDir (mkRegVerb imperfective second "ненави" "жƒ" "ненавидел" "ненавидŒ" "ненавидеть" ); -hat_N = nMashina "шля¿" ; -have_V2= tvDir (mkRegVerb imperfective first "име" "ю" "име»" "име¹" "иметŒ" ); -hear_V2= tvDir (mkRegVerb imperfective first "слуша" "ю" "слушал" "слушай" "слушать" ); -hill_N = nTelefon "хол¼" ; -hope_VS= mkRegVerb imperfective first "надµ" "ю" "наде»" "надей" "надетŒ" ; -horse_N = nBol "лошад" ; -hot_A = AKhoroshij "горя‡" "горя‡ее" ; -house_N = nAdres "дом" ; -important_A = AStaruyj "важ½" "важнее" ; -industry_N = nChislo "п€оизводс‚²" ; -iron_N = nChislo "желез" ; -king_N = mkN "король" "короля" "королю" "короля" "короле¼" "короле" "короли" "короле¹" "короля¼" "короле¹" "королями" "королях" masculine animate; -know_V2= tvDir (mkRegVerb imperfective first "зна" "ю" "зна»" "зна¹" "знатŒ" ); -lake_N = nChislo "озер" ; -lamp_N = nMashina "лам¿" ; -learn_V2= tvDir (mkRegVerb imperfective second "у‡" "у" "у‡ил" "у‡¸" "у‡и‚ь" ); -leather_N = nEdinica "кож" ; -leave_V2= tvDir (mkRegVerb imperfective second "у…ож" "у" "у…оди»" "у…оди" "у…одитŒ" ); -like_V2= tvDir (mkRegVerb imperfective second "н€ав" "лŽ" "н€ави»" "н€авь" "н€авитŒ" ); -listen_V2= tvDir (mkRegVerb imperfective first "слуша" "ю" "слушал" "слушай" "слушать" ); -live_V= mkRegVerb imperfective firstE "жив" "у" "жил" "жив¸" "жить" ; -long_A = AStaruyj "длинн" "длиннеµ" ; -lose_V2 = tvDir (mkRegVerb imperfective first "теря" "ю" "терял" "теряй" "теря‚ь" ); -love_N = nBol "лŽбов" ; -love_V2= tvDir (mkRegVerb imperfective second "лŽ±" "лŽ" "лŽбил" "лŽби" "лŽбить" ); -man_N = nStomatolog "человеº" ; -meat_N =nChislo "мс" ; -milk_N = nChislo "молок" ; -moon_N = nMashina "лƒ½" ; -mother_N2 = mkN2 ( nMashina "мам") ; -mountain_N = nMashina "гор" ; -music_N = nNoga "мƒз‹º" ; -narrow_A = AStaruyj "узк" "уже" ; -new_A = AStaruyj "нов" "новее" ; -newspaper_N = nMashina "газе‚" ; -oil_N = nBol "нефтŒ" ; -old_A = AStaruyj "с‚а€" "с‚а€ше" ; -open_V2= tvDir (mkRegVerb imperfective first "о‚к€ыва" "ю" "о‚к€ыва»" "о‚к€ыва¹" "о‚к€ыватŒ" ); -paper_N = nNoga "бƒмаг" ; -peace_N = nTelefon "мир" ; -pen_N = nNoga "рƒчк" ; -planet_N = nMashina "планет" ; -plastic_N = nMashina "плас‚масс" ; -play_V2 = tvDir (mkRegVerb imperfective first "игр°" "ю" "играл" "играй" "игра‚ь" ); -policeman_N = nTelefon "мили†ионе€" ; -priest_N = nStomatolog "священник" ; -queen_N = nMashina "короле²" ; -radio_N = mkIndeclinableNoun "радио" neuter inanimate; -read_V2 = tvDir (mkRegVerb imperfective first "чит°" "ю" "читал" "читай" "чита‚ь" ); -red_A = AStaruyj "к€а½" "к€анее" ; -religion_N = nMalyariya "религи" ; -restaurant_N = nTelefon "ресторан" ; -river_N = nNoga "рек" ; -rock_N = nUroven "кам" ; -roof_N = nEdinica "к€ыˆ" ; -rubber_N = nMashina "резин" ; -run_V = mkRegVerb imperfective first "бег°" "ю" "бегал" "бегай" "бега‚ь" ; -say_VS = mkRegVerb imperfective second "гово€" "ю" "гово€ил" "гово€¸" "гово€и‚ь" ; -school_N = nMashina "шко»" ; -science_N = nEdinica "науº" ; -sea_N = nProizvedenie "мор" ; -seek_V2 = tvDir (mkRegVerb imperfective first "и‰" "у" "икал" "и‰¸" "икать" ); -see_V2 = tvDir (mkRegVerb imperfective second "виж" "у" "видел" "видь" "виде‚ь" ); -sell_V3 = tvDirDir (mkRegVerb imperfective firstE "п€ода" "ю" "п€одавал" "п€одавай" "п€одавать" ); -send_V3 = tvDirDir (mkRegVerb imperfective first "посыла" "ю" "посыла»" "посыла¹" "посылатŒ" ); -sheep_N = nMashina "овц" ; -ship_N = nNol "корабл" ; -shirt_N = nNoga "рƒбашº" ; -shoe_N = mkN "тƒфля" "тƒфли" "тƒфле" "тƒфлю" "тƒфле¹" "тƒфле" "тƒфли" "тƒфель" "тƒфля¼" "тƒфли" "тƒфлями" "тƒфлях" masculine inanimate; -shop_N = nTelefon "магази½" ; -short_A = AMalenkij "коро‚º" "кор" ; -silver_N = nChislo "серебр" ; -sister_N = nMashina "сест€" ; -sleep_V = mkRegVerb imperfective second "сп" "лŽ" "спа»" "спи" "спатŒ" ; -small_A = AMalenkij "маленьº" "меньˆµ" ; -snake_N = nTetya"зме" ; -sock_N = nPotolok "нос" ; -speak_V2 = tvDir (mkRegVerb imperfective second "гово€" "ю" "гово€ил" "гово€¸" "гово€и‚ь" ); -star_N = nMashina "звезд" ; -steel_N = nBol "с‚ал" ; -stone_N = nNol "камен" ; -stove_N = nBol "печ" ; -student_N = nTelefon "с‚уден‚" ; -stupid_A = AMolodoj "тƒпой" "тƒпее" ; -sun_N = mkN "сол통" "солн†°" "солн†у" "сол통" "солн†ем" "сол통" "солн†°" "солн†" "солн†ам" "солн†°" "солн†ами" "солн†а…" neuter inanimate; -switch8off_V2 = tvDir (mkRegVerb imperfective first "в‹ключа" "ю" "в‹ключал" "в‹ключай" "в‹ключать") ; -switch8on_V2 = tvDir (mkRegVerb imperfective first "вклю‡°" "ю" "вклю‡ал" "вклю‡ай" "вклю‡а‚ь") ; -table_N = nTelefon "с‚ол" ; -teacher_N = nNol "у‡и‚ел" ; -teach_V2 = tvDir (mkRegVerb imperfective second "у‡" "у" "у‡ил" "у‡¸" "у‡и‚ь" ); -television_N = nProizvedenie "телевиден¸" ; -thick_A = AStaruyj "толс‚" "толще" ; -thin_A = AMalenkij "тонº" "тоньˆµ" ; -train_N = nAdres "поезд" ; -travel_V = mkRegVerb imperfective first "пƒтешетву" "ю" "пƒтешетвовал" "пƒтешетву¹" "пƒтешетвовать" ; -tree_N = nChislo "дерев" ; ---trousers_N = mkN "" "" "" "" "" "" "ш‚аны" "ш‚ано²" "ш‚ана¼" "ш‚аны" "ш‚анами" "ш‚анах" masculine inanimate; -ugly_A = AStaruyj "некрасив" "некрасивеµ" ; -understand_V2 = tvDir (mkRegVerb imperfective first "понима" "ю" "понима»" "понима¹" "пониматŒ" ); -university_N = nTelefon "университе‚" ; -village_N = nMalyariya "деревн" ; -wait_V2 = tvDir (mkRegVerb imperfective firstE "жд" "у" "жда»" "жди" "ждатŒ" ); -walk_V = mkRegVerb imperfective first "гƒл" "ю" "гƒл»" "гƒл¹" "гƒлтŒ" ; -warm_A = AStaruyj "т‘пл" "теплее" ; -war_N = nMashina "вой½" ; -watch_V2 = tvDir (mkRegVerb imperfective second "смот€" "ю" "смот€ел" "смот€¸" "смот€е‚ь" ); -water_N = nMashina "вод" ; -white_A = AStaruyj "бел" "белее" ; -window_N = nChislo "окн" ; -wine_N = nChislo "вин" ; -win_V2 = tvDir (mkRegVerb imperfective first "в‹игрыва" "ю" "в‹игрыва»" "в‹игрыва¹" "в‹игрыватŒ" ); -woman_N = nZhenchina "женщин" ; -wood_N = nChislo "дерев" ; -write_V2 = tvDir (mkRegVerb imperfective first "пиш" "у" "писал" "пиш¸" "писа‚ь" ); -yellow_A = AStaruyj "ж‘л‚" "желтее" ; -young_A = AMolodoj "молод" "моложе"; - - do_V2 = tvDir (mkRegVerb imperfective first "дел°" "ю" "делал" "делай" "дела‚ь" ); - now_Adv = mkAdv "сейчас" ; - already_Adv = mkAdv "уже" ; - song_N = nTetya "пес½" ; - add_V3 = mkV3 (mkRegVerb imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "²" accusative accusative; - number_N = nChislo "чис»" ; - put_V2 = tvDir (mkRegVerb imperfective firstE "кла´" "у" "кла»" "клади" "клас‚ь" ); - stop_V = mkRegVerb imperfective first "отанавлива" "ю" "отанавлива»" "отанавлива¹" "отанавливатŒ"; - jump_V = mkRegVerb imperfective first "п€ыга" "ю" "п€ыга»" "п€ыга¹" "п€ыгатŒ" ; - ----- distance_N3 = mkN3 (nProizvedenie "расс‚о½") from_Prep to_Prep ; - --- in Russian combinations with verbs are expressed with adverbs: --- "легко поня‚ь" ("easy to understand"), which is different from --- adjective expression "легкий для понимания" ("easy for understanding") --- So the next to words are adjectives, since there are such adjectives --- in Russian, but to use them with verb would be wrong in Russian: -fun_AV = AStaruyj "весёл" "веселеµ"; -easy_A2V = mkA2 (AMalenkij "легº" "легче") "для" genitive ; - -empty_A = AMolodoj "пƒс‚" "пƒс‚ее"; -married_A2 = mkA2 (adjInvar "замуже¼") "за" instructive ; -paint_V2A = tvDir (mkRegVerb imperfective first "рису" "ю" "рисова»" "рисуй" "рисоватŒ" ) ; - probable_AS = AStaruyj "возможн‹¹" "возможнее"; --- rain_V0 No such verb in Russian! -talk_V3 = mkV3 (mkRegVerb imperfective second "гово€" "ю" "гово€ил" "гово€¸" "гово€и‚ь" ) "с" "¾" instructive prepositional; -wonder_VQ = mkRegVerb imperfective first "инте€еу" "ю" "инте€еова»" "инте€еуй" "инте€еоватŒ"; - - -- Nouns - - animal_N = nZhivotnoe "живо‚½" ; - ashes_N = nPepel "пеп" ; - back_N = nMashina "спи½" ; - bark_N = mkN "лай" "лая" "лаю" "лай" "лае¼" "лае" "лаи" "лае²" "лая¼" "лаи" "лаями" "лаях" masculine inanimate; - belly_N = nTelefon "живо‚" ; - bird_N = nEdinica "п‚и†" ; - blood_N = nBol "к€ов" ; - bone_N = nBol "кост" ; - breast_N = nBol "г€удь" ; - - cloud_N = nChislo "облак" ; - day_N = mkN "день" "дня" "дню" "день" "днё¼" "дне" "дни" "дне¹" "дня¼" "дни" "днями" "днях" masculine inanimate ; - - dust_N = nBol "п‹»" ; - ear_N = nChislo "у…¾" ; - earth_N = nTetya "зем»" ; - egg_N = nChislo "яйц" ; - eye_N = nAdres "гла·" ; - fat_N = nBank "жир" ; - --- father_N = UseN2 father_N2 ; - feather_N = mkN "пер¾" "пер°" "перу" "пер°" "пером" "перµ" "перь" "перьев" "перь¼" "перьев" "перьми" "перьх" neuter inanimate ; - fingernail_N = mkN "ного‚ь" "ногт" "ногтŽ" "ногт" "ногтем" "ногте" "ногти" "ногтей" "ногт¼" "ногтей" "ногтми" "ногтх" masculine inanimate ; - fire_N = mkN "огонŒ" "огня" "огню" "огня" "огнём" "огнµ" "огн¸" "огней" "огням" "огней" "огнями" "огня…" masculine inanimate ; - fish_N = nMashina "р‹±" ; - flower_N = mkN "о‚е†" "о‚ца" "о‚цƒ" "о‚ца" "о‚цом" "о‚це" "о‚ц‹" "о‚цов" "о‚цам" "о‚цов" "о‚цам¸" "о‚цах" masculine animate ; - fog_N = nTelefon "тƒман" ; - foot_N = nTetya "с‚упн" ; - forest_N = nAdres "лес" ; - fruit_N = nTelefon "ф€укт"; - grass_N = nMashina "т€ав" ; - guts_N = nBol "внут€еннот" ; - hair_N = nTelefon "воло" ; - hand_N = nNoga "рƒº" ; - head_N = nMashina "голов" ; - heart_N = mkN "сер䆵" "серд†°" "серд†у" "серд†°" "серд†ем" "сер䆵" "серд†°" "сердец" "серд†ам" "сердец" "серд†ами" "серд†а…" neuter inanimate; - horn_N = nAdres "рог" ; - husband_N = mkN "мƒ¶" "мƒжа" "мƒжƒ" "мƒжа" "мƒжем" "мƒже" "мƒжŒя" "мƒжей" "мƒжŒям" "мƒжей" "мƒжŒями" "мƒжŒя…" masculine animate ; - ice_N = mkN "л‘´" "лŒда" "лŒдƒ" "лŒда" "лŒдом" "лŒде" "лŒд‹" "лŒдов" "лŒдам" "лŒдов" "лŒдам¸" "лŒдах" masculine inanimate ; - knee_N = mkN "колено" "колена" "колену" "колена" "колено¼" "колене" "колени" "колен" "колена¼" "колен" "коленями" "коленях" neuter inanimate ; - lake_N = nChislo "озер" ; - leaf_N = nStul "лист" ; - leg_N = nNoga "ног" ; - liver_N = nBol "печен" ; - louse_N = mkN "вошь" "вˆ¸" "вˆ¸" "вошь" "вошьŽ" "вˆµ" "вˆ¸" "вˆей" "вˆам" "вˆей" "вˆами" "вˆа…" feminine animate ; - - meat_N = nChislo "мс" ; - moon_N = nMashina "лƒ½" ; - - - mountain_N = nMashina "гор" ; - mouth_N = mkN "рот" "р‚°" "р‚у" "рот" "р‚ом" "р‚µ" "р‚ы" "р‚ов" "р‚ам" "р‚ы" "р‚ами" "р‚а…" masculine inanimate; - name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имена" "имё½" "именам" "имена" "именам¸" "именах" neuter inanimate; - neck_N = nTetya "ше" ; - night_N = nBol "ноч" ; - nose_N = nTelefon "нос" ; - person_N = nBol "личностŒ" ; - rain_N = nNol "дож´" ; - - road_N = nNoga "дорог" ; - root_N = nUroven "кор" ; - rope_N = nNoga "веревк" ; - salt_N = nBol "сол" ; - sand_N = mkN "песок" "песка" "пескƒ" "песок" "песком" "песке" "пески" "песков" "пескам" "песков" "пескам¸" "песках" masculine inanimate ; - sea_N = nProizvedenie "мор" ; - seed_N = mkN "семя" "семени" "семени¸" "семя" "семене¼" "семени" "семена" "семян" "семена¼" "семена" "семенами" "семенах" neuter inanimate ; - skin_N = nEdinica "кож" ; - sky_N = mkN "неб¾" "неб°" "небу" "неб¾" "небом" "небµ" "небе°" "небе" "небеам" "небе" "небеами" "небеа…" neuter inanimate ; - smoke_N = nTelefon "д‹¼" ; - snake_N = nTetya "зме" ; - snow_N = nAdres "сне³" ; - star_N = nMashina "звезд" ; - stick_N = nNoga "палº" ; - - - tail_N = nTelefon "хвос‚" ; - tongue_N = nBank "языº" ; - tooth_N = nTelefon "зƒ±" ; - tree_N = nChislo "дерев" ; - water_N = nMashina "вод" ; - wife_N = nMashina "жен" ; - wind_N = mkN "вете€" "ветра" "ветрƒ" "вете€" "ветром" "ветра" "ветров" "ветра" "ветрам" "ветров" "ветрам¸" "ветрах" masculine inanimate ; - wing_N = mkN "к€ыло" "к€ыла" "к€ылу" "к€ыло" "к€ыло¼" "к€ыле" "к€ылья" "к€ыльев" "к€ыльям" "к€ылья" "к€ыльями" "к€ылья…" neuter inanimate ; - - worm_N = nNol "чер²" ; - year_N = nAdres "год" ; - - --- Verbs - - bite_V2 = tvDir (mkRegVerb imperfective first "кƒса" "ю" "кƒсал" "кƒсай" "кƒсать"); - blow_V = mkRegVerb imperfective first "дƒ" "ю" "дƒ»" "дƒ¹" "дƒтŒ" ; - breathe_V = mkRegVerb imperfective second "д‹ш" "у" "д‹шал" "д‹ши" "д‹шать" ; - burn_V = mkRegVerb imperfective second "гор" "ю" "горел" "гор¸" "горе‚ь" ; - count_V2 = tvDir (mkRegVerb imperfective first "с‡и‚°" "ю" "с‡и‚ал" "с‡и‚ай" "с‡и‚а‚ь" ) ; - cut_V2 = tvDir (mkRegVerb imperfective first "реж" "у" "резал" "режь" "реза‚ь" ) ; - dig_V = mkRegVerb imperfective first "коп°" "ю" "копал" "копай" "копа‚ь" ; - - - fall_V = mkRegVerb imperfective first "пад°" "ю" "падал" "падай" "пада‚ь" ; - - fight_V2 = tvDir (mkRegVerb imperfective firstE "дер" "у" "д€ал" "дер¸" "д€а‚ь" ) ; - float_V = mkRegVerb imperfective firstE "плы²" "у" "плы»" "плыви" "плытŒ" ; - flow_V = mkRegVerb imperfective firstE "тек" "у" "т‘º" "тек¸" "течь" ; - fly_V = mkRegVerb imperfective second "лет°" "ю" "летал" "летай" "лета‚ь" ; - freeze_V = mkRegVerb imperfective first "заме€за" "ю" "заме€зал" "заме€зай" "заме€зать" ; - give_V3 = tvDirDir (mkRegVerb imperfective firstE "да" "ю" "давал" "давай" "дава‚ь" ) ; - - hit_V2 = tvDir (mkRegVerb imperfective first "удар" "ю" "удар»" "удар¹" "удартŒ" ); - hold_V2 = tvDir (mkRegVerb imperfective second "дер¶" "у" "держал" "держи" "держать" ); - hunt_V2 = tvDir (mkRegVerb imperfective second "о…о‡" "у" "о…о‚ил" "о…о‚ь" "о…о‚и‚ь" ) ; - kill_V2 = tvDir (mkRegVerb imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ; - - laugh_V = mkRegVerb imperfective firstE "сме" "ю" "смеял" "сме¹" "смея‚ь" ; - lie_V = mkRegVerb imperfective firstE "лг" "у" "лга»" "лги" "лгатŒ" ; - play_V = mkRegVerb imperfective first "игр°" "ю" "играл" "играй" "игра‚ь" ; - pull_V2 = tvDir (mkRegVerb imperfective first "т½" "у" "тнƒ»" "тни" "тнƒтŒ" ) ; - push_V2 = tvDir (mkRegVerb imperfective first "толка" "ю" "толкал" "толкай" "толкать" ); - rub_V2 = tvDir (mkRegVerb imperfective firstE "т€" "у" "т‘р" "т€¸" "тере‚ь" ); - - scratch_V2 = tvDir (mkRegVerb imperfective first "чеш" "у" "чесал" "чеш¸" "чеса‚ь" ) ; - - sew_V = mkRegVerb imperfective firstE "шŒ" "ю" "шил" "шей" "шить" ; - sing_V = mkRegVerb imperfective firstE "по" "ю" "пел" "пой" "петь" ; - sit_V = mkVerbum imperfective "сижу" "сидиˆь" "сиди‚" "сидим" "сиди‚µ" "сидя‚" "сидел" "сид¸" "сиде‚ь" ; - smell_V = mkRegVerb imperfective first "пах½" "у" "пахнƒ»" "пахни" "пахнƒтŒ" ; - spit_V = mkRegVerb imperfective firstE "плю" "ю" "плевал" "плю¹" "плевать" ; - split_V2 = tvDir (mkRegVerb imperfective first "разбив°" "ю" "разбивал" "разбей" "разбива‚ь" ) ; - squeeze_V2 = tvDir (mkRegVerb imperfective first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ; - stab_V2 = tvDir (mkRegVerb imperfective first "кол" "ю" "колол" "кол¸" "коло‚ь" ) ; - stand_V = mkRegVerb imperfective second "с‚¾" "ю" "с‚о»" "с‚ой" "с‚отŒ" ; - suck_V2 = tvDir (mkRegVerb imperfective firstE "сос" "у" "сосал" "сос¸" "соса‚ь") ; - swell_V = mkRegVerb imperfective first "опуха" "ю" "опухал" "опухай" "опухать" ; - swim_V = mkRegVerb imperfective first "плава" "ю" "плавал" "плавай" "плавать" ; - think_V = mkRegVerb imperfective first "дƒма" "ю" "дƒмал" "дƒмай" "дƒмать" ; - throw_V2 = tvDir (mkRegVerb imperfective first "б€о°" "ю" "б€оал" "б€оай" "б€оа‚ь" ) ; - tie_V2 = tvDir (mkRegVerb imperfective first "в¶" "у" "взал" "вжи" "взать") ; - turn_V = mkRegVerb imperfective first "пово€а‡ива" "ю" "пово€а‡ива»" "пово€а‡ива¹" "пово€а‡иватŒ" ; - vomit_V = mkRegVerb imperfective firstE "рв" "у" "рва»" "рви" "рватŒ" ; - wash_V2 = tvDir (mkRegVerb imperfective first "мо" "ю" "м‹»" "мой" "м‹тŒ" ) ; - wipe_V2 = tvDir (mkRegVerb imperfective first "в‹тир°" "ю" "в‹тирал" "в‹тирай" "в‹тира‚ь" ); - - - correct_A = AStaruyj "п€авилŒ½" "п€авилŒнее"; - dry_A = AMolodoj "сƒх" "сƒше"; - - dull_A = AStaruyj "скучн" "скучнеµ"; - far_Adv = mkAdv "далеко"; - full_A = AStaruyj "пол½" "полнее"; - heavy_A = AStaruyj "тжел" "тжелее"; - left_Ord = (uy_j_EndDecl "лев" ) ** {lock_A = <>}; - near_A = AMalenkij "близк" "ближе"; - right_Ord = (uy_j_EndDecl "п€ав") ** {lock_A = <>} ; - rotten_A = AMolodoj "гни»" "гнилее"; - round_A = AStaruyj "к€угл" "к€углее"; - sharp_A = AStaruyj "от€" "от€ее"; - smooth_A = AMalenkij "гладк" "глаже"; - straight_A = AMolodoj "п€ям" "п€ямеµ"; - wet_A = AStaruyj "мокр" "мокрее"; - wide_A = AMalenkij "широк" "ширµ"; - -fear_V2 =tvDir (mkRegVerb imperfective first "бо" "ю" "боя»" "бой" "боятŒ" ); - -paris_PN = mkPN "Париж" Masc Inanimate ; ---rain_V0 Does not exist in Russian - - -} - +--# -path=.:../abstract:../common:../../prelude + +-- +concrete LexiconRus of Lexicon = CatRus ** + open ParadigmsRus, Prelude, StructuralRus, MorphoRus in { +--, IrregRus +flags + optimize=values ; + coding=utf8 ; +lin + airplane_N = nTelefon "самолет" ; + answer_V2S = tvDir (mkRegVerb imperfective first "отвеча" "ю" "отвечал" "отвечай" "отвечать" ); + apartment_N = nMashina "квартир" ; + apple_N = nChislo "яблок" ; + art_N = nChislo "искусств" ; + ask_V2Q = tvDir (mkRegVerb imperfective first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ; + baby_N = nMalush "малыш"; + bad_A = AKakoj_Nibud "плох" "" "хуже"; + bank_N = nBank "банк" ; + beautiful_A = AStaruyj "красив" "красивее"; + become_VA = mkRegVerb perfective second "станов" "лю" "стал" "стань" "стать" ; + beer_N = nChislo "пив" ; + beg_V2V = tvDir (mkRegVerb imperfective second "про" "шу" "просил" "проси" "просить" ); + big_A = AKakoj_Nibud "больш" "" "больше" ; + bike_N = nTelefon "велосипед" ; + bird_N = nEdinica "птиц" ; + black_A = AStaruyj "чёрн" "чернее"; + blue_A = AMolodoj "голуб" "голубее"; + boat_N = nMashina "лодк" ; + book_N = nMashina "книг" ; + boot_N = nBank "сапог" ; + boss_N = nStomatolog "начальник" ; + boy_N = nStomatolog "мальчик" ; + bread_N = nAdres "хлеб" ; + break_V2 = tvDir (mkRegVerb imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" ); + broad_A = AMalenkij "широк" "шире"; + brother_N2 = mkN2 (nBrat ",брат") ; + brown_A = AStaruyj "коричнев" "коричневее"; + butter_N = nChislo "масл"; + buy_V2 = tvDir (mkRegVerb imperfective first "покупа" "ю" "покупал" "покупай" "покупать" ); + camera_N = nMashina "kamer" ; + 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 "сыр" ; +child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка" "ребёнком" "ребёнке" "дети" "детей" "детям" "детей" "детьми" "детях" masculine animate ; + church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковью" "церкви" "церкви" "церквей" "церквям" "церкви" "церквями" "церквях" masculine inanimate; + city_N = nAdres "город" ; + clean_A = AStaruyj "чист" "чище"; + clever_A = AStaruyj "умн" "умнее"; + close_V2= tvDir (mkRegVerb imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" ); + coat_N = mkIndeclinableNoun "пальто" masculine inanimate ; + cold_A = AStaruyj "холодн" "холоднее"; + come_V = mkRegVerb imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ; + computer_N = nTelefon "компьютер" ; + country_N = nMashina "стран" ; +cousin_N = nTelefon "кузен" ; +cow_N = nMashina "коров" ; +die_V = mkRegVerb imperfective first "умира" "ю" "умирал" "умрай" "умирать" ; +dirty_A = AStaruyj "грязн" "грязнее" ; +doctor_N = nAdres "доктор" ; +dog_N = nNoga "собак" ; +door_N = nBol "двер" ; +drink_V2 = tvDir (mkRegVerb imperfective firstE "пь" "ю" "пил" "пей" "пить" ); +eat_V2 = tvDir (mkRegVerb imperfective first "куша" "ю" "кушал" "кушай" "кушать" ); +enemy_N = nStomatolog "враг" ; +factory_N = nNoga "фабрик" ; +father_N2 = mkN2 (mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate); +fear_VS= mkRegVerb imperfective second "бо" "ю" "боял" "бой" "боять" ; +find_V2 = tvDir (mkRegVerb imperfective second "нахо" "жу" "находил" "находи" "находить" ); +fish_N = nMashina "рыб" ; +floor_N = nTelefon "пол" ; +forget_V2= tvDir (mkRegVerb imperfective first "забыва" "ю" "забывал" "забывай" "забывать" ); +fridge_N = nBank "холодильник" ; +friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate; +fruit_N = nTelefon "фрукт" ; +garden_N = nTelefon "сад" ; +girl_N = nNoga "девочк" ; +glove_N = nNoga "перчатк" ; +gold_N = nChislo "золот" ; +good_A = AKhoroshij "хорош" "лучше" ; +go_V= mkRegVerb imperfective second "хо" "жу" "ходил" "ходи" "ходить" ; +green_A = AStaruyj "зелен" "зеленее" ; +harbour_N = nTelefon "залив" ; +hate_V2= tvDir (mkRegVerb imperfective second "ненави" "жу" "ненавидел" "ненавидь" "ненавидеть" ); +hat_N = nMashina "шляп" ; +have_V2= tvDir (mkRegVerb imperfective first "име" "ю" "имел" "имей" "иметь" ); +hear_V2= tvDir (mkRegVerb imperfective first "слуша" "ю" "слушал" "слушай" "слушать" ); +hill_N = nTelefon "холм" ; +hope_VS= mkRegVerb imperfective first "наде" "ю" "надеял" "надей" "надеять" ; +horse_N = nBol "лошад" ; +hot_A = AKhoroshij "горяч" "горячее" ; +house_N = nAdres "дом" ; +important_A = AStaruyj "важн" "важнее" ; +industry_N = nChislo "производств" ; +iron_N = nChislo "желез" ; +king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate; +know_V2= tvDir (mkRegVerb imperfective first "зна" "ю" "знал" "знай" "знать" ); +lake_N = nChislo "озер" ; +lamp_N = nMashina "ламп" ; +learn_V2= tvDir (mkRegVerb imperfective second "уч" "у" "учил" "учи" "учить" ); +leather_N = nEdinica "кож" ; +leave_V2= tvDir (mkRegVerb imperfective second "ухож" "у" "уходил" "уходи" "уходить" ); +like_V2= tvDir (mkRegVerb imperfective second "нрав" "лю" "нравил" "нравь" "нравить" ); +listen_V2= tvDir (mkRegVerb imperfective first "слуша" "ю" "слушал" "слушай" "слушать" ); +live_V= mkRegVerb imperfective firstE "жив" "у" "жил" "живи" "жить" ; +long_A = AStaruyj "длинн" "длиннее" ; +lose_V2 = tvDir (mkRegVerb imperfective first "теря" "ю" "терял" "теряй" "терять" ); +love_N = nBol "любов" ; +love_V2= tvDir (mkRegVerb imperfective second "люб" "лю" "любил" "люби" "любить" ); +man_N = nStomatolog "человек" ; +meat_N =nChislo "мяс" ; +milk_N = nChislo "молок" ; +moon_N = nMashina "лун" ; +mother_N2 = mkN2 ( nMashina "мам") ; +mountain_N = nMashina "гор" ; +music_N = nNoga "музык" ; +narrow_A = AStaruyj "узк" "уже" ; +new_A = AStaruyj "нов" "новее" ; +newspaper_N = nMashina "газет" ; +oil_N = nBol "нефть" ; +old_A = AStaruyj "стар" "старше" ; +open_V2= tvDir (mkRegVerb imperfective first "открыва" "ю" "открывал" "открывай" "открывать" ); +paper_N = nNoga "бумаг" ; +peace_N = nTelefon "мир" ; +pen_N = nNoga "ручк" ; +planet_N = nMashina "планет" ; +plastic_N = nMashina "пластмасс" ; +play_V2 = tvDir (mkRegVerb imperfective first "игра" "ю" "играл" "играй" "играть" ); +policeman_N = nTelefon "милиционер" ; +priest_N = nStomatolog "священник" ; +queen_N = nMashina "королев" ; +radio_N = mkIndeclinableNoun "радио" neuter inanimate; +read_V2 = tvDir (mkRegVerb imperfective first "чита" "ю" "читал" "читай" "читать" ); +red_A = AStaruyj "красн" "краснее" ; +religion_N = nMalyariya "религи" ; +restaurant_N = nTelefon "ресторан" ; +river_N = nNoga "рек" ; +rock_N = nUroven "кам" ; +roof_N = nEdinica "крыш" ; +rubber_N = nMashina "резин" ; +run_V = mkRegVerb imperfective first "бега" "ю" "бегал" "бегай" "бегать" ; +say_VS = mkRegVerb imperfective second "говор" "ю" "говорил" "говори" "говорить" ; +school_N = nMashina "школ" ; +science_N = nEdinica "наук" ; +sea_N = nProizvedenie "мор" ; +seek_V2 = tvDir (mkRegVerb imperfective first "ищ" "у" "искал" "ищи" "искать" ); +see_V2 = tvDir (mkRegVerb imperfective second "виж" "у" "видел" "видь" "видеть" ); +sell_V3 = tvDirDir (mkRegVerb imperfective firstE "прода" "ю" "продавал" "продавай" "продавать" ); +send_V3 = tvDirDir (mkRegVerb imperfective first "посыла" "ю" "посылал" "посылай" "посылать" ); +sheep_N = nMashina "овц" ; +ship_N = nNol "корабл" ; +shirt_N = nNoga "рубашк" ; +shoe_N = mkN "туфля" "туфли" "туфле" "туфлю" "туфлей" "туфле" "туфли" "туфель" "туфлям" "туфли" "туфлями" "туфлях" masculine inanimate; +shop_N = nTelefon "магазин" ; +short_A = AMalenkij "коротк" "короче" ; +silver_N = nChislo "серебр" ; +sister_N = nMashina "сестр" ; +sleep_V = mkRegVerb imperfective second "сп" "лю" "спал" "спи" "спать" ; +small_A = AMalenkij "маленьк" "меньше" ; +snake_N = nTetya"зме" ; +sock_N = nPotolok "нос" ; +speak_V2 = tvDir (mkRegVerb imperfective second "говор" "ю" "говорил" "говори" "говорить" ); +star_N = nMashina "звезд" ; +steel_N = nBol "стал" ; +stone_N = nNol "камен" ; +stove_N = nBol "печ" ; +student_N = nTelefon "студент" ; +stupid_A = AMolodoj "тупой" "тупее" ; +sun_N = mkN "солнце" "солнца" "солнцу" "солнце" "солнцем" "солнце" "солнца" "солнц" "солнцам" "солнца" "солнцами" "солнцах" neuter inanimate; +switch8off_V2 = tvDir (mkRegVerb imperfective first "выключа" "ю" "выключал" "выключай" "выключать") ; +switch8on_V2 = tvDir (mkRegVerb imperfective first "включа" "ю" "включал" "включай" "включать") ; +table_N = nTelefon "стол" ; +teacher_N = nNol "учител" ; +teach_V2 = tvDir (mkRegVerb imperfective second "уч" "у" "учил" "учи" "учить" ); +television_N = nProizvedenie "телевидени" ; +thick_A = AStaruyj "толст" "толще" ; +thin_A = AMalenkij "тонк" "тоньше" ; +train_N = nAdres "поезд" ; +travel_V = mkRegVerb imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ; +tree_N = nChislo "дерев" ; +--trousers_N = mkN "" "" "" "" "" "" "штаны" "штанов" "штанам" "штаны" "штанами" "штанах" masculine inanimate; +ugly_A = AStaruyj "некрасив" "некрасивее" ; +understand_V2 = tvDir (mkRegVerb imperfective first "понима" "ю" "понимал" "понимай" "понимать" ); +university_N = nTelefon "университет" ; +village_N = nMalyariya "деревн" ; +wait_V2 = tvDir (mkRegVerb imperfective firstE "жд" "у" "ждал" "жди" "ждать" ); +walk_V = mkRegVerb imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ; +warm_A = AStaruyj "тёпл" "теплее" ; +war_N = nMashina "войн" ; +watch_V2 = tvDir (mkRegVerb imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" ); +water_N = nMashina "вод" ; +white_A = AStaruyj "бел" "белее" ; +window_N = nChislo "окн" ; +wine_N = nChislo "вин" ; +win_V2 = tvDir (mkRegVerb imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" ); +woman_N = nZhenchina "женщин" ; +wood_N = nChislo "дерев" ; +write_V2 = tvDir (mkRegVerb imperfective first "пиш" "у" "писал" "пиши" "писать" ); +yellow_A = AStaruyj "жёлт" "желтее" ; +young_A = AMolodoj "молод" "моложе"; + + do_V2 = tvDir (mkRegVerb imperfective first "дела" "ю" "делал" "делай" "делать" ); + now_Adv = mkAdv "сейчас" ; + already_Adv = mkAdv "уже" ; + song_N = nTetya "песн" ; + add_V3 = mkV3 (mkRegVerb imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative; + number_N = nChislo "числ" ; + put_V2 = tvDir (mkRegVerb imperfective firstE "клад" "у" "клал" "клади" "класть" ); + stop_V = mkRegVerb imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать"; + jump_V = mkRegVerb imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ; + +distance_N3 = mkN3 (nProizvedenie "расстоян") from_Prep to_Prep ; + +-- in Russian combinations with verbs are expressed with adverbs: +-- "легко понять" ("easy to understand"), which is different from +-- adjective expression "легкий для понимания" ("easy for understanding") +-- So the next to words are adjectives, since there are such adjectives +-- in Russian, but to use them with verb would be wrong in Russian: +fun_AV = AStaruyj "весёл" "веселее"; +easy_A2V = mkA2 (AMalenkij "легк" "легче") "для" genitive ; + +empty_A = AMolodoj "пуст" "пустее"; +married_A2 = mkA2 (adjInvar "замужем") "за" instructive ; +paint_V2A = tvDir (mkRegVerb imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ; + probable_AS = AStaruyj "возможный" "возможнее"; + rain_V0 = idetDozhd verbIdti; -- No such verb in Russian! +talk_V3 = mkV3 (mkRegVerb imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional; +wonder_VQ = mkRegVerb imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать"; + + -- Nouns + + animal_N = nZhivotnoe "животн" ; + ashes_N = nPepel "пеп" ; + back_N = nMashina "спин" ; + bark_N = mkN "лай" "лая" "лаю" "лай" "лаем" "лае" "лаи" "лаев" "лаям" "лаи" "лаями" "лаях" masculine inanimate; + belly_N = nTelefon "живот" ; + bird_N = nEdinica "птиц" ; + blood_N = nBol "кров" ; + bone_N = nBol "кост" ; + breast_N = nBol "грудь" ; + + cloud_N = nChislo "облак" ; + day_N = mkN "день" "дня" "дню" "день" "днём" "дне" "дни" "дней" "дням" "дни" "днями" "днях" masculine inanimate ; + + dust_N = nBol "пыл" ; + ear_N = nChislo "ухо" ; + earth_N = nTetya "земл" ; + egg_N = nChislo "яйц" ; + eye_N = nAdres "глаз" ; + fat_N = nBank "жир" ; + +-- father_N = UseN2 father_N2 ; + feather_N = mkN "перо" "пера" "перу" "пера" "пером" "пере" "перья" "перьев" "перьям" "перьев" "перьями" "перьях" neuter inanimate ; + fingernail_N = mkN "ноготь" "ногтя" "ногтю" "ногтя" "ногтем" "ногте" "ногти" "ногтей" "ногтям" "ногтей" "ногтями" "ногтях" masculine inanimate ; + fire_N = mkN "огонь" "огня" "огню" "огня" "огнём" "огне" "огни" "огней" "огням" "огней" "огнями" "огнях" masculine inanimate ; + fish_N = nMashina "рыб" ; + flower_N = mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate ; + fog_N = nTelefon "туман" ; + foot_N = nTetya "ступн" ; + forest_N = nAdres "лес" ; + fruit_N = nTelefon "фрукт"; + grass_N = nMashina "трав" ; + guts_N = nBol "внутренност" ; + hair_N = nTelefon "волос" ; + hand_N = nNoga "рук" ; + head_N = nMashina "голов" ; + heart_N = mkN "сердце" "сердца" "сердцу" "сердца" "сердцем" "сердце" "сердца" "сердец" "сердцам" "сердец" "сердцами" "сердцах" neuter inanimate; + horn_N = nAdres "рог" ; + husband_N = mkN "муж" "мужа" "мужу" "мужа" "мужем" "муже" "мужья" "мужей" "мужьям" "мужей" "мужьями" "мужьях" masculine animate ; + ice_N = mkN "лёд" "льда" "льду" "льда" "льдом" "льде" "льды" "льдов" "льдам" "льдов" "льдами" "льдах" masculine inanimate ; + knee_N = mkN "колено" "колена" "колену" "колена" "коленом" "колене" "колени" "колен" "коленам" "колен" "коленями" "коленях" neuter inanimate ; + lake_N = nChislo "озер" ; + leaf_N = nStul "лист" ; + leg_N = nNoga "ног" ; + liver_N = nBol "печен" ; + louse_N = mkN "вошь" "вши" "вши" "вошь" "вошью" "вше" "вши" "вшей" "вшам" "вшей" "вшами" "вшах" feminine animate ; + + meat_N = nChislo "мяс" ; + moon_N = nMashina "лун" ; + + + mountain_N = nMashina "гор" ; + mouth_N = mkN "рот" "рта" "рту" "рот" "ртом" "рте" "рты" "ртов" "ртам" "рты" "ртами" "ртах" masculine inanimate; + name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имена" "имён" "именам" "имена" "именами" "именах" neuter inanimate; + neck_N = nTetya "ше" ; + night_N = nBol "ноч" ; + nose_N = nTelefon "нос" ; + person_N = nBol "личность" ; + rain_N = nNol "дожд" ; + + road_N = nNoga "дорог" ; + root_N = nUroven "кор" ; + rope_N = nNoga "веревк" ; + salt_N = nBol "сол" ; + sand_N = mkN "песок" "песка" "песку" "песок" "песком" "песке" "пески" "песков" "пескам" "песков" "песками" "песках" masculine inanimate ; + sea_N = nProizvedenie "мор" ; + seed_N = mkN "семя" "семени" "семении" "семя" "семенем" "семени" "семена" "семян" "семенам" "семена" "семенами" "семенах" neuter inanimate ; + skin_N = nEdinica "кож" ; + sky_N = mkN "небо" "неба" "небу" "небо" "небом" "небе" "небеса" "небес" "небесам" "небес" "небесами" "небесах" neuter inanimate ; + smoke_N = nTelefon "дым" ; + snake_N = nTetya "зме" ; + snow_N = nAdres "снег" ; + star_N = nMashina "звезд" ; + stick_N = nNoga "палк" ; + + + tail_N = nTelefon "хвост" ; + tongue_N = nBank "язык" ; + tooth_N = nTelefon "зуб" ; + tree_N = nChislo "дерев" ; + water_N = nMashina "вод" ; + wife_N = nMashina "жен" ; + wind_N = mkN "ветер" "ветра" "ветру" "ветер" "ветром" "ветра" "ветров" "ветра" "ветрам" "ветров" "ветрами" "ветрах" masculine inanimate ; + wing_N = mkN "крыло" "крыла" "крылу" "крыло" "крылом" "крыле" "крылья" "крыльев" "крыльям" "крылья" "крыльями" "крыльях" neuter inanimate ; + + worm_N = nNol "черв" ; + year_N = nAdres "год" ; + + +-- Verbs + + bite_V2 = tvDir (mkRegVerb imperfective first "куса" "ю" "кусал" "кусай" "кусать"); + blow_V = mkRegVerb imperfective first "ду" "ю" "дул" "дуй" "дуть" ; + breathe_V = mkRegVerb imperfective second "дыш" "у" "дышал" "дыши" "дышать" ; + burn_V = mkRegVerb imperfective second "гор" "ю" "горел" "гори" "гореть" ; + count_V2 = tvDir (mkRegVerb imperfective first "счита" "ю" "считал" "считай" "считать" ) ; + cut_V2 = tvDir (mkRegVerb imperfective first "реж" "у" "резал" "режь" "резать" ) ; + dig_V = mkRegVerb imperfective first "копа" "ю" "копал" "копай" "копать" ; + + + fall_V = mkRegVerb imperfective first "пада" "ю" "падал" "падай" "падать" ; + + fight_V2 = tvDir (mkRegVerb imperfective firstE "дер" "у" "драл" "дери" "драть" ) ; + float_V = mkRegVerb imperfective firstE "плыв" "у" "плыл" "плыви" "плыть" ; + flow_V = mkRegVerb imperfective firstE "тек" "у" "тёк" "теки" "течь" ; + fly_V = mkRegVerb imperfective second "лета" "ю" "летал" "летай" "летать" ; + freeze_V = mkRegVerb imperfective first "замерза" "ю" "замерзал" "замерзай" "замерзать" ; + give_V3 = tvDirDir (mkRegVerb imperfective firstE "да" "ю" "давал" "давай" "давать" ) ; + + hit_V2 = tvDir (mkRegVerb imperfective first "ударя" "ю" "ударял" "ударяй" "ударять" ); + hold_V2 = tvDir (mkRegVerb imperfective second "держ" "у" "держал" "держи" "держать" ); + hunt_V2 = tvDir (mkRegVerb imperfective second "охоч" "у" "охотил" "охоть" "охотить" ) ; + kill_V2 = tvDir (mkRegVerb imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ; + + laugh_V = mkRegVerb imperfective firstE "сме" "ю" "смеял" "смей" "смеять" ; + lie_V = mkRegVerb imperfective firstE "лг" "у" "лгал" "лги" "лгать" ; + play_V = mkRegVerb imperfective first "игра" "ю" "играл" "играй" "играть" ; + pull_V2 = tvDir (mkRegVerb imperfective first "тян" "у" "тянул" "тяни" "тянуть" ) ; + push_V2 = tvDir (mkRegVerb imperfective first "толка" "ю" "толкал" "толкай" "толкать" ); + rub_V2 = tvDir (mkRegVerb imperfective firstE "тр" "у" "тёр" "три" "тереть" ); + + scratch_V2 = tvDir (mkRegVerb imperfective first "чеш" "у" "чесал" "чеши" "чесать" ) ; + + sew_V = mkRegVerb imperfective firstE "шь" "ю" "шил" "шей" "шить" ; + sing_V = mkRegVerb imperfective firstE "по" "ю" "пел" "пой" "петь" ; + sit_V = mkVerbum imperfective "сижу" "сидишь" "сидит" "сидим" "сидите" "сидят" "сидел" "сиди" "сидеть" ; + smell_V = mkRegVerb imperfective first "пахн" "у" "пахнул" "пахни" "пахнуть" ; + spit_V = mkRegVerb imperfective firstE "плю" "ю" "плевал" "плюй" "плевать" ; + split_V2 = tvDir (mkRegVerb imperfective first "разбива" "ю" "разбивал" "разбей" "разбивать" ) ; + squeeze_V2 = tvDir (mkRegVerb imperfective first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ; + stab_V2 = tvDir (mkRegVerb imperfective first "кол" "ю" "колол" "коли" "колоть" ) ; + stand_V = mkRegVerb imperfective second "сто" "ю" "стоял" "стой" "стоять" ; + suck_V2 = tvDir (mkRegVerb imperfective firstE "сос" "у" "сосал" "соси" "сосать") ; + swell_V = mkRegVerb imperfective first "опуха" "ю" "опухал" "опухай" "опухать" ; + swim_V = mkRegVerb imperfective first "плава" "ю" "плавал" "плавай" "плавать" ; + think_V = mkRegVerb imperfective first "дума" "ю" "думал" "думай" "думать" ; + throw_V2 = tvDir (mkRegVerb imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ; + tie_V2 = tvDir (mkRegVerb imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ; + turn_V = mkRegVerb imperfective first "поворачива" "ю" "поворачивал" "поворачивай" "поворачивать" ; + vomit_V = mkRegVerb imperfective firstE "рв" "у" "рвал" "рви" "рвать" ; + wash_V2 = tvDir (mkRegVerb imperfective first "мо" "ю" "мыл" "мой" "мыть" ) ; + wipe_V2 = tvDir (mkRegVerb imperfective first "вытира" "ю" "вытирал" "вытирай" "вытирать" ); + + + correct_A = AStaruyj "правильн" "правильнее"; + dry_A = AMolodoj "сух" "суше"; + + dull_A = AStaruyj "скучн" "скучнее"; + far_Adv = mkAdv "далеко"; + full_A = AStaruyj "полн" "полнее"; + heavy_A = AStaruyj "тяжел" "тяжелее"; + left_Ord = (uy_j_EndDecl "лев" ) ** {lock_A = <>}; + near_A = AMalenkij "близк" "ближе"; + right_Ord = (uy_j_EndDecl "прав") ** {lock_A = <>} ; + rotten_A = AMolodoj "гнил" "гнилее"; + round_A = AStaruyj "кругл" "круглее"; + sharp_A = AStaruyj "остр" "острее"; + smooth_A = AMalenkij "гладк" "глаже"; + straight_A = AMolodoj "прям" "прямее"; + wet_A = AStaruyj "мокр" "мокрее"; + wide_A = AMalenkij "широк" "шире"; + +fear_V2 =tvDir (mkRegVerb imperfective first "бо" "ю" "боял" "бой" "боять" ); +paris_PN = mkPN "Париж" Masc Inanimate ; + + + +} + diff --git a/lib/resource-1.0/russian/MorphoRus.gf b/lib/resource-1.0/russian/MorphoRus.gf index 305871a2d..d6610b898 100644 --- a/lib/resource-1.0/russian/MorphoRus.gf +++ b/lib/resource-1.0/russian/MorphoRus.gf @@ -310,6 +310,38 @@ oper pronChtoTo: Pronoun = p = P3 ; pron = False } ; +oper pronEti: Pronoun = + { s = table { + PF Nom _ _ => "эти" ; + PF Gen _ _ => "этих" ; + PF Dat _ _ => "этим" ; + PF Acc _ _ => "этих" ; + PF Inst _ _ => "этими" ; + PF Prepos _ _ => "этих" + } ; + n = Pl; + p = P3; + g= PGen Fem ; + anim = Animate ; + pron = False + } ; + +oper pronTe: Pronoun = + { s = table { + PF Nom _ _ => "те" ; + PF Gen _ _ => "тех" ; + PF Dat _ _ => "тем" ; + PF Acc _ _ => "тех" ; + PF Inst _ _ => "теми" ; + PF Prepos _ _ => "тех" + } ; + n = Pl; + p = P3; + g=PGen Fem ; + anim = Animate ; + pron = False + } ; + --oper pronNikto: Pronoun = -- { s = table { @@ -1229,32 +1261,32 @@ oper vesDet: Adjective = {s = table { } } ; oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table { - AF Nom _ (ASg Masc) => s+"ый"; - AF Nom _ (ASg Fem) => s+"ая"; - AF Nom _ (ASg Neut) => s+"ое"; - AF Nom _ APl => s+"ые"; - AF Acc Inanimate (ASg Masc) => s+"ый"; - AF Acc Animate (ASg Masc) => s+"ого"; - AF Acc _ (ASg Fem) => s+"ую"; - AF Acc _ (ASg Neut) => s+"ое"; - AF Acc Inanimate APl => s+"ые"; - AF Acc Animate APl => s+"ых"; - AF Gen _ (ASg Masc) => s+"ого"; - AF Gen _ (ASg Fem) => s+"ой"; - AF Gen _ (ASg Neut) => s+"ого"; - AF Gen _ APl => s+"ых"; - AF Inst _ (ASg Masc) => s+"ым"; - AF Inst _ (ASg Fem) => s+"ой"; - AF Inst _ (ASg Neut) => s+"ым"; - AF Inst _ APl => s+"ыми"; - AF Dat _ (ASg Masc) => s+"ому"; - AF Dat _ (ASg Fem) => s+"ой"; - AF Dat _ (ASg Neut) => s+"ому"; - AF Dat _ APl => s+"ым"; - AF Prepos _ (ASg Masc) => s+"ом"; - AF Prepos _ (ASg Fem) => s+"ой"; - AF Prepos _ (ASg Neut) => s+"ом"; - AF Prepos _ APl => s+"ых"; + AF Nom _ (ASg Masc) => Prelude.glue s "ый"; + AF Nom _ (ASg Fem) => Prelude.glue s "ая"; + AF Nom _ (ASg Neut) => Prelude.glue s "ое"; + AF Nom _ APl => Prelude.glue s "ые"; + AF Acc Inanimate (ASg Masc) => Prelude.glue s "ый"; + AF Acc Animate (ASg Masc) => Prelude.glue s "ого"; + AF Acc _ (ASg Fem) => Prelude.glue s "ую"; + AF Acc _ (ASg Neut) => Prelude.glue s "ое"; + AF Acc Inanimate APl => Prelude.glue s "ые"; + AF Acc Animate APl => Prelude.glue s "ых"; + AF Gen _ (ASg Masc) => Prelude.glue s "ого"; + AF Gen _ (ASg Fem) => Prelude.glue s "ой"; + AF Gen _ (ASg Neut) => Prelude.glue s "ого"; + AF Gen _ APl => Prelude.glue s "ых"; + AF Inst _ (ASg Masc) => Prelude.glue s "ым"; + AF Inst _ (ASg Fem) => Prelude.glue s "ой"; + AF Inst _ (ASg Neut) => Prelude.glue s "ым"; + AF Inst _ APl => Prelude.glue s "ыми"; + AF Dat _ (ASg Masc) => Prelude.glue s "ому"; + AF Dat _ (ASg Fem) => Prelude.glue s "ой"; + AF Dat _ (ASg Neut) => Prelude.glue s "ому"; + AF Dat _ APl => Prelude.glue s "ым"; + AF Prepos _ (ASg Masc) => Prelude.glue s "ом"; + AF Prepos _ (ASg Fem) => Prelude.glue s "ой"; + AF Prepos _ (ASg Neut) => Prelude.glue s "ом"; + AF Prepos _ APl => Prelude.glue s "ых"; AdvF => "о" } } ; @@ -1493,6 +1525,7 @@ param Conjugation = First | FirstE | Second | Mixed | Dolzhen; -- --3 First conjugation (in Present) verbs : +oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "иди" "идти"; --oper verbGulyat : Verbum = verbDecl Imperfective First "гуля" "ю" "гулял" "гуляй" "гулять"; --oper verbVkluchat : Verbum = verbDecl Imperfective First "включа" "ю" "включал" "включай" "включать"; --oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать"; @@ -1533,6 +1566,8 @@ oper verbDolzhen : Verbum = verbDecl Imperfective Dolzhen "долж" "ен" "д oper AspectVoice: Type = { s : VerbConj => Str ; asp: Aspect } ; +idetDozhd: Verbum -> Verbum = \idet -> {s = \\vf=>idet.s!vf ++ "дождь"; asp = Imperfective}; + -- "PresentVerb" takes care of the present tense conjugation. param PresentVF = PRF GenNum Person; diff --git a/lib/resource-1.0/russian/NounRus.gf b/lib/resource-1.0/russian/NounRus.gf index 90a7efd63..11436ceb9 100644 --- a/lib/resource-1.0/russian/NounRus.gf +++ b/lib/resource-1.0/russian/NounRus.gf @@ -36,6 +36,26 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in { pron = np.pron } ; + PPartNP np v2 = { + s = \\pf => np.s ! pf ++ v2.s ! VFORM Act VINF ; + -- no participles in the Verbum type as they behave as adjectives + n = np.n; + p = np.p; + g = np.g; + anim = np.anim; + pron = np.pron + } ; + + AdvNP np adv = { + s = \\pf => np.s ! pf ++ adv.s ; + n = np.n; + p = np.p; + g = np.g; + anim = np.anim; + pron = np.pron + } ; + + DetSg quant ord = { s = \\af => quant.s!af ++ ord.s!af ; n = quant.n; @@ -62,17 +82,15 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in { -- so just leave a decimal representation, without case-suffixes: NumInt i = {s = table { _ => table {_ => i.s } } } ; -{- - OrdInt n = case n of { - 0|2|6 => (uy_oj_EndDecl n.s) ; - 3 => (ti_j_EndDecl n.s) ; - _ => uy_j_EndDecl n.s } ; + -- OrdInt n = case n of { + -- 0|2|6 => (uy_oj_EndDecl n.s) ; + -- 3 => (ti_j_EndDecl n.s) ; + -- _ => uy_j_EndDecl n.s } ; OrdNumeral numeral = - {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ; --} - NumNumeral n = n ; + {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ; + NumNumeral n = n ; AdNum adn num = {s = \\c,n => adn.s ++ num.s!c!n} ; diff --git a/lib/resource-1.0/russian/ResRus.gf b/lib/resource-1.0/russian/ResRus.gf index 75591f8a8..9165fa790 100644 --- a/lib/resource-1.0/russian/ResRus.gf +++ b/lib/resource-1.0/russian/ResRus.gf @@ -23,12 +23,12 @@ param Animacy = Animate | Inanimate ; Voice = Act | Pass ; Aspect = Imperfective | Perfective ; --- RusTense = Present | Past | Future ; + RusTense = Present | PastRus | Future ; -- Degree = Pos | Comp | Super ; AfterPrep = Yes | No ; Possessive = NonPoss | Poss GenNum ; -- Anteriority = Simul | Anter ; - ClForm = ClIndic Tense Anteriority | ClCondit | ClInfinit | ClImper; + ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit | ClImper; -- "naked infinitive" clauses -- A number of Russian nouns have common gender. They can @@ -178,7 +178,7 @@ oper -- Depending on the tense verbs conjugate according to combinations -- of gender, person and number of the verb objects. --- Participles (Present and Past) and Gerund forms are not included in the +-- Participles (Present and PastRus) and Gerund forms are not included in the -- current description. This is the verb type used in the lexicon: oper Verbum : Type = { s: VerbForm => Str ; asp : Aspect }; @@ -190,8 +190,12 @@ param VTense = VPresent Person | VPast | VFuture Person ; oper - getVTense : Tense -> Person -> VTense= \t,p -> - case t of { Present => VPresent p ; Past => VPast; Future => VFuture p } ; + getVTense : RusTense -> Person -> VTense= \t,p -> + case t of { Present => VPresent p ; PastRus => VPast; Future => VFuture p } ; + + getTense : Tense -> RusTense= \t -> + case t of { Pres => Present ; Past => PastRus; _ => Future} ; + getVoice: VerbForm -> Voice = \vf -> case vf of { @@ -203,7 +207,7 @@ Nom => ""; Gen => "себя"; Dat=> "себе"; Acc => "себя"; -Instr => "собой"; +Inst => "собой"; Prep =>"себе"}; Verb : Type = {s : ClForm => GenNum => Person => Str ; asp : Aspect ; w: Voice} ; @@ -256,7 +260,7 @@ param oper getActVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of { ClIndic Future _ => VFORM Act (VIND (gNum g n) (VFuture p)); - ClIndic Past _ => VFORM Act (VIND (gNum g n) VPast); + ClIndic PastRus _ => VFORM Act (VIND (gNum g n) VPast); ClIndic Present _ => VFORM Act (VIND (gNum g n) (VPresent p)); ClCondit => VFORM Act (VSUB (gNum g n)); ClInfinit => VFORM Act VINF ; @@ -387,324 +391,4 @@ oper SF _ Prepos => Prepos } ; - --- oper --- agrP3 : Number -> Agr = \n -> --- {n = n ; p = P3} ; --- --- conjAgr : Agr -> Agr -> Agr = \a,b -> { --- n = conjNumber a.n b.n ; --- p = conjPerson a.p b.p --- } ; --- ----- For $Lex$. --- ----- For each lexical category, here are the worst-case constructors. --- --- mkNoun : (_,_,_,_ : Str) -> {s : Number => Case => Str} = --- \man,mans,men,mens -> { --- s = table { --- Sg => table { --- Gen => mans ; --- _ => man --- } ; --- Pl => table { --- Gen => mens ; --- _ => men --- } --- } --- } ; --- --- mkAdjective : (_,_,_,_ : Str) -> {s : AForm => Str} = --- \good,better,best,well -> { --- s = table { --- AAdj Posit => good ; --- AAdj Compar => better ; --- AAdj Superl => best ; --- AAdv => well --- } --- } ; --- --- mkVerb : (_,_,_,_,_ : Str) -> Verb = --- \go,goes,went,gone,going -> { --- s = table { --- VInf => go ; --- VPres => goes ; --- VPast => went ; --# notpresent --- VPPart => gone ; --- VPresPart => going --- } ; --- isRefl = False --- } ; --- --- mkIP : (i,me,my : Str) -> Number -> {s : Case => Str ; n : Number} = --- \i,me,my,n -> let who = mkNP i me my n P3 in {s = who.s ; n = n} ; --- --- mkNP : (i,me,my : Str) -> Number -> Person -> {s : Case => Str ; a : Agr} = --- \i,me,my,n,p -> { --- s = table { --- Nom => i ; --- Acc => me ; --- Gen => my --- } ; --- a = { --- n = n ; --- p = p --- } --- } ; --- ----- These functions cover many cases; full coverage inflectional patterns are ----- in $MorphoRus$. --- --- regN : Str -> {s : Number => Case => Str} = \car -> --- mkNoun car (car + "'s") (car + "s") (car + "s'") ; --- --- regA : Str -> {s : AForm => Str} = \warm -> --- mkAdjective warm (warm + "er") (warm + "est") (warm + "ly") ; --- --- regV : Str -> Verb = \walk -> --- mkVerb walk (walk + "s") (walk + "ed") (walk + "ed") (walk + "ing") ; --- --- regNP : Str -> Number -> {s : Case => Str ; a : Agr} = \that,n -> --- mkNP that that (that + "'s") n P3 ; --- ----- We have just a heuristic definition of the indefinite article. ----- There are lots of exceptions: consonantic "e" ("euphemism"), consonantic ----- "o" ("one-sided"), vocalic "u" ("umbrella"). --- --- artIndef = pre { --- "a" ; --- "an" / strs {"a" ; "e" ; "i" ; "o" ; "A" ; "E" ; "I" ; "O" } --- } ; --- --- artDef = "the" ; --- ----- For $Verb$. --- --- Verb : Type = { --- s : VForm => Str ; --- isRefl : Bool --- } ; --- --- VerbForms : Type = --- Tense => Anteriority => Polarity => Order => Agr => {fin, inf : Str} ; --- --- VP : Type = { --- s : VerbForms ; --- prp : Str ; -- present participle --- inf : Str ; -- infinitive --- ad : Str ; --- s2 : Agr => Str --- } ; --- ------ The order gets wrong with AdV, but works around a parser ------ generation bug. --- --- predV : Verb -> VP = \verb -> { --- s = \\t,ant,b,ord,agr => --- let --- inf = verb.s ! VInf ; --- fin = presVerb verb agr ; --- part = verb.s ! VPPart ; --- vf : Str -> Str -> {fin, inf : Str} = \x,y -> --- {fin = x ; inf = y} ; --- in --- case of { --- => vf fin [] ; --- should be opp --- => vf (does agr) inf ; --- => vf (have agr) part ; --# notpresent --- => vf (havent agr) part ; --# notpresent --- => vf (verb.s ! VPast) [] ; --# notpresent --- should be opp --- => vf "did" inf ; --# notpresent --- => vf "didn't" inf ; --# notpresent --- => vf "had" part ; --# notpresent --- => vf "hadn't" part ; --# notpresent --- => vf "will" inf ; --# notpresent --- => vf "won't" inf ; --# notpresent --- => vf "will" ("have" ++ part) ; --# notpresent --- => vf "won't" ("have" ++ part) ; --# notpresent --- => vf "would" inf ; --# notpresent --- => vf "wouldn't" inf ; --# notpresent --- => vf "would" ("have" ++ part) ; --# notpresent --- => vf "wouldn't" ("have" ++ part) ; --# notpresent --- => vf (doesnt agr) inf --- } ; --- prp = verb.s ! VPresPart ; --- inf = verb.s ! VInf ; --- ad = [] ; --- s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] --- } ; --- --- predAux : Aux -> VP = \verb -> { --- s = \\t,ant,b,ord,agr => --- let --- inf = verb.inf ; --- fin = verb.pres ! b ! agr ; --- part = verb.ppart ; --- vf : Str -> Str -> {fin, inf : Str} = \x,y -> --- {fin = x ; inf = y} ; --- in --- case of { --- => vf (have agr) part ; --# notpresent --- => vf (havent agr) part ; --# notpresent --- => vf (verb.past ! b ! agr) [] ; --# notpresent --- => vf "had" part ; --# notpresent --- => vf "hadn't" part ; --# notpresent --- => vf "will" inf ; --# notpresent --- => vf "won't" inf ; --# notpresent --- => vf "will" ("have" ++ part) ; --# notpresent --- => vf "won't" ("have" ++ part) ; --# notpresent --- => vf "would" inf ; --# notpresent --- => vf "wouldn't" inf ; --# notpresent --- => vf "would" ("have" ++ part) ; --# notpresent --- => vf "wouldn't" ("have" ++ part) ; --# notpresent --- => vf fin [] --- } ; --- prp = verb.prpart ; --- inf = verb.inf ; --- ad = [] ; --- s2 = \\_ => [] --- } ; --- --- insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> { --- s = vp.s ; --- prp = vp.prp ; --- inf = vp.inf ; --- ad = vp.ad ; --- s2 = \\a => vp.s2 ! a ++ obj ! a --- } ; --- ------ The adverb should be before the finite verb. --- --- insertAdV : Str -> VP -> VP = \adv,vp -> { --- s = vp.s ; --- prp = vp.prp ; --- inf = vp.inf ; --- ad = vp.ad ++ adv ; --- s2 = \\a => vp.s2 ! a --- } ; --- ----- --- --- predVV : {s : VVForm => Str ; isAux : Bool} -> VP = \verb -> --- let verbs = verb.s --- in --- case verb.isAux of { --- True => predAux { --- pres = table { --- Pos => \\_ => verbs ! VVF VPres ; --- Neg => \\_ => verbs ! VVPresNeg --- } ; --- past = table { --# notpresent --- Pos => \\_ => verbs ! VVF VPast ; --# notpresent --- Neg => \\_ => verbs ! VVPastNeg --# notpresent --- } ; --# notpresent --- inf = verbs ! VVF VInf ; --- ppart = verbs ! VVF VPPart ; --- prpart = verbs ! VVF VPresPart ; --- } ; --- _ => predV {s = \\vf => verbs ! VVF vf ; isRefl = False} --- } ; --- --- presVerb : {s : VForm => Str} -> Agr -> Str = \verb -> --- agrVerb (verb.s ! VPres) (verb.s ! VInf) ; --- --- infVP : Bool -> VP -> Agr -> Str = \isAux,vp,a -> --- if_then_Str isAux [] "to" ++ --- vp.inf ++ vp.s2 ! a ; --- --- agrVerb : Str -> Str -> Agr -> Str = \has,have,agr -> --- case agr of { --- {n = Sg ; p = P3} => has ; --- _ => have --- } ; --- --- have = agrVerb "has" "have" ; --- havent = agrVerb "hasn't" "haven't" ; --- does = agrVerb "does" "do" ; --- doesnt = agrVerb "doesn't" "don't" ; --- --- Aux = { --- pres : Polarity => Agr => Str ; --- past : Polarity => Agr => Str ; --# notpresent --- inf,ppart,prpart : Str --- } ; --- --- auxBe : Aux = { --- pres = \\b,a => case of { --- => "am" ; --- => ["am not"] ; --- am not I --- _ => agrVerb (posneg b "is") (posneg b "are") a --- } ; --- past = \\b,a => case a of { --# notpresent --- {n = Sg ; p = P1|P3} => (posneg b "was") ; --# notpresent --- _ => (posneg b "were") --# notpresent --- } ; --# notpresent --- inf = "be" ; --- ppart = "been" ; --- prpart = "being" --- } ; --- --- posneg : Polarity -> Str -> Str = \p,s -> case p of { --- Pos => s ; --- Neg => s + "n't" --- } ; --- --- conjThat : Str = "that" ; --- --- reflPron : Agr => Str = table { --- {n = Sg ; p = P1} => "myself" ; --- {n = Sg ; p = P2} => "yourself" ; --- {n = Sg ; p = P3} => "itself" ; ---- --- {n = Pl ; p = P1} => "ourselves" ; --- {n = Pl ; p = P2} => "yourselves" ; --- {n = Pl ; p = P3} => "themselves" --- } ; --- ----- For $Sentence$. --- --- Clause : Type = { --- s : Tense => Anteriority => Polarity => Order => Str --- } ; --- --- mkClause : Str -> Agr -> VP -> Clause = --- \subj,agr,vp -> { --- s = \\t,a,b,o => --- let --- verb = vp.s ! t ! a ! b ! o ! agr ; --- compl = vp.s2 ! agr --- in --- case o of { --- ODir => subj ++ verb.fin ++ vp.ad ++ verb.inf ++ compl ; --- OQuest => verb.fin ++ subj ++ vp.ad ++ verb.inf ++ compl --- } --- } ; --- --- ----- For $Numeral$. --- --- mkNum : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} = --- \two, twelve, twenty, second -> --- {s = table { --- unit => table {NCard => two ; NOrd => second} ; --- teen => \\c => mkCard c twelve ; --- ten => \\c => mkCard c twenty --- } --- } ; --- --- regNum : Str -> {s : DForm => CardOrd => Str} = --- \six -> mkNum six (six + "teen") (six + "ty") (regOrd six) ; --- --- regCardOrd : Str -> {s : CardOrd => Str} = \ten -> --- {s = table {NCard => ten ; NOrd => regOrd ten}} ; --- --- mkCard : CardOrd -> Str -> Str = \c,ten -> --- (regCardOrd ten).s ! c ; --- --- regOrd : Str -> Str = \ten -> --- case last ten of { --- "y" => init ten + "ieth" ; --- _ => ten + "th" --- } ; --- } diff --git a/lib/resource-1.0/russian/SentenceRus.gf b/lib/resource-1.0/russian/SentenceRus.gf index 404d13d54..08d700a8e 100644 --- a/lib/resource-1.0/russian/SentenceRus.gf +++ b/lib/resource-1.0/russian/SentenceRus.gf @@ -70,10 +70,10 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in { EmbedQS qs = {s = qs.s ! QIndir} ; EmbedVP vp = {s = vp.s!ClInfinit!(ASg Masc) !P3} ; - UseCl t a p cl = {s = cl.s! p.p ! ClIndic t.t a.a}; + UseCl t a p cl = {s = cl.s! p.p ! ClIndic (getTense t.t) a.a}; - UseQCl t a p qcl= {s = qcl.s!p.p! ClIndic t.t a.a }; - UseRCl t a p rcl ={s = rcl.s! p.p ! ClIndic t.t a.a }; + UseQCl t a p qcl= {s = qcl.s!p.p! ClIndic (getTense t.t) a.a }; + UseRCl t a p rcl ={s = rcl.s! p.p ! ClIndic (getTense t.t) a.a }; } diff --git a/lib/resource-1.0/russian/StructuralRus.gf b/lib/resource-1.0/russian/StructuralRus.gf index 8599600c1..af758d0f9 100644 --- a/lib/resource-1.0/russian/StructuralRus.gf +++ b/lib/resource-1.0/russian/StructuralRus.gf @@ -1,7 +1,7 @@ --# -path=.:../abstract:../common:../../prelude concrete StructuralRus of Structural = CatRus ** - open ResRus, MorphoRus, (P = ParadigmsRus), Prelude,NounRus in { + open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus, in { flags optimize=all ; coding=utf8 ; @@ -38,7 +38,6 @@ lin everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ; everywhere_Adv = ss "везде" ; few_Det = (ij_EndK_G_KH_Decl "немног") **{lock_Det= <>; n= Sg; g = PNoGen; c = Nom}; -- AMalenkij - first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj from_Prep = { s = "от" ; c = Gen }; he_Pron = pronOn ; @@ -59,9 +58,6 @@ lin -- inanimate, Sg: "большинство телефонов безмолству-ет" -- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ; -- animate, Pl: "большинство учащихся хорошо подготовлен-ы" - - - much_Det = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; -- same as previous must_VV = verbDolzhen ; no_Phr = ss ["Нет ."] ; @@ -75,8 +71,6 @@ lin please_Voc = ss "пожалуйста" ; possess_Prep = { s = "" ; c = Gen}; --- ?? AR 19/2/2004 quite_Adv = ss "довольно" ; - - she_Pron = pronOna ; so_AdA = ss "так"; somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>}); @@ -84,22 +78,14 @@ lin somePl_Det = nekotorujDet ** {n = Pl; g = PNoGen; c= Nom} ; something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ; somewhere_Adv = ss "где-нибудь" ; - - -{- - these_NP n = { s =\\_ => "“”"; n = Pl; p = P3; g= PGen Fem ; - anim = Animate ; pron = True} ; -- missing in Russian - those_NP n = { s =\\_ => "“”" ; n = Pl; p = P3; g=PGen Fem ; - anim = Animate ; pron = True} ; -- missing in Russian --} + these_NP = UsePron (pronEti** {lock_Pron = <>}); -- missing in Russian + those_NP = UsePron (pronTe** {lock_Pron = <>}); -- missing in Russian that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom} ; that_NP = det2NounPhrase totDet ; -- inanimate form only there_Adv = ss "там" ; there7to_Adv = ss "туда" ; there7from_Adv = ss "оттуда" ; therefore_PConj = ss "следовательно" ; - - -- these_NDet = etotDet ** { g = PNoGen; c= Nom} ; -- they8fem_NP = UsePron pronOni Animate; they_Pron = pronOni; @@ -113,8 +99,6 @@ lin under_Prep = { s = "под" ; c = Inst }; very_AdA = ss "очень" ; want_VV = verbKhotet ; - - we_Pron = pronMu ; whatPl_IP = pron2NounPhraseNum pronChto Inanimate Pl; whatSg_IP = pron2NounPhraseNum pronChto Inanimate Sg; @@ -146,7 +130,5 @@ lin --- NeitherNor = sd2 "ни" [", ни"] ** {n = Sg} ; --- NowhereNP = ss "нигде" ; --- AgentPrep = { s = "" ; c = Nom}; -- missing in Russian +} - - -} \ No newline at end of file diff --git a/lib/resource-1.0/russian/VerbRus.gf b/lib/resource-1.0/russian/VerbRus.gf index c5f2e5b10..068c7c760 100644 --- a/lib/resource-1.0/russian/VerbRus.gf +++ b/lib/resource-1.0/russian/VerbRus.gf @@ -9,7 +9,7 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in { { s=\\clf,gn,p => case clf of { (ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ; - (ClIndic Past _) => case gn of + (ClIndic PastRus _) => case gn of { (ASg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss); (ASg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss); (ASg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss); @@ -52,7 +52,7 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in { -- infinitive does not save GenNum, -- but indicative does for the sake of adjectival predication ! ClIndic Present _ => zloj.s ! AF Nom Animate gn ; - ClIndic Past _ => case gn of + ClIndic PastRus _ => case gn of { (ASg Fem) => "была" ++ zloj.s! AF Nom Animate (ASg Fem); (ASg Masc) => "был" ++ zloj.s! AF Nom Animate (ASg Masc); (ASg Neut) => "был" ++ zloj.s! AF Nom Animate (ASg Neut); @@ -97,7 +97,7 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in { }; ClInfinit => "быть" ++ zloj.s; ClIndic Present _ => zloj.s ; - ClIndic Past _ => case gn of + ClIndic PastRus _ => case gn of { (ASg Fem) => "была" ++ zloj.s; (ASg Masc) => "был" ++ zloj.s; (ASg Neut) => "было" ++ zloj.s;