Prints to facilitate all form checks; Participles - first draft

This commit is contained in:
Roman Suzi
2020-09-06 09:31:44 +03:00
parent 6b874440db
commit e679629d70
7 changed files with 94 additions and 2 deletions

View File

@@ -86,7 +86,7 @@ oper
non_reflexive : Reflexivity
= NonReflexive ;
-- Voice (not yet used)
-- Voice
active : Voice
= Act ;
passive : Voice
@@ -131,7 +131,8 @@ oper
mkA : Str -> ZAIndex -> A ;
mkA : Str -> Str -> ZAIndex -> A ;
mkA : Str -> Str -> ZAIndex -> ShortFormPreference -> A ;
mkA : A -> Str -> A -> A -- Compound adjective like социально-экономический
mkA : A -> Str -> A -> A ; -- Compound adjective like социально-экономический
mkA : V -> Voice -> Tense -> A ; -- make participles
} ;
ShortenA : A -> A ;
@@ -301,6 +302,25 @@ oper
= \pf -> pronToAdj pf ;
mkA : A -> Str -> A -> A
= \a1,link,a2 -> lin A (mkCompoundA a1 link a2) ;
mkA : V -> Voice -> Tense -> A
= \v,voice,t -> case <voice,t> of {
<Pass,Past|Cond> => lin A (guessAdjectiveForms (v.pppss + "ный")) ;
<Pass,Pres> => lin A ( -- overgenerated
let s : Str = case v.prpl1 of {
f + #consonant + "ём" => (Predef.tk 2 v.prpl1) + "омый" ;
_ => v.prpl1 + "ый"
} in
makeAdjectiveFormsUseIndex s "" (Z.ZA 1 Z.No Z.A_ Z.NoC) PreferFull) ;
<Act,Pres> => lin A (
makeAdjectiveFormsUseIndex (Z.addRefl ((Predef.tk 1 v.prpl3) + "щий")) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ;
<Act,Past|Cond> => lin A (
let s : Str = case v.inf of {
_ + ("сти"|"зти") => (Predef.tk 1 v.prsg1) + "ший" ; -- TODO: check if not all of these cases are ok
_ => (Predef.tk 1 v.psgm) + "вший"
} in
makeAdjectiveFormsUseIndex (Z.addRefl s) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ;
_ => Predef.error "Error: participle for this voice and tense does not exist"
} -- TODO: suppress comp and short for all but Pass Pres; take sya into account
} ;
ShortenA : A -> A