From b589a0fd4dfaf9bfd9119352e0835464804ab362 Mon Sep 17 00:00:00 2001
From: janna <janna@cs.chalmer.se[D[D>
Date: Fri, 9 Jun 2006 11:10:43 +0000
Subject: [PATCH] russian4

---
 lib/resource-1.0/russian/IdiomRus.gf     |  12 +-
 lib/resource-1.0/russian/LangRus.gf      |  20 ++-
 lib/resource-1.0/russian/LexiconRus.gf   | 200 +++++++++++------------
 lib/resource-1.0/russian/ParadigmsRus.gf |  64 +++++++-
 lib/resource-1.0/russian/SentenceRus.gf  |   2 +-
 5 files changed, 182 insertions(+), 116 deletions(-)

diff --git a/lib/resource-1.0/russian/IdiomRus.gf b/lib/resource-1.0/russian/IdiomRus.gf
index 451e9aca7..f15741fdf 100644
--- a/lib/resource-1.0/russian/IdiomRus.gf
+++ b/lib/resource-1.0/russian/IdiomRus.gf
@@ -22,7 +22,17 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
        }
     } ;
 
-    ImpersCl vp = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>""}
+    CleftAdv adv sen = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
+      in 
+      "это" ++ ne ++ adv.s  ++ sen.s }; 
+
+    CleftNP np rs = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
+      in 
+      "это" ++ ne ++ np.s ! (PF Nom No NonPoss)  ++ rs.s ! ASg Masc!Nom!Animate  }; 
+
+    ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! APl ! P2  }; 
+
+    ImpersCl vp = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
       in 
       ne ++ vp.s! clf! (ASg Neut) ! P3  }; 
 
diff --git a/lib/resource-1.0/russian/LangRus.gf b/lib/resource-1.0/russian/LangRus.gf
index 0556d605d..a91740233 100644
--- a/lib/resource-1.0/russian/LangRus.gf
+++ b/lib/resource-1.0/russian/LangRus.gf
@@ -1,9 +1,17 @@
 --# -path=.:../abstract:../common:../../prelude
 
 concrete LangRus of Lang = 
-  GrammarRus,
-  LexiconRus ** {
-
-   flags startcat = Phr ; unlexer = text ; lexer = text ;
-
-  } ;
+  NounRus, 
+  VerbRus, 
+  AdjectiveRus,
+  AdverbRus,
+  NumeralRus,
+  SentenceRus,
+  QuestionRus,
+  RelativeRus,
+  ConjunctionRus,
+  PhraseRus,
+  TextX,
+  StructuralRus,
+  IdiomRus,
+  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 2958b9b6e..55c440902 100644
--- a/lib/resource-1.0/russian/LexiconRus.gf
+++ b/lib/resource-1.0/russian/LexiconRus.gf
@@ -9,18 +9,18 @@ flags
   coding=utf8 ;
 lin
   airplane_N = nTelefon "самолет" ;
-  answer_V2S = tvDir (mkRegVerb imperfective  first "отвеча" "ю" "отвечал" "отвечай" "отвечать" );
+  answer_V2S = dirV2 (regV imperfective  first "отвеча" "ю" "отвечал" "отвечай" "отвечать" );
   apartment_N = nMashina "квартир" ;
   apple_N = nChislo "яблок" ; 
   art_N = nChislo "искусств" ;
