--# -path=.:../abstract:../../prelude

--1 The Top-Level Russian Resource Grammar
--
-- Janna Khegai 2003
-- on the basis of code for other languages by Aarne Ranta
--
-- This is the Russian concrete syntax of the multilingual resource
-- grammar. Most of the work is done in the file $syntax.RusU.gf$.
-- However, for the purpose of documentation, we make here explicit the
-- linearization types of each category, so that their structures and
-- dependencies can be seen.
-- Another substantial part is the linearization rules of some
-- structural words.
--
-- The users of the resource grammar should not look at this file for the
-- linearization rules, which are in fact hidden in the document version.
-- They should use $resource.Abs.gf$ to access the syntactic rules.
-- This file can be consulted in those, hopefully rare, occasions in which
-- one has to know how the syntactic categories are
-- implemented. The parameter types are defined in $types.RusU.gf$.

concrete StructuralRus of Structural = CombinationsRus ** open Prelude, SyntaxRus in {
flags 
 coding=utf8 ;

lin
  INP    = pron2NounPhrase pronYa Animate;
  ThouNP = pron2NounPhrase pronTu Animate;
  HeNP   = pron2NounPhrase pronOn Animate;
  SheNP  = pron2NounPhrase pronOna Animate;
  ItNP   = pron2NounPhrase pronOno Inanimate;
  WeNumNP = pronWithNum (pron2NounPhrase pronMu Animate);
  YeNumNP = pronWithNum (pron2NounPhrase pronVu Animate);
  YouNP  = pron2NounPhrase pronVu Animate;
  TheyNP = pron2NounPhrase pronOni Animate;

  EveryDet = kazhdujDet ** {n = Sg ; g = PNoGen; c= Nom} ; 
  AllMassDet   = vesDet ** {n = Sg; g = PNoGen;  c = Nom} ; 
  AllNumDet  = mkDeterminerNum (vseDetPl ** {n = Pl; g = PNoGen; c = Nom} ); 
  WhichDet = kotorujDet ** {n = Sg; g = PNoGen; c= Nom} ;
  WhichNumDet = mkDeterminerNum (kotorujDet ** {n = Pl; g = PNoGen; c= Nom} );  
  MostDet  = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; 
  -- inanimate, Sg: "большинство телефонов безмолству-ет" 
  MostsDet = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;  
  -- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
  ManyDet  = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; 
  MuchDet  = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; -- same as previous
  SomeDet  = nekotorujDet ** {n = Sg; g = PNoGen; c= Nom} ;
  SomeNumDet = mkDeterminerNum (nekotorujDet ** {n = Pl; g = PNoGen; c= Nom} );  
  AnyDet   = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
  AnyNumDet  = mkDeterminerNum (lubojDet ** {n = Pl; g = PNoGen; c= Nom} );  
  NoDet    = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
  NoNumDet   = mkDeterminerNum (nikakojDet ** {n = Pl; g = PNoGen; c= Nom} );  
  ThisDet  = etotDet ** {n = Sg; g = PNoGen; c= Nom} ;
  TheseNumDet = mkDeterminerNum (etotDet ** {n = Pl; g = PNoGen; c= Nom} );  
  ThatDet  = totDet ** {n = Sg; g = PNoGen; c= Nom} ;
  ThoseNumDet = mkDeterminerNum (totDet ** {n = Pl; g = PNoGen; c= Nom} );  
  
  ThisNP = det2NounPhrase etotDet ; -- inanimate form only
  ThatNP = det2NounPhrase totDet ; -- inanimate form only
  TheseNumNP n =  { s =\\_ => [] ; n = Pl; p = P3; g= PGen Fem ; anim = Animate ;  pron = True} ; 
   -- missing in Russian
  ThoseNumNP n =  { s =\\_ => [] ; n = Pl; p = P3; g=PGen Fem ; anim = Animate ;  pron = True} ; 
   -- missing in Russian

EverybodyNP = mkNounPhrase Pl (noun2CommNounPhrase (eEnd_Decl "вс")) ;
SomebodyNP = pron2NounPhrase pronKtoTo Animate;
NobodyNP = pron2NounPhrase pronNikto Animate;
EverythingNP = pron2NounPhrase pronVseInanimate Inanimate;
SomethingNP = pron2NounPhrase pronChtoTo Inanimate ;
NothingNP = pron2NounPhrase pronNichto Inanimate;

CanVV =  extVerb verbMoch Act Present  ;
CanKnowVV = extVerb verbMoch Act Present  ;
MustVV = extVerb verbDolzhen Act Present  ;
WantVV = extVerb verbKhotet Act Present  ;

  HowIAdv = ss "как" ;
  WhenIAdv = ss "когда" ;
  WhereIAdv = ss "где" ;
  WhyIAdv = ss "почему" ;

  AndConj  = ss "и"  ** {n = Pl} ;
  OrConj   = ss "или"  ** {n = Sg} ;
  BothAnd  = sd2 "как" [", так и"]  ** {n = Pl} ;
  EitherOr = sd2 "либо" [", либо"]  ** {n = Sg} ;
-- comma is not visible in GUI!

-- In case of "neither..  no" expression double negation is not 
-- only possible, but also required in Russian.
-- There is no means of control for this however in the resource grammar.

  NeitherNor = sd2 "ни" [", ни"]  ** {n = Sg} ;

  IfSubj   = ss "если" ;
  WhenSubj = ss "когда" ;
  AlthoughSubj = ss "хотя" ;

  PhrYes = ss ["Да ."] ;
  PhrNo = ss ["Нет ."] ;

  EverywhereNP = ss "везде" ;
  SomewhereNP = ss "где-нибудь" ;
  NowhereNP = ss "нигде" ;
  VeryAdv = ss "очень" ;
  TooAdv = ss "слишком" ;
  OtherwiseAdv = ss "иначе" ;
   AlmostAdv = ss "почти" ;
  QuiteAdv = ss "довольно" ;
  ThereforeAdv = ss "следовательно" ;

  InPrep = { s2 = "в" ; c = Prepos };
  OnPrep = { s2 = "на" ; c = Prepos };
  ToPrep = { s2 = "к" ; c = Dat };
  ThroughPrep = { s2 = "через" ; c = Acc };
  AbovePrep =  { s2 = "над" ; c = Inst};
  UnderPrep = { s2 = "под"  ; c = Inst };
  InFrontPrep = { s2 = "перед" ; c = Inst};
  BehindPrep = { s2 = "за" ; c = Inst };
  BetweenPrep = { s2 = "между" ; c = Inst};
  FromPrep = { s2 = "от" ; c = Gen };
  BeforePrep = { s2 = "перед" ; c = Inst};
  DuringPrep = { s2 = ["в течение"] ; c = Gen};
  AfterPrep = { s2 = "после" ; c = Gen };
  WithPrep = { s2 = "с" ; c = Inst};
  WithoutPrep = { s2 = "без" ; c = Gen};
  ByMeansPrep = { s2 = ["с помощью"] ; c = Gen};
  PossessPrep = { s2 = "" ; c = Gen}; --- ?? AR 19/2/2004
  PartPrep = { s2 = "" ; c = Nom}; -- missing in Russian
  AgentPrep = { s2 = "" ; c = Nom}; -- missing in Russian
} ;
