mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 09:32:53 -06:00
Russian: some refactoring of verb conjugation.
This commit is contained in:
@@ -10,9 +10,6 @@
|
|||||||
|
|
||||||
-- We use the parameter types and word classes defined for morphology.
|
-- We use the parameter types and word classes defined for morphology.
|
||||||
|
|
||||||
-- Note: mkPassive operation is at the moment incorrect. Low-level ending-analysis
|
|
||||||
-- is needed to fix the operation.
|
|
||||||
|
|
||||||
resource MorphoRus = ResRus ** open Prelude, (Predef=Predef) in {
|
resource MorphoRus = ResRus ** open Prelude, (Predef=Predef) in {
|
||||||
|
|
||||||
flags coding=utf8 ;
|
flags coding=utf8 ;
|
||||||
@@ -1397,9 +1394,7 @@ oper softSignEndDeclFemInstr_MI: Str -> SubstFormDecl = \loshad ->
|
|||||||
-- +++ MG_UR: end of our feminine patterns +++
|
-- +++ MG_UR: end of our feminine patterns +++
|
||||||
|
|
||||||
|
|
||||||
-- preposition types added by Magda Gerritsen and Ulrich Real
|
oper preposVNaEndUMasc: Str -> CommNoun = \les ->
|
||||||
|
|
||||||
oper preposition_V: Str -> CommNoun = \les ->
|
|
||||||
{ s = table
|
{ s = table
|
||||||
{ SF Sg Nom => les+"";
|
{ SF Sg Nom => les+"";
|
||||||
SF Sg Gen => les+"а" ;
|
SF Sg Gen => les+"а" ;
|
||||||
@@ -1418,27 +1413,6 @@ oper preposition_V: Str -> CommNoun = \les ->
|
|||||||
g = Neut ; anim = Inanimate
|
g = Neut ; anim = Inanimate
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper preposition_Na: Str -> CommNoun = \most ->
|
|
||||||
{ s = table
|
|
||||||
{ SF Sg Nom => most+"";
|
|
||||||
SF Sg Gen => most+"а" ;
|
|
||||||
SF Sg Dat => most+"у" ;
|
|
||||||
SF Sg Acc => most+"";
|
|
||||||
SF Sg Inst => most+"ом" ;
|
|
||||||
SF Sg (Prepos PrepOther) => most+"е" ;
|
|
||||||
SF Sg (Prepos PrepVNa) => most+"у" ;
|
|
||||||
SF Pl Nom => most+"ы" ;
|
|
||||||
SF Pl Gen => most+"ов";
|
|
||||||
SF Pl Dat => most+"ам" ;
|
|
||||||
SF Pl Acc => most+"ы" ;
|
|
||||||
SF Pl Inst => most+"ами" ;
|
|
||||||
SF Pl (Prepos _) => most+"ах"
|
|
||||||
} ;
|
|
||||||
g = Neut ; anim = Inanimate
|
|
||||||
} ;
|
|
||||||
-- +++ MG_UR: end of our preposition patterns +++
|
|
||||||
|
|
||||||
|
|
||||||
--oper oEnd_Decl: Str -> CommNoun = \bolshinstv ->
|
--oper oEnd_Decl: Str -> CommNoun = \bolshinstv ->
|
||||||
--{ s = table {
|
--{ s = table {
|
||||||
-- SF Sg Nom => bolshinstv+"о" ;
|
-- SF Sg Nom => bolshinstv+"о" ;
|
||||||
@@ -2065,16 +2039,7 @@ oper verbDolzhen : Verbum = verbDecl Imperfective Dolzhen "долж" "ен" "д
|
|||||||
oper verbOrganisuet : Verbum = verbDecl Imperfective Foreign "организу" "ю" "организовал" "организуй" "организовать";
|
oper verbOrganisuet : Verbum = verbDecl Imperfective Foreign "организу" "ю" "организовал" "организуй" "организовать";
|
||||||
|
|
||||||
|
|
||||||
-- To reduces the redundancies in the definitions
|
oper idetDozhd: Verbum -> Verbum = \idet -> {s = \\vf=>idet.s!vf ++ "дождь"; asp = Imperfective};
|
||||||
-- we introduce some intermediate types,
|
|
||||||
-- so that the full type can be described as a combination
|
|
||||||
-- of the intermediate types. For example "AspectVoice"
|
|
||||||
-- is a type for defining a pattern for a particular
|
|
||||||
-- aspect and voice.
|
|
||||||
|
|
||||||
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.
|
-- "PresentVerb" takes care of the present tense conjugation.
|
||||||
|
|
||||||
@@ -2187,135 +2152,88 @@ oper presentConjForeign: Str -> Str -> PresentVerb = \del, sgP1End ->
|
|||||||
|
|
||||||
-- +++ MG_UR: new conjugation class 'Foreign' introduced +++
|
-- +++ MG_UR: new conjugation class 'Foreign' introduced +++
|
||||||
oper verbDecl: Aspect -> Conjugation -> Str -> Str -> Str -> Str -> Str -> Verbum =
|
oper verbDecl: Aspect -> Conjugation -> Str -> Str -> Str -> Str -> Str -> Verbum =
|
||||||
\a, c, del, sgP1End, sgMascPast, imperSgP2, inf -> case a of
|
\a, c, del, sgP1End, sgMascPast, imperSgP2, inf ->
|
||||||
{ Perfective => case c of {
|
let conj = case c of {
|
||||||
First => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConj1 del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
First => <presentConj1,pastConj> ;
|
||||||
FirstE => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConj1E del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
FirstE => <presentConj1E,pastConj> ;
|
||||||
Second => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConj2 del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
Second => <presentConj2,pastConj> ;
|
||||||
SecondA => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConj2a del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
SecondA => <presentConj2a,pastConj> ;
|
||||||
Mixed => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConjMixed del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
Mixed => <presentConjMixed,pastConj> ;
|
||||||
Dolzhen => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConjDolzhen del sgP1End) (pastConjDolzhen sgMascPast)) (pastConjDolzhen sgMascPast);
|
Dolzhen => <presentConjDolzhen,pastConjDolzhen> ;
|
||||||
Foreign => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConjForeign del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast)
|
Foreign => <presentConjForeign,pastConj> } in
|
||||||
} ;
|
let patt = case a of {
|
||||||
Imperfective => case c of {
|
Perfective => mkVerbImperfective;
|
||||||
First => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConj1 del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
Imperfective => mkVerbImperfective } in
|
||||||
FirstE => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConj1E del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
patt inf imperSgP2 (conj.p1 del sgP1End) (conj.p2 sgMascPast) ;
|
||||||
Second => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConj2 del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
|
||||||
SecondA => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConj2a del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast);
|
|
||||||
Mixed => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConjMixed del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast) ;
|
|
||||||
Dolzhen => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConjDolzhen del sgP1End) (pastConjDolzhen sgMascPast)) (pastConjDolzhen sgMascPast);
|
|
||||||
Foreign => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConjForeign del sgP1End) (pastConj sgMascPast)) (pastConj sgMascPast)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
-- for verbs like "мочь" ("can") with changing consonants (first conjugation):
|
-- for verbs like "мочь" ("can") with changing consonants (first conjugation):
|
||||||
-- "могу - можешь"
|
-- "могу - можешь"
|
||||||
oper verbDeclMoch: Aspect -> Conjugation -> Str -> Str -> Str -> Str ->Str -> Str -> Verbum =
|
oper verbDeclMoch: Aspect -> Conjugation -> Str -> Str -> Str -> Str ->Str -> Str -> Verbum =
|
||||||
\a, c, del, sgP1End, sgMascPast, imperSgP2, inf, altRoot -> case a of
|
\a, c, del, sgP1End, sgMascPast, imperSgP2, inf, altRoot ->
|
||||||
{ Perfective => mkVerb (perfectiveActivePattern inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConj sgMascPast)) (pastConj sgMascPast);
|
let patt = case a of {
|
||||||
Imperfective => mkVerb (imperfectiveActivePattern inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConj sgMascPast)) (pastConj sgMascPast)
|
Perfective => mkVerbImperfective;
|
||||||
|
Imperfective => mkVerbImperfective } in
|
||||||
|
patt inf imperSgP2 (presentConj1Moch del sgP1End altRoot) (pastConj sgMascPast);
|
||||||
|
|
||||||
|
oper add_sya : Voice -> Str -> Str = \v,x ->
|
||||||
|
case v of {
|
||||||
|
Act => x ;
|
||||||
|
Pas => case Predef.dp 2 x of {
|
||||||
|
"а" | "е" | "ё" | "и" | "о" | "у" | "ы" | "э" | "ю" | "я" => x + "сь" ;
|
||||||
|
_ => x + "ся"
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
-- "mkVerb" produce the passive forms from
|
|
||||||
-- the active forms using the "mkPassive" method.
|
|
||||||
-- Passive is expressed in Russian by so called reflexive verbs,
|
|
||||||
-- which are formed from the active form by suffixation.
|
|
||||||
oper mkVerb : AspectVoice -> PastVerb -> Verbum = \av1, pv -> { s = table {
|
|
||||||
VFORM Act vf => av1.s !vf;
|
|
||||||
VFORM Pass vf => (mkPassive av1 pv ).s ! vf
|
|
||||||
} ;
|
|
||||||
asp = av1.asp
|
|
||||||
};
|
|
||||||
|
|
||||||
-- vowels : Strs = strs {
|
|
||||||
-- "а" ; "е" ; "ё" ; "и" ; "о" ; "у" ;
|
|
||||||
-- "ы" ; "э" ; "ю" ; "я"
|
|
||||||
-- } ;
|
|
||||||
--
|
|
||||||
oper mkPassive: AspectVoice -> PastVerb -> AspectVoice = \av, pv ->
|
|
||||||
{ s = table {
|
|
||||||
VINF => av.s ! VINF + "ся";
|
|
||||||
VIMP Sg P1 => av.s ! (VIMP Sg P1) +"сь" ;
|
|
||||||
VIMP Pl P1 => av.s ! (VIMP Pl P1) +"ся";
|
|
||||||
VIMP Sg P2 => av.s ! (VIMP Sg P2 ) +"сь";
|
|
||||||
VIMP Pl P2 => av.s! (VIMP Pl P2) +"сь";
|
|
||||||
VIMP Sg P3 => av.s ! (VIMP Sg P3) +"ся";
|
|
||||||
VIMP Pl P3 => av.s ! (VIMP Pl P3) +"ся";
|
|
||||||
VSUB (ASg Masc) => pv ! (PSF (ASg Masc)) + "ся"++"бы";
|
|
||||||
VSUB (ASg Fem) => pv ! (PSF (ASg Fem)) + "сь"++"бы";
|
|
||||||
VSUB (ASg Neut) => pv ! (PSF (ASg Neut)) + "сь"++"бы";
|
|
||||||
VSUB APl => pv ! (PSF APl) + "сь"+"бы" ;
|
|
||||||
VIND (ASg _) (VPresent P1) =>
|
|
||||||
-- case av.asp of { Imperfective =>
|
|
||||||
av.s ! (VIND (ASg Masc) (VPresent P1)) + "сь" ;
|
|
||||||
-- Perfective = > nonExist
|
|
||||||
-- } ;
|
|
||||||
VIND (ASg _) (VPresent P2) => av.s ! (VIND (ASg Masc) (VPresent P2))+ "ся" ;
|
|
||||||
VIND (ASg _) (VPresent P3) => av.s ! (VIND (ASg Masc) (VPresent P3))+ "ся" ;
|
|
||||||
VIND APl (VPresent P1) => av.s !( VIND APl (VPresent P1)) + "ся" ;
|
|
||||||
VIND APl (VPresent P2) => av.s !( VIND APl (VPresent P2)) + "сь" ;
|
|
||||||
VIND APl (VPresent P3) => av.s !( VIND APl (VPresent P3)) + "ся" ;
|
|
||||||
VIND (ASg _) (VFuture P1) => av.s ! (VIND (ASg Masc) (VFuture P1)) + "сь";
|
|
||||||
VIND (ASg _) (VFuture P2) => av.s! (VIND (ASg Masc) (VFuture P2) )+ "ся";
|
|
||||||
VIND (ASg _) (VFuture P3) => av.s! (VIND (ASg Masc) (VFuture P3)) + "ся";
|
|
||||||
VIND APl (VFuture P1) => av.s! (VIND APl (VFuture P1) )+ "ся";
|
|
||||||
VIND APl (VFuture P2) => av.s! (VIND APl (VFuture P2) )+ "сь";
|
|
||||||
VIND APl (VFuture P3) => av.s! (VIND APl (VFuture P3)) + "ся";
|
|
||||||
VIND (ASg Masc) VPast => av.s ! (VIND (ASg Masc) VPast ) + "ся";
|
|
||||||
VIND (ASg Fem) VPast => av.s ! (VIND (ASg Fem) VPast ) + "сь";
|
|
||||||
VIND (ASg Neut) VPast => av.s ! (VIND (ASg Neut) VPast) + "сь";
|
|
||||||
VIND APl VPast => av.s ! (VIND APl VPast ) + "сь"
|
|
||||||
} ;
|
|
||||||
asp = av.asp
|
|
||||||
};
|
|
||||||
|
|
||||||
-- Generation the imperfective active pattern given
|
-- Generation the imperfective active pattern given
|
||||||
-- a number of basic conjugation forms.
|
-- a number of basic conjugation forms.
|
||||||
|
|
||||||
oper imperfectiveActivePattern : Str -> Str -> PresentVerb -> PastVerb -> AspectVoice =
|
oper mkVerbImperfective : Str -> Str -> PresentVerb -> PastVerb -> Verbum =
|
||||||
\inf, imper, presentFuture, past -> { s= table {
|
\inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
|
||||||
VINF => inf ;
|
case vf of {
|
||||||
VIMP Sg P1 => "давайте" ++ inf ;
|
VINF => add_sya vox inf ;
|
||||||
VIMP Pl P1 => "давайте" ++ inf ;
|
|
||||||
VIMP Sg P2 => imper ;
|
VIMP _ P1 => "давайте" ++ add_sya vox inf ;
|
||||||
VIMP Pl P2 => imper+"те" ;
|
VIMP Sg P2 => add_sya vox imper ;
|
||||||
VIMP Sg P3 => "пусть" ++ presentFuture ! (PRF (ASg Masc) P3) ;
|
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
||||||
VIMP Pl P3 => "пусть" ++ presentFuture ! (PRF APl P3) ;
|
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P3)) ;
|
||||||
VSUB (ASg Masc) => past ! (PSF (ASg Masc)) ++"бы";
|
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF APl P3)) ;
|
||||||
VSUB (ASg Fem) => past ! (PSF (ASg Fem)) ++"бы";
|
|
||||||
VSUB (ASg Neut) => past ! (PSF (ASg Neut) )++"бы";
|
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы";
|
||||||
VSUB APl => past ! (PSF APl) ++"бы";
|
|
||||||
VIND (ASg _) (VPresent p) => presentFuture ! ( PRF (ASg Masc) p);
|
VIND (ASg _) (VPresent p) => add_sya vox (presentFuture ! (PRF (ASg Masc) p));
|
||||||
VIND APl (VPresent p) => presentFuture ! (PRF APl p);
|
VIND APl (VPresent p) => add_sya vox (presentFuture ! (PRF APl p));
|
||||||
VIND (ASg _) (VFuture P1) => "буду" ++ inf ;
|
VIND (ASg _) (VFuture P1) => "буду" ++ add_sya vox inf ;
|
||||||
VIND (ASg _) (VFuture P2) => "будешь" ++ inf ;
|
VIND (ASg _) (VFuture P2) => "будешь" ++ add_sya vox inf ;
|
||||||
VIND (ASg _) (VFuture P3) => "будет" ++ inf ;
|
VIND (ASg _) (VFuture P3) => "будет" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P1) => "будем" ++ inf ;
|
VIND APl (VFuture P1) => "будем" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P2) => "будете" ++ inf ;
|
VIND APl (VFuture P2) => "будете" ++ add_sya vox inf ;
|
||||||
VIND APl (VFuture P3) => "будут" ++ inf ;
|
VIND APl (VFuture P3) => "будут" ++ add_sya vox inf ;
|
||||||
VIND gn VPast => past ! (PSF gn)
|
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
||||||
} ;
|
} } ;
|
||||||
asp = Imperfective
|
asp = Imperfective
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper perfectiveActivePattern: Str -> Str -> PresentVerb -> PastVerb -> AspectVoice =
|
oper mkVerbPerfective: Str -> Str -> PresentVerb -> PastVerb -> Verbum =
|
||||||
\inf, imper, presentFuture, past -> { s= table {
|
\inf, imper, presentFuture, past -> { s = table { VFORM vox vf =>
|
||||||
VINF => inf ;
|
case vf of {
|
||||||
VIMP Sg P1 => "давайте"++ presentFuture ! (PRF (ASg Masc) P1);
|
VINF => add_sya vox inf ;
|
||||||
VIMP Pl P1 => "давайте" ++ presentFuture ! (PRF APl P1);
|
VIMP Sg P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P1));
|
||||||
VIMP Sg P2 => imper ;
|
VIMP Pl P1 => "давайте" ++ add_sya vox (presentFuture ! (PRF APl P1));
|
||||||
VIMP Pl P2 => imper+"те" ;
|
VIMP Sg P2 => add_sya vox imper ;
|
||||||
VIMP Sg P3 => "пусть" ++ presentFuture ! (PRF (ASg Masc) P3) ;
|
VIMP Pl P2 => add_sya vox (imper+"те") ;
|
||||||
VIMP Pl P3 => "пусть" ++ presentFuture ! (PRF APl P3) ;
|
VIMP Sg P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF (ASg Masc) P3)) ;
|
||||||
VSUB gn => past ! (PSF gn) ++"бы";
|
VIMP Pl P3 => "пусть" ++ add_sya vox (presentFuture ! (PRF APl P3)) ;
|
||||||
VIND (ASg _) (VPresent _) => [] ;
|
|
||||||
|
VSUB gn => add_sya vox (past ! (PSF gn)) ++ "бы" ;
|
||||||
|
|
||||||
|
VIND (ASg _) (VPresent _) => nonExist ;
|
||||||
VIND APl (VPresent P1) => nonExist ;
|
VIND APl (VPresent P1) => nonExist ;
|
||||||
VIND APl (VPresent P2) => nonExist ;
|
VIND APl (VPresent P2) => nonExist ;
|
||||||
VIND APl (VPresent P3) => [] ;
|
VIND APl (VPresent P3) => nonExist ;
|
||||||
VIND gn (VFuture p) => presentFuture ! (PRF gn p) ;
|
VIND gn (VFuture p) => add_sya vox (presentFuture ! (PRF gn p)) ;
|
||||||
VIND gn VPast => past ! (PSF gn)
|
VIND gn VPast => add_sya vox (past ! (PSF gn))
|
||||||
} ;
|
} } ;
|
||||||
asp = Perfective
|
asp = Perfective
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -345,6 +345,7 @@ foreign = Foreign; -- +++ MG_UR: added +++
|
|||||||
dative = Dat ;
|
dative = Dat ;
|
||||||
genitive = Gen ;
|
genitive = Gen ;
|
||||||
instructive = Inst ;
|
instructive = Inst ;
|
||||||
|
prepositional = Prepos PrepOther ; -- FIXME: not correct for v and na
|
||||||
singular = Sg ;
|
singular = Sg ;
|
||||||
plural = Pl ;
|
plural = Pl ;
|
||||||
animate = Animate ;
|
animate = Animate ;
|
||||||
@@ -479,10 +480,7 @@ regN = \ray ->
|
|||||||
nDen = \s -> softSignEndDeclMascInAnimateGenEWithout s ** {lock_N = <>};
|
nDen = \s -> softSignEndDeclMascInAnimateGenEWithout s ** {lock_N = <>};
|
||||||
nDrug = \s -> nullEndAnimateDeclDrug s** {lock_N = <>};
|
nDrug = \s -> nullEndAnimateDeclDrug s** {lock_N = <>};
|
||||||
nSyn = \s -> nullEndAnimateDeclSyn s** {lock_N = <>};
|
nSyn = \s -> nullEndAnimateDeclSyn s** {lock_N = <>};
|
||||||
|
nLes = \s -> preposVNaEndUMasc s ** {lock_N = <>};
|
||||||
-- preposition types added by Magda Gerritsen and Ulrich Real
|
|
||||||
nLes = \s -> preposition_V s ** {lock_N = <>};
|
|
||||||
nMost = \s -> preposition_Na s ** {lock_N = <>};
|
|
||||||
|
|
||||||
|
|
||||||
-- An individual-valued function is a common noun together with the
|
-- An individual-valued function is a common noun together with the
|
||||||
@@ -556,13 +554,13 @@ regN = \ray ->
|
|||||||
mkV = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
|
mkV = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
|
||||||
sgMascPast, imperSgP2, inf -> case asp of {
|
sgMascPast, imperSgP2, inf -> case asp of {
|
||||||
Perfective =>
|
Perfective =>
|
||||||
mkVerb (perfectiveActivePattern inf imperSgP2
|
mkVerbPerfective inf imperSgP2
|
||||||
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast))
|
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
|
||||||
(pastConj sgMascPast) ** { lock_V=<> };
|
** { lock_V=<> };
|
||||||
Imperfective =>
|
Imperfective =>
|
||||||
mkVerb (imperfectiveActivePattern inf imperSgP2
|
mkVerbImperfective inf imperSgP2
|
||||||
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast))
|
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
|
||||||
(pastConj sgMascPast) ** { lock_V=<> }
|
** { lock_V=<> }
|
||||||
};
|
};
|
||||||
|
|
||||||
oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
|
oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
|
||||||
|
|||||||
Reference in New Issue
Block a user