verbal morphology is not syntactic. added negation

This commit is contained in:
Krasimir Angelov
2024-07-24 08:04:35 +02:00
parent 65a05d223b
commit 05c65ccbd8
12 changed files with 334 additions and 292 deletions
+65 -31
View File
@@ -1,8 +1,8 @@
concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur in {
lin
UseV v = lin VP (v ** {compl = []}) ;
SlashV2a v = v ** {compl = []} ;
UseV v = {s = mkVerbForms v; compl = []} ;
SlashV2a v = {s = mkVerbForms v; compl = []; c = v.c} ;
Slash2V3 v = variants {} ;
Slash3V3 v = variants {} ;
@@ -18,9 +18,9 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
} ;
-- TODO: test this and fix.
ComplVS vs s = vs ** {
ComplVS vs s = variants {} ; {- vs ** {
compl = s.subord
} ;
} ; -}
ComplVA _ _ = variants {} ;
ComplVV _ _ = variants {} ;
@@ -29,37 +29,62 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
UseComp comp = comp ** {compl = []} ;
CompCN _ = variants {} ;
CompNP ap = lin VP {
CompNP np = {
s = table {
VPres agr => ap.s ! Nom ++
case agr of {
{n=Sg; p=P3} => [] ;
_ => suffixStr ap.h (verbSuffixes ! agr)
} ;
VProg agr => ap.s ! Nom ;
VPast agr => ap.s ! Nom ++
suffixStr ap.h (alethicCopulaSuffixes ! agr);
VFuture agr => ap.s ! Nom ++
addSuffix "olacağ" (mkHar I_Har (SCon Hard)) (verbSuffixes ! agr) ;
VInfinitive => ap.s ! Nom ++ "olmak" ;
_ => "TODO"
}
VFin Pres p agr => np.s ! Nom ++
case <agr,p> of {
<{n=Sg; p=P3},Pos> => [] ;
<{n=Sg; p=P3},Neg> => BIND ++ suffixStr np.h negativeSuffix ;
<_, Pos> => BIND ++ suffixStr np.h (verbSuffixes ! agr) ;
<_, Neg> => BIND ++ suffixStr np.h negativeSuffix +
(let negHar = mkHar (case np.h.vow of {
I_Har | U_Har => I_Har ;
Ih_Har | Uh_Har => Ih_Har
}) SVow
in suffixStr negHar (verbSuffixes ! agr))
} ;
VFin Past p agr => np.s ! Nom ++ BIND ++
case p of {
Pos => [] ;
Neg => suffixStr np.h negativeSuffix
} +
suffixStr np.h (alethicCopulaSuffixes ! agr) ;
vform => np.s ! Nom ++
mkVerbForms olmak_V ! vform
} ;
compl = []
} ;
CompAP ap = lin VP {
CompAP ap = {
s = table {
VPres agr => case agr.p of {
P3 => ap.s ! Sg ! Nom ;
_ => ap.s ! agr.n ! Nom ++ suffixStr ap.h (verbSuffixes ! agr)
} ;
VProg agr => ap.s ! agr.n ! Nom ;
VPast agr => ap.s ! agr.n ! Nom ++
suffixStr ap.h (alethicCopulaSuffixes ! agr);
VFuture agr => ap.s ! agr.n ! Nom ++
addSuffix "olacağ" (mkHar I_Har (SCon Hard)) (verbSuffixes ! agr) ;
VInfinitive => ap.s ! Sg ! Nom ++ "olmak" ;
_ => "TODO"
}
VInf p => ap.s ! Sg ! Nom ++
mkVerbForms olmak_V ! (VInf p) ;
VImp p n => ap.s ! n ! Nom ++
mkVerbForms olmak_V ! (VImp p n) ;
VFin Pres p agr => ap.s ! agr.n ! Nom ++
case <agr,p> of {
<{n=Sg; p=P3},Pos> => [] ;
<{n=Sg; p=P3},Neg> => BIND ++ suffixStr ap.h negativeSuffix ;
<_, Pos> => BIND ++ suffixStr ap.h (verbSuffixes ! agr) ;
<_, Neg> => BIND ++ suffixStr ap.h negativeSuffix +
(let negHar = {vow = case ap.h.vow of {
I_Har | U_Har => I_Har ;
Ih_Har | Uh_Har => Ih_Har
} ;
con = SVow
}
in suffixStr negHar (verbSuffixes ! agr))
} ;
VFin Past p agr => ap.s ! agr.n ! Nom ++ BIND ++
case p of {
Pos => [] ;
Neg => suffixStr ap.h negativeSuffix
} +
suffixStr ap.h (alethicCopulaSuffixes ! agr) ;
VFin t p agr => ap.s ! agr.n ! Nom ++
mkVerbForms olmak_V ! (VFin t p agr)
} ;
compl = []
} ;
CompAdv _ = variants {} ;
@@ -75,4 +100,13 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur
} ;
PassV2 = variants {} ;
oper
olmak_V : V = lin V {
s = "olmak" ;
stems = \\_ => "ol" ;
aoristType = SgSylConIrreg ;
h = mkHar U_Har (SCon Soft)
} ;
}