From 9a3115815d7bc070b182830af542bd1a5c3a6a44 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 3 Oct 2017 14:00:51 +0200 Subject: [PATCH] Add new forms to zaio and dio --- src/basque/AditzTrinkoak.gf | 137 +++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 66 deletions(-) diff --git a/src/basque/AditzTrinkoak.gf b/src/basque/AditzTrinkoak.gf index ad878a0d..29e40238 100644 --- a/src/basque/AditzTrinkoak.gf +++ b/src/basque/AditzTrinkoak.gf @@ -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 of { + => "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 } } ;