-  ask_V2Q = tvDir (mkRegVerb imperfective  first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ;
+  ask_V2Q = dirV2 (regV imperfective  first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ;
   baby_N = nMalush "малыш";
   bad_A = AKakoj_Nibud  "плох" "" "хуже";
   bank_N = nBank "банк" ;
   beautiful_A =  AStaruyj "красив" "красивее";
-  become_VA = mkRegVerb perfective second "станов" "лю" "стал" "стань" "стать" ;
+  become_VA = regV perfective second "станов" "лю" "стал" "стань" "стать" ;
   beer_N = nChislo "пив" ;
-  beg_V2V = tvDir (mkRegVerb imperfective  second "про" "шу" "просил" "проси" "просить" );
+  beg_V2V = dirV2 (regV imperfective  second "про" "шу" "просил" "проси" "просить" );
   big_A = AKakoj_Nibud  "больш" "" "больше" ;
   bike_N = nTelefon "велосипед" ;
   bird_N = nEdinica "птиц" ;
@@ -32,12 +32,12 @@ lin
   boss_N = nStomatolog "начальник" ;
   boy_N = nStomatolog "мальчик" ;
   bread_N = nAdres "хлеб" ;
-  break_V2 = tvDir (mkRegVerb imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
+  break_V2 = dirV2 (regV imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
 
  broad_A = AMalenkij  "широк" "шире";
   brother_N2 = mkN2  (nBrat ",брат") ;
   brown_A = AStaruyj  "коричнев" "коричневее";
   butter_N = nChislo "масл";
-  buy_V2 = tvDir (mkRegVerb imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
+  buy_V2 = dirV2 (regV imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
   camera_N = nMashina "kamer" ;
   cap_N = nNoga "чашк" ; -- чаш-ек Pl-Gen
   car_N = nMashina "машин" ;
@@ -51,29 +51,29 @@ child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка
   city_N = nAdres "город" ;

   clean_A =  AStaruyj  "чист" "чище"; 
   clever_A =  AStaruyj "умн" "умнее";
-  close_V2= tvDir (mkRegVerb imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" );
+  close_V2= dirV2 (regV imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" );
   coat_N = mkIndeclinableNoun "пальто" masculine inanimate ;
   cold_A =  AStaruyj  "холодн" "холоднее";
-  come_V = mkRegVerb imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ;
+  come_V = regV imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ;
   computer_N = nTelefon  "компьютер" ;
   country_N = nMashina "стран" ;
 cousin_N = nTelefon "кузен" ;
 cow_N = nMashina "коров" ;
-die_V = mkRegVerb imperfective first "умира" "ю" "умирал" "умрай" "умирать" ;
+die_V = regV 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 "куша" "ю" "кушал" "кушай" "кушать" );
+drink_V2 = dirV2 (regV imperfective firstE "пь" "ю" "пил" "пей" "пить" );
+eat_V2 = dirV2 (regV 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 "нахо" "жу" "находил" "находи" "находить" );
+fear_VS= regV imperfective second "бо" "ю" "боял" "бой" "боять" ;
+find_V2 = dirV2 (regV imperfective second "нахо" "жу" "находил" "находи" "находить" );
 fish_N = nMashina "рыб" ;
 floor_N = nTelefon "пол" ;
-forget_V2= tvDir (mkRegVerb imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
+forget_V2= dirV2 (regV imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
 fridge_N = nBank "холодильник" ;
 friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate;
 fruit_N = nTelefon "фрукт" ;
@@ -82,15 +82,15 @@ girl_N = nNoga "девочк" ;
 glove_N = nNoga "перчатк" ;
 gold_N = nChislo "золот" ;
 good_A = AKhoroshij "хорош" "лучше" ; 
-go_V= mkRegVerb imperfective second "хо" "жу" "ходил" "ходи" "ходить" ;
+go_V= regV imperfective second "хо" "жу" "ходил" "ходи" "ходить" ;
 green_A = AStaruyj  "зелен" "зеленее" ;
 harbour_N = nTelefon "залив" ;
-hate_V2= tvDir (mkRegVerb imperfective second "ненави" "жу" "ненавидел" "ненавидь" "ненавидеть" );
+hate_V2= dirV2 (regV imperfective second "ненави" "жу" "ненавидел" "ненавидь" "ненавидеть" );
 hat_N = nMashina "шляп" ;
-have_V2= tvDir (mkRegVerb imperfective first "име" "ю" "имел" "имей" "иметь" );
-hear_V2= tvDir (mkRegVerb imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
+have_V2= dirV2 (regV imperfective first "име" "ю" "имел" "имей" "иметь" );
+hear_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
 hill_N = nTelefon  "холм" ;
-hope_VS= mkRegVerb imperfective first "наде" "ю" "надеял" "надей" "надеять" ;
+hope_VS= regV imperfective first "наде" "ю" "надеял" "надей" "надеять" ;
 horse_N = nBol "лошад" ;
 hot_A = AKhoroshij "горяч" "горячее" ;
 house_N = nAdres "дом" ;

@@ -98,19 +98,19 @@ important_A = AStaruyj  "важн" "важнее" ;
 industry_N = nChislo "производств" ;
 iron_N = nChislo "желез" ;
 king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate;
-know_V2= tvDir (mkRegVerb imperfective first "зна" "ю" "знал" "знай" "знать" );
+know_V2= dirV2 (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
 lake_N = nChislo "озер" ;
 lamp_N = nMashina "ламп" ;
-learn_V2= tvDir (mkRegVerb imperfective second "уч" "у" "учил" "учи" "учить" );
+learn_V2= dirV2 (regV 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 "жив" "у" "жил" "живи" "жить" ;
+leave_V2= dirV2 (regV imperfective second "ухож" "у" "уходил" "уходи" "уходить" );
+like_V2= dirV2 (regV imperfective second "нрав" "лю" "нравил" "нравь" "нравить" );
+listen_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
+live_V= regV imperfective firstE "жив" "у" "жил" "живи" "жить" ;
 long_A = AStaruyj  "длинн" "длиннее" ;
-lose_V2 = tvDir (mkRegVerb imperfective first "теря" "ю" "терял" "теряй" "терять" );
+lose_V2 = dirV2 (regV imperfective first "теря" "ю" "терял" "теряй" "терять" );
 love_N = nBol "любов" ;
-love_V2= tvDir (mkRegVerb imperfective second "люб" "лю" "любил" "люби" "любить" );
+love_V2= dirV2 (regV imperfective second "люб" "лю" "любил" "люби" "любить" );
 man_N = nStomatolog "человек" ;
 meat_N =nChislo "мяс" ;
 milk_N = nChislo "молок" ;
@@ -123,18 +123,18 @@ new_A =  AStaruyj  "нов" "новее" ;
 newspaper_N = nMashina "газет" ;
 oil_N = nBol "нефть" ;
 old_A =  AStaruyj  "стар" "старше" ;
-open_V2= tvDir (mkRegVerb imperfective first "открыва" "ю" "открывал" "открывай" "открывать" );
+open_V2= dirV2 (regV imperfective first "открыва" "ю" "открывал" "открывай" "открывать" );
 paper_N = nNoga "бумаг" ;
 peace_N = nTelefon "мир" ;
 pen_N = nNoga "ручк" ;
 planet_N = nMashina "планет" ;
 plastic_N = nMashina "пластмасс" ;
-play_V2 = tvDir (mkRegVerb imperfective first "игра" "ю" "играл" "играй" "играть" );
+play_V2 = dirV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" );
 policeman_N = nTelefon "милиционер" ;
 priest_N = nStomatolog "священник" ;
 queen_N = nMashina "королев" ;
 radio_N = mkIndeclinableNoun "радио" neuter inanimate;
-read_V2 = tvDir (mkRegVerb imperfective first "чита" "ю" "читал" "читай" "читать" );
+read_V2 = dirV2 (regV imperfective first "чита" "ю" "читал" "читай" "читать" );
 red_A =  AStaruyj  "красн" "краснее" ;
 religion_N = nMalyariya "религи" ;
 restaurant_N = nTelefon "ресторан" ;
@@ -142,15 +142,15 @@ river_N = nNoga "рек" ;
 rock_N = nUroven "кам" ;
 roof_N = nEdinica "крыш" ;
 rubber_N = nMashina "резин" ;
-run_V = mkRegVerb imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
-say_VS = mkRegVerb imperfective second "говор" "ю" "говорил" "говори" "говорить" ;
+run_V = regV imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
+say_VS = regV 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 "посыла" "ю" "посылал" "посылай" "посылать" );
+seek_V2 = dirV2 (regV imperfective first "ищ" "у" "искал" "ищи" "искать" );
+see_V2 = dirV2 (regV imperfective second "виж" "у" "видел" "видь" "видеть" );
+sell_V3 = tvDirDir (regV imperfective firstE "прода" "ю" "продавал" "продавай" "продавать" );
+send_V3 = tvDirDir (regV imperfective first "посыла" "ю" "посылал" "посылай" "посылать" );
 sheep_N = nMashina "овц" ;
 ship_N = nNol "корабл" ;

 shirt_N = nNoga "рубашк" ;
@@ -159,11 +159,11 @@ shop_N = nTelefon "магазин" ;
 short_A = AMalenkij  "коротк" "короче" ;
 silver_N = nChislo "серебр" ;
 sister_N = nMashina "сестр" ;
-sleep_V = mkRegVerb imperfective second "сп" "лю" "спал" "спи" "спать" ;
+sleep_V = regV imperfective second "сп" "лю" "спал" "спи" "спать" ;
 small_A = AMalenkij  "маленьк" "меньше" ;
 snake_N = nTetya"зме" ;
 sock_N = nPotolok "нос" ;
-speak_V2 = tvDir (mkRegVerb imperfective second "говор" "ю" "говорил" "говори" "говорить" );
+speak_V2 = dirV2 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" );
 star_N = nMashina "звезд" ;
 steel_N = nBol "стал" ;
 stone_N = nNol "камен" ;
@@ -171,47 +171,47 @@ 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 "включа" "ю" "включал" "включай" "включать") ;
+switch8off_V2 = dirV2 (regV imperfective first "выключа" "ю" "выключал" "выключай" "выключать") ;
+switch8on_V2 = dirV2 (regV imperfective first "включа" "ю" "включал" "включай" "включать") ;
 table_N = nTelefon "стол" ;
 teacher_N = nNol "учител" ;
-teach_V2 = tvDir (mkRegVerb imperfective second "уч" "у" "учил" "учи" "учить" );
+teach_V2 = dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
 television_N = nProizvedenie "телевидени" ;
 thick_A = AStaruyj  "толст" "толще" ;
 thin_A = AMalenkij  "тонк" "тоньше" ;
 train_N = nAdres "поезд" ;
-travel_V = mkRegVerb imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ;
+travel_V = regV imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ;
 tree_N = nChislo "дерев" ;
 --trousers_N =  mkN "" "" "" "" "" "" "штаны" "штанов" "штанам" "штаны" "штанами" "штанах" masculine inanimate;
 ugly_A = AStaruyj  "некрасив" "некрасивее" ;
-understand_V2 = tvDir (mkRegVerb imperfective first "понима" "ю" "понимал" "понимай" "понимать" );
+understand_V2 = dirV2 (regV imperfective first "понима" "ю" "понимал" "понимай" "понимать" );
 university_N = nTelefon "университет" ;
 village_N = nMalyariya "деревн" ;
-wait_V2 = tvDir (mkRegVerb imperfective firstE "жд" "у" "ждал" "жди" "ждать" );
-walk_V = mkRegVerb imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ;
+wait_V2 = dirV2 (regV imperfective firstE "жд" "у" "ждал" "жди" "ждать" );
+walk_V = regV imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ;
 warm_A = AStaruyj  "тёпл" "теплее" ;
 war_N = nMashina "войн" ;
-watch_V2 = tvDir (mkRegVerb imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" );
+watch_V2 = dirV2 (regV imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" );
 water_N = nMashina "вод" ;
 white_A = AStaruyj  "бел" "белее" ;

 window_N = nChislo "окн" ;
 wine_N = nChislo "вин" ;
-win_V2 = tvDir (mkRegVerb imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" );
+win_V2 = dirV2 (regV imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" );
 woman_N = nZhenchina "женщин" ;
 wood_N = nChislo "дерев" ;
-write_V2 = tvDir (mkRegVerb imperfective first "пиш" "у" "писал" "пиши" "писать" );
+write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
 yellow_A = AStaruyj  "жёлт" "желтее" ;
 young_A = AMolodoj  "молод" "моложе";
 
-  do_V2 = tvDir (mkRegVerb imperfective first "дела" "ю" "делал" "делай" "делать" );
+  do_V2 = dirV2 (regV imperfective first "дела" "ю" "делал" "делай" "делать" );
   now_Adv  = mkAdv "сейчас" ;
   already_Adv  = mkAdv "уже" ;
   song_N =  nTetya "песн" ;
-  add_V3 = mkV3 (mkRegVerb imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative;
+  add_V3 = mkV3 (regV imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative;
   number_N  = nChislo  "числ" ;
-  put_V2 = tvDir (mkRegVerb imperfective firstE "клад" "у" "клал" "клади" "класть" );
-  stop_V = mkRegVerb imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
-  jump_V = mkRegVerb imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
+  put_V2 = dirV2 (regV imperfective firstE "клад" "у" "клал" "клади" "класть" );
+  stop_V = regV imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
+  jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
 
 distance_N3 = mkN3 (nProizvedenie "расстоян") from_Prep to_Prep ;
 
@@ -225,11 +225,11 @@ easy_A2V = mkA2 (AMalenkij "легк" "легче") "для" genitive ;
 
 empty_A =  AMolodoj "пуст" "пустее";
 married_A2 = mkA2 (adjInvar "замужем") "за" instructive ;
-paint_V2A = tvDir (mkRegVerb imperfective first "рису" "ю" "рисовал" "рисуй"  "рисовать" ) ;
+paint_V2A = dirV2 (regV 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 "интересу" "ю" "интересовал" "интересуй" "интересовать";  
+talk_V3 = mkV3 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional;
+wonder_VQ = regV imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать";  
 
     -- Nouns
 
@@ -323,57 +323,57 @@ wonder_VQ = mkRegVerb imperfective first "интересу" "ю" "интерес
 
 -- 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 "копа" "ю" "копал" "копай" "копать"  ;
+    bite_V2 = dirV2 (regV imperfective  first "куса" "ю" "кусал" "кусай" "кусать");
+    blow_V = regV imperfective  first "ду" "ю" "дул" "дуй" "дуть"  ;
+   breathe_V = regV imperfective  second "дыш" "у" "дышал" "дыши" "дышать"  ;
+   burn_V = regV imperfective  second "гор" "ю" "горел" "гори" "гореть"  ;
+   count_V2 = dirV2 (regV imperfective  first "счита" "ю" "считал" "считай" "считать"  ) ;
+    cut_V2 = dirV2 (regV imperfective  first "реж" "у" "резал" "режь" "резать" ) ;
+    dig_V = regV imperfective  first "копа" "ю" "копал" "копай" "копать"  ;
    
     
-    fall_V = mkRegVerb imperfective  first "пада" "ю" "падал" "падай" "падать"  ;
+    fall_V = regV 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 "да" "ю" "давал" "давай" "давать" ) ;
+    fight_V2 = dirV2 (regV imperfective  firstE "дер" "у" "драл" "дери" "драть" ) ;
+    float_V = regV imperfective  firstE "плыв" "у" "плыл" "плыви" "плыть"  ;
+    flow_V = regV imperfective  firstE "тек" "у" "тёк" "теки" "течь"  ;
+    fly_V = regV imperfective  second "лета" "ю" "летал" "летай" "летать"  ;
+    freeze_V = regV imperfective  first "замерза" "ю" "замерзал" "замерзай" "замерзать"  ;
+    give_V3 = tvDirDir (regV 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 "убива" "ю" "убивал" "убивай" "убивать" ) ;
+    hit_V2 = dirV2 (regV imperfective  first "ударя" "ю" "ударял" "ударяй" "ударять"  );
+    hold_V2 = dirV2 (regV imperfective  second "держ" "у" "держал" "держи" "держать"  );
+    hunt_V2 = dirV2 (regV imperfective  second "охоч" "у" "охотил" "охоть" "охотить" ) ;
+    kill_V2 = dirV2 (regV 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 "тр" "у" "тёр" "три" "тереть"  );
+    laugh_V = regV imperfective  firstE "сме" "ю" "смеял" "смей" "смеять"  ;
+    lie_V = regV imperfective  firstE "лг" "у" "лгал" "лги" "лгать"  ;
+    play_V = regV imperfective  first "игра" "ю" "играл" "играй" "играть"  ;
+    pull_V2 = dirV2 (regV imperfective  first "тян" "у" "тянул" "тяни" "тянуть" ) ;
+    push_V2 = dirV2 (regV imperfective  first "толка" "ю" "толкал" "толкай" "толкать"  );
+    rub_V2 = dirV2 (regV imperfective  firstE "тр" "у" "тёр" "три" "тереть"  );
     
-    scratch_V2 = tvDir (mkRegVerb imperfective  first "чеш" "у" "чесал" "чеши" "чесать" ) ;    
+    scratch_V2 = dirV2 (regV imperfective  first "чеш" "у" "чесал" "чеши" "чесать" ) ;    
 
-    sew_V = mkRegVerb imperfective  firstE "шь" "ю" "шил" "шей" "шить"  ;
-    sing_V = mkRegVerb imperfective  firstE "по" "ю" "пел" "пой" "петь"  ;
+    sew_V = regV imperfective  firstE "шь" "ю" "шил" "шей" "шить"  ;
+    sing_V = regV 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 "вытира" "ю" "вытирал" "вытирай" "вытирать"  );
+    smell_V = regV imperfective  first "пахн" "у" "пахнул" "пахни" "пахнуть"  ;
+    spit_V = regV imperfective  firstE "плю" "ю" "плевал" "плюй" "плевать"  ;
+    split_V2 = dirV2 (regV imperfective  first "разбива" "ю" "разбивал" "разбей" "разбивать" ) ;
+    squeeze_V2 = dirV2 (regV imperfective  first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ;
+    stab_V2 = dirV2 (regV imperfective  first "кол" "ю" "колол" "коли" "колоть" ) ;
+    stand_V = regV imperfective second "сто" "ю" "стоял" "стой" "стоять"  ;
+    suck_V2 = dirV2 (regV imperfective  firstE "сос" "у" "сосал" "соси" "сосать")  ;
+    swell_V = regV imperfective  first "опуха" "ю" "опухал" "опухай" "опухать"  ;
+    swim_V = regV imperfective  first "плава" "ю" "плавал" "плавай" "плавать"  ;
+    think_V = regV imperfective  first "дума" "ю" "думал" "думай" "думать"  ;
+    throw_V2 = dirV2 (regV imperfective  first "броса" "ю" "бросал" "бросай" "бросать" ) ;
+    tie_V2 = dirV2 (regV imperfective  first "вяж" "у" "вязал" "вяжи" "вязать")  ;
+    turn_V = regV imperfective  first "поворачива" "ю" "поворачивал" "поворачивай" "поворачивать"  ;
+    vomit_V = regV imperfective  firstE "рв" "у" "рвал" "рви" "рвать"  ;
+    wash_V2 = dirV2 (regV imperfective  first "мо" "ю" "мыл" "мой" "мыть" ) ;
+    wipe_V2 = dirV2 (regV imperfective  first "вытира" "ю" "вытирал" "вытирай" "вытирать"  );
 
 
     correct_A = AStaruyj "правильн" "правильнее"; 
@@ -394,7 +394,7 @@ wonder_VQ = mkRegVerb imperfective first "интересу" "ю" "интерес
     wet_A = AStaruyj "мокр" "мокрее";
     wide_A = AMalenkij "широк" "шире";
 
-fear_V2 =tvDir (mkRegVerb imperfective first "бо" "ю" "боял" "бой" "боять" );
+fear_V2 =dirV2 (regV imperfective first "бо" "ю" "боял" "бой" "боять" );
 paris_PN = mkPN   "Париж"  Masc  Inanimate ;
 
 
diff --git a/lib/resource-1.0/russian/ParadigmsRus.gf b/lib/resource-1.0/russian/ParadigmsRus.gf
index 041feed4b..e5e104126 100644
--- a/lib/resource-1.0/russian/ParadigmsRus.gf
+++ b/lib/resource-1.0/russian/ParadigmsRus.gf
@@ -90,6 +90,11 @@ oper
      -- мужчина, мужчины, мужчине, мужчину, мужчиной, мужчине
      -- мужчины, мужчин, мужчинам, мужчин, мужчинами, мужчинах
 
+-- The regular function captures the variants for some popular nouns 
+-- endings below:
+
+  regN : Str -> N ;
+
 
 -- Here are some common patterns. The list is far from complete.
 
@@ -169,6 +174,11 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 
 -- mkA : ( : Str) -> A ;
 
+-- The regular function captures the variants for some popular adjective
+-- endings below:
+  
+   regA : Str -> Str -> A ;
+
 -- Invariable adjective is a special case.
 
    adjInvar : Str -> A ;          -- khaki, mini, hindi, netto
@@ -260,9 +270,9 @@ perfective: Aspect ;
 -- first person from with second person form:
 -- "я люб-лю", "ты люб-ишь". Stems shoud be the same.
 -- So the definition for verb "любить"  looks like:
--- mkRegVerb Imperfective Second "люб" "лю" "любил" "люби" "любить";
+-- regV Imperfective Second "люб" "лю" "любил" "люби" "любить";
 
-   mkRegVerb :Aspect -> Conjugation -> (_,_,_,_,_ : Str) -> V ; 
+   regV :Aspect -> Conjugation -> (_,_,_,_,_ : Str) -> V ; 
 
 -- For writing an application grammar one usualy doesn't need
 -- the whole inflection table, since each verb is used in 
@@ -278,9 +288,9 @@ perfective: Aspect ;
 -- Two-place verbs, and the special case with direct object. Notice that
 -- a particle can be included in a $V$.
 
-   mkTV     : V   -> Str -> Case -> V2 ;   -- "войти в дом"; "в", accusative
+   mkV2     : V   -> Str -> Case -> V2 ;   -- "войти в дом"; "в", accusative
    mkV3  : V -> Str -> Str -> Case -> Case -> V3 ; -- "сложить письмо в конверт"
-   tvDir    : V -> V2 ;                    -- "видеть", "любить"
+   dirV2    : V -> V2 ;                    -- "видеть", "любить"
    tvDirDir : V -> V3 ; 
                             
 -- The definitions should not bother the user of the API. So they are
@@ -358,6 +368,32 @@ dolzhen = Dolzhen;
      anim = anim
    } ** {lock_N = <>}  ;
 
+
+regN = \ray -> 
+    let
+      ra  = Predef.tk 1 ray ; 
+      y   = Predef.dp 1 ray ; 
+      r   = Predef.tk 2 ray ; 
+      ay  = Predef.dp 2 ray ;
+      rays =
+        case y of {
+          "а" => nMashina ray ; 
+          "ь" => nBol ray ;
+          "я" => case ay of { 
+                   "ия" => nMalyariya ray; 
+                    _  => nTetya ray };
+          "е" => case ay of {
+            "ее" => nObezbolivauchee ray ;
+            "ое" => nZhivotnoe ray  ;
+            _ => nProizvedenie ray  };
+          "о" => nChislo ray;
+           _=>  nStomatolog ray
+         }
+     in
+       rays ;
+
+  
+
   nMashina   = \s -> aEndInAnimateDecl s ** {lock_N = <>};
   nEdinica   = \s -> ej_aEndInAnimateDecl s ** {lock_N = <>};
   nZhenchina = \s -> (aEndAnimateDecl s) ** { g = Fem ; anim = Animate } ** {lock_N = <>}; 
@@ -392,7 +428,7 @@ dolzhen = Dolzhen;
 
 
 -- An individual-valued function is a common noun together with the
--- preposition prefixed to its argument ("кл�Z�+ о�' дома").
+-- preposition prefixed to its argument ("клZ+ о' дома").
 -- The situation is analogous to two-place adjectives and transitive verbs.
 --
 -- We allow the genitive construction to be used as a variant of
@@ -421,6 +457,18 @@ dolzhen = Dolzhen;
   mkNP = \x,y,z -> UsePN (mkPN x y z) ;
 
 -- Adjective definitions
+  regA = \ray, comp -> 
+    let
+      ay  = Predef.dp 2 ray ;
+      rays =
+        case ay of {
+          "ый" => AStaruyj ray comp; 
+          "ой" => AMolodoj ray comp;
+          "ий" =>  AMalenkij ray comp;
+           _=>  AKhoroshij ray comp
+         }
+     in
+       rays ;
 
   adjInvar = \s -> { s = \\_,_ => s } ** {lock_A= <>};
 
@@ -462,7 +510,7 @@ dolzhen = Dolzhen;
        PRF APl P3 => plP3   
      };
 
-    mkRegVerb a b c d e f g = verbDecl a b c d e f g ** {lock_V = <>} ;
+    regV a b c d e f g = verbDecl a b c d e f g ** {lock_V = <>} ;
    -- defined in morpho.RusU.gf
 {-
    mkV a b = extVerb a b ** {lock_V = <>};                         -- defined in types.RusU.gf
@@ -475,8 +523,8 @@ dolzhen = Dolzhen;
        VSubj gn => aller.s ! VFORM vox (VSUB gn)
        }; t = Present ; a = aller.asp ; w = vox ; lock_V = <>} ;
 -}
-   mkTV v p cas = v ** {s2 = p ; c = cas; lock_V2 = <>}; 
-   tvDir v = mkTV v [] Acc;
+   mkV2 v p cas = v ** {s2 = p ; c = cas; lock_V2 = <>}; 
+   dirV2 v = mkV2 v [] Acc;
 
 
    tvDirDir v = mkV3 v "" "" Acc Dat; 
diff --git a/lib/resource-1.0/russian/SentenceRus.gf b/lib/resource-1.0/russian/SentenceRus.gf
index 08d700a8e..1fd376e39 100644
--- a/lib/resource-1.0/russian/SentenceRus.gf
+++ b/lib/resource-1.0/russian/SentenceRus.gf
@@ -57,7 +57,7 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
     ImpVP inf = {s = \\pol, g,n =>          
         let 
           dont  = case pol of {
-            Neg => "don't" ;
+            Neg => "не" ;
             _ => []
             }
         in
