mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Merge Reflexivity and Transitivity (untested)
This commit is contained in:
committed by
Roman Suzi
parent
58cfa9e8dc
commit
a793daaf11
@@ -144,8 +144,10 @@ oper
|
||||
let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in
|
||||
let ppp : GenNum=>Str = \\gn => shortPastPassPart v gn in
|
||||
case v.asp of {Imperfective => "несовершенного вида" ; Perfective => "совершенного вида"} ++ "," ++
|
||||
case v.refl of {Reflexive => "возвратный" ; NonReflexive => "невозвратный"} ++ "," ++
|
||||
case v.tran of {intransitive => "непереходный" ; Transitive => "переходный"} ++ "," ++
|
||||
case v.refltran of {
|
||||
Refl => "возвратный" ;
|
||||
Intrans => "непереходный" ;
|
||||
Trans => "переходный"} ++ "," ++
|
||||
heading2 (heading infinitive_Parameter) ++
|
||||
frameTable (
|
||||
tr (td v.inf ++ td v.infrefl)
|
||||
@@ -179,13 +181,13 @@ oper
|
||||
++ td (past ! Ag GPl P3) ++ td (pres ! Ag GPl P3) ++ td (fut ! Ag GPl P3) ++ td (imp ! Ag GPl P3) )
|
||||
) ++
|
||||
heading2 ("краткие причастия прошедшего времени") ++
|
||||
case v.tran of {
|
||||
Transitive => frameTable (
|
||||
case v.refltran of {
|
||||
Trans => frameTable (
|
||||
tr (th (heading masculine_Parameter) ++ th (heading feminine_Parameter) ++ th (heading neuter_Parameter)
|
||||
++ th (heading plural_Parameter)) ++
|
||||
tr (td (ppp ! (GSg Masc)) ++ td (ppp ! (GSg Fem)) ++ td (ppp ! (GSg Neut)) ++ td (ppp ! GPl))
|
||||
) ;
|
||||
Intransitive => "-"
|
||||
_ => "-"
|
||||
} ++
|
||||
heading2 ("деепричастия") ++
|
||||
frameTable (
|
||||
|
||||
@@ -184,8 +184,9 @@ oper
|
||||
prtr="существуя"; --*
|
||||
ptr="существовав"; --*
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Transitive
|
||||
refltran = Trans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Transitive
|
||||
} ;
|
||||
est_ell_V = est_V ** {prsg1, prsg2, prsg3, prpl1, prpl2, prpl3=""} ;
|
||||
be_ell_V = est_ell_V ** {inf=""} ;
|
||||
@@ -204,7 +205,8 @@ oper
|
||||
prtr=["не существуя"]; --*
|
||||
ptr=["не существовав"]; --*
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Transitive
|
||||
refltran = Trans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Transitive
|
||||
} ;
|
||||
}
|
||||
@@ -972,9 +972,10 @@ oper
|
||||
let ppp = makeVerbPassPastPart conjtype infs sg1 sg3.p1 past.psgm in
|
||||
let tr = makeVerbTransgressive conjtype infs pl3 past.psgm in {
|
||||
fut=NormalFuture ;
|
||||
refl=refl ;
|
||||
asp=asp ;
|
||||
tran=tran ;
|
||||
refltran = reflTran refl tran ; -- from API params to internal
|
||||
-- refl=refl ;
|
||||
-- tran=tran ;
|
||||
inf=inff.inf ;
|
||||
infrefl=inff.infrefl ;
|
||||
prsg1=presfut.prsg1 ;
|
||||
@@ -1105,8 +1106,9 @@ oper
|
||||
prtr=com + "тя";
|
||||
ptr=com + "тев";
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
|
||||
makeVerbBezhat6 : Aspect -> Transitivity -> Str -> VerbForms
|
||||
@@ -1135,8 +1137,9 @@ oper
|
||||
prtr=com + "жа"; -- *
|
||||
ptr=com + "жав";
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
|
||||
makeVerbEst : Aspect -> Transitivity -> Str -> VerbForms
|
||||
@@ -1165,8 +1168,9 @@ oper
|
||||
prtr=com + "дя";
|
||||
ptr=com + "в";
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
|
||||
makeVerbDat6 : Aspect -> Transitivity -> Str -> VerbForms
|
||||
@@ -1194,8 +1198,9 @@ oper
|
||||
prtr=com + "вая";
|
||||
ptr=com + "в";
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
|
||||
makeVerbByt6 : Aspect -> Transitivity -> Str -> VerbForms
|
||||
@@ -1224,8 +1229,9 @@ oper
|
||||
prtr=com + "ывая";
|
||||
ptr=com + "ыв";
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
|
||||
makeVerbJti: Aspect -> Transitivity -> Str -> Str -> VerbForms
|
||||
@@ -1255,7 +1261,8 @@ oper
|
||||
prtr=com + "дя";
|
||||
ptr=[];
|
||||
asp=asp;
|
||||
refl=refl;
|
||||
tran=tran
|
||||
refltran = reflTran refl tran ;
|
||||
-- refl=refl;
|
||||
-- tran=tran
|
||||
} ;
|
||||
}
|
||||
@@ -304,7 +304,7 @@ oper
|
||||
= \a1,link,a2 -> lin A (mkCompoundA a1 link a2) ;
|
||||
mkA : V -> Voice -> Tense -> A
|
||||
= \v,voice,t ->
|
||||
let refl = case v.refl of {Reflexive => "ся" ; _ => ""} in
|
||||
let refl = case v.refltran of {Refl => "ся" ; _ => ""} in
|
||||
case <voice,t> of {
|
||||
<Pass,Past|Cond> => lin A ( --# notpresent TODO: check
|
||||
guessAdjectiveForms (v.ppps + "ый") ** { --# notpresent
|
||||
|
||||
@@ -18,8 +18,9 @@ param
|
||||
Animacy = Animate | Inanimate ; -- одушевлённый / неодушевлённый
|
||||
Voice = Act | Pass ; -- залог
|
||||
Aspect = Imperfective | Perfective ; -- вид / аспект
|
||||
Reflexivity = Reflexive | NonReflexive ; -- возвратность
|
||||
Reflexivity = Reflexive | NonReflexive ; -- возвратность -- keep just for the API
|
||||
Transitivity = Transitive | Intransitive ; -- возвратность
|
||||
ReflTran = Refl | Trans | Intrans ; -- this is what's inside VerbForms
|
||||
Mood = Infinitive | Sbjv | Imperative | Ind ; -- SBJV and COND will be treated as same for now
|
||||
|
||||
GenNum = GSg Gender | GPl ; -- The plural never makes a gender distinction
|
||||
@@ -100,10 +101,18 @@ oper
|
||||
: Str ;
|
||||
fut : SpecialFuture ;
|
||||
asp : Aspect ;
|
||||
refl : Reflexivity ;
|
||||
tran : Transitivity
|
||||
refltran : ReflTran ;
|
||||
-- refl : Reflexivity ;
|
||||
-- tran : Transitivity
|
||||
} ;
|
||||
ComplementCase : Type = {s : Str ; c : Case ; neggen : Bool ; hasPrep : Bool} ;
|
||||
VerbForms2 : Type = VerbForms ** {c : ComplementCase} ;
|
||||
VerbForms3 : Type = VerbForms ** {c : ComplementCase ; c2 : ComplementCase} ;
|
||||
|
||||
reflTran : Reflexivity -> Transitivity -> ReflTran = \r,t ->
|
||||
case <r,t> of {
|
||||
<Reflexive,_> => Refl ;
|
||||
<_,Transitive> => Trans ;
|
||||
<_,Intransitive> => Intrans
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -620,26 +620,25 @@ oper
|
||||
guessVerbForms Imperfective Transitive inf (stem+"ю") (stem+"ет") ;
|
||||
|
||||
passivateNonReflexive : VerbForms -> VerbForms
|
||||
= \vf -> vf ** {refl=Reflexive} ;
|
||||
= \vf -> vf ** {refltran=Refl} ;
|
||||
|
||||
passivate : VerbForms -> VerbForms
|
||||
= \vf ->
|
||||
case vf.refl of {
|
||||
Reflexive => vf ;
|
||||
NonReflexive => passivateNonReflexive vf
|
||||
case vf.refltran of {
|
||||
Refl => vf ;
|
||||
_ => passivateNonReflexive vf
|
||||
} ;
|
||||
|
||||
shortPastPassPart : VerbForms -> GenNum -> Str
|
||||
= \vf,gn ->
|
||||
case vf.tran of {
|
||||
Intransitive => variants {} ;
|
||||
Transitive => case <vf.fut,gn> of {
|
||||
case vf.refltran of {
|
||||
Trans => case <vf.fut,gn> of {
|
||||
<NormalFuture,GSg Masc> => vf.pppss ;
|
||||
<NormalFuture,GSg Fem> => vf.pppss ++ BIND ++ "а" ;
|
||||
<NormalFuture,GSg Neut> => vf.pppss ++ BIND ++ "о" ;
|
||||
<NormalFuture,GPl> => vf.pppss ++ BIND ++ "ы" ;
|
||||
_ => vf.pppss
|
||||
}
|
||||
_ => vf.pppss } ;
|
||||
_ => variants {}
|
||||
} ;
|
||||
|
||||
copula : VerbForms
|
||||
@@ -663,8 +662,9 @@ oper
|
||||
prtr="будучи";
|
||||
ptr="быв";
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Intransitive
|
||||
refltran = Intrans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Intransitive
|
||||
} ;
|
||||
|
||||
-- normal copula require Nom in Pres. So this is Ins-friendly substitute.
|
||||
@@ -729,8 +729,9 @@ oper
|
||||
prtr="могши"; --*
|
||||
ptr="могши";
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Intransitive
|
||||
refltran = Intrans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Intransitive
|
||||
} ;
|
||||
|
||||
want : VerbForms
|
||||
@@ -754,8 +755,9 @@ oper
|
||||
prtr="хотя";
|
||||
ptr="хотев";
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Transitive
|
||||
refltran = Trans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Transitive
|
||||
} ;
|
||||
|
||||
nullVerb : VerbForms
|
||||
@@ -768,8 +770,9 @@ oper
|
||||
prtr, ptr ="";
|
||||
fut=NullFuture ;
|
||||
asp=Imperfective;
|
||||
refl=NonReflexive;
|
||||
tran=Transitive
|
||||
refltran = Trans ;
|
||||
-- refl=NonReflexive;
|
||||
-- tran=Transitive
|
||||
} ;
|
||||
|
||||
verbPastAgree : VerbForms -> Agr -> Str -> Str
|
||||
@@ -781,13 +784,13 @@ oper
|
||||
} ;
|
||||
|
||||
verbReflAfterConsonant : VerbForms -> Str
|
||||
= \vf -> case vf.refl of {Reflexive => BIND ++ "ся" ; NonReflexive => ""} ;
|
||||
= \vf -> case vf.refltran of {Refl => BIND ++ "ся" ; _ => ""} ;
|
||||
|
||||
verbRefl : VerbForms -> Str
|
||||
= \vf -> case vf.refl of {Reflexive => BIND ++ "сь" ; NonReflexive => ""} ;
|
||||
= \vf -> case vf.refltran of {Refl => BIND ++ "сь" ; _ => ""} ;
|
||||
|
||||
verbInf : VerbForms -> Str
|
||||
= \vf -> case vf.refl of {Reflexive => vf.infrefl ; NonReflexive => vf.inf} ;
|
||||
= \vf -> case vf.refltran of {Refl => vf.infrefl ; _ => vf.inf} ;
|
||||
|
||||
verbPresAgree : VerbForms -> Agr -> Str
|
||||
= \vf,a -> case a of {
|
||||
@@ -835,7 +838,7 @@ oper
|
||||
= \vf,a -> case a of {
|
||||
Ag (GSg Neut) (P1|P2|P3) => <"", (verbInf vf)> ; -- reused neuter for immediate imperative
|
||||
Ag (GSg _) P1 => <"", (verbInf vf)> ; -- ?
|
||||
Ag (GSg _) P2 => <"", case vf.refl of {NonReflexive=>vf.isg2; Reflexive=>vf.isg2refl}> ;
|
||||
Ag (GSg _) P2 => <"", case vf.refltran of {Refl=>vf.isg2refl; _=>vf.isg2}> ;
|
||||
Ag (GSg x) P3 => <"пусть", verbFutAgree vf (Ag (GSg x) P3)> ; -- ?
|
||||
Ag GPl P1 => <"", vf.ipl1 ++ verbReflAfterConsonant vf> ;
|
||||
Ag GPl P2 => <"", vf.isg2 ++ BIND ++ "те" ++ (verbRefl vf)> ;
|
||||
@@ -1611,8 +1614,8 @@ oper
|
||||
++ past ! Ag (GSg Masc) P1 ++ "," ++ past ! Ag (GSg Fem) P1 ++ "," ++ past ! Ag (GSg Neut) P1 ++ "," ++ past ! Ag GPl P1 ++ ","
|
||||
++ imp ! Ag (GSg Masc) P2 ++ "," ++ imp ! Ag GPl P2 ++ ","
|
||||
++ v.ptr ++ verbRefl v
|
||||
++ case v.tran of {
|
||||
Transitive => "," ++ ppp ! (GSg Masc) ++ "," ++ ppp ! (GSg Fem) ++ "," ++ ppp ! (GSg Neut) ++ "," ++ ppp ! GPl ;
|
||||
++ case v.refltran of {
|
||||
Trans => "," ++ ppp ! (GSg Masc) ++ "," ++ ppp ! (GSg Fem) ++ "," ++ ppp ! (GSg Neut) ++ "," ++ ppp ! GPl ;
|
||||
_ => ""
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user