summaryrefslogtreecommitdiff
path: root/grammars/resource/russian/ResRus.gf
diff options
context:
space:
mode:
Diffstat (limited to 'grammars/resource/russian/ResRus.gf')
-rw-r--r--grammars/resource/russian/ResRus.gf230
1 files changed, 230 insertions, 0 deletions
diff --git a/grammars/resource/russian/ResRus.gf b/grammars/resource/russian/ResRus.gf
new file mode 100644
index 000000000..9be1fc835
--- /dev/null
+++ b/grammars/resource/russian/ResRus.gf
@@ -0,0 +1,230 @@
+--# -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 ResRus of ResAbs = open Prelude, Syntax in {
+flags
+ coding=utf8 ;
+ startcat=Phr ;
+ lexer=text ;
+ unlexer=text ;
+
+lincat
+
+ N = CommNoun ;
+ -- = {s : SubstForm => Str ; g : Gender ; anim : Animacy } ;
+ CN = CommNounPhrase ;
+ -- = {s : Number => Case => Str; g : Gender; anim : Animacy} ;
+ NP = NounPhrase ;
+ -- = { s : PronForm => Str ; n : Number ; p : Person ;
+ -- g: Gender ; anim : Animacy ; pron: Bool} ;
+ PN = ProperName ;
+ -- = {s : Case => Str ; g : Gender ; anim : Animacy} ;
+ Adj1 = Adjective ;
+ -- = {s : AdjForm => Str} ;
+ Det = Determiner ;
+ -- = Adjective ** { n: Number; c : Case } ;
+ Adj2 = AdjCompl ;
+ -- = Adjective ** Complement ;
+ AdjDeg = AdjDegr ;
+ -- = {s : Degree => AdjForm => Str} ;
+ AP = AdjPhrase ;
+ -- = Adjective ** {p : IsPostfixAdj} ;
+ Fun = Function ;
+ -- = CommNounPhrase ** Complement ;
+
+ V = Verb ;
+ -- = {s : VF => Str ; t: Tense ; a : Aspect ; v: Voice} ;
+ VP = VerbPhrase ;
+ -- = Verb ** {s2 : Str ; s3 : Gender => Number => Str ;
+ -- negBefore: Bool} ;
+ TV = TransVerb ;
+ -- = Verb ** {s2 : Preposition ; c: Case } ;
+ VS = SentenceVerb ;
+ -- = Verb ;
+ AdV = Adverb ;
+ -- = {s : Str} ;
+
+ S = Sentence ;
+ -- = {s : Str} ;
+ Slash = SentenceSlashNounPhrase ;
+ -- = Sentence ** Complement ;
+
+ RP = RelPron ;
+ -- = {s : GenNum => Case => Animacy => Str} ;
+ RC = RelClause ;
+ -- = RelPron ;
+
+ IP = IntPron ;
+ -- = NounPhrase ;
+ Qu = Question ;
+ -- = {s : QuestForm => Str} ;
+ Imp = Imperative ;
+ -- = { s: Gender => Number => Str } ;
+ Phr = Utterance ;
+ -- = {s : Str} ;
+
+ Conj = Conjunction ;
+ -- = {s : Str ; n : Number} ;
+ ConjD = ConjunctionDistr ;
+ -- = {s1,s2 : Str ; n : Number} ;
+
+ ListS = ListSentence ;
+ -- = {s1,s2 : Mode => Str} ;
+ ListAP = ListAdjPhrase ;
+ -- = {s1,s2 : AdjForm => Str ; p : Bool} ;
+ ListNP = ListNounPhrase ;
+ -- = { s1,s2 : PronForm => Str ; g: Gender ; anim : Animacy ;
+ -- n : Number ; p : Person ; pron : Bool } ;
+
+--.
+lin
+ UsePN = nameNounPhrase ;
+ ComplAdj = complAdj ;
+ PredVP = predVerbPhrase ;
+ PosTV = complTransVerb True ;
+ NegTV = complTransVerb False ;
+ AdjP1 = adj2adjPhrase ;
+ ModAdj = modCommNounPhrase ;
+ PosA = predAdjective True ;
+ NegA = predAdjective False ;
+
+ UseN = noun2CommNounPhrase ;
+ ModGenOne = npGenDet Sg ;
+ ModGenMany = npGenDet Pl ;
+ UseFun = funAsCommNounPhrase ;
+ AppFun = appFunComm ;
+ PositAdjP = positAdjPhrase ;
+ ComparAdjP = comparAdjPhrase ;
+ SuperlNP = superlNounPhrase ;
+
+ DetNP = detNounPhrase ;
+ IndefOneNP = indefNounPhrase Sg ;
+ IndefManyNP = indefNounPhrase Pl ;
+ DefOneNP = defNounPhrase Sg ;
+ DefManyNP = defNounPhrase Pl ;
+
+ PosV = predVerb True ;
+ NegV = predVerb False ;
+ PosCN = predCommNoun True ;
+ NegCN = predCommNoun False ;
+ PosNP = predNounPhrase True ;
+ NegNP = predNounPhrase False ;
+ PosVS = complSentVerb True ;
+ NegVS = complSentVerb False ;
+
+ AdvVP = adVerbPhrase ;
+ LocNP = locativeNounPhrase ;
+ AdvCN = advCommNounPhrase ;
+
+ PosSlashTV = slashTransVerb True ;
+ NegSlashTV = slashTransVerb False ;
+
+ IdRP = identRelPron ;
+ FunRP = funRelPron ;
+ RelVP = relVerbPhrase ;
+ RelSlash = relSlash ;
+ ModRC = modRelClause ;
+ RelSuch = relSuch ;
+
+ WhoOne = intPronKto Sg ;
+ WhoMany = intPronKto Pl ;
+ WhatOne = intPronChto Sg ;
+ WhatMany = intPronChto Pl ;
+ FunIP = funIntPron ;
+ NounIPOne = nounIntPron Sg ;
+ NounIPMany = nounIntPron Pl ;
+
+ QuestVP = questVerbPhrase ;
+ IntVP = intVerbPhrase ;
+ IntSlash = intSlash ;
+ QuestAdv = questAdverbial ;
+
+ ImperVP = imperVerbPhrase ;
+
+ IndicPhrase = indicUtt ;
+ QuestPhrase = interrogUtt ;
+ ImperOne = imperUtterance Masc Sg ;
+ ImperMany = imperUtterance Masc Pl ;
+
+ TwoS = twoSentence ;
+ ConsS = consSentence ;
+ ConjS = conjunctSentence ;
+ ConjDS = conjunctDistrSentence ;
+
+ TwoAP = twoAdjPhrase ;
+ ConsAP = consAdjPhrase ;
+ ConjAP = conjunctAdjPhrase ;
+ ConjDAP = conjunctDistrAdjPhrase ;
+
+ TwoNP = twoNounPhrase ;
+ ConsNP = consNounPhrase ;
+ ConjNP = conjunctNounPhrase ;
+ ConjDNP = conjunctDistrNounPhrase ;
+
+ SubjS = subjunctSentence ;
+ SubjImper = subjunctImperative ;
+ SubjQu = subjunctQuestion ;
+
+ PhrNP = useNounPhrase ;
+ PhrOneCN = useCommonNounPhrase Sg ;
+ PhrManyCN = useCommonNounPhrase Pl ;
+ PhrIP ip = postfixSS "?" ip ;
+ PhrIAdv ia = postfixSS "?" ia ;
+
+
+ INP = pron2NounPhrase pronYa Animate;
+ ThouNP = pron2NounPhrase pronTu Animate;
+ HeNP = pron2NounPhrase pronOn Animate;
+ SheNP = pron2NounPhrase pronOna Animate;
+ WeNP = pron2NounPhrase pronMu Animate;
+ YeNP = pron2NounPhrase pronVu Animate;
+ YouNP = pron2NounPhrase pronVu Animate;
+ TheyNP = pron2NounPhrase pronOni Animate;
+
+ EveryDet = kazhdujDet ** {n = Sg ; c= Nom} ;
+ AllDet = vseDetPl ** {n = Pl; c= Nom} ;
+ WhichDet = kotorujDet ** {n = Sg; c= Nom} ; -- a singular version only
+ MostDet = bolshinstvoDet ** {n = Pl; c= Gen} ;
+
+ HowIAdv = ss "как" ;
+ WhenIAdv = ss "когда" ;
+ WhereIAdv = ss "где" ;
+ WhyIAdv = ss "почему" ;
+
+ AndConj = ss "и" ** {n = Pl} ;
+ OrConj = ss "или" ** {n = Sg} ;
+ BothAnd = sd2 "как" [", так"] ** {n = Pl} ;
+ EitherOr = sd2 "либо" [", либо"] ** {n = Sg} ;
+
+-- 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 "когда" ;
+
+ PhrYes = ss ["да ."] ;
+ PhrNo = ss ["нет ."] ;
+
+} ;