Add new forms to zaio and dio

This commit is contained in:
Inari Listenmaa
2017-10-03 14:00:51 +02:00
parent 1426c07f97
commit 9a3115815d

View File

@@ -100,6 +100,12 @@ oper
Zu => "zintu" ; Zuek => "zintuzte" ;
Hau => nonExist ; Hauek => nonExist } ; -- formed separately
norUkanZaioNonpres : Agr => Str = table {
Ni => "nin" ; Gu => "gin" ;
Hi _ => "hin" ;
Zu => "zin" ; Zuek => "zin" ;
Hau => "zi" ; Hauek => "zi" } ;
norUkanCond : Agr => Str = table {
Zuek => "zintu" ; x => norUkanNonpres ! x } ;
@@ -158,7 +164,7 @@ oper
Hauek => norkCond_norHauek ! nork ;
_ => let gintu : Str = norCond ! nor ;
z : Str = norCondZ ! nor ;
z : Str = case nor of {(Gu|Zu|Zuek) => "z" ; _ => [] } ;
te : Str = norkCond ! nork ;
in gintu + z + "ke" + te } ;
@@ -192,8 +198,8 @@ oper
norCond : Agr => Str = norUkanCond ;
norCondZ : Agr => Str = table {
(Gu|Zu|Zuek) => "z" ; _ => [] } ;
--norCondZ : Agr => Str = table {
-- (Gu|Zu|Zuek) => "z" ; _ => [] } ;
norkPast_norHau = table { Ni => "nuen" ; Gu => "genuen" ;
Hi _ => "huen" ;
@@ -207,7 +213,7 @@ oper
norkCond_norHau = table { Hi _ => "hinduke" ; Zuek => "zenukete" ;
Hau => "luke" ; Hauek => "lukete" ;
x => (tk 2 (norkPast_norHau ! x)) + "ke" } ; -- zu+en -> nu+ke
x => (tk 2 (norkPast_norHau ! x)) + "ke" } ; -- nu+en -> nu+ke
norkCond_norHauek = table { Hi _ => "hindukete" ; Zuek => "zenituzkete" ;
Hau => "lituzke" ; Hauek => "lituzkete" ;
@@ -220,81 +226,61 @@ oper
Ukan [NOR] [NORI]
=============================================================================
-}
ukanZaio : TransV = \\nor,tns,nori => mkVForms (tenses ! tns)
where {
norPast : Agr => Str = norUkanZaioNonpres ;
noriPast : Agr => Str = noriUkanMid ;
norCond : Agr => Str = table {
Hau => "li" ; Hauek => "li" ;
x => norPast ! x } ;
noriCond : Agr => Str = noriPast ;
norPres : Agr => Str = table {
Ni => "na" ; Gu => "ga" ;
Hi _ => "ha" ;
Zu => "za" ; Zuek => "za" ;
Hau => [] ; Hauek => [] } ;
noriPres : Agr => Str = \\nori => case <nor,nori> of {
<Zuek,Ni> => "da" ; -- zai+t, zai+zki+t etc., but `za+tzai+zki_da_te', if nor is Zuek
<_,x> => noriUkanLast ! x } ;
---
te : Str = case nor of { Zuek => "te" ; _ => [] } ;
zki : Str = case getNum nori of { Sg => [] ; Pl => "zki" } ;
tenses : Tense => Str = table {
Past => let zin : Str = norPast ! nor ;
da : Str = noriPast ! nori ;
in zin + "tzai" + zki + da + te + "n" ;
Cond => let zin : Str = norCond ! nor ;
da : Str = noriCond ! nori ;
in zin + "tzai" + zki + da + "ke" + te ;
pres => let za : Str = norPres ! nor ;
tzai : Str = case getPers nor of { P3 => "zai" ; _ => "tzai" } ;
da : Str = noriPres ! nori ;
in za + tzai + zki + da + te } ;
ukanZaio : TransV = table { --TODO: add all forms
-- Nori,Nor
Hau => table {
Pres => table {
Ni => mkVForms "zait" ;
Hi Fem => mkVForms "zain" ;
Hi Masc => mkVForms "zaik" ;
Zu => mkVForms "zaizu" ;
Hau => mkVForms "zaio" ;
Gu => mkVForms "zaigu" ;
Zuek => mkVForms "zaizue" ;
Hauek => mkVForms "zaie"
} ;
_ => \\agr => noVForm
} ;
Hauek => table {
Pres => table {
Ni => mkVForms "zaizkit" ;
Hi Fem => mkVForms "zaizkin" ;
Hi Masc => mkVForms "zaizkik" ;
Zu => mkVForms "zaizkizu" ;
Hau => mkVForms "zaizkio" ;
Gu => mkVForms "zaizkigu" ;
Zuek => mkVForms "zaizkizue" ;
Hauek => mkVForms "zaizkie"
} ;
_ => \\agr => noVForm
} ;
_ => table {
tns => table {
agr => noVForm
}
}
} where {
-- For Nor-Nori inflection, map from Agr to prefix morpheme in Nor position
norTableZaio : Agr => Str =
table { Ni => "na" ;
Hi _ => "ha" ;
Gu => "ga" ;
Zu => "za" ;
Zuek => "za" ;
_ => [] --Hau and Hauek
}
} ;
{-
=============================================================================
Ukan [NOR] [NORI] [NORK]
=============================================================================
-}
ukanDio : DitransV = -- TODO test properly /IL 2017-07
\\nori,nor,tns,nork => mkVForms (
case tns of {
Cond => "TODO:conditional" ;
Past => let zen = norkPast ! nork ;
izki = norPast ! getNum nor ;
da = noriPast ! nori ;
te = norkPastTe ! nork ;
in zen + izki + da + te + "n" ;
_ => let dizki = norPres ! getNum nor ;
da = noriPres ! nori ; --form of nori depends on nork
zue = norkPres ! nork
in dizki + da + zue })
ukanDio : DitransV = \\nori,nor,tns,nork => mkVForms (tenses ! tns)
where {
-- Map from Number to prefix morpheme in Nor position.
-- Specific to Nor-Nori-Nork, different forms in other auxiliaries.
norPres : Number => Str = table { Sg => "di" ;
Pl => "dizki" } ;
norPast : Number => Str = \\tns => drop 1 (norPres ! tns) ;
norPast : Number => Str = \\n => drop 1 (norPres ! n) ;
------
-- Map from Agr to morpheme in Nori position.
@@ -311,8 +297,27 @@ oper
norkPast : Agr => Str = norkUkanFirst ;
norkPastTe : Agr => Str = table {
(Zuek|Hauek) => "te" ; _ => [] }
norkCond : Agr => Str = table { (Hau|Hauek) => "l" ;
x => norkPast ! x } ;
---
te = case nork of { (Zuek|Hauek) => "te" ; _ => [] } ;
tenses : Tense => Str = table {
Cond => let zen = norkCond ! nork ;
izki = norPast ! getNum nor ; -- same forms for past and cond
da = noriPast ! nori ; -- same forms for past and cond
in zen + izki + da + "ke" + te ;
Past => let zen = norkPast ! nork ;
izki = norPast ! getNum nor ;
da = noriPast ! nori ;
in zen + izki + da + te + "n" ;
pres => let dizki = norPres ! getNum nor ;
da = noriPres ! nori ; --form of nori depends on nork
zue = norkPres ! nork
in dizki + da + zue }
} ;