From 27925cd4cee20dae49481d7f14eed8b5564ec7a0 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 15 Nov 2021 10:52:02 +0800 Subject: [PATCH 001/141] add idetQuant and pronouns to Malay RGL --- src/abstract/Lexicon.gf | 1 + src/malay/LexiconMay.gf | 5 +++-- src/malay/QuestionMay.gf | 14 +++++++++++++- src/malay/StructuralMay.gf | 12 ++++++------ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/abstract/Lexicon.gf b/src/abstract/Lexicon.gf index 07e401137..9dcf6f67b 100644 --- a/src/abstract/Lexicon.gf +++ b/src/abstract/Lexicon.gf @@ -265,6 +265,7 @@ fun short_A : A ; silver_N : N ; sing_V : V ; + sing_V2 : V2 ; sister_N : N ; sit_V : V ; skin_N : N ; diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index e15b044f6..f9f28d148 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -320,7 +320,8 @@ lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO -- lin shop_N = mkN "" ; -- lin short_A = mkA "" ; -- lin silver_N = mkN "" ; --- lin sing_V = mkV "" ; +lin sing_V = mkV "nyanyi" ; +lin sing_V2 = mkV2 "nyanyi" ; -- lin sister_N = mkN "" ; -- lin sit_V = mkV "" ; -- lin skin_N = mkN "" ; @@ -333,7 +334,7 @@ lin small_A = mkA "kecil" ; -- lin snake_N = mkN "" ; -- lin snow_N = mkN "" ; -- lin sock_N = mkN "" ; --- lin song_N = mkN "" ; +lin song_N = mkN "lagu" ; -- lin speak_V2 = mkV2 "" ; -- lin spit_V = mkV "" ; -- lin split_V2 = mkV2 "" ; diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index b7194dc63..3a1f0b2e0 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -1,9 +1,21 @@ concrete QuestionMay of Question = CatMay ** open - Prelude, ResMay, ParadigmsMay, (VS=VerbMay), (NS=NounMay), (SS=StructuralMay) in { + Prelude, ResMay, ParadigmsMay, (VS=VerbMay), (NM=NounMay), (SS=StructuralMay) in { -- A question can be formed from a clause ('yes-no question') or -- with an interrogative. +-- Interrogative pronouns can be formed with interrogative +-- determiners, with or without a noun. +lin + -- : IDet -> CN -> IP ; -- which five songs + IdetCN idet cn = NM.DetCN idet cn ; + + -- : IDet -> IP ; -- which five + IdetIP idet = NM.DetNP idet ; + + -- : IQuant -> Num -> IDet ; -- which (five) + IdetQuant = NM.DetQuant ; + {- lin -- : Cl -> QCl ; diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 6dcb4417a..275137d77 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -71,12 +71,12 @@ lin someSg_Det = lin no_Quant = -} lin that_Quant = mkQuant "itu" ; lin this_Quant = mkQuant "ini" ; -{-lin which_IQuant = +lin which_IQuant = mkQuant "apa" ; ----- -- NP - +{- lin everybody_NP = defNP "" N.NumPl ; lin everything_NP = defNP "" N.NumSg ; lin nobody_NP = mkVerb; "" @@ -118,14 +118,14 @@ lin with_Prep = mkPrep "dengan" ; -- Pron -- Pronouns are closed class, no constructor in ParadigmsMay. - -- it_Pron = +lin it_Pron = mkPron "dia" P3 ; lin i_Pron = mkPron "saya" P1 ; --- lin youPol_Pron = mkPron "" P3 ; --- lin youSg_Pron = +lin youPol_Pron = mkPron "kamu" P2 ; +lin youSg_Pron = mkPron "awak" P2 ; lin he_Pron = mkPron "dia" P3 ; lin she_Pron = mkPron "dia" P3 ; lin we_Pron = mkPron "kami" P1 ; --- lin youPl_Pron = +lin youPl_Pron = mkPron "kamu" P2; lin they_Pron = mkPron "mereka" P3 ; --lin whatPl_IP = ; From 7daf14378db007e2a4636e2f9acc6db7774b269e Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 15 Nov 2021 12:19:31 +0800 Subject: [PATCH 002/141] fix word order of question --- src/english/NounEng.gf | 2 +- src/malay/CatMay.gf | 4 ++-- src/malay/QuestionMay.gf | 20 ++++++++++++++------ src/malay/ResMay.gf | 24 ++++++++++++++++++++++-- src/malay/StructuralMay.gf | 11 +++++++---- 5 files changed, 46 insertions(+), 15 deletions(-) diff --git a/src/english/NounEng.gf b/src/english/NounEng.gf index 7b2542507..848b21962 100644 --- a/src/english/NounEng.gf +++ b/src/english/NounEng.gf @@ -56,7 +56,7 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in { DetNP det = { -- s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ; - s = det.sp ! Neutr ! False ; + s = \\c => det.sp ! Neutr ! False ! c ++ "whatevr" ; a = agrP3 det.n } ; diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 35478cb2e..4496f52bb 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -25,8 +25,8 @@ concrete CatMay of Cat = CommonX ** open ResMay, Prelude in { QCl = ResMay.Clause ; IComp = SS ; -- interrogative complement of copula e.g. "where" IDet = ResMay.Determiner ; -- interrogative determiner e.g. "how many" - IQuant = ResMay.Quant ; -- interrogative quantifier e.g. "which" - IP = ResMay.NounPhrase ; -- interrogative pronoun e.g. "who" + IQuant = ResMay.IQuant ; -- interrogative quantifier e.g. "which" + IP = ResMay.IPhrase ; -- interrogative pronoun e.g. "who" --2 Subord clauses and pronouns diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 3a1f0b2e0..48757061c 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -8,13 +8,24 @@ concrete QuestionMay of Question = CatMay ** open -- determiners, with or without a noun. lin -- : IDet -> CN -> IP ; -- which five songs - IdetCN idet cn = NM.DetCN idet cn ; + IdetCN idet cn = NM.DetCN idet cn ** {sp = idet.sp} ; -- : IDet -> IP ; -- which five - IdetIP idet = NM.DetNP idet ; + IdetIP idet = NM.DetNP idet ** {sp = idet.sp}; -- : IQuant -> Num -> IDet ; -- which (five) - IdetQuant = NM.DetQuant ; + IdetQuant iquant num = iquant ** { + pr = num.s ++ case iquant.isPre of {True => iquant.s ; False => [] } ; + -- if isPre is True, then: "berapa kucing" + s = case iquant.isPre of { False => iquant.s ; True => [] }; + -- if isPre is False, use s: "kucing berapa" + n = num.n + } ; + + -- : IP -> ClSlash -> QCl ; -- whom does John love + QuestSlash ip cls = cls ** { + pred = \\vf,pol => cls.pred ! vf ! pol ++ ip.s ! Bare + } ; {- lin @@ -24,9 +35,6 @@ lin -- : IP -> VP -> QCl ; QuestVP ip vp = - -- : IP -> ClSlash -> QCl ; -- whom does John love - QuestSlash ip cls = - -- : IAdv -> Cl -> QCl ; -- why does John walk QuestIAdv iadv cls = diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 447726d4f..99629be95 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -50,6 +50,10 @@ oper empty : Str ; -- need to avoid GF being silly. See https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#metavariables-or-those-question-marks-that-appear-when-parsing } ; + IPhrase : Type = NounPhrase ** { + sp : NForm => Str ; -- standalone berapa banyak kucing + } ; + emptyNP : NounPhrase = { s = \\_ => [] ; a = NotPron ; @@ -60,11 +64,15 @@ oper -- Det, Quant, Card, Ord Quant : Type = { - s : Str ; - sp : NForm => Str ; + s : Str ; -- quantifier in a context, eg. 'berapa (kucing)' + sp : NForm => Str ; -- a standalone, eg. '(kucing) berapa banyak' poss : Possession ; } ; + IQuant : Type = Quant ** { + isPre : Bool ; + } ; + Determiner : Type = Quant ** { pr : Str ; -- prefix for numbers n : NumType ; -- number as in 5 (noun in singular), Sg or Pl @@ -102,6 +110,18 @@ oper sp = \\_ => str } ; + mkDet : Str -> Number -> Determiner = \str, num -> mkQuant str ** { + pr = "" ; + n = NoNum num ; + } ; + + mkIdet : Str -> Number -> Bool -> Determiner = \str, num, isPre -> mkDet str num ** { + pr = case isPre of {True => str ; False => [] } ; + -- if isPre is True, then: "berapa kucing" + s = case isPre of { False => str ; True => [] }; + + } ; + -------------------------------------------------------------------------------- -- Prepositions diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 275137d77..230135316 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -52,9 +52,9 @@ lin and_Conj = {s2 = "dan" ; s1 = [] ; n = Pl} ; ----------------- -- *Det and Quant -{- -lin how8many_IDet = ; +lin how8many_IDet = mkIdet "berapa banyak" Pl True; +{-} lin all_Predet = {s = ""} ; lin not_Predet = { s = "" } ; lin only_Predet = { s = "" } ; @@ -71,7 +71,7 @@ lin someSg_Det = lin no_Quant = -} lin that_Quant = mkQuant "itu" ; lin this_Quant = mkQuant "ini" ; -lin which_IQuant = mkQuant "apa" ; +lin which_IQuant = mkQuant "apa" ** {isPre = False} ; ----- @@ -154,7 +154,10 @@ lin language_title_Utt = ss "bahasa Melayu" ; ------- -- Verb ---lin have_V2 = mkV2 have_V ; +lin have_V2 = let have' : V2 = mkV2 "ada" in have' ** { + s = \\_ => "ada" ; + passive = "diadakan" ; +} ; -- lin can8know_VV = can_VV ; -- can (capacity) -- lin can_VV = mkVV "" ; -- can (possibility) -- lin must_VV = mkVV "" ; From 4394c8f9792df9009d57a6a2fe0e16cfd29b48f5 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 15 Nov 2021 13:49:39 +0800 Subject: [PATCH 003/141] 'how many' has correct standalone form and plural noun --- src/malay/PhraseMay.gf | 2 +- src/malay/QuestionMay.gf | 4 +++- src/malay/ResMay.gf | 3 ++- src/malay/StructuralMay.gf | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 0b51c308e..cb5943937 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -7,12 +7,12 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttQS qs = qs ; UttIAdv iadv = iadv ; UttNP np = {s = np.s ! Bare} ; + UttIP ip = {s = ip.sp ! NF Sg Bare} ; {- UttImpSg pol imp = UttImpPl pol imp = UttImpPol = UttImpSg ; - UttIP ip = {s = ip.s ! } ; UttVP vp = {s = } ; UttAdv adv = {s = } ; UttCN n = {s = } ; diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 48757061c..8c1d6f6e3 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -8,7 +8,9 @@ concrete QuestionMay of Question = CatMay ** open -- determiners, with or without a noun. lin -- : IDet -> CN -> IP ; -- which five songs - IdetCN idet cn = NM.DetCN idet cn ** {sp = idet.sp} ; + IdetCN idet cn = NM.DetCN idet cn ** { + sp = \\nf => idet.sp ! nf ++ cn.s ! nf + } ; -- : IDet -> IP ; -- which five IdetIP idet = NM.DetNP idet ** {sp = idet.sp}; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 99629be95..9923b3a8b 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -115,11 +115,12 @@ oper n = NoNum num ; } ; - mkIdet : Str -> Number -> Bool -> Determiner = \str, num, isPre -> mkDet str num ** { + mkIdet : Str -> Str -> Number -> Bool -> Determiner = \str, standalone, num, isPre -> mkDet str num ** { pr = case isPre of {True => str ; False => [] } ; -- if isPre is True, then: "berapa kucing" s = case isPre of { False => str ; True => [] }; + sp = \\_ => standalone ; } ; -------------------------------------------------------------------------------- diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 230135316..5b05f2cac 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -53,7 +53,7 @@ lin and_Conj = {s2 = "dan" ; s1 = [] ; n = Pl} ; -- *Det and Quant -lin how8many_IDet = mkIdet "berapa banyak" Pl True; +lin how8many_IDet = mkIdet "berapa" "berapa banyak" Sg True; {-} lin all_Predet = {s = ""} ; lin not_Predet = { s = "" } ; From b086b774bfb2d34dbdf2a8fe5ccbb1b742579165 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 15 Nov 2021 14:01:16 +0800 Subject: [PATCH 004/141] correct verb form for like --- src/malay/LexiconMay.gf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index f9f28d148..f2cf96d1d 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -209,7 +209,10 @@ lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; -- lin leave_V2 = mkV2 "" ; -- lin leg_N = mkN "" ; -- lin lie_V = mkV "" ; -lin like_V2 = mkV2 "suka" ; +lin like_V2 = let like' : V2 = mkV2 "suka" in like' ** { + s = \\_ => "suka" ; + passive = "disukai" ; +} ; -- lin listen_V2 = mkV2 "" ; -- lin live_V = mkV ""; -- lin liver_N = mkN "" ; From 3770caad33f1a6e384f132fe40ed91f273815fa0 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Nov 2021 11:58:42 +0800 Subject: [PATCH 005/141] add do you teach the cat in Malay --- src/malay/QuestionMay.gf | 26 ++++++++++++++++++++++++-- src/malay/SentenceMay.gf | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 8c1d6f6e3..79f32cfba 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -29,10 +29,32 @@ lin pred = \\vf,pol => cls.pred ! vf ! pol ++ ip.s ! Bare } ; + -- : Subj -> Pred -> QCl ; + -- QuestCl cl = cl ** { + -- pred = \\vf,pol => cl.pred ! vf ! pol + -- }; + QuestCl cl = cl ** { + subj = "adakah" ++ cl.subj; + } ; + + +{- ---- + s = \\t,a,p => + let + cl = oldClause slash ; + cls : Direct -> Str = + \d -> cl.s ! d ! t ! a ! p ! Indic ; +---- \d -> cl.s ! ip.a ! d ! t ! a ! p ! Indic ; + who = slash.c2.s ++ ip.s ! slash.c2.c + in table { + QDir => who ++ cls DInv ; + QIndir => who ++ cls DDir + } +-} + {- lin - -- : Cl -> QCl ; - QuestCl = + -- : IP -> VP -> QCl ; QuestVP ip vp = diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index 28a39f118..1222e02e4 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -56,7 +56,7 @@ lin -- : Temp -> Pol -> QCl -> QS ; UseQCl t p cl = { - s = cl.subj ++ t.s ++ p.s ++ cl.pred ! Active ! p.p ; + s = t.s ++ p.s ++ cl.subj ++ cl.pred ! Active ! p.p ; } ; -- : Temp -> Pol -> RCl -> RS ; From 82a74d84be1b0457e3c6a1d9d97e9a5c6d314715 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Nov 2021 14:45:25 +0800 Subject: [PATCH 006/141] add test for questions in malay --- src/malay/unittest/questions.gftest | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/malay/unittest/questions.gftest diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest new file mode 100644 index 000000000..9320f24ad --- /dev/null +++ b/src/malay/unittest/questions.gftest @@ -0,0 +1,23 @@ +Lang: IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N) +LangEng: which five songs +LangMay: lima lagu apa + +Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumPl) (UseN song_N)) (SlashVP (UsePron youPl_Pron) (SlashV2a like_V2))))) NoVoc +LangEng: which songs do you like +LangMay: kamu suka lagu-lagu apa + +Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN how8many_IDet (UseN cat_N)) (SlashVP (UsePron youPl_Pron) (SlashV2a have_V2))))) NoVoc +LangEng: how many cats do you have +LangMay: kamu ada berapa kucing + +Lang: PhrUtt NoPConj (UttIP (IdetCN how8many_IDet (UseN cat_N))) NoVoc +LangEng: how many cats +LangMay: berapa banyak kucing + +Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) +LangEng: do you teach the cat +LangMay: adakah awak mengajar kucing + +Lang: UseQCl (TTAnt TPres ASimul) PNeg (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) +LangEng: don't you teach the cat +LangMay: adakah awak mengajar kucing From 7c1de7ba23aa8570811e023dce9c3da2c4e757a7 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Thu, 25 Nov 2021 18:00:46 +0800 Subject: [PATCH 007/141] do you not teach the cat in malay --- src/malay/unittest/questions.gftest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 9320f24ad..1a30cb38f 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -20,4 +20,4 @@ LangMay: adakah awak mengajar kucing Lang: UseQCl (TTAnt TPres ASimul) PNeg (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) LangEng: don't you teach the cat -LangMay: adakah awak mengajar kucing +LangMay: adakah awak tidak mengajar kucing From 984c8deb34f335d7005e524a775058ababd5f89d Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 21 Dec 2021 18:11:20 +0800 Subject: [PATCH 008/141] QuestIAdv --- src/malay/QuestionMay.gf | 24 ++++++++++++--- src/malay/ResMay.gf | 47 +++++++++++++++++++++++++++++ src/malay/StructuralMay.gf | 5 +-- src/malay/unittest/questions.gftest | 12 ++++++++ 4 files changed, 82 insertions(+), 6 deletions(-) diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 79f32cfba..8ec8a316e 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -37,6 +37,26 @@ lin subj = "adakah" ++ cl.subj; } ; + -- missing record fields: pred type of vp + + -- : IP -> VP -> QCl ; + -- expected: ParamMay.VForm => ParamX.Polarity => Str + -- inferred: {s : ParamMay.VForm => ParamX.Polarity => Str} + + QuestVP ip cl = cl ** { + pred = \\vf,pol => cl.s ! vf ! pol; + subj = ip.s ! Bare ; + }; + + -- : IAdv -> Cl -> QCl ; -- why does John walk + QuestIAdv iadv cls = { + pred = \\vf,pol => cls.pred ! vf ! pol ++ iadv.s; + subj = cls.subj ; + } ; + + -- { + -- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol; + -- } ; {- ---- s = \\t,a,p => @@ -56,11 +76,7 @@ lin lin - -- : IP -> VP -> QCl ; - QuestVP ip vp = - -- : IAdv -> Cl -> QCl ; -- why does John walk - QuestIAdv iadv cls = -- : IComp -> NP -> QCl ; -- where is John? diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 9923b3a8b..0aaff5fb6 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -105,6 +105,15 @@ oper poss = Bare ; } ; + -- \\vf,pol, => + -- let + -- verb : Str = joinVP vp tense ant pol agr ; + -- obj : Str = vp.s2 ! agr ; + -- in case ord of { + -- ODir => subj ++ verb ++ obj ; -- Ġanni jiekol ħut + -- OQuest => verb ++ obj ++ subj -- jiekol ħut Ġanni ? + -- } + mkQuant : Str -> Quant = \str -> baseQuant ** { s = str ; sp = \\_ => str @@ -123,6 +132,12 @@ oper sp = \\_ => standalone ; } ; + + + -- s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; + -- np = vp.topic ++ np ; + -- vp = insertObj (ss compl) vp ; + -------------------------------------------------------------------------------- -- Prepositions @@ -265,6 +280,38 @@ oper predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps -> predVP np ** {c2 = vps.c2} ; + -- mkClause : Str -> NounPhrase -> VPSlash -> Clause = \str,np,vp -> { + -- subj = str ++ np.s ! Bare; + -- pred = vp.s + -- } ; + + + -- mkClause : Str -> IPhrase -> VerbPhrase -> Clause = \str,ip,vp -> { + -- subj = ip.s ! Bare ; + -- pred = vp.s ; + -- } ; + + + -- baseQuant : Quant = { + -- s = [] ; + -- sp = \\_ => [] ; + -- poss = Bare ; + -- } ; + + -- -- \\vf,pol, => + -- -- let + -- -- verb : Str = joinVP vp tense ant pol agr ; + -- -- obj : Str = vp.s2 ! agr ; + -- -- in case ord of { + -- -- ODir => subj ++ verb ++ obj ; -- Ġanni jiekol ħut + -- -- OQuest => verb ++ obj ++ subj -- jiekol ħut Ġanni ? + -- -- } + + -- mkQuant : Str -> Quant = \str -> baseQuant ** { + -- s = str ; + -- sp = \\_ => str + -- } ; + -------------------------------------------------------------------------------- -- linrefs diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 5b05f2cac..e0dcc8dc2 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -19,7 +19,9 @@ lin how_IAdv = ss "" : lin how8much_IAdv = ss "" ; lin when_IAdv = ss "" ; -lin where_IAdv = ss "" : +-} +lin where_IAdv = ss "mana" ; +{- lin why_IAdv = ss "" : lin always_AdV = ss "" ; @@ -73,7 +75,6 @@ lin that_Quant = mkQuant "itu" ; lin this_Quant = mkQuant "ini" ; lin which_IQuant = mkQuant "apa" ** {isPre = False} ; - ----- -- NP {- diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 1a30cb38f..8272195f4 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -21,3 +21,15 @@ LangMay: adakah awak mengajar kucing Lang: UseQCl (TTAnt TPres ASimul) PNeg (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) LangEng: don't you teach the cat LangMay: adakah awak tidak mengajar kucing + +# Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) +# LangEng: who wants to go +# LangMay: Siapa mahu pergi + +Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN cat_N)) (ComplSlash (SlashV2a teach_V2) (UsePron he_Pron))) +LangEng: which cat teaches him +LangMay: kucing apa mengajar dia + +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv where_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) +LangEng: where did you go +LangMay: awak pergi mana \ No newline at end of file From c61fe0c314d7bec5712a0f5d9c28ac35766bc68a Mon Sep 17 00:00:00 2001 From: Meowyam Date: Thu, 30 Dec 2021 23:19:38 +0800 Subject: [PATCH 009/141] fixed QuestIAdv --- src/malay/QuestionMay.gf | 2 +- src/malay/ResMay.gf | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 8ec8a316e..880dec222 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -50,7 +50,7 @@ lin -- : IAdv -> Cl -> QCl ; -- why does John walk QuestIAdv iadv cls = { - pred = \\vf,pol => cls.pred ! vf ! pol ++ iadv.s; + pred = \\vf,pol => cls.pred ! Root ! pol ++ iadv.s; subj = cls.subj ; } ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 0aaff5fb6..ed4b6c06d 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -133,7 +133,6 @@ oper } ; - -- s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; -- np = vp.topic ++ np ; -- vp = insertObj (ss compl) vp ; From 6459c07548258db6f41336d474769a4cb00153c8 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 3 Jan 2022 14:00:43 +0800 Subject: [PATCH 010/141] why did you go --- src/malay/CatMay.gf | 3 ++- src/malay/GrammarMay.gf | 4 ++-- src/malay/QuestionMay.gf | 10 ++++++++-- src/malay/ResMay.gf | 8 +++++++- src/malay/StructuralMay.gf | 5 +++-- src/malay/unittest/questions.gftest | 6 +++++- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 4496f52bb..3970520c2 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -1,4 +1,4 @@ -concrete CatMay of Cat = CommonX ** open ResMay, Prelude in { +concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { flags optimize=all_subs ; @@ -27,6 +27,7 @@ concrete CatMay of Cat = CommonX ** open ResMay, Prelude in { IDet = ResMay.Determiner ; -- interrogative determiner e.g. "how many" IQuant = ResMay.IQuant ; -- interrogative quantifier e.g. "which" IP = ResMay.IPhrase ; -- interrogative pronoun e.g. "who" + IAdv = ResMay.IAdv ; --2 Subord clauses and pronouns diff --git a/src/malay/GrammarMay.gf b/src/malay/GrammarMay.gf index 024f69534..9c643f4b2 100644 --- a/src/malay/GrammarMay.gf +++ b/src/malay/GrammarMay.gf @@ -9,10 +9,10 @@ concrete GrammarMay of Grammar = RelativeMay, ConjunctionMay, PhraseMay, - TextX, + TextX - [IAdv], StructuralMay, IdiomMay, - TenseX - [AAnter, TFut, TCond] + TenseX - [AAnter, TFut, TCond, IAdv] ** open ParamX in { flags startcat = Phr ; diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 880dec222..f6f545fb3 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -50,10 +50,16 @@ lin -- : IAdv -> Cl -> QCl ; -- why does John walk QuestIAdv iadv cls = { - pred = \\vf,pol => cls.pred ! Root ! pol ++ iadv.s; - subj = cls.subj ; + subj = case iadv.isPre of { + True => iadv.s ++ cls.subj ; False => cls.subj + } ; + pred = \\vf,pol => case iadv.isPre of { + True => cls.pred ! Root ! pol ; + False => cls.pred ! Root ! pol ++ iadv.s + } ; } ; +-- \\vf,pol,posadv => -- { -- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol; -- } ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index ed4b6c06d..30fed90f7 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -222,7 +222,13 @@ oper ------------------ -- Adv - Adverb : Type = SS ; + Adverb : Type = { + s : Str; + } ; + + IAdv : Type = Adverb ** { + isPre : Bool ; + } ; ------------------ -- VP diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index e0dcc8dc2..057909bf4 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -20,9 +20,10 @@ lin how_IAdv = ss "" : lin how8much_IAdv = ss "" ; lin when_IAdv = ss "" ; -} -lin where_IAdv = ss "mana" ; +lin where_IAdv = { s = "mana"; isPre = False } ; +lin why_IAdv = {s = "mengapa"; isPre = True } ; {- -lin why_IAdv = ss "" : + lin always_AdV = ss "" ; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 8272195f4..f80996b40 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -32,4 +32,8 @@ LangMay: kucing apa mengajar dia Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv where_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: where did you go -LangMay: awak pergi mana \ No newline at end of file +LangMay: awak pergi mana + +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv why_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) +LangEng: why did you go +LangMay: mengapa awak pergi \ No newline at end of file From 0abf88324eaa43a0d440b185f7bc14e26b6bf421 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 3 Jan 2022 14:07:09 +0800 Subject: [PATCH 011/141] changed wanita to perempuan for woman --- src/malay/LexiconMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index f2cf96d1d..7f322ec4f 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -411,7 +411,7 @@ lin walk_V = mkV "jalan" ; -- lin wine_N = mkN "" ; -- lin wing_N = mkN "" ; -- lin wipe_V2 = mkV2 "" ; -lin woman_N = mkN "wanita" ; +lin woman_N = mkN "perempuan" ; -- lin wonder_VQ = mkVQ "" ; -- lin wood_N = mkN "" ; -- lin worm_N = mkN "" ; From 4a892e646cb7ca53c4b4f3f9a8f3cb36eccb51f3 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 3 Jan 2022 14:08:32 +0800 Subject: [PATCH 012/141] add see_V2 to malay lexicon --- src/malay/LexiconMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 7f322ec4f..b17c7753c 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -309,7 +309,7 @@ lin school_N = mkN "sekolah" ; lin science_N = mkN "sains" ; -- lin scratch_V2 = mkV2 "" ; -- lin sea_N = mkN "" ; --- lin see_V2 = mkV2 "" ; +lin see_V2 = mkV2 "lihat" ; -- lin seed_N = mkN "" ; -- lin seek_V2 = mkV2 "" ; lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO From 7704f6a18cea80a8511ad9b3a7e57db6348c6e4b Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 3 Jan 2022 21:39:01 +0800 Subject: [PATCH 013/141] changed which from apa to yang mana, which is more correct --- src/malay/StructuralMay.gf | 5 ++--- src/malay/unittest/questions.gftest | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 057909bf4..e9db991f4 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -74,7 +74,7 @@ lin someSg_Det = lin no_Quant = -} lin that_Quant = mkQuant "itu" ; lin this_Quant = mkQuant "ini" ; -lin which_IQuant = mkQuant "apa" ** {isPre = False} ; +lin which_IQuant = mkQuant "yang mana" ** {isPre = False} ; ----- -- NP @@ -115,7 +115,6 @@ lin to_Prep = mkPrep "ke" ; lin with_Prep = mkPrep "dengan" ; -- lin without_Prep = mkPrep "" ; - ------- -- Pron @@ -141,7 +140,7 @@ lin they_Pron = mkPron "mereka" P3 ; -- lin although_Subj = -- lin because_Subj = lin if_Subj = ss "sekiranya" ; --- lin that_Subj = +lin that_Subj = ss "yang" ; lin when_Subj = ss "kalau" ; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index f80996b40..b5e654dfc 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -1,10 +1,10 @@ Lang: IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N) LangEng: which five songs -LangMay: lima lagu apa +LangMay: lima lagu yang mana Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumPl) (UseN song_N)) (SlashVP (UsePron youPl_Pron) (SlashV2a like_V2))))) NoVoc LangEng: which songs do you like -LangMay: kamu suka lagu-lagu apa +LangMay: kamu suka lagu-lagu yang mana Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN how8many_IDet (UseN cat_N)) (SlashVP (UsePron youPl_Pron) (SlashV2a have_V2))))) NoVoc LangEng: how many cats do you have @@ -28,7 +28,7 @@ LangMay: adakah awak tidak mengajar kucing Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN cat_N)) (ComplSlash (SlashV2a teach_V2) (UsePron he_Pron))) LangEng: which cat teaches him -LangMay: kucing apa mengajar dia +LangMay: kucing yang mana mengajar dia Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv where_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: where did you go @@ -36,4 +36,13 @@ LangMay: awak pergi mana Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv why_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: why did you go -LangMay: mengapa awak pergi \ No newline at end of file +LangMay: mengapa awak pergi + +Lang: UseQCl (TTAnt TPast ASimul) PNeg (QuestIAdv why_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) +LangEng: why didn't you go +LangMay: mengapa awak tidak pergi + +-- With ComplSlash: Wh-word is the object +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN woman_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a see_V2))) +LangEng: which woman did you see +LangMay : awak melihat perempuan yang mana \ No newline at end of file From 83a16737dc6267294e8b584316838e340b40fcc5 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 4 Jan 2022 13:16:26 +0800 Subject: [PATCH 014/141] add whoSg_IP --- src/malay/ResMay.gf | 7 +++++++ src/malay/StructuralMay.gf | 4 +++- src/malay/unittest/questions.gftest | 15 ++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 30fed90f7..8c82ac27f 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -60,6 +60,13 @@ oper empty = [] } ; + mkIP : Str -> IPhrase = \str -> { + s = \\_ => str ; + a = NotPron ; + empty = [] ; + sp = \\_ => str ; + } ; + -------------------------------------------------------------------------------- -- Det, Quant, Card, Ord diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index e9db991f4..3d5ad4e9a 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -132,8 +132,10 @@ lin they_Pron = mkPron "mereka" P3 ; --lin whatPl_IP = ; --lin whatSg_IP = : --lin whoPl_IP = ; ---lin whoSg_IP = ; +lin whoSg_IP = mkIP "siapa"; +-- expected: {s : ParamMay.Possession => Str; a : ParamMay.NPAgr; +-- empty : Str; sp : ParamMay.NForm => Str} ------- -- Subj diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index b5e654dfc..6b37f4043 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -22,10 +22,6 @@ Lang: UseQCl (TTAnt TPres ASimul) PNeg (QuestCl (PredVP (UsePron youSg_Pron) (Co LangEng: don't you teach the cat LangMay: adakah awak tidak mengajar kucing -# Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) -# LangEng: who wants to go -# LangMay: Siapa mahu pergi - Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN cat_N)) (ComplSlash (SlashV2a teach_V2) (UsePron he_Pron))) LangEng: which cat teaches him LangMay: kucing yang mana mengajar dia @@ -45,4 +41,13 @@ LangMay: mengapa awak tidak pergi -- With ComplSlash: Wh-word is the object Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN woman_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a see_V2))) LangEng: which woman did you see -LangMay : awak melihat perempuan yang mana \ No newline at end of file +LangMay : awak melihat perempuan yang mana + +# -- should be to whom did mother give the meat +# Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) +# LangEng: whom did mother give the meat +# LangMay: + +Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) +LangEng: who wants to go +LangMay: siapa mahu pergi From 664164e8c1d430c1ff73d3eeb4feaff4c6ea3241 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 5 Jan 2022 13:26:10 +0800 Subject: [PATCH 015/141] add QuestIComp --- src/malay/CatMay.gf | 2 +- src/malay/QuestionMay.gf | 13 ++++++++++--- src/malay/unittest/questions.gftest | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 3970520c2..7f3200d5a 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -23,7 +23,7 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { -- Constructed in QuestionMay. QCl = ResMay.Clause ; - IComp = SS ; -- interrogative complement of copula e.g. "where" + IComp = {s: Str} ; -- interrogative complement of copula e.g. "where" IDet = ResMay.Determiner ; -- interrogative determiner e.g. "how many" IQuant = ResMay.IQuant ; -- interrogative quantifier e.g. "which" IP = ResMay.IPhrase ; -- interrogative pronoun e.g. "who" diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index f6f545fb3..e0d3a1495 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -59,6 +59,16 @@ lin } ; } ; + + -- : IP -> IComp ; + CompIP ip = {s = ip.s ! Bare } ; -- who (is it) + + -- : IComp -> NP -> QCl ; -- where is John? + QuestIComp icomp np = { + pred = \\vf,pol => np.s ! Bare ; + subj = icomp.s ; + } ; + -- \\vf,pol,posadv => -- { -- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol; @@ -122,9 +132,6 @@ lin -- : IAdv -> IComp ; CompIAdv iadv = iadv ; -- where (is it) - -- : IP -> IComp ; - CompIP ip = {s = ip.s ! Abs} ; -- who (is it) - -- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$. diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 6b37f4043..afadc31ad 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -38,7 +38,6 @@ Lang: UseQCl (TTAnt TPast ASimul) PNeg (QuestIAdv why_IAdv (PredVP (UsePron youS LangEng: why didn't you go LangMay: mengapa awak tidak pergi --- With ComplSlash: Wh-word is the object Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN woman_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a see_V2))) LangEng: which woman did you see LangMay : awak melihat perempuan yang mana @@ -51,3 +50,7 @@ LangMay : awak melihat perempuan yang mana Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) LangEng: who wants to go LangMay: siapa mahu pergi + +Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestIComp (CompIP whoSg_IP) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) +LangEng: who is the cat +LangMay: siapa kucing \ No newline at end of file From 9d56ac6feecb72dab4ae118fb6854d4685762b11 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 12 Jan 2022 15:20:26 +0800 Subject: [PATCH 016/141] monosyllable prefix --- src/malay/AdjectiveMay.gf | 2 +- src/malay/LexiconMay.gf | 6 +++--- src/malay/ParamMay.gf | 4 ++++ src/malay/QuestionMay.gf | 4 ++-- src/malay/ResMay.gf | 3 +++ src/malay/StructuralMay.gf | 6 +++--- src/malay/VerbMay.gf | 14 +++++++++++++- src/malay/unittest/questions.gftest | 6 +++++- 8 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/malay/AdjectiveMay.gf b/src/malay/AdjectiveMay.gf index af6b454c4..be7c198f6 100644 --- a/src/malay/AdjectiveMay.gf +++ b/src/malay/AdjectiveMay.gf @@ -6,7 +6,7 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { -- : A -> AP ; PositA a = a ** { - compar = [] ; + compar = a.s ; } ; -- : A -> NP -> AP ; diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index b17c7753c..e3344258f 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -33,7 +33,7 @@ lin beautiful_A = mkA "cantik" ; -- lin bike_N = mkN "" ; -- lin bird_N = mkN "" ; -- lin bite_V2 = mkV2 "" ; --- lin black_A = mkA "" ; +lin black_A = mkA "hitam" ; -- lin blood_N = mkN "" ; -- lin blow_V = mkV "" ; -- lin blue_A = mkA "" ; @@ -230,7 +230,7 @@ lin man_N = mkN "lelaki" ; -- lin meat_N = mkN "" ; lin milk_N = mkN "susu" ; -- lin moon_N = mkN "" ; --- lin mother_N2 = mkN2 "" ; +lin mother_N2 = mkN2 "ibu" ; -- lin mountain_N = mkN "" ; -- lin mouth_N = mkN "" ; -- lin music_N = mkN "" ; @@ -256,7 +256,7 @@ lin now_Adv = mkAdv "sekarang" ; -- lin oil_N = mkN "" ; lin old_A = mkA "tua" ; -- lin open_V2 = mkV2 "" ; --- lin paint_V2A = mkV2A "" ; +lin paint_V2A = mkV2 "cat" ; -- lin paper_N = mkN "" ; -- lin paris_PN = mkPN "Paris" ; -- lin peace_N = mkN "" ; diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index 9c3f28da0..0eeb7de43 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -31,6 +31,8 @@ oper } ; prefixMeng : Str -> Str = \makan -> case makan of { + ? + ? + c => "menge" + makan ; + (#v|"g"|"h") + _ => "meng" + makan ; -- prefix meng: e.g. meng+atur "k" + enal @@ -49,6 +51,8 @@ oper "s" + alak => "meny" + alak ; -- replace s with meny + + ("r"|"l"|"w"|"y"|"m"|"n"|"ny"|"ng") + _ => "me" + makan ; -- prefix me diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index e0d3a1495..ba6cab1a2 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -54,8 +54,8 @@ lin True => iadv.s ++ cls.subj ; False => cls.subj } ; pred = \\vf,pol => case iadv.isPre of { - True => cls.pred ! Root ! pol ; - False => cls.pred ! Root ! pol ++ iadv.s + True => cls.pred ! iadv.vf ! pol ; + False => cls.pred ! iadv.vf ! pol ++ iadv.s } ; } ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 8c82ac27f..45fc9ad7e 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -67,6 +67,7 @@ oper sp = \\_ => str ; } ; + -------------------------------------------------------------------------------- -- Det, Quant, Card, Ord @@ -235,6 +236,7 @@ oper IAdv : Type = Adverb ** { isPre : Bool ; + vf : VForm ; } ; ------------------ @@ -256,6 +258,7 @@ oper s = \\vf,pol => nounneg pol ++ s ; } ; + verbneg : Polarity -> Str = \pol -> case pol of { Neg => "tidak" ; -- or "tak"? Pos => [] diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 3d5ad4e9a..8f881ff8f 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -15,13 +15,13 @@ lin very_AdA = mkAdA "" ; lin as_CAdv = { s = "" ; p = [] } ; lin less_CAdv = { s = "" ; p = [] } ; lin more_CAdv = { s = "" ; p = [] } ; -lin how_IAdv = ss "" : lin how8much_IAdv = ss "" ; lin when_IAdv = ss "" ; -} -lin where_IAdv = { s = "mana"; isPre = False } ; -lin why_IAdv = {s = "mengapa"; isPre = True } ; +lin how_IAdv = { s = "bagaimana"; isPre = True ; vf = Active } ; +lin where_IAdv = { s = "mana"; isPre = False ; vf = Root } ; +lin why_IAdv = {s = "mengapa"; isPre = True ; vf = Root } ; {- diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index d97fa932b..b483102ef 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -55,6 +55,15 @@ lin c2 = v3.c2 -- Now the VPSlash is missing only the direct object } ; + -- insertObjc : (Agr => Str) -> SlashVP -> SlashVP = \obj,vp -> + -- insertObj obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle ; missingAdv = vp.missingAdv } ; + + SlashV2A v2 adj = useV { + s = \\vf => v2.s ! vf ++ adj.s; + } ** { + c2 = v2.c2 + } ; + {- -- : V2S -> S -> VPSlash ; -- answer (to him) that it is good SlashV2S v2s s = @@ -70,7 +79,10 @@ lin -} -- : VPSlash -> NP -> VP ComplSlash vps np = vps ** { - s = \\vf,pol => vps.s ! vf ! pol ++ applyPrep vps.c2 np + s = \\vf,pol => + vps.s ! vf ! pol + ++ applyPrep vps.c2 np + -- s = \\vf,pol => vps.s ! vf ! pol ++ applyPrep vps.c2 np } ; -- : VV -> VPSlash -> VPSlash ; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index afadc31ad..875614d34 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -53,4 +53,8 @@ LangMay: siapa mahu pergi Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestIComp (CompIP whoSg_IP) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) LangEng: who is the cat -LangMay: siapa kucing \ No newline at end of file +LangMay: siapa kucing + +Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestIAdv how_IAdv (PredVP (DetCN (DetQuant (PossPron youSg_Pron) NumSg) (UseN2 mother_N2)) (ComplSlash (SlashV2A paint_V2A (PositA black_A)) (DetCN (DetQuant DefArt NumSg) (UseN house_N))))) +LangEng: how does your mother paint the house black +LangMay: bagaimana ibu awak mengecat rumah hitam \ No newline at end of file From f0b5a89fd48fb3a5aaa38235e4a334b9f3f66365 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 12 Jan 2022 17:17:10 +0800 Subject: [PATCH 017/141] add slash3v3 and SlashV2A --- src/malay/CatMay.gf | 2 +- src/malay/LexiconMay.gf | 4 ++-- src/malay/ParamMay.gf | 5 ++--- src/malay/ResMay.gf | 2 ++ src/malay/StructuralMay.gf | 2 +- src/malay/VerbMay.gf | 26 ++++++++++++++++++-------- src/malay/unittest/questions.gftest | 21 +++++++++++++++++---- 7 files changed, 43 insertions(+), 19 deletions(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 7f3200d5a..d1bc0ebb3 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -108,7 +108,7 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { V2A, -- verb with NP and AP complement e.g. "paint" V2V, -- verb with NP and V complement e.g. "cause" - V2S, -- verb with NP and S complement e.g. "tell" + V2S, -- Reverb with NP and S complement e.g. "tell" V2Q, -- verb with NP and Q complement e.g. "ask" V2 = ResMay.Verb2 ; V3 = ResMay.Verb3 ; diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index e3344258f..74d14c68b 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -227,7 +227,7 @@ lin love_V2 = mkV2 "cinta" ; lin man_N = mkN "lelaki" ; -- lin married_A2 = mkA "" ; --- lin meat_N = mkN "" ; +lin meat_N = mkN "daging" ; lin milk_N = mkN "susu" ; -- lin moon_N = mkN "" ; lin mother_N2 = mkN2 "ibu" ; @@ -364,7 +364,7 @@ lin song_N = mkN "lagu" ; -- lin table_N = mkN "" ; -- lin tail_N = mkN "" ; --- lin talk_V3 = mkV3 "" ; +lin talk_V3 = mkV3 (mkV "cakap" Ber) (mkPrep "tentang") (mkPrep "dengan") ; lin teach_V2 = mkV2 "ajar" ; -- lin teacher_N = mkN "" ; -- lin television_N = mkN "" ; diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index 0eeb7de43..abe7164df 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -31,7 +31,8 @@ oper } ; prefixMeng : Str -> Str = \makan -> case makan of { - ? + ? + c => "menge" + makan ; + + ? + ? + ? => "menge" + makan ; (#v|"g"|"h") + _ => "meng" + makan ; -- prefix meng: e.g. meng+atur @@ -51,8 +52,6 @@ oper "s" + alak => "meny" + alak ; -- replace s with meny - - ("r"|"l"|"w"|"y"|"m"|"n"|"ny"|"ng") + _ => "me" + makan ; -- prefix me diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 45fc9ad7e..b2c0d8788 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -248,6 +248,7 @@ oper VPSlash : Type = VerbPhrase ** { c2 : Preposition ; + adjCompl : Str ; } ; useV : Verb -> VerbPhrase = \v -> v ** { @@ -295,6 +296,7 @@ oper predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps -> predVP np ** {c2 = vps.c2} ; + -- mkClause : Str -> NounPhrase -> VPSlash -> Clause = \str,np,vp -> { -- subj = str ++ np.s ! Bare; -- pred = vp.s diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 8f881ff8f..862970fa5 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -130,7 +130,7 @@ lin youPl_Pron = mkPron "kamu" P2; lin they_Pron = mkPron "mereka" P3 ; --lin whatPl_IP = ; ---lin whatSg_IP = : +lin whatSg_IP = mkIP "apa"; --lin whoPl_IP = ; lin whoSg_IP = mkIP "siapa"; diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index b483102ef..3dbf8cbaf 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -38,30 +38,38 @@ lin -- : V2 -> VPSlash SlashV2a v2 = useV v2 ** { - c2 = v2.c2 + c2 = v2.c2 ; + adjCompl = [] } ; + -- : V3 -> NP -> VPSlash ; -- give it (to her) Slash2V3 v3 dobj = useV { s = \\vf => v3.s ! vf ++ applyPrep v3.c2 dobj + } ** { - c2 = v3.c3 -- Now the VPSlash is missing only the indirect object + c2 = v3.c3; -- Now the VPSlash is missing only the indirect object + adjCompl = [] } ; -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not + s = \\vf => v3.s ! vf ++ iobj.s ! Bare ++ applyPrep v3.c3 emptyNP; + --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { - c2 = v3.c2 -- Now the VPSlash is missing only the direct object + c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object + adjCompl = [] + } ; -- insertObjc : (Agr => Str) -> SlashVP -> SlashVP = \obj,vp -> -- insertObj obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle ; missingAdv = vp.missingAdv } ; SlashV2A v2 adj = useV { - s = \\vf => v2.s ! vf ++ adj.s; + s = \\vf => v2.s ! vf; } ** { - c2 = v2.c2 + c2 = v2.c2; + adjCompl = adj.s } ; {- @@ -81,14 +89,16 @@ lin ComplSlash vps np = vps ** { s = \\vf,pol => vps.s ! vf ! pol - ++ applyPrep vps.c2 np + ++ applyPrep vps.c2 np ++ vps.adjCompl -- s = \\vf,pol => vps.s ! vf ! pol ++ applyPrep vps.c2 np } ; + -- : VV -> VPSlash -> VPSlash ; SlashVV vv vps = ComplVV vv vps ** { c2 = vps.c2 ; -- like ComplVV except missing object - passive = vv.s ++ vps.passive + passive = vv.s ++ vps.passive; + adjCompl = vps.adjCompl ; } ; -- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 875614d34..cdac74cf9 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -43,9 +43,14 @@ LangEng: which woman did you see LangMay : awak melihat perempuan yang mana # -- should be to whom did mother give the meat -# Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) -# LangEng: whom did mother give the meat -# LangMay: +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) +LangEng: whom did mother give the meat +LangMay: ibu memberi daging kepada siapa + +# -- should be to whom did mother talk the meat +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 talk_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) +LangEng: whom did mother talk about the meat to +LangMay: ibu bercakap daging dengan siapa Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) LangEng: who wants to go @@ -57,4 +62,12 @@ LangMay: siapa kucing Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestIAdv how_IAdv (PredVP (DetCN (DetQuant (PossPron youSg_Pron) NumSg) (UseN2 mother_N2)) (ComplSlash (SlashV2A paint_V2A (PositA black_A)) (DetCN (DetQuant DefArt NumSg) (UseN house_N))))) LangEng: how does your mother paint the house black -LangMay: bagaimana ibu awak mengecat rumah hitam \ No newline at end of file +LangMay: bagaimana ibu awak mengecat rumah hitam + +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv why_IAdv (PredVP (UsePron she_Pron) (ComplSlash (SlashV2a eat_V2) (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) +LangEng: why did she eat the meat +LangMay: mengapa dia makan daging + +Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestVP whatSg_IP (UseComp (CompNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN meat_N) (UseRCl (TTAnt TPast ASimul) PPos (RelVP IdRP (PassV2 eat_V2)))))))) +LangEng: what was the meat that was eaten +LangMay: apa daging yang dimakan \ No newline at end of file From 049bd8943ecf9c2cea82dcf0f3fbc554c06eaa52 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Thu, 20 Jan 2022 12:24:51 +0800 Subject: [PATCH 018/141] fix minor fixes for Malay RGL --- src/abstract/Lexicon.gf | 1 - src/english/NounEng.gf | 2 +- src/malay/AdjectiveMay.gf | 2 +- src/malay/AllMay.gf | 4 +++- src/malay/LexiconMay.gf | 1 - 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/abstract/Lexicon.gf b/src/abstract/Lexicon.gf index 9dcf6f67b..07e401137 100644 --- a/src/abstract/Lexicon.gf +++ b/src/abstract/Lexicon.gf @@ -265,7 +265,6 @@ fun short_A : A ; silver_N : N ; sing_V : V ; - sing_V2 : V2 ; sister_N : N ; sit_V : V ; skin_N : N ; diff --git a/src/english/NounEng.gf b/src/english/NounEng.gf index 848b21962..af3cd446b 100644 --- a/src/english/NounEng.gf +++ b/src/english/NounEng.gf @@ -56,7 +56,7 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in { DetNP det = { -- s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ; - s = \\c => det.sp ! Neutr ! False ! c ++ "whatevr" ; + s = \\c => det.sp ! Neutr ! False ! c ; a = agrP3 det.n } ; diff --git a/src/malay/AdjectiveMay.gf b/src/malay/AdjectiveMay.gf index be7c198f6..af6b454c4 100644 --- a/src/malay/AdjectiveMay.gf +++ b/src/malay/AdjectiveMay.gf @@ -6,7 +6,7 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { -- : A -> AP ; PositA a = a ** { - compar = a.s ; + compar = [] ; } ; -- : A -> NP -> AP ; diff --git a/src/malay/AllMay.gf b/src/malay/AllMay.gf index b7b176113..c965d8738 100644 --- a/src/malay/AllMay.gf +++ b/src/malay/AllMay.gf @@ -3,4 +3,6 @@ concrete AllMay of AllMayAbs = LangMay, ExtendMay - ** {} ; + ** { + lin sing_V2 = mkV2 "nyanyi" ; + } ; diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 74d14c68b..a74a89b8e 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -324,7 +324,6 @@ lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO -- lin short_A = mkA "" ; -- lin silver_N = mkN "" ; lin sing_V = mkV "nyanyi" ; -lin sing_V2 = mkV2 "nyanyi" ; -- lin sister_N = mkN "" ; -- lin sit_V = mkV "" ; -- lin skin_N = mkN "" ; From 7f9a4dce2bb774e78187f799129055c45b8188c4 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 21 Jan 2022 15:16:50 +0800 Subject: [PATCH 019/141] switched kami to kita for inclusiveness --- src/malay/StructuralMay.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 862970fa5..d41a0cd8a 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -125,7 +125,8 @@ lin youPol_Pron = mkPron "kamu" P2 ; lin youSg_Pron = mkPron "awak" P2 ; lin he_Pron = mkPron "dia" P3 ; lin she_Pron = mkPron "dia" P3 ; -lin we_Pron = mkPron "kami" P1 ; +-- inclusive we +lin we_Pron = mkPron "kita" P1 ; lin youPl_Pron = mkPron "kamu" P2; lin they_Pron = mkPron "mereka" P3 ; From be36e65343103de0a9e5bdafe947872a91195f17 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 26 Jan 2022 19:22:42 +0800 Subject: [PATCH 020/141] added sing_V2 to AllMayAbs --- src/malay/AllMayAbs.gf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/malay/AllMayAbs.gf b/src/malay/AllMayAbs.gf index 7e95d86d6..d909027de 100644 --- a/src/malay/AllMayAbs.gf +++ b/src/malay/AllMayAbs.gf @@ -3,4 +3,6 @@ abstract AllMayAbs = Lang, Extend - ** {} ; + ** { + fun sing_V2: V2; + } ; From c81edf3fbb8779e8f40ee558bcbb08eebe30dbcc Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Mon, 13 Dec 2021 14:06:29 +0100 Subject: [PATCH 021/141] remove dead code --- src/bulgarian/MorphoFunsBul.gf | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/bulgarian/MorphoFunsBul.gf b/src/bulgarian/MorphoFunsBul.gf index 3a44d7150..bd4f9266b 100644 --- a/src/bulgarian/MorphoFunsBul.gf +++ b/src/bulgarian/MorphoFunsBul.gf @@ -5,8 +5,8 @@ resource MorphoFunsBul = open Prelude, CatBul, MorphoBul - in { - flags coding=utf8 ; + in { + flags coding=utf8 ; oper @@ -57,12 +57,6 @@ oper dualV : VTable -> VTable -> V ; dualV imperf perf = { s = table {Imperf=>imperf; Perf=>perf}; - n = let v0 = init (imperf ! (VImperfect Sg P1)) + "н" - in (mkNoun (v0+"е") - (v0+"ия") - (v0+"ия") - (v0+"е") - ANeut).s; vtype = VNormal; lock_V=<> } ; @@ -72,12 +66,6 @@ oper singleV : VTable -> V ; singleV vtable = { s = \\_=>vtable; - n = let v0 = init (vtable ! (VImperfect Sg P1)) + "н" - in (mkNoun (v0+"е") - (v0+"ия") - (v0+"ия") - (v0+"е") - ANeut).s; vtype = VNormal; lock_V=<> } ; From 7da1cc310b741eb3aa1d6bde402fa413b92b58eb Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 14 Dec 2021 09:20:06 +0100 Subject: [PATCH 022/141] simplify the pattern in ia2e --- src/bulgarian/ResBul.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bulgarian/ResBul.gf b/src/bulgarian/ResBul.gf index bc1ff51e8..1bebfa268 100644 --- a/src/bulgarian/ResBul.gf +++ b/src/bulgarian/ResBul.gf @@ -469,7 +469,7 @@ resource ResBul = ParamX ** open Prelude, Predef in { ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "а","ъ","о" or "у" \s -> case s of { - x@(_*+_) + "я" + y@(("б"|"в"|"г"|"д"|"ж"|"з"|"к"|"л"|"м"|"н"|"п"|"р"|"с"|"т"|"ф"|"х"|"ц"|"ч"|"ш")*) + x + "я" + y@(["бвгджзклмнпрстфхцчш"]*) => x+"е"+y; _ => s }; From 0ee84ddb7d28971d9c21643d68230d9af2381175 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Mon, 20 Dec 2021 16:27:21 +0100 Subject: [PATCH 023/141] Add ExtendTur to the list of modules --- src/turkish/AllTur.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/turkish/AllTur.gf b/src/turkish/AllTur.gf index fb1524e2a..343381bf1 100644 --- a/src/turkish/AllTur.gf +++ b/src/turkish/AllTur.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common:../prelude concrete AllTur of AllTurAbs = - LangTur --- ,ExtendTur + LangTur, + ExtendTur ** {} ; From c8862b8ed851d199705d64cc71b3349ac1715304 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 11 Jan 2022 15:16:26 +0100 Subject: [PATCH 024/141] an optimization which would be relevant with the new compiler --- src/scandinavian/NounScand.gf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scandinavian/NounScand.gf b/src/scandinavian/NounScand.gf index a1df7488d..450afbbce 100644 --- a/src/scandinavian/NounScand.gf +++ b/src/scandinavian/NounScand.gf @@ -13,9 +13,9 @@ incomplete concrete NounScand of Noun = let g = cn.g ; m = cn.isMod ; - dd = case of { - => DDef Indef ; - => d + dd = case of { + => DDef Indef ; + <_,d,_> => d } in { s = \\c => det.s ! m ! g ++ From 83a59f2757ff3c30d15d1f65965b89af108b0ee4 Mon Sep 17 00:00:00 2001 From: aarneranta Date: Tue, 28 Dec 2021 11:20:08 +0100 Subject: [PATCH 025/141] fixed ParadigmsFre.mkA with 2 and 3 arguments, and commented out some uncompilable entries from DictFre --- src/french/DictFre.gf | 50 +++++++++++++++++++------------------- src/french/ParadigmsFre.gf | 22 +++++++++++++++-- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/french/DictFre.gf b/src/french/DictFre.gf index ed543f470..05b7b2674 100644 --- a/src/french/DictFre.gf +++ b/src/french/DictFre.gf @@ -22189,7 +22189,7 @@ lin cretace_2_A = mkA "crétacé" "crétacée" ; lin crete_1_A = mkA "crêté" "crêtée" ; lin crete_1_N = mkN "crête" "crêtes" feminine ; lin creter_1_V = mkV "crêter" ; -lin creterse_1_V = mkV "crêterse" ; +--lin creterse_1_V = mkV "crêterse" ; lin cretification_1_N = mkN "crétification" "crétifications" feminine ; lin cretin_1_N = mkN "crétin" "crétins" masculine ; lin cretin_2_A = mkA "crétin" "crétine" ; @@ -23474,7 +23474,7 @@ lin debillarder_1_V = mkV "débillarder" ; lin debinage_1_N = mkN "débinage" "débinages" masculine ; lin debine_1_N = mkN "débine" "débines" feminine ; lin debiner_1_V = mkV "débiner" ; -lin debinerse_1_V = mkV "débinerse" ; +--lin debinerse_1_V = mkV "débinerse" ; lin debineur_1_N = mkN "débineur" "débineurs" masculine ; lin debineur_2_A = mkA "débineur" "débineuse" ; lin debineuse_1_N = mkN "débineuse" "débineuses" feminine ; @@ -23725,7 +23725,7 @@ lin decatissure_1_N = mkN "décatissure" "décatissures" feminine ; lin decave_1_N = mkN "décavé" "décavés" masculine ; lin decave_2_A = mkA "décavé" "décavée" ; lin decaver_1_V = mkV "décaver" ; -lin decaverse_1_V = mkV "décaverse" ; +--lin decaverse_1_V = mkV "décaverse" ; lin decede_1_A = mkA "décédé" "décédée" ; lin deceder_1_V = mkV "décéder" ; lin decelable_1_A = mkA "décelable" "décelable" ; @@ -24231,7 +24231,7 @@ lin deficiente_1_N = mkN "déficiente" "déficientes" feminine ; lin deficit_1_N = mkN "déficit" "déficits" masculine ; lin deficitaire_1_A = mkA "déficitaire" "déficitaire" ; lin defier_1_V = mkV "défier" ; -lin defierse_1_V = mkV "défierse" ; +--lin defierse_1_V = mkV "défierse" ; lin defiger_1_V = mkV "défiger" ; lin defiguration_1_N = mkN "défiguration" "défigurations" feminine ; lin defigure_1_A = mkA "défiguré" "défigurée" ; @@ -26106,7 +26106,7 @@ lin develoute_1_A = mkA "dévelouté" "déveloutée" ; lin develouter_1_V = mkV "dévelouter" ; lin devenir_1_N = mkN "devenir" "devenirs" masculine ; lin devenir_2_V = mkV "devenir" ; -lin deveniren_1_V = mkV "deveniren" ; +--lin deveniren_1_V = mkV "deveniren" ; lin deverbal_1_N = mkN "déverbal" "déverbaux" masculine ; lin devergondage_1_N = mkN "dévergondage" "dévergondages" masculine ; lin devergonde_1_A = mkA "dévergondé" "dévergondée" ; @@ -32656,7 +32656,7 @@ lin faire_1_V = mkV "faire" ; lin faire_part_1_N = mkN "faire-part" masculine ; lin faire_savoir_1_N = mkN "faire-savoir" masculine ; lin faire_valoir_1_N = mkN "faire-valoir" masculine ; -lin fairese_1_V = mkV "fairese" ; +--lin fairese_1_V = mkV "fairese" ; lin faisable_1_A = mkA "faisable" "faisable" ; lin faisan_1_N = mkN "faisan" "faisans" masculine ; lin faisances_1_N = mkN "faisances" feminine ; @@ -33496,7 +33496,7 @@ lin fichaise_1_N = mkN "fichaise" "fichaises" feminine ; lin fichant_1_A = mkA "fichant" "fichante" ; lin fichard_1_N = mkN "fichard" masculine ; lin fiche_1_N = mkN "fiche" "fiches" feminine ; -lin fiche_2_V = mkV "fiche" ; +--lin fiche_2_V = mkV "fiche" ; lin fiche_tricot_1_N = mkN "fiche-tricot" feminine ; lin ficher_1_V = mkV "ficher" ; lin fichet_1_N = mkN "fichet" "fichets" masculine ; @@ -34460,7 +34460,7 @@ lin formalisant_1_A = mkA "formalisant" ; lin formalisation_1_N = mkN "formalisation" "formalisations" feminine ; lin formalise_1_A = mkA "formalisé" ; lin formaliser_1_V = mkV "formaliser" ; -lin formaliserse_1_V = mkV "formaliserse" ; +--lin formaliserse_1_V = mkV "formaliserse" ; lin formalisme_1_N = mkN "formalisme" "formalismes" masculine ; lin formaliste_1_N = mkN "formaliste" "formalistes" feminine ; lin formaliste_2_N = mkN "formaliste" "formalistes" masculine ; @@ -39011,7 +39011,7 @@ lin haillonneux_1_A = mkA "haillonneux" "haillonneuse" ; lin haine_1_N = mkN "haine" "haines" feminine ; lin haineusement_1_Adv = mkAdv "haineusement" ; lin haineux_1_A = mkA "haineux" "haineuse" ; -lin hair_1_V = mkV "haïr" ; +----lin hair_1_V = conj2haïr "haïr ; lin haire_1_N = mkN "haire" "haires" feminine ; lin haissable_1_A = mkA "haïssable" "haïssable" ; lin haisseur_1_N = mkN "haïsseur" "haïsseurs" masculine ; @@ -49335,7 +49335,7 @@ lin macle_1_A = mkA "mâclé" ; lin macle_1_N = mkN "macle" "macles" feminine ; lin macler_1_V = mkV "macler" ; lin macler_1_V0 = mkV "mâcler" ; -lin maclerse_1_V = mkV "mâclerse" ; +--lin maclerse_1_V = mkV "mâclerse" ; lin maclotte_1_N = mkN "maclotte" "maclottes" feminine ; lin macon_1_N = mkN "maçon" "maçons" masculine ; lin macon_1_N0 = mkN "mâcon" "mâcons" masculine ; @@ -50186,7 +50186,7 @@ lin manierisme_1_N = mkN "maniérisme" "maniérismes" masculine ; lin manieriste_1_N = mkN "maniériste" "maniéristes" feminine ; lin manieriste_2_N = mkN "maniériste" "maniéristes" masculine ; lin manieriste_3_A = mkA "maniériste" "maniériste" ; -lin manierse_1_V = mkV "manierse" ; +--lin manierse_1_V = mkV "manierse" ; lin manieur_1_N = mkN "manieur" "manieurs" masculine ; lin manieuse_1_N = mkN "manieuse" "manieuses" feminine ; lin manif_1_N = mkN "manif" feminine ; @@ -50515,7 +50515,7 @@ lin marianisme_1_N = mkN "marianisme" masculine ; lin marianiste_1_N = mkN "marianiste" "marianistes" feminine ; lin marianiste_2_N = mkN "marianiste" "marianistes" masculine ; lin mariant_1_A = mkA "mariant" ; -lin marida_1_V = mkV "marida" ; +--lin marida_1_V = mkV "marida" ; lin marie_1_N = mkN "marié" "mariés" masculine ; lin marie_2_A = mkA "marié" "mariée" ; lin marie_couche_toi_la_1_N = mkN "marie-couche-toi-là" feminine ; @@ -59372,7 +59372,7 @@ lin ouiller_1_V = mkV "ouiller" ; lin ouillere_1_N = mkN "ouillère" "ouillères" feminine ; lin ouillette_1_N = mkN "ouillette" feminine ; lin ouilleur_1_N = mkN "ouilleur" masculine ; -lin ouir_1_V = mkV "ouïr" ; +----lin ouir_1_V = mkV "ouïr" ; lin ouistiti_1_N = mkN "ouistiti" "ouistitis" masculine ; lin oukase_1_N = (mkN "oukase" "oukases" masculine) | (mkN "ukase" "ukases" masculine) ; lin oulema_1_N = (mkN "ouléma" "oulémas" masculine) | (mkN "uléma" "ulémas" masculine) ; @@ -64173,7 +64173,7 @@ lin pignade_1_N = mkN "pignade" "pignades" feminine ; lin pigne_1_N = mkN "pigne" "pignes" feminine ; lin pigner_1_V = mkV "pigner" ; lin pignocher_1_V = mkV "pignocher" ; -lin pignocherse_1_V = mkV "pignocherse" ; +--lin pignocherse_1_V = mkV "pignocherse" ; lin pignocheur_1_N = mkN "pignocheur" "pignocheurs" masculine ; lin pignocheuse_1_N = mkN "pignocheuse" "pignocheuses" feminine ; lin pignolat_1_N = mkN "pignolat" masculine ; @@ -72813,7 +72813,7 @@ lin relaxe_1_N = mkN "relaxe" "relaxes" feminine ; lin relaxe_2_N = mkN "relaxe" "relaxes" masculine ; lin relaxe_3_A = mkA "relaxe" "relaxe" ; lin relaxer_1_V = mkV "relaxer" ; -lin relaxerse_1_V = mkV "relaxerse" ; +--lin relaxerse_1_V = mkV "relaxerse" ; lin relayer_1_V = mkV "relayer" ; lin relayeur_1_N = mkN "relayeur" "relayeurs" masculine ; lin relayeuse_1_N = mkN "relayeuse" "relayeuses" feminine ; @@ -73373,7 +73373,7 @@ lin repenti_2_A = mkA "repenti" "repentie" ; lin repentie_1_N = mkN "repentie" "repenties" feminine ; lin repentir_1_N = mkN "repentir" "repentirs" masculine ; lin repentir_2_V = mkV "repentir" ; -lin repentirse_1_V = mkV "repentirse" ; +--lin repentirse_1_V = mkV "repentirse" ; lin reperable_1_A = mkA "repérable" "repérable" ; lin reperage_1_N = mkN "repérage" "repérages" masculine ; lin repercer_1_V = mkV "repercer" ; @@ -73809,7 +73809,7 @@ lin ressourcer_1_V = mkV "ressourcer" ; lin ressouvenance_1_N = mkN "ressouvenance" "ressouvenances" feminine ; lin ressouvenir_1_N = mkN "ressouvenir" "ressouvenirs" masculine ; lin ressouvenir_2_V = mkV "ressouvenir" ; -lin ressouvenirse_1_V = mkV "ressouvenirse" ; +--lin ressouvenirse_1_V = mkV "ressouvenirse" ; lin ressuage_1_N = mkN "ressuage" "ressuages" masculine ; lin ressuer_1_V = mkV "ressuer" ; lin ressui_1_N = mkN "ressui" "ressuis" masculine ; @@ -74969,7 +74969,7 @@ lin rocheux_1_A = mkA "rocheux" "rocheuse" ; lin rochier_1_N = mkN "rochier" "rochiers" masculine ; lin rock_1_N = mkN "rock" "rocks" masculine ; lin rock_and_roll_1_N = mkN "rock" masculine ; -lin rock_and_roller_1_V = mkV "rock" ; +--lin rock_and_roller_1_V = mkV "rock" ; lin rock_and_roller_2_N = mkN "rock" masculine ; lin rock_n_roll_1_N = mkN "rock'n'roll" masculine ; lin rock_n_roller_1_V = mkV "rock'n'roller" ; @@ -77489,7 +77489,7 @@ lin se_chemer_1_V = reflV (mkV "chemer") ; lin se_compassionner_1_V = reflV (mkV "compassionner") ; lin se_condouloir_1_V = reflV (mkV "condouloir") ; lin se_conjouir_1_V = reflV (mkV "conjouir") ; -lin se_contrefiche_1_V = reflV (mkV "contrefiche") ; +--lin se_contrefiche_1_V = reflV (mkV "contrefiche") ; lin se_contreficher_1_V = reflV (mkV "contreficher") ; lin se_contrefoutre_1_V = reflV (mkV "contrefoutre") ; lin se_costumer_1_V = reflV (mkV "costumer") ; @@ -77559,7 +77559,7 @@ lin se_ensuivre_1_V = reflV (mkV "ensuivre") ; lin se_entabler_1_V = reflV (mkV "entabler") ; lin se_entaverner_1_V = reflV (mkV "entaverner") ; lin se_enticher_1_V = reflV (mkV "enticher") ; -lin se_entr_egorger_1_V = reflV (mkV "entr") ; +--lin se_entr_egorger_1_V = reflV (mkV "entr") ; lin se_entraider_1_V = reflV (mkV "entraider") ; lin se_entre_dechirer_1_V = reflV (mkV "entre") ; lin se_entre_devorer_1_V = reflV (mkV "entre") ; @@ -77591,7 +77591,7 @@ lin se_exorbiter_1_V = reflV (mkV "exorbiter") ; lin se_extravaser_1_V = reflV (mkV "extravaser") ; lin se_fistuliser_1_V = reflV (mkV "fistuliser") ; lin se_foliariser_1_V = reflV (mkV "foliariser") ; -lin se_frotti_frotter_1_V = reflV (mkV "frotti") ; +--lin se_frotti_frotter_1_V = reflV (mkV "frotti") ; lin se_gabeler_1_V = reflV (mkV "gabeler") ; lin se_gauchiser_1_V = reflV (mkV "gauchiser") ; lin se_gendarmer_1_V = reflV (mkV "gendarmer") ; @@ -77716,7 +77716,7 @@ lin se_revenger_1_V = reflV (mkV "revenger") ; lin se_rhinoceroser_1_V = reflV (mkV "rhinoceroser") ; lin se_ruinoter_1_V = reflV (mkV "ruinoter") ; lin se_serviliser_1_V = reflV (mkV "serviliser") ; -lin se_sous_venter_1_V = reflV (mkV "sous") ; +--lin se_sous_venter_1_V = reflV (mkV "sous") ; lin se_subdivisionner_1_V = reflV (mkV "subdivisionner") ; lin se_suicider_1_V = reflV (mkV "suicider") ; lin se_surficher_1_V = reflV (mkV "surficher") ; @@ -77727,7 +77727,7 @@ lin se_torsionner_1_V = reflV (mkV "torsionner") ; lin se_touffer_1_V = reflV (mkV "touffer") ; lin se_transsubstantialiser_1_V = reflV (mkV "transsubstantialiser") ; lin se_trisser_1_V = reflV (mkV "trisser") ; -lin se_ultra_condenser_1_V = reflV (mkV "ultra") ; +--lin se_ultra_condenser_1_V = reflV (mkV "ultra") ; lin se_vacher_1_V = reflV (mkV "vacher") ; lin se_vasculariser_1_V = reflV (mkV "vasculariser") ; lin se_veinuler_1_V = reflV (mkV "veinuler") ; @@ -80772,7 +80772,7 @@ lin souvenance_1_N = mkN "souvenance" "souvenances" feminine ; lin souvenant_1_A = mkA "souvenant" ; lin souvenir_1_N = mkN "souvenir" "souvenirs" masculine ; lin souvenir_2_V = mkV "souvenir" ; -lin souvenirse_1_V = mkV "souvenirse" ; +--lin souvenirse_1_V = mkV "souvenirse" ; lin souvent_1_Adv = mkAdv "souvent" ; lin souventefois_1_Adv = mkAdv "souventefois" ; lin souverain_1_N = mkN "souverain" "souverains" masculine ; @@ -86614,7 +86614,7 @@ lin toquarde_1_N = mkN "toquarde" feminine ; lin toque_1_A = mkA "toqué" "toquée" ; lin toque_1_N = mkN "toque" "toques" feminine ; lin toquer_1_V = mkV "toquer" ; -lin toquerse_1_V = mkV "toquerse" ; +--lin toquerse_1_V = mkV "toquerse" ; lin toquet_1_N = mkN "toquet" "toquets" masculine ; lin torche_1_A = mkA "torché" "torchée" ; lin torche_1_N = mkN "torche" "torches" feminine ; diff --git a/src/french/ParadigmsFre.gf b/src/french/ParadigmsFre.gf index 99facb462..e87fcd92e 100644 --- a/src/french/ParadigmsFre.gf +++ b/src/french/ParadigmsFre.gf @@ -403,8 +403,26 @@ oper mkA = overload { mkA : Str -> A = regA ; - mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ; - mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ; + mkA : (sec,seche : Str) -> A = \sec,seche -> + let a = regA sec + in a ** { + s = table { + AF Fem Sg => seche ; + AF Fem Pl => seche + "s" ; + AA => case seche of { + _ + "ée" => init seche + "ment" ; + _ => seche + "ment" + } ; + c => a.s ! c + } + } ; + + mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> + let sechement : Str = case seche of { + _ + "ée" => init seche + "ment" ; + _ => seche + "ment" + } + in mk4A sec seche secs sechement ; mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ; mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A = mk5A ; mkA : A -> A -> A = mkADeg ; From 0c52f9cbedabc6080a4acec4972a1b3efc82555a Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 19 Jan 2022 12:16:02 +0800 Subject: [PATCH 026/141] Recognise AllXxxAbs as abstract in unittest --- unittest/unittest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/unittest.py b/unittest/unittest.py index b7e8e4784..c78a233a6 100644 --- a/unittest/unittest.py +++ b/unittest/unittest.py @@ -92,7 +92,7 @@ def collect_testcases(testlines): elif ':' in line: lang, sentence = stripstrings(line.split(':', 1)) langfile = importfile(linenr, lang) - is_tree = '/abstract/' in langfile + is_tree = ('/abstract/' in langfile) or 'Abs' in langfile test.append((is_tree, linenr, lang, langfile, sentence)) else: error(linenr, "Ill-formatted line in test file:", line) From c2551f5766750089422a343018b52ec2ef343b03 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 19 Jan 2022 12:16:32 +0800 Subject: [PATCH 027/141] (Eng) Use AllEng in the English unit tests --- src/english/unittest/relative.gftest | 75 ++++++++++++++-------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/english/unittest/relative.gftest b/src/english/unittest/relative.gftest index a7d2bc23a..6e1f5c047 100644 --- a/src/english/unittest/relative.gftest +++ b/src/english/unittest/relative.gftest @@ -1,29 +1,33 @@ -- IdRP: no difference between animate/inanimate -Lang: RelCN (UseN friend_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP everybody_NP (SlashV2a love_V2)))) -LangEng: friend that everybody loves +AllEngAbs: RelCN (UseN friend_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP everybody_NP (SlashV2a love_V2)))) +AllEng: friend that everybody loves -Lang: RelCN (UseN computer_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP everybody_NP (SlashV2a love_V2)))) -LangEng: computer that everybody loves +AllEngAbs: RelCN (UseN computer_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP everybody_NP (SlashV2a love_V2)))) +AllEng: computer that everybody loves -- IdRP possessive, RelVP -Lang: RelCN (UseN teacher_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (DetCN every_Det (UseN friend_N)) IdRP) (UseV run_V))) -LangEng: teacher whose every friend runs +AllEngAbs: RelCN (UseN teacher_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (DetCN every_Det (UseN friend_N)) IdRP) (UseV run_V))) +AllEng: teacher whose every friend runs -Lang: RelCN (UseN car_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (MassNP (UseN oil_N)) IdRP) (UseV run_V))) -LangEng: car whose oil runs +AllEngAbs: RelCN (UseN car_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (MassNP (UseN oil_N)) IdRP) (UseV run_V))) +AllEng: car whose oil runs -- IdRP possessive, RelSlash -Lang: RelNP (DetCN (DetQuant DefArt NumSg) (UseN boss_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP possess_Prep (MassNP (UseN computer_N)) IdRP) (SlashVP everybody_NP (SlashV2a love_V2)))) -LangEng: the boss , whose computer everybody loves +AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN boss_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP possess_Prep (MassNP (UseN computer_N)) IdRP) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) +AllEng: the boss , computer of which everybody loves , is here -Lang: RelNP (DetCN (DetQuant DefArt NumSg) (UseN restaurant_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP possess_Prep (MassNP (UseN fruit_N)) IdRP) (SlashVP everybody_NP (SlashV2a love_V2)))) -LangEng: the restaurant , whose fruit everybody loves +-- GenRP +AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN boss_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (GenRP NumSg (UseN computer_N)) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) +AllEng: the boss , whose computer everybody loves , is here + +AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN restaurant_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (GenRP NumSg (UseN fruit_N)) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) +AllEng: the restaurant , whose fruit everybody loves , is here -- Note that every instance of "of" is not possessive—with part_Prep, we get "beer, a glass of which I drink" -- unfortunately glass_N is not in lexicon, so I substituted words with others -Lang: RelNP (MassNP (UseN butter_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP part_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stick_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a eat_V2)))) -LangEng: butter , a stick of which I eat +AllEngAbs: RelNP (MassNP (UseN butter_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP part_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stick_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a eat_V2)))) +AllEng: butter , a stick of which I eat -- IdRP other, RelSlash -- RelVP really doesn't make sense–the preposition in FunRP looks like an object complement? @@ -38,16 +42,16 @@ LangEng: butter , a stick of which I eat -- Transitive verb + preposition in RP -- The RP is the whole [the best city in which] -Lang: RelNP (UsePN paris_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdSuperl good_A)) (UseN city_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a love_V2)))) -LangEng: Paris , the best city in which I have loved +AllEngAbs: RelNP (UsePN paris_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdSuperl good_A)) (UseN city_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a love_V2)))) +AllEng: Paris , the best city in which I have loved -- Intransitive verb + preposition in ClSlash -- The RP is just [that] -Lang: RelNP (UsePN paris_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV live_V)) in_Prep))) -LangEng: Paris , that I have lived in +AllEngAbs: RelNP (UsePN paris_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV live_V)) in_Prep))) +AllEng: Paris , that I have lived in -Lang: PredVP (UsePN paris_PN) (UseComp (CompNP (DetCN (DetQuantOrd DefArt NumSg (OrdSuperl good_A)) (RelCN (UseN city_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV live_V)) in_Prep))))))) -LangEng: Paris is the best city that I have lived in +AllEngAbs: PredVP (UsePN paris_PN) (UseComp (CompNP (DetCN (DetQuantOrd DefArt NumSg (OrdSuperl good_A)) (RelCN (UseN city_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV live_V)) in_Prep))))))) +AllEng: Paris is the best city that I have lived in -- to get "… city I have lived in", use Extend.EmptyRelSlash in place of RelSlash @@ -55,36 +59,33 @@ LangEng: Paris is the best city that I have lived in -- Now let's do complicated structures! -- FunRP + ditransitive verb. The whole string is the RS, and the substring [the first car to which] is the RP. -Lang: UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN car_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N))))) -LangEng: the first car to which I have given oil +AllEngAbs: UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN car_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N))))) +AllEng: the first car to which I have given oil -- IdRP + ditransitive verb. The whole string is now a NP, and RS is just a small part of it: [[that]:RP I have given oil]:RS -Lang: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN car_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N))))))) -LangEng: the first car that I have given oil +AllEngAbs: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN car_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N))))))) +AllEng: the first car that I have given oil -- IdRP + ditransitive verb, but the verb has an inherent preposition -Lang: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN country_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 sell_V3 (MassNP (UseN oil_N))))))) -LangEng: the first country that I have sold oil to +AllEngAbs: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN country_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 sell_V3 (MassNP (UseN oil_N))))))) +AllEng: the first country that I have sold oil to -- let's test with Slash3V3 for completeness' sake -Lang: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN oil_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash3V3 sell_V3 (DetCN (DetQuant IndefArt NumSg) (UseN country_N))))))) -LangEng: the first oil that I have sold to a country +AllEngAbs: DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN oil_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash3V3 sell_V3 (DetCN (DetQuant IndefArt NumSg) (UseN country_N))))))) +AllEng: the first oil that I have sold to a country -- FunRP + ditransitive verb, now in a context -- Suppose that I have a car named John. Now the relative pronoun "which" is chosen after the noun "car". -Lang: RelNP (UsePN john_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN car_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N)))))) -LangEng: John , the first car to which I have given oil +AllEngAbs: RelNP (UsePN john_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN car_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN oil_N)))))) +AllEng: John , the first car to which I have given oil -- Suppose that I have a friend named John. Now the relative pronoun "who" is chosen after the noun "friend". -Lang: RelNP (UsePN john_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN friend_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN beer_N)))))) -LangEng: John , my first friend to who I have given beer +AllEngAbs: RelNP (UsePN john_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP to_Prep (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN friend_N)) IdRP) (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN beer_N)))))) +AllEng: John , my first friend to who I have given beer -- If I really wanted to describe "John , my first friend […]", I would prefer using Extend.ApposNP to get a tree that makes more sense -- this doesn't linearise in core RGL, but here's the tree: --- ApposNP (UsePN john_PN) (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN friend_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN beer_N)))))))) --- approximating with ApposCN (which doesn't add comma): - -Lang: ApposCN (UseN boy_N) (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN friend_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN beer_N)))))))) -LangEng: boy the first friend that I have given beer \ No newline at end of file +AllEngAbs: ApposNP (UsePN john_PN) (DetCN (DetQuantOrd DefArt NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (RelCN (UseN friend_N) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (Slash2V3 give_V3 (MassNP (UseN beer_N)))))))) +AllEng: John , the first friend that I have given beer \ No newline at end of file From 475d0fb860f54655f337973af069ac459035cc2c Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 19 Jan 2022 14:51:49 +0800 Subject: [PATCH 028/141] (Eng) Undo the change in FunRP from #381 --- src/english/CatEng.gf | 2 -- src/english/ParadigmsEng.gf | 10 ++-------- src/english/RelativeEng.gf | 12 +++--------- src/english/StructuralEng.gf | 3 +-- 4 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/english/CatEng.gf b/src/english/CatEng.gf index 09e96fc62..049210bc8 100644 --- a/src/english/CatEng.gf +++ b/src/english/CatEng.gf @@ -89,8 +89,6 @@ concrete CatEng of Cat = CommonX - [Pol,CAdv] ** open ResEng, Prelude in { Prep = { s : Str ; -- "with", "ago" isPre : Bool ; -- whether it's pre- or postposition: "with"=True, "ago"=False - isPoss : Bool ; -- whether it becomes "whose" in FunRP: "John, whose mother is wise" - empty : Str ; -- dummy empty string to avoid issues with parsing, if s field is replaced by "whose" in FunRP } ; CAdv = {s : Polarity => Str; p : Str} ; diff --git a/src/english/ParadigmsEng.gf b/src/english/ParadigmsEng.gf index 121a77588..c5f6727df 100644 --- a/src/english/ParadigmsEng.gf +++ b/src/english/ParadigmsEng.gf @@ -537,18 +537,12 @@ mkVoc s = lin Voc (ss s) ; mkPrep p = lin Prep { s = p ; -- the string: "with", "in front of" isPre = True ; -- default case: it is a preposition, not postposition - isPoss = False ; -- default case: not possessive (i.e. no change in FunRP) - empty = [] -- dummy field to prevent an issue with parsing. only relevant when isPoss=True, and FunRP overrides the s field with "whose". for explanation of the issue, see https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#metavariables-or-those-question-marks-that-appear-when-parsing } ; mkPost p = mkPrep p ** { isPre = False -- postposition: e.g. "ago" } ; noPrep = mkPrep [] ; - possPrep : Str -> Prep = \p -> mkPrep p ** { - isPoss = True -- for possessive, FunRP overrides the Prep's string with "whose": - } ; -- e.g. "whose mother" instead of "mother of which" - mk5V a b c d e = lin V (mkVerb a b c d e ** {s1 = []}) ; regV cry = @@ -622,7 +616,7 @@ mkVoc s = lin Voc (ss s) ; auxVV, infVV = \v -> lin VV { s = table { VVF vf => v.s ! vf ; - VVPresNeg => v.s ! VPres ++ "not" + VVPresNeg => v.s ! VPres ++ "not" ; VVPastNeg => v.s ! VPast ++ "not" --# notpresent } ; p = v.p ; @@ -701,7 +695,7 @@ mkVoc s = lin Voc (ss s) ; mkA : (fat,fatter : Str) -> A = \fat,fatter -> lin A (mkAdjective fat fatter (init fatter + "st") (adj2adv fat)) ; mkA : (good,better,best,well : Str) -> A = \a,b,c,d -> - lin A (mkAdjective a b c d) + lin A (mkAdjective a b c d) } ; invarA s = lin A { diff --git a/src/english/RelativeEng.gf b/src/english/RelativeEng.gf index 230c216ea..512d6e1a8 100644 --- a/src/english/RelativeEng.gf +++ b/src/english/RelativeEng.gf @@ -32,16 +32,10 @@ concrete RelativeEng of Relative = CatEng ** open ResEng, Prelude in { c = NPAcc } ; - -- John , whose every friend is right + -- a number, [the square of which] is 4 + -- For a construction like "John , [whose every friend] is right", use Extend.GenRP FunRP p np rp = { - s = \\c => - let npGender : Gender = (fromAgr np.a).g in - case p.isPoss of { - True => rp.s ! RC npGender NPNomPoss ++ -- whose - p.empty ++ -- empty string to avoid metavariables - np.s ! NCase Nom ; -- NP in nom: "whose every friend" - False => np.s ! NPAcc ++ p.s ++ rp.s ! RPrep npGender - } ; + s = \\c => np.s ! NPAcc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ; a = RAg np.a } ; diff --git a/src/english/StructuralEng.gf b/src/english/StructuralEng.gf index d21413b39..206ef70ad 100644 --- a/src/english/StructuralEng.gf +++ b/src/english/StructuralEng.gf @@ -99,7 +99,7 @@ concrete StructuralEng of Structural = CatEng ** otherwise_PConj = ss "otherwise" ; part_Prep = mkPrep "of" ; please_Voc = ss "please" ; - possess_Prep = possPrep "of" ; + possess_Prep = mkPrep "of" ; quite_Adv = mkAdv "quite" ; she_Pron = mkPron "she" "her" "her" "hers" singular P3 feminine ; so_AdA = mkAdA "so" ; @@ -159,4 +159,3 @@ concrete StructuralEng of Structural = CatEng ** lin language_title_Utt = ss "English" ; } - From 4720114c84ddb95c921c282e6ae571b2612c6d01 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 19 Jan 2022 14:52:08 +0800 Subject: [PATCH 029/141] (Eng) Update unit tests after reverting FunRP --- src/english/unittest/relative.gftest | 32 +++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/english/unittest/relative.gftest b/src/english/unittest/relative.gftest index 6e1f5c047..3685450e2 100644 --- a/src/english/unittest/relative.gftest +++ b/src/english/unittest/relative.gftest @@ -6,32 +6,32 @@ AllEngAbs: RelCN (UseN computer_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash I AllEng: computer that everybody loves --- IdRP possessive, RelVP -AllEngAbs: RelCN (UseN teacher_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (DetCN every_Det (UseN friend_N)) IdRP) (UseV run_V))) -AllEng: teacher whose every friend runs - -AllEngAbs: RelCN (UseN car_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (FunRP possess_Prep (MassNP (UseN oil_N)) IdRP) (UseV run_V))) -AllEng: car whose oil runs - --- IdRP possessive, RelSlash +-- IdRP + possess_Prep, RelSlash AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN boss_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP possess_Prep (MassNP (UseN computer_N)) IdRP) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) AllEng: the boss , computer of which everybody loves , is here --- GenRP +-- IdRP + part_Prep, RelSlash +AllEngAbs: RelNP (MassNP (UseN butter_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP part_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stick_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a eat_V2)))) +AllEng: butter , a stick of which I eat + +-- GenRP + RelVP +-- NB. with GenRP, can't parse "teacher whose every friend runs", because GenRP takes only a CN +AllEngAbs: RelCN (UseN teacher_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (GenRP NumSg (UseN friend_N)) (UseV run_V))) +AllEng: teacher whose friend runs + +AllEngAbs: RelCN (UseN car_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP (GenRP NumSg (UseN oil_N)) (UseV run_V))) +AllEng: car whose oil runs + +-- GenRP + RelSlash AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN boss_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (GenRP NumSg (UseN computer_N)) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) AllEng: the boss , whose computer everybody loves , is here AllEngAbs: PredVP (RelNP (DetCN (DetQuant DefArt NumSg) (UseN restaurant_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (GenRP NumSg (UseN fruit_N)) (SlashVP everybody_NP (SlashV2a love_V2))))) (UseComp (CompAdv here_Adv)) AllEng: the restaurant , whose fruit everybody loves , is here --- Note that every instance of "of" is not possessive—with part_Prep, we get "beer, a glass of which I drink" --- unfortunately glass_N is not in lexicon, so I substituted words with others -AllEngAbs: RelNP (MassNP (UseN butter_N)) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash (FunRP part_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stick_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a eat_V2)))) -AllEng: butter , a stick of which I eat - -- IdRP other, RelSlash -- RelVP really doesn't make sense–the preposition in FunRP looks like an object complement? --- e.g. "Paris , the best city *in* which *I have lived* -- gap: "I have loved *in Paris* +-- e.g. "Paris , the best city *in* which *I have lived* -- gap: "I have lived *in Paris* -- for RelVP, the noun is a subject: -- e.g. "Paris , the best city ∅ which sleeps" -- no gap: "Paris sleeps" @@ -42,6 +42,8 @@ AllEng: butter , a stick of which I eat -- Transitive verb + preposition in RP -- The RP is the whole [the best city in which] +-- We can't even do "lived in", because because live_V is intransitive and RelSlash requires transitive. +-- So let's switch to love_V2 instead. AllEngAbs: RelNP (UsePN paris_PN) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in_Prep (DetCN (DetQuantOrd DefArt NumSg (OrdSuperl good_A)) (UseN city_N)) IdRP) (SlashVP (UsePron i_Pron) (SlashV2a love_V2)))) AllEng: Paris , the best city in which I have loved From a435b6b8dc2d24d05655ae1c887130d9d3675c79 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Sun, 23 Jan 2022 18:26:35 +0800 Subject: [PATCH 030/141] (Ara) Add extend to AllAra --- src/arabic/AllAra.gf | 2 +- src/arabic/AllAraAbs.gf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arabic/AllAra.gf b/src/arabic/AllAra.gf index dc20a6457..b2f369d34 100644 --- a/src/arabic/AllAra.gf +++ b/src/arabic/AllAra.gf @@ -1,3 +1,3 @@ --# -path=.:../abstract:../common:../api:../prelude -concrete AllAra of AllAraAbs = LangAra ; +concrete AllAra of AllAraAbs = LangAra, ExtendAra ; diff --git a/src/arabic/AllAraAbs.gf b/src/arabic/AllAraAbs.gf index 9889c81ed..ef690c992 100644 --- a/src/arabic/AllAraAbs.gf +++ b/src/arabic/AllAraAbs.gf @@ -1,3 +1,3 @@ --# -path=.:../abstract:../common:prelude -abstract AllAraAbs = Lang ; +abstract AllAraAbs = Lang, Extend ; From d021ebd52759524afee5495f5fc50e8e9ba14504 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Sun, 23 Jan 2022 18:28:58 +0800 Subject: [PATCH 031/141] (Ara) Add GerundNP in ExtendAra --- src/arabic/ExtendAra.gf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/arabic/ExtendAra.gf b/src/arabic/ExtendAra.gf index 27868c963..782d5c39d 100644 --- a/src/arabic/ExtendAra.gf +++ b/src/arabic/ExtendAra.gf @@ -6,7 +6,7 @@ concrete ExtendAra of Extend = EmptyRelSlash, PredAPVP, ComplDirectVS, ComplDirectVQ, -- because of Utt VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS, - EmbedSSlash, AdjAsNP + EmbedSSlash, AdjAsNP, GerundNP ] with (Grammar=GrammarAra) ** open @@ -44,7 +44,7 @@ lin DetNPFem det = emptyNP ** {s = det.s ! NoHum ! Fem} ; -- : AP -> NP - AdjAsNP ap = + AdjAsNP ap = let adjAsN : Noun = { s = ap.s ! NoHum ! Masc ; s2 = emptyNTable ; @@ -59,6 +59,11 @@ lin -- : SSlash -> SC EmbedSSlash = Grammar.EmbedS ; + -- : VP -> NP + GerundNP vp = emptyNP ** { + s = \\_ => uttVP VPGer vp ! Masc ; -- NB. NP should inflect in case, but there are no cases for masdar in the inflection table of VP. If desired, can add here with BIND. /IL + } ; -- The Gender param here doesn't make a difference, because the VPGer in VP's inflection table doesn't have gender to start with. So we could equally well choose Fem too. + lincat VPS = {s : PerGenNum => Str} ; -- finite VP's with tense and polarity [VPS] = {s1,s2 : PerGenNum => Str} ; From 45d47afc36c9558385c88e662a5a4b1c08f97917 Mon Sep 17 00:00:00 2001 From: Yousef Almesbahi Date: Sun, 23 Jan 2022 19:11:19 +0800 Subject: [PATCH 032/141] Update unittest.py --- unittest/README.md | 2 ++ unittest/unittest.py | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/unittest/README.md b/unittest/README.md index 430694489..27f8b3a54 100644 --- a/unittest/README.md +++ b/unittest/README.md @@ -9,6 +9,8 @@ python path/to/unittest.py [-h] [-v] [--no-pmcfg] path/to/testfile.gftest (...) The script must be located in a sibling directory to the RGL `src` directory to work properly. +**Note:** On Windows use WSL (Windows Subsystem for Linux) to run `unittest.py` script, also replace the commented lines for Windows inside the script. + ## Test format The test file should look something like this: diff --git a/unittest/unittest.py b/unittest/unittest.py index c78a233a6..3ef0bcce0 100644 --- a/unittest/unittest.py +++ b/unittest/unittest.py @@ -16,6 +16,9 @@ import argparse from subprocess import Popen, PIPE from glob import glob +GF_PROCESS = 'gf -run' +## For WSL on windows replace the GF_PROCESS with following line +##GF_PROCESS = 'gf.exe -run' GRAMMARDIR = '../src' ENCODING = 'utf-8' @@ -161,7 +164,7 @@ def runtest(testlines, args): print() # calling GF from a subprocess: - command = 'gf -run'.split() + command = GF_PROCESS.split() gfinput = '\n'.join(gfscript) + '\n' gf = Popen(command, stdin=PIPE, stdout=PIPE) stdout, _stderr = gf.communicate(gfinput.encode(ENCODING)) @@ -182,7 +185,7 @@ def runtest(testlines, args): linenr, lang = alltrees.pop(0).split() if args.verbose: print('---+ line %s (%s), result from GF:' % (linenr, lang)) - for tree in alltrees: + for tree in alltrees: print(' |', tree) if len(alltrees) == 0 or gferror("\n".join(alltrees)): theerror = "\n".join(alltrees) if alltrees else "No parse trees found" @@ -195,7 +198,7 @@ def runtest(testlines, args): if besterrors > 0: for oldlinenr, oldlang, oldtrees in oldresults: if besttree not in oldtrees: - error(linenr, + error(linenr, "The result of line %s (%s):\n %s\n" "is not among the results of line %s (%s):\n %s" % (linenr, lang, besttree, oldlinenr, oldlang, "\n ".join(oldtrees))) From 336c297dc1649f8828cb20a7f63bbf44c8e48c77 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 21 Feb 2022 14:26:33 +0800 Subject: [PATCH 033/141] add relative functions, addition to lexicon, change of words for you and I --- src/malay/CatMay.gf | 4 +++ src/malay/LexiconMay.gf | 46 +++++++++++++----------- src/malay/QuestionMay.gf | 1 - src/malay/RelativeMay.gf | 15 ++++---- src/malay/StructuralMay.gf | 4 +-- src/malay/VerbMay.gf | 12 +++++-- src/malay/unittest/complements.gftest | 2 +- src/malay/unittest/numerals.gftest | 2 +- src/malay/unittest/pronouns.gftest | 14 ++++---- src/malay/unittest/questions.gftest | 16 ++++----- src/malay/unittest/relative.gftest | 23 ++++++------ src/malay/unittest/tenses.gftest | 4 +-- src/malay/unittest/verbal_affixes.gftest | 24 ++++++------- 13 files changed, 92 insertions(+), 75 deletions(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index d1bc0ebb3..9fcc721f5 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -120,4 +120,8 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { N2 = ResMay.Noun2 ; N3 = ResMay.Noun3 ; PN = ResMay.PNoun ; + + linref + CN = \cn -> cn.s ! NF Sg Bare ++ cn.heavyMod; + } diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index a74a89b8e..e3b6643fd 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -4,29 +4,29 @@ concrete LexiconMay of Lexicon = CatMay ** ---- -- A --- lin add_V3 = mkV3 "" ; --- lin airplane_N = mkN "" ; +-- lin add_V3 = mkV3 "tambah" ; +lin airplane_N = mkN "kapal terbang" ; -- lin alas_Interj = mkInterj "" ; --- lin already_Adv = mkA "" ; --- lin animal_N = mkN "동물" ; --- lin answer_V2S = mkV2S "" ; --- lin apartment_N = mkN "" ; --- lin apple_N = mkN "" ; --- lin art_N = mkN "" ; --- lin ashes_N = mkN "" ; --- lin ask_V2Q = mkV2 "" ; +lin already_Adv = mkA "sudah" ; +lin animal_N = mkN "haiwan" ; +-- lin answer_V2S = mkV2S "jawab" ; +lin apartment_N = mkN "pangsapuri" ; +lin apple_N = mkN "epal" ; +lin art_N = mkN "seni" ; +lin ashes_N = mkN "abu" ; +lin ask_V2Q = mkV2 "tanya" ; ---- -- B --- lin baby_N = mkN "" ; --- lin back_N = mkN "" ; +lin baby_N = mkN "bayi" ; +lin back_N = mkN "belakang" ; -- lin bad_A = mkA "" ; --- lin bank_N = mkN "" ; +lin bank_N = mkN "bank" ; -- lin bark_N = mkN "" ; lin beautiful_A = mkA "cantik" ; --- lin become_VA = mkVA "" ; --- lin beer_N = mkN "" ; +-- lin become_VA = mkVA "jadi" ; +lin beer_N = mkN "bir" ; -- lin beg_V2V = mkV2 "" ; -- lin belly_N = mkN "" ; -- lin big_A = mkA "" ; @@ -34,7 +34,7 @@ lin beautiful_A = mkA "cantik" ; -- lin bird_N = mkN "" ; -- lin bite_V2 = mkV2 "" ; lin black_A = mkA "hitam" ; --- lin blood_N = mkN "" ; +lin blood_N = mkN "darah" ; -- lin blow_V = mkV "" ; -- lin blue_A = mkA "" ; -- lin boat_N = mkN "" ; @@ -95,7 +95,9 @@ lin come_V = mkV "datang" ; -- lin doctor_N = mkN "" ; lin dog_N = mkN "anjing" ; -- lin door_N = mkN "" ; -lin drink_V2 = mkV2 "minum" ; +lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** { + s = \\_ => "minum" ; +}; -- lin dry_A = mkA "" ; -- lin dull_A = mkA "" ; -- lin dust_N = mkN "" ; @@ -105,7 +107,9 @@ lin drink_V2 = mkV2 "minum" ; -- lin ear_N = mkN "" ; -- lin earth_N = mkN "" ; -lin eat_V2 = mkV2 "makan" ; +lin eat_V2 = let eat' : V2 = mkV2 "makan" in eat' ** { + s = \\_ => "makan" ; +}; -- lin egg_N = mkN "" ; -- lin empty_A = mkA "" ; -- lin enemy_N = mkN "" ; @@ -148,7 +152,7 @@ lin father_N2 = mkN2 "bapa" ; -- lin garden_N = mkN "" ; -- lin girl_N = mkN "" ; -lin give_V3 = mkV3 (mkV "beri" Meng) emptyPrep datPrep ; +lin give_V3 = mkV3 (mkV "beri" Meng) emptyPrep datPrep ; -- memberi for living and memberikan for nonliving -- lin glove_N = mkN "" ; lin go_V = mkV "pergi" ; -- lin gold_N = mkN "" ; @@ -204,7 +208,7 @@ lin king_N = mkN "raja" ; -- lin language_N = mkN "" ; -- lin laugh_V = mkV "" ; -- lin leaf_N = mkN "" ; -lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; +-- lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; -- lin leather_N = mkN "" ; -- lin leave_V2 = mkV2 "" ; -- lin leg_N = mkN "" ; @@ -312,7 +316,7 @@ lin science_N = mkN "sains" ; lin see_V2 = mkV2 "lihat" ; -- lin seed_N = mkN "" ; -- lin seek_V2 = mkV2 "" ; -lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO +-- lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO -- lin send_V3 = mkV3 "" ; -- lin sew_V = mkV "" ; -- lin sharp_A = mkA "" ; diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index ba6cab1a2..9544c90b5 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -59,7 +59,6 @@ lin } ; } ; - -- : IP -> IComp ; CompIP ip = {s = ip.s ! Bare } ; -- who (is it) diff --git a/src/malay/RelativeMay.gf b/src/malay/RelativeMay.gf index d9cc71a0e..b060c6eba 100644 --- a/src/malay/RelativeMay.gf +++ b/src/malay/RelativeMay.gf @@ -3,33 +3,36 @@ concrete RelativeMay of Relative = CatMay ** open lin - -- : Cl -> RCl ; -- such that John loves her - -- RelCl cl = ; + -- : Cl -> RCl ; -- such that John loves her + -- RelCl cl = cl ** { + -- subj = cl.subj ; + -- pred = cl.pred ; + -- }; -- : RP -> VP -> RCl ; RelVP rp vp = { subj = rp.s ; - pred = \\per => vp.s ! Root ; + pred = \\per,pol => vp.s ! Active ! pol; } ; -- : RP -> ClSlash -> RCl ; -- who I went with RelSlash rp cls = { subj = rp.s -- yang - ++ cls.subj ; -- saya + ++ cls.subj ; -- aku pred = \\per,pol => let object : Str = case cls.c2.prepType of { OtherPrep => cls.c2.obj ! per ; -- depends on the head, not known yet _ => [] -- if the preposition is dir.obj or empty, no obj. pronoun } ; - in cls.pred ! Root ! pol -- ikut sama + in cls.pred ! Active ! pol -- ikut sama ++ object -- dengan+nya } ; -- : RP ; IdRP = {s = "yang"} ; - -- Mintz page 49: Saya jumpa orang /yang kaki+nya/ patah. + -- Mintz page 49: aku jumpa orang /yang kaki+nya/ patah. -- 'I met a man /whose foot/ was broken.' -- : Prep -> NP -> RP -> RP ; -- the mother of whom -- FunRP prep np rp = {} ; diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index d41a0cd8a..670ce8896 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -120,9 +120,9 @@ lin with_Prep = mkPrep "dengan" ; -- Pronouns are closed class, no constructor in ParadigmsMay. lin it_Pron = mkPron "dia" P3 ; -lin i_Pron = mkPron "saya" P1 ; +lin i_Pron = mkPron "aku" P1 ; lin youPol_Pron = mkPron "kamu" P2 ; -lin youSg_Pron = mkPron "awak" P2 ; +lin youSg_Pron = mkPron "kamu" P2 ; lin he_Pron = mkPron "dia" P3 ; lin she_Pron = mkPron "dia" P3 ; -- inclusive we diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 3dbf8cbaf..b66e508f1 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -16,7 +16,7 @@ lin -- : VV -> VP -> VP ; ComplVV vv vp = vp ** useV { - s = \\vf => vv.s ++ vp.s ! Root ! Pos + s = \\vf => vv.s ++ vp.s ! Active ! Pos } ; -- : VS -> S -> VP ; @@ -54,12 +54,11 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ iobj.s ! Bare ++ applyPrep v3.c3 emptyNP; + s = \\vf => v3.s ! vf ++ applyPrep v3.c3 emptyNP ++ iobj.s ! Bare; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object adjCompl = [] - } ; -- insertObjc : (Agr => Str) -> SlashVP -> SlashVP = \obj,vp -> @@ -101,6 +100,13 @@ lin adjCompl = vps.adjCompl ; } ; + -- SlashVV vv vp = vp ** useV { + -- s = \\vf => vv.s ++ vp.s ! Active ! Pos ; + -- c2 = vp.c2 ; + -- passive = vv.s ++ vp.passive; + -- adjCompl = vp.adjCompl ; + -- } ; + -- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy -- SlashV2VNP v2v np vps = diff --git a/src/malay/unittest/complements.gftest b/src/malay/unittest/complements.gftest index cc437dd33..04cfc950e 100644 --- a/src/malay/unittest/complements.gftest +++ b/src/malay/unittest/complements.gftest @@ -3,4 +3,4 @@ Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlas LangMay: dia memberi kucing kepadaku Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron i_Pron)) (MassNP (UseN cat_N))))) -LangMay: dia memberi saya kucing +LangMay: dia memberi aku kucing diff --git a/src/malay/unittest/numerals.gftest b/src/malay/unittest/numerals.gftest index b6bc7744c..cf6aa05b5 100644 --- a/src/malay/unittest/numerals.gftest +++ b/src/malay/unittest/numerals.gftest @@ -8,4 +8,4 @@ LangMay: lima kucing ini Lang: DetCN (DetQuant (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot2 (pot0 n7))))))) (UseN cat_N) LangEng: my seven hundred cats -LangMay: tujuh ratus kucing saya +LangMay: tujuh ratus kucing aku diff --git a/src/malay/unittest/pronouns.gftest b/src/malay/unittest/pronouns.gftest index defa44a45..daededd09 100644 --- a/src/malay/unittest/pronouns.gftest +++ b/src/malay/unittest/pronouns.gftest @@ -14,18 +14,18 @@ LangMay: kucing-kucingku dengan orang itu -- to get "memukulnya", we need to define it in the entry of hit_V2 at the moment. -- if that should be variable on a more general level, let me know. Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a hit_V2) (UsePron he_Pron))) -LangMay: saya memukul dia +LangMay: aku memukul dia ------------- -- Possession -- that is my cat Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetNP (DetQuant that_Quant NumSg)) (UseComp (CompNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N))))) -LangMay: itu kucing saya +LangMay: itu kucing aku -- that cat is mine Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompNP (DetNP (DetQuant (PossPron i_Pron) NumSg))))) -LangMay: kucing itu saya +LangMay: kucing itu aku -- his/her cat is green Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron he_Pron) NumSg) (UseN cat_N)) (UseComp (CompAP (PositA green_A)))) @@ -33,14 +33,14 @@ LangMay: kucing dia hijau -- I read his/her book -- two variants, different trees Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant IndefArt NumSg) (PossNP (UseN book_N) (UsePron she_Pron))))) -LangMay: saya membaca bukunya +LangMay: aku membaca bukunya Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant (PossPron he_Pron) NumSg) (UseN book_N)))) -LangMay: saya membaca buku dia +LangMay: aku membaca buku dia -- I read his/her father's book Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN2 father_N2) (UsePron she_Pron))))))) -LangMay: saya membaca buku bapanya +LangMay: aku membaca buku bapanya -- Only the noun phrase Lang: MassNP (PossNP (UseN book_N) (UsePron he_Pron)) @@ -66,4 +66,4 @@ LangMay: kucingku dia Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (PossNP (UseN cat_N) (UsePron she_Pron)) LangEng: my cat of hers -LangMay: kucingnya saya +LangMay: kucingnya aku diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index cdac74cf9..76c478363 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -16,11 +16,11 @@ LangMay: berapa banyak kucing Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) LangEng: do you teach the cat -LangMay: adakah awak mengajar kucing +LangMay: adakah kamu mengajar kucing Lang: UseQCl (TTAnt TPres ASimul) PNeg (QuestCl (PredVP (UsePron youSg_Pron) (ComplSlash (SlashV2a teach_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))) LangEng: don't you teach the cat -LangMay: adakah awak tidak mengajar kucing +LangMay: adakah kamu tidak mengajar kucing Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN cat_N)) (ComplSlash (SlashV2a teach_V2) (UsePron he_Pron))) LangEng: which cat teaches him @@ -28,19 +28,19 @@ LangMay: kucing yang mana mengajar dia Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv where_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: where did you go -LangMay: awak pergi mana +LangMay: kamu pergi mana Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv why_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: why did you go -LangMay: mengapa awak pergi +LangMay: mengapa kamu pergi Lang: UseQCl (TTAnt TPast ASimul) PNeg (QuestIAdv why_IAdv (PredVP (UsePron youSg_Pron) (UseV go_V))) LangEng: why didn't you go -LangMay: mengapa awak tidak pergi +LangMay: mengapa kamu tidak pergi Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN woman_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a see_V2))) LangEng: which woman did you see -LangMay : awak melihat perempuan yang mana +LangMay : kamu melihat perempuan yang mana # -- should be to whom did mother give the meat Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) @@ -50,7 +50,7 @@ LangMay: ibu memberi daging kepada siapa # -- should be to whom did mother talk the meat Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whoSg_IP (SlashVP (MassNP (UseN2 mother_N2)) (Slash3V3 talk_V3 (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) LangEng: whom did mother talk about the meat to -LangMay: ibu bercakap daging dengan siapa +LangMay: ibu bercakap tentang daging dengan siapa Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestVP whoSg_IP (ComplVV want_VV (UseV go_V))) LangEng: who wants to go @@ -62,7 +62,7 @@ LangMay: siapa kucing Lang: UseQCl (TTAnt TPres ASimul) PPos (QuestIAdv how_IAdv (PredVP (DetCN (DetQuant (PossPron youSg_Pron) NumSg) (UseN2 mother_N2)) (ComplSlash (SlashV2A paint_V2A (PositA black_A)) (DetCN (DetQuant DefArt NumSg) (UseN house_N))))) LangEng: how does your mother paint the house black -LangMay: bagaimana ibu awak mengecat rumah hitam +LangMay: bagaimana ibu kamu mengecat rumah hitam Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestIAdv why_IAdv (PredVP (UsePron she_Pron) (ComplSlash (SlashV2a eat_V2) (DetCN (DetQuant DefArt NumSg) (UseN meat_N))))) LangEng: why did she eat the meat diff --git a/src/malay/unittest/relative.gftest b/src/malay/unittest/relative.gftest index 47b3b5fec..be6748d60 100644 --- a/src/malay/unittest/relative.gftest +++ b/src/malay/unittest/relative.gftest @@ -3,7 +3,7 @@ Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) LangEng: a cat that walks -LangMay: kucing yang jalan +LangMay: kucing yang berjalan Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) LangEng: a cat that drinks milk @@ -17,7 +17,7 @@ LangMay: susu yang kucing minum -- We can find another RGL tree that produces the more natural variant. This tree produces this variant. Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashPrep (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (UseV walk_V)) with_Prep)))) LangEng: the cat that the dog walks with -LangMay: kucing yang anjing jalan dengannya +LangMay: kucing yang anjing berjalan dengannya -------------------------------------------------------------- -- Determiner placement @@ -25,30 +25,31 @@ LangMay: kucing yang anjing jalan dengannya -- TODO check determiner placement? Lang: DetCN (DetQuant this_Quant NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) LangEng: this cat that walks -LangMay: kucing ini yang jalan +LangMay: kucing ini yang berjalan Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) LangEng: my cat that drinks milk -LangMay: kucing saya yang minum susu +LangMay: kucing aku yang minum susu -- TODO verb form? Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))))))) LangEng: this is the cat that walks -LangMay: ini kucing yang jalan +LangMay: ini kucing yang berjalan -------------------------------------------------------------- -- Complex example: "the book that his/her father gave him/her" -- 1. His father gave him a book +-- should be "memberikan buku" as book is dead Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (MassNP (ComplN2 father_N2 (UsePron he_Pron))) (ComplSlash (Slash2V3 give_V3 (MassNP (UseN book_N))) (UsePron he_Pron))) LangMay: bapanya memberi buku kepadanya -- 2. A book that her father gave her -- TODO: would it be better as "buku yang bapanya beri kepadanya"? (Or any other variation?) Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron she_Pron))) (Slash3V3 give_V3 (UsePron she_Pron)))))) -LangMay: buku yang bapanya beri dia +LangMay: buku yang bapanya memberi kepada dia -- The preposition "kepada" comes from the definition of give_V3 in LexiconMay.gf. -- If "buku yang bapanya beri kepadanya" is correct in general, but sometimes @@ -61,14 +62,14 @@ LangMay: buku yang bapanya beri dia -- then we can do it in the resource grammar. -- I want to read the book that my father gave me --- TODO check: would "saya mahu baca buku yang bapaku beri kepadaku" be better? +-- TODO check: would "aku mahu baca buku yang bapaku beri kepadaku" be better? Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a read_V2)) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron i_Pron))) (Slash3V3 give_V3 (UsePron i_Pron))))))))) -LangMay: saya mahu baca buku yang bapaku beri saya +LangMay: aku mahu membaca buku yang bapaku memberi kepada aku -- I want to read the book that my father read Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a read_V2)) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron i_Pron))) (SlashV2a read_V2)))))))) -LangMay: saya mahu baca buku yang bapaku baca +LangMay: aku mahu membaca buku yang bapaku membaca --- bonus tree: we can also generate "bapa saya", not just "bapaku" +-- bonus tree: we can also generate "bapa aku", not just "bapaku" Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 father_N2)) (SlashV2a read_V2))))))))) -LangMay: saya mahu baca buku yang bapa saya baca \ No newline at end of file +LangMay: aku mahu membaca buku yang bapa aku membaca \ No newline at end of file diff --git a/src/malay/unittest/tenses.gftest b/src/malay/unittest/tenses.gftest index b0447dd1b..df49f4e6f 100644 --- a/src/malay/unittest/tenses.gftest +++ b/src/malay/unittest/tenses.gftest @@ -18,8 +18,8 @@ LangMay: kucing akan berjalan Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V)))) (UseCl (TTAnt TCond ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V))) LangEng: if I walked , the cat would walk -LangMay: sekiranya saya berjalan , kucing akan berjalan +LangMay: sekiranya aku berjalan , kucing akan berjalan Lang: ExtAdvS (SubjS when_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V))) LangEng: when I walk , the cat will walk -LangMay: kalau saya berjalan , kucing akan berjalan +LangMay: kalau aku berjalan , kucing akan berjalan diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index 75359c63a..7875f2c92 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -9,42 +9,42 @@ Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)) (UseV walk_V))) LangEng: my cat walks -LangMay: kucing saya berjalan +LangMay: kucing aku berjalan -- As a verbal complement Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)) (ComplVV want_VV (UseV walk_V)))) LangEng: my cat wants to walk -LangMay: kucing saya mahu jalan +LangMay: kucing aku mahu jalan -- Transitive verbs Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant this_Quant NumSg) (UseN book_N))))) LangEng: I read this book -LangMay: saya membaca buku ini +LangMay: aku membaca buku ini -- As a verbal complement Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant this_Quant NumSg) (UseN book_N)))))) LangEng: I want to read this book -LangMay: saya mahu baca buku ini +LangMay: aku mahu baca buku ini -- How about words like mengajar and belajar? Is the prefix more important here? Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplSlash (SlashV2a learn_V2) (MassNP (UseN science_N))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I learn science in the school -LangMay: saya belajar sains di sekolah +LangMay: aku belajar sains di sekolah Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplSlash (SlashV2a teach_V2) (MassNP (UseN science_N))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I teach science in the school -LangMay: saya mengajar sains di sekolah +LangMay: aku mengajar sains di sekolah -- The way the grammar is currently defined, we'd get the same output for both "I want to learn/study science". Is this correct, or should one or both of the verbs keep the ber/meng prefix in this context? Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV want_VV (ComplSlash (SlashV2a teach_V2) (MassNP (UseN science_N)))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I want to teach science in the school -LangMay: saya mahu ajar sains di sekolah +LangMay: aku mahu ajar sains di sekolah Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV want_VV (ComplSlash (SlashV2a learn_V2) (MassNP (UseN science_N)))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I want to learn science in the school -LangMay: saya mahu belajar sains di sekolah +LangMay: aku mahu belajar sains di sekolah -- How about interaction with passive? These sentences are very artificial, but imagine they made sense: Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant this_Quant NumSg) (UseN book_N)) (AdvVP (PassV2 learn_V2) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N))))))) NoVoc @@ -67,7 +67,7 @@ LangMay: kucing yang jalan -- In a context Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))))))) LangEng: I buy a cat that walks -LangMay: saya membeli kucing yang jalan +LangMay: aku membeli kucing yang jalan -- Transitive verbs @@ -84,11 +84,11 @@ LangMay: susu yang kucing minum -- Both in context Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))))))) LangEng: I buy a cat that drinks milk -LangMay: saya membeli kucing yang minum susu +LangMay: aku membeli kucing yang minum susu Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a buy_V2) (MassNP (RelCN (UseN milk_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)) (SlashV2a drink_V2))))))))) LangEng: I buy milk that a cat drinks -LangMay: saya membeli susu yang kucing minum +LangMay: aku membeli susu yang kucing minum ---------------------------------------- @@ -102,7 +102,7 @@ LangMay: hujan sekarang -- In a context Lang: UttS (AdvS (SubjS if_Subj (UseCl (TTAnt TPast ASimul) PNeg (ImpersCl (UseV rain_V0)))) (ExtAdvS now_Adv (UseCl (TTAnt TCond ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V))))) LangEng: if it didn't rain now , I would walk -LangMay: sekiranya tidak hujan sekarang , saya akan berjalan +LangMay: sekiranya tidak hujan sekarang , aku akan berjalan ---------------------------------------- -- Imperative From ce9618b945cb516382cdbc8498e3fa34d3004309 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 21 Feb 2022 14:56:01 +0800 Subject: [PATCH 034/141] add linrefs for ClSlash and RCl --- src/malay/CatMay.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 9fcc721f5..d564d2dd4 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -123,5 +123,6 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { linref CN = \cn -> cn.s ! NF Sg Bare ++ cn.heavyMod; - + ClSlash = \cl -> cl.subj ++ cl.pred ! Root ! Pos ++ cl.c2.s; + RCl = \cl -> cl.subj ++ cl.pred ! P1 ! Pos; } From 066a9f6170f0d42b01302363c3f70d1493f76135 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 21 Feb 2022 16:14:53 +0800 Subject: [PATCH 035/141] fix active verb form for love --- src/malay/CatMay.gf | 1 + src/malay/LexiconMay.gf | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index d564d2dd4..04dead49a 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -125,4 +125,5 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { CN = \cn -> cn.s ! NF Sg Bare ++ cn.heavyMod; ClSlash = \cl -> cl.subj ++ cl.pred ! Root ! Pos ++ cl.c2.s; RCl = \cl -> cl.subj ++ cl.pred ! P1 ! Pos; + Cl = \cl -> cl.subj ++ cl.pred ! Active ! Pos; } diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index e3b6643fd..f2eceaa44 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -224,7 +224,9 @@ lin long_A = mkA "panjang" ; -- lin lose_V2 = mkV2 "" ; -- lin louse_N = mkN "" ; -- lin love_N = mkN "" ; -lin love_V2 = mkV2 "cinta" ; +lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** { + s = \\_ => "mencintai" ; +} ; ---- -- M From 88ae0d50933a58bdb56559b331fb378d628b3d79 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 23 Feb 2022 15:09:03 +0800 Subject: [PATCH 036/141] add mkV4 to add suffix to some verbs; passive unit tests --- src/malay/LexiconMay.gf | 14 ++++++++------ src/malay/ParadigmsMay.gf | 6 ++++++ src/malay/ResMay.gf | 13 ++++++++++++- src/malay/unittest/passive.gftest | 14 +++++++++++--- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index f2eceaa44..f01645b7b 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -44,7 +44,7 @@ lin blood_N = mkN "darah" ; lin book_N = mkN "buku" ; -- lin boy_N = mkN "" ; -- lin bread_N = mkN "" ; -lin break_V2 = mkV2 "patahkan" ; -- TODO figure out if -kan needs to be separated +lin break_V2 = mkV4 "patah" "kan"; -- TODO figure out if -kan needs to be separated -- lin breast_N = mkN "" ; -- lin breathe_V = mkV "" ; -- lin broad_A = mkA "" ; @@ -224,9 +224,11 @@ lin long_A = mkA "panjang" ; -- lin lose_V2 = mkV2 "" ; -- lin louse_N = mkN "" ; -- lin love_N = mkN "" ; -lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** { - s = \\_ => "mencintai" ; -} ; +-- lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** { +-- s = \\_ => "mencintai" ; +-- passive = "dicintai" ; +-- } ; +lin love_V2 = mkV4 "cinta" "i"; ---- -- M @@ -302,7 +304,7 @@ lin read_V2 = mkV2 "baca" ; -- lin round_A = mkA "" ; -- lin rub_V2 = mkV2 "" ; -- lin rubber_N = mkN "" ; --- lin rule_N = mkN "" ; +lin rule_N = mkN "peraturan" ; -- lin run_V = mkV "" ; ---- @@ -353,7 +355,7 @@ lin song_N = mkN "lagu" ; -- lin steel_N = mkN "" ; -- lin stick_N = mkN "" ; -- lin stone_N = mkN "" ; --- lin stop_V = mkV "" ; +lin stop_V = mkV "henti" ; -- lin stove_N = mkN "" ; -- lin straight_A = mkA "" ; -- lin student_N = mkN "" ; diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 4e8cd8676..2df74b94a 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -133,6 +133,12 @@ oper lin V3 (mkVerb3 v p q) } ; + mkV4 = overload { + mkV4 : Str -> Str -> V2 = \v2,str -> + lin V2 (mkVerb4 (mkVerb v2 Meng) dirPrep str) ; + mkV4 : V -> Prep -> Str -> V2 = \v,p,str -> lin V2 (mkVerb4 v p str) + } ; + mkVV = overload { mkVV : Str -> VV = \vv -> lin VV (ss vv) } ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index b2c0d8788..b3b26586a 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -209,6 +209,11 @@ oper c3 : Preposition } ; + Verb4 : Type = Verb ** { + c2 : Preposition ; + passive : Str + } ; + -- VV : Type = Verb ** {vvtype : VVForm} ; mkVerb : Str -> Prefix -> Verb = \str,p -> { @@ -220,12 +225,18 @@ oper mkVerb2 : Verb -> Preposition -> Verb2 = \v,pr -> v ** { c2 = pr ; - passive = "di" + v.s ! Root -- TODO check + passive = "di" + v.s ! Root } ; mkVerb3 : Verb -> (p,q : Preposition) -> Verb3 = \v,p,q -> mkVerb2 v p ** {c3 = q} ; + mkVerb4 : Verb -> Preposition -> Str -> Verb4 = \v,pr,str -> v ** { + s = \\_ => v.s ! Active + str; + c2 = pr ; + passive = "di" + v.s ! Root + str + } ; + copula : Verb = {s = \\_ => "ada"} ; -- TODO ------------------ -- Adv diff --git a/src/malay/unittest/passive.gftest b/src/malay/unittest/passive.gftest index 4b69b4a3e..d0df9e0fa 100644 --- a/src/malay/unittest/passive.gftest +++ b/src/malay/unittest/passive.gftest @@ -1,11 +1,19 @@ Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN dog_N)) (PassV2 love_V2)) LangEng: that dog is loved -LangMay: anjing itu dicinta +LangMay: anjing itu dicintai Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN dog_N)) (PassV2 love_V2)) LangEng: that dog isn't loved -LangMay: anjing itu tidak dicinta +LangMay: anjing itu tidak dicintai Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN dog_N)) (ComplVV want_VV (PassV2 love_V2))) LangEng: that dog doesn't want to be loved -LangMay: anjing itu tidak mahu dicinta \ No newline at end of file +LangMay: anjing itu tidak mahu dicintai + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN book_N)) (PassV2 read_V2)) +LangEng: that book is read +LangMay: buku itu dibaca + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN book_N)) (AdvVP (PassV2 read_V2) (PrepNP to_Prep (UsePron youSg_Pron)))) +LangEng: that book is read to you +LangMay: buku itu dibacakan kepada kamu \ No newline at end of file From 9fa07fb22dcfc258e615519e5e864c7fc96e6b00 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Mon, 21 Mar 2022 17:28:45 +0800 Subject: [PATCH 037/141] working tests for verbal affixes and tenses, add kepada (to a person), initial groundwork for animacy, numerals --- src/malay/AdjectiveMay.gf | 2 ++ src/malay/AdverbMay.gf | 2 ++ src/malay/CatMay.gf | 6 ++++ src/malay/LexiconMay.gf | 6 ++-- src/malay/NounMay.gf | 35 ++++++++++++++++-------- src/malay/NumeralMay.gf | 1 + src/malay/ParadigmsMay.gf | 1 + src/malay/ParamMay.gf | 6 ++++ src/malay/ResMay.gf | 3 ++ src/malay/StructuralMay.gf | 13 ++++++++- src/malay/unittest/numerals.gftest | 28 +++++++++++++++++++ src/malay/unittest/tenses.gftest | 3 ++ src/malay/unittest/verbal_affixes.gftest | 11 ++++---- 13 files changed, 96 insertions(+), 21 deletions(-) diff --git a/src/malay/AdjectiveMay.gf b/src/malay/AdjectiveMay.gf index af6b454c4..2df3e73a0 100644 --- a/src/malay/AdjectiveMay.gf +++ b/src/malay/AdjectiveMay.gf @@ -39,6 +39,8 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { -- AdjOrd ord = ord ** { -- compar = [] -- } ; + -- AdjOrd : Ord -> AP = + AdjOrd ord = ord ; -- Sentence and question complements defined for all adjectival -- phrases, although the semantics is only clear for some adjectives. diff --git a/src/malay/AdverbMay.gf b/src/malay/AdverbMay.gf index 36458f821..d7b65fd70 100644 --- a/src/malay/AdverbMay.gf +++ b/src/malay/AdverbMay.gf @@ -13,6 +13,8 @@ lin -- : Prep -> NP -> Adv ; PrepNP prep np = {s = applyPrep prep np} ; + -- PrepNP to_Prep (UsePron youSg_Pron) + -- Adverbs can be modified by 'adadjectives', just like adjectives. --AdAdv : AdA -> Adv -> Adv ; -- very quickly diff --git a/src/malay/CatMay.gf b/src/malay/CatMay.gf index 04dead49a..61ca8867a 100644 --- a/src/malay/CatMay.gf +++ b/src/malay/CatMay.gf @@ -126,4 +126,10 @@ concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in { ClSlash = \cl -> cl.subj ++ cl.pred ! Root ! Pos ++ cl.c2.s; RCl = \cl -> cl.subj ++ cl.pred ! P1 ! Pos; Cl = \cl -> cl.subj ++ cl.pred ! Active ! Pos; + Det = linDet ; } + +-- Determiner : Type = Quant ** { +-- pr : Str ; -- prefix for numbers +-- n : NumType ; -- number as in 5 (noun in singular), Sg or Pl +-- } ; \ No newline at end of file diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index f01645b7b..76552b4ea 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -19,7 +19,7 @@ lin ask_V2Q = mkV2 "tanya" ; ---- -- B -lin baby_N = mkN "bayi" ; +lin baby_N = mkN "bayi" Animate ; lin back_N = mkN "belakang" ; -- lin bad_A = mkA "" ; lin bank_N = mkN "bank" ; @@ -29,7 +29,7 @@ lin beautiful_A = mkA "cantik" ; lin beer_N = mkN "bir" ; -- lin beg_V2V = mkV2 "" ; -- lin belly_N = mkN "" ; --- lin big_A = mkA "" ; +lin big_A = mkA "besar" ; -- lin bike_N = mkN "" ; -- lin bird_N = mkN "" ; -- lin bite_V2 = mkV2 "" ; @@ -208,7 +208,7 @@ lin king_N = mkN "raja" ; -- lin language_N = mkN "" ; -- lin laugh_V = mkV "" ; -- lin leaf_N = mkN "" ; --- lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; +lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; -- lin leather_N = mkN "" ; -- lin leave_V2 = mkV2 "" ; -- lin leg_N = mkN "" ; diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 2bfed1f77..3f3b4966a 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -51,7 +51,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- : Det -> NP ; DetNP det = emptyNP ** { - s = \\_ => det.s ; + s = \\_ => linDet det ; } ; -- MassNP : CN -> NP ; @@ -71,10 +71,12 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { n = num.n } ; - -- : Quant -> Num -> Ord -> Det ; -- these five best - -- DetQuantOrd quant num ord = - -- let theseFive = DetQuant quant num in theseFive ** { - -- } ; + -- : Quant -> Num -> Ord -> Det ; + DetQuantOrd quant num ord = quant ** { + pr = num.s ; + n = num.n ; + s = ord.s ++ quant.s ; + } ; -- Whether the resulting determiner is singular or plural depends on the -- cardinal. @@ -107,18 +109,21 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { OrdDigits digs = digs ** { s = digs.s ! NOrd } ; -} -- : Numeral -> Ord ; - -- OrdNumeral num = num ** { - -- s = \\_ => num.ord - -- } ; + OrdNumeral num = { + s = num.ord + } ; -- : A -> Ord ; - -- OrdSuperl a = { - -- } ; + OrdSuperl a = { + s = "ter" ++ BIND ++ a.s + } ; -- One can combine a numeral and a superlative. -- : Numeral -> A -> Ord ; -- third largest - -- OrdNumeralSuperl num a = num ** { } ; + OrdNumeralSuperl num a = { + s = num.ord ++ "ter" ++ BIND ++ a.s + } ; -- : Quant DefArt = mkQuant [] ; @@ -199,6 +204,14 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { } } ; + + -- : Det -> NP -> NP ; + CountNP det np = np ** + { + s = \\pos => "ke" ++ BIND ++ linDet det ++ BIND ++ "-" ++ BIND ++ linDet det ++ np.s ! pos; + } ; -- Nonsense for DefArt or IndefArt + + -- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples -- PartNP cn np = cn ** { -- } ; diff --git a/src/malay/NumeralMay.gf b/src/malay/NumeralMay.gf index 1367a5ede..a0d391937 100644 --- a/src/malay/NumeralMay.gf +++ b/src/malay/NumeralMay.gf @@ -96,6 +96,7 @@ oper } ; -- To make Sub* funs directly from a string. + -- ordnumeral from here mkNum : Str -> LinNumber = \s -> { n = Pl ; s = \\_ => s ; -- Indep vs. Attrib only matters for number 1 diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 2df74b94a..5a1732e1f 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -93,6 +93,7 @@ oper mkN = overload { mkN : Str -> N = \s -> lin N (mkNoun s) ; + mkN : Str -> Animacy -> N = \s,a -> lin N (mkNoun s) ; } ; diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index abe7164df..95212a54c 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -85,6 +85,8 @@ param NPAgr = NotPron | IsPron Person ; + Animacy = Animate | Inanimate ; + oper poss2str : Possession -> Str = \p -> case p of { Bare => [] ; @@ -130,6 +132,10 @@ param param PrepType = DirObj | EmptyPrep | OtherPrep ; + +-------------------------------------------------------------------------------- +-- Adverbs + -------------------------------------------------------------------------------- -- Verbs param diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index b3b26586a..66e9da433 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -81,6 +81,9 @@ oper isPre : Bool ; } ; + linDet : Determiner -> Str = \det -> det.pr ++ det.s ; + +-- add field in determiner for kedua-dua numbers Determiner : Type = Quant ** { pr : Str ; -- prefix for numbers n : NumType ; -- number as in 5 (noun in singular), Sg or Pl diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 670ce8896..ff737ef32 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -110,7 +110,18 @@ lin in_Prep = mkPrep "di" ; -- lin part_Prep = mkPrep ; lin possess_Prep = mkPrep [] ; -- TODO check Mintz p. 39-40, 2.2.1.2 -- lin through_Prep = mkPrep ; -lin to_Prep = mkPrep "ke" ; +-- lin to_Prep = mkPrep "ke" ; +lin to_Prep = + let ke : Preposition = mkPrep "ke"; + kepada : Preposition = mkPrep "kepada" ; + in ke ** { + obj = kepada.obj + } ; + +-- lin have_V2 = let have' : V2 = mkV2 "ada" in have' ** { +-- s = \\_ => "ada" ; +-- passive = "diadakan" ; +-- } ; -- lin under_Prep = mkPrep "" ; lin with_Prep = mkPrep "dengan" ; -- lin without_Prep = mkPrep "" ; diff --git a/src/malay/unittest/numerals.gftest b/src/malay/unittest/numerals.gftest index cf6aa05b5..974728290 100644 --- a/src/malay/unittest/numerals.gftest +++ b/src/malay/unittest/numerals.gftest @@ -9,3 +9,31 @@ LangMay: lima kucing ini Lang: DetCN (DetQuant (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot2 (pot0 n7))))))) (UseN cat_N) LangEng: my seven hundred cats LangMay: tujuh ratus kucing aku + +Lang: AdjCN (AdjOrd (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (UseN cat_N) +LangEng: second cat +LangMay: kucing kedua + +Lang: DetQuantOrd IndefArt NumPl (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))) +LangEng: second +LangMay: kedua + +Lang: UttNP (DetCN (DetQuantOrd (PossPron i_Pron) NumSg (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (UseN cat_N)) +LangEng: my second cat +LangMay: kucing kedua aku + +Lang: UttNP (DetCN (DetQuantOrd (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))))) (UseN cat_N)) +LangEng: my two second cats +LangMay: dua kucing kedua aku + +Lang: CountNP (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))))) (DetCN (DetQuant (PossPron i_Pron) NumPl) (UseN cat_N)) +LangEng: two of my cats +LangMay: kedua-dua kucing aku + +Lang: MassNP (AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) big_A)) (UseN cat_N)) +LangEng: third biggest cat +LangMay: kucing ketiga terbesar + +Lang: MassNP (AdjCN (AdjOrd (OrdSuperl big_A)) (UseN cat_N)) +LangEng: biggest cat +LangMay: kucing terbesar \ No newline at end of file diff --git a/src/malay/unittest/tenses.gftest b/src/malay/unittest/tenses.gftest index df49f4e6f..51ef0bf69 100644 --- a/src/malay/unittest/tenses.gftest +++ b/src/malay/unittest/tenses.gftest @@ -23,3 +23,6 @@ LangMay: sekiranya aku berjalan , kucing akan berjalan Lang: ExtAdvS (SubjS when_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V))) LangEng: when I walk , the cat will walk LangMay: kalau aku berjalan , kucing akan berjalan + +--- + diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index 7875f2c92..7fecec8d3 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -14,7 +14,7 @@ LangMay: kucing aku berjalan -- As a verbal complement Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)) (ComplVV want_VV (UseV walk_V)))) LangEng: my cat wants to walk -LangMay: kucing aku mahu jalan +LangMay: kucing aku mahu berjalan -- Transitive verbs @@ -25,7 +25,7 @@ LangMay: aku membaca buku ini -- As a verbal complement Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant this_Quant NumSg) (UseN book_N)))))) LangEng: I want to read this book -LangMay: aku mahu baca buku ini +LangMay: aku mahu membaca buku ini -- How about words like mengajar and belajar? Is the prefix more important here? @@ -37,10 +37,9 @@ Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (Com LangEng: I teach science in the school LangMay: aku mengajar sains di sekolah --- The way the grammar is currently defined, we'd get the same output for both "I want to learn/study science". Is this correct, or should one or both of the verbs keep the ber/meng prefix in this context? Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV want_VV (ComplSlash (SlashV2a teach_V2) (MassNP (UseN science_N)))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I want to teach science in the school -LangMay: aku mahu ajar sains di sekolah +LangMay: aku mahu mengajar sains di sekolah Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplVV want_VV (ComplSlash (SlashV2a learn_V2) (MassNP (UseN science_N)))) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN school_N)))))) LangEng: I want to learn science in the school @@ -62,12 +61,12 @@ LangMay: buku ini diajar di sekolah Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) LangEng: a cat that walks -LangMay: kucing yang jalan +LangMay: kucing yang berjalan -- In a context Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a buy_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))))))) LangEng: I buy a cat that walks -LangMay: aku membeli kucing yang jalan +LangMay: aku membeli kucing yang berjalan -- Transitive verbs From bf33191c88a623396baeca3f508918e69652e994 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 30 Mar 2022 17:13:03 +0800 Subject: [PATCH 038/141] add kedua-dua (the two, etc.) to Det --- src/malay/NounMay.gf | 6 ++++-- src/malay/QuestionMay.gf | 3 ++- src/malay/ResMay.gf | 8 +++++--- src/malay/StructuralMay.gf | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 3f3b4966a..65a33612a 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -68,7 +68,8 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { DetQuant quant num = quant ** { pr = num.s ; -- if it's not a number or digit, num.s is empty s = quant.s ; - n = num.n + n = num.n ; + count = "ke" ++ BIND ++ num.s ++ BIND ++ "-" ++ BIND ++ num.s; } ; -- : Quant -> Num -> Ord -> Det ; @@ -76,6 +77,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { pr = num.s ; n = num.n ; s = ord.s ++ quant.s ; + count = "" ; } ; -- Whether the resulting determiner is singular or plural depends on the @@ -208,7 +210,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- : Det -> NP -> NP ; CountNP det np = np ** { - s = \\pos => "ke" ++ BIND ++ linDet det ++ BIND ++ "-" ++ BIND ++ linDet det ++ np.s ! pos; + s = \\pos => det.count ++ np.s ! pos; } ; -- Nonsense for DefArt or IndefArt diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 9544c90b5..17d03521c 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -21,7 +21,8 @@ lin -- if isPre is True, then: "berapa kucing" s = case iquant.isPre of { False => iquant.s ; True => [] }; -- if isPre is False, use s: "kucing berapa" - n = num.n + n = num.n ; + count = "" ; } ; -- : IP -> ClSlash -> QCl ; -- whom does John love diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 66e9da433..4487d40f6 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -87,6 +87,7 @@ oper Determiner : Type = Quant ** { pr : Str ; -- prefix for numbers n : NumType ; -- number as in 5 (noun in singular), Sg or Pl + count: Str ; } ; CardNum : Type = { @@ -130,16 +131,17 @@ oper sp = \\_ => str } ; - mkDet : Str -> Number -> Determiner = \str, num -> mkQuant str ** { + mkDet : Str -> Str -> Number -> Determiner = \cnt, str, num -> mkQuant str ** { pr = "" ; n = NoNum num ; + count = "" ; } ; - mkIdet : Str -> Str -> Number -> Bool -> Determiner = \str, standalone, num, isPre -> mkDet str num ** { + mkIdet : Str -> Str -> Str -> Number -> Bool -> Determiner = \cnt, str, standalone, num, isPre -> mkDet cnt str num ** { pr = case isPre of {True => str ; False => [] } ; -- if isPre is True, then: "berapa kucing" s = case isPre of { False => str ; True => [] }; - + count = cnt ; sp = \\_ => standalone ; } ; diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index ff737ef32..a2cb1cb73 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -56,7 +56,7 @@ lin and_Conj = {s2 = "dan" ; s1 = [] ; n = Pl} ; -- *Det and Quant -lin how8many_IDet = mkIdet "berapa" "berapa banyak" Sg True; +lin how8many_IDet = mkIdet "berapa" "berapa banyak" "" Sg True; {-} lin all_Predet = {s = ""} ; lin not_Predet = { s = "" } ; From 1d033679f2fd5e20cf1094e2eb23e0d79cf851c6 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 30 Mar 2022 22:44:53 +0800 Subject: [PATCH 039/141] basic imperatif --- src/malay/LexiconMay.gf | 6 +++--- src/malay/PhraseMay.gf | 1 + src/malay/ResMay.gf | 6 ++++++ src/malay/SentenceMay.gf | 9 ++++++++- src/malay/unittest/verbal_affixes.gftest | 4 +++- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 76552b4ea..e3aa111d9 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -94,7 +94,7 @@ lin come_V = mkV "datang" ; -- lin do_V2 = lin V2 egin_V ; -- lin doctor_N = mkN "" ; lin dog_N = mkN "anjing" ; --- lin door_N = mkN "" ; +lin door_N = mkN "pintu" ; lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** { s = \\_ => "minum" ; }; @@ -263,7 +263,7 @@ lin now_Adv = mkAdv "sekarang" ; -- lin oil_N = mkN "" ; lin old_A = mkA "tua" ; --- lin open_V2 = mkV2 "" ; +lin open_V2 = mkV2 "buka" ; lin paint_V2A = mkV2 "cat" ; -- lin paper_N = mkN "" ; -- lin paris_PN = mkPN "Paris" ; @@ -422,7 +422,7 @@ lin woman_N = mkN "perempuan" ; -- lin wonder_VQ = mkVQ "" ; -- lin wood_N = mkN "" ; -- lin worm_N = mkN "" ; --- lin write_V2 = mkV2 "" ; +lin write_V2 = mkV2 "tulis" ; -- lin year_N = mkN "" ; -- lin yellow_A = mkA "" ; lin young_A = mkA "muda" ; diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index cb5943937..3a1fb5b2c 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -8,6 +8,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttIAdv iadv = iadv ; UttNP np = {s = np.s ! Bare} ; UttIP ip = {s = ip.sp ! NF Sg Bare} ; + UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ; {- UttImpSg pol imp = UttImpPl pol imp = diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 4487d40f6..047bf7c4c 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -275,6 +275,7 @@ oper s = \\vf,pol => nounneg pol ++ s ; } ; +-- https://www.reddit.com/r/indonesian/comments/gsizsv/when_to_use_tidak_bukan_jangan_belum/ verbneg : Polarity -> Str = \pol -> case pol of { Neg => "tidak" ; -- or "tak"? @@ -285,6 +286,11 @@ oper Neg => "bukan" ; Pos => [] } ; + + impneg : Polarity -> Str = \pol -> case pol of { + Neg => "jangan" ; + Pos => [] + } ; -------------------------------------------------------------------------------- -- Cl, S diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index 1222e02e4..e6d827b20 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -24,6 +24,13 @@ lin -- : Cl -> Prep -> ClSlash ; -- (with whom) he walks SlashPrep cl prep = cl ** {c2 = prep} ; + +--2 Imperatives + -- : VP -> Imp ; + ImpVP vp = { + s = \\num,pol => vp.s ! Root ! pol + } ; + {- -- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves SlashVS np vs ss = {} ; @@ -34,7 +41,7 @@ lin --2 Imperatives -- : VP -> Imp ; - ImpVP vp = {s = \\num,pol => linVP (VImp num pol) Statement vp} ; + -- ImpVP vp = {s = \\num,pol => linVP (VImp num pol) Statement vp} ; --2 Embedded sentences diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index 7fecec8d3..d36f9be6e 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -106,6 +106,8 @@ LangMay: sekiranya tidak hujan sekarang , aku akan berjalan ---------------------------------------- -- Imperative - +Lang: UttImpSg PPos (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) +LangEng: open the door +LangMay: buka pintu ---------------------------------------- -- Questions From ffd1f28b4262549a20aa1d7fdd69756f15ebee46 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 30 Mar 2022 23:32:08 +0800 Subject: [PATCH 040/141] negative imperative --- src/malay/SentenceMay.gf | 5 ++++- src/malay/unittest/verbal_affixes.gftest | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index e6d827b20..d27c3f8ed 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -28,7 +28,10 @@ lin --2 Imperatives -- : VP -> Imp ; ImpVP vp = { - s = \\num,pol => vp.s ! Root ! pol + s = \\num,pol => case pol of { + Neg => "jangan" ++ vp.s ! Root ! Pos; + Pos => vp.s ! Root ! Pos + } } ; {- diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index d36f9be6e..9e06ad3d4 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -109,5 +109,9 @@ LangMay: sekiranya tidak hujan sekarang , aku akan berjalan Lang: UttImpSg PPos (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) LangEng: open the door LangMay: buka pintu + +Lang: UttImpSg PNeg (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) +LangEng: don't open the door +LangMay: jangan buka pintu ---------------------------------------- -- Questions From 61cb94443a1d6299d50f21232a683ab27b96b411 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 7 Apr 2022 10:03:14 +0800 Subject: [PATCH 041/141] (Eng) minor cleanup,change date format in comments --- src/english/ResEng.gf | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/src/english/ResEng.gf b/src/english/ResEng.gf index f6965740b..7ea45ee49 100644 --- a/src/english/ResEng.gf +++ b/src/english/ResEng.gf @@ -159,12 +159,12 @@ param s = table { AAdj Posit c => adjCompar.s ! AAdj Posit c ; AAdv => adjCompar.s ! AAdv ; - _ => nonExist } ; -- IL 06/2021. Replace with an actual string, if this causes problems. + _ => nonExist } ; -- IL 2021-06. Replace with an actual string, if this causes problems. isMost = True } ; _ => adjCompar } ; - -- IL 06/2021: remove "more" and "most" from A & A2's inflection table + -- IL 2021-06: remove "more" and "most" from A & A2's inflection table getCompar : Case -> Adjective -> Str = \c,a -> case a.isMost of { True => "more" ++ a.s ! AAdj Posit c ; False => a.s ! AAdj Compar c @@ -395,7 +395,7 @@ param False => {aux = x ; adv = "not" ; fin = [] ; inf = z} } ; -{- IL 24/04/2018 To fix scope of reflexives: +{- IL 2018-04 To fix scope of reflexives: a) ComplSlash ( … ReflVP … ) X: reflexive should agree with X LangEng> l PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (ReflVP (SlashV2a like_V2))) (UsePron he_Pron)) I beg him to like /himself/ @@ -421,42 +421,22 @@ param insertExtra obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle ; missingAdv = vp.missingAdv } ; --- AR 7/3/2013 move the particle after the object - insertObjPartLast : (Agr => Str) -> VP -> VP = \obj,vp -> { - s = vp.s ; + insertObjPartLast : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** { p = [] ; -- remove particle from here - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; - ad = vp.ad ; s2 = \\a => obj ! a ++ vp.s2 ! a ++ vp.p ; -- and put it here ; corresponds to insertObjPre isSimple = False ; - ext = vp.ext } ; --- The adverb should be before the finite verb. insertAdV : Str -> VP -> VP = \ad -> insertAdVAgr (\\_ => ad) ; - insertAdVAgr : (Agr => Str) -> VP -> VP = \ad,vp -> { - s = vp.s ; - p = vp.p ; - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; + insertAdVAgr : (Agr => Str) -> VP -> VP = \ad,vp -> vp ** { ad = \\a => vp.ad ! a ++ ad ! a ; - s2 = \\a => vp.s2 ! a ; isSimple = False ; - ext = vp.ext } ; - insertExtra : Str -> VP -> VP = \e,vp -> { - s = vp.s ; - p = vp.p ; - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; - ad = vp.ad ; - s2 = vp.s2 ; + insertExtra : Str -> VP -> VP = \e,vp -> vp ** { isSimple = False ; ext = vp.ext ++ e --- there should be at most one, one might think; but: I would say that it will be raining if I saw clouds } ; @@ -523,7 +503,7 @@ param haveContr = agrVerb (cBind "s") (cBind "ve") ; haventContr = agrVerb (cBind "s not") (cBind "ve not") ; - Aux = { + Aux : Type = { pres : Polarity => Agr => Str ; contr : Polarity => Agr => Str ; -- contracted forms past : Polarity => Agr => Str ; --# notpresent From 5eafffb8fe0fe403d58f79d27c893c7f9299a89e Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 7 Apr 2022 10:20:26 +0800 Subject: [PATCH 042/141] (Eng) Move VP's inflection table into Cl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Replaces 1300 fields with 50 fields + one new 2-valued parameter * Only construct the full table with Tense,Ant,Pol… in Cl --- src/english/ExtendEng.gf | 18 ++--- src/english/ExtraEng.gf | 24 +++---- src/english/IdiomEng.gf | 1 - src/english/ResEng.gf | 143 +++++++++++++++++++++++++++------------ 4 files changed, 118 insertions(+), 68 deletions(-) diff --git a/src/english/ExtendEng.gf b/src/english/ExtendEng.gf index 44f944fd9..c2560268d 100644 --- a/src/english/ExtendEng.gf +++ b/src/english/ExtendEng.gf @@ -185,7 +185,7 @@ concrete ExtendEng of Extend = mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS { s = \\o,a => let - verb = vp.s ! t.t ! t.a ! p.p ! o ! a ; -- choice of Order determines aux or not + verb = mkVerbForms a vp ! t.t ! t.a ! p.p ! o ! a ; -- choice of Order determines aux or not compl = vp.s2 ! a ++ vp.ext in {fin = verb.aux ++ t.s ++ p.s ; inf = verb.adv ++ vp.ad ! a ++ verb.fin ++ verb.inf ++ vp.p ++ compl} ; @@ -288,16 +288,12 @@ lin BaseImp = twoTable2 CPolarity ImpForm ; let be = predAux auxBe ; ppt = vps.ptp - in { - s = be.s ; - p = [] ; - prp = be.prp ; - ptp = be.ptp ; - inf = be.inf ; - ad = \\_ => [] ; - s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent - isSimple = False ; - ext = vps.ext + in be ** { + p = [] ; + ad = \\_ => [] ; + s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent + isSimple = False ; + ext = vps.ext } ; lin diff --git a/src/english/ExtraEng.gf b/src/english/ExtraEng.gf index 248fb6665..24e5bd63f 100644 --- a/src/english/ExtraEng.gf +++ b/src/english/ExtraEng.gf @@ -75,7 +75,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** MkVPS t p vp = { s = \\a => let - verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ; + verb = mkVerbForms a vp ! t.t ! t.a ! p.p ! oDir ! a ; verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ; in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext } ; @@ -180,17 +180,13 @@ lin let be = predAux auxBe ; ppt = vps.ptp - in { - s = be.s ; - p = [] ; - prp = be.prp ; - ptp = be.ptp ; - inf = be.inf ; - ad = \\_ => [] ; - s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent - isSimple = False ; - ext = vps.ext - } ; + in be ** { + p = [] ; + ad = \\_ => [] ; + s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent + isSimple = False ; + ext = vps.ext + } ; lin PassVPSlash vps = passVPSlash vps [] ; @@ -242,7 +238,7 @@ lin let subj = np.s ! npNom ; agr = np.a ; - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr in case o of { @@ -256,7 +252,7 @@ lin let subj = np.s ! npNom ; agr = np.a ; - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr in case o of { diff --git a/src/english/IdiomEng.gf b/src/english/IdiomEng.gf index eefc0307b..be0fd811d 100644 --- a/src/english/IdiomEng.gf +++ b/src/english/IdiomEng.gf @@ -44,4 +44,3 @@ concrete IdiomEng of Idiom = CatEng ** open Prelude, ResEng in { } ; } - diff --git a/src/english/ResEng.gf b/src/english/ResEng.gf index 7ea45ee49..1257ca98b 100644 --- a/src/english/ResEng.gf +++ b/src/english/ResEng.gf @@ -252,18 +252,59 @@ param Tense => Anteriority => CPolarity => Order => Agr => {aux, adv, fin, inf : Str} ; -- would, not, sleeps, slept - VP : Type = { - s : VerbForms ; - p : Str ; -- verb particle - prp : Str ; -- present participle - ptp : Str ; -- past participle - inf : Str ; -- the infinitive form ; VerbForms would be the logical place - ad : Agr => Str ; -- sentence adverb (can be Xself, hence Agr) - s2 : Agr => Str ; -- complement - ext : Str ; -- extreposed field such as S, QS, VP - isSimple : Bool -- regulates the place of participle used as adjective - } ; +{- IL 2022-04: reduce the fields in VP and make the grammar better suited for morphological analysis + All verbs except auxiliaries only need 6 forms inside VP, and other forms can be built in PredVP. + Auxiliaries need more forms. So we make VP an extension of Aux, and add a parameter that tells + which strategy to use when building a Cl: use the 4 forms, or use the fields in Aux. + (If we treat auxiliaries as normal verbs, we get "you don't be __" for "you aren't __".) + If we didn't care about morphological lexicon, we could just fill the Aux fields for all verbs: + morphologically distinct forms like "can't" for auxiliaries, and periphrastic constructions + like "doesn't sing/eat/play" for other verbs. However, then morphologically analysing the word + "doesn't" returns every single function that constructs a VP, which clutters morpho analysis. + + So we use two sets of fields and a parameter for which strategy to choose in PredVP. This results + in significantly fewer fields than previously, and is better for morphological analysis. +-} + VP : Type = { + -- The common parts + p : Str ; -- verb particle + ad : Agr => Str ; -- sentence adverb (can be Xself, hence Agr) + s2 : Agr => Str ; -- complement + ext : Str ; -- extreposed field such as S, QS, VP + prp : Str ; -- present participle + ptp : Str ; -- past participle + inf : Str ; -- the infinitive form + isSimple : Bool ; -- regulates the place of participle used as adjective + + -- The variable parts, depending on whether the main verb of the VP is auxiliary or not + isAux : Bool ; + auxForms : { -- nonExist when isAux=False + past, --# notpresent + contr, + pres : Polarity => Agr => Str ; + } ; + nonAuxForms : { -- nonExist when isAux=True + pres : Agr => Str ; -- sing/sings ; can be streamlined into two forms if needed + past : Str ; --# notpresent + } + } ; + + -- called from mkClause, when we finally put together all forms for a Cl + mkVerbForms : Agr -> VP -> VerbForms = \agr,vp -> case vp.isAux of { + True => + let aux : Aux = vp.auxForms ** { + inf = vp.inf ; + ppart = vp.ptp ; + prpart = vp.prp } ; + in auxVerbForms aux ; + False => + let fin : Str = vp.nonAuxForms.pres ! agr ; + inf : Str = vp.inf ; + part : Str = vp.ptp ; + in nonAuxVerbForms fin inf part + vp.nonAuxForms.past --# notpresent + } ; SlashVP = VP ** {c2 : Str ; gapInMiddle : Bool; @@ -276,20 +317,57 @@ param cBind : Str -> Str = \s -> Predef.BIND ++ ("'" + s) ; predV : Verb -> VP = \verb -> { - s = \\t,ant,b,ord,agr => - let - inf = verb.s ! VInf ; - fin = presVerb verb agr ; - part = verb.s ! VPPart ; - in - case of { + p = verb.p ; -- Common to all verbs + prp = verb.s ! VPresPart ; + ptp = verb.s ! VPPart ; + inf = verb.s ! VInf ; + ad = \\_ => [] ; + ext = [] ; + isSimple = True ; ---- but really depends on whether p == [] + s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] ; + + isAux = False ; -- Specific to non-Aux verbs + auxForms = { + contr, + past, --# notpresent + pres = \\_,_ => nonExist} ; + nonAuxForms = { + pres = \\agr => presVerb verb agr ; + past = verb.s ! VPast ; --# notpresent + } + } ; + + predAux : Aux -> VP = \aux -> { + p = [] ; -- Common to all verbs + prp = aux.prpart ; + ptp = aux.ppart ; + inf = aux.inf ; + ad = \\_ => [] ; + ext = [] ; + isSimple = True ; + s2 = \\_ => [] ; + + isAux = True ; -- Specific to Aux verbs + auxForms = aux ; + nonAuxForms = { + past = nonExist ; --# notpresent + pres = \\_ => nonExist} + } ; + + nonAuxVerbForms : (fin,inf,part : Str) -> + (past : Str) -> --# notpresent + VerbForms = \fin,inf,part + ,past --# notpresent + -> + \\tns,ant,pol,ord,agr => + case of { => vff fin [] ; => vf (does agr) inf ; => vf (haveContr agr) part ; --# notpresent => vf (have agr) part ; --# notpresent => vfn c (haveContr agr) (haventContr agr) part ; --# notpresent => vfn c (have agr) (havent agr) part ; --# notpresent - => vff (verb.s ! VPast) [] ; --# notpresent + => vff past [] ; --# notpresent => vf "did" inf ; --# notpresent => vfn c "did" "didn't" inf ; --# notpresent => vf (cBind "d") part ; --# notpresent @@ -314,18 +392,9 @@ param => vfn c "would" "wouldn't" ("have" ++ part) ; --# notpresent => vfn c (does agr) (doesnt agr) inf } ; - p = verb.p ; - prp = verb.s ! VPresPart ; - ptp = verb.s ! VPPart ; - inf = verb.s ! VInf ; - ad = \\_ => [] ; - ext = [] ; - isSimple = True ; ---- but really depends on whether p == [] - s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] - } ; - predAux : Aux -> VP = \verb -> { - s = \\t,ant,cb,ord,agr => + auxVerbForms : Aux -> VerbForms = \verb -> + \\t,ant,cb,ord,agr => let b = case cb of { CPos => Pos ; @@ -371,17 +440,7 @@ param => vf fin [] ; => vfn c cfinp fin [] ; => vfn c finp fin [] - - } ; - p = [] ; - prp = verb.prpart ; - ptp = verb.ppart ; - inf = verb.inf ; - ad = \\_ => [] ; - ext = [] ; - isSimple = True ; - s2 = \\_ => [] - } ; + } ; vff : Str -> Str -> {aux, adv, fin, inf : Str} = \x,y -> {aux = [] ; adv = [] ; fin = x ; inf = y} ; @@ -569,7 +628,7 @@ param \subj,agr,vp -> { s = \\t,a,b,o => let - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr ++ vp.ext in case o of { From 1f7e16642bdcde469478408e4269cffbbf66ef63 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:01:08 +0800 Subject: [PATCH 043/141] (Est) Keep non-finite forms non-finite in PassV2 TODO: restructure VP so we retain non-finite passive forms --- src/estonian/ResEst.gf | 6 ++++++ src/estonian/VerbEst.gf | 22 ++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 6418b9a27..0b72ab543 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -163,6 +163,12 @@ param in preOrPost co.isPre co.s nps ; + -- Used for passive; c2 of V2/VPSlash becomes sc of VP + compl2subjcase : Compl -> NPForm = \compl -> + case compl.c of { + NPCase Gen => NPCase Nom ; -- valisin koera -> koer valitakse + _ => compl.c -- rääkisin koerale -> koerale räägitakse + } ; -- For $Verb$. Verb : Type = { diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 8c84e22f2..7f54194ab 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -79,20 +79,14 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; - PassV2 v = - let - vp = predV v ; - subjCase = case v.c2.c of { --this is probably a reason to not get rid of NPAcc; TODO check - NPCase Gen => NPCase Nom ; --valisin koera -> koer valitakse - _ => v.c2.c --rääkisin koerale -> koerale räägitakse - } - in { - s = \\_ => vp.s ! VIPass Pres ; - s2 = \\_,_,_ => [] ; - adv = [] ; - p = vp.p ; - ext = vp.ext ; - sc = subjCase -- koer valitakse ; koerale räägitakse + PassV2 v = + let vp = predV v in vp ** { + s = \\vf => case vf of { + VIFin t => vp.s ! VIPass t ; + -- VIImper => v.s ! ImperPass ; -- TODO: include these forms from V into VP + -- VIPresPart => v.s ! PresPart Pass ; + x => vp.s ! x } ; + sc = compl2subjcase v.c2 -- koer valitakse ; koerale räägitakse } ; ----b UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ; From 0aaa38e051a02bb496a03271c809ea8c5acd19f2 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:03:01 +0800 Subject: [PATCH 044/141] (Est) Add DAP + funs that use/produce it --- src/estonian/CatEst.gf | 2 +- src/estonian/NounEst.gf | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index a91a245e0..57b891d04 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -50,7 +50,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { CN = {s : NForm => Str} ; Pron = {s : NPForm => Str ; a : Agr} ; NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; - Det = { + DAP, Det = { s : Case => Str ; -- minun kolme sp : Case => Str ; -- se (substantival form) n : Number ; -- Pl (agreement feature for verb) diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index a2167f415..2d873ab65 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -106,6 +106,21 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isDef = quant.isDef } ; + DetDAP det = det ; + + AdjDAP dap ap = dap ** { + s = \\c => dap.s ! c ++ + case ap.infl of { + Regular => ap.s ! True ! NCase dap.n c ; + _ => ap.s ! True ! NCase dap.n Nom ---- participle + } ; + sp = \\c => dap.sp ! c ++ + case ap.infl of { + Regular => ap.s ! True ! NCase dap.n c ; + _ => ap.s ! True ! NCase dap.n Nom ---- participle + } ; + } ; + PossPron p = { s,sp = \\_,_ => p.s ! NPCase Gen ; isNum = False ; From 983274d23976867b6038d2649141c028ec46964f Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:03:22 +0800 Subject: [PATCH 045/141] (Est) New linearisations in ExtendEst --- src/estonian/ExtendEst.gf | 611 +++++++++++++++++++++++--------------- 1 file changed, 376 insertions(+), 235 deletions(-) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 42551d197..1103c5b7f 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -3,19 +3,29 @@ concrete ExtendEst of Extend = CatEst ** ExtendFunctor - [ - VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList, - AdAdV, AdjAsCN, AdjAsNP, ApposNP, - BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2, - MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV, - MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, - Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, - CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, - CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, - ExistsNP, FocusAP, FocusAdV, FocusAdv, FocusObj, FrontExtPredVP, GenIP, GenModIP, GenModNP, GenNP, GenRP, - GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, InvFrontExtPredVP, MkVPS, NominalizeVPSlashNP, - PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, - PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, - UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 + -- Extensions of VP + VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, + MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, QuestVPS, SQuestVPS, RelVPS, + MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, + MkVPS2, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, ReflVPS2, + MkVPI2, BaseVPI2, ConsVPI2, ConjVPI2, ComplVPI2, + + -- Reflexives + RNP, RNPList, Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ConjRNP, Cons_nr_RNP, Cons_rr_RNP, PredetRNP, ReflRNP, ReflPoss, ReflPron, + + -- Rest in alphabetical order + AdAdV, AdjAsCN, AdjAsNP, ApposNP, AdvIsNP, A2VPSlash, ByVP, + CardCNCard, CompBareCN, CompIQuant, CompQS, CompS, CompVP, + ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, CompoundN, + EmbedPresPart, EmbedSSlash, EmptyRelSlash, ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, + FocusAP, FocusAdV, FocusAdv, FocusObj, FrontComplDirectVQ, FrontComplDirectVS, + GenIP, GenModIP, GenModNP, GenNP, GenRP, GerundAdv, GerundCN, GerundNP, + IAdvAdv, ICompAP, InOrderToVP, N2VPSlash, NominalizeVPSlashNP, + PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, + PredAPVP, PredIAdvVP, PredVPSVV, PresPartAP, PrepCN, ProDrop, ProgrVPSlash, PurposeVP, + SlashBareV2S, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP + + ] with (Grammar = GrammarEst) ** @@ -24,264 +34,395 @@ concrete ExtendEst of Extend = GrammarEst, ResEst, (R=ResEst), + (X=ExtraEst), IdiomEst, Coordination, Prelude, MorphoEst, LexiconEst, - ParadigmsEst in { + ParadigmsEst in { + +--------------------------------- +-- VPS, VPI, VPS2 + list versions + lincat + VPS = X.VPS ; + [VPS] = X.ListVPS ; + VPI = X.VPI ; + [VPI] = X.ListVPI ; + VPS2 = X.VPS ** {c2 : Compl} ; + [VPS2] = X.ListVPS ** {c2 : Compl} ; + VPI2 = X.VPI ** {c2 : Compl} ; + [VPI2] = X.ListVPI ** {c2 : Compl} ; lin - -- : NP -> Quant ; -- this man's - GenNP np = { + MkVPS = X.MkVPS ; + BaseVPS = X.BaseVPS ; + ConsVPS = X.ConsVPS ; + ConjVPS = X.ConjVPS ; + + PredVPS = X.PredVPS ; + -- QuestVPS + -- SQuestVPS + -- RelVPS + + MkVPI = X.MkVPI ; + BaseVPI = X.BaseVPI ; + ConsVPI = X.ConsVPI ; + ConjVPI = X.ConjVPI ; + ComplVPIVV = X.ComplVPIVV ; + + MkVPS2 t p vps = MkVPS t p vps ** {c2 = vps.c2} ; +-- BaseVPS2, ConsVPS2, ConjVPS2, + + ComplVPS2 v np = lin VPS (v ** { + -- TODO: param to record whether it's pos or neg, so we get right form of np + s = \\agr => v.s ! agr ++ appCompl True Pos v.c2 np ; + }) ; + +-- ReflVPS2 v rnp = +-- MkVPI2, BaseVPI2, ConsVPI2, ConjVPI2, ComplVPI2, + +--------------------------------- +-- RNP + all related funs + + lincat + RNP = {s : Agr => NPForm => Str} ; + RNPList = {s1,s2 : Agr => NPForm => Str} ; + + oper + rnp2np : Agr -> RNP -> NP = \agr,rnp -> lin NP { + a = agr ; + s = rnp.s ! agr ; + isPron = False ; -- ?? + } ; + + lin + -- : VPSlash -> RNP -> VP ; -- support my family and myself + ReflRNP vps rnp = insertObj (\\b,p,a => appCompl True Pos vps.c2 (rnp2np a rnp)) vps ; + + -- : RNP + ReflPron = {s = \\agr,npf => (reflPron agr).s ! npf} ; + + -- : Num -> CN -> RNP ; -- my car(s) + ReflPoss num cn = { + s = \\a,npf => possPron ! a ++ num.s ! Sg ! Nom ++ + case npf of { + NPCase c => cn.s ! NCase num.n c ; + NPAcc => cn.s ! NCase num.n Gen } ; + } ; + + PredetRNP predet rnp = { + s = \\a,c => case a of { + Ag n p => predet.s ! n ! c ++ rnp.s ! a ! c ; + AgPol => predet.s ! Pl ! c ++ rnp.s ! a ! c } + } ; + + ConjRNP conj rpns = conjunctDistrTable2 Agr NPForm conj rpns ; + + Base_rr_RNP x y = twoTable2 Agr NPForm x y ; + Base_nr_RNP x y = twoTable2 Agr NPForm {s = \\a => x.s} y ; + Base_rn_RNP x y = twoTable2 Agr NPForm x {s = \\a => y.s} ; + Cons_rr_RNP x xs = consrTable2 Agr NPForm comma x xs ; + Cons_nr_RNP x xs = consrTable2 Agr NPForm comma {s = \\a => x.s} xs ; + +{- + -- : Pron -> Num -> CN -> RNP -> NP ; -- his abandonment of his wife and children + PossPronRNP pron num cn rnp = + + -- : NP -> Prep -> RNP -> RNP ; -- a dispute with his wife + AdvRAP adv rp = + + -- : VP -> Prep -> RNP -> VP ; -- lectured about her travels + AdvRNP adv rp = + + -- : AP -> Prep -> RNP -> AP ; -- adamant in his refusal + AdvRVP adv rp = + -} + + oper + possPron : Agr => Str = table { + Ag Sg P1 => "minu" ; + Ag Sg P2 => "sinu" ; + Ag Sg P3 => "tema" ; + Ag Pl P1 => "meie" ; + Ag Pl P2 => "teie" ; + Ag Pl P3 => "nende" ; + AgPol => "teie" + } ; + + +--------------------------------- +-- A - B + lin + + + AdAdV ad adv = AdAdv ad adv ; + + -- : AP -> CN ; -- a green one ; en grön (Swe) + AdjAsCN ap = {s = ap.s ! True} ; -- True = attributive ; False = predicative + + -- : AP -> NP + AdjAsNP ap = MassNP (AdjAsCN ap) ; + + -- : NP -> NP -> NP + ApposNP np1 np2 = np2 ** { + s = \\nf => np1.s ! nf ++ np2.s ! nf ; -- comma or not? + } ; + + -- : Adv -> NP -> Cl ; -- here is the tree / here are the trees + AdvIsNP adv np = mkClause (\_ -> adv.s) (agrP3 Sg) (UseComp (CompNP np)) ; + + -- : A2 -> VPSlash + A2VPSlash a2 = UseComp (CompAP (UseA2 a2)) ** {c2 = a2.c2} ; + + -- : VP -> Adv ; + ByVP vp = {s = vp2adv vp True (VIInf InfDes)} ; + +--------------------------------- +-- C + + lin + + -- : VS -> S -> VP ; + ComplBareVS v s = insertExtrapos s.s (predV v) ; + + -- : N -> N -> N ; -- control system / controls system / control-system + CompoundN noun cn = cn ** { + s = \\nf => noun.s ! NCase Sg Gen ++ BIND ++ cn.s ! nf + } ; + + -- : N -> A -> AP ; -- language independent / language-independent + CompoundAP n a = PositA (a ** {s = \\d,af => n.s ! NCase Sg Nom ++ BIND ++ a.s ! d ! af}) ; + + -- : VS -> Utt -> VP ; -- say: "today" + ComplDirectVS vs utt = insertExtrapos (BIND ++ ":" ++ utt.s) (predV vs) ; + + -- : VQ -> Utt -> VP ; -- ask: "when" + ComplDirectVQ vq utt = insertExtrapos (BIND ++ ":" ++ utt.s) (predV vq) ; + + -- : S -> Comp ; -- (the fact is) that she sleeps + CompS s = {s = \\_ => "et" ++ s.s} ; + + -- : QS -> Comp ; -- (the question is) who sleeps + CompQS qs = {s = \\_ => qs.s } ; + + -- : Ant -> Pol -> VP -> Comp ; -- (she is) to go + CompVP ant pol vp = {s = \\a => infVPAnt ant.a (NPCase Nom) pol.p a vp InfDa } ; + + + -- ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++ infVP v.typ vp a.a p.p agr) + -- (predVV v) ; + + -- ComplSlashPartLast vps np = {} ; --- AR 7/3/2013 + +--------------------------------- +-- E - F + + lin + + {- TODO: need to change VP to get EmbedPresPart and various Gerunds to work: + 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) + 2) Change s2 in VP so that we can manipulate the complement to be in genitive! + + -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) + EmbedPresPart vp = + let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } + {s = vp2adv vp True VI } ; + -} + + EmbedSSlash s = {s = s.s ++ s.c2.s} ; + + -- : ClSlash -> RCl ; -- he lives in + EmptyRelSlash cls = { + s = \\t,a,p,_ => cls.s ! t ! a ! p ++ cls.c2.s ; + c = NPCase Nom + } ; + + -- : CN -> Cl ; -- there is a car / there is no car ; there is beer / there is no beer ; there are + -- TODO: these all use the literal "exist" verb. Does Estonian have a construction for "there is"? + ExistCN, ExistMassCN = \cn -> ExistsNP (MassNP cn) ; + ExistPluralCN cn = ExistsNP (DetCN (DetQuant IndefArt NumPl) cn) ; + + -- : NP -> Cl ; -- there exists a number / there exist numbers + ExistsNP = IdiomEst.ExistNP ; + + -- : AP -> NP -> Utt ; -- green was the tree + FocusAP ap np = + let pred : VP = UseComp (CompNP np) ; + subj : NP = AdjAsNP ap ; + cl : Cl = PredVP subj pred ; + in UttS (UseCl (TTAnt TPres ASimul) PPos cl) ; -- use AdvIsNP for similar construction but that returns a Cl instead + + -- : Ad[vV] -> S -> Utt -- today I will sleep + FocusAdV, FocusAdv = \adv,s -> cc2 adv s ; + + -- : NP -> SSlash -> Utt ; -- her I love + FocusObj np sslash = {s = appCompl True Pos sslash.c2 np ++ sslash.s} ; + + + -- : NP -> VS -> Utt -> Cl ; -- "I am here", she said + FrontComplDirectVS np vs utt = + let cl : Cl = PredVP np (UseV vs) ; + in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ; + + -- : NP -> VQ -> Utt -> Cl ; -- "where", she asked + FrontComplDirectVQ np vq utt = + let cl : Cl = PredVP np (UseV vq) ; + in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ; + + +--------------------------------- +-- G + + lin + -- : NP -> Quant ; -- this man's + GenNP np = { s,sp = \\_,_ => np.s ! NPCase Gen ; isNum = False ; isDef = True ; - isNeg = False - } ; + isNeg = False + } ; - -- : IP -> IQuant ; -- whose - GenIP ip = { s = \\_,_ => ip.s ! NPCase Gen } ; + -- : IP -> IQuant ; -- whose + GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; - -- : Num -> CN -> RP ; -- whose car - GenRP num cn = { - s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; - a = RNoAg - } ; + -- : Num -> CN -> RP ; -- whose car + GenRP num cn = { + s = \\n,c => let k = npform2case num.n c + in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; + a = RNoAg + } ; -- In case the first two are not available, the following applications should in any case be. - -- : Num -> NP -> CN -> NP ; -- this man's car(s) - GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ; + -- : Num -> NP -> CN -> NP ; -- this man's car(s) + GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ; - -- : Num -> IP -> CN -> IP ; -- whose car(s) - GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; + -- : Num -> IP -> CN -> IP ; -- whose car(s) + GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; -{- + -- : VP -> Adv + GerundAdv vp = {s = vp2adv vp True (VIInf InfDes)} ; + -- : VP -> CN -- publishing of the document (can get a determiner) +-- GerundCN vp = {} ; - lincat - VPS = {s : Agr => Str} ; - [VPS] = {s1,s2 : Agr => Str} ; - VPI = {s : VVType => Agr => Str} ; - [VPI] = {s1,s2 : VVType => Agr => Str} ; + -- : VP -> NP -- publishing the document (by nature definite) +-- GerundNP vp = {} ; - lin - BaseVPS = twoTable Agr ; - ConsVPS = consrTable Agr comma ; - - BaseVPI = twoTable2 VVType Agr ; - ConsVPI = consrTable2 VVType Agr comma ; - - MkVPS t p vp = mkVPS (lin Temp t) (lin Pol p) (lin VP vp) ; - ConjVPS c xs = conjunctDistrTable Agr c xs ; - PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ; - - - MkVPI vp = mkVPI (lin VP vp) ; - ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ; - ComplVPIVV vv vpi = insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ; - - --------- two-place verb conjunction - - lincat - VPS2 = {s : Agr => Str ; c2 : Str} ; - [VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ; - VPI2 = {s : VVType => Agr => Str ; c2 : Str} ; - [VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Str} ; - - lin - MkVPS2 t p vpsl = mkVPS (lin Temp t) (lin Pol p) (lin VP vpsl) ** {c2 = vpsl.c2} ; - MkVPI2 vpsl = mkVPI (lin VP vpsl) ** {c2 = vpsl.c2} ; - - BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb - ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2} ; - - BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb - ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ; - - - ConjVPS2 c xs = conjunctDistrTable Agr c xs ** {c2 = xs.c2} ; - ConjVPI2 c xs = conjunctDistrTable2 VVType Agr c xs ** {c2 = xs.c2} ; - - - ComplVPS2 vps2 np = {} ; - ComplVPI2 vpi2 np = {} ; - - oper - mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS {} ; - - mkVPI : VP -> VPI = \vp -> lin VPI {} ; - ------ --} - -lin - -- : AP -> IComp ; -- "how old" - ICompAP ap = icompAP "kui" ap ; - - -- : Adv -> IAdv ; -- "how often" - IAdvAdv adv = { s = "kui" ++ adv.s } ; - - -- : VP -> AP ; -- (the man) looking at Mary / filme vaatav (mees) - PresPartAP vp = { - s = \\_,_ => vp2adv vp True VIPresPart ; - infl = Invariable - } ; - -{- TODO: need to change VP to get the following 3 functions to work properly: - 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) - 2) Change s2 in VP so that we can manipulate the complement to be in genitive! - -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) - EmbedPresPart vp = - let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } - {s = vp2adv vp True VI } ; - - -- : VP -> CN -- publishing of the document (can get a determiner) - GerundCN vp = {} ; - - -- : VP -> NP -- publishing the document (by nature definite) - GerundNP vp = {} ; --} - - -- : VPSlash -> AP ; -- täna leitud - PastPartAP vp = { - s = \\_,_ => vp2adv vp True (VIPass Past) ; - infl = Invariable } ; - - -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) - PastPartAgentAP vp np = { - s = \\_,_ => np.s ! NPCase Gen ++ "poolt" - ++ vp2adv vp True (VIPass Past) ; - infl = Invariable } ; - - -- : VP -> Adv - GerundAdv vp = - { s = vp2adv vp True (VIInf InfDes) } ; - - WithoutVP vp = -- ilma raamatut nägemata - { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; - - InOrderToVP vp = -- et raamatut paremini näha - { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; - - ByVP vp = - { s = vp2adv vp True (VIInf InfDes) } ; - -oper - vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> - vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut - ++ vp.adv -- paremini - ++ vp.p -- ära - ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... - ++ vp.ext ; - -lin -{- - - NominalizeVPSlashNP vpslash np = {} ; - PassVPSlash vps = passVPSlash (lin VPS vps) [] ; - PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ; - - --- AR 7/3/2013 - ComplSlashPartLast vps np = {} ; --} - -- : NP -> Cl ; -- there exists a number / there exist numbers - ExistsNP = IdiomEst.ExistNP ; - -{- - ComplBareVS v s = insertExtra s.s (predV v) ; - SlashBareV2S v s = insertExtrac s.s (predVc v) ; --} - - -- : N -> N -> N ; -- control system / controls system / control-system - CompoundN noun cn = lin N { - s = \\nf => noun.s ! NCase Sg Gen ++ BIND ++ cn.s ! nf - } ; -{- - -- : N -> A -> AP ; -- language independent / language-independent - CompoundAP noun adj = {} ; - - -- : VS -> Utt -> VP ; -- say: "today" - ComplDirectVS vs utt = {} ; - -- : VQ -> Utt -> VP ; -- ask: "when" - ComplDirectVQ vq utt = {} ; - - -- : NP -> VS -> Utt -> Cl ; -- "I am here", she said - FrontComplDirectVS np vs utt = {} ; - -- : NP -> VQ -> Utt -> Cl ; -- "where", she asked - FrontComplDirectVQ np vq utt = {} ; --} - - -- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida - PredAPVP ap vp = - let heaOllaVP : VP = insertObj (\\_,_ => ap.s) vp ; -- puts AP into the s2 field - heaOllaComp : Comp = CompVP ASimul PPos heaOlla ; -- chooses InfDa, fixes word order - heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P - in existClause noSubj (agrP3 Sg) heaOlla ; - -oper -testCl = PredAPVP (PositA good_A) (UseV walk_V) ; +--------------------------------- +-- I - N lin - -- : AP -> CN ; -- a green one ; en grön (Swe) - AdjAsCN ap = { s = ap.s ! True } ; -- True = it's a modifier, not a predicate + -- : AP -> IComp ; -- "how old" + ICompAP ap = icompAP "kui" ap ; - AdjAsNP ap = { - s = table { NPCase c => ap.s ! True ! NCase Sg c ; - NPAcc => ap.s ! True ! NCase Sg Gen } ; - a = agrP3 Sg ; - isPron = False - } ; -{- - lincat - RNP = {s : Agr => Str} ; - RNPList = {s1,s2 : Agr => Str} ; + -- : Adv -> IAdv ; -- "how often" + IAdvAdv adv = { s = "kui" ++ adv.s } ; - lin - ReflRNP vps rnp = insertObjPre (\\a => vps.c2 ++ rnp.s ! a) vps ; + -- : VP -> Adv + InOrderToVP vp = -- et raamatut paremini näha + { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; - -- : RNP - ReflPron = {s = reflPron} ; + -- : N2 -> VPSlash + N2VPSlash n2 = UseComp (CompCN (UseN2 n2)) ** {c2 = n2.c2} ; - ReflPoss num cn = {s = \\a => possPron ! a ++ num.s ! Nom ++ cn.s ! num.n ! Nom} ; - PredetRNP predet rnp = {s = \\a => predet.s ++ rnp.s ! a} ; + -- : VPSlash -> NP -> NP ; publishing of the document + -- NominalizeVPSlashNP vpslash np = {} ; - ConjRNP conj rpns = conjunctDistrTable Agr conj rpns ; - Base_rr_RNP x y = twoTable Agr x y ; - Base_nr_RNP x y = twoTable Agr {s = \\a => x.s ! NPAcc} y ; - Base_rn_RNP x y = twoTable Agr x {s = \\a => y.s ! NPAcc} ; - Cons_rr_RNP x xs = consrTable Agr comma x xs ; - Cons_nr_RNP x xs = consrTable Agr comma {s = \\a => x.s ! NPAcc} xs ; +--------------------------------- +-- P - ----- TODO: RNPList construction + lin - ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++ - infVP v.typ vp a.a p.p agr) - (predVV v) ; --} - -- : S -> Comp ; -- (the fact is) that she sleeps - CompS s = {s = \\_ => "et" ++ s.s} ; + -- : VPSlash -> NP -> VP ; -- be begged by her to go + PassAgentVPSlash vps np = let vp : VP = PassVPSlash vps in vp ** { + adv = vp.adv ++ np.s ! NPCase Gen ++ "poolt" ; + } ; - -- : QS -> Comp ; -- (the question is) who sleeps - CompQS qs = {s = \\_ => qs.s } ; - -- : Ant -> Pol -> VP -> Comp ; -- (she is) to go - CompVP ant pol vp = {s = \\a => infVPAnt ant.a (NPCase Nom) pol.p a vp InfDa } ; + -- : VPSlash -> VP ; -- be forced to sleep + PassVPSlash vps = vps ** { + s = \\vf => case vf of { + VIFin t => vps.s ! VIPass t ; + x => vps.s ! x } ; + sc = compl2subjcase vps.c2 + } ; --- English-specific - -- : Pol - UncontractedNeg = { s = [] ; p = Neg } ; + -- : VPSlash -> AP ; -- täna leitud + PastPartAP vp = { + s = \\_,_ => vp2adv vp True (VIPass Past) ; + infl = Invariable + } ; - -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa - UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; - --TODO: maybe InfMa should be default in PhraseEst and InfDa here? + -- : VP -> AP ; -- (the man) looking at Mary / filme vaatav (mees) + PresPartAP vp = { + s = \\_,_ => vp2adv vp True VIPresPart ; + infl = Invariable + } ; + + -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) + PastPartAgentAP vp np = { + s = \\_,_ => np.s ! NPCase Gen ++ "poolt" ++ vp2adv vp True (VIPass Past) ; + infl = Invariable + } ; + + PositAdVAdj = PositAdvAdj ; + + -- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida + PredAPVP ap vp = + let heaOllaVP : VP = insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp ; -- puts AP into the s2 field + heaOllaComp : Comp = CompVP ASimul PPos heaOllaVP ; -- chooses InfDa, fixes word order + heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P + in existClause noSubj (agrP3 Sg) heaOlla ; + + -- : IAdv -> VP -> QCl ; -- how to walk? + PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ vp2adv vp True (VIInf InfMa)} ; + + PrepCN prep cn = PrepNP prep (MassNP cn) ; + + ProDrop pron = pron ** {s = \\_ => []} ; + + ProgrVPSlash vps = ProgrVP vps ** vps ; + + PurposeVP = InOrderToVP ; --- is there a difference? + + oper + vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> + vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... + ++ vp.ext ; + +--------------------------------- +-- S - W + + lin + + -- SlashBareV2S v s = insertExtrapos s.s (predV v) ** v ; + + UseDAP, + UseDAPFem, + UseDAPMasc = DetNP ; + + UttAccIP ip = {s = ip.s ! NPAcc} ; + UttAccNP np = {s = np.s ! NPAcc} ; + UttAdV adv = adv ; + UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? + UttDatNP np = {s = np.s ! NPCase Part} ; + + -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa + UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; + --TODO: maybe InfMa should be default in PhraseEst and InfDa here? -} \ No newline at end of file + WithoutVP vp = -- ilma raamatut nägemata + { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; + + +} From 31c31b3e69107301a1f5f4394fd8eebb328e952a Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 10:42:34 +0800 Subject: [PATCH 046/141] (Est) Automatic whitespace removal in its own commit,rather than have whitespace changes in content commits --- src/estonian/AdjectiveEst.gf | 10 +- src/estonian/AllEst.gf | 2 +- src/estonian/AllEstAbs.gf | 2 +- src/estonian/CatEst.gf | 13 +- src/estonian/ConstructionEst.gf | 26 +-- src/estonian/DocumentationEst.gf | 2 +- src/estonian/DocumentationEstEng.gf | 2 +- src/estonian/DocumentationEstFunctor.gf | 84 ++++----- src/estonian/ExtraEst.gf | 120 ++++++------ src/estonian/ExtraEstAbs.gf | 2 +- src/estonian/GrammarEst.gf | 6 +- src/estonian/IdiomEst.gf | 20 +- src/estonian/LexiconEst.gf | 4 +- src/estonian/MakeStructuralEst.gf | 6 +- src/estonian/MorphoEst.gf | 118 ++++++------ src/estonian/NounEst.gf | 60 +++--- src/estonian/ParadigmsEst.gf | 220 +++++++++++----------- src/estonian/QuestionEst.gf | 42 ++--- src/estonian/RelativeEst.gf | 12 +- src/estonian/ResEst.gf | 236 ++++++++++++------------ src/estonian/SentenceEst.gf | 16 +- src/estonian/SymbolEst.gf | 2 +- src/estonian/TerminologyEst.gf | 10 +- src/estonian/VerbEst.gf | 62 +++---- 24 files changed, 539 insertions(+), 538 deletions(-) diff --git a/src/estonian/AdjectiveEst.gf b/src/estonian/AdjectiveEst.gf index 85f38ae32..5cf65d4e2 100644 --- a/src/estonian/AdjectiveEst.gf +++ b/src/estonian/AdjectiveEst.gf @@ -16,10 +16,10 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { } ; infl = Regular ; --a.infl } ; - + CAdvAP ad ap np = { s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPCase Nom ; - infl = ap.infl + infl = ap.infl } ; UseComparA a = { s = \\_,nf => a.s ! Compar ! AN nf ; @@ -34,14 +34,14 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { ComplA2 adj np = { - s = \\isMod,af => + s = \\isMod,af => preOrPost isMod (appCompl True Pos adj.c2 np) (adj.s ! Posit ! AN af) ; infl = adj.infl } ; ReflA2 adj = { - s = \\isMod,af => - preOrPost isMod + s = \\isMod,af => + preOrPost isMod (appCompl True Pos adj.c2 (reflPron (agrP3 Sg))) (adj.s ! Posit ! AN af) ; infl = adj.infl } ; diff --git a/src/estonian/AllEst.gf b/src/estonian/AllEst.gf index 90c718107..5be738ace 100644 --- a/src/estonian/AllEst.gf +++ b/src/estonian/AllEst.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common:../prelude:../api -concrete AllEst of AllEstAbs = +concrete AllEst of AllEstAbs = LangEst, -- - [SlashV2VNP,SlashVV, TFut], ---- to speed up linking; to remove spurious parses ExtendEst -- - [ProDrop, ProDropPoss, S_OSV, S_VSO, S_ASV] -- to exclude spurious parses ** diff --git a/src/estonian/AllEstAbs.gf b/src/estonian/AllEstAbs.gf index e66279150..b49593b2a 100644 --- a/src/estonian/AllEstAbs.gf +++ b/src/estonian/AllEstAbs.gf @@ -1,4 +1,4 @@ -abstract AllEstAbs = +abstract AllEstAbs = Lang, ExtraEstAbs ** {} ; diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 57b891d04..6207874fa 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -21,7 +21,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ; IP = {s : NPForm => Str ; n : Number} ; - IComp = {s : Agr => Str} ; + IComp = {s : Agr => Str} ; IDet = {s : Case => Str ; n : Number ; isNum : Bool} ; IQuant = {s : Number => Case => Str} ; @@ -33,17 +33,17 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Verb VP = ResEst.VP ; - VPSlash = ResEst.VP ** {c2 : Compl} ; - Comp = {s : Agr => Str} ; + VPSlash = ResEst.VP ** {c2 : Compl} ; + Comp = {s : Agr => Str} ; -- Adjective -- The $Bool$ in s tells whether usage is modifying (as opposed to -- predicative), e.g. "x on suurem kui y" vs. "y:st suurem arv". --- The $Infl$ in infl tells whether the adjective inflects as a +-- The $Infl$ in infl tells whether the adjective inflects as a -- modifier: e.g. "väsinud mehele" vs. "mees muutus väsinuks". - AP = {s : Bool => NForm => Str ; infl : Infl} ; + AP = {s : Bool => NForm => Str ; infl : Infl} ; -- Noun @@ -55,8 +55,9 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { sp : Case => Str ; -- se (substantival form) n : Number ; -- Pl (agreement feature for verb) isNum : Bool ; -- True (a numeral is present) - isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? + isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? } ; + ---- QuantSg, QuantPl = {s : Case => Str ; isDef : Bool} ; Ord = {s : NForm => Str} ; Predet = {s : Number => NPForm => Str} ; diff --git a/src/estonian/ConstructionEst.gf b/src/estonian/ConstructionEst.gf index ff11e900f..748407435 100644 --- a/src/estonian/ConstructionEst.gf +++ b/src/estonian/ConstructionEst.gf @@ -1,6 +1,6 @@ --# -path=alltenses:.:../abstract:../api:../common -concrete ConstructionEst of Construction = CatEst ** +concrete ConstructionEst of Construction = CatEst ** open SyntaxEst, SymbolicEst, ParadigmsEst, (L = LexiconEst), (E = ExtraEst), (R = ResEst), Prelude in { flags coding=utf8 ; @@ -12,7 +12,7 @@ lin ill_VP = mkVP (mkA "haige") ; ready_VP = mkVP (ParadigmsEst.mkA "valmis") ; - has_age_VP card = + has_age_VP card = let n_years_AdA : AdA = lin AdA (mkUtt (lin NP (mkNP L.year_N))) in mkVP (mkAP n_years_AdA L.old_A) ; @@ -25,7 +25,7 @@ lin -- some more things weather_adjCl ap = mkCl (mkVP (lin AP ap)) ; - + is_right_VP = mkVP have_V2 (lin NP (mkNP (ParadigmsEst.mkN "õigus"))) ; is_wrong_VP = mkVP (ParadigmsEst.mkV "eksima") ; @@ -37,7 +37,7 @@ lin where_go_QCl np = mkQCl (lin IAdv (ss "kuhu")) (mkCl np (mkVP L.go_V)) ; where_come_from_QCl np = mkQCl (lin IAdv (ss "kust")) (mkCl np (mkVP L.come_V)) ; - + go_here_VP = mkVP (mkVP L.go_V) (mkAdv "siia") ; come_here_VP = mkVP (mkVP L.come_V) (mkAdv "siia") ; come_from_here_VP = mkVP (mkVP L.come_V) (mkAdv "sealt") ; @@ -61,16 +61,16 @@ lin monthAdv m = SyntaxEst.mkAdv in_Prep (mkNP m) ; yearAdv y = SyntaxEst.mkAdv (prePrep nominative "aastal") y ; ----- dayMonthAdv d m = ParadigmsEst.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part) ; +---- dayMonthAdv d m = ParadigmsEst.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part) ; ---- monthYearAdv m y = SyntaxEst.mkAdv in_Prep (mkNP (mkNP m) (SyntaxEst.mkAdv (casePrep nominative) y)) ; ----- dayMonthYearAdv d m y = ----- lin Adv {s = d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part ++ y.s ! R.NPCase R.Nom} ; +---- dayMonthYearAdv d m y = +---- lin Adv {s = d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part ++ y.s ! R.NPCase R.Nom} ; intYear = symb ; intMonthday = symb ; oper - pointWeekday : Weekday -> Str = \w -> (SyntaxEst.mkAdv (casePrep essive) (mkNP w.noun)).s ; + pointWeekday : Weekday -> Str = \w -> (SyntaxEst.mkAdv (casePrep essive) (mkNP w.noun)).s ; lincat Language = N ; @@ -86,11 +86,11 @@ lin oper mkLanguage : Str -> N = \s -> mkN (s ++ "keel") ; -oper mkWeekday : Str -> Weekday = \d -> +oper mkWeekday : Str -> Weekday = \d -> lin Weekday { - noun = mkN d ; + noun = mkN d ; habitual = ParadigmsEst.mkAdv (d + "iti") ; --kolmapäeviti - } ; + } ; lin monday_Weekday = mkWeekday "esmaspäev" ; @@ -101,9 +101,9 @@ lin friday_Weekday = mkWeekday "reede" ; lin saturday_Weekday = mkWeekday "laupäev" ; lin sunday_Weekday = mkWeekday "pühapäev" ; -lin january_Month = mkN "jaanuar" ; +lin january_Month = mkN "jaanuar" ; lin february_Month = mkN "veebruar" ; -lin march_Month = mkN "märts" ; +lin march_Month = mkN "märts" ; lin april_Month = mkN "aprill" ; lin may_Month = mkN "mai" ; lin june_Month = mkN "juuni" ; diff --git a/src/estonian/DocumentationEst.gf b/src/estonian/DocumentationEst.gf index 6e6ae9090..c796ee94d 100644 --- a/src/estonian/DocumentationEst.gf +++ b/src/estonian/DocumentationEst.gf @@ -2,5 +2,5 @@ -- documentation of Estonian in Estonian: the default introduced in LangEst -concrete DocumentationEst of Documentation = CatEst ** +concrete DocumentationEst of Documentation = CatEst ** DocumentationEstFunctor with (Terminology = TerminologyEst) ; diff --git a/src/estonian/DocumentationEstEng.gf b/src/estonian/DocumentationEstEng.gf index e487fa1e5..07efbd0e6 100644 --- a/src/estonian/DocumentationEstEng.gf +++ b/src/estonian/DocumentationEstEng.gf @@ -2,5 +2,5 @@ -- documentation of Estonian in English -concrete DocumentationEstEng of Documentation = CatEst ** +concrete DocumentationEstEng of Documentation = CatEst ** DocumentationEstFunctor with (Terminology = TerminologyEng) ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index 4011c2c1f..a8e683430 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common -incomplete concrete DocumentationEstFunctor of Documentation = CatEst ** open +incomplete concrete DocumentationEstFunctor of Documentation = CatEst ** open Terminology, -- the interface ResEst, ParadigmsEst, @@ -30,17 +30,17 @@ lin s2 = inflNoun (\nf -> noun.s ! nf) } ; - InflectionA, InflectionA2 = \adj -> + InflectionA, InflectionA2 = \adj -> let posit : (AForm => Str) = adj.s ! Posit ; compar : (AForm => Str) = adj.s ! Compar ; superl : (AForm => Str) = adj.s ! Superl ; - in + in { t = "a" ; s1 = heading1 (heading adjective_Category) ; - s2 = inflNoun (\nf -> posit ! AN nf) ++ - heading2 (heading comparative_Parameter) ++ - inflNoun (\nf -> compar ! AN nf) ++ - heading2 (heading superlative_Parameter) ++ + s2 = inflNoun (\nf -> posit ! AN nf) ++ + heading2 (heading comparative_Parameter) ++ + inflNoun (\nf -> compar ! AN nf) ++ + heading2 (heading superlative_Parameter) ++ inflNoun (\nf -> superl ! AN nf) } ; @@ -58,91 +58,91 @@ lin InflectionV v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v)) ; s2 = inflVerb v } ; InflectionV2 v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ; s2 = inflVerb v } ; InflectionV3 v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ; s2 = inflVerb v } ; InflectionV2V v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (S.mkVP (L.sleep_V)))) ; s2 = inflVerb v } ; InflectionV2S v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin S (ss "...")))) ; s2 = inflVerb v } ; InflectionV2Q v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin QS (ss "...")))) ; s2 = inflVerb v } ; InflectionV2A v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP L.beautiful_A)) ; s2 = inflVerb v } ; InflectionVV v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ; s2 = inflVerb v } ; InflectionVS v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (lin S (ss "...")))) ; s2 = inflVerb v } ; InflectionVQ v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (lin QS (ss "...")))) ; s2 = inflVerb v } ; InflectionVA v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v L.beautiful_A)) ; s2 = inflVerb v } ; -oper +oper verbExample : CatEst.Cl -> Str = \cl -> (S.mkUtt cl).s ; {- -} --# notpresent inflVerb : CatEst.V -> Str = \verb -> - let + let --verb = sverb2verbSep verb0 ; vfin : ResEst.VForm -> Str = \f -> verb.s ! f ; - + nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 -> (S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP n2))).s ; in @@ -152,7 +152,7 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Presn Sg P1)) ++ td (vfin (Presn Pl P1)) ++ intagAttr "td" "rowspan=3" (vfin (PassPresn True)) --# notpresent ) ++ @@ -167,13 +167,13 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Impf Sg P1)) ++ td (vfin (Impf Pl P1)) ++ intagAttr "td" "rowspan=3" (vfin (PassImpf True))) ++ tr (th "2.p" ++ td (vfin (Impf Sg P2)) ++ td (vfin (Impf Pl P2))) ++ tr (th "3.p" ++ td (vfin (Impf Sg P3)) ++ td (vfin (Impf Pl P3))) ++ tr (th (heading negative_Parameter) ++ - td (vfin (PastPart Act)) ++ + td (vfin (PastPart Act)) ++ td (vfin (PastPart Pass)) ++ td (vfin (PassImpf False))) ) ++ @@ -183,12 +183,12 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Condit Sg P1)) ++ td (vfin (Condit Pl P1)) ++ intagAttr "td" "rowspan=3" "TODO pass condit (nt loetaks)" --# notpresent ) ++ tr (th "2.p" ++ td (vfin (Condit Sg P2)) ++ td (vfin (Condit Pl P2))) ++ - tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) + tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) ) ++ heading3 (nounNounHeading present_Parameter quotative_Parameter) ++ frameTable ( @@ -196,8 +196,8 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ - tr (th "isik." ++ td (vfin (Quotative Act)) + ) ++ + tr (th "isik." ++ td (vfin (Quotative Act)) ++ intagAttr "td" "rowspan=3" (vfin (Quotative Act)) --# notpresent ) ++ tr (th "umbis." ++ td (vfin (Quotative Pass)) ++ td (vfin (Quotative Pass)) @@ -208,11 +208,11 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td "" ++ td (vfin ImperP1Pl) ++ intagAttr "td" "rowspan=3" (vfin ImperPass)) ++ tr (th "2.p" ++ td (vfin (Imper Sg)) ++ td (vfin (Imper Pl))) ++ - tr (th "3.p" ++ td (vfin (ImperP3)) ++ td (vfin ImperP3)) + tr (th "3.p" ++ td (vfin (ImperP3)) ++ td (vfin ImperP3)) ) ++ heading2 (nounPluralHeading nominal_form_ParameterType).s ++ heading3 (heading infinitive_Parameter) ++ @@ -221,32 +221,32 @@ oper th (heading nominative_Parameter) ++ td (vfin (Inf InfDa))) ++ tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfDes))) ++ - tr (intagAttr "th" "rowspan=5" "ma" ++ + tr (intagAttr "th" "rowspan=5" "ma" ++ th (heading illative_Parameter) ++ td (vfin (Inf InfMa))) ++ tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfMas))) ++ tr (th (heading elative_Parameter) ++ td (vfin (Inf InfMast))) ++ - tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ + tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ tr (th (heading translative_Parameter) ++ td (vfin (Inf InfMaks))) - ) ++ + ) ++ heading3 (heading participle_Parameter) ++ frameTable ( - tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++ - th (heading active_Parameter) ++ + tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++ + th (heading active_Parameter) ++ td (vfin (PresPart Act))) ++ - tr (th (heading passive_Parameter) ++ + tr (th (heading passive_Parameter) ++ td (vfin (PresPart Pass))) ++ - tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ - th (heading active_Parameter) ++ + tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ + th (heading active_Parameter) ++ td (vfin (PastPart Act ))) ++ - tr (th (heading passive_Parameter) ++ + tr (th (heading passive_Parameter) ++ td (vfin (PastPart Pass ))) ) ; --} - inflNoun : (NForm -> Str) -> Str = \nouns -> - frameTable ( + inflNoun : (NForm -> Str) -> Str = \nouns -> + frameTable ( tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++ tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++ @@ -274,6 +274,6 @@ lin MkTag i = ss (i.t) ; {- --# notpresent --} +-} } diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index b9be4010a..16ba9ea76 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -1,4 +1,4 @@ -concrete ExtraEst of ExtraEstAbs = CatEst ** +concrete ExtraEst of ExtraEstAbs = CatEst ** open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX) in { flags coding=utf8; lin @@ -6,7 +6,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** s,sp = \\_,_ => np.s ! NPCase Gen ; isNum = False ; isDef = True ; --- "Jussin kolme autoa ovat" ; thus "...on" is missing - isNeg = False + isNeg = False } ; GenCN = caseCN Gen ; -- soome mees @@ -18,11 +18,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; GenRP num cn = { - s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; - a = RNoAg + s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; + a = RNoAg --- a = RAg (agrP3 num.n) } ; - oper + oper caseCN : Case -> NP -> CN -> CN = \c,np,cn -> lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; @@ -37,17 +37,17 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** MkVPI vp = {s = \\i => infVP (NPCase Nom) Pos (agrP3 Sg) vp i} ; ConjVPI = conjunctDistrTable InfForm ; - ComplVPIVV vv vpi = + ComplVPIVV vv vpi = insertObj (\\_,_,_ => vpi.s ! vv.vi) (predV vv) ; lincat VPS = { - s : Agr => Str ; + s : Agr => Str ; sc : NPForm ; --- can be different for diff parts } ; [VPS] = { - s1,s2 : Agr => Str ; + s1,s2 : Agr => Str ; sc : NPForm ; --- take the first: minä osaan kutoa ja täytyy virkata } ; @@ -79,45 +79,45 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PassAgentVPSlash vp np = vp ; {- - s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; + s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; s2 = \\b,p,a => np.s ! NPCase Nom ++ vp.s2 ! b ! p ! a ; adv = vp.adv ; ext = vp.ext ; vptyp = vp.vptyp ; } ; -} - AdvExistNP adv np = - mkClause (\_ -> adv.s) np.a (insertObj + AdvExistNP adv np = + mkClause (\_ -> adv.s) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; RelExistNP prep rp np = { - s = \\t,ant,bo,ag => - let + s = \\t,ant,bo,ag => + let n = complNumAgr ag ; - cl = mkClause + cl = mkClause (\_ -> appCompl True Pos prep (rp2np n rp)) - np.a - (insertObj - (\\_,b,_ => np.s ! NPCase Nom) + np.a + (insertObj + (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; - in + in cl.s ! t ! ant ! bo ! SDecl ; c = NPCase Nom } ; AdvPredNP adv v np = - mkClause (\_ -> adv.s) np.a (insertObj + mkClause (\_ -> adv.s) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV v)) ; - ICompExistNP adv np = - let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj + ICompExistNP adv np = + let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; IAdvPredNP iadv v np = - let cl = mkClause (\_ -> iadv.s) np.a (insertObj + let cl = mkClause (\_ -> iadv.s) np.a (insertObj (\\_,b,_ => np.s ! v.sc) (predV v)) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl @@ -132,14 +132,14 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** n = Sg } ; - PartCN cn = - let + PartCN cn = + let acn = DetCN (DetQuant IndefArt NumSg) cn in { s = table { NPCase Nom | NPAcc => acn.s ! NPCase ResEst.Part ; c => acn.s ! c - } ; + } ; a = acn.a ; isPron = False ; isNeg = False } ; @@ -147,34 +147,34 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** --The reflexive possessive "oma" --for "ta näeb oma koera" instead of *"tema koera" OmaPoss = {s,sp = \\_,_ => "oma" ; isDef,isNeg,isNum = False} ; - + ma_Pron = shortPronoun "ma" "mu" "mind" "minu" Sg P1 ; sa_Pron = shortPronoun "sa" "su" "sind" "sinu" Sg P2; ta_Pron = shortPronoun "ta" "ta" "teda" "tema" Sg P3 ; - me_Pron = + me_Pron = {s = table { NPCase Nom => "me" ; - n => (we_Pron.s) ! n + n => (we_Pron.s) ! n } ; - a = Ag Pl P1 } ; + a = Ag Pl P1 } ; - te_Pron = + te_Pron = {s = table { NPCase Nom => "te" ; - n => (youPl_Pron.s) ! n + n => (youPl_Pron.s) ! n } ; - a = Ag Pl P2 } ; + a = Ag Pl P2 } ; nad_Pron = {s = table { NPCase Nom => "nad" ; - n => (they_Pron.s) ! n + n => (they_Pron.s) ! n } ; - a = Ag Pl P3 } ; + a = Ag Pl P3 } ; ---- copied from VerbEst.CompAP, should be shared ICompAP ap = { - s = \\agr => + s = \\agr => let n = complNumAgr agr ; c = case n of { @@ -187,68 +187,68 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** IAdvAdv adv = {s = "kui" ++ adv.s} ; ProDrop p = { - s = table {NPCase (Nom | Gen) => [] ; c => p.s ! c} ; + s = table {NPCase (Nom | Gen) => [] ; c => p.s ! c} ; ---- drop Gen only works in adjectival position a = p.a } ; - -- : Pron -> Quant ; + -- : Pron -> Quant ; ProDropPoss p = { s = \\_,_ => "oma" ; sp = \\_,_ => p.s ! NPCase Gen ; isNum = False ; - isDef = True ; + isDef = True ; isNeg = False } ; - lincat + lincat ClPlus, ClPlusObj, ClPlusAdv = ClausePlus ; Part = {s : Str} ; - lin - S_SVO part t p clp = - let + lin + S_SVO part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; - S_OSV part t p clp = - let + S_OSV part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ; - S_VSO part t p clp = - let + {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ; + S_VSO part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s in - {s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; - S_ASV part t p clp = - let + {s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; + S_ASV part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s in - {s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ; - S_OVS part t p clp = - let + S_OVS part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.adv ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.adv ++ cl.ext} ; PredClPlus np vp = mkClausePlus (subjForm np vp.sc) np.a vp ; PredClPlusFocSubj np vp = insertKinClausePlus 0 (mkClausePlus (subjForm np vp.sc) np.a vp) ; PredClPlusFocVerb np vp = insertKinClausePlus 1 (mkClausePlus (subjForm np vp.sc) np.a vp) ; - PredClPlusObj np vps obj = + PredClPlusObj np vps obj = insertObjClausePlus 0 False (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ; - PredClPlusFocObj np vps obj = + PredClPlusFocObj np vps obj = insertObjClausePlus 0 True (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ; - PredClPlusAdv np vp adv = + PredClPlusAdv np vp adv = insertObjClausePlus 1 False (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ; - PredClPlusFocAdv np vp adv = + PredClPlusFocAdv np vp adv = insertObjClausePlus 1 True (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ; ClPlusWithObj c = c ; @@ -256,4 +256,4 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** gi_Part = ss "gi" | ss "ki" ; -} +} diff --git a/src/estonian/ExtraEstAbs.gf b/src/estonian/ExtraEstAbs.gf index 0e09f3d4a..326a960f4 100644 --- a/src/estonian/ExtraEstAbs.gf +++ b/src/estonian/ExtraEstAbs.gf @@ -33,7 +33,7 @@ abstract ExtraEstAbs = Extra [ me_Pron : Pron ; te_Pron : Pron ; nad_Pron : Pron ; - + OmaPoss : Quant ; -- Reflexive possessive "oma" ProDropPoss : Pron -> Quant ; -- vaimoni --TODO Is this relevant in Estonian? Is the agreement of pronoun ever needed, or is it the same as oma? diff --git a/src/estonian/GrammarEst.gf b/src/estonian/GrammarEst.gf index 93d2120c8..1daf4bd42 100644 --- a/src/estonian/GrammarEst.gf +++ b/src/estonian/GrammarEst.gf @@ -1,6 +1,6 @@ -concrete GrammarEst of Grammar = - NounEst, - VerbEst, +concrete GrammarEst of Grammar = + NounEst, + VerbEst, AdjectiveEst, AdverbEst, NumeralEst, diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index b7e50c81c..c4e3657a5 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -1,11 +1,11 @@ -concrete IdiomEst of Idiom = CatEst ** +concrete IdiomEst of Idiom = CatEst ** open MorphoEst, ParadigmsEst, Prelude in { flags optimize=all_subs ; coding=utf8; lin - ExistNP np = - let + ExistNP np = + let cas : Polarity -> NPForm = \p -> case p of { Pos => NPCase Nom ; -- on olemas lammas Neg => NPCase Part -- ei ole olemas lammast @@ -14,7 +14,7 @@ concrete IdiomEst of Idiom = CatEst ** in existClause noSubj (agrP3 Sg) vp ; - ExistIP ip = + ExistIP ip = let cas : NPForm = NPCase Nom ; ---- also partitive in Extra vp = insertObj (\\_,b,_ => "olemas") (predV olla) ; @@ -45,11 +45,11 @@ concrete IdiomEst of Idiom = CatEst ** adv = vp.adv ; p = vp.p ; ext = vp.ext ; - sc = vp.sc ; + sc = vp.sc ; } ; - ProgrVP vp = - let + ProgrVP vp = + let inf = (vp.s ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; on = predV olla in { @@ -58,16 +58,16 @@ concrete IdiomEst of Idiom = CatEst ** adv = vp.adv ; p = vp.p ; ext = vp.ext ; - sc = vp.sc ; + sc = vp.sc ; } ; -- This gives "otetaan oluet" instead of "ottakaamme oluet". -- The imperative is not available in a $VP$. - ImpPl1 vp = + ImpPl1 vp = let vps = vp.s ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 in - {s = vps.fin ++ vps.inf ++ + {s = vps.fin ++ vps.inf ++ vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.p ++ vp.ext } ; diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index fb7634579..ca2e1cb90 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -1,6 +1,6 @@ concrete LexiconEst of Lexicon = CatEst ** open MorphoEst, ParadigmsEst, Prelude in { -flags +flags optimize=values ; coding=utf8; @@ -216,7 +216,7 @@ lin yellow_A = mkA (mkN "kollane" "kollase" "kollast" "kollasesse" "kollaste" "kollaseid") ; young_A = mkA (mkN "noor" "noore" "noort") ; - do_V2 = mkV2 (mkV "tegema" "teha") ; + do_V2 = mkV2 (mkV "tegema" "teha") ; now_Adv = mkAdv "nüüd" ; already_Adv = mkAdv "juba" ; diff --git a/src/estonian/MakeStructuralEst.gf b/src/estonian/MakeStructuralEst.gf index 97614ef7b..0b17be122 100644 --- a/src/estonian/MakeStructuralEst.gf +++ b/src/estonian/MakeStructuralEst.gf @@ -1,9 +1,9 @@ resource MakeStructuralEst = open CatEst, ParadigmsEst, MorphoEst, Prelude in { -oper - mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> +oper + mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> + mkSubj : Str -> Subj = \x -> {s = x ; lock_Subj = <>} ; mkIQuant : Str -> IQuant = \s -> {s = \\n,c => s ; lock_IQuant = <>} ; ---- diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index dfd3af921..e7cc6e532 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -11,7 +11,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { flags optimize=all ; coding=utf8; oper - + ---------------------- -- morph. paradigms -- ---------------------- @@ -19,7 +19,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { --Noun paradigms in HjkEst --Comparative adjectives - --(could just use hjk_type_IVb_audit "suurem" "a") + --(could just use hjk_type_IVb_audit "suurem" "a") -- Comparative adjectives inflect in the same way -- TODO: confirm this dSuurempi : Str -> NForms = \suurem -> @@ -47,17 +47,17 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { saama (saa + "da") (saa + "b") - (saa + "dakse") + (saa + "dakse") (saa + "ge") -- Imper Pl sai - (saa + "nud") + (saa + "nud") (saa + "dud") ; -- TS 49 -- no d/t in da, takse ; imperfect 3sg ends in s cKaima : (_ : Str) -> VForms = \kaima -> let - kai = Predef.tk 2 kaima ; + kai = Predef.tk 2 kaima ; in vForms8 kaima (kai + "a") @@ -65,10 +65,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (kai + "akse") (kai + "ge") (kai + "s") - (kai + "nud") + (kai + "nud") (kai + "dud") ; - -- TS 49 + -- TS 49 -- vowel changes in da, takse, no d/t ; imperfect 3sg ends in i cJooma : (_ : Str) -> VForms = \jooma -> let @@ -78,7 +78,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { u = case o of { "o" => "u" ; "ö" => "ü" ; - _ => o + _ => o } ; q = case o of { ("o"|"ö") => "õ" ; @@ -91,9 +91,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { juua (joo + "b") (juua + "kse") - (joo + "ge") + (joo + "ge") j6i - (joo + "nud") + (joo + "nud") (joo + "dud") ; -- TS 50-52 (elama, muutuma, kirjutama), 53 (tegelema) alt forms @@ -105,10 +105,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { elama (ela + "da") (ela + "b") - (ela + "takse") + (ela + "takse") (ela + "ge") -- Imperative P1 Pl - (ela + "s") -- Imperfect P3 Sg - (ela + "nud") + (ela + "s") -- Imperfect P3 Sg + (ela + "nud") (ela + "tud") ; -- TS 53 (tegelema) @@ -121,12 +121,12 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { tegelema (tegel + "da") (tegele + "b") - (tegel + "dakse") + (tegel + "dakse") (tegel + "ge") -- Imperative P1 Pl - (tegele + "s") -- Imperfect P3 Sg - (tegel + "nud") - (tegel + "dud") ; - + (tegele + "s") -- Imperfect P3 Sg + (tegel + "nud") + (tegel + "dud") ; + -- TS 54 (tulema) -- consonant assimilation (l,r,n) in da, takse -- d in tud, g in ge @@ -146,7 +146,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (tul + "i") (tul + "nud") (tul + "dud") ; - + -- TS 55-56 (õppima, sündima) -- t in takse, tud ; consonant gradation on stem cLeppima : (_ : Str) -> VForms = \leppima -> @@ -154,7 +154,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { leppi = Predef.tk 2 leppima ; i = last leppi ; lepp = init leppi ; - lepi = (weaker lepp) + i + lepi = (weaker lepp) + i in vForms8 leppima (leppi + "da") @@ -164,7 +164,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (leppi + "s") -- Imperfect P3 Sg (leppi + "nud") (lepi + "tud") ; - + -- TS 57 (lugema) -- Like 55-56 but irregular gradation patterns, that shouldn't be in HjkEst.weaker --including also marssima,valssima @@ -184,7 +184,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { _ + ("uge"|"ude") => l + "oe" ; _ + #c + "ssi" => (init lug) + e; - _ => (weaker lug) + e + _ => (weaker lug) + e } ; in vForms8 lugema @@ -195,8 +195,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (luge + "s") -- Imperfect P3 Sg (luge + "nud") (loe + "tud") ; - - + + -- TS 58 muutma, saatma, -- like laskma (TS 62, 64), but no reduplication of stem consonant (muutma~muuta, not *muutta) -- like andma (TS 63) but different takse (muudetakse vs. antakse) @@ -213,8 +213,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (muut + "is") (muut + "nud") (muud + "etud") ; -- always e? - - -- TS 59-60 (petma~petetakse, jätma~jäetakse) + + -- TS 59-60 (petma~petetakse, jätma~jäetakse) -- takse given as second argument cPetma : (_,_ : Str) -> VForms = \petma,jaetakse -> let @@ -251,8 +251,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (jatt + "is") (jat + "nud") (ko + "etud") ; --} - +-} + -- TS 61 (laulma) --vowel (a/e) given with the second argument --veenma,naerma @@ -268,7 +268,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (kuul + "is") (kuul + "nud") (kuul + "dud") ; - + -- TS 62 (tõusma), 64 (mõksma) -- vowel (a/e) given with the second argument -- doesn't give alt. forms joosta, joostes @@ -283,9 +283,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (las + "takse") (las + "ke") (lask + "is") - (lask + "nud") + (lask + "nud") (las + "tud") ; - + -- TS 62 alt forms cJooksma : (_ : Str) -> VForms = \jooksma -> let @@ -298,10 +298,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (joos + "takse") (joos + "ke") (jooks + "is") - (jooks + "nud") + (jooks + "nud") (joos + "tud") ; - -- TS 63 (andma, murdma, hoidma) + -- TS 63 (andma, murdma, hoidma) -- vowel given in second arg (andma~annab; tundma~tunneb) cAndma : (_,_ : Str) -> VForms = \andma,annab -> let @@ -310,18 +310,18 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { ann = weaker and ; --murr, hoi te = case (last ann) of { --to prevent teadma~teaab "a" => init ann ; - _ => ann + _ => ann } ; in vForms8 andma (and + "a") - annab + annab (an + "takse") (and + "ke") (and + "is") (and + "nud") (an + "tud") ; - + -- TS 65 (pesema) -- a consonant stem verb in disguise cPesema : (_ : Str) -> VForms = \pesema -> @@ -356,9 +356,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (nag + "i") (nai + "nud") (nah + "tud") ; - - - -- TS 67-68 (hüppama, tõmbama) + + + -- TS 67-68 (hüppama, tõmbama) -- strong stem in ma, b, s -- weak stem in da, takse, ge, nud, tud -- t in da, takse; k in ge @@ -387,7 +387,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { omb = Predef.tk 2 omble ; omm = case omb of { "mõt" => "mõe" ; --some "double weak" patterns; however weaker (weaker omb) makes the coverage worse - _ => weaker omb + _ => weaker omb } ; ommel = omm + e + l ; in vForms8 @@ -445,22 +445,22 @@ These used to be here: aForms2A : AForms -> Adjective = \afs -> { s = table { Posit => table { - AN n => (nForms2N afs.posit).s ! n ; + AN n => (nForms2N afs.posit).s ! n ; AAdv => afs.adv_posit } ; Compar => table { - AN n => (nForms2N afs.compar).s ! n ; + AN n => (nForms2N afs.compar).s ! n ; AAdv => afs.adv_compar } ; Superl => table { - AN n => (nForms2N afs.superl).s ! n ; + AN n => (nForms2N afs.superl).s ! n ; AAdv => afs.adv_superl } } ; lock_A = <> } ; - nforms2aforms : NForms -> AForms = \nforms -> + nforms2aforms : NForms -> AForms = \nforms -> let suure = init (nforms ! 1) ; suur = Predef.tk 4 (nforms ! 8) ; @@ -477,7 +477,7 @@ These used to be here: These used to be here: VForms : Type = Predef.Ints 7 => Str ; - vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; + vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; regVForms : (x1,_,_,x4 : Str) -> VForms ; vforms2V : VForms -> Verb ; -} @@ -487,7 +487,7 @@ These used to be here: -- for Structural ----------------------- -caseTable : Number -> Noun -> Case => Str = \n,cn -> +caseTable : Number -> Noun -> Case => Str = \n,cn -> \\c => cn.s ! NCase n c ; mkDet : Number -> Noun -> { @@ -510,11 +510,11 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- TODO: remove NPAcc? -- I: keep NPAcc; see appCompl in ResEst, it takes care of finding a right case for various types of complements; incl. when pronouns get different treatment than nouns (PassVP). mkPronoun : (_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr} = + {s : NPForm => Str ; a : Agr} = \mina, minu, mind, n, p -> let { minu_short = ie_to_i minu - } in + } in {s = table { NPCase Nom => mina ; NPCase Gen => minu ; @@ -533,7 +533,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPAcc => mind } ; a = Ag n p - } ; + } ; -- meiesse/teiesse -> meisse/teisse ie_to_i : Str -> Str ; @@ -543,14 +543,14 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> _ => x } ; - shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr} = + shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> + {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> let shortMa = mkPronoun ma mu mind n p ; mulle : Str = case mu of { - "mu" => "mulle" ; + "mu" => "mulle" ; "su" => "sulle" ; - _ => shortMa.s ! NPCase Allat + _ => shortMa.s ! NPCase Allat } ; in shortMa ** { s = table { @@ -561,18 +561,18 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPCase Comit => minu + "ga" ; NPCase Termin => minu + "ni" ; x => shortMa.s ! x } } ; - + oper - relPron : NForm => Str = - let mis = nForms2N (nForms6 "mis" "mille" "mida" "millesse" "mille" "mida") - in fixPlNom "mis" mis.s ; + relPron : NForm => Str = + let mis = nForms2N (nForms6 "mis" "mille" "mida" "millesse" "mille" "mida") + in fixPlNom "mis" mis.s ; kesPron : NForm => Str = - let kes = nForms2N (nForms6 "kes" "kelle" "keda" "kellesse" "kelle" "keda") + let kes = nForms2N (nForms6 "kes" "kelle" "keda" "kellesse" "kelle" "keda") in fixPlNom "kes" kes.s ; ProperName = {s : Case => Str} ; @@ -613,7 +613,7 @@ oper Allat => "nendele" ; Abess => "nendeta" ; Comit => "nendega" ; - Termin => "nendeni" + Termin => "nendeni" } ; } ; diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index 2d873ab65..3b65059c1 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -7,15 +7,15 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in -- The $Number$ is subtle: "nuo autot", "nuo kolme autoa" are both plural -- for verb agreement, but the noun form is singular in the latter. - DetCN det cn = + DetCN det cn = let n : Number = case det.isNum of { True => Sg ; _ => det.n } ; ncase : NPForm -> Case * NForm = \c -> - let k = npform2case n c - in + let k = npform2case n c + in case of { <_, NPAcc, True,_> => ; -- kolm kassi (as object) <_, NPCase Nom, True,_> => ; -- kolm kassi (as subject) @@ -25,12 +25,12 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in <_, NPCase Abess, _, _> => ; -- kolme kassita <_, NPCase Ess, _, _> => ; -- kolme kassina <_, NPCase Termin,_, _> => ; -- kolme kassini - + <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } in { - s = \\c => let + s = \\c => let k = ncase c ; in det.s ! k.p1 ++ cn.s ! k.p2 ; @@ -42,7 +42,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isPron = False } ; - DetNP det = + DetNP det = let n : Number = case det.isNum of { True => Sg ; @@ -50,7 +50,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; in { s = \\c => let k = npform2case n c in - det.sp ! k ; + det.sp ! k ; a = agrP3 (case det.isDef of { False => Sg ; -- autoja menee; kolme autoa menee _ => det.n @@ -59,7 +59,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; UsePN pn = { - s = \\c => pn.s ! npform2case Sg c ; + s = \\c => pn.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; @@ -72,10 +72,10 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; PPartNP np v2 = - let + let num : Number = complNumAgr np.a ; part : Str = v2.s ! (PastPart Pass) ; - adj : NForms = hjk_type_IVb_maakas part ; + adj : NForms = hjk_type_IVb_maakas part ; partGen : Str = adj ! 1 ; partEss : Str = partGen + "na" in { @@ -91,8 +91,8 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; DetQuantOrd quant num ord = { - s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; n = num.n ; isNum = num.isNum ; isDef = quant.isDef @@ -135,19 +135,19 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in NumCard n = n ** {isNum = case n.n of {Sg => False ; _ => True}} ; -- üks raamat/kaks raamatut NumDigits numeral = { - s = \\n,c => numeral.s ! NCard (NCase n c) ; - n = numeral.n + s = \\n,c => numeral.s ! NCard (NCase n c) ; + n = numeral.n } ; OrdDigits numeral = {s = \\nc => numeral.s ! NOrd nc} ; NumNumeral numeral = { - s = \\n,c => numeral.s ! NCard (NCase n c) ; + s = \\n,c => numeral.s ! NCard (NCase n c) ; n = numeral.n } ; OrdNumeral numeral = {s = \\nc => numeral.s ! NOrd nc} ; AdNum adn num = { - s = \\n,c => adn.s ++ num.s ! n ! c ; + s = \\n,c => adn.s ++ num.s ! n ! c ; n = num.n } ; @@ -156,17 +156,17 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in OrdSuperl a = {s = \\nc => "kõige" ++ a.s ! Compar ! AN nc} ; DefArt = { - s = \\_,_ => [] ; - sp = table {Sg => pronSe.s ; Pl => pronNe.s} ; + s = \\_,_ => [] ; + sp = table {Sg => pronSe.s ; Pl => pronNe.s} ; isNum = False ; isDef = True -- autot ovat } ; IndefArt = { s = \\_,_ => [] ; --use isDef in DetCN - sp = \\n,c => - (nForms2N (nForms6 "üks" "ühe" "üht" "ühesse" "ühtede" - "ühtesid")).s ! NCase n c ; + sp = \\n,c => + (nForms2N (nForms6 "üks" "ühe" "üht" "ühesse" "ühtede" + "ühtesid")).s ! NCase n c ; isNum,isDef = False -- autoja on } ; @@ -176,7 +176,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in ncase : Case -> NForm = \c -> NCase n c ; in { s = \\c => let k = npform2case n c in - cn.s ! ncase k ; + cn.s ! ncase k ; a = agrP3 Sg ; isPron = False } ; @@ -209,21 +209,21 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in AdjCN ap cn = { - s = \\nf => + s = \\nf => case ap.infl of { - (Invariable|Participle) => ap.s ! True ! (NCase Sg Nom) ++ cn.s ! nf ; --valmis kassile; väsinud kassile - Regular => case nf of { - NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! (NCase num Gen) ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga + Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile + Regular => case nf of { + NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! NCase num Gen ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga _ => ap.s ! True ! nf ++ cn.s ! nf - } - } + } + } } ; RelCN cn rs = {s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf)} ; RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; + s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; + a = np.a ; isPron = np.isPron ---- correct ? } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 033dc3acf..5f74e4725 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -2,12 +2,12 @@ -- -- Based on the Finnish Lexical Paradigms by Aarne Ranta 2003--2008 -- --- This is an API to the user of the resource grammar +-- This is an API to the user of the resource grammar -- for adding lexical items. It gives functions for forming -- expressions of open categories: nouns, adjectives, verbs. --- +-- -- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API and $Structural.gf$. +-- accessed through the resource syntax API and $Structural.gf$. -- -- The main difference with $MorphoEst.gf$ is that the types -- referred to are compiled resource grammar types. We have moreover @@ -23,9 +23,9 @@ -- @author Kaarel Kaljurand -- @version 2013-10-21 -resource ParadigmsEst = open - (Predef=Predef), - Prelude, +resource ParadigmsEst = open + (Predef=Predef), + Prelude, MorphoEst, HjkEst, CatEst @@ -33,9 +33,9 @@ resource ParadigmsEst = open flags optimize=noexpand ; coding=utf8; ---2 Parameters +--2 Parameters -- --- To abstract over gender, number, and (some) case names, +-- To abstract over gender, number, and (some) case names, -- we define the following identifiers. The application programmer -- should always use these constants instead of the constructors -- defined in $ResEst$. @@ -83,15 +83,15 @@ oper --2 Conjunctions, adverbs - mkAdv : Str -> Adv ; - mkAdV : Str -> AdV ; - mkAdN : Str -> AdN ; - mkAdA : Str -> AdA ; + mkAdv : Str -> Adv ; + mkAdV : Str -> AdV ; + mkAdN : Str -> AdN ; + mkAdA : Str -> AdA ; mkConj : overload { mkConj : Str -> Conj ; -- just one word, default number Sg: e.g. "ja" mkConj : Str -> Number -> Conj ; --just one word + number: e.g. "ja" Pl - mkConj : Str -> Str -> Conj ; --two words, default number: e.g. "nii" "kui" + mkConj : Str -> Str -> Conj ; --two words, default number: e.g. "nii" "kui" mkConj : Str -> Str -> Number -> Conj ; --two words + number: e.g. "nii" "kui" Pl } ; @@ -139,7 +139,7 @@ oper -- Non-comparison one-place adjectives are just like nouns. -- The regular adjectives are based on $regN$ in the positive. --- Comparison adjectives have three forms. +-- Comparison adjectives have three forms. -- The comparative and the superlative -- are always inflected in the same way, so the nominative of them is actually -- enough (TODO: confirm). @@ -156,7 +156,7 @@ oper mkA2 : A -> Prep -> A2 -- e.g. "vihane" (postGenPrep "peale") = \a,p -> a ** {c2 = p ; lock_A2 = <>}; - invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. + invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. --2 Verbs -- @@ -237,8 +237,8 @@ oper mkV2V : V -> Prep -> V2V ; -- e.g. "käskima" adessive mkV2V : Str -> V2V ; -- e.g. "käskima" adessive } ; - mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "keelama" partitive infMast - + mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "keelama" partitive infMast + mkVA : overload { mkVA : V -> Prep -> VA ; -- e.g. "muutuma" translative mkVA : Str -> VA ; -- string, default case translative @@ -248,21 +248,21 @@ oper mkV2A : V -> Prep -> Prep -> V2A ; -- e.g. "värvima" genitive translative mkV2A : Str -> V2A ; -- string, default cases genitive and translative } ; - + mkVQ : overload { - mkVQ : V -> VQ ; - mkVQ : Str -> VQ ; + mkVQ : V -> VQ ; + mkVQ : Str -> VQ ; } ; - mkV2Q : V -> Prep -> V2Q ; -- e.g. "küsima" ablative + mkV2Q : V -> Prep -> V2Q ; -- e.g. "küsima" ablative mkAS : A -> AS ; --% mkA2S : A -> Prep -> A2S ; --% mkAV : A -> AV ; --% mkA2V : A -> Prep -> A2V ; --% --- Notice: categories $AS, A2S, AV, A2V$ are just $A$, +-- Notice: categories $AS, A2S, AV, A2V$ are just $A$, -- and the second argument is given --- as an adverb. Likewise +-- as an adverb. Likewise -- $V0$ is just $V$. V0 : Type ; --% @@ -290,13 +290,13 @@ oper translative = Transl ; terminative = Termin ; essive = Ess ; - abessive = Abess ; + abessive = Abess ; comitative = Comit ; - + infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; - prePrep : Case -> Str -> Prep = + prePrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; postPrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = False ; lock_Prep = <>} ; @@ -313,7 +313,7 @@ oper mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; - + mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; mkConj : Str -> Number -> Conj = \ja,num -> lin Conj ((sd2 "" ja) ** {n = num}) ; @@ -335,12 +335,12 @@ oper } ; -- Adjective forms (incl. comp and sup) are derived from noun forms - mk1A : Str -> A = \suur -> - let aforms = aForms2A (nforms2aforms (hjk_type suur)) + mk1A : Str -> A = \suur -> + let aforms = aForms2A (nforms2aforms (hjk_type suur)) in aforms ** {infl = Regular } ; - - mkNA : N -> A = \suur -> - let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; + + mkNA : N -> A = \suur -> + let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; in aforms ** {infl = Regular } ; @@ -348,28 +348,28 @@ oper -- mk2N, mk3N, mk4N make sure that the user specified forms end up in the paradigm, -- even though the rest is wrong - mk2N : (link,lingi : Str) -> N = \link,lingi -> - let nfs : NForms = (nForms2 link lingi) ; + mk2N : (link,lingi : Str) -> N = \link,lingi -> + let nfs : NForms = (nForms2 link lingi) ; nfs_fixed : NForms = table { 0 => link ; 1 => lingi ; 2 => nfs ! 2 ; 3 => nfs ! 3 ; 4 => nfs ! 4 ; - 5 => nfs ! 5 + 5 => nfs ! 5 } ; in nForms2N nfs_fixed ** {lock_N = <> } ; - mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> - let nfs : NForms = (nForms3 tukk tuku tukku) ; + mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> + let nfs : NForms = (nForms3 tukk tuku tukku) ; nfs_fixed : NForms = table { 0 => tukk ; 1 => tuku ; 2 => tukku ; 3 => nfs ! 3 ; 4 => nfs ! 4 ; - 5 => nfs ! 5 + 5 => nfs ! 5 } ; in nForms2N nfs_fixed ** {lock_N = <> } ; @@ -381,7 +381,7 @@ oper 1 => paadi ; 2 => paati ; 3 => nfs ! 3 ; - 4 => nfs ! 4 ; + 4 => nfs ! 4 ; 5 => paate } ; in nForms2N nfs_fixed ** {lock_N = <> } ; @@ -510,7 +510,7 @@ oper -- voolik/vooliku/voolikut <_ + #c, _ + #v, _ + #v + "t"> => hjk_type_IVb_audit tukk u ; - _ => nForms2 tukk tuku + _ => nForms2 tukk tuku } ; nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paate -> @@ -518,33 +518,33 @@ oper -- distinguish between joonis and segadus <_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ; <_ +("ne"|"s"), _+"se", _+"st", _+"si"> => hjk_type_Vb_oluline paat ; - + <_ +"ne", _+"se", _+"set", _+"seid"> => nForms3 paat paadi paati ; -- -ne adjectives ('algne') are not like 'tõuge' --distinguish between kõne and aine - <_ +"e", _+"e", _+"et", _+"sid"> => hjk_type_III_ratsu paat ; + <_ +"e", _+"e", _+"et", _+"sid"> => hjk_type_III_ratsu paat ; <_ +"e", _+"e", _+"et", _+"eid"> => hjk_type_VII_touge2 paat paadi ; - _ => nForms3 paat paadi paati + _ => nForms3 paat paadi paati } ; {- --Version that uses pl gen instead of pl part - nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide -> + nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide -> case of { -- pl gen can't distinguish between joonis and segadus -- <_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ; -- <_ +("ne"|"s"), _+"se", _+"st", _+"si"> => hjk_type_Vb_oluline paat ; - + --pl gen can distinguish between kõne and aine --plus side that any noun that is formed with 4-arg, - --the user given forms are inserted to the paradigm, + --the user given forms are inserted to the paradigm, --and more forms are created from pl gen, none from pl part - <_ +"e", _+"e", _+"et", _+"de"> => hjk_type_III_ratsu paat ; + <_ +"e", _+"e", _+"et", _+"de"> => hjk_type_III_ratsu paat ; <_ +"e", _+"e", _+"et", _+"te"> => hjk_type_VII_touge2 paat paadi ; - _ => nForms3 paat paadi paati - } ; + _ => nForms3 paat paadi paati + } ; -} mkN2 = overload { @@ -553,12 +553,12 @@ oper } ; mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ; - mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; + mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista lock_N3 = <> } ; - + mkIsPre : Prep -> Bool = \p -> case p.c of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) _ => True -- syyte Jussia vastaan, puhe Jussin puolesta @@ -588,7 +588,7 @@ oper mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ; -- auxiliaries - mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> + mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> {s = table { Posit => hea.s ; Compar => parem.s ; @@ -601,8 +601,8 @@ oper -- Adjectives whose comparison forms are explicitly given. -- The inflection of these forms with the audit-rule always works. regAdjective : Noun -> Str -> Str -> A = \posit,compar,superl -> - mkAdjective - (noun2adj posit) + mkAdjective + (noun2adj posit) (noun2adjComp False (nForms2N (hjk_type_IVb_audit compar "a"))) (noun2adjComp False (nForms2N (hjk_type_IVb_audit superl "a"))) ; @@ -637,31 +637,31 @@ oper mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs } ; - mk1V : Str -> V = \s -> - let vfs = vforms2V (vForms1 s) in + mk1V : Str -> V = \s -> + let vfs = vforms2V (vForms1 s) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk2V : (_,_ : Str) -> V = \x,y -> - let - vfs = vforms2V (vForms2 x y) + mk2V : (_,_ : Str) -> V = \x,y -> + let + vfs = vforms2V (vForms2 x y) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk3V : (_,_,_ : Str) -> V = \x,y,z -> - let - vfs = vforms2V (vForms3 x y z) + mk3V : (_,_,_ : Str) -> V = \x,y,z -> + let + vfs = vforms2V (vForms3 x y z) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> - let + mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> + let vfs = vforms2V (vForms4 a b c d) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> + mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> let vfs = vforms2V (vForms8 a b c d e f g h) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> {s = saama.s ; p = aru ; sc = saama.sc ; lock_V = <> } ; - - - -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) - -- regexp example: ("" | ?) + ("a" | "e" | "i") + _ + "aa" => + + + -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) + -- regexp example: ("" | ?) + ("a" | "e" | "i") + _ + "aa" => vForms1 : Str -> VForms = \lugema -> let luge = Predef.tk 2 lugema ; @@ -672,7 +672,7 @@ oper -- Small class of CVVma ? + ("ä"|"õ"|"i") + "ima" => cKaima lugema ; --käima,viima,võima - ? + ("aa"|"ee"|"ää") + "ma" => + ? + ("aa"|"ee"|"ää") + "ma" => cSaama lugema ; -- saama,jääma,keema ? + ("oo"|"öö"|"üü") + "ma" => cJooma lugema ; --jooma,looma,lööma,müüma,pooma,sööma,tooma @@ -680,30 +680,30 @@ oper -- TS 53 _ + #c + #v + "elema" => cTegelema lugema ; --not aelema - + -- TS 54 -- Small class, just list all members ("tule"|"sure"|"pane") + "ma" => cTulema lugema ; - + -- TS 55-57 -- Consonant gradation -- Regular (55-56)'leppima' and irregular (57) 'lugema' -- For reliable results regarding consonant gradation, use mk3V _ + "ndima" => cLeppima lugema ; - _ + #lmnr + ("k"|"p"|"t"|"b") + ("ima"|"uma") => + _ + #lmnr + ("k"|"p"|"t"|"b") + ("ima"|"uma") => cLeppima lugema ; - _ + ("sk"|"ps"|"ks"|"ts"|"pl") + ("ima") => --|"uma") => + _ + ("sk"|"ps"|"ks"|"ts"|"pl") + ("ima") => --|"uma") => cLeppima lugema ; - _ + ("hk"|"hm"|"hn"|"hr"|"ht") + ("ima") => --most *hCuma are TS 51 (muutuma) + _ + ("hk"|"hm"|"hn"|"hr"|"ht") + ("ima") => --most *hCuma are TS 51 (muutuma) cLeppima lugema ; _ + #c + "ssima" => --weaker *ss = *ss; should be weaker Css = Cs cLugema lugema ; - _ + ("pp"|"kk"|"tt"|"ss"|"ff"|"nn"|"mm"|"ll"|"rr") + ("ima"|"uma") => + _ + ("pp"|"kk"|"tt"|"ss"|"ff"|"nn"|"mm"|"ll"|"rr") + ("ima"|"uma") => cLeppima lugema ; - - -- TS 59 (petma, tapma) + + -- TS 59 (petma, tapma) -- Use mk4V for TS 60 (jätma, võtma) ? + #v + ("tma"|"pma") => cPetma lugema (luge + "etakse") ; @@ -714,31 +714,31 @@ oper -- TS 61 (laulma,kuulma,naerma,möönma) -- Default vowel e for lma, a for (r|n)ma. -- Other vowel with mk3V. - _ + "lma" => - cKuulma lugema (loe + "eb") ; + _ + "lma" => + cKuulma lugema (loe + "eb") ; _ + ("r"|"n") + "ma" => cKuulma lugema (loe + "ab") ; - + -- TS 63 (andma,hoidma) -- Other vowel than a (tundma~tunneb) with mk3V _ + "dma" => cAndma lugema (loe + "ab") ; - + -- TS 62, 64 (tõusma,mõskma), default vowel e -- 62 alt form (jooksma,joosta) with mk2V -- Other vowel than e with mk3V - _ + #c + "ma" => + _ + #c + "ma" => cLaskma lugema (loe + "eb") ; - + -- TS 65 (pesema) #c + #v + "sema" => cPesema lugema ; - + -- TS 66 (nägema) -- Small class, just list all members ("nägema"|"tegema") => cNagema lugema ; - + -- TS 67-68 with mk2V -- no 100% way to distinguish from 50-52 that end in ama @@ -754,7 +754,7 @@ oper -- Default case _ => cElama lugema - } ; + } ; vForms2 : (_,_ : Str) -> VForms = \petma,petta -> -- Arguments: ma infinitive, da infinitive @@ -781,22 +781,22 @@ oper -- * Non-detectable gradation (sattuma~satub ; pettuma~pettub) -- * Non-default vowel in b for TS 58-64 (laulma~laulab) case of { - + --to be sure about vowel in b <_ + "dma", _ + "da", _> => cAndma taguma taob ; <_, _ + #vv + #lmnr + "da", _> => cKuulma taguma taob ; - <_, _ + #c + "ta", _> => cLaskma taguma taob ; + <_, _ + #c + "ta", _> => cLaskma taguma taob ; --irregular gradation <_, _, (""|#c) + #c + #v + #v + "b"> => cLugema taguma ; --57 --to be sure about consonant gradation <_ + #c + "lema", _, _> => vForms2 taguma taguda ; --catch "-Clema" first - <_ + #v + "ma", _+"da", _> => cSattumaPettuma taguma taob ; + <_ + #v + "ma", _+"da", _> => cSattumaPettuma taguma taob ; - <_,_,_> => vForms2 taguma taguda + <_,_,_> => vForms2 taguma taguda } ; - + vForms4 : (x1,_,_,x4 : Str) -> VForms = \jatma,jatta,jatab,jaetakse -> -- 4 forms needed to get full paradigm for regular verbs -- (source: http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=227) @@ -804,7 +804,7 @@ oper -- Filter out known irregularities and give rest to regVForms. -- Not trying to match TS 49 ; can't separate käima (49) from täima (50), or detect compounds like taaslooma. case of { - <_, _+("kka"|"ppa"|"tta"), + <_, _+("kka"|"ppa"|"tta"), _, _+"takse"> => cPetma jatma jaetakse ; <_ + "dma", _, _, _+"takse"> => cAndma jatma jatab ; @@ -813,15 +813,15 @@ oper <_, _ + "ha", _, _> => cNagema jatma ; <_ + #v + "sema", _ + "sta", _, _> => cPesema jatma ; <_,_,_,_> => regVForms jatma jatta jatab jaetakse - } ; - + } ; + caseV c v = {s = v.s ; p = v.p; sc = NPCase c ; lock_V = <>} ; vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ; - caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; + caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; dirV2 v = mk2V2 v accPrep ; @@ -837,13 +837,13 @@ oper dirV2 : V -> V2 ; mkV3 = overload { - mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; - mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; + mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; + mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; + c3 = (casePrep allative) ; + lock_V3 = <>} ; + mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; + c3 = (casePrep allative) ; + lock_V3 = <>} ; } ; dirV3 v p = mkV3 v accPrep (casePrep p) ; dirdirV3 v = dirV3 v allative ; @@ -855,7 +855,7 @@ oper mkVV = overload { mkVV : V -> VV = \v -> mkVVf v infDa ; mkVV : Str -> VV = \str -> mkVVf (mkV str) infDa ; - } ; + } ; mkVVf v f = v ** {vi = f ; lock_VV = <>} ; mkVQ = overload { mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; @@ -876,7 +876,7 @@ oper mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ; mkV2V : V -> V2V = \v -> mkV2Vf v (casePrep genitive) infMa ; mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ; - } ; + } ; mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ; mkVA = overload { @@ -885,13 +885,13 @@ oper mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ; } ; - mkV2A = overload { + mkV2A = overload { mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ; - mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; - c3 = casePrep translative ; + mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; + c3 = casePrep translative ; lock_V2A = <>} ; - mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; - c3 = casePrep translative ; + mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; + c3 = casePrep translative ; lock_V2A = <>} ; } ; diff --git a/src/estonian/QuestionEst.gf b/src/estonian/QuestionEst.gf index 2d0ecdbfd..58a69f6b7 100644 --- a/src/estonian/QuestionEst.gf +++ b/src/estonian/QuestionEst.gf @@ -8,16 +8,16 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { s = \\t,a,p => cl.s ! t ! a ! p ! SQuest } ; - QuestVP ip vp = - let + QuestVP ip vp = + let cl = mkClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) vp.sc) (agrP3 ip.n) vp in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; QuestSlash ip slash = { - s = \\t,a,p => - let + s = \\t,a,p => + let cls = slash.s ! t ! a ! p ; who = appCompl True p slash.c2 (ip ** {a = agrP3 ip.n ; isPron = False}) in @@ -29,15 +29,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { } ; QuestIComp icomp np = { - s = \\t,a,p => - let + s = \\t,a,p => + let vp = predV (verbOlema ** {sc = NPCase Nom}) ; cl = mkClause (subjForm np vp.sc) np.a vp ; in icomp.s ! np.a ++ cl.s ! t ! a ! p ! SDecl } ; - PrepIP p ip = {s = + PrepIP p ip = {s = appCompl True Pos p (ip ** {a = agrP3 ip.n ; isPron = False})} ; AdvIP ip adv = { @@ -46,15 +46,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { } ; -- The computation of $ncase$ is a special case of that in $NounEst.DetCN$, --- since we don't have possessive suffixes or definiteness. +-- since we don't have possessive suffixes or definiteness. --- It could still be nice to have a common oper... IdetCN idet cn = let n = idet.n in { - s = \\c => - let + s = \\c => + let k : Case = npform2case n c ; icase : Case = Nom ; --case k of { --mis kassiga - -- (Ess|Abess|Comit|Termin) => Gen ; + -- (Ess|Abess|Comit|Termin) => Gen ; -- _ => k -- } ; ncase : NForm = case of { @@ -63,33 +63,33 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { _ => NCase n k -- mitkä kytkimet } in - idet.s ! icase ++ cn.s ! ncase ; + idet.s ! icase ++ cn.s ! ncase ; n = n } ; IdetIP idet = let n = idet.n in { - s = \\c => - let + s = \\c => + let k = npform2case n c ; in - idet.s ! k ; + idet.s ! k ; n = n } ; - IdetQuant idet num = - let + IdetQuant idet num = + let n = num.n ; - isn = num.isNum + isn = num.isNum in { - s = \\k => - let + s = \\k => + let ncase = case of { => NCase Sg Part ; -- mitkä kolme kytkintä <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi _ => NCase n k -- mitkä kytkimet } in - idet.s ! n ! k ++ num.s ! Sg ! k ; + idet.s ! n ! k ++ num.s ! Sg ! k ; n = n ; isNum = isn } ; diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 705d77a86..4f90bb254 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -11,14 +11,14 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; RelVP rp vp = { - s = \\t,ant,b,ag => - let + s = \\t,ant,b,ag => + let agr = case rp.a of { RNoAg => ag ; RAg a => a } ; - cl = mkClause - (subjForm {s = rp.s ! (complNumAgr agr) ; + cl = mkClause + (subjForm {s = rp.s ! (complNumAgr agr) ; a = agr ; isPron = False} vp.sc) agr vp in cl.s ! t ! ant ! b ! SDecl ; @@ -26,8 +26,8 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; RelSlash rp slash = { - s = \\t,a,p,ag => - let + s = \\t,a,p,ag => + let cls = slash.s ! t ! a ! p ; who = appCompl True p slash.c2 (rp2np (complNumAgr ag) rp) in diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 0b72ab543..1e123dd48 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -15,11 +15,11 @@ resource ResEst = ParamX ** open Prelude in { -- This is the $Case$ as needed for both nouns and $NP$s. param - Case = Nom | Gen | Part - | Illat | Iness | Elat | Allat | Adess | Ablat + Case = Nom | Gen | Part + | Illat | Iness | Elat | Allat | Adess | Ablat | Transl | Ess | Termin | Abess | Comit; - NForm = NCase Number Case ; + NForm = NCase Number Case ; -- Agreement of $NP$ has number*person and the polite second ("te olette valmis"). @@ -56,13 +56,13 @@ oper --2 Noun phrases -- --- Two forms of *virtual accusative* are needed for nouns in singular, --- the nominative and the genitive one ("loen raamatu"/"loe raamat"). --- For nouns in plural, only a nominative accusative exists in positive clauses. +-- Two forms of *virtual accusative* are needed for nouns in singular, +-- the nominative and the genitive one ("loen raamatu"/"loe raamat"). +-- For nouns in plural, only a nominative accusative exists in positive clauses. -- Pronouns use the partitive as their accusative form ("mind", "sind"), in both -- positive and negative, indicative and imperative clauses. -param +param NPForm = NPCase Case | NPAcc ; oper @@ -80,14 +80,14 @@ oper -- A special form is needed for the negated plural imperative. param - VForm = + VForm = Inf InfForm | Presn Number Person | Impf Number Person | Condit Number Person | ConditPass --loetagu | Imper Number - | ImperP3 + | ImperP3 | ImperP1Pl | ImperPass | PassPresn Bool @@ -98,11 +98,11 @@ param ; Voice = Act | Pass ; - + InfForm = InfDa -- lugeda - | InfDes -- lugedes - | InfMa -- lugema + | InfDes -- lugedes + | InfMa -- lugema | InfMas -- lugemas | InfMast -- lugemast | InfMata -- lugemata @@ -112,7 +112,7 @@ param SType = SDecl | SQuest | SInv ; --2 For $Relative$ - + RAgr = RNoAg | RAg Agr ; --2 For $Numeral$ @@ -122,14 +122,14 @@ param --2 Transformations between parameter types oper - agrP3 : Number -> Agr = \n -> + agrP3 : Number -> Agr = \n -> Ag n P3 ; conjAgr : Agr -> Agr -> Agr = \a,b -> case of { => Ag (conjNumber n m) (conjPerson p q) ; => Ag Pl (conjPerson p P2) ; => Ag Pl (conjPerson p P2) ; - _ => b + _ => b } ; --- @@ -178,33 +178,33 @@ param param VIForm = - VIFin Tense + VIFin Tense | VIInf InfForm | VIPass Tense - | VIPresPart - | VIImper - ; + | VIPresPart + | VIImper + ; oper VP : Type = { - s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; + s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut adv : Str ; p : Str ; --uninflecting component in multi-word verbs ext : Str ; sc : NPForm ; } ; - + predV : (Verb ** {sc : NPForm}) -> VP = \verb -> { - s = \\vi,ant,b,agr0 => + s = \\vi,ant,b,agr0 => let agr = verbAgr agr0 ; verbs = verb.s ; part : Str = case vi of { - VIPass _ => verbs ! (PastPart Pass) ; + VIPass _ => verbs ! (PastPart Pass) ; _ => verbs ! (PastPart Act) - } ; - + } ; + einegole : Str * Str * Str = case of { => <"ei", verbs ! Imper Sg, "ole"> ; => <"ei", verbs ! Imper Sg, "ole"> ; @@ -217,23 +217,23 @@ oper => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent - => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> + => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> } ; - + ei : Str = einegole.p1 ; neg : Str = einegole.p2 ; ole : Str = einegole.p3 ; - + olema : VForm => Str = verbOlema.s ; - + vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; - + mkvf : VForm -> {fin, inf : Str} = \p -> case of { => vf (verbs ! p) [] ; - => vf (olema ! p) part ; + => vf (olema ! p) part ; => vf (ei ++ neg) [] ; - => vf (ei ++ ole) part + => vf (ei ++ ole) part } ; passPol = case b of {Pos => True ; Neg => False} ; @@ -256,19 +256,19 @@ oper adv = [] ; ext = [] ; --relative clause p = verb.p ; --particle verbs - sc = verb.sc + sc = verb.sc } ; - insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> + insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> vp ** { s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a } ; - insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> + insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> vp ** { s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a } ; - insertAdv : Str -> VP -> VP = \adv,vp -> + insertAdv : Str -> VP -> VP = \adv,vp -> vp ** { adv = vp.adv ++ adv } ; - insertExtrapos : Str -> VP -> VP = \obj,vp -> + insertExtrapos : Str -> VP -> VP = \obj,vp -> vp ** { ext = vp.ext ++ obj } ; -- For $Sentence$. @@ -286,12 +286,12 @@ oper -- declarative sentence with the yes/no-queryword "kas". -- SQuest: "kas" + SDecl -- It would be also correct to use the Finnish structure, just without the ko-particle. - -- Inari: added a third SType, SInv. + -- Inari: added a third SType, SInv. -- Not sure if SInv is needed, but keeping it for possible future use. -- There's need for an inverted word order with auxiliary verbs; infVP handles that. ComplVV calls infVP, which inverts the word order for the complement VP, and puts it into the resulting VP's `compl' field. -- SInv made by mkClause would be for cases where you just need to construct an inverted word order, and then call it from some other place; application grammar (TODO: api oper for SType) or ExtraEst. - mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> - { s = \\t,a,b => + mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> + { s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b ; -- saan sinust aru 0 @@ -300,51 +300,51 @@ oper -- [sind näha] 0 tahtnud -- täna olen ma sinust aru saanud invCl = c.adv ++ c.fin ++ c.subj ++ c.compl ++ c.p ++ c.inf ++ c.ext - in + in table { SDecl => declCl ; SQuest => "kas" ++ declCl ; - SInv => invCl + SInv => invCl } } ; - existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> - { s = \\t,a,b => + existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> + { s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b ; -- (mis) on olnud olemas (lammas) declCl = c.subj ++ c.fin ++ c.inf ++ c.compl ; - in + in table { SQuest => "kas" ++ declCl ; - _ => declCl + _ => declCl } } ; mkClausePlus : (Polarity -> Str) -> Agr -> VP -> ClausePlus = \sub,agr,vp -> { - s = \\t,a,b => - let + s = \\t,a,b => + let agrfin = case vp.sc of { NPCase Nom => ; _ => -- minule meeldib, minul on } ; verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ; - in {subj = sub b ; - fin = verb.fin ; - inf = verb.inf ; + in {subj = sub b ; + fin = verb.fin ; + inf = verb.inf ; compl = vp.s2 ! agrfin.p2 ! b ! agr ; p = vp.p ; - adv = vp.adv ; - ext = vp.ext ; + adv = vp.adv ; + ext = vp.ext ; } } ; - insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { + insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { s = \\t,a,b => - let - c = cl.s ! t ! a ! b + let + c = cl.s ! t ! a ! b in case p of { 0 => {subj = c.subj ++ gi ; fin = c.fin ; inf = c.inf ; -- Jussikin nukkuu @@ -354,37 +354,37 @@ oper } } ; - insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus = - \p,ifKin,obj,cl -> { + insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus = + \p,ifKin,obj,cl -> { s = \\t,a,b => - let + let c = cl.s ! t ! a ! b ; co = obj ! b ++ if_then_Str ifKin (kin b) [] ; in case p of { - 0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; + 0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; compl = co ; p = c.p ; adv = c.compl ++ c.adv ; ext = c.ext ; h = c.h} ; -- Jussi juo maitoakin - 1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; + 1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; compl = c.compl ; p = c.p ; adv = co ; ext = c.adv ++ c.ext ; h = c.h} -- Jussi nukkuu nytkin } } ; - kin : Polarity -> Str = + kin : Polarity -> Str = \p -> case p of {Pos => "gi" ; Neg => "gi"} ; - - --allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi" + + --allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi" --waiting for post construction in GF :P gi : Str = "gi" ; -- This is used for subjects of passives: therefore isFin in False. - subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> + subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVPAnt Simul ; infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = \ant,sc,pol,agr,vp,vi -> - let + let fin = case sc of { -- subject case NPCase Nom => True ; -- mina tahan joosta _ => False -- minul peab auto olema @@ -399,12 +399,12 @@ oper --TODO adv placement? --TODO inf ++ fin or fin ++ inf? does it ever become a case here? --- The definitions below were moved here from $MorphoEst$ so that +-- The definitions below were moved here from $MorphoEst$ so that -- auxiliary of predication can be defined. - verbOlema : Verb = + verbOlema : Verb = let olema = mkVerb - "olema" "olla" "olen" "ollakse" + "olema" "olla" "olen" "ollakse" "olge" "oli" "olnud" "oldud" in {s = table { Presn _ P3 => "on" ; @@ -413,9 +413,9 @@ oper p = [] } ; - verbMinema : Verb = - let minema = mkVerb - "minema" "minna" "läheb" "minnakse" + verbMinema : Verb = + let minema = mkVerb + "minema" "minna" "läheb" "minnakse" "minge" "läks" "läinud" "mindud" in {s = table { Impf Sg P1 => "läksin" ; @@ -428,20 +428,20 @@ oper } ; p = [] } ; - + --3 Verbs --Auxiliary for internal use - mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = - \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> - vforms2V (vForms8 + mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = + \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> + vforms2V (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud ) ; --below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; - + vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms = \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> table { @@ -455,34 +455,34 @@ oper 7 => tuldud } ; - vforms2V : VForms -> Verb = \vh -> + vforms2V : VForms -> Verb = \vh -> let - tulema = vh ! 0 ; - tulla = vh ! 1 ; - tuleb = vh ! 2 ; - tullakse = vh ! 3 ; --juuakse; loetakse - tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege) + tulema = vh ! 0 ; + tulla = vh ! 1 ; + tuleb = vh ! 2 ; + tullakse = vh ! 3 ; --juuakse; loetakse + tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege) tuli = vh ! 5 ; --necessary for jooma-juua-jõi tulnud = vh ! 6 ; tuldud = vh ! 7 ; --necessary for t/d in tuldi; loeti - + tull_ = init tulla ; --juu(a); saad(a); tull(a); tulles = tull_ + "es" ; --juues; saades; tulles; - + tule_ = init tuleb ; - + lask_ = Predef.tk 2 tulema ; laulev = case (last lask_) of { --sooma~soov ; laulma~laulev ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") => lask_ + "v" ; _ => lask_ + "ev" } ; --consonant stem in -ma, add e - + --imperfect stem kaisi_ = case (Predef.dp 3 tuli) of { "sis" => lask_ + "i" ; --tõusin, tõusis _ + "i" => tuli ; --jõin, jõi _ => lask_ + "si" --käisin, käis; muutsin, muutis - }; - + }; + tuld_ = Predef.tk 2 tuldud ; --d/t choice for tuldi etc. tulgu = (init tulge) + "u" ; in @@ -510,13 +510,13 @@ oper ConditPass => tuld_ + "aks" ; --# notpresent Imper Sg => tule_ ; -- tule / ära tule Imper Pl => tulge ; -- tulge / ärge tulge - ImperP3 => tulgu ; -- tulgu (ta/nad) + ImperP3 => tulgu ; -- tulgu (ta/nad) ImperP1Pl => tulge + "m" ; -- tulgem ImperPass => tuld_ + "agu" ; --tuldagu PassPresn True => tullakse ; PassPresn False => tuld_ + "a" ; --da or ta PassImpf True => tuld_ + "i" ; --di or ti - PassImpf False => tuldud ; + PassImpf False => tuldud ; Quotative Act => lask_ + "vat" ; Quotative Pass => tuld_ + "avat" ; --d or t PresPart Act => laulev ; @@ -527,10 +527,10 @@ oper Inf InfMas => tulema + "s" ; Inf InfMast => tulema + "st" ; Inf InfMata => tulema + "ta" ; - Inf InfMaks => tulema + "ks" + Inf InfMaks => tulema + "ks" } ; sc = NPCase Nom ; - p = [] + p = [] } ; -- For regular verbs, paradigm from 4 base forms @@ -547,12 +547,12 @@ oper "t" => "k" ; _ => "g" } ; - toit_ = case (last vestle_) of { + toit_ = case (last vestle_) of { ("t"|"d") => vesteld_ ; --toit(ma) -> toitke; _ => vestel_ --vestle(ma) -> vestelge } ; - laski_ = case (last vestle_) of { - ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") + laski_ = case (last vestle_) of { + ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") => vestle_ ; --vestle(ma) -> vestles _ => vestle_ + "i" --lask(ma) -> laskis } ; @@ -566,7 +566,7 @@ oper (laski_ + "s") --ma: kindla kõneviisi lihtmineviku pöörded; (toit_ + "nud") --da: isikulise tegumoe mineviku kesksõna (jaet_ + "ud"); --takse: ülejäänud umbisikulise tgm vormid - + regVerb : (_,_,_,_ : Str) -> Verb = \kinkima,kinkida,kingib,kingitakse -> vforms2V (regVForms kinkima kinkida kingib kingitakse) ; @@ -580,8 +580,8 @@ oper -- parem -> paremini -- parim -> kõige paremini | parimalt? noun2adjComp : Bool -> Noun -> Adj = \isPos,tuore -> - let - tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ; + let + tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ; tuoreemmin = Predef.tk 2 (tuore.s ! NCase Sg Gen) + "in" in {s = table { AN f => tuore.s ! f ; @@ -602,21 +602,21 @@ oper compAP = icompAP [] ; icompAP : Str -> {s : Bool => NForm => Str} -> {s : Agr => Str} = \kui,ap -> - { s = \\agr => - let n = complNumAgr agr ; + { s = \\agr => + let n = complNumAgr agr ; in kui ++ ap.s ! False ! NCase n Nom } ; - - compCN : Noun -> {s : Agr => Str} = \cn -> - { s = \\agr => - let n = complNumAgr agr ; + + compCN : Noun -> {s : Agr => Str} = \cn -> + { s = \\agr => + let n = complNumAgr agr ; in cn.s ! NCase n Nom } ; --- Reflexive pronoun. +-- Reflexive pronoun. --- Possessive could be shared with the more general $NounFin.DetCN$. - reflPron : Agr -> NP = \agr -> - let + reflPron : Agr -> NP = \agr -> + let ise = nForms2N (nForms6 "ise" "enda" "ennast" "endasse" "endi" "endid") ; n = case agr of { AgPol => Sg ; @@ -638,7 +638,7 @@ oper NForms : Type = Predef.Ints 5 => Str ; - nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms = + nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms = \jogi,joe,joge,joesse, -- sg nom, gen, part, ill jogede,jogesid -> table { -- pl gen, part, 0 => jogi ; @@ -646,7 +646,7 @@ oper 2 => joge ; 3 => joesse ; 4 => jogede ; - 5 => jogesid + 5 => jogesid } ; n2nforms : Noun -> NForms = \ukko -> table { @@ -655,12 +655,12 @@ oper 2 => ukko.s ! NCase Sg Part ; 3 => ukko.s ! NCase Sg Illat ; 4 => ukko.s ! NCase Pl Gen ; - 5 => ukko.s ! NCase Pl Part + 5 => ukko.s ! NCase Pl Part } ; -- Converts 6 given strings (Nom, Gen, Part, Illat, Gen, Part) into Noun -- http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=226 - nForms2N : NForms -> Noun = \f -> + nForms2N : NForms -> Noun = \f -> let jogi = f ! 0 ; joe = f ! 1 ; @@ -668,7 +668,7 @@ oper joesse = f ! 3 ; jogede = f ! 4 ; jogesid = f ! 5 ; - in + in {s = table { NCase Sg Nom => jogi ; NCase Sg Gen => joe ; @@ -698,7 +698,7 @@ oper NCase Pl Allat => jogede + "le" ; NCase Pl Abess => jogede + "ta" ; NCase Pl Comit => jogede + "ga" ; - NCase Pl Termin => jogede + "ni" + NCase Pl Termin => jogede + "ni" } --; -- lock_N = <> @@ -721,9 +721,9 @@ oper isDef : Bool } ; - heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d -> - d ** {sp = d.s} ; - PQuant : Type = - {s : Number => Case => Str ; isDef : Bool} ; + heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d -> + d ** {sp = d.s} ; + PQuant : Type = + {s : Number => Case => Str ; isDef : Bool} ; } diff --git a/src/estonian/SentenceEst.gf b/src/estonian/SentenceEst.gf index 4d5f6f3cb..f14b1e967 100644 --- a/src/estonian/SentenceEst.gf +++ b/src/estonian/SentenceEst.gf @@ -9,17 +9,17 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { PredSCVP sc vp = mkClause (\_ -> sc.s) (agrP3 Sg) vp ; ImpVP vp = { - s = \\pol,agr => - let + s = \\pol,agr => + let verb = vp.s ! VIImper ! Simul ! pol ! agr ; compl = vp.s2 ! False ! pol ! agr ++ vp.ext --- False = like inf (osta auto) in --(ära) loe raamat(ut) läbi - verb.fin ++ verb.inf ++ compl ++ vp.p ; + verb.fin ++ verb.inf ++ compl ++ vp.p ; } ; -- The object case is formed at the use site of $c2$, in $Relative$ and $Question$. - SlashVP np vp = { + SlashVP np vp = { s = \\t,a,p => (mkClause (subjForm np vp.sc) np.a vp).s ! t ! a ! p ! SDecl ; c2 = vp.c2 } ; @@ -30,13 +30,13 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { } ; SlashPrep cl prep = { - s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ; + s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ; c2 = prep } ; - SlashVS np vs slash = { - s = \\t,a,p => - (mkClause (subjForm np vs.sc) np.a + SlashVS np vs slash = { + s = \\t,a,p => + (mkClause (subjForm np vs.sc) np.a (insertExtrapos (etta_Conj ++ slash.s) (predV vs)) ).s ! t ! a ! p ! SDecl ; diff --git a/src/estonian/SymbolEst.gf b/src/estonian/SymbolEst.gf index 3517d5114..0d1000a68 100644 --- a/src/estonian/SymbolEst.gf +++ b/src/estonian/SymbolEst.gf @@ -29,7 +29,7 @@ lin SymbNum n = {s = \\_,_ => n.s ; isNum = True ; n = Pl} ; SymbOrd n = {s = \\_ => glue n.s "."} ; -lincat +lincat Symb, [Symb] = SS ; diff --git a/src/estonian/TerminologyEst.gf b/src/estonian/TerminologyEst.gf index 75344a2c1..4eb04c7fd 100644 --- a/src/estonian/TerminologyEst.gf +++ b/src/estonian/TerminologyEst.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common -concrete TerminologyEst of Terminology = CatEst ** open +concrete TerminologyEst of Terminology = CatEst ** open ResEst, ParadigmsEst, (G = GrammarEst), @@ -17,9 +17,9 @@ lincat ParameterType = G.N ; Parameter = G.N ; Modifier = G.A ; - + Heading = {s : Str} ; - + lin noun_Category = mkN "käändsõna" ; @@ -59,7 +59,7 @@ lin active_Parameter = mkN "isikuline tegumood" ; passive_Parameter = mkN "umbsikuline tegumood" ; - + imperative_Parameter = mkN "käskiv kõneviis" "käskiva kõneviisi"; indicative_Parameter = mkN "kindel kõneviis" "kindla kõneviisi"; conjunctive_Parameter = mkN "konjunktiiv" ; @@ -67,7 +67,7 @@ lin present_Parameter = mkN "olevik" ; past_Parameter = mkN "lihtminevik" ; - future_Parameter = mkN "futuur" ; ---- ??? + future_Parameter = mkN "futuur" ; ---- ??? conditional_Parameter = mkN "tingiv kõneviis" "tingiva kõneviisi"; perfect_Parameter = mkN "täisminevik" ; quotative_Parameter = mkN "kaudne kõneviis" "kaudse kõneviisi"; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 7f54194ab..3c8344a36 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -9,17 +9,17 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { SlashV2a v = predV v ** {c2 = v.c2} ; - Slash2V3 v np = - insertObj + Slash2V3 v np = + insertObj (\\fin,b,_ => appCompl fin b v.c2 np) (predV v) ** {c2 = v.c3} ; - Slash3V3 v np = - insertObj + Slash3V3 v np = + insertObj (\\fin,b,_ => appCompl fin b v.c3 np) (predV v) ** {c2 = v.c2} ; - ComplVV v vp = - insertObj - (\\_,b,a => infVP v.sc b a vp v.vi) - (predV {s = v.s ; + ComplVV v vp = + insertObj + (\\_,b,a => infVP v.sc b a vp v.vi) + (predV {s = v.s ; p = v.p ; sc = case vp.sc of { NPCase Nom => v.sc ; -- minul tuleb kirjutada (VV 'tulema' determines the subject case) @@ -30,47 +30,47 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ComplVS v s = insertExtrapos (etta_Conj ++ s.s) (predV v) ; ComplVQ v q = insertExtrapos ( q.s) (predV v) ; - ComplVA v ap = - insertObj - (\\_,b,agr => + ComplVA v ap = + insertObj + (\\_,b,agr => let n = (complNumAgr agr) in ap.s ! False ! (NCase n (npform2case n v.c2.c))) --- v.cs.s ignored (predV v) ; - SlashV2S v s = + SlashV2S v s = insertExtrapos (etta_Conj ++ s.s) (predV v) ** {c2 = v.c2} ; - SlashV2Q v q = + SlashV2Q v q = insertExtrapos (q.s) (predV v) ** {c2 = v.c2} ; - SlashV2V v vp = + SlashV2V v vp = insertObj (\\_,b,a => infVP v.sc b a vp v.vi) (predV v) ** {c2 = v.c2} ; ---- different infinitives - SlashV2A v ap = - insertObj - (\\fin,b,_ => + SlashV2A v ap = + insertObj + (\\fin,b,_ => ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c))) ----agr to obj (predV v) ** {c2 = v.c2} ; ComplSlash vp np = insertObjPre (\\fin,b,_ => appCompl fin b vp.c2 np) vp ; - UseComp comp = + UseComp comp = insertObj (\\_,_ => comp.s) (predV (verbOlema ** {sc = NPCase Nom})) ; - SlashVV v vp = - insertObj - (\\_,b,a => infVP v.sc b a vp v.vi) - (predV {s = v.s ; + SlashVV v vp = + insertObj + (\\_,b,a => infVP v.sc b a vp v.vi) + (predV {s = v.s ; p = v.p ; sc = case vp.sc of { NPCase Nom => v.sc ; -- minun täytyy pestä auto c => c -- minulla täytyy olla auto - } + } } ) ** {c2 = vp.c2} ; ---- correct ?? - SlashV2VNP v np vp = - insertObjPre + SlashV2VNP v np vp = + insertObjPre (\\fin,b,a => appCompl True b v.c2 np ++ ---- fin -> stack overflow - infVP v.sc b a vp v.vi) + infVP v.sc b a vp v.vi) (predV v) ** {c2 = vp.c2} ; AdvVP vp adv = insertAdv adv.s vp ; @@ -91,7 +91,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ----b UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ; - CompAP = compAP ; + CompAP = compAP ; CompCN = compCN ; CompNP np = {s = \\_ => np.s ! NPCase Nom} ; CompAdv a = {s = \\_ => a.s} ; @@ -102,17 +102,17 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { --2 The object case -- -- The rules involved are ComplV2 and ComplVV above. --- The work is done jointly in ResEst.infVP and appCompl. +-- The work is done jointly in ResEst.infVP and appCompl. -- Cases to test: l -table (to see negated forms) --``` -- minun täytyy ostaa auto --- PredVP (UsePron i_Pron) (ComplVV must_VV +-- PredVP (UsePron i_Pron) (ComplVV must_VV -- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) -- minä tahdon ostaa auton --- PredVP (UsePron i_Pron) (ComplVV want_VV +-- PredVP (UsePron i_Pron) (ComplVV want_VV -- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) -- minulla täytyy olla auto --- PredVP (UsePron i_Pron) (ComplVV must_VV +-- PredVP (UsePron i_Pron) (ComplVV must_VV -- (ComplV2 have_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) --``` -- Unfortunately, there is no nice way to say "I want to have a car". From 219de4ca9aaaac05397085e0d05b520f5ffba054 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 11:37:25 +0800 Subject: [PATCH 047/141] (Est) Reduce inflection table in VP Include VForms in VP, only construct VPForms when making Cl --- src/estonian/CatEst.gf | 19 ++++--- src/estonian/ExtendEst.gf | 2 +- src/estonian/ExtraEst.gf | 2 +- src/estonian/IdiomEst.gf | 15 ++---- src/estonian/ResEst.gf | 105 ++++++++++++++++++++++-------------- src/estonian/SentenceEst.gf | 2 +- src/estonian/VerbEst.gf | 8 +-- 7 files changed, 83 insertions(+), 70 deletions(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 6207874fa..29c857538 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -80,21 +80,24 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Open lexical classes, e.g. Lexicon V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; - V2, VA, V2Q, V2S = Verb1 ** {c2 : Compl} ; - V2A = Verb1 ** {c2, c3 : Compl} ; - VV = Verb1 ** {vi : InfForm} ; ---- infinitive form - V2V = Verb1 ** {c2 : Compl ; vi : InfForm} ; ---- infinitive form - V3 = Verb1 ** {c2, c3 : Compl} ; + V2, VA, V2Q, V2S = Verb2 ; + V2A, V3 = Verb3 ; + VV = Verb1 ** {vi : InfForm} ; + V2V = Verb2 ** {vi : InfForm} ; -- infinitive form A = Adjective ** {infl : Infl} ; A2 = A ** {c2 : Compl} ; N = Noun ; - N2 = Noun ** {c2 : Compl ; isPre : Bool ; lock_N2 : {}} ; - N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool ; lock_N3 : {}} ; + N2 = Noun ** {c2 : Compl ; isPre : Bool} ; + N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ; PN = {s : Case => Str} ; -oper Verb1 = Verb ** { sc : NPForm} ; --what is this for? --subject case, i.e. "ma näen kassi"/"mul on kass" + linref + VP = \vp -> linV vp.v ; + V,VS,VQ = linV ; + V2,VA,V2S,V2Q = linV2 ; + } diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 1103c5b7f..0e3c230e9 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -395,7 +395,7 @@ concrete ExtendEst of Extend = vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut ++ vp.adv -- paremini ++ vp.p -- ära - ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... + ++ (mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... ++ vp.ext ; --------------------------------- diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 16ba9ea76..63d32741c 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -60,7 +60,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** } ; MkVPS t p vp = { -- Temp -> Pol -> VP -> VPS ; - s = \\a => let vps = vp.s ! VIFin t.t ! t.a ! p.p ! a + s = \\a => let vps = mkVPForms vp.v ! VIFin t.t ! t.a ! p.p ! a in t.s ++ p.s ++ vps.fin ++ vps.inf ++ diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index c4e3657a5..a57c8964d 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -39,21 +39,14 @@ concrete IdiomEst of Idiom = CatEst ** ImpersCl vp = mkClause noSubj (agrP3 Sg) vp ; - GenericCl vp = mkClause noSubj (agrP3 Sg) { - s = \\_ => vp.s ! VIPass Pres ; - s2 = vp.s2 ; - adv = vp.adv ; - p = vp.p ; - ext = vp.ext ; - sc = vp.sc ; - } ; + GenericCl vp = mkClause noSubj (agrP3 Sg) (passiveVP vp) ; ProgrVP vp = let - inf = (vp.s ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; + inf = (mkVPForms vp.v ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; on = predV olla in { - s = on.s ; + v = verbOlema ; s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ inf ; adv = vp.adv ; p = vp.p ; @@ -65,7 +58,7 @@ concrete IdiomEst of Idiom = CatEst ** -- The imperative is not available in a $VP$. ImpPl1 vp = - let vps = vp.s ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 + let vps = mkVPForms vp.v ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 in {s = vps.fin ++ vps.inf ++ vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.p ++ vp.ext diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 1e123dd48..cbcece307 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -176,6 +176,13 @@ param p : Str -- particle verbs } ; + Verb1 : Type = Verb ** {sc : NPForm} ; --subject case, i.e. "ma näen kassi"/"mul on kass" + Verb2 : Type = Verb1 ** {c2 : Compl} ; + Verb3 : Type = Verb2 ** {c3 : Compl} ; + + linV : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + linV2 : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + param VIForm = VIFin Tense @@ -187,7 +194,7 @@ param oper VP : Type = { - s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; + v : Verb ; s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut adv : Str ; p : Str ; --uninflecting component in multi-word verbs @@ -195,48 +202,63 @@ oper sc : NPForm ; } ; - predV : (Verb ** {sc : NPForm}) -> VP = \verb -> { - s = \\vi,ant,b,agr0 => - let - agr = verbAgr agr0 ; - verbs = verb.s ; - part : Str = case vi of { - VIPass _ => verbs ! (PastPart Pass) ; - _ => verbs ! (PastPart Act) - } ; + passiveVerb : Verb -> Verb = \verb -> verb ** { + s = table { + Presn _ _ => verb.s ! PassPresn True ; + Impf _ _ => verb.s ! PassImpf True ; --# notpresent + Condit _ _ => verb.s ! ConditPass ; --# notpresent + ImperP3|ImperP1Pl|Imper _ => verb.s ! ImperPass ; + PresPart _ => verb.s ! PresPart Pass ; + PastPart _ => verb.s ! PastPart Pass ; + x => verb.s ! x } + } ; - einegole : Str * Str * Str = case of { - => <"ei", verbs ! Imper Sg, "ole"> ; - => <"ei", verbs ! Imper Sg, "ole"> ; - => <"ei", verbs ! Condit Sg P3, "oleks"> ; - => <"ei", part, "olnud"> ; - => <"ära", verbs ! Imper Sg, "ole"> ; - => <"ärge", verbs ! Imper Pl, "olge"> ; - => <"ei", verbs ! PassPresn False, "ole"> ; - => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent - => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent - => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent - => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent - => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> + -- NB. only chooses passive verb forms, to get subject case need compl2subjcase, used in PassV2 + passiveVP : VP -> VP = \vp -> vp ** {v = passiveVerb vp.v} ; - } ; + VPForms : Type = VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; - ei : Str = einegole.p1 ; - neg : Str = einegole.p2 ; - ole : Str = einegole.p3 ; + mkVPForms : Verb -> VPForms = \verb -> \\vi,ant,b,agr0 => + let + agr = verbAgr agr0 ; + verbs = verb.s ; + part : Str = case vi of { + VIPass _ => verbs ! PastPart Pass ; + _ => verbs ! PastPart Act + } ; - olema : VForm => Str = verbOlema.s ; + einegole : Str * Str * Str = case of { + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Condit Sg P3, "oleks"> ; + => <"ei", part, "olnud"> ; + => <"ära", verbs ! Imper Sg, "ole"> ; + => <"ärge", verbs ! Imper Pl, "olge"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent + => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent + => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent + => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent + => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> - vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; + } ; - mkvf : VForm -> {fin, inf : Str} = \p -> case of { - => vf (verbs ! p) [] ; - => vf (olema ! p) part ; - => vf (ei ++ neg) [] ; - => vf (ei ++ ole) part - } ; + ei : Str = einegole.p1 ; + neg : Str = einegole.p2 ; + ole : Str = einegole.p3 ; - passPol = case b of {Pos => True ; Neg => False} ; + olema : VForm => Str = verbOlema.s ; + + vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; + + mkvf : VForm -> {fin, inf : Str} = \p -> case of { + => vf (verbs ! p) [] ; + => vf (olema ! p) part ; + => vf (ei ++ neg) [] ; + => vf (ei ++ ole) part + } ; + + passPol = case b of {Pos => True ; Neg => False} ; in case vi of { VIFin Past => mkvf (Impf agr.n agr.p) ; --# notpresent @@ -252,6 +274,8 @@ oper VIInf i => mkvf (Inf i) } ; + predV : Verb1 -> VP = \verb -> { + v = verb ; -- ignoring the subject s2 = \\_,_,_ => [] ; adv = [] ; ext = [] ; --relative clause @@ -329,7 +353,7 @@ oper NPCase Nom => ; _ => -- minule meeldib, minul on } ; - verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ; + verb = mkVPForms vp.v ! VIFin t ! a ! b ! agrfin.p1 ; in {subj = sub b ; fin = verb.fin ; inf = verb.inf ; @@ -389,7 +413,7 @@ oper NPCase Nom => True ; -- mina tahan joosta _ => False -- minul peab auto olema } ; - verb = vp.s ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" + verb = mkVPForms vp.v ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" compl = vp.s2 ! fin ! pol ! agr ; -- but compl. case propagated adv = vp.adv in @@ -590,8 +614,7 @@ oper } ; } ; - Noun = {s : NForm => Str} ; - + Noun : Type = {s : NForm => Str} ; -- To form an adjective, it is usually enough to give a noun declension: the -- adverbial form is regular. @@ -660,7 +683,7 @@ oper -- Converts 6 given strings (Nom, Gen, Part, Illat, Gen, Part) into Noun -- http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=226 - nForms2N : NForms -> Noun = \f -> + nForms2N : NForms -> Noun = \f -> let jogi = f ! 0 ; joe = f ! 1 ; diff --git a/src/estonian/SentenceEst.gf b/src/estonian/SentenceEst.gf index f14b1e967..7209fc209 100644 --- a/src/estonian/SentenceEst.gf +++ b/src/estonian/SentenceEst.gf @@ -11,7 +11,7 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { ImpVP vp = { s = \\pol,agr => let - verb = vp.s ! VIImper ! Simul ! pol ! agr ; + verb = mkVPForms vp.v ! VIImper ! Simul ! pol ! agr ; compl = vp.s2 ! False ! pol ! agr ++ vp.ext --- False = like inf (osta auto) in --(ära) loe raamat(ut) läbi verb.fin ++ verb.inf ++ compl ++ vp.p ; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 3c8344a36..3f5f0c3dc 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -79,13 +79,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; - PassV2 v = - let vp = predV v in vp ** { - s = \\vf => case vf of { - VIFin t => vp.s ! VIPass t ; - -- VIImper => v.s ! ImperPass ; -- TODO: include these forms from V into VP - -- VIPresPart => v.s ! PresPart Pass ; - x => vp.s ! x } ; + PassV2 v = let vp : VP = passiveVP (predV v) in vp ** { sc = compl2subjcase v.c2 -- koer valitakse ; koerale räägitakse } ; From b1b752673d005f0b134a97f609e7004cf6375d5c Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 17:27:14 +0800 Subject: [PATCH 048/141] (Est) Fix negative passive TODO: more stable solution? conneg in Imper Sg is a bit of a hack --- src/estonian/ResEst.gf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index cbcece307..c6ce9643f 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -204,12 +204,13 @@ oper passiveVerb : Verb -> Verb = \verb -> verb ** { s = table { - Presn _ _ => verb.s ! PassPresn True ; + Presn _ _ => verb.s ! PassPresn True ; Impf _ _ => verb.s ! PassImpf True ; --# notpresent Condit _ _ => verb.s ! ConditPass ; --# notpresent - ImperP3|ImperP1Pl|Imper _ => verb.s ! ImperPass ; - PresPart _ => verb.s ! PresPart Pass ; - PastPart _ => verb.s ! PastPart Pass ; + ImperP3 => verb.s ! ImperPass ; + Imper Sg => verb.s ! PassPresn False ; -- weird hack, because the Imper Sg field is used for negative form; if VP undergoes PassV*, then its negation should also be in passive. + PresPart _ => verb.s ! PresPart Pass ; + PastPart _ => verb.s ! PastPart Pass ; x => verb.s ! x } } ; From e8503511ca61bd08d42b94096b5e783e1ed25850 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 17:38:17 +0800 Subject: [PATCH 049/141] (Est) 7 InfForms -> 2 stems + gluing suffixes --- src/estonian/CatEst.gf | 4 +- src/estonian/DocumentationEstFunctor.gf | 19 ++++--- src/estonian/ExtendEst.gf | 57 ++++++++++----------- src/estonian/ExtraEst.gf | 20 +++++--- src/estonian/IdiomEst.gf | 16 ++---- src/estonian/ParadigmsEst.gf | 10 +++- src/estonian/PhraseEst.gf | 2 +- src/estonian/ResEst.gf | 67 ++++++++++++++----------- 8 files changed, 104 insertions(+), 91 deletions(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 29c857538..0b8b5cc6a 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -82,8 +82,8 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; V2, VA, V2Q, V2S = Verb2 ; V2A, V3 = Verb3 ; - VV = Verb1 ** {vi : InfForm} ; - V2V = Verb2 ** {vi : InfForm} ; -- infinitive form + VV = Verb1 ** {vi : InfForms} ; + V2V = Verb2 ** {vi : InfForms} ; A = Adjective ** {infl : Infl} ; A2 = A ** {c2 : Compl} ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index a8e683430..a40affde8 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -142,6 +142,8 @@ oper --verb = sverb2verbSep verb0 ; vfin : ResEst.VForm -> Str = \f -> verb.s ! f ; + vinf : ResEst.InfForms -> Str = \if -> + applyInfFormsV if verb.s ; nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 -> (S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP n2))).s ; @@ -218,15 +220,16 @@ oper heading3 (heading infinitive_Parameter) ++ frameTable ( tr (intagAttr "th" "rowspan=2" "da" ++ - th (heading nominative_Parameter) ++ td (vfin (Inf InfDa))) ++ - tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfDes))) ++ + th (heading nominative_Parameter) ++ td (vinf InfDa)) ++ + tr (th (heading inessive_Parameter) ++ td (vinf InfDes)) ++ - tr (intagAttr "th" "rowspan=5" "ma" ++ - th (heading illative_Parameter) ++ td (vfin (Inf InfMa))) ++ - tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfMas))) ++ - tr (th (heading elative_Parameter) ++ td (vfin (Inf InfMast))) ++ - tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ - tr (th (heading translative_Parameter) ++ td (vfin (Inf InfMaks))) + tr (intagAttr "th" "rowspan=6" "ma" ++ + th (heading illative_Parameter) ++ td (vinf InfMa)) ++ + tr (th (heading inessive_Parameter) ++ td (vinf InfMas)) ++ + tr (th (heading elative_Parameter) ++ td (vinf InfMast)) ++ + tr (th (heading abessive_Parameter) ++ td (vinf InfMata)) ++ + tr (th (heading abessive_Parameter) ++ td (vinf InfMaks)) ++ + tr (th (heading translative_Parameter) ++ td (vinf InfMine)) ) ++ heading3 (heading participle_Parameter) ++ diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 0e3c230e9..c953be653 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -40,7 +40,7 @@ concrete ExtendEst of Extend = Prelude, MorphoEst, LexiconEst, - ParadigmsEst in { + ParadigmsEst in { --------------------------------- -- VPS, VPI, VPS2 + list versions @@ -176,7 +176,7 @@ concrete ExtendEst of Extend = A2VPSlash a2 = UseComp (CompAP (UseA2 a2)) ** {c2 = a2.c2} ; -- : VP -> Adv ; - ByVP vp = {s = vp2adv vp True (VIInf InfDes)} ; + ByVP = GerundAdv ; --------------------------------- -- C @@ -220,15 +220,8 @@ concrete ExtendEst of Extend = lin - {- TODO: need to change VP to get EmbedPresPart and various Gerunds to work: - 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) - 2) Change s2 in VP so that we can manipulate the complement to be in genitive! - - -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) - EmbedPresPart vp = - let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } - {s = vp2adv vp True VI } ; - -} + -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) / ___ga abielus olemine, + EmbedPresPart vp = {s = infVP (NPCase Gen) Pos (agrP3 Sg) vp InfMine } ; EmbedSSlash s = {s = s.s ++ s.c2.s} ; @@ -302,14 +295,13 @@ concrete ExtendEst of Extend = GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; -- : VP -> Adv - GerundAdv vp = {s = vp2adv vp True (VIInf InfDes)} ; - + GerundAdv vp = {s = infVPdefault vp InfDes} ; -- : VP -> CN -- publishing of the document (can get a determiner) --- GerundCN vp = {} ; + GerundCN vp = {s = \\nf => infVPdefault vp InfMine} ; -- : VP -> NP -- publishing the document (by nature definite) --- GerundNP vp = {} ; + GerundNP vp = MassNP (GerundCN vp) ; --------------------------------- -- I - N @@ -322,9 +314,8 @@ concrete ExtendEst of Extend = -- : Adv -> IAdv ; -- "how often" IAdvAdv adv = { s = "kui" ++ adv.s } ; - -- : VP -> Adv - InOrderToVP vp = -- et raamatut paremini näha - { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; + -- : VP -> Adv -- et raamatut paremini näha + InOrderToVP vp = {s = "et" ++ infVPdefault vp InfDa} ; -- : N2 -> VPSlash N2VPSlash n2 = UseComp (CompCN (UseN2 n2)) ** {c2 = n2.c2} ; @@ -380,7 +371,7 @@ concrete ExtendEst of Extend = in existClause noSubj (agrP3 Sg) heaOlla ; -- : IAdv -> VP -> QCl ; -- how to walk? - PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ vp2adv vp True (VIInf InfMa)} ; + PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ infVPdefault vp InfMa} ; PrepCN prep cn = PrepNP prep (MassNP cn) ; @@ -391,12 +382,19 @@ concrete ExtendEst of Extend = PurposeVP = InOrderToVP ; --- is there a difference? oper + -- calling infVP with the "default arguments": NPCase Nom, Pos, agrP3 Sg + infVPdefault : VP -> InfForms -> Str = infVP (NPCase Nom) Pos (agrP3 Sg) ; + vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> - vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut - ++ vp.adv -- paremini - ++ vp.p -- ära - ++ (mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... - ++ vp.ext ; + let vpforms : {fin,inf : Str} = case vif of { + VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here + _ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ; + in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ vpforms.fin -- tunda/tundes/tundmata/... + ++ vpforms.inf -- TODO is this necessary??? + ++ vp.ext ; --------------------------------- -- S - W @@ -415,14 +413,11 @@ concrete ExtendEst of Extend = UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? UttDatNP np = {s = np.s ! NPCase Part} ; - -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa - UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; - --TODO: maybe InfMa should be default in PhraseEst and InfDa here? + -- : VP -> Utt ; -- There's no "short form", so just using InfDa instead of InfMa + UttVPShort vp = {s = infVPdefault vp InfDa} ; - - - WithoutVP vp = -- ilma raamatut nägemata - { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; + -- : VP -> Adv ; -- ilma raamatut nägemata + WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ; } diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 63d32741c..3de8e8b56 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -27,18 +27,24 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; lincat - VPI = {s : InfForm => Str} ; - [VPI] = {s1,s2 : InfForm => Str} ; + VPI = {s : InfStem => Str} ; + [VPI] = {s1,s2 : InfStem => Str} ; -- VPI = {s : Str} ; -- [VPI] = {s1,s2 : Str} ; lin - BaseVPI = twoTable InfForm ; - ConsVPI = consrTable InfForm comma ; + BaseVPI = twoTable InfStem ; + ConsVPI = consrTable InfStem comma ; - MkVPI vp = {s = \\i => infVP (NPCase Nom) Pos (agrP3 Sg) vp i} ; - ConjVPI = conjunctDistrTable InfForm ; + MkVPI vp = {s = \\i => infVPIF (NPCase Nom) Pos (agrP3 Sg) vp i} ; + ConjVPI = conjunctDistrTable InfStem ; ComplVPIVV vv vpi = - insertObj (\\_,_,_ => vpi.s ! vv.vi) (predV vv) ; + insertObj (\\_,_,_ => vpi.s ! vv.vi.stem) (predV vv) ; + + oper + -- Version that uses InfStem + infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if -> + infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ; + lincat VPS = { diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index a57c8964d..59c1b9ef6 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -41,18 +41,10 @@ concrete IdiomEst of Idiom = CatEst ** GenericCl vp = mkClause noSubj (agrP3 Sg) (passiveVP vp) ; - ProgrVP vp = - let - inf = (mkVPForms vp.v ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; - on = predV olla - in { - v = verbOlema ; - s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ inf ; - adv = vp.adv ; - p = vp.p ; - ext = vp.ext ; - sc = vp.sc ; - } ; + ProgrVP vp = vp ** { + v = verbOlema ; + s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ (applyInfFormsVP InfMas vp).fin ; + } ; -- This gives "otetaan oluet" instead of "ottakaamme oluet". -- The imperative is not available in a $VP$. diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 5f74e4725..432f622f5 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -27,6 +27,7 @@ resource ParadigmsEst = open (Predef=Predef), Prelude, MorphoEst, + (ResEst=ResEst), HjkEst, CatEst in { @@ -62,6 +63,8 @@ oper abessive : Case ; -- e.g. "karbita" comitative : Case ; -- e.g. "karbiga" + InfForm : Type ; + infDa : InfForm ; -- e.g. "lugeda" infDes : InfForm ; -- e.g. "lugedes" infMa : InfForm ; -- e.g. "lugema" @@ -69,6 +72,7 @@ oper infMaks : InfForm ; -- e.g. "lugemaks" infMast : InfForm ; -- e.g. "lugemast" infMata : InfForm ; -- e.g. "lugemata" + infMine : InfForm ; -- e.g. "lugemine" -- The following type is used for defining *rection*, i.e. complements -- of many-place verbs and adjective. A complement can be defined by @@ -293,8 +297,10 @@ oper abessive = Abess ; comitative = Comit ; + -- combination of stem + suffix, e.g. infDes = {stem = InfD ; suf = "es"} ; + InfForm = ResEst.InfForms ; infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; - infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; + infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; infMine = InfMine ; prePrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; @@ -856,7 +862,7 @@ oper mkVV : V -> VV = \v -> mkVVf v infDa ; mkVV : Str -> VV = \str -> mkVVf (mkV str) infDa ; } ; - mkVVf v f = v ** {vi = f ; lock_VV = <>} ; + mkVVf v f = lin VV (v ** {vi = f}) ; mkVQ = overload { mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; mkVQ : Str -> VQ = \str -> (mkV str) ** {lock_VQ = <>} ; diff --git a/src/estonian/PhraseEst.gf b/src/estonian/PhraseEst.gf index 904528395..0557107b1 100644 --- a/src/estonian/PhraseEst.gf +++ b/src/estonian/PhraseEst.gf @@ -12,7 +12,7 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { UttIP ip = {s = ip.s ! NPCase Nom} ; UttIAdv iadv = iadv ; UttNP np = {s = np.s ! NPCase Nom} ; - UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfDa} ; + UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; UttAdv adv = adv ; UttCN np = {s = np.s ! NCase Sg Nom} ; UttAP np = {s = np.s ! P.False ! NCase Sg Nom} ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index c6ce9643f..f34eb9970 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -81,7 +81,7 @@ oper param VForm = - Inf InfForm + Inf InfStem | Presn Number Person | Impf Number Person | Condit Number Person @@ -99,16 +99,32 @@ param Voice = Act | Pass ; - InfForm = - InfDa -- lugeda - | InfDes -- lugedes - | InfMa -- lugema - | InfMas -- lugemas - | InfMast -- lugemast - | InfMata -- lugemata - | InfMaks -- lugemaks + InfStem = + InfD -- luge+da/des, but can be irregular: tulla, tulles + | InfM -- lugema/mas/mast/maks/mata/mine ; +oper + InfForms : Type = {stem : InfStem ; suf : Str} ; + InfDa, InfDes, InfMa, InfMas, InfMast, InfMata, InfMaks, InfMine : InfForms ; + InfDa = {stem = InfD ; suf = "a"} ; -- lugeda + InfDes = {stem = InfD ; suf = "es"} ; -- lugedes + InfMa = {stem = InfM ; suf = "a"} ; -- lugema + InfMas = {stem = InfM ; suf = "as"} ; -- lugemas + InfMast = {stem = InfM ; suf = "ast"} ; -- lugemast + InfMata = {stem = InfM ; suf = "ata"} ; -- lugemata + InfMaks = {stem = InfM ; suf = "aks"} ; -- lugemaks + InfMine = {stem = InfM ; suf = "ine"} ; -- lugemine + + applyInfFormsVP : InfForms -> VP -> {fin,inf : Str} = \if,vp -> + let vpforms : VPForms = mkVPForms vp.v ; + stemOnly : {fin,inf : Str} = vpforms ! VIInf if.stem ! Simul ! Pos ! agrP3 Sg ; + in stemOnly ** {fin = glue stemOnly.fin if.suf} ; -- Despite the name, the infinite form is in the "fin" field, "inf" contains participle + + applyInfFormsV : InfForms -> (VForm => Str) -> Str = \if,vf -> + glue (vf ! Inf if.stem) if.suf ; + +param SType = SDecl | SQuest | SInv ; --2 For $Relative$ @@ -180,13 +196,12 @@ param Verb2 : Type = Verb1 ** {c2 : Compl} ; Verb3 : Type = Verb2 ** {c3 : Compl} ; - linV : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; - linV2 : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + linV2, linV : Verb -> Str = \v -> applyInfFormsV InfMa v.s ++ v.p ; param VIForm = VIFin Tense - | VIInf InfForm + | VIInf InfStem | VIPass Tense | VIPresPart | VIImper @@ -276,7 +291,7 @@ oper } ; predV : Verb1 -> VP = \verb -> { - v = verb ; -- ignoring the subject + v = verb ; -- ignoring the subject case of Verb, it is stored in VP.sc later s2 = \\_,_,_ => [] ; adv = [] ; ext = [] ; --relative clause @@ -405,17 +420,18 @@ oper subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = sc ; isPre = True} np ; - infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVPAnt Simul ; + infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; - infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = + infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = \ant,sc,pol,agr,vp,vi -> let - fin = case sc of { -- subject case - NPCase Nom => True ; -- mina tahan joosta - _ => False -- minul peab auto olema + complCase = case sc of { -- choosing case for the complement. sometimes this function is called so that sc is the VP's subject case, but other times it's some other form. + NPCase Nom => True ; + _ => False } ; - verb = mkVPForms vp.v ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" - compl = vp.s2 ! fin ! pol ! agr ; -- but compl. case propagated + verbStem = mkVPForms vp.v ! VIInf vi.stem ! ant ! Pos ! agr ; -- no "ei" + verb = verbStem ** {fin = glue verbStem.fin vi.suf} ; + compl = vp.s2 ! complCase ! pol ! agr ; -- but compl. case propagated adv = vp.adv in -- inverted word order; e.g. @@ -512,8 +528,8 @@ oper tulgu = (init tulge) + "u" ; in {s = table { - Inf InfDa => tulla ; - Inf InfDes => tulles ; + Inf InfD => tull_ ; + Inf InfM => init tulema ; Presn Sg P1 => tule_ + "n" ; Presn Sg P2 => tule_ + "d" ; Presn Sg P3 => tuleb ; @@ -547,12 +563,7 @@ oper PresPart Act => laulev ; PresPart Pass => tuld_ + "av" ; --d or t PastPart Act => tulnud ; - PastPart Pass => tuldud ; - Inf InfMa => tulema ; - Inf InfMas => tulema + "s" ; - Inf InfMast => tulema + "st" ; - Inf InfMata => tulema + "ta" ; - Inf InfMaks => tulema + "ks" + PastPart Pass => tuldud } ; sc = NPCase Nom ; p = [] From 76f23214c154029feafd5b84fea71fd2a0f3bad5 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 14 Apr 2022 19:07:03 +0800 Subject: [PATCH 050/141] (Est) Use genitive stem+suffix for 4 other cases --- src/estonian/AdverbEst.gf | 2 +- src/estonian/DocumentationEstFunctor.gf | 48 +++++++++------- src/estonian/ExtraEst.gf | 17 +++--- src/estonian/MorphoEst.gf | 16 +----- src/estonian/NounEst.gf | 12 +--- src/estonian/ParadigmsEst.gf | 73 +++++++++++++++---------- src/estonian/RelativeEst.gf | 2 +- src/estonian/ResEst.gf | 69 +++++++++++++---------- src/estonian/VerbEst.gf | 4 +- 9 files changed, 128 insertions(+), 115 deletions(-) diff --git a/src/estonian/AdverbEst.gf b/src/estonian/AdverbEst.gf index ad84dcb9a..566f3475d 100644 --- a/src/estonian/AdverbEst.gf +++ b/src/estonian/AdverbEst.gf @@ -11,7 +11,7 @@ concrete AdverbEst of Adverb = CatEst ** open ResEst, Prelude in { s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ s.s } ; - PrepNP prep np = {s = preOrPost prep.isPre prep.s (np.s ! prep.c)} ; + PrepNP prep np = {s = appCompl True Pos prep np} ; AdAdv = cc2 ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index a40affde8..91faf858f 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -23,11 +23,17 @@ lincat oper heading : N -> Str = \n -> (nounHeading n).s ; + caseplus2nf : N -> ResEst.Number -> CasePlus -> Str = \noun,num,cas -> + noun.s ! NCase num cas.c ++ cas.suf ; + + caseplus2af : (AForm => Str) -> ResEst.Number -> CasePlus -> Str = \adj,num,cas -> + adj ! AN (NCase num cas.c) ++ cas.suf ; + lin InflectionN, InflectionN2, InflectionN3 = \noun -> { t = "s" ; s1 = heading1 (heading noun_Category) ; - s2 = inflNoun (\nf -> noun.s ! nf) + s2 = inflNoun (caseplus2nf noun) } ; InflectionA, InflectionA2 = \adj -> @@ -37,11 +43,11 @@ lin in { t = "a" ; s1 = heading1 (heading adjective_Category) ; - s2 = inflNoun (\nf -> posit ! AN nf) ++ + s2 = inflNoun (caseplus2af posit) ++ heading2 (heading comparative_Parameter) ++ - inflNoun (\nf -> compar ! AN nf) ++ + inflNoun (caseplus2af compar) ++ heading2 (heading superlative_Parameter) ++ - inflNoun (\nf -> superl ! AN nf) + inflNoun (caseplus2af superl) } ; InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> { @@ -248,24 +254,24 @@ oper td (vfin (PastPart Pass ))) ) ; --} - inflNoun : (NForm -> Str) -> Str = \nouns -> + inflNoun : (Number -> CasePlus -> Str) -> Str = \nouns -> frameTable ( - tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++ - tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++ - tr (th (heading partitive_Parameter) ++ td (nouns (NCase Sg Part)) ++ td (nouns (NCase Pl Part))) ++ - tr (th (heading translative_Parameter) ++ td (nouns (NCase Sg Transl)) ++ td (nouns (NCase Pl Transl))) ++ - tr (th (heading essive_Parameter) ++ td (nouns (NCase Sg Ess)) ++ td (nouns (NCase Pl Ess))) ++ - tr (th (heading inessive_Parameter) ++ td (nouns (NCase Sg Iness)) ++ td (nouns (NCase Pl Iness))) ++ - tr (th (heading elative_Parameter) ++ td (nouns (NCase Sg Elat)) ++ td (nouns (NCase Pl Elat))) ++ - tr (th (heading illative_Parameter) ++ td (nouns (NCase Sg Illat)) ++ td (nouns (NCase Pl Illat))) ++ - tr (th (heading adessive_Parameter) ++ td (nouns (NCase Sg Adess)) ++ td (nouns (NCase Pl Adess))) ++ - tr (th (heading ablative_Parameter) ++ td (nouns (NCase Sg Ablat)) ++ td (nouns (NCase Pl Ablat))) ++ - tr (th (heading allative_Parameter) ++ td (nouns (NCase Sg Allat)) ++ td (nouns (NCase Pl Allat))) ++ - tr (th (heading abessive_Parameter) ++ td (nouns (NCase Sg Abess)) ++ td (nouns (NCase Pl Abess))) ++ - tr (th (heading comitative_Parameter) ++ td (nouns (NCase Sg Comit)) ++ td (nouns (NCase Pl Comit))) ++ - tr (th (heading instructive_Parameter) ++ td (nouns (NCase Sg Termin)) ++ td (nouns (NCase Pl Termin)) - )) ; + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ + tr (th (heading nominative_Parameter) ++ td (nouns Sg Nominative) ++ td (nouns Pl Nominative)) ++ + tr (th (heading genitive_Parameter) ++ td (nouns Sg Genitive) ++ td (nouns Pl Genitive)) ++ + tr (th (heading partitive_Parameter) ++ td (nouns Sg Partitive) ++ td (nouns Pl Partitive)) ++ + tr (th (heading translative_Parameter) ++ td (nouns Sg Translative) ++ td (nouns Pl Translative)) ++ + tr (th (heading essive_Parameter) ++ td (nouns Sg Essive) ++ td (nouns Pl Essive)) ++ + tr (th (heading inessive_Parameter) ++ td (nouns Sg Inessive) ++ td (nouns Pl Inessive)) ++ + tr (th (heading elative_Parameter) ++ td (nouns Sg Elative) ++ td (nouns Pl Elative)) ++ + tr (th (heading illative_Parameter) ++ td (nouns Sg Illative) ++ td (nouns Pl Illative)) ++ + tr (th (heading adessive_Parameter) ++ td (nouns Sg Adessive) ++ td (nouns Pl Adessive)) ++ + tr (th (heading ablative_Parameter) ++ td (nouns Sg Ablative) ++ td (nouns Pl Ablative)) ++ + tr (th (heading allative_Parameter) ++ td (nouns Sg Allative) ++ td (nouns Pl Allative)) ++ + tr (th (heading abessive_Parameter) ++ td (nouns Sg Abessive) ++ td (nouns Pl Abessive)) ++ + tr (th (heading comitative_Parameter) ++ td (nouns Sg Comitative) ++ td (nouns Pl Comitative)) ++ + tr (th (heading instructive_Parameter) ++ td (nouns Sg Terminative) ++ td (nouns Pl Terminative)) + ) ; lin NoDefinition t = {s=t.s}; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 3de8e8b56..644d8e9ea 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -1,5 +1,5 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** - open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX) in { + open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX), (P = ParadigmsEst) in { flags coding=utf8; lin GenNP np = { @@ -9,11 +9,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** isNeg = False } ; - GenCN = caseCN Gen ; -- soome mees - ComitCN = caseCN Comit ; -- puudega mets - ElatCN = caseCN Elat ; -- puust laud - AbessCN = caseCN Abess ; -- autota pere - TerminCN = caseCN Termin ; -- maani kleit + GenCN = caseCN Genitive ; -- soome mees + ComitCN = caseCN Comitative ; -- puudega mets + ElatCN = caseCN Elative ; -- puust laud + AbessCN = caseCN Abessive ; -- autota pere + TerminCN = caseCN Terminative ; -- maani kleit GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; @@ -23,8 +23,9 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** --- a = RAg (agrP3 num.n) } ; oper - caseCN : Case -> NP -> CN -> CN = \c,np,cn -> - lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; + caseCN : CasePlus -> NP -> CN -> CN = \c,np,cn -> cn ** { + s = \\nf => appCompl True Pos (P.casePrep c) np ++ cn.s ! nf + } ; lincat VPI = {s : InfStem => Str} ; diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index e7cc6e532..18de36838 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -520,16 +520,12 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPCase Gen => minu ; NPCase Part => mind ; NPCase Transl => minu + "ks" ; - NPCase Ess => minu + "na" ; NPCase Iness => minu_short + "s" ; NPCase Elat => minu_short + "st" ; NPCase Illat => minu_short + "sse" ; NPCase Adess => minu_short + "l" ; NPCase Ablat => minu_short + "lt" ; NPCase Allat => minu_short + "le" ; - NPCase Abess => minu + "ta" ; - NPCase Comit => minu + "ga" ; - NPCase Termin => minu + "ni" ; NPAcc => mind } ; a = Ag n p @@ -584,16 +580,12 @@ oper Gen => "selle" ; Part => "seda" ; Transl => "selleks" ; - Ess => "sellena" ; Iness => "selles" ; Elat => "sellest" ; Illat => "sellesse" ; Adess => "sellel" ; Ablat => "sellelt" ; - Allat => "sellele" ; - Abess => "selleta" ; - Comit => "sellega" ; - Termin => "selleni" + Allat => "sellele" } ; } ; @@ -604,16 +596,12 @@ oper Gen => "nende" ; Part => "neid" ; Transl => "nendeks" ; - Ess => "nendena" ; Iness => "nendes" ; Elat => "nendest" ; Illat => "nendesse" ; Adess => "nendel" ; Ablat => "nendelt" ; - Allat => "nendele" ; - Abess => "nendeta" ; - Comit => "nendega" ; - Termin => "nendeni" + Allat => "nendele" } ; } ; diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index 3b65059c1..b641c6896 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -19,13 +19,6 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in case of { <_, NPAcc, True,_> => ; -- kolm kassi (as object) <_, NPCase Nom, True,_> => ; -- kolm kassi (as subject) - - --Only the last word gets case ending. - <_, NPCase Comit, _, _> => ; -- kolme kassiga - <_, NPCase Abess, _, _> => ; -- kolme kassita - <_, NPCase Ess, _, _> => ; -- kolme kassina - <_, NPCase Termin,_, _> => ; -- kolme kassini - <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } @@ -212,10 +205,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in s = \\nf => case ap.infl of { Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile - Regular => case nf of { - NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! NCase num Gen ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga - _ => ap.s ! True ! nf ++ cn.s ! nf - } + Regular => ap.s ! True ! nf ++ cn.s ! nf -- Ess,Abess,Comit,Termin will only get case ending after the CN, so suure kassiga, not *suurega kassiga } } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 432f622f5..2c859b743 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -276,50 +276,67 @@ oper -- The definitions should not bother the user of the API. So they are -- hidden from the document. - Case = MorphoEst.Case ; + Case = MorphoEst.CasePlus ; Number = MorphoEst.Number ; singular = Sg ; plural = Pl ; - nominative = Nom ; - genitive = Gen ; - partitive = Part ; - illative = Illat ; - inessive = Iness ; - elative = Elat ; - allative = Allat ; - adessive = Adess ; - ablative = Ablat ; - translative = Transl ; - terminative = Termin ; - essive = Ess ; - abessive = Abess ; - comitative = Comit ; + nominative = Nominative ; + genitive = Genitive ; + partitive = Partitive ; + illative = Illative ; + inessive = Inessive ; + elative = Elative ; + allative = Allative ; + adessive = Adessive ; + ablative = Ablative ; + translative = Translative ; + terminative = Terminative ; + essive = Essive ; + abessive = Abessive ; + comitative = Comitative ; + + -- IL 2022-04: after introducing stem+suffixes, 4 other cases have just genitive stems. + -- isActuallyGenitive is needed for those mkN2 and mkN3 instances that take a Prep as an argument, + -- and actual Gen gets isPre=True, and those with genitive stem+suffix should get False. + -- This is confusing and error-prone, consider restructuring/renaming things later. + isActuallyGenitive : MorphoEst.CasePlus -> Bool = \c -> case c of { + {c = MorphoEst.Gen ; suf = ""} => True ; + _ => False + } ; -- combination of stem + suffix, e.g. infDes = {stem = InfD ; suf = "es"} ; InfForm = ResEst.InfForms ; infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; infMine = InfMine ; - prePrep : Case -> Str -> Prep = - \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; - postPrep : Case -> Str -> Prep = - \c,p -> {c = NPCase c ; s = p ; isPre = False ; lock_Prep = <>} ; - postGenPrep p = { - c = NPCase genitive ; s = p ; isPre = False ; lock_Prep = <>} ; - casePrep : Case -> Prep = - \c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ; - accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ; + mkPrep : (isPre : Bool) -> Case -> Str -> Prep = \isPre,c,p -> lin Prep { + c = casep2npformp c ; + s = p ; + isPre = isPre + } ; + prePrep : Case -> Str -> Prep = mkPrep True ; + postPrep : Case -> Str -> Prep = mkPrep False ; + postGenPrep : Str -> Prep = postPrep genitive ; + -- The Prep's isPre field is used in a special (hacky) way in mkN3 and mkN2. + -- Used to be able to match whether the Prep's case is Gen, but now several + -- Preps use the genitive stem, so we need to check if it's actually genitive. + casePrep : Case -> Prep = \c -> mkPrep (isActuallyGenitive c) c [] ; + + -- NPAcc is different, it's not formed from a Case(Plus) + accPrep : Prep = lin Prep { + c = case2npformp NPAcc ; + s = [] ; + isPre = True + } ; mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ; mkAdV : Str -> AdV = \str -> {s = str ; lock_AdV = <>} ; mkAdN : Str -> AdN = \str -> {s = str ; lock_AdN = <>} ; mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; - - mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; mkConj : Str -> Number -> Conj = \ja,num -> lin Conj ((sd2 "" ja) ** {n = num}) ; @@ -565,7 +582,7 @@ oper lock_N3 = <> } ; - mkIsPre : Prep -> Bool = \p -> case p.c of { + mkIsPre : Prep -> Bool = \p -> case p.c.npf of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) _ => True -- syyte Jussia vastaan, puhe Jussin puolesta } ; @@ -821,7 +838,7 @@ oper <_,_,_,_> => regVForms jatma jatta jatab jaetakse } ; - caseV c v = {s = v.s ; p = v.p; sc = NPCase c ; lock_V = <>} ; + caseV c v = v ** {sc = NPCase c.c} ; vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 4f90bb254..4be5f96ae 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -32,7 +32,7 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in who = appCompl True p slash.c2 (rp2np (complNumAgr ag) rp) in who ++ cls ; - c = slash.c2.c + c = slash.c2.c.npf } ; FunRP p np rp = { diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index f34eb9970..066eeb153 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -15,16 +15,35 @@ resource ResEst = ParamX ** open Prelude in { -- This is the $Case$ as needed for both nouns and $NP$s. param - Case = Nom | Gen | Part + Case = Nom | Gen | Part | Transl | Illat | Iness | Elat | Allat | Adess | Ablat - | Transl | Ess | Termin | Abess | Comit; - + ; NForm = NCase Number Case ; + oper + -- Reduce the Case parameter: many cases use the Genitive stem and just add suffix to it + CasePlus : Type = { + c : Case ; -- e.g. Gen + suf : Str -- e.g. "ga" for comitative + } ; + Nominative = {c = Nom ; suf = []} ; + Genitive = {c = Gen ; suf = []} ; + Partitive = {c = Part ; suf = []} ; + Illative = {c = Illat ; suf = []} ; + Inessive = {c = Iness ; suf = []} ; + Elative = {c = Elat ; suf = []} ; + Allative = {c = Allat ; suf = []} ; + Adessive = {c = Adess ; suf = []} ; + Ablative = {c = Ablat ; suf = []} ; + Translative = {c = Transl ; suf = []} ; + Terminative = {c = Gen ; suf = BIND ++ "ni"} ; + Essive = {c = Gen ; suf = BIND ++ "na"} ; + Abessive = {c = Gen ; suf = BIND ++ "ta"} ; + Comitative = {c = Gen ; suf = BIND ++ "ga"} ; + + param -- Agreement of $NP$ has number*person and the polite second ("te olette valmis"). - - Agr = Ag Number Person | AgPol ; oper @@ -66,6 +85,14 @@ param NPForm = NPCase Case | NPAcc ; oper + NPFormPlus : Type = { + npf : NPForm ; -- e.g. NPCase Gen + suf : Str -- e.g. "ga" for comitative + } ; + + casep2npformp : CasePlus -> NPFormPlus = \cp -> cp ** {npf = NPCase cp.c} ; + case2npformp : NPForm -> NPFormPlus = \npf-> {npf = npf ; suf = []} ; + npform2case : Number -> NPForm -> Case = \n,f -> -- type signature: workaround for gfc bug 9/11/2007 @@ -150,11 +177,11 @@ param --- - Compl : Type = {s : Str ; c : NPForm ; isPre : Bool} ; + Compl : Type = {s : Str ; c : NPFormPlus ; isPre : Bool} ; appCompl : Bool -> Polarity -> Compl -> NP -> Str = \isFin,b,co,np -> let - c = case co.c of { + c = case co.c.npf of { NPAcc => case b of { Neg => NPCase Part ; -- ma ei näe raamatut/sind Pos => case isFin of { @@ -165,25 +192,17 @@ param } } } ; - _ => co.c + _ => co.c.npf } ; -{- - c = case of { - <_, Neg, NPAcc,_> => NPCase Part ; -- en näe taloa/sinua - <_, Pos, NPAcc,True> => NPAcc ; -- näen/täytyy sinut - => NPCase Nom ; -- täytyy nähdä talo - <_,_,coc,_> => coc - } ; --} - nps = np.s ! c + nps = np.s ! c ++ co.c.suf ; -- complement's NPFormPlus may include suffix for the cases based on Gen stem, e.g. comitative "ga" in preOrPost co.isPre co.s nps ; -- Used for passive; c2 of V2/VPSlash becomes sc of VP compl2subjcase : Compl -> NPForm = \compl -> - case compl.c of { + case compl.c.npf of { NPCase Gen => NPCase Nom ; -- valisin koera -> koer valitakse - _ => compl.c -- rääkisin koerale -> koerale räägitakse + _ => compl.c.npf -- rääkisin koerale -> koerale räägitakse } ; -- For $Verb$. @@ -418,7 +437,7 @@ oper -- This is used for subjects of passives: therefore isFin in False. subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> - appCompl False b {s = [] ; c = sc ; isPre = True} np ; + appCompl False b {s = [] ; c = case2npformp sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; @@ -709,31 +728,23 @@ oper NCase Sg Gen => joe ; NCase Sg Part => joge ; NCase Sg Transl => joe + "ks" ; - NCase Sg Ess => joe + "na" ; NCase Sg Iness => joe + "s" ; NCase Sg Elat => joe + "st" ; NCase Sg Illat => joesse ; NCase Sg Adess => joe + "l" ; NCase Sg Ablat => joe + "lt" ; NCase Sg Allat => joe + "le" ; - NCase Sg Abess => joe + "ta" ; - NCase Sg Comit => joe + "ga" ; - NCase Sg Termin => joe + "ni" ; NCase Pl Nom => joe + "d" ; NCase Pl Gen => jogede ; NCase Pl Part => jogesid ; NCase Pl Transl => jogede + "ks" ; - NCase Pl Ess => jogede + "na" ; NCase Pl Iness => jogede + "s" ; NCase Pl Elat => jogede + "st" ; NCase Pl Illat => jogede + "sse" ; NCase Pl Adess => jogede + "l" ; NCase Pl Ablat => jogede + "lt" ; - NCase Pl Allat => jogede + "le" ; - NCase Pl Abess => jogede + "ta" ; - NCase Pl Comit => jogede + "ga" ; - NCase Pl Termin => jogede + "ni" + NCase Pl Allat => jogede + "le" } --; -- lock_N = <> diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 3f5f0c3dc..c07c24b1c 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -34,7 +34,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { insertObj (\\_,b,agr => let n = (complNumAgr agr) in - ap.s ! False ! (NCase n (npform2case n v.c2.c))) --- v.cs.s ignored + ap.s ! False ! (NCase n (npform2case n v.c2.c.npf))) --- v.cs.s ignored (predV v) ; SlashV2S v s = @@ -47,7 +47,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { SlashV2A v ap = insertObj (\\fin,b,_ => - ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c))) ----agr to obj + ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c.npf))) ----agr to obj (predV v) ** {c2 = v.c2} ; ComplSlash vp np = insertObjPre (\\fin,b,_ => appCompl fin b vp.c2 np) vp ; From 4e8ff8e7fdecd96bc44e60e25bd8f8ded6fc3653 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 14 Apr 2022 20:02:44 +0800 Subject: [PATCH 051/141] (Est) Replace all {lock_C = <>} with lin C {...} --- src/estonian/ConjunctionEst.gf | 1 - src/estonian/LexiconEst.gf | 2 +- src/estonian/MakeStructuralEst.gf | 13 +-- src/estonian/MorphoEst.gf | 1 - src/estonian/NounEst.gf | 9 +- src/estonian/ParadigmsEst.gf | 164 ++++++++++++++---------------- src/estonian/ResEst.gf | 13 +-- src/estonian/StructuralEst.gf | 5 +- 8 files changed, 91 insertions(+), 117 deletions(-) diff --git a/src/estonian/ConjunctionEst.gf b/src/estonian/ConjunctionEst.gf index 330bb50b5..d75177331 100644 --- a/src/estonian/ConjunctionEst.gf +++ b/src/estonian/ConjunctionEst.gf @@ -74,7 +74,6 @@ concrete ConjunctionEst of Conjunction = } ; infl = Regular } ; s2 = x ; - lock_ListAP = <> } ; diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index ca2e1cb90..254883ccc 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -366,7 +366,7 @@ lin oper mkOrd1 : N -> Ord ; - mkOrd1 x = {s = x.s ; lock_Ord = <> } ; + mkOrd1 x = lin Ord x ; cpartitive = casePrep partitive ; ctranslative = casePrep translative ; celative = casePrep elative ; diff --git a/src/estonian/MakeStructuralEst.gf b/src/estonian/MakeStructuralEst.gf index 0b17be122..2ce54b28d 100644 --- a/src/estonian/MakeStructuralEst.gf +++ b/src/estonian/MakeStructuralEst.gf @@ -1,11 +1,12 @@ resource MakeStructuralEst = open CatEst, ParadigmsEst, MorphoEst, Prelude in { oper - mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> - {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> - {s = x ; lock_Subj = <>} ; - mkIQuant : Str -> IQuant = \s -> - {s = \\n,c => s ; lock_IQuant = <>} ; ---- + mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> lin Conj { + s1 = x ; + s2 = y ; + n = n + } ; + mkSubj : Str -> Subj = \x -> lin Subj {s = x} ; + mkIQuant : Str -> IQuant = \s -> lin IQuant {s = \\n,c => s} ; } diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index 18de36838..1cd25c5fa 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -457,7 +457,6 @@ These used to be here: AAdv => afs.adv_superl } } ; - lock_A = <> } ; nforms2aforms : NForms -> AForms = \nforms -> diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index b641c6896..f87ae33f9 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -178,13 +178,8 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in UseN2 n = n ; - Use2N3 f = lin N2 { - s = f.s ; - c2 = f.c2 ; - isPre = f.isPre - } ; - Use3N3 f = lin N2 { - s = f.s ; + Use2N3 f = f ; + Use3N3 f = f ** { c2 = f.c3 ; isPre = f.isPre2 } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 2c859b743..55f5cc691 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -158,7 +158,7 @@ oper -- Two-place adjectives need a case for the second argument. mkA2 : A -> Prep -> A2 -- e.g. "vihane" (postGenPrep "peale") - = \a,p -> a ** {c2 = p ; lock_A2 = <>}; + = \a,p -> lin A2 (a ** {c2 = p}) ; invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. @@ -332,10 +332,10 @@ oper isPre = True } ; - mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ; - mkAdV : Str -> AdV = \str -> {s = str ; lock_AdV = <>} ; - mkAdN : Str -> AdN = \str -> {s = str ; lock_AdN = <>} ; - mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; + mkAdv : Str -> Adv = \str -> lin Adv (ss str) ; + mkAdV : Str -> AdV = \str -> lin AdV (ss str) ; + mkAdN : Str -> AdN = \str -> lin AdN (ss str) ; + mkAdA : Str -> AdA = \str -> lin AdA (ss str) ; mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; @@ -344,7 +344,7 @@ oper mkConj : Str -> Str -> Number -> Conj = \nii,kui,num -> lin Conj ((sd2 nii kui) ** {n = num}) ; } ; - mkPConj s = ss s ** {lock_PConj = <>} ; + mkPConj s = lin PConj (ss s) ; mkN = overload { mkN : (nisu : Str) -> N = mk1N ; @@ -360,14 +360,13 @@ oper -- Adjective forms (incl. comp and sup) are derived from noun forms mk1A : Str -> A = \suur -> let aforms = aForms2A (nforms2aforms (hjk_type suur)) - in aforms ** {infl = Regular } ; + in lin A (aforms ** {infl = Regular}) ; mkNA : N -> A = \suur -> let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; - in aforms ** {infl = Regular } ; + in lin A (aforms ** {infl = Regular}) ; - - mk1N : (link : Str) -> N = \s -> nForms2N (hjk_type s) ** {lock_N = <> } ; + mk1N : (link : Str) -> N = \s -> lin N (nForms2N (hjk_type s)) ; -- mk2N, mk3N, mk4N make sure that the user specified forms end up in the paradigm, -- even though the rest is wrong @@ -381,7 +380,7 @@ oper 4 => nfs ! 4 ; 5 => nfs ! 5 } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> @@ -394,7 +393,7 @@ oper 4 => nfs ! 4 ; 5 => nfs ! 5 } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk4N : (paat,paadi,paati,paate : Str) -> N = \paat,paadi,paati,paate -> @@ -407,17 +406,17 @@ oper 4 => nfs ! 4 ; 5 => paate } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk6N : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N = - \a,b,c,d,e,f -> nForms2N (nForms6 a b c d e f) ** {lock_N = <> } ; + \a,b,c,d,e,f -> lin N (nForms2N (nForms6 a b c d e f)) ; - mkStrN : Str -> N -> N = \sora,tie -> { - s = \\c => sora + tie.s ! c ; lock_N = <> + mkStrN : Str -> N -> N = \sora,tie -> tie ** { + s = \\c => sora + tie.s ! c } ; - mkNN : N -> N -> N = \oma,tunto -> { - s = \\c => oma.s ! c + tunto.s ! c ; lock_N = <> + mkNN : N -> N -> N = \oma,tunto -> tunto ** { + s = \\c => oma.s ! c + tunto.s ! c ; } ; ---- TODO: oma in possessive suffix forms @@ -575,12 +574,12 @@ oper mkN2 : N -> Prep -> N2 = mmkN2 } ; - mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ; - mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; + mmkN2 : N -> Prep -> N2 = \n,c -> lin N (n ** {c2 = c ; isPre = mkIsPre c}) ; + mkN3 = \n,c,e -> lin N3 (n ** { + c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista - lock_N3 = <> - } ; + }) ; mkIsPre : Prep -> Bool = \p -> case p.c.npf of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) @@ -589,37 +588,36 @@ oper mkPN = overload { mkPN : Str -> PN = mkPN_1 ; - mkPN : N -> PN = \s -> {s = \\c => s.s ! NCase Sg c ; lock_PN = <>} ; + mkPN : N -> PN = \s -> lin PN {s = \\c => s.s ! NCase Sg c} ; } ; - mkPN_1 : Str -> PN = \s -> {s = \\c => (mk1N s).s ! NCase Sg c ; lock_PN = <>} ; + mkPN_1 : Str -> PN = \s -> lin PN {s = \\c => (mk1N s).s ! NCase Sg c} ; -- adjectives mkA = overload { mkA : Str -> A = mkA_1 ; - mkA : N -> A = \n -> noun2adjDeg n ** {infl = Regular ; lock_A = <>} ; + mkA : N -> A = \n -> noun2adjDeg n ** {infl = Regular} ; mkA : N -> (parem,parim : Str) -> A = regAdjective ; - mkA : N -> (infl : Infl) -> A = \n,infl -> noun2adjDeg n ** {infl = infl ; lock_A = <>} ; + mkA : N -> (infl : Infl) -> A = \n,infl -> noun2adjDeg n ** {infl = infl} ; -- TODO: temporary usage of regAdjective1 mkA : N -> (valmim,valmeim : Str) -> (infl : Infl) -> A = - \n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl ; lock_A = <>} ; + \n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl} ; } ; - invA balti = {s = \\_,_ => balti ; infl = Invariable ; lock_A = <>} ; + invA balti = lin A {s = \\_,_ => balti ; infl = Invariable} ; - mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ; + mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular } ; -- auxiliaries - mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> - {s = table { + mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> lin A ({ + s = table { Posit => hea.s ; Compar => parem.s ; Superl => parim.s } ; infl = Regular ; - lock_A = <> - } ; + }) ; -- Adjectives whose comparison forms are explicitly given. -- The inflection of these forms with the audit-rule always works. @@ -640,7 +638,7 @@ oper -- e.g. lai -> laiem -> laiim? / laieim? -- See also: http://www.eki.ee/books/ekk09/index.php?p=3&p1=4&id=208 -- Rather use "kõige" + Comp instead of the superlative. - noun2adjDeg : Noun -> Adjective = \kaunis -> + noun2adjDeg : Noun -> A = \kaunis -> let kauni = (kaunis.s ! NCase Sg Gen) ; -- Convert the final 'i' to 'e' for the superlative @@ -660,27 +658,13 @@ oper mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs } ; - mk1V : Str -> V = \s -> - let vfs = vforms2V (vForms1 s) in - vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk2V : (_,_ : Str) -> V = \x,y -> - let - vfs = vforms2V (vForms2 x y) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk3V : (_,_,_ : Str) -> V = \x,y,z -> - let - vfs = vforms2V (vForms3 x y z) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> - let - vfs = vforms2V (vForms4 a b c d) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> - let - vfs = vforms2V (vForms8 a b c d e f g h) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> - {s = saama.s ; p = aru ; sc = saama.sc ; lock_V = <> } ; + vforms2v : ResEst.VForms -> CatEst.V = \vfs -> lin V (vforms2verb vfs ** {sc = NPCase Nom}) ; + mk1V : Str -> V = \s -> vforms2v (vForms1 s) ; + mk2V : (_,_ : Str) -> V = \x,y -> vforms2v (vForms2 x y) ; + mk3V : (_,_,_ : Str) -> V = \x,y,z -> vforms2v (vForms3 x y z) ; + mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> vforms2v (vForms4 a b c d) ; + mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> vforms2v (vForms8 a b c d e f g h) ; + mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> saama ** {p=aru} ; -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) @@ -840,10 +824,10 @@ oper caseV c v = v ** {sc = NPCase c.c} ; - vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; - vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; + vOlema = lin V (verbOlema ** {sc = NPCase Nom}) ; + vMinema = lin V (verbMinema ** {sc = NPCase Nom}) ; - mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ; + mk2V2 : V -> Prep -> V2 = \v,c -> lin V2 (v ** {c2 = c}) ; caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; dirV2 v = mk2V2 v accPrep ; @@ -860,20 +844,18 @@ oper dirV2 : V -> V2 ; mkV3 = overload { - mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; - mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - } ; + mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ; + mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = accPrep ; c3 = casePrep allative}) ; + mkV3 : Str -> V3 = \str -> + let v : V = mkV str + in lin V3 (v ** {c2 = accPrep ; c3 = casePrep allative}) + } ; dirV3 v p = mkV3 v accPrep (casePrep p) ; dirdirV3 v = dirV3 v allative ; mkVS = overload { - mkVS : V -> VS = \v -> v ** {lock_VS = <>} ; - mkVS : Str -> VS = \str -> (mkV str) ** {lock_VS = <>} ; + mkVS : V -> VS = \v -> lin VS v ; + mkVS : Str -> VS = \str -> let v : V = mkV str in lin VS v ; } ; mkVV = overload { mkVV : V -> VV = \v -> mkVVf v infDa ; @@ -881,48 +863,50 @@ oper } ; mkVVf v f = lin VV (v ** {vi = f}) ; mkVQ = overload { - mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; - mkVQ : Str -> VQ = \str -> (mkV str) ** {lock_VQ = <>} ; + mkVQ : V -> VQ = \v -> lin VQ v ; + mkVQ : Str -> VQ = \str -> let v : V = mkV str in lin VQ v ; } ; V0 : Type = V ; AS, A2S, AV : Type = A ; A2V : Type = A2 ; - mkV0 v = v ** {lock_V = <>} ; + mkV0 v = v ; mkV2S = overload { - mkV2S : V -> Prep -> V2S = \v,p -> (mk2V2 v p) ** {lock_V2S = <>} ; - mkV2S : Str -> V2S = \str -> (mk2V2 (mkV str) (casePrep allative)) ** {lock_VS = <>} ; + mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (mk2V2 v p) ; + mkV2S : Str -> V2S = \str -> + let v : V = mkV str + in lin V2S (mk2V2 v (casePrep allative)) } ; --- mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ; + mkV2V = overload { mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ; mkV2V : V -> V2V = \v -> mkV2Vf v (casePrep genitive) infMa ; mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ; } ; - mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ; + mkV2Vf v p f = lin V2V (mk2V2 v p ** {vi = f}) ; mkVA = overload { - mkVA : V -> Prep -> VA = \v,p -> v ** {c2 = p ; lock_VA = <>} ; - mkVA : V -> VA = \v -> v ** {c2 = casePrep translative ; lock_VA = <>} ; - mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ; + mkVA : V -> Prep -> VA = \v,p -> lin VA (v ** {c2 = p}) ; + mkVA : V -> VA = \v -> lin VA (v ** {c2 = casePrep genitive}) ; + mkVA : Str -> VA = \str -> let v : V = mkV str in + lin VA (v ** {c2 = casePrep genitive}) ; } ; mkV2A = overload { - mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ; - mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; - c3 = casePrep translative ; - lock_V2A = <>} ; - mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; - c3 = casePrep translative ; - lock_V2A = <>} ; + mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> + lin V2A (v ** {c2 = p ; c3 = q}) ; + mkV2A : V -> V2A = \v -> + lin V2A (v ** {c2 = casePrep genitive ; c3 = casePrep translative}) ; + mkV2A : Str -> V2A = \str -> let v : V = mkV str in + lin V2A (v ** {c2 = casePrep genitive ; c3 = casePrep translative}) ; } ; - mkV2Q v p = mk2V2 v p ** {lock_V2Q = <>} ; + mkV2Q v p = lin V2Q (mk2V2 v p) ; - mkAS v = v ** {lock_A = <>} ; - mkA2S v p = mkA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; + mkAS a = a ; + mkA2S a p = mkA2 a p ; + mkAV a = a ; + mkA2V a p = mkA2 a p ; } ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 066eeb153..6ecc6f5d1 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -71,7 +71,7 @@ param Infl = Regular | Participle | Invariable ; oper - Adjective : Type = {s : Degree => AForm => Str; lock_A : {}} ; + Adjective : Type = {s : Degree => AForm => Str} ; --2 Noun phrases -- @@ -495,9 +495,7 @@ oper --Auxiliary for internal use mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> - vforms2V (vForms8 - tulema tulla tuleb tullakse tulge tuli tulnud tuldud - ) ; + vforms2verb (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud) ; --below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; @@ -515,7 +513,7 @@ oper 7 => tuldud } ; - vforms2V : VForms -> Verb = \vh -> + vforms2verb : VForms -> Verb = \vh -> let tulema = vh ! 0 ; tulla = vh ! 1 ; @@ -624,7 +622,7 @@ oper regVerb : (_,_,_,_ : Str) -> Verb = \kinkima,kinkida,kingib,kingitakse -> - vforms2V (regVForms kinkima kinkida kingib kingitakse) ; + vforms2verb (regVForms kinkima kinkida kingib kingitakse) ; noun2adj : Noun -> Adj = noun2adjComp True ; @@ -746,8 +744,7 @@ oper NCase Pl Ablat => jogede + "lt" ; NCase Pl Allat => jogede + "le" - } --; --- lock_N = <> + } } ; oper diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index 695bc6257..51a09332e 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -34,7 +34,7 @@ concrete StructuralEst of Structural = CatEst ** either7or_DConj = sd2 "kas" "või" ** {n = Sg} ; everybody_NP = makeNP (mkN "igaüks") Sg ; every_Det = mkDet Sg (mkN "iga") ; - everything_NP = makeNP ((mkN "kõik") ** {lock_N = <>}) Sg ; + everything_NP = makeNP (mkN "kõik") Sg ; everywhere_Adv = ss "kõikjal" ; few_Det = mkDet Sg (mkN "mõni") ; --- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ; @@ -257,11 +257,10 @@ oper oper makeNP : N -> MorphoEst.Number -> CatEst.NP ; - makeNP noun num = { + makeNP noun num = lin NP { s = \\c => noun.s ! NCase num (npform2case num c) ; a = agrP3 num ; isPron = False ; - lock_NP = <> } ; lin From 8b14dcf6baa362ea8ae199f0aa466a9f14d62484 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 10:33:41 +0800 Subject: [PATCH 052/141] (Est) misc small cleanup + better comments --- src/estonian/MorphoEst.gf | 40 +++++++-------------------------------- src/estonian/ResEst.gf | 1 - 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index 1cd25c5fa..fe8380238 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -416,23 +416,11 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (satu + "tud") ; -- PastPartPass - ----------------- -- auxiliaries -- ----------------- -{- Noun internal opers moved to ResEst - -These used to be here: - NForms : Type = Predef.Ints 5 => Str ; - Noun : Type = {s: NForm => Str } ; - nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms ; - n2nforms : Noun -> NForms ; - nForms2N : NForms -> Noun ; - --} - -- Adjective forms AForms : Type = { @@ -472,15 +460,6 @@ These used to be here: adv_superl = suur + "immin" ; } ; -{- Verb internal opers moved to ResEst - -These used to be here: - VForms : Type = Predef.Ints 7 => Str ; - vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; - regVForms : (x1,_,_,x4 : Str) -> VForms ; - vforms2V : VForms -> Verb ; --} - ----------------------- -- for Structural @@ -504,10 +483,9 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- Here we define personal and relative pronouns. -- input forms: Nom, Gen, Part - -- Note that the Fin version required 5 input forms, the - -- Est pronouns thus seem to be much simpler. - -- TODO: remove NPAcc? - -- I: keep NPAcc; see appCompl in ResEst, it takes care of finding a right case for various types of complements; incl. when pronouns get different treatment than nouns (PassVP). + -- NPAcc is same as Part for Pron, and same as Gen for other nominals. + -- ResEst.appCompl returns right case for various types of complements, + -- incl. when pronouns get different treatment than nouns (like in PassV2). mkPronoun : (_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \mina, minu, mind, n, p -> @@ -538,6 +516,10 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> _ => x } ; + -- NB. This doesn't work correctly with stem+suffix based solution: + -- Ess, Abess, Comit, Termin all use the long Gen stem. + -- Alternative 1: let Gen be long form, leaving only Nom and Part actually short + -- Alternative 2: leave Gen short, postprocess Ess, Abess, Comit, Termin in application shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> @@ -551,15 +533,9 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> in shortMa ** { s = table { NPCase Allat => mulle ; NPCase Transl => minu + "ks" ; - NPCase Ess => minu + "na" ; - NPCase Abess => minu + "ta" ; - NPCase Comit => minu + "ga" ; - NPCase Termin => minu + "ni" ; x => shortMa.s ! x } } ; - - oper relPron : NForm => Str = @@ -572,7 +548,6 @@ oper ProperName = {s : Case => Str} ; - -- TODO: generate using mkPronoun pronSe : ProperName = { s = table { Nom => "see" ; @@ -588,7 +563,6 @@ oper } ; } ; - -- TODO: generate using mkPronoun pronNe : ProperName = { s = table { Nom => "need" ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 6ecc6f5d1..d5e3e1bc4 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -497,7 +497,6 @@ oper \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> vforms2verb (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud) ; ---below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms = From 8b876cf74c473b359df63c608e15a296af1c00eb Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 10:37:21 +0800 Subject: [PATCH 053/141] (Est) Workaround for short forms of Sg pers. prons Always use long Gen, because other cases are formed from long Gen stem --- src/estonian/MorphoEst.gf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index fe8380238..d8754b512 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -520,6 +520,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- Ess, Abess, Comit, Termin all use the long Gen stem. -- Alternative 1: let Gen be long form, leaving only Nom and Part actually short -- Alternative 2: leave Gen short, postprocess Ess, Abess, Comit, Termin in application + -- Alternative 3: include two Gen stems in NPForm shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> @@ -531,6 +532,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> } ; in shortMa ** { s = table { + NPCase Gen => minu ; -- this is Alternative 1, see comment above. Comment out for Alternative 2. NPCase Allat => mulle ; NPCase Transl => minu + "ks" ; x => shortMa.s ! x } } ; From 0d4b92a006195304427d2df62419cd2b14432e9d Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 19:12:02 +0800 Subject: [PATCH 054/141] (Est) Fix plural genitive forms for mis --- src/estonian/StructuralEst.gf | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index 51a09332e..f74b092bd 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -198,27 +198,21 @@ oper } } ; - --TODO does this work? - mikaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + mikaInt : MorphoEst.Number => MorphoEst.Case => Str = let { - mi = mkN "mille" + mi : N = mkN "mis" "mille" "mida" "millesse" "millede" "mida" } in table { Sg => table { - Nom => "mis" ; - Gen => "mille" ; - Part => "mida" ; c => mi.s ! NCase Sg c } ; Pl => table { Nom => "mis" ; - Gen => "mille" ; - Part => "mida" ; c => mi.s ! NCase Pl c } } ; - kukaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + kukaInt : MorphoEst.Number => MorphoEst.Case => Str = let kuka = mkN "kes" "kelle" "keda" "kellesse" "kellede" "keda" ; From facd4727cf28299f3bddd776b4379be3f307b4b1 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 18 Apr 2022 19:43:38 +0800 Subject: [PATCH 055/141] (Est) Make N2, CN, NP & IP discontinuous Needed for attaching case suffix in right place --- src/estonian/AdjectiveEst.gf | 6 +-- src/estonian/AdverbEst.gf | 2 +- src/estonian/CatEst.gf | 48 +++++++++++----------- src/estonian/ConjunctionEst.gf | 26 +++++++----- src/estonian/ExtendEst.gf | 22 +++++----- src/estonian/ExtraEst.gf | 23 +++++------ src/estonian/IdiomEst.gf | 4 +- src/estonian/NounEst.gf | 74 ++++++++++++++++------------------ src/estonian/ParadigmsEst.gf | 7 +++- src/estonian/PhraseEst.gf | 8 ++-- src/estonian/QuestionEst.gf | 11 +++-- src/estonian/RelativeEst.gf | 8 ++-- src/estonian/ResEst.gf | 69 +++++++++++++++++++++++++++---- src/estonian/StructuralEst.gf | 27 +++++-------- src/estonian/SymbolEst.gf | 18 +++------ src/estonian/VerbEst.gf | 2 +- 16 files changed, 201 insertions(+), 154 deletions(-) diff --git a/src/estonian/AdjectiveEst.gf b/src/estonian/AdjectiveEst.gf index 5cf65d4e2..cb43fe1b0 100644 --- a/src/estonian/AdjectiveEst.gf +++ b/src/estonian/AdjectiveEst.gf @@ -11,14 +11,14 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { } ; ComparA a np = { s = \\isMod,af => case isMod of { - True => np.s ! NPCase Elat ++ a.s ! Compar ! AN af ; -- minust suurem - _ => a.s ! Compar ! AN af ++ "kui" ++ np.s ! NPCase Nom -- suurem kui mina + True => linNP (NPCase Elat) np ++ a.s ! Compar ! AN af ; -- minust suurem + _ => a.s ! Compar ! AN af ++ "kui" ++ linNP (NPCase Nom) np -- suurem kui mina } ; infl = Regular ; --a.infl } ; CAdvAP ad ap np = { - s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPCase Nom ; + s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ linNP (NPCase Nom) np ; infl = ap.infl } ; UseComparA a = { diff --git a/src/estonian/AdverbEst.gf b/src/estonian/AdverbEst.gf index 566f3475d..8b750f624 100644 --- a/src/estonian/AdverbEst.gf +++ b/src/estonian/AdverbEst.gf @@ -5,7 +5,7 @@ concrete AdverbEst of Adverb = CatEst ** open ResEst, Prelude in { lin PositAdvAdj a = {s = a.s ! Posit ! AAdv} ; ComparAdvAdj cadv a np = { - s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ np.s ! NPCase Nom + s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ linNP (NPCase Nom) np } ; ComparAdvAdjS cadv a s = { s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ s.s diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 0b8b5cc6a..945f55d13 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -20,7 +20,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Question QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ; - IP = {s : NPForm => Str ; n : Number} ; + IP = ResEst.IPhrase ; IComp = {s : Agr => Str} ; IDet = {s : Case => Str ; n : Number ; isNum : Bool} ; IQuant = {s : Number => Case => Str} ; @@ -28,7 +28,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Relative RCl = {s : ResEst.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ; - RP = {s : Number => NPForm => Str ; a : RAgr} ; + RP = ResEst.RelPron ; -- Verb @@ -43,20 +43,14 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- The $Infl$ in infl tells whether the adjective inflects as a -- modifier: e.g. "väsinud mehele" vs. "mees muutus väsinuks". - AP = {s : Bool => NForm => Str ; infl : Infl} ; + AP = ResEst.APhrase ; -- Noun - CN = {s : NForm => Str} ; + CN = ResEst.CNoun ; Pron = {s : NPForm => Str ; a : Agr} ; - NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; - DAP, Det = { - s : Case => Str ; -- minun kolme - sp : Case => Str ; -- se (substantival form) - n : Number ; -- Pl (agreement feature for verb) - isNum : Bool ; -- True (a numeral is present) - isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? - } ; + NP = ResEst.NPhrase ; + DAP, Det = ResEst.Determiner ; ---- QuantSg, QuantPl = {s : Case => Str ; isDef : Bool} ; Ord = {s : NForm => Str} ; @@ -75,26 +69,34 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { Conj = {s1,s2 : Str ; n : Number} ; ----b DConj = {s1,s2 : Str ; n : Number} ; Subj = {s : Str} ; - Prep = Compl ; + Prep = ResEst.Compl ; -- Open lexical classes, e.g. Lexicon - V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; - V2, VA, V2Q, V2S = Verb2 ; - V2A, V3 = Verb3 ; - VV = Verb1 ** {vi : InfForms} ; - V2V = Verb2 ** {vi : InfForms} ; + V, VS, VQ = ResEst.Verb1 ; -- = {s : VForm => Str ; sc : Case} ; + V2, VA, V2Q, V2S = ResEst.Verb2 ; + V2A, V3 = ResEst.Verb3 ; + VV = ResEst.Verb1 ** {vi : InfForms} ; + V2V = ResEst.Verb2 ** {vi : InfForms} ; - A = Adjective ** {infl : Infl} ; - A2 = A ** {c2 : Compl} ; + A = ResEst.Adjective ** {infl : Infl} ; + A2 = ResEst.Adjective ** {infl : Infl ; c2 : Compl} ; - N = Noun ; - N2 = Noun ** {c2 : Compl ; isPre : Bool} ; - N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ; + N = ResEst.Noun ; + N2 = ResEst.Noun ** { + postmod : Str ; -- postmod, because N2 can come from N3+complement via ComplN3 + c2 : Compl ; + isPre : Bool} ; + N3 = ResEst.Noun ** { -- no postmod, because N3 can only come from lexical funs + c2,c3 : Compl ; + isPre,isPre2 : Bool + } ; PN = {s : Case => Str} ; linref VP = \vp -> linV vp.v ; + NP = linNP (NPCase Nom) ; + CN = linCN (NCase Sg Nom) ; V,VS,VQ = linV ; V2,VA,V2S,V2Q = linV2 ; diff --git a/src/estonian/ConjunctionEst.gf b/src/estonian/ConjunctionEst.gf index d75177331..51169db48 100644 --- a/src/estonian/ConjunctionEst.gf +++ b/src/estonian/ConjunctionEst.gf @@ -9,11 +9,12 @@ concrete ConjunctionEst of Conjunction = ConjAdv = conjunctDistrSS ; - ConjCN = conjunctDistrTable NForm ; + ConjCN conj ss = conjunctDistrTable NForm conj ss ** ss ; ConjNP conj ss = conjunctDistrTable NPForm conj ss ** { a = conjAgr (Ag conj.n P3) ss.a ; -- P3 is the maximum - isPron = False + isPron = False ; + postmod = ss.postmod } ; ConjAP conj ss = conjunctDistrTableAdj conj ss ; @@ -28,20 +29,20 @@ concrete ConjunctionEst of Conjunction = ConsS = consrSS comma ; BaseAdv = twoSS ; ConsAdv = consrSS comma ; - BaseCN = twoTable NForm ; - ConsCN = consrTable NForm comma ; - BaseNP x y = twoTable NPForm x y ** {a = conjAgr x.a y.a} ; - ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ; + BaseCN x y = twoTable NForm (mergeCN x) y ** {postmod = y.postmod} ; + ConsCN x xs = consrTable NForm comma (mergeCN x) xs ** xs ; + BaseNP x y = twoTable NPForm (mergeNP x) y ** {a = conjAgr x.a y.a ; postmod = y.postmod} ; + ConsNP x xs = consrTable NPForm comma (mergeNP x) xs ** {a = conjAgr xs.a x.a ; postmod = xs.postmod} ; BaseAP x y = twoTableAdj x y ; - ConsAP xs x = consrTableAdj comma x xs ; + ConsAP x xs = consrTableAdj comma x xs ; BaseRS x y = twoTable Agr x y ** {c = y.c} ; - ConsRS xs x = consrTable Agr comma xs x ** {c = xs.c} ; + ConsRS x xs = consrTable Agr comma x xs ** {c = xs.c} ; lincat [S] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ; - [CN] = {s1,s2 : NForm => Str} ; - [NP] = {s1,s2 : NPForm => Str ; a : Agr} ; + [CN] = {s1,s2 : NForm => Str ; postmod : Str} ; + [NP] = {s1,s2 : NPForm => Str ; a : Agr ; postmod : Str} ; [AP] = {s1,s2 : {s : Bool => NForm => Str ; infl : Infl }} ; [RS] = {s1,s2 : Agr => Str ; c : NPForm} ; @@ -53,7 +54,7 @@ concrete ConjunctionEst of Conjunction = s2 = y } ; - consrTableAdj : Str -> [AP] -> {s : Bool => NForm => Str ; infl : Infl} -> [AP] = \c,xs,x -> + consrTableAdj : Str -> APhrase -> [AP] -> [AP] = \c,x,xs -> let ap1 = xs.s1 ; ap2 = xs.s2 @@ -101,4 +102,7 @@ concrete ConjunctionEst of Conjunction = infl = Regular } ; + -- for CN and NP with discontinuous fields, put all stuff in s field + mergeNP : NPhrase -> NPhrase = \np -> np ** {s = \\c => linNP c np} ; + mergeCN : CNoun -> CNoun = \cn -> cn ** {s = \\nf => linCN nf cn} ; } diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index c953be653..b8b2ebd40 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -90,7 +90,7 @@ concrete ExtendEst of Extend = RNPList = {s1,s2 : Agr => NPForm => Str} ; oper - rnp2np : Agr -> RNP -> NP = \agr,rnp -> lin NP { + rnp2np : Agr -> RNP -> NPhrase = \agr,rnp -> emptyNP ** { a = agr ; s = rnp.s ! agr ; isPron = False ; -- ?? @@ -159,7 +159,7 @@ concrete ExtendEst of Extend = AdAdV ad adv = AdAdv ad adv ; -- : AP -> CN ; -- a green one ; en grön (Swe) - AdjAsCN ap = {s = ap.s ! True} ; -- True = attributive ; False = predicative + AdjAsCN ap = emptyCN ** {s = ap.s ! True} ; -- True = attributive ; False = predicative -- : AP -> NP AdjAsNP ap = MassNP (AdjAsCN ap) ; @@ -270,14 +270,14 @@ concrete ExtendEst of Extend = lin -- : NP -> Quant ; -- this man's GenNP np = { - s,sp = \\_,_ => np.s ! NPCase Gen ; + s,sp = \\_,_ => linNP (NPCase Gen) np ; isNum = False ; isDef = True ; isNeg = False } ; -- : IP -> IQuant ; -- whose - GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; + GenIP ip = {s = \\_,_ => linIP (NPCase Gen) ip} ; -- : Num -> CN -> RP ; -- whose car GenRP num cn = { @@ -298,7 +298,7 @@ concrete ExtendEst of Extend = GerundAdv vp = {s = infVPdefault vp InfDes} ; -- : VP -> CN -- publishing of the document (can get a determiner) - GerundCN vp = {s = \\nf => infVPdefault vp InfMine} ; + GerundCN vp = emptyCN ** {s = \\nf => infVPdefault vp InfMine} ; -- : VP -> NP -- publishing the document (by nature definite) GerundNP vp = MassNP (GerundCN vp) ; @@ -331,7 +331,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> NP -> VP ; -- be begged by her to go PassAgentVPSlash vps np = let vp : VP = PassVPSlash vps in vp ** { - adv = vp.adv ++ np.s ! NPCase Gen ++ "poolt" ; + adv = vp.adv ++ appCompl True Pos by8agent_Prep np ; } ; @@ -357,7 +357,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) PastPartAgentAP vp np = { - s = \\_,_ => np.s ! NPCase Gen ++ "poolt" ++ vp2adv vp True (VIPass Past) ; + s = \\_,_ => appCompl True Pos by8agent_Prep np ++ vp2adv vp True (VIPass Past) ; infl = Invariable } ; @@ -407,11 +407,11 @@ concrete ExtendEst of Extend = UseDAPFem, UseDAPMasc = DetNP ; - UttAccIP ip = {s = ip.s ! NPAcc} ; - UttAccNP np = {s = np.s ! NPAcc} ; + UttAccIP ip = {s = linIP NPAcc ip} ; + UttAccNP np = {s = linNP NPAcc np} ; UttAdV adv = adv ; - UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? - UttDatNP np = {s = np.s ! NPCase Part} ; + UttDatIP ip = {s = linIP (NPCase Part) ip} ; -- is partitive a reasonable translation? + UttDatNP np = {s = linNP (NPCase Part) np} ; -- : VP -> Utt ; -- There's no "short form", so just using InfDa instead of InfMa UttVPShort vp = {s = infVPdefault vp InfDa} ; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 644d8e9ea..4fc96a0b5 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -3,7 +3,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** flags coding=utf8; lin GenNP np = { - s,sp = \\_,_ => np.s ! NPCase Gen ; + s,sp = \\_,_ => linNP (NPCase Gen) np ; isNum = False ; isDef = True ; --- "Jussin kolme autoa ovat" ; thus "...on" is missing isNeg = False @@ -15,7 +15,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AbessCN = caseCN Abessive ; -- autota pere TerminCN = caseCN Terminative ; -- maani kleit - GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; + GenIP ip = {s = \\_,_ => linIP (NPCase Gen) ip} ; GenRP num cn = { s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; @@ -87,7 +87,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PassAgentVPSlash vp np = vp ; {- s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; - s2 = \\b,p,a => np.s ! NPCase Nom ++ vp.s2 ! b ! p ! a ; + s2 = \\b,p,a => linNP (NPCase Nom) np ++ vp.s2 ! b ! p ! a ; adv = vp.adv ; ext = vp.ext ; vptyp = vp.vptyp ; @@ -95,7 +95,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AdvExistNP adv np = mkClause (\_ -> adv.s) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; RelExistNP prep rp np = { s = \\t,ant,bo,ag => @@ -105,7 +105,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** (\_ -> appCompl True Pos prep (rp2np n rp)) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; in cl.s ! t ! ant ! bo ! SDecl ; @@ -114,26 +114,26 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AdvPredNP adv v np = mkClause (\_ -> adv.s) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV v)) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV v)) ; ICompExistNP adv np = let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; IAdvPredNP iadv v np = let cl = mkClause (\_ -> iadv.s) np.a (insertObj - (\\_,b,_ => np.s ! v.sc) (predV v)) ; + (\\_,b,_ => linNP v.sc np) (predV v)) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; -- i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ; - whatPart_IP = { + whatPart_IP = emptyIP ** { s = table { - NPCase Nom | NPAcc => "mitä" ; + NPCase Nom | NPAcc => "mida" ; c => whatSg_IP.s ! c } ; n = Sg @@ -142,12 +142,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PartCN cn = let acn = DetCN (DetQuant IndefArt NumSg) cn - in { + in acn ** { s = table { NPCase Nom | NPAcc => acn.s ! NPCase ResEst.Part ; c => acn.s ! c } ; - a = acn.a ; isPron = False ; isNeg = False } ; diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index 59c1b9ef6..8ae3c7caa 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -10,7 +10,7 @@ concrete IdiomEst of Idiom = CatEst ** Pos => NPCase Nom ; -- on olemas lammas Neg => NPCase Part -- ei ole olemas lammast } ; - vp = insertObj (\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla) + vp = insertObj (\\_,b,_ => "olemas" ++ linNP (cas b) np) (predV olla) in existClause noSubj (agrP3 Sg) vp ; @@ -28,7 +28,7 @@ concrete IdiomEst of Idiom = CatEst ** CleftNP np rs = mkClause (\_ -> "see") (agrP3 Sg) (insertExtrapos (rs.s ! np.a) - (insertObj (\\_,_,_ => np.s ! NPCase Nom) (predV olla))) ; + (insertObj (\\_,_,_ => linNP (NPCase Nom) np) (predV olla))) ; -- This gives the almost forbidden "se on Porissa kun Matti asuu". -- Est: "see on Toris, kus Mati elab" (?) diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index f87ae33f9..f353b1e67 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -22,7 +22,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } - in { + in cn ** { s = \\c => let k = ncase c ; in @@ -41,7 +41,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in True => Sg ; _ => det.n } ; - in { + in emptyNP ** { s = \\c => let k = npform2case n c in det.sp ! k ; a = agrP3 (case det.isDef of { @@ -51,37 +51,24 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isPron = False } ; - UsePN pn = { + UsePN pn = emptyNP ** { s = \\c => pn.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; - UsePron p = p ** {isPron = True} ; + UsePron p = p ** {isPron = True ; postmod = []} ; - PredetNP pred np = { + PredetNP pred np = np ** { s = \\c => pred.s ! complNumAgr np.a ! c ++ np.s ! c ; - a = np.a ; - isPron = np.isPron -- kaikki minun - ni } ; PPartNP np v2 = let num : Number = complNumAgr np.a ; part : Str = v2.s ! (PastPart Pass) ; - adj : NForms = hjk_type_IVb_maakas part ; - partGen : Str = adj ! 1 ; - partEss : Str = partGen + "na" - in { - s = \\c => np.s ! c ++ part ; --partEss ; - a = np.a ; - isPron = np.isPron -- minun täällä - ni - } ; + in np ** {postmod = np.postmod ++ part} ; - AdvNP np adv = { - s = \\c => np.s ! c ++ adv.s ; - a = np.a ; - isPron = np.isPron -- minun täällä - ni - } ; + AdvNP np adv = np ** {postmod = np.postmod ++ adv.s} ; DetQuantOrd quant num ord = { s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; @@ -120,7 +107,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing } ; - PossNP cn np = {s = \\nf => np.s ! NPCase Gen ++ cn.s ! nf }; + PossNP cn np = np ** {s = \\nf => linNP (NPCase Gen) np ++ cn.s ! nf} ; NumSg = {s = \\_,_ => [] ; isNum = False ; n = Sg} ; NumPl = {s = \\_,_ => [] ; isNum = False ; n = Pl} ; @@ -167,36 +154,44 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in let n : Number = Sg ; ncase : Case -> NForm = \c -> NCase n c ; - in { + in cn ** { s = \\c => let k = npform2case n c in cn.s ! ncase k ; a = agrP3 Sg ; isPron = False } ; - UseN n = n ; + UseN n = emptyCN ** { + s = n.s + } ; UseN2 n = n ; - Use2N3 f = f ; + Use2N3 f = f ** { + postmod = [] + } ; Use3N3 f = f ** { c2 = f.c3 ; - isPre = f.isPre2 + isPre = f.isPre2 ; + postmod = [] } ; - ComplN2 f x = { - s = \\nf => preOrPost f.isPre (f.s ! nf) (appCompl True Pos f.c2 x) + ComplN2 f x = let compl : Str = appCompl True Pos f.c2 x in { + s = \\nf => case f.isPre of { + True => f.s ! nf ; -- N2 is pre, so compl goes into postmod + False => compl ++ f.s ! nf -- N2 isn't pre, compl goes in s before the N2 + } ; + postmod = f.postmod ++ if_then_Str f.isPre compl [] } ; - - ComplN3 f x = lin N2 { - s = \\nf => preOrPost f.isPre (f.s ! nf) (appCompl True Pos f.c2 x) ; + -- N2 is subtype of CN, so we can reuse result of ComplN2 as a base for our CN. + -- The decision of noun-complement order is only done once, in ComplN2. + ComplN3 f x = let cn : CN = ComplN2 (Use2N3 f) x in cn ** { c2 = f.c3 ; isPre = f.isPre2 } ; - - AdjCN ap cn = { + AdjCN ap cn = cn ** { s = \\nf => case ap.infl of { Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile @@ -204,19 +199,20 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } } ; - RelCN cn rs = {s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf)} ; + RelCN cn rs = cn ** { -- exception to postmod rule, because RS depends on Agr + s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf) + } ; - RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; + RelNP np rs = np ** { + postmod = np.postmod ++ "," ++ rs.s ! np.a ; isPron = np.isPron ---- correct ? } ; - AdvCN cn ad = {s = \\nf => cn.s ! nf ++ ad.s} ; + AdvCN cn ad = cn ** {postmod = cn.postmod ++ ad.s} ; - SentCN cn sc = {s = \\nf=> cn.s ! nf ++ sc.s} ; + SentCN cn sc = cn ** {postmod = cn.postmod ++ sc.s} ; - ApposCN cn np = {s = \\nf=> cn.s ! nf ++ np.s ! NPCase Nom} ; --- luvun x + ApposCN cn np = cn ** {postmod = cn.postmod ++ linNP (NPCase Nom) np} ; --- luvun x oper numN : NForm -> Number = \nf -> case nf of { diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 55f5cc691..45bffe7d7 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -574,7 +574,12 @@ oper mkN2 : N -> Prep -> N2 = mmkN2 } ; - mmkN2 : N -> Prep -> N2 = \n,c -> lin N (n ** {c2 = c ; isPre = mkIsPre c}) ; + mmkN2 : N -> Prep -> N2 = \n,c -> lin N2 (n ** { + c2 = c ; + isPre = mkIsPre c ; + postmod = [] + }) ; + mkN3 = \n,c,e -> lin N3 (n ** { c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi diff --git a/src/estonian/PhraseEst.gf b/src/estonian/PhraseEst.gf index 0557107b1..a50c61db9 100644 --- a/src/estonian/PhraseEst.gf +++ b/src/estonian/PhraseEst.gf @@ -9,12 +9,12 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Ag Pl P2} ; UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! AgPol} ; - UttIP ip = {s = ip.s ! NPCase Nom} ; + UttIP ip = {s = linIP (NPCase Nom) ip} ; UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! NPCase Nom} ; + UttNP np = {s = linNP (NPCase Nom) np} ; UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; UttAdv adv = adv ; - UttCN np = {s = np.s ! NCase Sg Nom} ; + UttCN cn = {s = linCN (NCase Sg Nom) cn} ; UttAP np = {s = np.s ! P.False ! NCase Sg Nom} ; UttCard n = {s = n.s ! Sg ! Nom} ; UttInterj i = i ; @@ -23,6 +23,6 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { PConjConj conj = {s = conj.s2} ; NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! NPCase Nom} ; + VocNP np = {s = "," ++ linNP (NPCase Nom) np} ; } diff --git a/src/estonian/QuestionEst.gf b/src/estonian/QuestionEst.gf index 58a69f6b7..0df94f21c 100644 --- a/src/estonian/QuestionEst.gf +++ b/src/estonian/QuestionEst.gf @@ -40,16 +40,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { PrepIP p ip = {s = appCompl True Pos p (ip ** {a = agrP3 ip.n ; isPron = False})} ; - AdvIP ip adv = { - s = \\c => ip.s ! c ++ adv.s ; - n = ip.n + AdvIP ip adv = ip ** { + postmod = ip.postmod ++ adv.s ; } ; -- The computation of $ncase$ is a special case of that in $NounEst.DetCN$, -- since we don't have possessive suffixes or definiteness. --- It could still be nice to have a common oper... - IdetCN idet cn = let n = idet.n in { + IdetCN idet cn = let n = idet.n in emptyIP ** { s = \\c => let k : Case = npform2case n c ; @@ -67,7 +66,7 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { n = n } ; - IdetIP idet = let n = idet.n in { + IdetIP idet = let n = idet.n in emptyIP ** { s = \\c => let k = npform2case n c ; @@ -97,6 +96,6 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { AdvIAdv i a = {s = i.s ++ a.s} ; CompIAdv a = {s = \\_ => a.s} ; - CompIP ip = {s = \\_ => ip.s ! NPCase Nom} ; + CompIP ip = {s = \\_ => linIP (NPCase Nom) ip} ; } diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 4be5f96ae..7cf10c345 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -18,8 +18,10 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in RAg a => a } ; cl = mkClause - (subjForm {s = rp.s ! (complNumAgr agr) ; - a = agr ; isPron = False} vp.sc) agr vp + (subjForm + (emptyNP ** {s = rp.s ! complNumAgr agr ; a = agr}) + vp.sc) + agr vp in cl.s ! t ! ant ! b ! SDecl ; c = NPCase Nom @@ -36,7 +38,7 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; FunRP p np rp = { - s = \\n,c => appCompl True Pos p (rp2np n rp) ++ np.s ! c ; --- is c OK? + s = \\n,c => appCompl True Pos p (rp2np n rp) ++ linNP c np ; --- is c OK? a = RAg np.a } ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index d5e3e1bc4..5e7f45c6b 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -57,8 +57,34 @@ resource ResEst = ParamX ** open Prelude in { } ; oper - NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; + IPhrase : Type = { + s : NPForm => Str ; -- the noun phrase + premodifiers + postmod : Str ; -- adverb, RS, etc. other postmods + n : Number + } ; + NPhrase : Type = { + s : NPForm => Str ; -- the noun phrase + premodifiers + postmod : Str ; -- adverb, RS, etc. other postmods + a : Agr ; + isPron : Bool + } ; + + emptyNP : NPhrase = { + s = \\_ => [] ; + postmod = [] ; + a = agrP3 Sg ; + isPron = False + } ; + + emptyIP : IPhrase = { + s = \\_ => [] ; + postmod = [] ; + n = Sg ; + } ; + + linNP : NPForm -> NPhrase -> Str = \npf,np -> np.s ! npf ++ np.postmod ; + linIP : NPForm -> IPhrase -> Str = \npf,ip -> ip.s ! npf ++ ip.postmod ; -- --2 Adjectives -- @@ -73,6 +99,8 @@ param oper Adjective : Type = {s : Degree => AForm => Str} ; + APhrase : Type = {s : Bool => NForm => Str ; infl : Infl} ; + --2 Noun phrases -- -- Two forms of *virtual accusative* are needed for nouns in singular, @@ -179,7 +207,9 @@ param Compl : Type = {s : Str ; c : NPFormPlus ; isPre : Bool} ; - appCompl : Bool -> Polarity -> Compl -> NP -> Str = \isFin,b,co,np -> + npfplus2compl : NPFormPlus -> Compl = \npf -> {s = [] ; c = npf ; isPre = False} ; + + appCompl : Bool -> Polarity -> Compl -> NPhrase -> Str = \isFin,b,co,np -> let c = case co.c.npf of { NPAcc => case b of { @@ -196,7 +226,7 @@ param } ; nps = np.s ! c ++ co.c.suf ; -- complement's NPFormPlus may include suffix for the cases based on Gen stem, e.g. comitative "ga" in - preOrPost co.isPre co.s nps ; + preOrPost co.isPre co.s nps ++ np.postmod ; -- Used for passive; c2 of V2/VPSlash becomes sc of VP compl2subjcase : Compl -> NPForm = \compl -> @@ -436,7 +466,7 @@ oper -- This is used for subjects of passives: therefore isFin in False. - subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> + subjForm : NPhrase -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = case2npformp sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; @@ -644,6 +674,15 @@ oper Noun : Type = {s : NForm => Str} ; + CNoun : Type = Noun ** {postmod : Str} ; + + emptyCN : CNoun = { + s = \\nf => [] ; + postmod = [] + } ; + + linCN : NForm -> CNoun -> Str = \nf,cn -> cn.s ! nf ++ cn.postmod ; + -- To form an adjective, it is usually enough to give a noun declension: the -- adverbial form is regular. @@ -666,13 +705,13 @@ oper -- Reflexive pronoun. --- Possessive could be shared with the more general $NounFin.DetCN$. - reflPron : Agr -> NP = \agr -> + reflPron : Agr -> NPhrase = \agr -> let ise = nForms2N (nForms6 "ise" "enda" "ennast" "endasse" "endi" "endid") ; n = case agr of { AgPol => Sg ; Ag n _ => n } ; - in { + in emptyNP ** { s = table { NPAcc => "ennast" ; NPCase c => fixPlNom "endid" ise.s ! NCase n c @@ -747,7 +786,11 @@ oper } ; oper - rp2np : Number -> {s : Number => NPForm => Str ; a : RAgr} -> NP = \n,rp -> { + -- Technically, we could also add a postmod field for RP, + -- because multiple applications of FunRP add multiple complements. + -- But I will only add it if I see a real-world sentence that uses multiple applications of FunRP. + RelPron : Type = {s : Number => NPForm => Str ; a : RAgr} ; + rp2np : Number -> RelPron -> NPhrase = \n,rp -> emptyNP ** { s = rp.s ! n ; a = agrP3 Sg ; -- does not matter (--- at least in Slash) isPron = False -- has no special accusative @@ -755,7 +798,17 @@ oper etta_Conj : Str = "et" ; - heavyDet : PDet -> PDet ** {sp : Case => Str} = \d -> d ** {sp = d.s} ; + Determiner : Type = { + s : Case => Str ; -- minun kolme + sp : Case => Str ; -- se (substantival form) + n : Number ; -- Pl (agreement feature for verb) + isNum : Bool ; -- True (a numeral is present) + isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? + } ; + + IDeterminer : Type = {s : Case => Str ; n : Number ; isNum : Bool} ; + + heavyDet : PDet -> Determiner = \d -> d ** {sp = d.s} ; PDet : Type = { s : Case => Str ; n : Number ; diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index f74b092bd..b5e2857a1 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -78,10 +78,8 @@ concrete StructuralEst of Structural = CatEst ** quite_Adv = ss "üsna" ; she_Pron = mkPronoun "tema" "tema" "teda" Sg P3 ; so_AdA = ss "nii" ; - somebody_NP = { + somebody_NP = emptyNP ** { s = \\c => jokuPron ! Sg ! npform2case Sg c ; - a = agrP3 Sg ; - isPron = False } ; someSg_Det = heavyDet { s = jokuPron ! Sg ; @@ -92,10 +90,8 @@ concrete StructuralEst of Structural = CatEst ** isNum = False ; isDef = True ; n = Pl } ; - something_NP = { + something_NP = emptyNP ** { s = \\c => mikaInt ! Sg ! npform2case Sg c ; - a = agrP3 Sg ; - isPron = False } ; somewhere_Adv = ss "kuskil" ; that_Quant = heavyQuant { @@ -133,11 +129,11 @@ concrete StructuralEst of Structural = CatEst ** very_AdA = ss "väga" ; want_VV = mkVV (mkV "tahtma") ; we_Pron = mkPronoun "meie" "meie" "meid" Pl P1 ; - whatPl_IP = { + whatPl_IP = emptyIP ** { s = table {NPAcc => "mida" ; c => mikaInt ! Pl ! npform2case Pl c} ; n = Pl } ; - whatSg_IP = { + whatSg_IP = emptyIP ** { s = \\c => mikaInt ! Sg ! npform2case Sg c ; n = Sg } ; @@ -145,11 +141,11 @@ concrete StructuralEst of Structural = CatEst ** when_Subj = ss "kui" ; where_IAdv = ss "kus" ; which_IQuant = { s = mikaInt } ; - whoSg_IP = { + whoSg_IP = emptyIP ** { s = table {NPAcc => "keda" ; c => kukaInt ! Sg ! npform2case Sg c} ; n = Sg } ; - whoPl_IP = { + whoPl_IP = emptyIP ** { s = table {NPAcc => "keda" ; c => kukaInt ! Pl ! npform2case Pl c} ; n = Pl } ; @@ -250,11 +246,10 @@ oper oper - makeNP : N -> MorphoEst.Number -> CatEst.NP ; - makeNP noun num = lin NP { + makeNP : N -> MorphoEst.Number -> NPhrase ; + makeNP noun num = emptyNP ** { s = \\c => noun.s ! NCase num (npform2case num c) ; a = agrP3 num ; - isPron = False ; } ; lin @@ -266,16 +261,14 @@ lin } ; if_then_Conj = {s1 = "kui" ; s2 = "siis" ; n = Sg} ; - nobody_NP = { + nobody_NP = emptyNP ** { s = \\c => "mitte" ++ kukaanPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; - isPron = False } ; - nothing_NP = { + nothing_NP = emptyNP ** { s = \\c => "mitte" ++ mikaanPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; - isPron = False } ; at_least_AdN = ss "vähemalt" ; diff --git a/src/estonian/SymbolEst.gf b/src/estonian/SymbolEst.gf index 0d1000a68..df6827d5b 100644 --- a/src/estonian/SymbolEst.gf +++ b/src/estonian/SymbolEst.gf @@ -8,20 +8,14 @@ lin FloatPN i = {s = \\c => i.s} ; --- c NumPN i = {s = \\c => i.s!Sg!Nom } ; --- c - CNIntNP cn i = { - s = \\c => cn.s ! NCase Sg (npform2case Sg c) ++ i.s ; - a = agrP3 Sg ; - isPron = False + CNIntNP cn i = let np : NP = NounEst.MassNP cn in np ** { + postmod = np.postmod ++ i.s ; } ; - CNSymbNP det cn xs = let detcn = NounEst.DetCN det cn in { - s = \\c => detcn.s ! c ++ xs.s ; - a = detcn.a ; - isPron = False + CNSymbNP det cn xs = let np : NP = NounEst.DetCN det cn in np ** { + postmod = np.postmod ++ xs.s ; } ; - CNNumNP cn i = { - s = \\c => cn.s ! NCase Sg (npform2case Sg c) ++ i.s ! Sg ! Nom ; - a = agrP3 Sg ; - isPron = False + CNNumNP cn i = let np : NP = NounEst.MassNP cn in np ** { + postmod = np.postmod ++ i.s ! Sg ! Nom ; } ; SymbS sy = sy ; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index c07c24b1c..2fa22f136 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -87,7 +87,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { CompAP = compAP ; CompCN = compCN ; - CompNP np = {s = \\_ => np.s ! NPCase Nom} ; + CompNP np = {s = \\_ => linNP (NPCase Nom) np} ; CompAdv a = {s = \\_ => a.s} ; } From 79ea965fc41afb5a94039f749980dddc4250596a Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 18 Apr 2022 19:43:57 +0800 Subject: [PATCH 056/141] (Est) Test cases for comitative --- src/estonian/unittest/comitative.gftest | 146 ++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 src/estonian/unittest/comitative.gftest diff --git a/src/estonian/unittest/comitative.gftest b/src/estonian/unittest/comitative.gftest new file mode 100644 index 000000000..249b4857e --- /dev/null +++ b/src/estonian/unittest/comitative.gftest @@ -0,0 +1,146 @@ +-- Comitative, Essive, Abessive and Terminative cases are not in the inflection table of nominal categories, +-- instead they use the Genitive stem and add a suffix with BIND token. +-- Here are tests for those cases. + +-- NB. Ignore any weirdness with the word "koos". +-- That just happens to be the linearisation of with_Prep, +-- we can as easily replace it with just the case -ga, +-- or in an application, have two versions, one "koos …ga" and other just "…ga". +-- But do point out any other unexpected weirdness/ungrammaticality! + +-- Comitative, case attaches to the noun + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumSg) (UseN dog_N)))) +LangEng: I play with this dog +LangEst: mina mängin koos selle koera &+ ga + +Lang: PredVP (UsePron we_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumPl) (UseN dog_N)))) +LangEng: we play with these dogs +LangEst: meie mängime koos nende koerade &+ ga + +-- Interrogative versions + +-- First, reason why the interrogative pronoun doesn't inflect is this http://www.eki.ee/books/ekk09/index.php?p=5&p1=3&id=452 +-- "Üldse ei ühildu: asesõnad mis (kui ta ei osuta omadusele, vaid on identifitseerivas funktsioonis) [..], +-- nt 'Mis keelt te räägite?' " +-- So because of that, it doesn't inflect in any position. Here is the eki example: + +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN language_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a speak_V2)) +LangEng: which language do you speak +LangEst: mis keelt sina räägid + +-- But should the interrogative inflect when PrepIP is applied? Or is "koos mis koeraga" still fine? + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumSg) (UseN dog_N))) (PredVP (UsePron youSg_Pron) (UseV play_V)) +LangEng: with which dog do you play +LangEst: koos mis koera &+ ga sina mängid + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumPl) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) +LangEng: with which dogs do you play +LangEst: koos mis koerade &+ ga teie mängite + +-- Adding a number, does it affect the behaviour of +-- a) suffix attachment? b) agreement of interrogative? + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N)))) +LangEng: I play with these three dogs +LangEst: mina mängin koos nende kolme koera &+ ga + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N)))) +LangEng: I play with these 3 dogs +LangEst: mina mängin koos nende 3 koera &+ ga + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N))) (PredVP (UsePron youPol_Pron) (UseV play_V)) +LangEng: with which three dogs do you play +-- Which one is best? +-- 1) koos mis kolm koeraga teie mängite +-- 2) koos mis kolme koeraga teie mängite +-- 3) koos mille kolme koeraga teie mängite +-- 4) All are ungrammatical (provide more grammatical translation that is still compositional, not paraphrase) + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) +LangEng: with which 3 dogs do you play +-- Which one is best? +-- 1) koos mis 3 koeraga teie mängite +-- 2) koos mille 3 koeraga teie mängite +-- 3) All are ungrammatical (provide more grammatical translation) + +------------------------------------------------------------------------------------------ +-- Now we skip the content word, and make the determiner (possibly with number) into NP/IP +-- The relevant functions are DetNP : Det -> NP and IDetIP : IDet -> IP + +-- No number, case attaches to determiner/interrogative +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant NumPl)))) +LangEng: I play with these +LangEst: mina mängin koos nende &+ ga + +Lang: QuestIAdv (PrepIP with_Prep whoSg_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with whom do you sing +LangEst: koos kelle &+ ga sina laulad + +Lang: QuestIAdv (PrepIP with_Prep whoPl_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with whom do you sing +LangEst: koos kellede &+ ga sina laulad + +-- Adding a number to a determiner, does this affect the comitative suffix placement? +-- Context of the sentence is an ellipsis, "I sing with these 3 (singers)" + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) +LangEng: I sing with these three +-- Which one is better? +-- 1) mina laulan koos nende kolmega +-- 2) mina laulan koos nendega kolme + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumDigits (IDig D_3))))))) +LangEng: I sing with these 3 +LangEst: mina laulan koos nende 3 &+ ga +-- Which one is better? +-- 1) mina laulan koos nende 3ga +-- 2) mina laulan koos nendega 3 + +-- Adding a number to an interrogative, how does suffix placement + agreement work now? + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which three do you sing +-- Which one is best? +-- 1) koos millede kolmega sina laulad +-- 2) koos mille kolmega sina laulad +-- 3) koos mis kolmega sina laulad +-- 4) koos millega kolme sina laulad +-- 5) koos milledega kolme sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which 3 do you sing +-- Which one is best? +-- 1) koos millede 3ga sina laulad +-- 2) koos mille 3ga sina laulad +-- 3) koos mis 3ga sina laulad +-- 4) koos millega 3 sina laulad +-- 5) koos milledega 3 sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + + +-- Adding premodifiers to the number, does that change anything? + +-- Weird sentence, but imagine like, you point to a group of people, "I sing with these at most three", +-- like you are the soloist and want at most 3 backup singers, who are among a group you are pointing at. +-- If there was no ellipsis, the phrase would just be "koos nende kuni kolme lauljatega"? +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))))) +LangEng: I sing with these at most three +LangEst: mina laulan koos nende kuni kolme &+ ga +-- Which one is better? +-- 1) mina laulan koos nende kuni kolmega +-- 2) mina laulan koos nendega kuni kolme + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which at most three do you sing +LangEst: koos millede kuni kolme &+ ga sina laulad +-- Which one is best? +-- 1) koos millede kuni kolmega sina laulad +-- 2) koos mille kuni kolmega sina laulad +-- 3) koos mis kuni kolmega sina laulad +-- 4) koos millega kuni kolme sina laulad +-- 5) koos milledega kuni kolme sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + From 613a159591609b18eba22ddf9e06701898dfad01 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 19 Apr 2022 15:02:34 +0800 Subject: [PATCH 057/141] (Est) fix wrong forms given to mkN in full_A --- src/estonian/LexiconEst.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index 254883ccc..de0643715 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -232,7 +232,7 @@ lin correct_A = mkA (mkN "õige" "õige" "õiget" "õigesse" "õigete" "õigeid") ; dry_A = mkA (mkN "kuiv" "kuiva" "kuiva") "kuivem" "kuiveim" ; dull_A = mkA "igav" ; - full_A = mkA (mkN "täis" "täie" "täit" "täide" "täied" "täite") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives + full_A = mkA (mkN "täis" "täie" "täit" "täide" "täite" "täisi") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives heavy_A = mkA "raske" ; near_A = mkA "lähedane" ; rotten_A = mkA "mäda" ; From 916cca5d22cc5c66a12915ed4c9f8f80e872ca29 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 24 Nov 2021 10:29:20 +0800 Subject: [PATCH 058/141] fix malay for these cats arent' green for negation in unittest --- src/malay/unittest/negation.gftest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/unittest/negation.gftest b/src/malay/unittest/negation.gftest index 95c152333..f44c7a3db 100644 --- a/src/malay/unittest/negation.gftest +++ b/src/malay/unittest/negation.gftest @@ -8,7 +8,7 @@ LangMay: kucing tidak berjalan Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (UseComp (CompAP (PositA green_A)))) LangEng: these cats aren't green -LangMay: kucing-kucing ini hijau +LangMay: kucing-kucing ini tidak hijau Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (UseComp (CompAdv (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) LangEng: those cats aren't in the house From dd05feeac02199560b54b5208582d08295b4ef69 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 24 Nov 2021 11:26:23 +0800 Subject: [PATCH 059/141] WIP negation for chinese --- src/chinese/unittest/negation.gftest | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/chinese/unittest/negation.gftest diff --git a/src/chinese/unittest/negation.gftest b/src/chinese/unittest/negation.gftest new file mode 100644 index 000000000..1d9f4c6f8 --- /dev/null +++ b/src/chinese/unittest/negation.gftest @@ -0,0 +1,29 @@ +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (MassNP (UseN cat_N)) (UseComp (CompCN (UseN dog_N)))) +LangEng: cat isn't a dog +LangChi: 猫 不 是 狗 + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (UseComp (CompAP (PositA green_A)))) +LangEng: these cats aren't green +LangChi: 这 些 猫 不 是 绿 色 的 + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (UseComp (CompAdv (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) +LangEng: those cats aren't in the house +LangChi: 那 些 猫 不 在 房 子 中 + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV can8know_VV (UseV walk_V))) +LangChi: 这 些 猫 不 会 走 +LangEng: these cats can't walk + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV can_VV (UseV walk_V))) +LangChi: 这 些 猫 不 能 走 +LangEng: these cats can't walk + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV want_VV (UseV walk_V))) +LangChi: 这 些 猫 不 想 走 +LangEng: these cats don't want to walk + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (ComplVV must_VV (UseV walk_V))) +LangChi: 那 些 猫 不 行 走 +LangEng: those cats mustn't walk + +-- 没有 and must not , bu ke yi \ No newline at end of file From 5679eeb1fbfd10e998e23d4a0276ea3a5985a57b Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Tue, 7 Dec 2021 16:28:09 +0800 Subject: [PATCH 060/141] adjectives colour --- src/chinese/unittest/adjectives.gftest | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/chinese/unittest/adjectives.gftest diff --git a/src/chinese/unittest/adjectives.gftest b/src/chinese/unittest/adjectives.gftest new file mode 100644 index 000000000..4fbfc9a89 --- /dev/null +++ b/src/chinese/unittest/adjectives.gftest @@ -0,0 +1,3 @@ +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (AdjCN (PositA green_A) (UseN cat_N))) (UseComp (CompAP (PositA green_A)))) +LangChi: 那 只 绿 猫 是 绿 色 的 +LangEng: that green cat is green \ No newline at end of file From 42a6de980346686e06985b6129c4f7ef0b5731c1 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Fri, 17 Dec 2021 14:50:20 +0800 Subject: [PATCH 061/141] fixed SentAP and AdvAP for AdjPlace in ResChi --- src/chinese/AdjectiveChi.gf | 14 ++++-- src/chinese/ResChi.gf | 92 ++++++++++++++++++++----------------- 2 files changed, 60 insertions(+), 46 deletions(-) diff --git a/src/chinese/AdjectiveChi.gf b/src/chinese/AdjectiveChi.gf index 61c2fa60f..4befaaf42 100644 --- a/src/chinese/AdjectiveChi.gf +++ b/src/chinese/AdjectiveChi.gf @@ -18,12 +18,20 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in { ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ; - SentAP ap sc = complexAP (ap.s ++ sc.s) ; + + -- SentAP ap sc = complexAP (ap.s ++ sc.s) ; + SentAP ap sc = ap ** { + + s = table { adjPlace => ap.s ! adjPlace ++ sc.s } + } ; AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ; UseA2 a = a ** {hasAdA = False} ; - - AdvAP ap adv = complexAP (adv.s ++ ap.s) ; ---- + + -- AdvAP ap adv = complexAP (adv.s ++ ap.s) ; + AdvAP ap adv = ap ** { + s = table { adjPlace => adv.s ++ ap.s ! adjPlace } + }; } diff --git a/src/chinese/ResChi.gf b/src/chinese/ResChi.gf index e30a87941..08804798e 100644 --- a/src/chinese/ResChi.gf +++ b/src/chinese/ResChi.gf @@ -67,9 +67,9 @@ resource ResChi = ParamX ** open Prelude in { bword : Str -> Str -> Str = \x,y -> x ++ y ; -- change to x + y to treat words as single tokens word : Str -> Str = \s -> case s of { - x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? + e@? => + x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? + e@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c (bword d e))))))))) ; - x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? => + x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c d)))))))) ; x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b c))))))) ; x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a b)))))) ; @@ -96,6 +96,8 @@ param AdvType = ATPlace Bool | ATTime | ATManner | ATPoss ; -- ATPlace True = has zai_s already + AdjPlace = Attr | Pred ; -- a green cat / the cat is green colour + -- parts of speech oper @@ -103,25 +105,29 @@ oper VP = { topic : Str ; -- topicalized item, before subject prePart : Str ; -- between subject and verb - verb : Verb ; + verb : Verb ; compl : Str ; -- after verb - isAdj : Bool ; -- whether it is an adjectival predication and behaves differently in relative + isAdj : Bool ; -- whether it is an adjectival predication and behaves differently in relative } ; - NP = {s : Str} ; + NP = {s : Str} ; -- for morphology Noun : Type = {s : Str ; c : Str} ; - Adj : Type = {s : Str ; monoSyl: Bool} ; + Adj : Type = {s : AdjPlace => Str ; monoSyl: Bool} ; Verb : Type = {s,sn : Str ; pp,ds,dp,ep : Str ; neg : Str} ; --- sn=[] needed for "hen" as copula regNoun : Str -> Str -> Noun = \s,c -> {s = word s ; c = word c}; - mkAdj : Str -> Bool -> Adj = \s,b -> {s = word s ; monoSyl = b}; + mkAdj : Str -> Bool -> Adj = \s,b -> {s = + table { + _ => word s + }; + monoSyl = b}; - complexAP : Str -> Adj ** {hasAdA : Bool} = - \s -> {s = s ; monoSyl = False ; hasAdA = False} ; --- not used for adding AdA + complexAP : Str -> Adj ** {hasAdA : Bool} = + \s -> mkAdj s False ** {hasAdA = False} ; --- not used for adding AdA simpleAdj : Str -> Adj = \s -> case s of { ? => mkAdj s True ; -- monosyllabic @@ -129,22 +135,22 @@ oper } ; copula : Verb = mkVerb "是" [] [] [] [] "不" ; - hen_copula : Verb = - {s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- - nocopula : Verb = - {s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- - adjcopula : Verb = - {s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- + hen_copula : Verb = + {s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- + nocopula : Verb = + {s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- + adjcopula : Verb = + {s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- - regVerb : (walk : Str) -> Verb = \v -> + regVerb : (walk : Str) -> Verb = \v -> mkVerb v "了" "着" "在" "过" "不" ; -- 没" ; noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs - mkVerb : (v : Str) -> (pp,ds,dp,ep,neg : Str) -> Verb = \v,pp,ds,dp,ep,neg -> + mkVerb : (v : Str) -> (pp,ds,dp,ep,neg : Str) -> Verb = \v,pp,ds,dp,ep,neg -> {s,sn = word v ; pp = pp ; ds = ds ; dp = dp ; ep = ep ; neg = neg} ; - useVerb : Verb -> Polarity => Aspect => Str = \v -> + useVerb : Verb -> Polarity => Aspect => Str = \v -> table { Pos => table { APlain => v.s ; @@ -162,37 +168,37 @@ oper } } ; - infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ; + infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ; predV : Verb -> Str -> VP = \v,part -> { - verb = v ; + verb = v ; compl = part ; prePart, topic = [] ; isAdj = False ; - } ; + } ; insertObj : NP -> VP -> VP = \np,vp -> vp ** { compl = np.s ++ vp.compl ; - } ; + } ; insertObjPost : NP -> VP -> VP = \np,vp -> vp ** { compl = vp.compl ++ np.s ; - } ; + } ; insertAdv : SS -> VP -> VP = \adv,vp -> vp ** { prePart = adv.s ++ vp.prePart ; - } ; + } ; insertTopic : SS -> VP -> VP = \adv,vp -> vp ** { topic = adv.s ++ vp.topic - } ; + } ; insertAdvPost : SS -> VP -> VP = \adv,vp -> vp ** { prePart = vp.prePart ++ adv.s ; - } ; + } ; insertPP : SS -> VP -> VP = \pp,vp -> vp ** { prePart = vp.prePart ++ pp.s ; - } ; + } ; insertExtra : SS -> VP -> VP = \ext,vp -> insertObjPost ext vp ; @@ -200,33 +206,33 @@ oper -- clauses: keep np and vp separate to enable insertion of IAdv Clause : Type = { - s : Polarity => Aspect => Str ; - np : Str; - vp : VP - } ; + s : Polarity => Aspect => Str ; + np : Str; + vp : VP + } ; mkClause = overload { - mkClause : Str -> Verb -> Clause = \np,v -> + mkClause : Str -> Verb -> Clause = \np,v -> mkClauseCompl np (predV v []) [] ; mkClause : Str -> Verb -> Str -> Clause = \subj,verb,obj -> mkClauseCompl subj (predV verb []) obj ; - mkClause : Str -> VP -> Clause = \np,vp -> + mkClause : Str -> VP -> Clause = \np,vp -> mkClauseCompl np vp [] ; - mkClause : Str -> VP -> Str -> Clause = + mkClause : Str -> VP -> Str -> Clause = mkClauseCompl ; } ; - + mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> { s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; np = vp.topic ++ np ; vp = insertObj (ss compl) vp ; } ; - + -- for structural words -param +param DetType = DTFull Number | DTNum | DTPoss ; -- this, these, five, our NumType = NTFull | NTVoid Number ; -- five, sg, pl @@ -250,8 +256,8 @@ oper s = word s } ; - Preposition = {prepPre : Str ; prepPost : Str ; advType : AdvType ; hasDe : Bool} ; - + Preposition = {prepPre : Str ; prepPost : Str ; advType : AdvType ; hasDe : Bool} ; + mkPreposition : Str -> Str -> AdvType -> Preposition = \s1,s2,at -> { prepPre = word s1 ; prepPost = word s2 ; @@ -262,8 +268,8 @@ oper advTypeHasDe : AdvType -> Bool = \at -> case at of { ATPoss => True ; _ => False - } ; - + } ; + getAdvType : Str -> AdvType = \s -> case s of { "的" => ATPoss ; "在" + _ => ATPlace True ; -- certain that True @@ -271,7 +277,7 @@ oper } ; possessiveIf : Bool -> Str = \hasDe -> case hasDe of { - True => [] ; --- to avoid double "de" + True => [] ; --- to avoid double "de" _ => possessive_s } ; @@ -285,7 +291,7 @@ oper mkNP : Str -> NP = ss ; -- not to be used in lexicon building - appPrep : Preposition -> Str -> Str = \prep,s -> + appPrep : Preposition -> Str -> Str = \prep,s -> prep.prepPre ++ s ++ prep.prepPost ; } From cf9e2cdd7f8c9e004ff665f28b2e707d8165140f Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Fri, 17 Dec 2021 15:28:42 +0800 Subject: [PATCH 062/141] attempt to edit complexAP for table selection --- src/chinese/AdjectiveChi.gf | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/chinese/AdjectiveChi.gf b/src/chinese/AdjectiveChi.gf index 4befaaf42..87a2c6eb5 100644 --- a/src/chinese/AdjectiveChi.gf +++ b/src/chinese/AdjectiveChi.gf @@ -5,18 +5,36 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in { PositA a = a ** {hasAdA = False} ; --ComparA a np = complexAP (a.s ++ than_s ++ np.s) ; - ComparA a np = complexAP (than_s ++ np.s ++ a.s) ; + -- ComparA a np = complexAP (than_s ++ np.s ++ a.s) ; + ComparA a np = a ** { + s = table { adjPlace => than_s ++ np.s ++ a.s!adjPlace} + }; - UseComparA a = complexAP (geng_s ++ a.s) ; + --UseComparA a = complexAP (geng_s ++ a.s) ; + UseComparA a = geng ** { + s = table { adjPlace => geng.s!adjPlace ++ a.s} + }; - AdjOrd ord = complexAP ord.s ; + -- AdjOrd ord = complexAP ord.s ; + AdjOrd ord = ord ** { + s = table {adjPlace => ord.s!adjPlace} + }; -- CAdvAP ad ap np = complexAP (ap.s ++ ad.s ++ ad.p ++ np.s) ; - CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24 + -- CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24 + CAdvAP ad ap np = ap ** { + s = table {adjPlace => ad.s ++ np.s ++ ad.p ++ ap.s!adjPlace} + }; - ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ; + -- ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ; + ComplA2 a np = a ** { + s= table { adjPlace => appPrep a.c2 np.s ++ a.s!adjPlace} + }; - ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ; + -- ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ; + ReflA2 a = a ** { + s = table {adjPlace => a.s!adjPlace ++ appPrep a.c2 reflPron} + }; -- SentAP ap sc = complexAP (ap.s ++ sc.s) ; @@ -25,9 +43,12 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in { s = table { adjPlace => ap.s ! adjPlace ++ sc.s } } ; - AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ; + -- AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ; + AdAP ada ap = ap ** { + s = table { adjPlace => ada.s ++ ap.s ! adjPlace ; monoSyl = False; hasAdA = True} + }; - UseA2 a = a ** {hasAdA = False} ; + UseA2 a = a ** {hasAdA = False} ; -- AdvAP ap adv = complexAP (adv.s ++ ap.s) ; AdvAP ap adv = ap ** { From dd5b34492a816621e1dcff8f9b9f20543907c1ed Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Mon, 3 Jan 2022 15:54:05 +0800 Subject: [PATCH 063/141] add distinction between Attributive vs Predicative (esp for colours) --- src/chinese/AdjectiveChi.gf | 65 ++++++++++--------- src/chinese/AdverbChi.gf | 12 ++-- src/chinese/ConjunctionChi.gf | 10 +-- src/chinese/DocumentationChi.gf | 6 +- src/chinese/ExtraChi.gf | 16 ++--- src/chinese/LexiconChi.gf | 66 ++++++++++---------- src/chinese/NounChi.gf | 10 +-- src/chinese/ParadigmsChi.gf | 107 ++++++++++++++++---------------- src/chinese/PhraseChi.gf | 2 +- src/chinese/ResChi.gf | 11 +++- src/chinese/VerbChi.gf | 26 ++++---- 11 files changed, 172 insertions(+), 159 deletions(-) diff --git a/src/chinese/AdjectiveChi.gf b/src/chinese/AdjectiveChi.gf index 87a2c6eb5..5098f5ed5 100644 --- a/src/chinese/AdjectiveChi.gf +++ b/src/chinese/AdjectiveChi.gf @@ -4,55 +4,58 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in { PositA a = a ** {hasAdA = False} ; - --ComparA a np = complexAP (a.s ++ than_s ++ np.s) ; - -- ComparA a np = complexAP (than_s ++ np.s ++ a.s) ; - ComparA a np = a ** { - s = table { adjPlace => than_s ++ np.s ++ a.s!adjPlace} - }; + ComparA a np = a ** { + s = table { adjPlace => than_s ++ np.s ++ a.s!adjPlace}; + hasAdA = False - --UseComparA a = complexAP (geng_s ++ a.s) ; - UseComparA a = geng ** { - s = table { adjPlace => geng.s!adjPlace ++ a.s} - }; + }; + + UseComparA a = a ** { + s = table { adjPlace => geng_s ++ a.s!adjPlace}; + hasAdA = False + }; - -- AdjOrd ord = complexAP ord.s ; AdjOrd ord = ord ** { - s = table {adjPlace => ord.s!adjPlace} + s = table { + adjPlace => ord.s + -- Attr => ord.s; --"first is he" ; + -- Pred => ord.s --"he is first" + } ; + hasAdA = False; + monoSyl = True -- to do and figure out in relation to Ord = {s : Str} }; - -- CAdvAP ad ap np = complexAP (ap.s ++ ad.s ++ ad.p ++ np.s) ; - -- CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24 - CAdvAP ad ap np = ap ** { + CAdvAP ad ap np = ap ** { s = table {adjPlace => ad.s ++ np.s ++ ad.p ++ ap.s!adjPlace} - }; + }; - -- ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ; ComplA2 a np = a ** { - s= table { adjPlace => appPrep a.c2 np.s ++ a.s!adjPlace} - }; + s= table { adjPlace => appPrep a.c2 np.s ++ a.s!adjPlace}; + hasAdA = False + }; + - -- ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ; ReflA2 a = a ** { - s = table {adjPlace => a.s!adjPlace ++ appPrep a.c2 reflPron} - }; + s = table {adjPlace => a.s!adjPlace ++ appPrep a.c2 reflPron}; + hasAdA = False + }; - -- SentAP ap sc = complexAP (ap.s ++ sc.s) ; SentAP ap sc = ap ** { - s = table { adjPlace => ap.s ! adjPlace ++ sc.s } - } ; + } ; -- AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ; - AdAP ada ap = ap ** { - s = table { adjPlace => ada.s ++ ap.s ! adjPlace ; monoSyl = False; hasAdA = True} - }; + AdAP ada ap = ap ** { + s = table { adjPlace => ada.s ++ ap.s ! adjPlace }; + monoSyl = False; + hasAdA = True + }; - UseA2 a = a ** {hasAdA = False} ; + UseA2 a = a ** {hasAdA = False} ; - -- AdvAP ap adv = complexAP (adv.s ++ ap.s) ; - AdvAP ap adv = ap ** { + AdvAP ap adv = ap ** { s = table { adjPlace => adv.s ++ ap.s ! adjPlace } - }; + }; } diff --git a/src/chinese/AdverbChi.gf b/src/chinese/AdverbChi.gf index 8a50ddd90..557d29858 100644 --- a/src/chinese/AdverbChi.gf +++ b/src/chinese/AdverbChi.gf @@ -1,14 +1,14 @@ -concrete AdverbChi of Adverb = CatChi ** +concrete AdverbChi of Adverb = CatChi ** open ResChi, Prelude in { lin - PositAdvAdj a = {s = a.s ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs? + PositAdvAdj a = {s = a.s!Attr ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs? - PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ? + PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ? - ComparAdvAdj cadv a np = ss (a.s ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ; + ComparAdvAdj cadv a np = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ; - ComparAdvAdjS cadv a s = ss (a.s ++ cadv.s ++ cadv.p ++ s.s) ** {advType = ATManner ; hasDe = False} ; + ComparAdvAdjS cadv a s = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ s.s) ** {advType = ATManner ; hasDe = False} ; AdAdv ad adv = adv ** {s = ad.s ++ adv.s} ; @@ -16,6 +16,6 @@ concrete AdverbChi of Adverb = CatChi ** AdnCAdv cadv = ss (cadv.s ++ conjThat) ** {advType = ATManner ; hasDe = False} ; ----- - PositAdAAdj a = {s = a.s} ; ---- + PositAdAAdj a = {s = a.s!Attr} ; ---- } diff --git a/src/chinese/ConjunctionChi.gf b/src/chinese/ConjunctionChi.gf index e507667ae..f5607d856 100644 --- a/src/chinese/ConjunctionChi.gf +++ b/src/chinese/ConjunctionChi.gf @@ -5,9 +5,9 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin ConjS c = conjunctDistrSS (c.s ! CSent) ; ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = as.advType ; hasDe = as.hasDe} ; ---- ?? ConjNP c = conjunctDistrSS (c.s ! CPhr CNPhrase) ; - ConjAP c as = conjunctDistrSS (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't + ConjAP c as = conjunctDistrTable AdjPlace (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't ConjRS c = conjunctDistrSS (c.s ! CSent) ; - ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ; + ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ; -- These fun's are generated from the list cat's. @@ -17,8 +17,8 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin ConsAdv x xs = consrSS duncomma x xs ** {advType = x.advType ; hasDe = xs.hasDe} ; ---- ?? BaseNP = twoSS ; ConsNP = consrSS duncomma ; - BaseAP x y = twoSS x y ** {monoSyl = y.monoSyl} ; - ConsAP x xs = consrSS duncomma x xs ** {monoSyl = xs.monoSyl} ; + BaseAP x y = twoTable AdjPlace x y ** {monoSyl = y.monoSyl} ; + ConsAP x xs = consrTable AdjPlace duncomma x xs ** {monoSyl = xs.monoSyl} ; BaseRS = twoSS ; ConsRS = consrSS duncomma ; BaseCN x y = twoSS x y ** {c = x.c} ; --- classified comes from first part ; should it rather be ge? @@ -28,7 +28,7 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin [S] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str ; advType : AdvType ; hasDe : Bool} ; [NP] = {s1,s2 : Str} ; - [AP] = {s1,s2 : Str ; monoSyl : Bool} ; + [AP] = {s1,s2 : AdjPlace => Str ; monoSyl : Bool} ; [RS] = {s1,s2 : Str} ; [CN] = {s1,s2 : Str ; c : Str} ; diff --git a/src/chinese/DocumentationChi.gf b/src/chinese/DocumentationChi.gf index ef76c9ee5..9ac20f480 100644 --- a/src/chinese/DocumentationChi.gf +++ b/src/chinese/DocumentationChi.gf @@ -1,6 +1,6 @@ concrete DocumentationChi of Documentation = CatChi ** open ResChi, - HTML + HTML in { lincat @@ -19,9 +19,9 @@ lin InflectionA, InflectionA2 = \adj -> { t = "a" ; s1 = heading1 "Adjective" ; - s2 = adj.s + s2 = adj.s!Attr } ; - + InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> { t = "adv" ; s1 = heading1 "Adverb" ; diff --git a/src/chinese/ExtraChi.gf b/src/chinese/ExtraChi.gf index cba1a0924..e745e3b4e 100644 --- a/src/chinese/ExtraChi.gf +++ b/src/chinese/ExtraChi.gf @@ -1,9 +1,9 @@ -concrete ExtraChi of ExtraChiAbs = CatChi ** +concrete ExtraChi of ExtraChiAbs = CatChi ** open ResChi, Coordination, (S = StructuralChi), Prelude in { flags coding = utf8 ; - lincat + lincat VPS = {s : Str} ; [VPS] = {s1,s2 : Str} ; VPI = {s : Str} ; --- ??? @@ -37,15 +37,15 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** Aspect = {s : Str ; a : ResChi.Aspect} ; lin CompBareAP ap = case ap.hasAdA of { - True => insertObj (mkNP ap.s) (predV nocopula []) ; - False => insertObj (mkNP ap.s) (predV hen_copula []) - } ; + True => insertObj (mkNP (ap.s!Pred)) (predV nocopula []) ; + False => insertObj (mkNP (ap.s!Pred)) (predV hen_copula []) + } ; QuestRepV cl = { s = \\_,p,a => ---- also for indirect questions? let - v = cl.vp.verb ; + v = cl.vp.verb ; verb = case a of { - APlain => v.s ++ v.neg ++ v.sn ; + APlain => v.s ++ v.neg ++ v.sn ; APerf => v.s ++ "不" ++ v.sn ++ v.pp ; ADurStat => v.s ++ "不" ++ v.sn ; ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu @@ -57,4 +57,4 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** TopicAdvVP vp adv = insertTopic adv vp ; -} +} diff --git a/src/chinese/LexiconChi.gf b/src/chinese/LexiconChi.gf index 1296b2af7..3468e7e90 100644 --- a/src/chinese/LexiconChi.gf +++ b/src/chinese/LexiconChi.gf @@ -1,7 +1,7 @@ -concrete LexiconChi of Lexicon = CatChi ** +concrete LexiconChi of Lexicon = CatChi ** open ParadigmsChi, ResChi, Prelude in { -flags +flags coding = utf8 ; lin @@ -14,13 +14,13 @@ lin tree_N = mkN "树" "棵"; -- "shu" "ke" big_A = mkA "大" ; -- "da" small_A = mkA "小" ; -- "xiao" - green_A = mkA "绿" ; -- "lv" + green_A = colourA "绿" ; -- "lv" walk_V = mkV "走" ; -- "zou" sleep_V = mkV "睡觉" ; -- "shui" love_V2 = mkV2 "爱" ; -- "ai" watch_V2 = mkV2 "看" ; -- "kan" know_VS = mkV "知道" ; -- "zhidao" - wonder_VQ = mkV "好奇" ; -- "haoqi" + wonder_VQ = mkV "好奇" ; -- "haoqi" john_PN = mkPN "约翰" ; -- "yuehan" @@ -63,7 +63,7 @@ horn_N = mkN "角" "根"; tail_N = mkN "尾巴" "条"; -- [mark] "尾" -> "尾巴" , "尾" is often treated as morpheme, or if stands alone, it is a classifier itself feather_N = mkN "羽毛" "根"; hair_N = mkN "头发" "根"; -- [mark] several classifiers , "根"(single hair), "把"(several hairs) -head_N = mkN "头" "颗"; +head_N = mkN "头" "颗"; ear_N = mkN "耳朵" "只"; eye_N = mkN "眼睛" "只"; nose_N = mkN "鼻子" ; @@ -79,7 +79,7 @@ wing_N = mkN "翅膀" "只"; -- [mark] "翼" -> "翅膀", "翅膀" is the common belly_N = mkN "肚子" ; guts_N = mkN "肠子" "根"; neck_N = mkN "脖子" ; -back_N = mkN "背" ; +back_N = mkN "背" ; breast_N = mkN "胸" ; heart_N = mkN "心脏" "颗"; liver_N = mkN "肝" ; @@ -101,7 +101,7 @@ live_V = mkV "活" ; die_V = mkV "死" ; kill_V2 = mkV2 "杀" ; fight_V2 = mkV2 "打架" ; -- [mark] "吵架" -> "打架", "吵架" = quarrel, argue -hunt_V2 = mkV2 "打猎" ; -- [mark] "打猎" is iv, can't think of proper translation in v2 form for hunt +hunt_V2 = mkV2 "打猎" ; -- [mark] "打猎" is iv, can't think of proper translation in v2 form for hunt hit_V2 = mkV2 "打" ; cut_V2 = mkV2 "割" ; split_V2 = mkV2 "劈开" ; @@ -159,10 +159,10 @@ ashes_N = mkN "灰" []; burn_V = mkV "烧" ; road_N = mkN "路" "条"; mountain_N = mkN "山" "座"; -red_A = mkA "红" ; -yellow_A = mkA "黄" ; -white_A = mkA "白" ; -black_A = mkA "黑" ; +red_A = colourA "红" ; +yellow_A = colourA "黄" ; +white_A = colourA "白" ; +black_A = colourA "黑" ; night_N = mkN "夜晚" ; -- [mark] "夜晚" 's classifier is "个" day_N = mkN "白天" []; -- [mark] "白天" -> "天", "天" itself is classifier year_N = mkN "年" [] ; -- [mark] "年" itself is classifier @@ -343,7 +343,7 @@ shirt_N = mkN "衬衫" "件" ; silver_N = mkN "银子" "块"; -- [mark] "银" --> "银子" sister_N = mkN "妹妹" ; sock_N = mkN "袜子" "只"; -steel_N = mkN "钢" "块"; +steel_N = mkN "钢" "块"; stove_N = mkN "炉子" ; village_N = mkN "村庄" "座"; war_N = mkN "战争" "场" ; -- [mark] rewritten @@ -353,29 +353,27 @@ wood_N = mkN "木头" "块" ; -- [mark] "木" --> "木头" -- from scratch, by Jolene lin - alas_Interj = ssword "唉" ; + alas_Interj = ssword "唉" ; beg_V2V = mkV2V (mkV "乞求") ; -- beg him to do something - break_V2 = mkV2 "打破" ; - broad_A = mkA "宽" ; - brown_A = mkA "棕" ; - clever_A = mkA "聪明" ; - close_V2 = mkV2 "关闭" ; - easy_A2V = mkA2 "简单" ; - empty_A = mkA "空" ; - fun_AV = mkA "有趣" ; - hate_V2 = mkV2 "讨厌" ; - married_A2 = mkA2 "结婚" ; - paris_PN = mkPN "巴黎" ; - probable_AS = mkA "可能" ; + break_V2 = mkV2 "打破" ; + broad_A = mkA "宽" ; + brown_A = colourA "棕" ; + clever_A = mkA "聪明" ; + close_V2 = mkV2 "关闭" ; + easy_A2V = mkA2 "简单" ; + empty_A = mkA "空" ; + fun_AV = mkA "有趣" ; + hate_V2 = mkV2 "讨厌" ; + married_A2 = mkA2 "结婚" ; + paris_PN = mkPN "巴黎" ; + probable_AS = mkA "可能" ; ready_A = mkA "准备好" ; -- [mark] "准备好": 准备(v) + 好(adj,complement) - seek_V2 = mkV2 "寻求" ; - stop_V = mkV "停止" ; - stupid_A = mkA "笨" ; - switch8off_V2 = mkV2 "关" ; - switch8on_V2 = mkV2 "开" ; - ugly_A = mkA "丑" ; + seek_V2 = mkV2 "寻求" ; + stop_V = mkV "停止" ; + stupid_A = mkA "笨" ; + switch8off_V2 = mkV2 "关" ; + switch8on_V2 = mkV2 "开" ; + ugly_A = mkA "丑" ; uncertain_A = mkA "不确定" ; -- [mark] "不确定": 不("un-") + 确定("certain") - - -} +} \ No newline at end of file diff --git a/src/chinese/NounChi.gf b/src/chinese/NounChi.gf index 4a4a330b4..234056e25 100644 --- a/src/chinese/NounChi.gf +++ b/src/chinese/NounChi.gf @@ -28,7 +28,7 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in { NTFull => quant.pl ++ num.s ; -- to avoid yi in indef NTVoid Pl => quant.pl ++ num.s ; _ => quant.s ++ num.s - } ; + } ; detType = case num.numType of { NTFull => DTNum ; -- five NTVoid n => case quant.detType of { @@ -63,8 +63,8 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in { AdNum adn num = {s = adn.s ++ num.s ; hasC = True} ; - OrdSuperl a = {s = superlative_s ++ a.s} ; - OrdNumeralSuperl n a = {s = ordinal_s ++ n.s ++ superlative_s ++ a.s} ; ---- to check AR 24/8/2014 + OrdSuperl a = {s = superlative_s ++ a.s ! Attr} ; + OrdNumeralSuperl n a = {s = ordinal_s ++ n.s ++ superlative_s ++ a.s ! Attr} ; ---- to check AR 24/8/2014 DefArt = mkQuant [] [] DTPoss ; -- use that_Quant if you want the_s IndefArt = mkQuant yi_s [] DTNum ; -- (DTFull Sg) ; -- empty in the plural @@ -80,8 +80,8 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in { ComplN3 f x = {s = appPrep f.c2 x.s ++ f.s ; c = f.c ; c2 = f.c3} ; AdjCN ap cn = case ap.monoSyl of { - True => {s = ap.s ++ cn.s ; c = cn.c} ; - False => {s = ap.s ++ possessive_s ++ cn.s ; c = cn.c} + True => {s = ap.s ! Attr ++ cn.s ; c = cn.c} ; + False => {s = ap.s ! Attr ++ possessive_s ++ cn.s ; c = cn.c} } ; RelCN cn rs = {s = rs.s ++ cn.s ; c = cn.c} ; diff --git a/src/chinese/ParadigmsChi.gf b/src/chinese/ParadigmsChi.gf index 6ec08c2f4..a04c87c55 100644 --- a/src/chinese/ParadigmsChi.gf +++ b/src/chinese/ParadigmsChi.gf @@ -5,11 +5,11 @@ flags coding = utf8 ; flags coding=utf8; oper mkN = overload { - mkN : (man : Str) -> N - = \n -> lin N (regNoun n ge_s) ; - mkN : (man : Str) -> Str -> N + mkN : (man : Str) -> N + = \n -> lin N (regNoun n ge_s) ; + mkN : (man : Str) -> Str -> N = \n,c -> lin N (regNoun n c) - } ; + } ; mkN2 = overload { mkN2 : Str -> N2 @@ -21,7 +21,7 @@ oper mkN3 : N -> Prep -> Prep -> N3 = \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ; - + mkPN : (john : Str) -> PN = \s -> lin PN {s = word s} ; -- normal name, in Chinese characters @@ -29,11 +29,14 @@ oper = \s -> lin PN {s = s} ; -- foreign name, in Latin or other non-Chinese characters mkA = overload { - mkA : (small : Str) -> A + mkA : (small : Str) -> A = \a -> lin A (simpleAdj a) ; - mkA : (small : Str) -> Bool -> A + mkA : (small : Str) -> Bool -> A = \a,b -> lin A (mkAdj a b) ; - } ; + } ; + + colourA : Str -> A ; -- colour Adjectives have a "色" when used as predicative + colourA colour = lin A (colourAdj colour); mkA2 = overload { mkA2 : Str -> A2 @@ -43,32 +46,32 @@ oper mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ; } ; - - mkV = overload { - mkV : (walk : Str) -> V + + mkV = overload { + mkV : (walk : Str) -> V = \walk -> case walk of { v + "+" + p => lin V (regVerb (v + p)) ; _ => lin V (regVerb walk) } ; - mkV : (walk,out : Str) -> V + mkV : (walk,out : Str) -> V = \v,p -> lin V (regVerb (v + p)) ; ---- mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> V = \arrive,pp,ds,dp,ep -> lin V (mkVerb arrive pp ds dp ep neg_s) ; mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> Str -> V = \arrive,pp,ds,dp,ep,neg -> lin V (mkVerb arrive pp ds dp ep neg) ; - } ; + } ; mkV2 = overload { - mkV2 : Str -> V2 + mkV2 : Str -> V2 = \s -> case s of { v + "+" + p => lin V2 (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = word p}) ; - v + "*" + p => lin V2 (regVerb v ** + v + "*" + p => lin V2 (regVerb v ** {c2 = ResChi.mkPreposition p [] (getAdvType p) ; hasPrep = True ; part = []}) ; _ => lin V2 (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []}) } ; - mkV2 : V -> V2 + mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; - mkV2 : V -> Prep -> V2 + mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p ; hasPrep = True ; part = []}) ; } ; @@ -110,47 +113,47 @@ oper mkV2Q = overload { mkV2Q : V -> V2Q = - \v -> lin V2Q (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; + \v -> lin V2Q (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; mkV2Q : Str -> V2Q = - \v -> lin V2Q (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; + \v -> lin V2Q (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; } ; mkV2V= overload { - mkV2V : Str -> V2V = - \s -> lin V2V (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; + mkV2V : Str -> V2V = + \s -> lin V2V (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; mkV2V : V -> V2V = - \v -> lin V2V (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; + \v -> lin V2V (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; ---- mkV2V : V -> Str -> Str -> V2V = ----- \v,p,q -> lin V2V (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ; +---- \v,p,q -> lin V2V (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ; } ; mkV2S = overload { mkV2S : Str -> V2S = - \s -> lin V2S (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; + \s -> lin V2S (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; mkV2S : V -> V2S = - \v -> lin V2S (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; + \v -> lin V2S (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ; ---- mkV2S : V -> Str -> V2S = ----- \v,p -> lin V2S (v ** {c2 = mkPrep p}) ; +---- \v,p -> lin V2S (v ** {c2 = mkPrep p}) ; } ; mkV2A = overload { mkV2A : Str -> V2A - = \s -> lin V2A (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; + = \s -> lin V2A (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; mkV2A : V -> V2A - = \v -> lin V2A (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; + = \v -> lin V2A (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ; } ; ---- mkV2A : V -> Str -> Str -> V2A ----- = \v,p,q -> lin V2A (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ; +---- = \v,p,q -> lin V2A (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ; mkAdv = overload { - mkAdv : Str -> Adv + mkAdv : Str -> Adv = \s -> let at = getAdvType s in lin Adv {s = word s ; advType = at ; hasDe = advTypeHasDe at} ; - mkAdv : Str -> Str -> Adv + mkAdv : Str -> Str -> Adv = \s,t -> let at = getAdvType s in lin Adv {s = word (s + t) ; advType = at ; hasDe = advTypeHasDe at} ; ---- - mkAdv : Str -> AdvType -> Adv + mkAdv : Str -> AdvType -> Adv = \s,at -> lin Adv {s = word s ; advType = at ; hasDe = advTypeHasDe at} ; - mkAdv : Adv -> AdvType -> Adv -- To fix the AdvType in an Adv produced by SyntaxChi.mkAdv + mkAdv : Adv -> AdvType -> Adv -- To fix the AdvType in an Adv produced by SyntaxChi.mkAdv = \adv,at -> adv ** {advType = at ; hasDe = advTypeHasDe at} ; } ; @@ -165,50 +168,50 @@ oper = ATTime ; mannerAdvType : AdvType = ATManner ; - + mkPrep = overload { -- first pre part, then optional post part - mkPrep : Str -> Prep + mkPrep : Str -> Prep = \s -> lin Prep (ResChi.mkPreposition s [] (getAdvType s)) ; - mkPrep : Str -> Str -> Prep + mkPrep : Str -> Str -> Prep = \s,t -> lin Prep (ResChi.mkPreposition s t (getAdvType s)) ; - mkPrep : Str -> Str -> AdvType -> Prep + mkPrep : Str -> Str -> AdvType -> Prep = \s,t,a -> lin Prep (ResChi.mkPreposition s t a) ; } ; - mkInterj : Str -> Interj + mkInterj : Str -> Interj = \s -> lin Interj {s = word s} ; emptyPrep : Preposition = mkPrep [] ; - mkpNP : Str -> CatChi.NP + mkpNP : Str -> CatChi.NP = \s -> lin NP {s = word s} ; - mkAdV : Str -> AdV + mkAdV : Str -> AdV = \s -> lin AdV {s = word s} ; - mkAdN : Str -> AdN + mkAdN : Str -> AdN = \s -> lin AdN {s = word s} ; - mkSubj : Str -> Subj + mkSubj : Str -> Subj = \s -> lin Subj (ResChi.mkSubj s []) ; mkConj = overload { - mkConj : Str -> Conj + mkConj : Str -> Conj = \s -> lin Conj {s = \\_ => mkConjForm s} ; - mkConj : (both,and : Str) -> Conj + mkConj : (both,and : Str) -> Conj = \s,t -> lin Conj {s = \\_ => mkConjForm2 s t} ; } ; - mkpDet : Str -> Det + mkpDet : Str -> Det = \s -> lin Det {s = word s ; detType = DTFull Sg} ; - mkQuant : Str -> Quant + mkQuant : Str -> Quant = \s -> lin Quant {s,pl = word s ; detType = DTFull Sg} ; - mkAdA : Str -> AdA + mkAdA : Str -> AdA = \s -> lin AdA {s = word s} ; - mkNum : Str -> Num + mkNum : Str -> Num = \s -> lin Num {s = word s ; numType = NTFull} ; - mkPredet : Str -> Predet + mkPredet : Str -> Predet = \s -> lin Predet {s = word s} ; - mkIDet : Str -> IDet + mkIDet : Str -> IDet = \s -> lin IDet {s = word s ; detType = DTNum} ; ---- - mkPConj : Str -> PConj + mkPConj : Str -> PConj = \s -> lin PConj {s = word s} ; - mkRP : Str -> RP + mkRP : Str -> RP = \s -> lin RP {s = table {True => [] ; False => word s}} ; diff --git a/src/chinese/PhraseChi.gf b/src/chinese/PhraseChi.gf index 51b3787d1..66f85995d 100644 --- a/src/chinese/PhraseChi.gf +++ b/src/chinese/PhraseChi.gf @@ -13,7 +13,7 @@ concrete PhraseChi of Phrase = CatChi ** open Prelude, ResChi in { UttIAdv iadv = iadv ; UttNP np = np ; UttCN cn = cn ; - UttAP ap = ap ; + UttAP ap = {s = ap.s!Attr} ; UttCard x = x ; UttVP vp = ss (infVP vp) ; UttAdv adv = adv ; diff --git a/src/chinese/ResChi.gf b/src/chinese/ResChi.gf index 08804798e..9b6a6494d 100644 --- a/src/chinese/ResChi.gf +++ b/src/chinese/ResChi.gf @@ -99,7 +99,6 @@ param AdjPlace = Attr | Pred ; -- a green cat / the cat is green colour -- parts of speech - oper VP = { @@ -134,6 +133,16 @@ oper _ => mkAdj s False } ; + colourAdj : Str -> Adj = \s -> { + s = table { + Attr => word s ; + Pred => word s ++ "色" + }; + monoSyl = case s of { + ? => True ; + _ => False } + }; + copula : Verb = mkVerb "是" [] [] [] [] "不" ; hen_copula : Verb = {s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- diff --git a/src/chinese/VerbChi.gf b/src/chinese/VerbChi.gf index 013ee1994..be6bed536 100644 --- a/src/chinese/VerbChi.gf +++ b/src/chinese/VerbChi.gf @@ -7,14 +7,14 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { SlashV2a v = predV v v.part ** {c2 = v.c2 ; isPre = v.hasPrep} ; - Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v v.part) ** {c2 = v.c3 ; isPre = v.hasPrep} ; -- slot for third argument + Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v v.part) ** {c2 = v.c3 ; isPre = v.hasPrep} ; -- slot for third argument Slash3V3 v np = insertObj (mkNP (appPrep v.c3 np.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = True} ; -- slot for ba object - SlashV2A v ap = insertObj ap (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; + SlashV2A v ap = insertObj {s = ap.s ! Pred} (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; - SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; - SlashV2Q v q = insertObj (ss (say_s ++ q.s ! False)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; + SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; + SlashV2Q v q = insertObj (ss (say_s ++ q.s ! False)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; ComplVV v vp = { verb = v ; @@ -23,9 +23,9 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { isAdj = False ; } ; - ComplVS v s = insertObj s (predV v []) ; - ComplVQ v q = insertObj (ss (q.s ! False)) (predV v []) ; - ComplVA v ap = insertObj ap (predV v []) ; + ComplVS v s = insertObj s (predV v []) ; + ComplVQ v q = insertObj (ss (q.s ! False)) (predV v []) ; + ComplVA v ap = insertObj {s = ap.s ! Pred} (predV v []) ; ComplSlash vp np = case vp.isPre of { --- True => insertAdv (mkNP (ba_s ++ np.s)) vp ; --- ba or vp.c2 ? @@ -39,7 +39,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { SlashVV v vp = ---- too simple? insertObj (mkNP (infVP vp)) (predV v []) ** {c2 = vp.c2 ; isPre = vp.isPre} ; - SlashV2VNP v np vp = + SlashV2VNP v np vp = insertObj np (insertObj (mkNP (infVP vp)) (predV v v.part)) ** {c2 = vp.c2 ; isPre = vp.isPre} ; @@ -56,19 +56,19 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { ATTime | ATPoss => insertTopic adv vp -- *today* he here sleeps } ; - AdVVP adv vp = insertAdv adv vp ; - + AdVVP adv vp = insertAdv adv vp ; + ReflVP vp = insertObj (mkNP reflPron) vp ; PassV2 v = insertAdv (mkNP passive_s) (predV v v.part) ; ---- - CompAP ap = insertObj (mkNP (ap.s ++ de_s)) (predV copula []) ** {isAdj = True} ; + CompAP ap = insertObj (mkNP (ap.s ! Pred ++ de_s)) (predV copula []) ** {isAdj = True} ; {- CompAP ap = case ap.hasAdA of { - True => insertObj (mkNP ap.s) (predV nocopula []) ; + True => insertObj (mkNP ap.s) (predV nocopula []) ; False => insertObj (mkNP (ap.s ++ de_s)) (predV copula []) - } ; + } ; -} CompNP np = insertObj np (predV copula []) ; ---- From 40caeea67f3245ff00bb563d5c8f26c70d91c547 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 5 Jan 2022 12:02:58 +0800 Subject: [PATCH 064/141] add AST to test for complements --- src/chinese/unittest/complements.gftest | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/chinese/unittest/complements.gftest diff --git a/src/chinese/unittest/complements.gftest b/src/chinese/unittest/complements.gftest new file mode 100644 index 000000000..3068c2dcb --- /dev/null +++ b/src/chinese/unittest/complements.gftest @@ -0,0 +1,3 @@ +-- One way of saying "he/she gives me a cat" +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash2V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) (UsePron i_Pron))) +LangChi: 他 把 猫 给 我 \ No newline at end of file From e1130eb279756067272c9502d82dafebaf9cd589 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 12 Jan 2022 14:20:13 +0800 Subject: [PATCH 065/141] add test for chinese numerals -- passed --- src/chinese/unittest/numerals.gftest | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/chinese/unittest/numerals.gftest diff --git a/src/chinese/unittest/numerals.gftest b/src/chinese/unittest/numerals.gftest new file mode 100644 index 000000000..ff2077a23 --- /dev/null +++ b/src/chinese/unittest/numerals.gftest @@ -0,0 +1,11 @@ +Lang: DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01))))))) (UseN cat_N) +LangEng: one cat +LangChi: 一 只 猫 + +Lang: DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN cat_N) +LangEng: these five cats +LangChi: 这 五 只 猫 + +Lang: DetCN (DetQuant (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot2 (pot0 n7))))))) (UseN cat_N) +LangEng: my seven hundred cats +LangChi: 我 的 七 百 只 猫 \ No newline at end of file From 8495ed2f064548d842c4f5a5975ff6a209958b1b Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 12 Jan 2022 15:32:55 +0800 Subject: [PATCH 066/141] add test for chinese passive tests -- passed --- src/chinese/unittest/passive.gftest | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/chinese/unittest/passive.gftest diff --git a/src/chinese/unittest/passive.gftest b/src/chinese/unittest/passive.gftest new file mode 100644 index 000000000..3a2e5c887 --- /dev/null +++ b/src/chinese/unittest/passive.gftest @@ -0,0 +1,11 @@ +Lang: PredVP (DetCN (DetQuant that_Quant NumSg) (UseN boy_N)) (PassV2 kill_V2) +LangEng: that boy is killed +LangChi: 那 个 男 孩 被 杀 + +Lang: PredVP (DetCN (DetQuant DefArt NumSg) (UseN chair_N)) (PassV2 split_V2) +LangEng: the chair is split +LangChi: 椅 子 被 劈 开 + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN boy_N)) (ComplVV want_VV (PassV2 kill_V2))) +LangEng: that boy doesn't want to be killed +LangChi: 那 个 男 孩 不 想 被 杀 From 27073a6c0ccd53106b09037ed1e3636c93d303c2 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 12 Jan 2022 16:16:25 +0800 Subject: [PATCH 067/141] fix DetNP for positive case for ge --- src/chinese/NounChi.gf | 1 + 1 file changed, 1 insertion(+) diff --git a/src/chinese/NounChi.gf b/src/chinese/NounChi.gf index 234056e25..a9a180761 100644 --- a/src/chinese/NounChi.gf +++ b/src/chinese/NounChi.gf @@ -12,6 +12,7 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in { DetNP det = {s = case det.detType of { DTFull Pl => det.s ++ xie_s ; + DTPoss => det.s ; _ => det.s ++ ge_s } ; } ; ---- From cc4aef88f9f3c2a1affdc5b33d913ba6a6e82388 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 12 Jan 2022 16:56:07 +0800 Subject: [PATCH 068/141] add 25 tests for chinese pronouns -- passed --- src/chinese/unittest/pronouns.gftest | 117 +++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/chinese/unittest/pronouns.gftest diff --git a/src/chinese/unittest/pronouns.gftest b/src/chinese/unittest/pronouns.gftest new file mode 100644 index 000000000..37f6c4bd8 --- /dev/null +++ b/src/chinese/unittest/pronouns.gftest @@ -0,0 +1,117 @@ +---------- +-- Objects + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (ComplSlash (VPSlashPrep (ComplSlash (VPSlashPrep (UseV go_V) with_Prep) (UsePron i_Pron)) to_Prep) (DetCN (DetQuant DefArt NumSg) (UseN moon_N)))) +LangEng: the cat goes with me to the moon +LangChi: 猫 和 我 一 起 往 月 亮 去 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumPl) (UseN cat_N)) (UseComp (CompAdv (PrepNP with_Prep (DetCN (DetQuant that_Quant NumSg) (UseN person_N)))))) +LangEng: my cats are with that person +LangChi: 我 的 猫 和 那 个 人 一 起 + +Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a hit_V2) (UsePron he_Pron))) +LangEng: I hit him +LangChi: 我 打 了 他 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a hit_V2) (UsePron he_Pron))) +LangEng: I hit him +LangChi: 我 打 他 + +------------- +-- Possession +Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N) +LangEng: my cat +LangChi: 我 的 猫 + +-- that is my cat +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetNP (DetQuant that_Quant NumSg)) (UseComp (CompNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N))))) +LangEng: that is my cat +LangChi: 那 个 是 我 的 猫 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompNP (DetNP (DetQuant (PossPron i_Pron) NumSg))))) +LangEng: that cat is mine +LangChi: 那 只 猫 是 我 的 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN cat_N)) (UseComp (CompAP (PositA green_A)))) +LangEng: her cat is green +LangChi: 她 的 猫 是 绿 色 的 + +-- two variants, different trees +-- read a book +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant IndefArt NumSg) (PossNP (UseN book_N) (UsePron she_Pron))))) +LangEng: he reads a book of hers +LangChi: 他 读 一 本 她 的 书 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN book_N)))) +LangEng: he reads her book +LangChi: 他 读 她 的 书 + +-- I read his/her father's book +Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN2 father_N2) (UsePron she_Pron))))))) +LangEng: I read the book of the father of hers +LangChi: 我 读 了 她 的 父 亲 的 书 + +-- Only the noun phrase +Lang: MassNP (PossNP (UseN book_N) (UsePron he_Pron)) +LangEng: book of his +LangChi: 他 的 书 + +Lang: DetCN (DetQuant (PossPron he_Pron) NumSg) (UseN book_N) +LangEng: his book +LangChi: 他 的 书 + +-- For non-pronoun NPs, multiple trees +Lang: AdvNP (MassNP (UseN book_N)) (PrepNP part_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: AdvNP (MassNP (UseN book_N)) (PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (AdvCN (UseN book_N) (PrepNP part_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (AdvCN (UseN book_N) (PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (ApposCN (AdvCN (UseN book_N) (PrepNP part_Prep (DetNP (DetQuant DefArt NumPl)))) (MassNP (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (ApposCN (AdvCN (UseN book_N) (PrepNP possess_Prep (DetNP (DetQuant DefArt NumPl)))) (MassNP (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (ApposCN (PartNP (UseN book_N) (DetNP (DetQuant DefArt NumPl))) (MassNP (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (ApposCN (PossNP (UseN book_N) (DetNP (DetQuant DefArt NumPl))) (MassNP (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (PartNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +Lang: MassNP (PossNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) +LangEng: book of the cat +LangChi: 猫 的 书 + +-- You can also produce nonsensical variants, in all languages. +-- The point of RGL is to be a collection of syntactic structures, +-- and application grammarians can choose to use them in any combinations. +-- So the following English linearizations aren't *wrong*, they just don't make sense. + +-- If theese Chinese linearizations are merely weird, like the English ones, then they are correct. +-- If they feel wrong in the same way as "his cat of my" would in English, then they are wrong. +Lang: DetCN (DetQuant (PossPron he_Pron) NumSg) (PossNP (UseN cat_N) (UsePron i_Pron)) +LangEng: his cat of mine +LangChi: 他 的 我 的 猫 + +Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (PossNP (UseN cat_N) (UsePron she_Pron)) +LangEng: my cat of hers +LangChi: 我 的 她 的 猫 \ No newline at end of file From e853942d43fb20ee3ba4d93bf3fa153bbd61bfb7 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Fri, 4 Feb 2022 16:52:22 +0800 Subject: [PATCH 069/141] if then conjunctions --- src/chinese/unittest/conjunctions.gftest | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/chinese/unittest/conjunctions.gftest diff --git a/src/chinese/unittest/conjunctions.gftest b/src/chinese/unittest/conjunctions.gftest new file mode 100644 index 000000000..e281ab5dd --- /dev/null +++ b/src/chinese/unittest/conjunctions.gftest @@ -0,0 +1,33 @@ +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 就 会 走 +LangEng: if I sleep then she walks + +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 将 会 走 +LangEng: if I sleep then she will walk + +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 死 +LangEng: if I sleep then she dies + +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 将 会 死 +LangEng: if I sleep then she will die + +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 不 死 +LangEng: if I sleep then she doesn't die + +Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V)))) +LangChi: 如 果 我 睡 觉 那 么 她 将 不 会 死 +LangEng: if I sleep then she won't die + +-- NP conjunctions +Lang: ConjNP or_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N))) +LangChi: 鱼 或 啤 酒 +LangEng: fish or beer + +--NB: unnatural non-empty strings just for testing purpose +Lang: ConjNP if_then_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N))) +LangChi: 鱼 啤 酒 +LangEng: if fish then beer \ No newline at end of file From bd060578d68596a6f4ae9d4f39c349b8300c4c61 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 9 Feb 2022 13:56:11 +0800 Subject: [PATCH 070/141] =?UTF-8?q?replace=20future=20with=20"=E5=B0=B1?= =?UTF-8?q?=E4=BC=9A"=20instead=20of=20old=20"=E5=9C=A8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chinese/ExtraChi.gf | 3 ++- src/chinese/QuestionChi.gf | 19 ++++++++++--------- src/chinese/ResChi.gf | 10 +++++++--- src/chinese/TenseChi.gf | 8 ++++---- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/chinese/ExtraChi.gf b/src/chinese/ExtraChi.gf index e745e3b4e..d025ed0fe 100644 --- a/src/chinese/ExtraChi.gf +++ b/src/chinese/ExtraChi.gf @@ -49,7 +49,8 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** APerf => v.s ++ "不" ++ v.sn ++ v.pp ; ADurStat => v.s ++ "不" ++ v.sn ; ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu - AExper => v.s ++ v.neg ++ v.sn ++ v.ep + AExper => v.s ++ v.neg ++ v.sn ++ v.ep ; + AFut => jiu_s ++ v.s ++ v.neg ++ v.sn ++ v.ep -- TODO check placement of jiang } in cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl diff --git a/src/chinese/QuestionChi.gf b/src/chinese/QuestionChi.gf index 7dac73416..8037d4d46 100644 --- a/src/chinese/QuestionChi.gf +++ b/src/chinese/QuestionChi.gf @@ -1,4 +1,4 @@ -concrete QuestionChi of Question = CatChi ** +concrete QuestionChi of Question = CatChi ** open ResChi, Prelude in { flags optimize=all_subs ; @@ -11,13 +11,14 @@ concrete QuestionChi of Question = CatChi ** True => \\p,a => cl.s ! p ! a ++ question_s ; -- redup question as variant in ExtraChi False => \\p,a => --- code copied from ExtraChi let - v = cl.vp.verb ; + v = cl.vp.verb ; verb = case a of { - APlain => v.s ++ v.neg ++ v.sn ; + APlain => v.s ++ v.neg ++ v.sn ; APerf => v.s ++ neg_s ++ v.sn ++ v.pp ; ADurStat => v.s ++ neg_s ++ v.sn ; ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu - AExper => v.s ++ v.neg ++ v.sn ++ v.ep + AExper => v.s ++ v.neg ++ v.sn ++ v.ep ; + AFut => jiu_s ++ hui_s ++ v.s ++ v.neg ++ v.sn ++ v.ep -- TODO check placement of jiang } in cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl @@ -27,9 +28,9 @@ concrete QuestionChi of Question = CatChi ** QuestVP ip vp = { s = \\_,p,a => ip.s ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl } ; - - QuestSlash ip cls = {s = \\_ => (mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) []).s} ; - + + QuestSlash ip cls = {s = \\_ => (mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) []).s} ; + QuestIAdv iadv cl = {s = \\_ => (mkClauseCompl cl.np (insertAdv iadv cl.vp) []).s} ; QuestIComp icomp np = {s = \\_,p,a => np.s ++ icomp.s} ; ---- order @@ -49,13 +50,13 @@ concrete QuestionChi of Question = CatChi ** IdetIP idet = idet ; IdetQuant iquant num = { - s = iquant.s ++ num.s ; + s = iquant.s ++ num.s ; detType = case num.numType of { NTFull => DTNum ; -- which five NTVoid n => DTFull n ---- TODO: whose } } ; - + AdvIAdv i a = ss (a.s ++ i.s) ; diff --git a/src/chinese/ResChi.gf b/src/chinese/ResChi.gf index 9b6a6494d..3c1cf3902 100644 --- a/src/chinese/ResChi.gf +++ b/src/chinese/ResChi.gf @@ -42,6 +42,8 @@ resource ResChi = ParamX ** open Prelude in { geng_s = "更" ; -- more, in comparison hen_s = "很" ; -- very, or predicating a monosyllabic adjective taN_s = "它" ; + jiu_s = "就" ; + hui_s = "会" ; zai_V = mkVerb "在" [] [] [] [] "不" ; fullstop_s = "。" ; @@ -89,7 +91,7 @@ resource ResChi = ParamX ** open Prelude in { -- parameters param - Aspect = APlain | APerf | ADurStat | ADurProg | AExper ; ---- APlain added by AR + Aspect = APlain | APerf | ADurStat | ADurProg | AExper | AFut ; ---- APlain added by AR ConjForm = CPhr CPosType | CSent; CPosType = CAPhrase | CNPhrase | CVPhrase ; DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de" @@ -166,14 +168,16 @@ oper APerf => v.s ++ v.pp ; ADurStat => v.s ++ v.ds ; ADurProg => v.dp ++ v.s ; - AExper => v.s ++ v.ep + AExper => v.s ++ v.ep ; + AFut => jiu_s ++ hui_s ++ v.s } ; Neg => table { APlain => v.neg ++ v.sn ; --- neg? APerf => "不" ++ v.sn ++ v.pp ; ADurStat => "不" ++ v.sn ; ADurProg => v.neg ++ v.dp ++ v.sn ; -- mei or bu - AExper => v.neg ++ v.sn ++ v.ep + AExper => v.neg ++ v.sn ++ v.ep ; + AFut => jiu_s ++ "不" ++ hui_s ++ v.s } } ; diff --git a/src/chinese/TenseChi.gf b/src/chinese/TenseChi.gf index f2c196c05..b03702068 100644 --- a/src/chinese/TenseChi.gf +++ b/src/chinese/TenseChi.gf @@ -1,4 +1,4 @@ -concrete TenseChi of Tense = +concrete TenseChi of Tense = CatChi [Tense,Temp,Ant], TenseX [Pol,PNeg,PPos] ** open ResChi in { lin @@ -6,11 +6,11 @@ concrete TenseChi of Tense = ---- ?? TPres = {s = [] ; t = APlain} ; - TPast = {s = [] ; t = APerf} ; - TFut = {s = [] ; t = ADurProg} ; + TPast = {s = [] ; t = APerf} ; + TFut = {s = [] ; t = AFut} ; TCond = {s = [] ; t = ADurStat} ; ASimul = {s = [] ; t = APlain} ; - AAnter = {s = [] ; t = APerf} ; + AAnter = {s = [] ; t = APerf} ; } From 95bc972f44a2777d0c08c8738e11953c796e5333 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 9 Feb 2022 16:39:19 +0800 Subject: [PATCH 071/141] changes in conjunction and sentences MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to accomodate if _ then conjuction with jiu "就" --- src/chinese/AdverbChi.gf | 4 +-- src/chinese/CatChi.gf | 19 ++++++---- src/chinese/ConjunctionChi.gf | 22 +++++++++--- src/chinese/ExtraChi.gf | 2 +- src/chinese/IdiomChi.gf | 2 +- src/chinese/ParadigmsChi.gf | 4 +-- src/chinese/PhraseChi.gf | 2 +- src/chinese/ResChi.gf | 22 +++++++++--- src/chinese/SentenceChi.gf | 44 ++++++++++++++++-------- src/chinese/StructuralChi.gf | 31 +++++++++-------- src/chinese/SymbolChi.gf | 6 ++-- src/chinese/VerbChi.gf | 4 +-- src/chinese/unittest/conjunctions.gftest | 36 +++++++++++++------ src/chinese/unittest/future.gftest | 32 +++++++++++++++++ 14 files changed, 163 insertions(+), 67 deletions(-) create mode 100644 src/chinese/unittest/future.gftest diff --git a/src/chinese/AdverbChi.gf b/src/chinese/AdverbChi.gf index 557d29858..206b14d57 100644 --- a/src/chinese/AdverbChi.gf +++ b/src/chinese/AdverbChi.gf @@ -8,11 +8,11 @@ concrete AdverbChi of Adverb = CatChi ** ComparAdvAdj cadv a np = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ; - ComparAdvAdjS cadv a s = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ s.s) ** {advType = ATManner ; hasDe = False} ; + ComparAdvAdjS cadv a s = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ linS s) ** {advType = ATManner ; hasDe = False} ; AdAdv ad adv = adv ** {s = ad.s ++ adv.s} ; - SubjS subj s = ss (subj.prePart ++ s.s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ; + SubjS subj s = ss (subj.prePart ++ linS s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ; AdnCAdv cadv = ss (cadv.s ++ conjThat) ** {advType = ATManner ; hasDe = False} ; ----- diff --git a/src/chinese/CatChi.gf b/src/chinese/CatChi.gf index 679846ced..a046e7550 100644 --- a/src/chinese/CatChi.gf +++ b/src/chinese/CatChi.gf @@ -4,14 +4,14 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu -- Tensed/Untensed - S = {s : Str} ; + S = Sentence ; QS = {s : Bool => Str} ; -- True = direct question (with ma for sentential questions) RS = {s : Str} ; - SSlash = {s : Str ; c2 : Preposition} ; + SSlash = {s : Str ; c2 : Preposition} ; -- Sentence - Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ; + Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ; ClSlash = Clause ** {c2 : Preposition} ; @@ -21,7 +21,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu QCl = {s : Bool => Polarity => Aspect => Str} ; -- True = direct question IP = {s : Str} ; - IComp = {s : Str} ; + IComp = {s : Str} ; IDet = {s : Str ; detType : DetType} ; IQuant = {s : Str} ; @@ -32,7 +32,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu -- Verb - VP = ResChi.VP ; + VP = ResChi.VP ; Comp = ResChi.VP ; VPSlash = ResChi.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb @@ -59,13 +59,16 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu -- Structural - Conj = {s : ConjForm => {s1,s2 : Str}} ; + Conj = { + s : ConjForm => {s1,s2 : Str} ; -- different form whether it's used for S, A, N, ... + conjType : ConjType -- different placement whether it's and,or,... or if-then + } ; Subj = {prePart : Str ; sufPart : Str} ; Prep = Preposition ; -- Open lexical classes, e.g. Lexicon - V, VS, VQ, VA = Verb ; + V, VS, VQ, VA = Verb ; V2, V2Q, V2S = Verb ** {c2 : Preposition ; hasPrep : Bool ; part : Str} ; V3, V2A, V2V = Verb ** {c2, c3 : Preposition ; hasPrep : Bool ; part : Str} ; VV = Verb ; @@ -84,4 +87,6 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu Tense = {s : Str ; t : Aspect} ; Ant = {s : Str ; t : Aspect} ; +linref + S = linS ; } diff --git a/src/chinese/ConjunctionChi.gf b/src/chinese/ConjunctionChi.gf index f5607d856..2dc17731e 100644 --- a/src/chinese/ConjunctionChi.gf +++ b/src/chinese/ConjunctionChi.gf @@ -2,7 +2,14 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin lin - ConjS c = conjunctDistrSS (c.s ! CSent) ; + ConjS c ss = + let conj = c.s ! CSent + in case c.conjType of { + Jiu => {preJiu = conj.s1 ++ ss.s1 ++ comma ++ ss.preJiu ; + postJiu = conj.s2 ++ ss.postJiu} ; + NotJiu => {preJiu = conj.s1 ++ ss.s1 ++ conj.s2 ++ ss.preJiu ; + postJiu = ss.postJiu} + } ; ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = as.advType ; hasDe = as.hasDe} ; ---- ?? ConjNP c = conjunctDistrSS (c.s ! CPhr CNPhrase) ; ConjAP c as = conjunctDistrTable AdjPlace (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't @@ -11,8 +18,14 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin -- These fun's are generated from the list cat's. - BaseS = twoSS ; - ConsS = consrSS duncomma ; + BaseS s t = t ** { + s1 = linS s + } ; + + ConsS s ss = -- here we do the same thing actually, the crucial split has happened in BaseS + ss ** {s1 = linS s ++ comma ++ ss.s1}; + + BaseAdv x y = twoSS x y ** {advType = x.advType ; hasDe = y.hasDe} ; ---- ?? ConsAdv x xs = consrSS duncomma x xs ** {advType = x.advType ; hasDe = xs.hasDe} ; ---- ?? BaseNP = twoSS ; @@ -25,7 +38,8 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin ConsCN x xs = consrSS duncomma x xs ** {c = x.c} ; lincat - [S] = {s1,s2 : Str} ; + --[S] = ConjType => {s1,s2 : Str} ; + [S] = {s1,preJiu,postJiu : Str} ; [Adv] = {s1,s2 : Str ; advType : AdvType ; hasDe : Bool} ; [NP] = {s1,s2 : Str} ; [AP] = {s1,s2 : AdjPlace => Str ; monoSyl : Bool} ; diff --git a/src/chinese/ExtraChi.gf b/src/chinese/ExtraChi.gf index d025ed0fe..689432d3d 100644 --- a/src/chinese/ExtraChi.gf +++ b/src/chinese/ExtraChi.gf @@ -18,7 +18,7 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** BaseVPS = twoSS ; ConsVPS = consrSS duncomma ; - PredVPS np vps = {s = np.s ++ vps.s} ; + PredVPS np vps = {preJiu = np.s ; postJiu = vps.s} ; MkVPI vp = {s = (mkClause [] vp).s ! Pos ! APlain} ; --- ?? almost just a copy of VPS ConjVPI c = conjunctDistrSS (c.s ! CSent) ; diff --git a/src/chinese/IdiomChi.gf b/src/chinese/IdiomChi.gf index 9a9d4d107..6b803ac79 100644 --- a/src/chinese/IdiomChi.gf +++ b/src/chinese/IdiomChi.gf @@ -12,7 +12,7 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in { ---- it is John who did it CleftNP np rs = mkClause rs.s copula np.s ; -- did it + de + is I - CleftAdv ad s = mkClause (s.s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here + CleftAdv ad s = mkClause (linS s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you diff --git a/src/chinese/ParadigmsChi.gf b/src/chinese/ParadigmsChi.gf index a04c87c55..eec89b92e 100644 --- a/src/chinese/ParadigmsChi.gf +++ b/src/chinese/ParadigmsChi.gf @@ -193,9 +193,9 @@ oper = \s -> lin Subj (ResChi.mkSubj s []) ; mkConj = overload { mkConj : Str -> Conj - = \s -> lin Conj {s = \\_ => mkConjForm s} ; + = \s -> lin Conj {s = \\_ => mkConjForm s ; conjType = NotJiu} ; mkConj : (both,and : Str) -> Conj - = \s,t -> lin Conj {s = \\_ => mkConjForm2 s t} ; + = \s,t -> lin Conj {s = \\_ => mkConjForm2 s t ; conjType = NotJiu} ; } ; mkpDet : Str -> Det = \s -> lin Det {s = word s ; detType = DTFull Sg} ; diff --git a/src/chinese/PhraseChi.gf b/src/chinese/PhraseChi.gf index 66f85995d..4f1813421 100644 --- a/src/chinese/PhraseChi.gf +++ b/src/chinese/PhraseChi.gf @@ -3,7 +3,7 @@ concrete PhraseChi of Phrase = CatChi ** open Prelude, ResChi in { lin PhrUtt pconj utt voc = {s = pconj.s ++ voc.s ++ utt.s} ; - UttS s = s ; + UttS s = ss (linS s) ; UttQS qs = ss (qs.s ! True) ; UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p} ; UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p} ; diff --git a/src/chinese/ResChi.gf b/src/chinese/ResChi.gf index 3c1cf3902..9ed6c7a50 100644 --- a/src/chinese/ResChi.gf +++ b/src/chinese/ResChi.gf @@ -93,6 +93,7 @@ resource ResChi = ParamX ** open Prelude in { param Aspect = APlain | APerf | ADurStat | ADurProg | AExper | AFut ; ---- APlain added by AR ConjForm = CPhr CPosType | CSent; + ConjType = Jiu | NotJiu ; -- to put conjunction in the right place in ConjS: "I sleep *and* she walks" vs. "if I sleep, she *then* walks" CPosType = CAPhrase | CNPhrase | CVPhrase ; DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de" @@ -169,7 +170,7 @@ oper ADurStat => v.s ++ v.ds ; ADurProg => v.dp ++ v.s ; AExper => v.s ++ v.ep ; - AFut => jiu_s ++ hui_s ++ v.s + AFut => hui_s ++ v.s } ; Neg => table { APlain => v.neg ++ v.sn ; --- neg? @@ -177,7 +178,7 @@ oper ADurStat => "不" ++ v.sn ; ADurProg => v.neg ++ v.dp ++ v.sn ; -- mei or bu AExper => v.neg ++ v.sn ++ v.ep ; - AFut => jiu_s ++ "不" ++ hui_s ++ v.s + AFut => "不" ++ hui_s ++ v.s } } ; @@ -218,12 +219,22 @@ oper -- clauses: keep np and vp separate to enable insertion of IAdv - Clause : Type = { + Clause : Type = { s : Polarity => Aspect => Str ; - np : Str; - vp : VP + np : Str ; + vp : VP ; + postJiu : Polarity => Aspect => Str ; } ; + Sentence : Type = { + preJiu, -- everything until the subject + postJiu -- everything after the subject + : Str + } ; + + linS : Sentence -> Str = \s -> s.preJiu ++ s.postJiu ; + simpleS : Str -> Sentence = \s -> {preJiu=s ; postJiu=[]} ; + mkClause = overload { mkClause : Str -> Verb -> Clause = \np,v -> @@ -240,6 +251,7 @@ oper s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; np = vp.topic ++ np ; vp = insertObj (ss compl) vp ; + postJiu = \\p,a => vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; } ; diff --git a/src/chinese/SentenceChi.gf b/src/chinese/SentenceChi.gf index 65d8ae4d3..9e9e1f38b 100644 --- a/src/chinese/SentenceChi.gf +++ b/src/chinese/SentenceChi.gf @@ -1,4 +1,4 @@ -concrete SentenceChi of Sentence = CatChi ** +concrete SentenceChi of Sentence = CatChi ** open Prelude, ResChi in { flags optimize=all_subs ; @@ -12,39 +12,55 @@ concrete SentenceChi of Sentence = CatChi ** ImpVP vp = { s = table { Pos => infVP vp ; - Neg => neg_s ++ infVP vp + Neg => neg_s ++ infVP vp } } ; - SlashVP np vp = + SlashVP np vp = mkClauseCompl np.s vp [] ** {c2 = vp.c2} ; SlashVS np vs sslash = ** {c2 = sslash.c2} ; - + -- yet another reason for discontinuity of clauses AdvSlash slash adv = slash ** {vp = insertAdv adv slash.vp} ; ---- parser loops with unknown tokens if this version is used AR 20/4/2014 ---- mkClauseCompl slash.np [] ---- ** {c2 = slash.c2} ; - + SlashPrep cl prep = cl ** {c2 = prep} ; - - EmbedS s = ss (conjThat ++ s.s) ; + + EmbedS s = ss (conjThat ++ linS s) ; EmbedQS qs = ss (qs.s ! False) ; EmbedVP vp = ss (infVP vp) ; - UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ; - UseQCl t p cl = {s = \\isDir => t.s ++ p.s ++ cl.s ! isDir ! p.p ! t.t} ; - UseRCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ; + UseCl t p cl = { + preJiu = cl.np ; + postJiu = t.s ++ p.s ++ cl.postJiu ! p.p ! t.t} ; + + UseQCl t p cl = {s = \\isDir => t.s ++ p.s ++ cl.s ! isDir ! p.p ! t.t} ; + UseRCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ; UseSlash t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t ; c2 = cl.c2} ; - AdvS a s = ss (a.s ++ s.s) ; - ExtAdvS a s = ss (a.s ++ chcomma ++ s.s) ; + AdvS a s = s ** { + preJiu = a.s ++ s.preJiu -- tomorrow she + } ; - RelS s r = ss (s.s ++ r.s) ; + ExtAdvS a s = s ** { + preJiu = a.s ++ chcomma ++ s.preJiu -- tomorrow, she + } ; - SSubjS a subj b = ss (a.s ++ subj.prePart ++ b.s ++ subj.sufPart) ; + RelS s r = s ** { + postJiu = s.postJiu ++ r.s ; + } ; + + -- a="she walks", b="I die" + -- result: preJiu="if she walks, I", postJiu="die" + SSubjS a subj b = { + preJiu = linS a ++ subj.prePart -- if she walks, + ++ b.preJiu ; -- I + postJiu = b.postJiu ++ subj.sufPart -- die + } ; } diff --git a/src/chinese/StructuralChi.gf b/src/chinese/StructuralChi.gf index 2fc84c74b..fd9b53ef3 100644 --- a/src/chinese/StructuralChi.gf +++ b/src/chinese/StructuralChi.gf @@ -5,7 +5,7 @@ concrete StructuralChi of Structural = CatChi ** lin every_Det = mkDet "每" Sg ; - + this_Quant = mkQuant "这" ; that_Quant = mkQuant "那" ; @@ -25,18 +25,20 @@ lin possess_Prep = mkPrep [] "的" ATPoss ; with_Prep = mkPrep "和" "一起" (ATPlace True) ; -- "with you" ---- with_Prep = mkPrep "和" [] ; -- "with bread" - + and_Conj = {s = table { CPhr CNPhrase => mkConjForm "和" ; CPhr CAPhrase => mkConjForm "而" ; CPhr CVPhrase => mkConjForm "又" ; - CSent => mkConjForm "并且" --modified by chenpneg 11.19 - } + CSent => mkConjForm "而" --modified by chenpneg 11.19 + } ; + conjType = NotJiu ; } ; or_Conj = {s = table { CPhr _ => mkConjForm "或" ; CSent => mkConjForm "还是" - } + } ; + conjType = NotJiu ; } ; although_Subj = mkSubj "虽然" "但"; @@ -116,13 +118,14 @@ as_CAdv = {s = word "和" ; p = word "一样" } ; -- modified by chenpeng 11.24 at_least_AdN = ssword "最少" ; -- at least five at_most_AdN = ssword "最多" ; behind_Prep = mkPrep "在" "后面" ; - + both7and_DConj = {s = table { -- modified by chenpeng 11.19 CPhr CNPhrase => mkConjForm2 "包括" "和" ; CPhr CAPhrase => mkConjForm2 "即" "又" ; CPhr CVPhrase => mkConjForm2 "不但" "而且" ; CSent => mkConjForm2 "不但" "而且" - } + } ; + conjType = NotJiu ; } ; by8agent_Prep = mkPrep "被" [] mannerAdvType; -- by for agent in passive @@ -135,7 +138,8 @@ either7or_DConj = {s = table { -- modified by chenpeng 11.19 CPhr CAPhrase => mkConjForm2 "要么" "要么" ; CPhr CVPhrase => mkConjForm2 "要么" "要么" ; CSent => mkConjForm2 "要么" "要么" - } + } ; + conjType = NotJiu ; } ; everybody_NP = ssword "每个人" ; -- [mark] "每个人": 每(every)+个(classifier)+人(person) @@ -152,11 +156,10 @@ less_CAdv = {s = than_s ; p = word "没更"} ; -- modified by chenpeng 11.24 more_CAdv = {s = than_s ; p = word "更"} ; -- modified by chenpeng 11.24 most_Predet = ssword "大多数" ; if_then_Conj = {s = table { -- added by chenpeng 11.19 - CPhr CNPhrase => mkConjForm [] ; - CPhr CAPhrase => mkConjForm [] ; - CPhr CVPhrase => mkConjForm [] ; - CSent => mkConjForm2 "如果" "那么" - } + CSent => mkConjForm2 "如果" "就" ; -- if she walks, I then sleep + CPhr _ => mkConjForm2 "如果" "那么" -- if fish , then rice + } ; + conjType = Jiu ; } ; nobody_NP = ssword "没人" ; nothing_NP = ssword "没有什么" ; @@ -171,7 +174,7 @@ there7from_Adv = mkAdv "从那里" ; -- from there there7to_Adv = mkAdv "到那里" ; therefore_PConj = ssword "因此" ; through_Prep = mkPrep "通过" ; -which_IQuant = mkIQuant "哪" ; -- +which_IQuant = mkIQuant "哪" ; -- --which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context without_Prep = mkPrep "没有" [] mannerAdvType ; youPol_Pron = ssword "您" ; -- polite you diff --git a/src/chinese/SymbolChi.gf b/src/chinese/SymbolChi.gf index 69457d54c..264e5bee5 100644 --- a/src/chinese/SymbolChi.gf +++ b/src/chinese/SymbolChi.gf @@ -13,17 +13,17 @@ concrete SymbolChi of Symbol = CatChi ** open Prelude, ResChi in { s = cn.s ++ i.s ; c = cn.c } ; - CNSymbNP det cn xs = ss (det.s ++ cn.s ++ xs.s) ; ---- + CNSymbNP det cn xs = ss (det.s ++ cn.s ++ xs.s) ; ---- CNNumNP cn i = { s = cn.s ++ i.s ; c = cn.c } ; - SymbS sy = sy ; + SymbS sy = simpleS sy.s ; SymbNum sy = sy ; SymbOrd sy = sy ; -lincat +lincat Symb, [Symb] = SS ; diff --git a/src/chinese/VerbChi.gf b/src/chinese/VerbChi.gf index be6bed536..9c0503d4b 100644 --- a/src/chinese/VerbChi.gf +++ b/src/chinese/VerbChi.gf @@ -13,7 +13,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { SlashV2A v ap = insertObj {s = ap.s ! Pred} (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; - SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; + SlashV2S v s = insertObj (ss (say_s ++ linS s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; SlashV2Q v q = insertObj (ss (say_s ++ q.s ! False)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ; ComplVV v vp = { @@ -23,7 +23,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { isAdj = False ; } ; - ComplVS v s = insertObj s (predV v []) ; + ComplVS v s = insertObj (ss (linS s)) (predV v []) ; ComplVQ v q = insertObj (ss (q.s ! False)) (predV v []) ; ComplVA v ap = insertObj {s = ap.s ! Pred} (predV v []) ; diff --git a/src/chinese/unittest/conjunctions.gftest b/src/chinese/unittest/conjunctions.gftest index e281ab5dd..024012a0d 100644 --- a/src/chinese/unittest/conjunctions.gftest +++ b/src/chinese/unittest/conjunctions.gftest @@ -1,27 +1,41 @@ -Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 就 会 走 -LangEng: if I sleep then she walks +-- Basic conjunctions, no jiu +Lang: ConjS and_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))) +LangChi: 我 睡 觉 而 她 走 +LangEng: I sleep and she walks -Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 将 会 走 -LangEng: if I sleep then she will walk +Lang: ConjS or_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV go_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV go_V)))) +LangChi: 我 去 还 是 她 去 +LangEng: I go or she goes +Lang: ConjS either7or_DConj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV go_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV go_V)))) +LangChi: 要 么 我 去 要 么 她 去 +LangEng: either I go or she goes + +-- If-then in different tenses Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 死 +LangChi: 如 果 我 睡 觉 , 她 就 死 LangEng: if I sleep then she dies Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 将 会 死 +LangChi: 如 果 我 睡 觉 , 她 就 会 死 LangEng: if I sleep then she will die +-- contrast: if_Subj, not if_then_Conj +Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V))) +LangChi: 如 果 我 睡 觉 , 她 会 死 +LangEng: if I sleep , she will die + +-- back to if_then_Conj, now with negations Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 不 死 +LangChi: 如 果 我 睡 觉 , 她 就 不 死 LangEng: if I sleep then she doesn't die Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V)))) -LangChi: 如 果 我 睡 觉 那 么 她 将 不 会 死 +LangChi: 如 果 我 睡 觉 , 她 就 不 会 死 LangEng: if I sleep then she won't die + + -- NP conjunctions Lang: ConjNP or_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N))) LangChi: 鱼 或 啤 酒 @@ -29,5 +43,5 @@ LangEng: fish or beer --NB: unnatural non-empty strings just for testing purpose Lang: ConjNP if_then_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N))) -LangChi: 鱼 啤 酒 +LangChi: 如 果 鱼 那 么 啤 酒 LangEng: if fish then beer \ No newline at end of file diff --git a/src/chinese/unittest/future.gftest b/src/chinese/unittest/future.gftest new file mode 100644 index 000000000..e94f6a1d1 --- /dev/null +++ b/src/chinese/unittest/future.gftest @@ -0,0 +1,32 @@ +Lang: UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron i_Pron) (UseV die_V)) +LangChi: 我 就 会 死 +LangEng: I will die + +Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V))) +LangChi: 如 果 我 睡 觉 , 她 会 走 +LangEng: if I sleep , she will walk + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ProgrVP (UseV die_V))) +LangChi: 我 在 死 +LangEng: I am dying + +Lang: UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron i_Pron) (UseV die_V)) +LangChi: 我 就 不 会 死 +LangEng: I won't die + +Lang: UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V))) +-- LangChi: 我 会 不 会 死 +LangChi: 我 会 死 吗 +LangEng: will I die + +Lang: UseQCl (TTAnt TFut ASimul) PNeg (QuestCl (PredVP (UsePron i_Pron) (UseV die_V))) +LangChi: 我 不 会 死 吗 +LangEng: won't I die + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))))) +LangChi: 我 不 知 道 我 会 不 会 死 +LangEng: I don't know if I will die + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PNeg (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))))) +LangChi: 我 不 知 道 我 不 会 死 +LangEng: I don't know if I won't die \ No newline at end of file From 5aff25b37f4ec881f6191a5f6fdc65b0594728ff Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 9 Feb 2022 16:56:59 +0800 Subject: [PATCH 072/141] =?UTF-8?q?make=20all=20the=20questions=20by=20ext?= =?UTF-8?q?ending=20a=20"=E5=90=97"=20at=20end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chinese/QuestionChi.gf | 17 +---------------- src/chinese/unittest/future.gftest | 8 ++++---- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/src/chinese/QuestionChi.gf b/src/chinese/QuestionChi.gf index 8037d4d46..d190869d9 100644 --- a/src/chinese/QuestionChi.gf +++ b/src/chinese/QuestionChi.gf @@ -7,22 +7,7 @@ concrete QuestionChi of Question = CatChi ** lin QuestCl cl = { - s = table { - True => \\p,a => cl.s ! p ! a ++ question_s ; -- redup question as variant in ExtraChi - False => \\p,a => --- code copied from ExtraChi - let - v = cl.vp.verb ; - verb = case a of { - APlain => v.s ++ v.neg ++ v.sn ; - APerf => v.s ++ neg_s ++ v.sn ++ v.pp ; - ADurStat => v.s ++ neg_s ++ v.sn ; - ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu - AExper => v.s ++ v.neg ++ v.sn ++ v.ep ; - AFut => jiu_s ++ hui_s ++ v.s ++ v.neg ++ v.sn ++ v.ep -- TODO check placement of jiang - } - in - cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl - } + s = \\b,p,a => cl.s ! p ! a ++ question_s ; -- redup question as variant in ExtraChi } ; QuestVP ip vp = { diff --git a/src/chinese/unittest/future.gftest b/src/chinese/unittest/future.gftest index e94f6a1d1..6a7110fad 100644 --- a/src/chinese/unittest/future.gftest +++ b/src/chinese/unittest/future.gftest @@ -1,5 +1,5 @@ Lang: UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron i_Pron) (UseV die_V)) -LangChi: 我 就 会 死 +LangChi: 我 会 死 LangEng: I will die Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V))) @@ -11,7 +11,7 @@ LangChi: 我 在 死 LangEng: I am dying Lang: UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron i_Pron) (UseV die_V)) -LangChi: 我 就 不 会 死 +LangChi: 我 不 会 死 LangEng: I won't die Lang: UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V))) @@ -24,9 +24,9 @@ LangChi: 我 不 会 死 吗 LangEng: won't I die Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))))) -LangChi: 我 不 知 道 我 会 不 会 死 +LangChi: 我 不 知 道 我 会 死 吗 LangEng: I don't know if I will die Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PNeg (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))))) -LangChi: 我 不 知 道 我 不 会 死 +LangChi: 我 不 知 道 我 不 会 死 吗 LangEng: I don't know if I won't die \ No newline at end of file From f9a633ea520309b37bec1713f55dba5f1dd1b64b Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 9 Feb 2022 17:00:15 +0800 Subject: [PATCH 073/141] adjustment for "mustn't" not idiomatic but compositionally correct now for mustn't --- src/chinese/unittest/negation.gftest | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/chinese/unittest/negation.gftest b/src/chinese/unittest/negation.gftest index 1d9f4c6f8..f78c4144d 100644 --- a/src/chinese/unittest/negation.gftest +++ b/src/chinese/unittest/negation.gftest @@ -22,8 +22,9 @@ Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) LangChi: 这 些 猫 不 想 走 LangEng: these cats don't want to walk +-- this tree does not make semantic sense in chinese but is compositionally correct due to the direct word for word translation for "must" Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (ComplVV must_VV (UseV walk_V))) -LangChi: 那 些 猫 不 行 走 +LangChi: 那 些 猫 不 必 须 走 LangEng: those cats mustn't walk -- 没有 and must not , bu ke yi \ No newline at end of file From c0daf6d0bac69e1e6bf236a06bf1d4d6c1aa5930 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Mon, 21 Feb 2022 11:53:56 +0800 Subject: [PATCH 074/141] remove predicative form in CompareA UseComparA --- src/chinese/AdjectiveChi.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chinese/AdjectiveChi.gf b/src/chinese/AdjectiveChi.gf index 5098f5ed5..ab17134ac 100644 --- a/src/chinese/AdjectiveChi.gf +++ b/src/chinese/AdjectiveChi.gf @@ -5,13 +5,13 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in { PositA a = a ** {hasAdA = False} ; ComparA a np = a ** { - s = table { adjPlace => than_s ++ np.s ++ a.s!adjPlace}; + s = table {_=> than_s ++ np.s ++ a.s!Attr}; hasAdA = False }; UseComparA a = a ** { - s = table { adjPlace => geng_s ++ a.s!adjPlace}; + s = table { _=> geng_s ++ a.s!Attr}; hasAdA = False }; From 65ddced771283fbf073896c5be5da5c365269ce1 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Mon, 21 Feb 2022 16:35:09 +0800 Subject: [PATCH 075/141] unit tests for relative --- src/chinese/unittest/relative.gftest | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/chinese/unittest/relative.gftest diff --git a/src/chinese/unittest/relative.gftest b/src/chinese/unittest/relative.gftest new file mode 100644 index 000000000..1d697bba4 --- /dev/null +++ b/src/chinese/unittest/relative.gftest @@ -0,0 +1,57 @@ +-------------------------------------------------------------- +-- Basics + +Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) +LangEng: a cat that walks +LangChi: 一 只 走 的 猫 + +Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) +LangEng: a cat that drinks milk +LangChi: 一 只 喝 牛 奶 的 猫 + +Lang: MassNP (RelCN (UseN milk_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a drink_V2))))) +LangEng: milk that the cat drinks +LangChi: 猫 喝 的 牛 奶 + + +Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (VPSlashPrep (UseV walk_V) with_Prep) (DetCN (DetQuant DefArt NumSg) (UseN dog_N)))))) +LangChi: 和 狗 一 起 走 的 猫 +LangEng: the cat that walks with the dog + +-------------------------------------------------------------- +-- Determiner placement + +Lang: DetCN (DetQuant this_Quant NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) +LangEng: this cat that walks +LangChi: 这 只 走 的 猫 + +Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) +LangEng: my cat that drinks milk +LangChi: 我 的 喝 牛 奶 的 猫 + + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))))))) +LangEng: this is the cat that walks +LangChi: 这 个 是 走 的 猫 + + +-------------------------------------------------------------- +-- Complex example: "the book that his/her father gave him/her" + +-- 1. His father gave him a book +Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (MassNP (ComplN2 father_N2 (UsePron he_Pron))) (ComplSlash (Slash2V3 give_V3 (MassNP (UseN book_N))) (UsePron he_Pron))) +LangChi: 他 父 亲 把 书 给 了 他 + +-- 2. the book that the father of her gave her +Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron she_Pron))) (Slash3V3 give_V3 (UsePron she_Pron)))))) +LangChi: 她 父 亲 给 了 她 的 书 +LangEng: the book that the father of her gave her + +-- I want to read the book that my father gave me +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 father_N2)) (Slash3V3 give_V3 (UsePron i_Pron)))))))))) +LangChi: 我 想 读 我 的 父 亲 给 了 我 的 书 + + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 father_N2)) (SlashV2a read_V2))))))))) +LangChi: 我 想 读 我 的 父 亲 读 了 的 书 +LangEng: I want to read the book that my father read \ No newline at end of file From 83fed4e81297755167f4ccd875aa9d00eab9f52e Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Mon, 21 Feb 2022 16:35:33 +0800 Subject: [PATCH 076/141] unit test for tenses --- src/chinese/unittest/tenses.gftest | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/chinese/unittest/tenses.gftest diff --git a/src/chinese/unittest/tenses.gftest b/src/chinese/unittest/tenses.gftest new file mode 100644 index 000000000..9927b82ce --- /dev/null +++ b/src/chinese/unittest/tenses.gftest @@ -0,0 +1,33 @@ +------------- +-- Basics + +Lang: UseCl (TTAnt TPres AAnter) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V)) +LangEng: the cat has walked +LangChi: 猫 走 了 + +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)) (UseV walk_V)) +LangEng: this cat walks +LangChi: 这 只 猫 走 + +Lang: UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)) (UseV walk_V)) +LangEng: this cat will walk +LangChi: 这 只 猫 会 走 + +Lang: PredVP (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)) (ComplVV can8know_VV (UseV walk_V)) +LangChi: 这 只 猫 会 走 +LangEng: this cat can walk + +Lang: PredVP (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)) (ComplVV can_VV (UseV walk_V)) +LangChi: 这 只 猫 能 走 +LangEng: this cat can walk + +------------- +-- Conditions + +Lang: AdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V))) +LangEng: if I walk the cat will walk +LangChi: 如 果 我 走 猫 会 走 + +Lang: ExtAdvS (SubjS when_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV walk_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (UseV walk_V))) +LangEng: when I walk , the cat will walk +LangChi: 我 走 的 时 候 , 猫 会 走 From 4db945a500d3570bc561f6f2fce5cae1ed4c913a Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 23 Feb 2022 10:57:06 +0800 Subject: [PATCH 077/141] remove collectives in collective nouns for xie for quantifier --- src/chinese/unittest/quantifier.gftest | 63 ++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/chinese/unittest/quantifier.gftest diff --git a/src/chinese/unittest/quantifier.gftest b/src/chinese/unittest/quantifier.gftest new file mode 100644 index 000000000..137e670ad --- /dev/null +++ b/src/chinese/unittest/quantifier.gftest @@ -0,0 +1,63 @@ +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN somePl_Det (UseN cat_N)))) +--LangChi: 我 有 一 些 只 猫 +LangChi: 我 有 一 些 猫 +LangEng: I have some cats + +Lang: DetCN someSg_Det (UseN water_N) +--LangChi: 一 些 滴 水 +LangChi: 一 些 水 +LangEng: some water + +Lang: DetCN someSg_Det (UseN beer_N) +--LangChi: 一 些 杯 啤 酒 +LangChi: 一 些 啤 酒 +LangEng: some beer + +--LangChi: 我 有 几 只 猫 +--LangEng: I have a few cats + + +Lang: DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 pot111)))))) (UseN cat_N) +LangChi: 十 一 只 猫 +LangEng: eleven cats + +Lang: DetCN many_Det (UseN cat_N) +LangChi: 很 多 猫 +LangEng: many cats + +Lang: PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a have_V2) (DetCN many_Det (UseN child_N)))) +LangChi: 我 想 有 很 多 孩 子 +LangEng: I want to have many children + + +Lang: DetCN (DetQuant this_Quant NumPl) (UseN cat_N) +LangChi: 这 些 猫 +LangEng: these cats + +Lang: DetCN (DetQuant this_Quant NumSg) (UseN cat_N) +LangChi: 这 只 猫 +LangEng: this cat + +Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a like_V2) (DetCN (DetQuant that_Quant NumPl) (UseN cat_N))) +LangChi: 我 喜 欢 那 些 猫 +LangEng: I like those cats + +Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a like_V2) (DetCN (DetQuant that_Quant NumSg) (UseN cat_N))) +LangChi: 我 喜 欢 那 只 猫 +LangEng: I like that cat + +Lang: DetCN every_Det (UseN rule_N) +LangChi: 每 项 规 则 +LangEng: every rule + +Lang: DetCN few_Det (UseN child_N) +LangChi: 少 些 孩 子 +LangEng: few children + +Lang: PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a have_V2) (DetCN few_Det (UseN child_N)))) +LangChi: 我 想 有 少 些 孩 子 +LangEng: I want to have few children + +Lang: DetCN much_Det (UseN beer_N) +LangChi: 多 杯 啤 酒 +LangEng: much beer From 828ea2545c85b7324e4b59472423be99ebc9a317 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:08:31 +0800 Subject: [PATCH 078/141] remove collectives in collective nouns for xie for quantifier --- src/chinese/StructuralChi.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chinese/StructuralChi.gf b/src/chinese/StructuralChi.gf index fd9b53ef3..40cf45cf1 100644 --- a/src/chinese/StructuralChi.gf +++ b/src/chinese/StructuralChi.gf @@ -54,8 +54,8 @@ when_IAdv = mkIAdvL "什么时候" ; how_IAdv = mkIAdvL "如何" ; all_Predet = ssword "所有" ; many_Det = mkDet (word "很多") DTPoss ; -someSg_Det = mkDet (word "一些") Sg ; -somePl_Det = mkDet (word "一些") Sg ; +someSg_Det = mkDet (word "一些") DTPoss ; +somePl_Det = mkDet (word "一些") DTPoss ; few_Det = mkDet "少" Pl ; other_A = mkA "其他" ; From bf213bf77e706daa96baa52d12c9675fe00c9b86 Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:09:07 +0800 Subject: [PATCH 079/141] add test for quantifier --- src/chinese/unittest/quantifier.gftest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chinese/unittest/quantifier.gftest b/src/chinese/unittest/quantifier.gftest index 137e670ad..2a15d0cbf 100644 --- a/src/chinese/unittest/quantifier.gftest +++ b/src/chinese/unittest/quantifier.gftest @@ -50,7 +50,7 @@ Lang: DetCN every_Det (UseN rule_N) LangChi: 每 项 规 则 LangEng: every rule -Lang: DetCN few_Det (UseN child_N) +Lang: DetCN few_Det (UseN child_N) LangChi: 少 些 孩 子 LangEng: few children From 9400e0ed21286a287f8b16aa5644d464caa25f4c Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 2 Mar 2022 10:46:46 +0800 Subject: [PATCH 080/141] move transitive and complements from affixes to tenses --- src/chinese/unittest/tenses.gftest | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/chinese/unittest/tenses.gftest b/src/chinese/unittest/tenses.gftest index 9927b82ce..e85c43fa9 100644 --- a/src/chinese/unittest/tenses.gftest +++ b/src/chinese/unittest/tenses.gftest @@ -21,6 +21,17 @@ Lang: PredVP (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)) (ComplVV can_VV (U LangChi: 这 只 猫 能 走 LangEng: this cat can walk +-- As a verbal complement +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)) (ComplVV want_VV (UseV walk_V))) +LangChi: 我 的 猫 想 走 +LangEng: my cat wants to walk + +-- Transitive verbs + +Lang: UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a eat_V2) (DetCN (DetQuant IndefArt NumSg) (UseN fish_N)))) +LangChi: 我 吃 了 一 条 鱼 +LangEng: I have eaten a fish + ------------- -- Conditions From 184497284d5881a914f675a4233cf69337aaef5c Mon Sep 17 00:00:00 2001 From: 1Regina <46968488+1Regina@users.noreply.github.com> Date: Wed, 2 Mar 2022 15:23:10 +0800 Subject: [PATCH 081/141] adverbials todo: add semantic context constructors --- src/chinese/unittest/adverbial.gftest | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/chinese/unittest/adverbial.gftest diff --git a/src/chinese/unittest/adverbial.gftest b/src/chinese/unittest/adverbial.gftest new file mode 100644 index 000000000..842d9c90c --- /dev/null +++ b/src/chinese/unittest/adverbial.gftest @@ -0,0 +1,12 @@ +-- These are not ideal output. TODO: Add new constructor for semantic contexts to achieve the correct output for "地" vs "得" + +Lang: PredVP (AdvNP (UsePron it_Pron) (PositAdvAdj beautiful_A)) (UseV walk_V) +LangChi: 漂 亮 地 的 它 走 +LangEng: it beautifully walks +-- Correct LangChi: 它 漂 亮 地 走 + + +Lang: PredVP (UsePron it_Pron) (AdvVP (UseV walk_V) (PositAdvAdj beautiful_A)) +LangChi: 它 走 得 漂 亮 地 +LangEng: it walks beautifully +-- Correct LangChi: 它 走 得 漂 亮 From 7fe4fd01f5c4b7658a463062f981d3ba8e705f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?bc=C2=B2?= Date: Thu, 7 Apr 2022 08:37:04 +0000 Subject: [PATCH 082/141] (gf2ud) label updates (#97) * (gf2ud) add ConsNP "," rule - use CCONJ instead of CONJ * (gf2ud) dobj -> obj (ud 2 -> ud 1) - clean up whitespace * (gf2ud) fix eng labels - comma exists in SSubjS, not SubjS - add local rule for comma in VocNP - auxpass (UD1) -> aux:pass (UD2) --- src/Lang.labels | 268 ++++++++++++++++++------------------- src/english/LangEng.labels | 10 +- 2 files changed, 134 insertions(+), 144 deletions(-) diff --git a/src/Lang.labels b/src/Lang.labels index 7b574b343..fb55ff6d9 100644 --- a/src/Lang.labels +++ b/src/Lang.labels @@ -1,157 +1,157 @@ -PredVP nsubj head -PredVPS nsubj head -DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English -DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English -SlashVP nsubj head -SlashVS nsubj head ccomp -FocusObjS nsubj head -- again might be wrong; more correct to call it dobj -QuestIAdv advmod head -- "where does John sleep" cf. AdvVP -QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head? -QuestQVP nsubj head -QuestSlash obj head -QuestVP nsubj head +PredVP nsubj head +PredVPS nsubj head +DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English +DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English +SlashVP nsubj head +SlashVS nsubj head ccomp +FocusObjS nsubj head -- again might be wrong; more correct to call it obj +QuestIAdv advmod head -- "where does John sleep" cf. AdvVP +QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head? +QuestQVP nsubj head +QuestSlash obj head +QuestVP nsubj head IdetCN det head -PredSCVP csubj head +PredSCVP csubj head -ComplSlash head obj -ComplSlashIP head obj -Slash3V3 head obj -SlashV2VNP head obj xcomp -PastPartAgentAP head obj -AdvQVP head obj +ComplSlash head obj +ComplSlashIP head obj +Slash3V3 head obj +SlashV2VNP head obj xcomp +PastPartAgentAP head obj +AdvQVP head obj -Slash2V3 head iobj +Slash2V3 head iobj -ComplVS head ccomp -ComplVQ head ccomp -SlashV2S head ccomp -SlashV2Q head ccomp -CleftAdv head advcl -- not sure +ComplVS head ccomp +ComplVQ head ccomp +SlashV2S head ccomp +SlashV2Q head ccomp +CleftAdv head advcl -- not sure -ComplVA head xcomp -ComplVV head xcomp -SlashVV head acl -SlashV2A head xcomp -SlashV2V head xcomp +ComplVA head xcomp +ComplVV head xcomp +SlashVV head acl +SlashV2A head xcomp +SlashV2V head xcomp -AdvNP head nmod -- not sure -ExtAdvNP head nmod -- not sure -PassAgentVPSlash head nmod -- not sure -CleftNP head acl -- this cannot be nmod, not with type RS +AdvNP head nmod -- not sure +ExtAdvNP head nmod -- not sure +PassAgentVPSlash head nmod -- not sure +CleftNP head acl -- this cannot be nmod, not with type RS -SSubjS head mark advcl -RelS head advcl +SSubjS head mark advcl +RelS head advcl -AdNum advmod head -AdAP advmod head -AdvAP head advmod -ComparAdvAdj advmod amod head -ComparAdvAdjS advmod amod head -AdvIAdv advmod head -AdVVP advmod head -AdvVP head advmod -ExtAdvVP head advmod -AddAdvQVP head advmod -AdVVPSlash advmod head -AdvVPSlash head advmod -AdvSlash head advmod -ExistIPAdv head advmod -AdvS advmod head -ExtAdvS advmod head +AdNum advmod head +AdAP advmod head +AdvAP head advmod +ComparAdvAdj advmod amod head +ComparAdvAdjS advmod amod head +AdvIAdv advmod head +AdVVP advmod head +AdvVP head advmod +ExtAdvVP head advmod +AddAdvQVP head advmod +AdVVPSlash advmod head +AdvVPSlash head advmod +AdvSlash head advmod +ExistIPAdv head advmod +AdvS advmod head +ExtAdvS advmod head -SubjS mark head -RelVP mark head -RelSlash mark head +SubjS mark head +RelVP mark head +RelSlash mark head -ComplN2 head nmod -ComplN3 nmod head -AdvCN head nmod -PossNP head nmod -PartNP head nmod -ExistNPAdv head nmod +ComplN2 head nmod +ComplN3 nmod head +AdvCN head nmod +PossNP head nmod +PartNP head nmod +ExistNPAdv head nmod -OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function -DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function -CNNumNP head nummod +OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function +DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function +CNNumNP head nummod -ApposCN head appos -ApposNP head appos +ApposCN head appos +ApposNP head appos -RelNP head acl -RelCN head acl -SentCN head acl -SentAP head acl +RelNP head acl +RelCN head acl +SentCN head acl +SentAP head acl -DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function -DetCN det head -IdetCN det head +DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function +DetCN det head +IdetCN det head IdetQuant head nummod -CountNP det head -PredetNP det head +CountNP det head +PredetNP det head PPartNP head amod -- only in core RGL -AdjCN amod head -AdjDAP head amod -CAdvAP case amod head -ComparA amod head -ComplA2 amod head -CompoundAP head amod -AdAdV amod head -AdAdv amod head +AdjCN amod head +AdjDAP head amod +CAdvAP case amod head +ComparA amod head +ComplA2 amod head +CompoundAP head amod +AdAdV amod head +AdAdv amod head -CompoundN compound head +CompoundN compound head -IIDig head goeswith +IIDig head goeswith -PrepNP case head -PrepIP case head -SlashPrep head case -VPSlashPrep head case +PrepNP case head +PrepIP case head +SlashPrep head case +VPSlashPrep head case -UttImpPl empty head -UttImpPol empty head -UttImpSg empty head +UttImpPl empty head +UttImpPol empty head +UttImpSg empty head -MkVPS empty empty head +MkVPS empty empty head -UseCl empty empty head -UseQCl empty empty head -UseRCl empty empty head -UseSlash empty empty head -UseVC empty empty head +UseCl empty empty head +UseQCl empty empty head +UseRCl empty empty head +UseSlash empty empty head +UseVC empty empty head -BaseAP head conj -BaseAdV head conj -BaseAdv head conj -BaseCN head conj -BaseDAP head conj -BaseIAdv head conj -BaseNP head conj -BaseRS head conj -BaseS head conj -ConsAP head conj -ConsAdV head conj -ConsAdv head conj -ConsCN head conj -ConsDAP head conj -ConsIAdv head conj -ConsNP head conj -ConsRS head conj -ConsS head conj -ConjAP cc head -ConjAdV cc head -ConjAdv cc head -ConjCN cc head -ConjDet cc head -ConjIAdv cc head -ConjNP cc head -ConjRS cc head -ConjS cc head -PhrUtt cc head discourse +BaseAP head conj +BaseAdV head conj +BaseAdv head conj +BaseCN head conj +BaseDAP head conj +BaseIAdv head conj +BaseNP head conj +BaseRS head conj +BaseS head conj +ConsAP head conj +ConsAdV head conj +ConsAdv head conj +ConsCN head conj +ConsDAP head conj +ConsIAdv head conj +ConsNP head conj +ConsRS head conj +ConsS head conj +ConjAP cc head +ConjAdV cc head +ConjAdv cc head +ConjCN cc head +ConjDet cc head +ConjIAdv cc head +ConjNP cc head +ConjRS cc head +ConjS cc head +PhrUtt cc head discourse -PlusChunk head dep -TTAnt empty empty head +PlusChunk head dep +TTAnt empty empty head TExclMark head dep -- punctuation in the middle in these three TFullStop head dep @@ -159,13 +159,13 @@ TQuestMark head dep ComplV2 head obj -- shortcuts in App ComplV2V head obj xcomp -ComplV3 head iobj obj ---- could be dobj dobj +ComplV3 head iobj obj ---- could be obj obj PassAgentV2 head ncomp -- not sure RelV2 mark nsubj head QuestV2 obj nsubj head ModCN amod head -- in ResourceDemo -RSubjS mark advcl head +RSubjS mark advcl head SlashV2 nsubj head RAdvCN head case nmod SubjCl head mark advcl @@ -181,7 +181,7 @@ AdV ADV Adv ADV CAdv ADV Card NUM -Conj CONJ +Conj CCONJ Det DET Digits NUM IAdv ADV @@ -194,7 +194,7 @@ N2 NOUN N3 NOUN Numeral NUM Ord NUM -PConj CONJ +PConj CCONJ PN PROPN Predet DET Prep ADP @@ -214,7 +214,3 @@ VA VERB VQ VERB VS VERB VV VERB - - - - diff --git a/src/english/LangEng.labels b/src/english/LangEng.labels index e011bab47..625bd231f 100644 --- a/src/english/LangEng.labels +++ b/src/english/LangEng.labels @@ -3,13 +3,13 @@ UseV,ComplVV,ComplVS,ComplVQ,ComplVA,SlashV2a,SlashV2V,SlashV2A,SlashV2S,Slash2V UseV,UseComp {"to"} PART mark head UseComp,CompAdv,CompAP,CompNP,CompCN,ProgrVP,QuestIComp {"is","are","am","was","were","been","be"} VERB cop head CompCN {"a","an"} DET det head -PassV2 {"is","are","am","was","were""been","be"} VERB auxpass head +PassV2 {"is","are","am","was","were""been","be"} VERB aux:pass head ComplVV {"to"} PART mark xcomp ComplVS {"that"} PART mark ccomp EmbedVP {"to"} PART mark head EmbedS {"that"} PART mark head SentCN {"that","to"} PART mark acl -ExtAdvS,SubjS {","} PUNCT punct head +ConsNP,ExtAdvS,SSubjS,VocNP {","} PUNCT punct head ExistNPAdv,ExistNP {"not","don't","doesn't","didn't","haven't","hasn't","hadn't","wouldn't","won't","isn't","aren't","wasn't","weren't"} PART neg head ExistNPAdv,ExistNP {"has","had","have","will","would","do","does","did"} AUX aux head ExistNPAdv,ExistNP {"is","are","am","was","were""been","be"} VERB cop head @@ -34,9 +34,3 @@ PossNP,PartNP {"of"} ADP case nmod @"am" PresSg1 @"is" PresSg3 @"are" PresPl - - - - - - From 0245dc2d5940f6b9f1eb09bf502547ff08e12955 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 7 Apr 2022 10:03:14 +0800 Subject: [PATCH 083/141] (Eng) minor cleanup,change date format in comments --- src/english/ResEng.gf | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/src/english/ResEng.gf b/src/english/ResEng.gf index f6965740b..7ea45ee49 100644 --- a/src/english/ResEng.gf +++ b/src/english/ResEng.gf @@ -159,12 +159,12 @@ param s = table { AAdj Posit c => adjCompar.s ! AAdj Posit c ; AAdv => adjCompar.s ! AAdv ; - _ => nonExist } ; -- IL 06/2021. Replace with an actual string, if this causes problems. + _ => nonExist } ; -- IL 2021-06. Replace with an actual string, if this causes problems. isMost = True } ; _ => adjCompar } ; - -- IL 06/2021: remove "more" and "most" from A & A2's inflection table + -- IL 2021-06: remove "more" and "most" from A & A2's inflection table getCompar : Case -> Adjective -> Str = \c,a -> case a.isMost of { True => "more" ++ a.s ! AAdj Posit c ; False => a.s ! AAdj Compar c @@ -395,7 +395,7 @@ param False => {aux = x ; adv = "not" ; fin = [] ; inf = z} } ; -{- IL 24/04/2018 To fix scope of reflexives: +{- IL 2018-04 To fix scope of reflexives: a) ComplSlash ( … ReflVP … ) X: reflexive should agree with X LangEng> l PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (ReflVP (SlashV2a like_V2))) (UsePron he_Pron)) I beg him to like /himself/ @@ -421,42 +421,22 @@ param insertExtra obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle ; missingAdv = vp.missingAdv } ; --- AR 7/3/2013 move the particle after the object - insertObjPartLast : (Agr => Str) -> VP -> VP = \obj,vp -> { - s = vp.s ; + insertObjPartLast : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** { p = [] ; -- remove particle from here - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; - ad = vp.ad ; s2 = \\a => obj ! a ++ vp.s2 ! a ++ vp.p ; -- and put it here ; corresponds to insertObjPre isSimple = False ; - ext = vp.ext } ; --- The adverb should be before the finite verb. insertAdV : Str -> VP -> VP = \ad -> insertAdVAgr (\\_ => ad) ; - insertAdVAgr : (Agr => Str) -> VP -> VP = \ad,vp -> { - s = vp.s ; - p = vp.p ; - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; + insertAdVAgr : (Agr => Str) -> VP -> VP = \ad,vp -> vp ** { ad = \\a => vp.ad ! a ++ ad ! a ; - s2 = \\a => vp.s2 ! a ; isSimple = False ; - ext = vp.ext } ; - insertExtra : Str -> VP -> VP = \e,vp -> { - s = vp.s ; - p = vp.p ; - prp = vp.prp ; - ptp = vp.ptp ; - inf = vp.inf ; - ad = vp.ad ; - s2 = vp.s2 ; + insertExtra : Str -> VP -> VP = \e,vp -> vp ** { isSimple = False ; ext = vp.ext ++ e --- there should be at most one, one might think; but: I would say that it will be raining if I saw clouds } ; @@ -523,7 +503,7 @@ param haveContr = agrVerb (cBind "s") (cBind "ve") ; haventContr = agrVerb (cBind "s not") (cBind "ve not") ; - Aux = { + Aux : Type = { pres : Polarity => Agr => Str ; contr : Polarity => Agr => Str ; -- contracted forms past : Polarity => Agr => Str ; --# notpresent From d35a709eb77cd25d027fe4b53f33ca7e6623a680 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 7 Apr 2022 10:20:26 +0800 Subject: [PATCH 084/141] (Eng) Move VP's inflection table into Cl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Replaces 1300 fields with 50 fields + one new 2-valued parameter * Only construct the full table with Tense,Ant,Pol… in Cl --- src/english/ExtendEng.gf | 18 ++--- src/english/ExtraEng.gf | 24 +++---- src/english/IdiomEng.gf | 1 - src/english/ResEng.gf | 143 +++++++++++++++++++++++++++------------ 4 files changed, 118 insertions(+), 68 deletions(-) diff --git a/src/english/ExtendEng.gf b/src/english/ExtendEng.gf index 44f944fd9..c2560268d 100644 --- a/src/english/ExtendEng.gf +++ b/src/english/ExtendEng.gf @@ -185,7 +185,7 @@ concrete ExtendEng of Extend = mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS { s = \\o,a => let - verb = vp.s ! t.t ! t.a ! p.p ! o ! a ; -- choice of Order determines aux or not + verb = mkVerbForms a vp ! t.t ! t.a ! p.p ! o ! a ; -- choice of Order determines aux or not compl = vp.s2 ! a ++ vp.ext in {fin = verb.aux ++ t.s ++ p.s ; inf = verb.adv ++ vp.ad ! a ++ verb.fin ++ verb.inf ++ vp.p ++ compl} ; @@ -288,16 +288,12 @@ lin BaseImp = twoTable2 CPolarity ImpForm ; let be = predAux auxBe ; ppt = vps.ptp - in { - s = be.s ; - p = [] ; - prp = be.prp ; - ptp = be.ptp ; - inf = be.inf ; - ad = \\_ => [] ; - s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent - isSimple = False ; - ext = vps.ext + in be ** { + p = [] ; + ad = \\_ => [] ; + s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent + isSimple = False ; + ext = vps.ext } ; lin diff --git a/src/english/ExtraEng.gf b/src/english/ExtraEng.gf index 248fb6665..24e5bd63f 100644 --- a/src/english/ExtraEng.gf +++ b/src/english/ExtraEng.gf @@ -75,7 +75,7 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** MkVPS t p vp = { s = \\a => let - verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ; + verb = mkVerbForms a vp ! t.t ! t.a ! p.p ! oDir ! a ; verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ; in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext } ; @@ -180,17 +180,13 @@ lin let be = predAux auxBe ; ppt = vps.ptp - in { - s = be.s ; - p = [] ; - prp = be.prp ; - ptp = be.ptp ; - inf = be.inf ; - ad = \\_ => [] ; - s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent - isSimple = False ; - ext = vps.ext - } ; + in be ** { + p = [] ; + ad = \\_ => [] ; + s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent + isSimple = False ; + ext = vps.ext + } ; lin PassVPSlash vps = passVPSlash vps [] ; @@ -242,7 +238,7 @@ lin let subj = np.s ! npNom ; agr = np.a ; - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr in case o of { @@ -256,7 +252,7 @@ lin let subj = np.s ! npNom ; agr = np.a ; - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr in case o of { diff --git a/src/english/IdiomEng.gf b/src/english/IdiomEng.gf index eefc0307b..be0fd811d 100644 --- a/src/english/IdiomEng.gf +++ b/src/english/IdiomEng.gf @@ -44,4 +44,3 @@ concrete IdiomEng of Idiom = CatEng ** open Prelude, ResEng in { } ; } - diff --git a/src/english/ResEng.gf b/src/english/ResEng.gf index 7ea45ee49..1257ca98b 100644 --- a/src/english/ResEng.gf +++ b/src/english/ResEng.gf @@ -252,18 +252,59 @@ param Tense => Anteriority => CPolarity => Order => Agr => {aux, adv, fin, inf : Str} ; -- would, not, sleeps, slept - VP : Type = { - s : VerbForms ; - p : Str ; -- verb particle - prp : Str ; -- present participle - ptp : Str ; -- past participle - inf : Str ; -- the infinitive form ; VerbForms would be the logical place - ad : Agr => Str ; -- sentence adverb (can be Xself, hence Agr) - s2 : Agr => Str ; -- complement - ext : Str ; -- extreposed field such as S, QS, VP - isSimple : Bool -- regulates the place of participle used as adjective - } ; +{- IL 2022-04: reduce the fields in VP and make the grammar better suited for morphological analysis + All verbs except auxiliaries only need 6 forms inside VP, and other forms can be built in PredVP. + Auxiliaries need more forms. So we make VP an extension of Aux, and add a parameter that tells + which strategy to use when building a Cl: use the 4 forms, or use the fields in Aux. + (If we treat auxiliaries as normal verbs, we get "you don't be __" for "you aren't __".) + If we didn't care about morphological lexicon, we could just fill the Aux fields for all verbs: + morphologically distinct forms like "can't" for auxiliaries, and periphrastic constructions + like "doesn't sing/eat/play" for other verbs. However, then morphologically analysing the word + "doesn't" returns every single function that constructs a VP, which clutters morpho analysis. + + So we use two sets of fields and a parameter for which strategy to choose in PredVP. This results + in significantly fewer fields than previously, and is better for morphological analysis. +-} + VP : Type = { + -- The common parts + p : Str ; -- verb particle + ad : Agr => Str ; -- sentence adverb (can be Xself, hence Agr) + s2 : Agr => Str ; -- complement + ext : Str ; -- extreposed field such as S, QS, VP + prp : Str ; -- present participle + ptp : Str ; -- past participle + inf : Str ; -- the infinitive form + isSimple : Bool ; -- regulates the place of participle used as adjective + + -- The variable parts, depending on whether the main verb of the VP is auxiliary or not + isAux : Bool ; + auxForms : { -- nonExist when isAux=False + past, --# notpresent + contr, + pres : Polarity => Agr => Str ; + } ; + nonAuxForms : { -- nonExist when isAux=True + pres : Agr => Str ; -- sing/sings ; can be streamlined into two forms if needed + past : Str ; --# notpresent + } + } ; + + -- called from mkClause, when we finally put together all forms for a Cl + mkVerbForms : Agr -> VP -> VerbForms = \agr,vp -> case vp.isAux of { + True => + let aux : Aux = vp.auxForms ** { + inf = vp.inf ; + ppart = vp.ptp ; + prpart = vp.prp } ; + in auxVerbForms aux ; + False => + let fin : Str = vp.nonAuxForms.pres ! agr ; + inf : Str = vp.inf ; + part : Str = vp.ptp ; + in nonAuxVerbForms fin inf part + vp.nonAuxForms.past --# notpresent + } ; SlashVP = VP ** {c2 : Str ; gapInMiddle : Bool; @@ -276,20 +317,57 @@ param cBind : Str -> Str = \s -> Predef.BIND ++ ("'" + s) ; predV : Verb -> VP = \verb -> { - s = \\t,ant,b,ord,agr => - let - inf = verb.s ! VInf ; - fin = presVerb verb agr ; - part = verb.s ! VPPart ; - in - case of { + p = verb.p ; -- Common to all verbs + prp = verb.s ! VPresPart ; + ptp = verb.s ! VPPart ; + inf = verb.s ! VInf ; + ad = \\_ => [] ; + ext = [] ; + isSimple = True ; ---- but really depends on whether p == [] + s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] ; + + isAux = False ; -- Specific to non-Aux verbs + auxForms = { + contr, + past, --# notpresent + pres = \\_,_ => nonExist} ; + nonAuxForms = { + pres = \\agr => presVerb verb agr ; + past = verb.s ! VPast ; --# notpresent + } + } ; + + predAux : Aux -> VP = \aux -> { + p = [] ; -- Common to all verbs + prp = aux.prpart ; + ptp = aux.ppart ; + inf = aux.inf ; + ad = \\_ => [] ; + ext = [] ; + isSimple = True ; + s2 = \\_ => [] ; + + isAux = True ; -- Specific to Aux verbs + auxForms = aux ; + nonAuxForms = { + past = nonExist ; --# notpresent + pres = \\_ => nonExist} + } ; + + nonAuxVerbForms : (fin,inf,part : Str) -> + (past : Str) -> --# notpresent + VerbForms = \fin,inf,part + ,past --# notpresent + -> + \\tns,ant,pol,ord,agr => + case of { => vff fin [] ; => vf (does agr) inf ; => vf (haveContr agr) part ; --# notpresent => vf (have agr) part ; --# notpresent => vfn c (haveContr agr) (haventContr agr) part ; --# notpresent => vfn c (have agr) (havent agr) part ; --# notpresent - => vff (verb.s ! VPast) [] ; --# notpresent + => vff past [] ; --# notpresent => vf "did" inf ; --# notpresent => vfn c "did" "didn't" inf ; --# notpresent => vf (cBind "d") part ; --# notpresent @@ -314,18 +392,9 @@ param => vfn c "would" "wouldn't" ("have" ++ part) ; --# notpresent => vfn c (does agr) (doesnt agr) inf } ; - p = verb.p ; - prp = verb.s ! VPresPart ; - ptp = verb.s ! VPPart ; - inf = verb.s ! VInf ; - ad = \\_ => [] ; - ext = [] ; - isSimple = True ; ---- but really depends on whether p == [] - s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] - } ; - predAux : Aux -> VP = \verb -> { - s = \\t,ant,cb,ord,agr => + auxVerbForms : Aux -> VerbForms = \verb -> + \\t,ant,cb,ord,agr => let b = case cb of { CPos => Pos ; @@ -371,17 +440,7 @@ param => vf fin [] ; => vfn c cfinp fin [] ; => vfn c finp fin [] - - } ; - p = [] ; - prp = verb.prpart ; - ptp = verb.ppart ; - inf = verb.inf ; - ad = \\_ => [] ; - ext = [] ; - isSimple = True ; - s2 = \\_ => [] - } ; + } ; vff : Str -> Str -> {aux, adv, fin, inf : Str} = \x,y -> {aux = [] ; adv = [] ; fin = x ; inf = y} ; @@ -569,7 +628,7 @@ param \subj,agr,vp -> { s = \\t,a,b,o => let - verb = vp.s ! t ! a ! b ! o ! agr ; + verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ; compl = vp.s2 ! agr ++ vp.ext in case o of { From bc206fcbfe2c49300ef1fc30d52d6872b76ac8b1 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 25 Apr 2022 16:13:31 +0800 Subject: [PATCH 085/141] (Est) Use the correct mkN paradigm for dog_N --- src/estonian/LexiconEst.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index de0643715..2e5177b2c 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -65,7 +65,7 @@ lin -- Unfortunately, we cannot use a similar trick for the source (*Põltsamaast vs Põltsamaalt). distance_N3 = mkN3 (mkN "kaugus") celative (casePrep terminative) ; doctor_N = mkN "arst" ; - dog_N = mkN "koer" "koera" "koera" ; + dog_N = mkN "koer" "koera" "koera" "koerasse" "koerte" "koeri" ; door_N = mkN "uks" "ukse" "ust" "uksesse" "uste" "uksi" ; drink_V2 = mkV2 (mkV "jooma") cpartitive ; easy_A2V = mkA2 (mkA (mkN "lihtne" "lihtsa" "lihtsat" "lihtsasse" "lihtsate" "lihtsaid")) callative ; From d14de723d059cf24ea18870ac28a0d0b5426f26f Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 27 Apr 2022 11:40:04 +0800 Subject: [PATCH 086/141] imppol for malay --- src/malay/ParamMay.gf | 1 + src/malay/PhraseMay.gf | 1 + src/malay/ResMay.gf | 3 ++- src/malay/SentenceMay.gf | 4 ++-- src/malay/unittest/verbal_affixes.gftest | 4 ++++ 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index 95212a54c..0c1533024 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -142,6 +142,7 @@ param VForm = Root -- infinitive, imperative, … | Active + | Imperative ; Prefix = diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 3a1fb5b2c..3e7c99e42 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -9,6 +9,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttNP np = {s = np.s ! Bare} ; UttIP ip = {s = ip.sp ! NF Sg Bare} ; UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ; + UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; {- UttImpSg pol imp = UttImpPl pol imp = diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 047bf7c4c..d70c8f553 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -224,7 +224,8 @@ oper mkVerb : Str -> Prefix -> Verb = \str,p -> { s = table { Root => str ; - Active => prefix p str + Active => prefix p str ; + Imperative => str ++ BIND ++ "kan" } } ; diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index d27c3f8ed..e9075f179 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -29,8 +29,8 @@ lin -- : VP -> Imp ; ImpVP vp = { s = \\num,pol => case pol of { - Neg => "jangan" ++ vp.s ! Root ! Pos; - Pos => vp.s ! Root ! Pos + Neg => "jangan" ++ vp.s ! Imperative ! Pos; + Pos => vp.s ! Imperative ! Pos } } ; diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index 9e06ad3d4..26e1c5dfd 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -113,5 +113,9 @@ LangMay: buka pintu Lang: UttImpSg PNeg (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) LangEng: don't open the door LangMay: jangan buka pintu + +Lang: UttImpPol PPos (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) +LangEng: open the door +LangMay: bukakan pintu ---------------------------------------- -- Questions From 8b0584358507646bf21fffcf1020a943737fd1e0 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 28 Apr 2022 08:53:37 +0200 Subject: [PATCH 087/141] zulu inclusion --- src/zulu/AdjectiveZul.gf | 55 + src/zulu/AdverbZul.gf | 27 + src/zulu/BackwardZul.gf | 143 + src/zulu/CatExtZul.gf | 15 + src/zulu/CatZul.gf | 168 + src/zulu/ChunkFunctor.gf | 85 + src/zulu/ChunkZul.gf | 307 + src/zulu/CompatibilityZul.gf | 17 + src/zulu/ConjunctionZul.gf | 119 + src/zulu/ConstructionZul.gf | 222 + src/zulu/DocumentationZul.gf | 190 + src/zulu/ExtendZul.gf | 367 + src/zulu/ExtraExtZul.gf | 661 + src/zulu/GrammarZul.gf | 22 + src/zulu/IdiomZul.gf | 62 + src/zulu/LangZul.gf | 13 + src/zulu/LexiconZul.gf | 379 + src/zulu/MarkupZul.gf | 15 + src/zulu/NounExtZul.gf | 218 + src/zulu/NounZul.gf | 102 + src/zulu/NumeralZul.gf | 95 + src/zulu/OverloadZul.gf | 1 + src/zulu/PChunkZul.gf | 99 + src/zulu/ParadigmsZul.gf | 180 + src/zulu/PhraseZul.gf | 28 + src/zulu/QuestionZul.gf | 110 + src/zulu/README.md | 30 + src/zulu/RelativeZul.gf | 147 + src/zulu/ResZul.gf | 1867 +++ src/zulu/SentenceZul.gf | 247 + src/zulu/StructuralZul.gf | 159 + src/zulu/SymbolZul.gf | 45 + src/zulu/TempExtZul.gf | 9 + src/zulu/TerminologyZul.gf | 106 + src/zulu/VerbExtZul.gf | 152 + src/zulu/VerbZul.gf | 312 + src/zulu/abstract_ext/CatExt.gf | 15 + src/zulu/abstract_ext/ExtraExt.gf | 133 + src/zulu/abstract_ext/NounExt.gf | 47 + src/zulu/abstract_ext/PChunk.gf | 66 + src/zulu/abstract_ext/TempExt.gf | 9 + src/zulu/abstract_ext/VerbExt.gf | 17 + src/zulu/grammar_ext/DevLexLang.gf | 3 + src/zulu/grammar_ext/DevLexLangZul.gf | 5 + src/zulu/grammar_ext/MonoLexChunk.gf | 3 + src/zulu/grammar_ext/MonoLexChunkZul.gf | 5 + src/zulu/grammar_ext/MonoLexLang.gf | 3 + src/zulu/grammar_ext/MonoLexLangZul.gf | 5 + src/zulu/grammar_ext/MultiLexChunk.gf | 3 + src/zulu/grammar_ext/MultiLexChunkZul.gf | 5 + src/zulu/grammar_ext/MultiLexLang.gf | 3 + src/zulu/grammar_ext/MultiLexLangZul.gf | 5 + src/zulu/grammar_ext/NguniChunk.gf | 17 + src/zulu/grammar_ext/NguniChunkZul.gf | 20 + src/zulu/grammar_ext/NguniGrammar.gf | 20 + src/zulu/grammar_ext/NguniGrammarZul.gf | 24 + src/zulu/grammar_ext/NguniLang.gf | 17 + src/zulu/grammar_ext/NguniLangZul.gf | 20 + src/zulu/grammar_ext/NguniSyntax.gf | 258 + src/zulu/grammar_ext/NguniSyntaxZul.gf | 10 + src/zulu/lexica/DevLex.gf | 81 + src/zulu/lexica/DevLexZul.gf | 79 + src/zulu/lexica/MonoLex.gf | 16976 +++++++++++++++++++++ src/zulu/lexica/MonoLexZul.gf | 16976 +++++++++++++++++++++ src/zulu/lexica/MultiLex.gf | 1094 ++ src/zulu/lexica/MultiLexZul.gf | 1095 ++ 66 files changed, 43788 insertions(+) create mode 100755 src/zulu/AdjectiveZul.gf create mode 100755 src/zulu/AdverbZul.gf create mode 100755 src/zulu/BackwardZul.gf create mode 100755 src/zulu/CatExtZul.gf create mode 100755 src/zulu/CatZul.gf create mode 100755 src/zulu/ChunkFunctor.gf create mode 100755 src/zulu/ChunkZul.gf create mode 100755 src/zulu/CompatibilityZul.gf create mode 100755 src/zulu/ConjunctionZul.gf create mode 100755 src/zulu/ConstructionZul.gf create mode 100755 src/zulu/DocumentationZul.gf create mode 100755 src/zulu/ExtendZul.gf create mode 100755 src/zulu/ExtraExtZul.gf create mode 100755 src/zulu/GrammarZul.gf create mode 100755 src/zulu/IdiomZul.gf create mode 100755 src/zulu/LangZul.gf create mode 100755 src/zulu/LexiconZul.gf create mode 100755 src/zulu/MarkupZul.gf create mode 100644 src/zulu/NounExtZul.gf create mode 100755 src/zulu/NounZul.gf create mode 100755 src/zulu/NumeralZul.gf create mode 100755 src/zulu/OverloadZul.gf create mode 100644 src/zulu/PChunkZul.gf create mode 100755 src/zulu/ParadigmsZul.gf create mode 100755 src/zulu/PhraseZul.gf create mode 100755 src/zulu/QuestionZul.gf create mode 100755 src/zulu/README.md create mode 100755 src/zulu/RelativeZul.gf create mode 100755 src/zulu/ResZul.gf create mode 100755 src/zulu/SentenceZul.gf create mode 100755 src/zulu/StructuralZul.gf create mode 100755 src/zulu/SymbolZul.gf create mode 100755 src/zulu/TempExtZul.gf create mode 100755 src/zulu/TerminologyZul.gf create mode 100644 src/zulu/VerbExtZul.gf create mode 100755 src/zulu/VerbZul.gf create mode 100755 src/zulu/abstract_ext/CatExt.gf create mode 100755 src/zulu/abstract_ext/ExtraExt.gf create mode 100644 src/zulu/abstract_ext/NounExt.gf create mode 100644 src/zulu/abstract_ext/PChunk.gf create mode 100755 src/zulu/abstract_ext/TempExt.gf create mode 100644 src/zulu/abstract_ext/VerbExt.gf create mode 100755 src/zulu/grammar_ext/DevLexLang.gf create mode 100755 src/zulu/grammar_ext/DevLexLangZul.gf create mode 100755 src/zulu/grammar_ext/MonoLexChunk.gf create mode 100755 src/zulu/grammar_ext/MonoLexChunkZul.gf create mode 100755 src/zulu/grammar_ext/MonoLexLang.gf create mode 100755 src/zulu/grammar_ext/MonoLexLangZul.gf create mode 100644 src/zulu/grammar_ext/MultiLexChunk.gf create mode 100644 src/zulu/grammar_ext/MultiLexChunkZul.gf create mode 100644 src/zulu/grammar_ext/MultiLexLang.gf create mode 100644 src/zulu/grammar_ext/MultiLexLangZul.gf create mode 100755 src/zulu/grammar_ext/NguniChunk.gf create mode 100755 src/zulu/grammar_ext/NguniChunkZul.gf create mode 100755 src/zulu/grammar_ext/NguniGrammar.gf create mode 100755 src/zulu/grammar_ext/NguniGrammarZul.gf create mode 100755 src/zulu/grammar_ext/NguniLang.gf create mode 100755 src/zulu/grammar_ext/NguniLangZul.gf create mode 100755 src/zulu/grammar_ext/NguniSyntax.gf create mode 100755 src/zulu/grammar_ext/NguniSyntaxZul.gf create mode 100755 src/zulu/lexica/DevLex.gf create mode 100755 src/zulu/lexica/DevLexZul.gf create mode 100755 src/zulu/lexica/MonoLex.gf create mode 100755 src/zulu/lexica/MonoLexZul.gf create mode 100644 src/zulu/lexica/MultiLex.gf create mode 100644 src/zulu/lexica/MultiLexZul.gf diff --git a/src/zulu/AdjectiveZul.gf b/src/zulu/AdjectiveZul.gf new file mode 100755 index 000000000..d27dc3110 --- /dev/null +++ b/src/zulu/AdjectiveZul.gf @@ -0,0 +1,55 @@ +concrete AdjectiveZul of Adjective = CatZul ** open ResZul, Prelude in { + + lin + + PositA adj = adj ; + + -- ComparA a np = { + -- s = \\_ => a.s ! AAdj Compar Nom ++ "than" ++ np.s ! npNom ; + -- isPre = False + -- } ; + -- UseComparA a = { + -- s = \\_ => a.s ! AAdj Compar Nom ; + -- isPre = a.isPre + -- } ; + -- + -- AdjOrd ord = { + -- s = \\_ => ord.s ! Nom ; + -- isPre = True + -- } ; + -- + -- CAdvAP ad ap np = { + -- s = \\a => ad.s ! Pos ++ ap.s ! a ++ ad.p ++ np.s ! npNom ; + -- isPre = False + -- } ; + -- + -- ComplA2 a np = { + -- s = \\_ => a.s ! AAdj Posit Nom ++ a.c2 ++ np.s ! NPAcc ; + -- isPre = False + -- } ; + -- + -- ReflA2 a = { + -- s = \\ag => a.s ! AAdj Posit Nom ++ a.c2 ++ reflPron ! ag ; + -- isPre = False + -- } ; + -- + -- SentAP ap sc = { + -- s = \\a => ap.s ! a ++ sc.s ; + -- isPre = False + -- } ; + + AdAP ada ap = { + s = \\a => ap.s!a ++ ada.s ; + b = ap.b ; + empty = ap.empty ; + t = AdjType + } ; + + -- UseA2 a = { + -- s = \\_ => a.s ! AAdj Posit Nom ; + -- isPre = True + -- } ; + -- + -- AdvAP ap adv = {s = \\a => ap.s ! a ++ adv.s ; isPre = False} ; + +} diff --git a/src/zulu/AdverbZul.gf b/src/zulu/AdverbZul.gf new file mode 100755 index 000000000..b1e9af561 --- /dev/null +++ b/src/zulu/AdverbZul.gf @@ -0,0 +1,27 @@ +concrete AdverbZul of Adverb = CatZul ** open ResZul, Prelude in { + + lin + PositAdvAdj a = { + s = "ka" ++BIND++ a.s!AF1 ; + reqLocS = False + } ; + -- ComparAdvAdj cadv a np = { + -- s = cadv.s ! Pos ++ a.s ! AAdv ++ cadv.p ++ np.s ! npNom + -- } ; + -- ComparAdvAdjS cadv a s = { + -- s = cadv.s ! Pos ++ a.s ! AAdv ++ cadv.p ++ s.s + -- } ; + -- + -- PrepNP prep np = {s = preOrPost prep.isPre prep.s (np.s ! NPAcc)} ; + -- + -- AdAdv = cc2 ; + -- PositAdAAdj a = {s = a.s ! AAdv} ; + + -- SubjS subj s = { + -- s = subj.s ++ s.subjs ; + -- reqLocS = False + -- } ; + + -- AdnCAdv cadv = {s = cadv.s ! Pos ++ cadv.p} ; + +} diff --git a/src/zulu/BackwardZul.gf b/src/zulu/BackwardZul.gf new file mode 100755 index 000000000..ef4153391 --- /dev/null +++ b/src/zulu/BackwardZul.gf @@ -0,0 +1,143 @@ +concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in { + + flags optimize=all_subs ; + + lin + +-- A repository of obsolete constructs, needed for backward compatibility. +-- They create spurious ambiguities if used in combination with Lang. + +-- from Verb 19/4/2008 + + ComplV2 v2 np = { + s = table { + MainCl => \\a,p,t => let + vform = (VFIndic MainCl p t) ; + tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku- + oc = objConc np.agr v2.r v2.syl ; -- [] / m - + longform = case np.heavy of { + True => False ; + False => True + } ; + r = v2.s!(rform (VFIndic MainCl p t) longform) ; -- bona / boni + obj = np.s!NFull -- [] / inkomo + in case np.proDrop of { + True => tp ++ oc ++ r ++ obj ; + False => tp ++ r ++ obj + } ; + RelCl => \\a,p,t => let + vform = (VFIndic RelCl p t) ; + rc = relConc vform a v2.r ; -- o- / onga- + tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku- + oc = objConc np.agr v2.r v2.syl ; -- [] / m - + longform = case np.heavy of { + True => False ; + False => True + } ; + r = v2.s!(rform vform longform) ; -- bona / boni + obj = np.s!NFull -- [] / inkomo + in case np.proDrop of { + True => rc ++ tp ++ oc ++ r ++ obj ; + False => rc ++ tp ++ r ++ obj + } + } ; + iadv, advs, comp = [] ; + ap_comp = \\_ => [] ; + hasComp = np.heavy ; + r = v2.r ; + syl = v2.syl ; + vptype = VNPCompl + } ; + + -- ComplV3 v3 np1 np2 = v3 ** { + -- -- s = v3.s ; + -- oc = case np1.proDrop of { + -- True => objConc np1.agr v3.r v3.syl ; + -- False => [] + -- } ; + -- comp = case np1.proDrop of { + -- True => case v3.voice of { + -- Active => np2.s ! NFull ++ np2.desc ; + -- Passive => (cop_pref np2.agr) ++BIND++ np2.s ! NFull ++ np2.desc + -- } ; + -- False => case v3.voice of { + -- Active => np1.s ! NFull ++ np1.desc ++ np2.s ! NFull ++ np2.desc ; + -- Passive => (cop_pref np1.agr) ++BIND++ np1.s ! NFull ++ np1.desc ++ np2.s ! NFull ++ np2.desc + -- } + -- } ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- -- r = v3.r ; + -- -- syl = v3.syl ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = VNPCompl ; + -- comp_agr = np1.agr ; -- this could be anything... + -- ap_comp = \\_ => [] ; + -- ap_bool = False ; + -- aux_root = [] ; + -- hasAux = False + -- } ; +-- ComplV2V v np vp = +-- insertObj (\\a => infVP v.isAux vp False Simul CPos a) +-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ; +-- ComplV2S v np s = +-- insertObj (\\_ => conjThat ++ s.s) +-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ; +-- ComplV2Q v np q = +-- insertObj (\\_ => q.s ! QIndir) +-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ; +-- ComplV2A v np ap = +-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ; +-- +-- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ; +-- +-- -- from Sentence 19/4/2008 +-- +-- SlashV2 np v2 = +-- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ; +-- +-- SlashVVV2 np vv v2 = +-- mkClause (np.s ! Nom) np.a +-- (insertObj (\\a => infVP vv.isAux (predV v2) False Simul CPos a) (predVV vv)) ** +-- {c2 = v2.c2} ; +-- +-- -- from Noun 19/4/2008 +-- +-- NumInt n = {s = n.s ; n = Pl} ; +-- OrdInt n = {s = n.s ++ "th"} ; --- DEPRECATED +-- +-- DetSg quant ord = { +-- s = quant.s ! Sg ++ ord.s ; +-- n = Sg +-- } ; +-- +-- DetPl quant num ord = { +-- s = quant.s ! num.n ++ num.s ++ ord.s ; +-- n = num.n +-- } ; +-- +-- NoNum = {s = []; n = Pl } ; +-- +-- DefArt = {s = \\_ => artDef} ; +-- +-- IndefArt = { +-- s = table { +-- Sg => artIndef ; +-- Pl => [] +-- } +-- } ; +-- +-- MassDet = {s = \\_ => []} ; +-- +-- +-- +-- -- from Structural 19/4/2008 +-- +-- that_NP = regNP "that" Sg ; +-- these_NP = regNP "these" Pl ; +-- this_NP = regNP "this" Sg ; +-- those_NP = regNP "those" Pl ; + +} diff --git a/src/zulu/CatExtZul.gf b/src/zulu/CatExtZul.gf new file mode 100755 index 000000000..d4a02deb4 --- /dev/null +++ b/src/zulu/CatExtZul.gf @@ -0,0 +1,15 @@ +concrete CatExtZul of CatExt = open ResZul,Prelude,ParamX in { + + lincat + Loc = { s : CType => Agr => Polarity => BasicTense => Str } ; + LocN = { s : Str } ; + QuantStem = { s : Agr => Str } ; + RelStem = { s : Str } ; + VAux = { s : Str ; at : AuxType } ; + ConjN = { s : Str } ; + IAdj = { s : AForm => Str } ; + -- INAdv = { s : Str ; postIAdv : Bool } ; + + Postdet = { s : Agr => Str } ; + +} diff --git a/src/zulu/CatZul.gf b/src/zulu/CatZul.gf new file mode 100755 index 000000000..af0958193 --- /dev/null +++ b/src/zulu/CatZul.gf @@ -0,0 +1,168 @@ +concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] ** + open ResZul, Prelude, ParamX in { + + flags optimize=all_subs ; + + lincat + + -- for now, no anteriority + Temp = { s : Str ; t : BasicTense } ; + +-- Tensed/Untensed + S = { s : Str } ; + QS = { s : Str ; qword_pre : Str ; qword_post : Str } ; + RS = { s : Agr => Str } ; +-- SSlash = {s : Str ; c2 : Str} ; + +-- Sentence + + Cl = { + s : Polarity => BasicTense => Str + } ; +-- ClSlash = { +-- s : ResZul.Tense => Anteriority => CPolarity => Order => Str ; +-- c2 : Str +-- } ; + Imp = { s : Polarity => Str } ; + +-- Question + + QCl = { + s : Polarity => BasicTense => Str ; + -- potqcl : Polarity => Str ; + qword_pre : Str ; + qword_post : Str + } ; +-- IP = {s : NPCase => Str ; n : Number} ; + IComp = { s : Str ; postIComp : Bool } ; -- possibly needs parameter for comp type +-- IDet = {s : Str ; n : Number} ; +-- IQuant = {s : Number => Str} ; + +-- Relative + + RCl = { s : Agr => Polarity => BasicTense => Str } ; + RP = { s : Str } ; + +-- Verb + + VP = { + s : CType => Agr => Polarity => BasicTense => Str ; -- TODO: mood + -- oc : Str ; + comp : Str ; + iadv : Str ; + advs : Str ; + hasComp : Bool ; + r : RInit ; + syl : Syl ; + -- asp : Aspect ; + -- asp_pref : VForm => Str ; + vptype : VPType ; + -- comp_agr : Agr ; + -- ap_comp : AForm => Str -- ; + -- aux_root : Str ; + -- hasAux : Bool + } ; + + -- VPSlash = { + -- s : RForm => Str ; + -- oc : Str ; + -- comp : Str ; + -- hasComp : Bool ; + -- r : RInit ; + -- syl : Syl ; + -- asp : Aspect ; + -- asp_pref : VForm => Str ; + -- vptype : VPType ; + -- comp_agr : Agr ; + -- ap_comp : AForm => Str ; + -- aux_root : Str ; + -- hasAux : Bool + -- } ; + + -- Comp = { + -- s : AForm => Str ; + -- r : RInit ; + -- agr : Agr ; + -- asp : Aspect ; + -- asp_pref : VForm => Str ; + -- comptype : VPType + -- } ; + +-- Adjective + + AP = { s : AForm => Str ; empty : Str ; t : AType } ; + +-- Noun + + CN = { + s : Number => NForm => Str ; + -- mod : Number => Str ; + c : ClassGender ; + empty : Str ; + emph : Bool + } ; + + NP = { + empty : Str ; + s : NForm => Str ; + agr : Agr ; + i : RInit ; + proDrop : Bool ; -- used when NP is object + isPron : Bool ; -- used to choose correct between Full/Reduced + heavy : Bool -- has object/adv/qword + } ; + + -- Pronoun + Pron = { s : NForm => Str ; agr : Agr ; empty : Str ; proDrop : Bool } ; +-- DAP + Det = { s : Str ; n : Number } ; + Predet = { s : Agr => Str ; hasDem : Bool } ; +-- Ord = { s : Case => Str } ; + Num = { s: Str ; n : Number } ; +-- Card = {s,sp : Bool => Case => Str ; n : Number} ; +-- ACard = {s : Case => Str ; n : Number} ; + Quant = { s : Str ; dist : Distance } ; + +-- Numeral + +-- Numeral = {s : Bool => CardOrd => Case => Str ; n : Number} ; +-- Digits = {s : CardOrd => Case => Str ; n : Number ; tail : DTail} ; + +-- Structural + + Conj = { s : RInit => Str ; fix : Bool } ; + Subj = {s : Str} ; + -- Adv = { s : Str ; asp : Aspect ; reqLocS : Bool } ; +-- Prep = {s : Str; isPre : Bool} ; +-- CAdv = {s : Polarity => Str; p : Str} ; + +-- Open lexical classes, e.g. Lexicon + V,V2,VA,VS,V3 = { + s : RForm => Str ; + r : RInit ; + syl : Syl ; + voice : Voice + } ; + -- VQ = Verb ; + -- V2Q, V2S = Verb ** {c2 : Str} ; + -- V2A,V3 = Verb ** {c2, c3 : Str} ; + -- V = {s : VVForm => Str ; p : Str ; typ : VVType} ; + -- V2V = Verb ** {c2,c3 : Str ; typ : VVType} ; + + A = { s : AForm => Str ; empty : Str ; t : AType } ; +-- A2 = {s : AForm => Str ; c2 : Str ; isPre : Bool} ; + + N, N2, N3, PN = { + s : Number => NForm => Str ; + c : ClassGender ; + -- sem : SemanticType ; + empty : Str + } ; +-- N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ; +-- N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Str} ; + + Adv = { s : Str ; reqLocS : Bool } ; + + IAdv = { s : Str ; postIAdv : Bool } ; + +} diff --git a/src/zulu/ChunkFunctor.gf b/src/zulu/ChunkFunctor.gf new file mode 100755 index 000000000..5c8c04b1e --- /dev/null +++ b/src/zulu/ChunkFunctor.gf @@ -0,0 +1,85 @@ +incomplete concrete ChunkFunctor of Chunk = Cat, Symbol [Symb] ** { --, Extensions [VPS,VPI] ** + open + Syntax, Extensions, + Prelude in { + +lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + + VC = V ; + +lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + + ChunkPhr c = ss ("*" ++ c.s) | c ; + +lin + AP_Chunk ap = mkUtt ap ; + AdA_Chunk ada = ada ; + Adv_Chunk adv = adv ; + AdV_Chunk adv = adv ; + AdN_Chunk adn = adn ; + S_Chunk s = mkUtt s ; + SSlash_Chunk s = mkUtt ; + QS_Chunk qs = mkUtt qs ; + CN_Pl_Chunk cn = mkUtt (Syntax.mkNP aPl_Det cn) ; + CN_Sg_Chunk cn = mkUtt cn ; +---- CN_Pl_Gen_Chunk cn = ss (cn.s ! Pl ! Gen) ; +---- CN_Sg_Gen_Chunk cn = ss (cn.s ! Sg ! Gen) ; + Conj_Chunk conj = ss conj.s2 ; ---- + Det_Chunk det = mkUtt (Syntax.mkNP det) ; + IAdv_Chunk iadv = iadv ; + IP_Chunk ip = mkUtt ip ; + NP_Nom_Chunk np = mkUtt np ; +---- NP_Acc_Chunk np = ss (np.s ! NPAcc) ; +---- NP_Gen_Chunk np = ss (np.s ! NCase Gen) | ss (np.s ! NPNomPoss) ; + Numeral_Nom_Chunk num = mkUtt (Syntax.mkNP (Syntax.mkDet num)) ; +---- Numeral_Gen_Chunk num = ss (num.s ! NCard ! Gen) ; +---- Ord_Nom_Chunk ord = ss (ord.s ! Nom) ; +---- Ord_Gen_Chunk ord = ss (ord.s ! Gen) ; + Predet_Chunk predet = mkUtt (Syntax.mkNP predet emptyNP) ; + Prep_Chunk prep = mkAdv prep emptyNP ; ---- +---- RP_Nom_Chunk rp = ss (rp.s ! RC Neutr (NCase Nom)) ; +---- RP_Acc_Chunk rp = ss (rp.s ! RPrep Masc) ; ---- +---- RP_Gen_Chunk rp = ss (rp.s ! RC Neutr (NCase Gen)) ; + Subj_Chunk subj = subj ; +--- PConj_Chunk pconj = pconj ; + + VPS_Chunk vps = mkUtt (E.PredVPS emptyNP vps) ; +-- VPI_Chunk : VPI -> Chunk ; + + + V2_V, + VA_V, + VQ_V, + VS_V, +---- VV_V, + V3_V, + V2A_V, + V2Q_V, + V2S_V, + V2V_V + = \v -> ; + + UseVC t p vc = E.MkVPS t p (mkVP vc) ; + + Symb_Chunk s = lin Utt s ; + + fullstop_Chunk = sbSS "." ; + exclmark_Chunk = sbSS "!" ; + questmark_Chunk = sbSS "?" ; + comma_Chunk = sbSS "," ; + colon_Chunk = sbSS ":" ; + semicolon_Chunk = sbSS ";" ; + quote_Chunk = variants {sbSS "\"" ; ss ("\"" ++ SOFT_BIND) } ; + lpar_Chunk = ss ("(" ++ SOFT_BIND) ; + rpar_Chunk = sbSS ")" ; + dash_Chunk = sbSS "-" ; + +oper + emptyNP : NP = Syntax.mkNP (P.mkPN []) ; + + sbSS : Str -> SS = \s -> ss (SOFT_BIND ++ s) ; +} diff --git a/src/zulu/ChunkZul.gf b/src/zulu/ChunkZul.gf new file mode 100755 index 000000000..ad0ea8da0 --- /dev/null +++ b/src/zulu/ChunkZul.gf @@ -0,0 +1,307 @@ +concrete ChunkZul of Chunk = CatZul, SymbolZul [Symb] ** + -- ChunkFunctor - [Det_Chunk] + -- with (Syntax = SyntaxZul) ** --, (Extensions = ExtensionsZul) ** + open + -- SyntaxZul, Prelude, (E = ExtensionsZul), + Prelude, ResZul, ParamX, + (R = ResZul), (P = ParadigmsZul) in { + + lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + Chunk_CN = {s: Str} ; + + VC = V ; + + lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + + CN_Chunker c = c ; + + ChunkPhr c = ss ("*" ++ c.s) | c ; + + AP_Chunk ap = { s = ap_vars ap } ; + -- AdA_Chunk : AdA -> Chunk ; + Adv_Chunk adv = { s = adv_vars adv.s } ; + -- AdV_Chunk : AdV -> Chunk ; + -- AdN_Chunk : AdN -> Chunk ; + S_Chunk s = { s = variants { s.s!Princ ; s.s!Part ; s.subjs ; s.pots!Princ ; s.pots!Part } } ; + -- SSlash_Chunk : SSlash -> Chunk ; + QS_Chunk s = { s = s.qword_pre ++ s.s ++ s.qword_post } ; + -- CN_Pl_Chunk : CN -> Chunk ; + CN_Sg_Chunk cn = { + s = cn.s!Sg!Full ++ cn.mod!Sg + } ; + CN_Pl_Chunk cn = { + s = cn.s!Pl!Full ++ cn.mod!Pl + } ; + -- CN_Pl_Gen_Chunk : CN -> Chunk ; + -- CN_Sg_Gen_Chunk : CN -> Chunk ; + -- Conj_Chunk : Conj -> Chunk ; + -- Det_Chunk : Det -> Chunk ; -- needed if article form is different from NP form, e.g. English a/an + -- IAdv_Chunk : IAdv -> Chunk ; + -- IP_Chunk : IP -> Chunk ; + NP_Nom_Chunk np = { + s = case np.isPron of { + False => variants { + np.predet_pre ++ np.dem ++ np.s!Full ++ np.mod ++ np.predet_post ; + np.predet_pre ++ np.dem ++ np.s!Reduced ++ np.mod ++ np.predet_post -- ; -- [anginoni] nkomo + -- np.predet_pre ++ np.dem ++ np.s!Reduced ++ np.mod ++ np.predet_post ; + -- np.predet_pre ++ dem_pron!Dem2!np.agr ++ np.s!Reduced ++ np.mod ++ np.predet_post ; + -- np.predet_pre ++ dem_pron!Dem3!np.agr ++ np.s!Reduced ++ np.mod ++ np.predet_post ; + -- np.predet_pre ++ np.dem ++ np.s!Full ++ np.mod ++ np.predet_post ; -- meant to catch pronouns + -- np.predet_pre ++ dem_pron!Dem2!np.agr ++ np.s!Full ++ np.mod ++ np.predet_post ; -- meant to catch pronouns + -- np.predet_pre ++ dem_pron!Dem3!np.agr ++ np.s!Full ++ np.mod ++ np.predet_post ; -- meant to catch pronouns + -- np.predet_pre ++ np.dem ++ np.s!Loc ++ np.mod ++ np.predet_post + } ; + True => case np.proDrop of { + False => np.predet_pre ++ np.dem ++ np.s!Full ++ np.mod ++ np.predet_post ; + True => np.predet_pre ++ np.dem ++ np.s!Reduced ++ np.mod ++ np.predet_post + } + } + } ; + -- NP_Acc_Chunk : NP -> Chunk ; + NP_Gen_Chunk np = { + s = poss_concord_agr!agr_vars!np.i ++BIND++ np.s!Poss ++ np.dem ++ np.mod ++ np.predet_pre ++ np.predet_post + } ; + -- Numeral_Nom_Chunk : Numeral -> Chunk ; + -- Numeral_Gen_Chunk : Numeral -> Chunk ; + -- Ord_Nom_Chunk : Ord -> Chunk ; + -- Ord_Gen_Chunk : Ord -> Chunk ; + -- Predet_Chunk : Predet -> Chunk ; + -- Prep_Chunk : Prep -> Chunk ; + -- RP_Nom_Chunk : RP -> Chunk ; + -- RP_Gen_Chunk : RP -> Chunk ; + -- RP_Acc_Chunk : RP -> Chunk ; + -- Subj_Chunk : Subj -> Chunk ; + -- IComp_Chunk icomp = { } ; + -- --- PConj_Chunk : PConj -> Chunk ; + -- N_Sg_Chunk n = { s = variants { n.s!Sg!Full ; n.s!Sg!Reduced } } ; + -- N_Pl_Chunk n = { s = variants { n.s!Pl!Full ; n.s!Pl!Reduced } } ; + N_Sg_Chunk n = { s = n.s!Sg!Full } ; + N_Pl_Chunk n = { s = n.s!Pl!Full } ; + -- + -- VPS_Chunk : VPS -> Chunk ; + -- VPI_Chunk : VPI -> Chunk ; + -- + -- -- verbs lifted to one cat + -- + -- V2_V : V2 -> VC ; + -- VA_V : VA -> VC ; + -- VQ_V : VQ -> VC ; + -- VS_V : VS -> VC ; + -- VV_V : VV -> VC ; + -- + -- V3_V : V3 -> VC ; + -- V2A_V : V2A -> VC ; + -- V2Q_V : V2Q -> VC ; + -- V2S_V : V2S -> VC ; + -- V2V_V : V2V -> VC ; + -- + -- UseVC : Temp -> Pol -> VC -> VPS ; + -- + -- -- for unknown words that are not names + -- + Symb_Chunk symb = { s = symb.s } ; + -- + -- -- syncategorematic chunks + -- refl_SgP1_Chunk, + -- refl_SgP2_Chunk, + -- refl_SgP3_Chunk, + -- refl_PlP1_Chunk, + -- refl_PlP2_Chunk, + -- refl_PlP3_Chunk : Chunk ; + -- neg_Chunk : Chunk ; + -- copula_Chunk : Chunk ; + -- copula_neg_Chunk : Chunk ; + -- copula_inf_Chunk : Chunk ; + -- past_copula_Chunk : Chunk ; + -- past_copula_neg_Chunk : Chunk ; + -- future_Chunk : Chunk ; + -- future_neg_Chunk : Chunk ; + -- cond_Chunk : Chunk ; + -- cond_neg_Chunk : Chunk ; + -- perfect_Chunk : Chunk ; + -- perfect_neg_Chunk : Chunk ; + -- past_perfect_Chunk : Chunk ; + -- past_perfect_neg_Chunk : Chunk ; + + -- fullstop_Chunk = sbSS "." ; + -- exclmark_Chunk = sbSS "!" ; + -- questmark_Chunk = sbSS "?" ; + -- comma_Chunk = sbSS "," ; + -- colon_Chunk = sbSS ":" ; + -- semicolon_Chunk = sbSS ";" ; + -- quote_Chunk = variants {sbSS "\"" ; ss ("\"" ++ SOFT_BIND) } ; + -- lpar_Chunk = ss ("(" ++ SOFT_BIND) ; + -- rpar_Chunk = sbSS ")" ; + dash_Chunk = sbSS "-" ; + + oper + -- emptyNP = lin NP { + -- empty = [] ; + -- s = table { + -- Full => [] ; Reduced => [] + -- } ; + -- loc = [] ; + -- desc = [] ; + -- agr = agr_vars ; + -- isPron = True ; + -- reqLocS = False + -- } ; + sbSS : Str -> SS = \s -> ss (SOFT_BIND ++ s) ; + + adv_vars : Str -> Str = \s -> variants { + s ; + rel_adv_vars s ; + poss_adv_vars s + } ; + + rel_adv_vars : Str -> Str = \s -> variants { + relConc!(Third C1_2 Sg)!RelC ++BIND++ s ; + relConc!(Third C1_2 Pl)!RelC ++BIND++ s ; + relConc!(Third C1a_2a Sg)!RelC ++BIND++ s ; + relConc!(Third C1a_2a Pl)!RelC ++BIND++ s ; + relConc!(Third C3_4 Sg)!RelC ++BIND++ s ; + relConc!(Third C3_4 Pl)!RelC ++BIND++ s ; + relConc!(Third C5_6 Sg)!RelC ++BIND++ s ; + relConc!(Third C5_6 Pl)!RelC ++BIND++ s ; + relConc!(Third C7_8 Sg)!RelC ++BIND++ s ; + relConc!(Third C7_8 Pl)!RelC ++BIND++ s ; + relConc!(Third C9_10 Sg)!RelC ++BIND++ s ; + relConc!(Third C9_10 Pl)!RelC ++BIND++ s ; + relConc!(Third C11_10 Sg)!RelC ++BIND++ s ; + relConc!(Third C11_10 Pl)!RelC ++BIND++ s ; + relConc!(Third C9_6 Sg)!RelC ++BIND++ s ; + relConc!(Third C9_6 Pl)!RelC ++BIND++ s ; + relConc!(Third C14 Sg)!RelC ++BIND++ s ; + relConc!(Third C15 Sg)!RelC ++BIND++ s ; + relConc!(Third C17 Sg)!RelC ++BIND++ s ; + relConc!(First Sg)!RelC ++BIND++ s ; + relConc!(First Pl)!RelC ++BIND++ s ; + relConc!(Second Sg)!RelC ++BIND++ s ; + relConc!(Second Pl)!RelC ++BIND++ s + } ; + + poss_adv_vars : Str -> Str = \s -> variants { + poss_conc_adv (Third C1_2 Sg) s ; + poss_conc_adv (Third C1_2 Pl) s ; + poss_conc_adv (Third C1a_2a Sg) s ; + poss_conc_adv (Third C1a_2a Pl) s ; + poss_conc_adv (Third C3_4 Sg) s ; + poss_conc_adv (Third C3_4 Pl) s ; + poss_conc_adv (Third C5_6 Sg) s ; + poss_conc_adv (Third C5_6 Pl) s ; + poss_conc_adv (Third C7_8 Sg) s ; + poss_conc_adv (Third C7_8 Pl) s ; + poss_conc_adv (Third C9_10 Sg) s ; + poss_conc_adv (Third C9_10 Pl) s ; + poss_conc_adv (Third C11_10 Sg) s ; + poss_conc_adv (Third C9_6 Sg) s ; + poss_conc_adv (Third C11_10 Pl) s ; + poss_conc_adv (Third C9_6 Pl) s ; + poss_conc_adv (Third C14 Sg) s ; + poss_conc_adv (Third C15 Sg) s ; + poss_conc_adv (Third C17 Sg) s ; + poss_conc_adv (First Sg) s ; + poss_conc_adv (First Pl) s ; + poss_conc_adv (Second Sg) s ; + poss_conc_adv (Second Pl) s + } ; + + poss_conc_adv : Agr -> Str -> Str = \a,s -> case a of { + Third c n => (poss_concord!c!n!RC) ++BIND++ "s" ++BIND++ s ; + First n => (poss_concord!C1_2!n!RC) ++BIND++ "s" ++BIND++ s ; + Second n => (poss_concord!C1_2!n!RC) ++BIND++ "s" ++BIND++ s + } ; + + agr_vars : Agr = variants { + Third C1_2 Sg ; + Third C1_2 Pl ; + Third C1a_2a Sg ; + Third C1a_2a Pl ; + Third C3_4 Sg ; + Third C3_4 Pl ; + Third C5_6 Sg ; + Third C5_6 Pl ; + Third C7_8 Sg ; + Third C7_8 Pl ; + Third C9_10 Sg ; + Third C9_10 Pl ; + Third C11_10 Sg ; + Third C11_10 Pl ; + Third C9_6 Sg ; + Third C9_6 Pl ; + Third C14 Sg ; + Third C15 Sg ; + Third C17 Sg ; + First Sg ; + First Pl ; + Second Sg ; + Second Pl + } ; + + ap_vars : AP -> Str = \ap -> variants { + ap_form Pos (Third C1_2 Sg) ap ; + ap_form Pos (Third C1_2 Pl) ap ; + ap_form Pos (Third C1a_2a Sg) ap ; + ap_form Pos (Third C1a_2a Pl) ap ; + ap_form Pos (Third C3_4 Sg) ap ; + ap_form Pos (Third C3_4 Pl) ap ; + ap_form Pos (Third C5_6 Sg) ap ; + ap_form Pos (Third C5_6 Pl) ap ; + ap_form Pos (Third C7_8 Sg) ap ; + ap_form Pos (Third C7_8 Pl) ap ; + ap_form Pos (Third C9_10 Sg) ap ; + ap_form Pos (Third C9_10 Pl) ap ; + ap_form Pos (Third C11_10 Sg) ap ; + ap_form Pos (Third C11_10 Pl) ap ; + ap_form Pos (Third C9_6 Sg) ap ; + ap_form Pos (Third C9_6 Pl) ap ; + ap_form Pos (Third C14 Sg) ap ; + ap_form Pos (Third C15 Sg) ap ; + ap_form Pos (Third C17 Sg) ap ; + ap_form Pos (First Sg) ap ; + ap_form Pos (First Pl) ap ; + ap_form Pos (Second Sg) ap ; + ap_form Pos (Second Pl) ap ; + + ap_form Neg (Third C1_2 Sg) ap ; + ap_form Neg (Third C1_2 Pl) ap ; + ap_form Neg (Third C1a_2a Sg) ap ; + ap_form Neg (Third C1a_2a Pl) ap ; + ap_form Neg (Third C3_4 Sg) ap ; + ap_form Neg (Third C3_4 Pl) ap ; + ap_form Neg (Third C5_6 Sg) ap ; + ap_form Neg (Third C5_6 Pl) ap ; + ap_form Neg (Third C7_8 Sg) ap ; + ap_form Neg (Third C7_8 Pl) ap ; + ap_form Neg (Third C9_10 Sg) ap ; + ap_form Neg (Third C9_10 Pl) ap ; + ap_form Neg (Third C11_10 Sg) ap ; + ap_form Neg (Third C11_10 Pl) ap ; + ap_form Neg (Third C9_6 Sg) ap ; + ap_form Neg (Third C9_6 Pl) ap ; + ap_form Neg (Third C14 Sg) ap ; + ap_form Neg (Third C15 Sg) ap ; + ap_form Neg (Third C17 Sg) ap ; + ap_form Neg (First Sg) ap ; + ap_form Neg (First Pl) ap ; + ap_form Neg (Second Sg) ap ; + ap_form Neg (Second Pl) ap + } ; + + ap_form : Polarity -> Agr -> AP -> Str = \pol,agr,ap -> + let + agr = agr_vars ; + -- adjf = case ap.b of { + -- True => (aformN agr) ; + -- -- True => AF2 ; + -- False => AF1 + -- } + adjf = variants { AF1 ; AF2 ; AF3 } ; + in + relAdjAgrLookup!pol!agr ++BIND++ ap.s!adjf ; + +} diff --git a/src/zulu/CompatibilityZul.gf b/src/zulu/CompatibilityZul.gf new file mode 100755 index 000000000..6b936c7ea --- /dev/null +++ b/src/zulu/CompatibilityZul.gf @@ -0,0 +1,17 @@ +--# -path=.:../abstract:../common:../prelude + +concrete CompatibilityZul of Compatibility = CatZul ** open Prelude, ResZul in { + +-- from Noun 19/4/2008 + +-- lin +-- NumInt n = {s,sp = \\_ => addGenitiveS n.s ; n = Pl ; hasCard = True} ; +-- OrdInt n = {s = \\c => n.s ++ (regGenitiveS "th")!c } ; +-- +-- oper +-- -- Note: this results in a space before 's, but there's +-- -- not mauch we can do about that. +-- addGenitiveS : Str -> Case => Str = \s -> +-- table { Gen => s ++ "'s"; _ => s } ; + +} diff --git a/src/zulu/ConjunctionZul.gf b/src/zulu/ConjunctionZul.gf new file mode 100755 index 000000000..5ed435e23 --- /dev/null +++ b/src/zulu/ConjunctionZul.gf @@ -0,0 +1,119 @@ +concrete ConjunctionZul of Conjunction = + CatZul ** open ResZul, Coordination, Prelude in { + + flags optimize=all_subs ; + + lin + + -- should deal correctly with futhi, not with na- + -- ConjS conj ss = { + -- s = \\dm => ss.s1!dm ++ conj.s!RC ++ ss.s2!dm ; + -- subjs = ss.subjs1 ++ conj.s!RC ++ ss.subjs2 ; + -- pots = \\dm => ss.pots1!dm ++ conj.s!RC ++ ss.pots2!dm + -- } ; +-- +-- ConjAdv = conjunctDistrSS ; +-- ConjAdV = conjunctDistrSS ; + + -- ConjAdv conj advs = ; + + -- ConjNP conj nps = + -- let + -- np2_loose = nps.s2!Full ; + -- np2_fixed = nps.s2!Reduced + -- in { + -- empty = [] ; + -- s = \\f => + -- nps.s1!f ++ np1.desc + -- ++ + -- (link_conj + -- (conj.s!(nominit!np2.agr)) + -- (np2_loose) + -- (np2_fixed) + -- conj.fix) ++ + -- np2.desc ; + -- loc = np1.loc ++ + -- np1.desc ++ + -- (link_conj + -- (conj.s!(locinit!np2.agr)) + -- np2.loc + -- np2.loc + -- conj.fix) ++ + -- np2.desc ; + -- desc = [] ; + -- agr = np2.agr ; + -- isPron = False ; + -- reqLocS = np1.reqLocS + -- } ; + +-- ConjAP conj ss = conjunctDistrTable Agr conj ss ** { +-- isPre = ss.isPre +-- } ; +-- +-- ConjRS conj ss = conjunctDistrTable Agr conj ss ** { +-- c = ss.c +-- } ; +-- +-- ConjIAdv = conjunctDistrSS ; +-- +-- ConjCN co ns = conjunctDistrTable2 Number Case co ns ** {g = Neutr} ; --- gender? +-- +-- ConjDet c xs = let cxs = (conjunctDistrSS c xs).s in {s = cxs ; sp = \\_,_,_ => cxs ++ "one" ; hasNum = False ; n = xs.n} ; +-- +-- -- These fun's are generated from the list cat's. +-- + -- BaseS = twoSS ; +-- ConsS = consrSS comma ; + -- BaseAdv x y = twoSS ** { reqLocS = x.reqLocS } ; + -- ConsAdv x y = consrSS comma x y ** { reqLocS = x.reqLocS } ; +-- BaseAdV = twoSS ; +-- ConsAdV = consrSS comma ; + BaseNP x y = twoTable NForm x y ** { + agr = conjAgr x.agr y.agr ; + empty = x.empty ++ y.empty ; + loc = x.loc + } ; + ConsNP xs x = consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a} ; +-- BaseAP x y = twoTable Agr x y ** {isPre = andB x.isPre y.isPre} ; +-- ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ; +-- BaseRS x y = twoTable Agr x y ** {c = y.c} ; +-- ConsRS xs x = consrTable Agr comma xs x ** {c = xs.c} ; +-- BaseIAdv = twoSS ; +-- ConsIAdv = consrSS comma ; +-- BaseCN = twoTable2 Number Case ; +-- ConsCN = consrTable2 Number Case comma ; +-- BaseDAP x y = twoSS x y ** {n = y.n} ; --- the last number decides: one big and two small cars +-- ConsDAP x xs = consrSS comma x xs ** {n = xs.n} ; + + lincat + [S] = { + s1 : DMood => Str ; + subjs1 : Str ; + pots1 : DMood => Str ; + s2 : DMood => Str ; + subjs2 : Str ; + pots2 : DMood => Str + } ; + -- [Adv] = {s1,s2 : Str} ; + -- [AdV] = {s1,s2 : Str} ; + -- [IAdv] = {s1,s2 : Str} ; + -- [NP] = {s1,s2 : NPCase => Str ; a : Agr} ; + -- [AP] = {s1,s2 : Agr => Str ; isPre : Bool} ; + -- [RS] = {s1,s2 : Agr => Str ; c : NPCase} ; + -- [CN] = {s1,s2 : Number => Case => Str} ; + -- [DAP] = {s1,s2 : Str ; n : Number} ; + + oper + conjAgr : Agr -> Agr = \a1,a2 -> case of { + => First Pl ; + => First Pl ; + => First Pl ; + => First Pl ; + => Second Pl ; + => Second Pl ; + => First Pl ; + => Second Pl ; + => Third c1 Pl + } ; + +} diff --git a/src/zulu/ConstructionZul.gf b/src/zulu/ConstructionZul.gf new file mode 100755 index 000000000..deb5dba10 --- /dev/null +++ b/src/zulu/ConstructionZul.gf @@ -0,0 +1,222 @@ +--# -path=.:../abstract + +concrete ConstructionZul of Construction = CatZul ** + open SyntaxZul, SymbolicZul, ParadigmsZul, (L = LexiconZul), (E = ExtendZul), (G = GrammarZul), (R = ResZul), (Sy = SyntaxZul), (S = StructuralZul), Prelude in { + + +-- lin +-- hungry_VP = mkVP (mkA "hungry") ; +-- thirsty_VP = mkVP (mkA "thirsty") ; +-- tired_VP = mkVP (mkA "tired") ; +-- scared_VP = mkVP (mkA "scared") ; +-- ill_VP = mkVP (mkA "ill") ; +-- ready_VP = mkVP (mkA "ready") ; +-- +-- has_age_VP card = mkVP (mkAP (lin AdA (mkUtt (mkNP L.year_N))) L.old_A) ; +-- +-- have_name_Cl x y = mkCl (mkNP (E.GenNP x) L.name_N) (lin NP y) ; +-- married_Cl x y = mkCl (lin NP x) L.married_A2 (lin NP y) | mkCl (mkNP and_Conj (lin NP x) (lin NP y)) (mkA "married") ; +-- +-- what_name_QCl x = mkQCl (mkIComp whatSg_IP) (mkNP (E.GenNP x) L.name_N) ; +-- how_old_QCl x = mkQCl (E.ICompAP (mkAP L.old_A)) (lin NP x) ; +-- how_far_QCl x = mkQCl (E.IAdvAdv (ss "far")) (lin NP x) ; +-- +-- -- some more things +-- weather_adjCl ap = mkCl (mkVP (lin AP ap)) ; +-- +-- is_right_VP = mkVP (ParadigmsZul.mkA "right") ; +-- is_wrong_VP = mkVP (ParadigmsZul.mkA "wrong") ; +-- +-- n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP (lin CN cn)))) (lin A a) ; +-- ---- n_units_of_NP card cn a = mkAP (lin AdA (mkUtt (mkNP (lin CN cn)))) (lin A a) ; +-- n_unit_CN card unit cn = mkCN (invarA ((mkUtt card).s ++ (mkUtt unit).s)) cn ; +-- +-- bottle_of_CN np = mkCN (lin N2 (mkN2 "bottle")) (lin NP np) ; +-- cup_of_CN np = mkCN (lin N2 (mkN2 "cup")) (lin NP np) ; +-- glass_of_CN np = mkCN (lin N2 (mkN2 "glass")) (lin NP np) ; +-- +-- few_X_short_of_Y np x y = +-- let +-- xs : Str = x.s ! R.Pl ! R.Nom ; +-- a_y : Str = (mkNP a_Det y).s ! R.NCase R.Nom ; +-- in +-- mkS (mkCl np (mkAdv ("a few" ++ xs ++ "short of" ++ a_y))) ; +-- {- +-- -- spatial deixis and motion verbs +-- +-- where_go_QCl np = mkQCl where_IAdv (mkCl np (mkVP L.go_V)) ; +-- where_come_from_QCl np = mkQCl from_where_IAdv (mkCl np (mkVP L.go_V)) ; +-- +-- go_here_VP = mkVP (mkVP L.go_V) S.here_Adv ; +-- come_here_VP = mkVP (mkVP L.come_V) S.here_Adv ; +-- come_from_here_VP = mkVP (mkVP L.come_V) (mkAdv "from here") ; +-- +-- go_there_VP = mkVP (mkVP L.go_V) S.there_Adv ; +-- come_there_VP = mkVP (mkVP L.come_V) S.there_Adv ; +-- come_from_there_VP = mkVP (mkVP L.come_V) (mkAdv "from there") ; +-- +-- --TODO "where did X come from" instead of "from where did X come" +-- oper from_where_IAdv : IAdv = lin IAdv (ss "from where") ; +-- +-- -} +-- +-- +-- lincat +-- Timeunit = N ; +-- Hour = {s : Str ; am : Bool} ; +-- Weekday = N ; +-- Monthday = NP ; +-- Month = N ; +-- Year = NP ; +-- +-- lin +-- timeunitAdv n time = +-- let n_card : Card = n ; +-- n_hours_NP : NP = mkNP n_card time ; +-- in Sy.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ; +-- +-- timeunitRange l u time = {s = l.s ! True ! R.Nom ++ to_Prep.s ++ u.s ! True ! R.Nom ++ time.s ! R.Pl ! R.Nom} ; +-- +-- oneHour = mkHour "1" True ; +-- twoHour = mkHour "2" True ; +-- threeHour = mkHour "3" True ; +-- fourHour = mkHour "4" True ; +-- fiveHour = mkHour "5" True ; +-- sixHour = mkHour "6" True ; +-- sevenHour = mkHour "7" True ; +-- eightHour = mkHour "8" True ; +-- nineHour = mkHour "9" True ; +-- tenHour = mkHour "10" True ; +-- elevenHour = mkHour "11" True ; +-- twelveHour = mkHour "12" False ; +-- thirteenHour = mkHour "1" False ; +-- fourteenHour = mkHour "2" False ; +-- fifteenHour = mkHour "3" False ; +-- sixteenHour = mkHour "4" False ; +-- seventeenHour = mkHour "5" False ; +-- eighteenHour = mkHour "6" False ; +-- nineteenHour = mkHour "7" False ; +-- twentyHour = mkHour "8" False ; +-- twentyOneHour = mkHour "9" False ; +-- twentyTwoHour = mkHour "10" False ; +-- twentyThreeHour = mkHour "11" False ; +-- twentyFourHour = mkHour "12" True ; +-- +-- timeHour h = Sy.mkAdv at_Prep (symb (h.s ++ ampm ! h.am)) ; +-- timeHourMinute h m = let +-- min = m.s ! True ! R.Nom +-- in +-- Sy.mkAdv at_Prep (symb (h.s ++ min ++ ampm ! h.am)) ; +-- +-- oper +-- mkHour : Str -> Bool -> {s : Str ; am : Bool} ; +-- mkHour n am = Sy.mkUtt (Sy.mkCard n) ** {am = am} ; +-- +-- at_Prep : Prep ; +-- at_Prep = mkPrep "at" ; +-- +-- ampm : Bool => Str ; +-- ampm = table {True => "a.m." ; False => "p.m."} ; +-- +-- lin +-- weekdayPunctualAdv w = SyntaxZul.mkAdv on_Prep (mkNP w) ; -- on Sunday +-- weekdayHabitualAdv w = SyntaxZul.mkAdv on_Prep (mkNP aPl_Det w) ; -- on Sundays +-- weekdayNextAdv w = SyntaxZul.mkAdv (mkPrep "next") (mkNP w) ; -- next Sunday +-- weekdayLastAdv w = SyntaxZul.mkAdv (mkPrep "last") (mkNP w) ; -- last Sunday +-- +-- monthAdv m = SyntaxZul.mkAdv in_Prep (mkNP m) ; +-- yearAdv y = SyntaxZul.mkAdv in_Prep y ; +-- dayMonthAdv d m = ParadigmsZul.mkAdv ("on" ++ d.s ! R.NPAcc ++ m.s ! R.Sg ! R.Nom) ; -- on 17 May +-- monthYearAdv m y = SyntaxZul.mkAdv in_Prep (mkNP (mkCN m y)) ; -- in May 2012 +-- dayMonthYearAdv d m y = ParadigmsZul.mkAdv ("on" ++ d.s ! R.NPAcc ++ m.s ! R.Sg ! R.Nom ++ y.s ! R.NPAcc) ; -- on 17 May 2013 +-- +-- intYear = symb ; +-- intMonthday = symb ; +-- +-- lincat Language = N ; +-- +-- lin InLanguage l = SyntaxZul.mkAdv in_Prep (mkNP l) ; +-- +-- lin +-- weekdayN w = w ; +-- monthN m = m ; +-- +-- weekdayPN w = mkPN w ; +-- monthPN m = mkPN m ; +-- +-- languageCN l = mkCN l ; +-- languageNP l = mkNP l ; +-- +-- +-- oper mkLanguage : Str -> N = \s -> mkN s ; +-- +-- ---------------------------------------------- +-- ---- lexicon of special names +-- +-- lin second_Timeunit = mkN "second" ; +-- lin minute_Timeunit = mkN "minute" ; +-- lin hour_Timeunit = mkN "hour" ; +-- lin day_Timeunit = mkN "day" ; +-- lin week_Timeunit = mkN "week" ; +-- lin month_Timeunit = mkN "month" ; +-- lin year_Timeunit = mkN "year" ; +-- +-- lin monday_Weekday = mkN "Monday" ; +-- lin tuesday_Weekday = mkN "Tuesday" ; +-- lin wednesday_Weekday = mkN "Wednesday" ; +-- lin thursday_Weekday = mkN "Thursday" ; +-- lin friday_Weekday = mkN "Friday" ; +-- lin saturday_Weekday = mkN "Saturday" ; +-- lin sunday_Weekday = mkN "Sunday" ; +-- +-- lin january_Month = mkN "January" ; +-- lin february_Month = mkN "February" ; +-- lin march_Month = mkN "March" ; +-- lin april_Month = mkN "April" ; +-- lin may_Month = mkN "May" ; +-- lin june_Month = mkN "June" ; +-- lin july_Month = mkN "July" ; +-- lin august_Month = mkN "August" ; +-- lin september_Month = mkN "September" ; +-- lin october_Month = mkN "October" ; +-- lin november_Month = mkN "November" ; +-- lin december_Month = mkN "December" ; +-- +-- lin afrikaans_Language = mkLanguage "Afrikaans" ; +-- lin amharic_Language = mkLanguage "Amharic" ; +-- lin arabic_Language = mkLanguage "Arabic" ; +-- lin bulgarian_Language = mkLanguage "Bulgarian" ; +-- lin catalan_Language = mkLanguage "Catalan" ; +-- lin chinese_Language = mkLanguage "Chinese" ; +-- lin danish_Language = mkLanguage "Danish" ; +-- lin dutch_Language = mkLanguage "Dutch" ; +-- lin english_Language = mkLanguage "English" ; +-- lin estonian_Language = mkLanguage "Estonian" ; +-- lin finnish_Language = mkLanguage "Finnish" ; +-- lin french_Language = mkLanguage "French" ; +-- lin german_Language = mkLanguage "German" ; +-- lin greek_Language = mkLanguage "Greek" ; +-- lin hebrew_Language = mkLanguage "Hebrew" ; +-- lin hindi_Language = mkLanguage "Hindi" ; +-- lin japanese_Language = mkLanguage "Japanese" ; +-- lin italian_Language = mkLanguage "Italian" ; +-- lin latin_Language = mkLanguage "Latin" ; +-- lin latvian_Language = mkLanguage "Latvian" ; +-- lin maltese_Language = mkLanguage "Maltese" ; +-- lin nepali_Language = mkLanguage "Nepali" ; +-- lin norwegian_Language = mkLanguage "Norwegian" ; +-- lin persian_Language = mkLanguage "Persian" ; +-- lin polish_Language = mkLanguage "Polish" ; +-- lin punjabi_Language = mkLanguage "Punjabi" ; +-- lin romanian_Language = mkLanguage "Romanian" ; +-- lin russian_Language = mkLanguage "Russian" ; +-- lin sindhi_Language = mkLanguage "Sindhi" ; +-- lin spanish_Language = mkLanguage "Spanish" ; +-- lin swahili_Language = mkLanguage "Swahili" ; +-- lin swedish_Language = mkLanguage "Swedish" ; +-- lin thai_Language = mkLanguage "Thai" ; +-- lin turkish_Language = mkLanguage "Turkish" ; +-- lin urdu_Language = mkLanguage "Urdu" ; + + +} diff --git a/src/zulu/DocumentationZul.gf b/src/zulu/DocumentationZul.gf new file mode 100755 index 000000000..b5483e15a --- /dev/null +++ b/src/zulu/DocumentationZul.gf @@ -0,0 +1,190 @@ +--# -path=.:../abstract:../common +concrete DocumentationZul of Documentation = CatZul ** open + ResZul, + HTML in { + +lincat + Inflection = {t : Str; s1,s2 : Str} ; + Definition = {s : Str} ; + Document = {s : Str} ; + Tag = {s : Str} ; + +-- lin +-- InflectionN, InflectionN2, InflectionN3 = \noun -> { +-- t = "n" ; +-- s1 = heading1 ("Noun" ++ case noun.g of { +-- Neutr => ""; +-- Masc => "(masc)"; +-- Fem => "(fem)" +-- }) ; +-- s2 = frameTable ( +-- tr (th "" ++ th "nom" ++ th "gen") ++ +-- tr (th "sg" ++ td (noun.s ! Sg ! Nom) ++ td (noun.s ! Sg ! Gen)) ++ +-- tr (th "pl" ++ td (noun.s ! Pl ! Nom) ++ td (noun.s ! Pl ! Gen)) +-- ) +-- } ; +-- +-- InflectionA, InflectionA2 = \adj -> { +-- t = "a" ; +-- s1 = heading1 "Adjective" ; +-- s2 = frameTable ( +-- tr (th "" ++ th "nom" ++ th "gen") ++ +-- tr (th "posit" ++ td (adj.s ! AAdj Posit Nom) ++ td (adj.s ! AAdj Posit Gen)) ++ +-- tr (th "compar" ++ td (adj.s ! AAdj Compar Nom) ++ td (adj.s ! AAdj Compar Gen)) ++ +-- tr (th "superl" ++ td (adj.s ! AAdj Superl Nom) ++ td (adj.s ! AAdj Superl Gen)) +-- ) ++ +-- heading1 "Adverb" ++ +-- paragraph (adj.s ! AAdv) +-- } ; +-- +-- InflectionAdv = \adv -> { +-- t = "adv" ; +-- s1= heading1 "Adverb" ; +-- s2= paragraph (adv.s) ; +-- s3= "" +-- } ; +-- +-- InflectionPrep = \prep -> { +-- t = "prep" ; +-- s1= heading1 "Preposition" ; +-- s2= paragraph (prep.s) ; +-- s3= "" +-- } ; +-- +-- InflectionV v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ v.s ! VInf ++ v.p) ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV2 v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ v.c2 ++ +-- pp "object") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV3 v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- v.c2 ++ pp "arg1" ++ +-- v.c3 ++ pp "arg2") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV2V v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- v.c2 ++ pp "object" ++ +-- v.c3 ++ case v.typ of { +-- VVAux => pp "verb" ; +-- VVInf => "to" ++ pp "verb" ; +-- VVPresPart => pp "verb+ing" +-- }) ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV2S v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- v.c2 ++ pp "object" ++ +-- "that" ++ pp "sentence") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV2Q v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- pp "question") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionV2A v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- v.c2 ++ pp "object" ++ +-- pp "adjective") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionVV v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VVF VInf ++ v.p ++ +-- case v.typ of { +-- VVAux => pp "verb" ; +-- VVInf => "to" ++ pp "verb" ; +-- VVPresPart => pp "verb+ing" +-- }) ; +-- s2= frameTable ( +-- tr (th "infitive" ++ td (v.s ! VVF VInf)) ++ +-- tr (th "present" ++ td (v.s ! VVF VPres ++ " " ++ v.s ! VVPresNeg)) ++ +-- tr (th "past" ++ td (v.s ! VVF VPast ++ " " ++ v.s ! VVPastNeg)) ++ --# notpresent +-- tr (th "past part." ++ td (v.s ! VVF VPPart)) ++ +-- tr (th "present part." ++ td (v.s ! VVF VPresPart)) +-- ) +-- } ; +-- +-- InflectionVS v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- "that" ++ pp "sentence") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionVQ v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- pp "question") ; +-- s2= inflVerb v +-- } ; +-- +-- InflectionVA v = { +-- t = "v" ; +-- s1= heading1 "Verb" ++ +-- paragraph (pp "subject" ++ +-- v.s ! VInf ++ v.p ++ +-- pp "adjective") ; +-- s2= inflVerb v +-- } ; +-- +-- oper +-- inflVerb : Verb -> Str = \verb -> +-- frameTable ( +-- tr (th "infitive" ++ td (verb.s ! VInf)) ++ +-- tr (th "present" ++ td (verb.s ! VPres)) ++ +-- tr (th "past" ++ td (verb.s ! VPast)) ++ --# notpresent +-- tr (th "past part." ++ td (verb.s ! VPPart)) ++ +-- tr (th "present part." ++ td (verb.s ! VPresPart)) +-- ) ; +-- +-- pp : Str -> Str = \s -> "<"+s+">"; +-- +-- lin +-- NoDefinition t = {s=t.s}; +-- MkDefinition t d = {s="

Definition:"++t.s++d.s++"

"}; +-- MkDefinitionEx t d e = {s="

Definition:"++t.s++d.s++"

Example:"++e.s++"

"}; +-- +-- lin +-- MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ; +-- MkTag i = {s = i.t} ; + +} diff --git a/src/zulu/ExtendZul.gf b/src/zulu/ExtendZul.gf new file mode 100755 index 000000000..68919d0bf --- /dev/null +++ b/src/zulu/ExtendZul.gf @@ -0,0 +1,367 @@ +--# -path=.:../common:../abstract + +concrete ExtendZul of Extend = + CatZul ** ExtendFunctor - + [ + VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList, + AdAdV, AdjAsCN, AdjAsNP, ApposNP, AdvIsNP, + BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2, + MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV, + MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, + Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, + CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, + CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPMasc, DetNPFem, EmbedPresPart, EmptyRelSlash, + ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, + FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, + GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP, + PassAgentVPSlash, PassVPSlash, ProgrVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, + EmbedSSlash, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, + UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 + ] + with + (Grammar = GrammarZul) ** + + open + GrammarZul, + ResZul, + Coordination, + Prelude, + -- MorphoZul, + ParadigmsZul in { + + lin + + ProDrop pron = { + s = pron.s ; + agr = pron.agr ; + empty = pron.empty ; + proDrop = True + } ; + + +-- GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_,_ => np.s ! npGen ; isDef = True} ; +-- GenIP ip = {s = \\_ => ip.s ! NCase Gen} ; +-- GenRP nu cn = { +-- s = \\c => "whose" ++ nu.s ! False ! Nom ++ +-- case c of { +-- RC _ (NCase Gen) => cn.s ! nu.n ! Gen ; +-- _ => cn.s ! nu.n ! Nom +-- } ; +-- a = RAg (agrP3 nu.n) +-- } ; +-- +-- GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ; +-- GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; +-- +-- StrandQuestSlash ip slash = +-- {s = \\t,a,b,q => +-- (mkQuestion (ss (ip.s ! NPAcc)) slash).s ! t ! a ! b ! q ++ slash.c2 +-- }; +-- StrandRelSlash rp slash = { +-- s = \\t,a,p,ag => +-- rp.s ! RC (fromAgr ag).g NPAcc ++ slash.s ! t ! a ! p ! oDir ++ slash.c2 ; +-- c = NPAcc +-- } ; +-- EmptyRelSlash slash = { +-- s = \\t,a,p,_ => slash.s ! t ! a ! p ! oDir ++ slash.c2 ; +-- c = NPAcc +-- } ; +-- +-- DetNPMasc det = { +-- s = det.sp ! Masc ! False ; +-- a = agrgP3 det.n Masc +-- } ; +-- +-- DetNPFem det = { +-- s = det.sp ! Fem ! False ; +-- a = agrgP3 det.n Fem +-- } ; +-- +-- lincat +-- VPS = {s : Agr => Str} ; +-- [VPS] = {s1,s2 : Agr => Str} ; +-- VPI = {s : VVType => Agr => Str} ; +-- [VPI] = {s1,s2 : VVType => Agr => Str} ; +-- +-- lin +-- BaseVPS = twoTable Agr ; +-- ConsVPS = consrTable Agr comma ; +-- +-- BaseVPI = twoTable2 VVType Agr ; +-- ConsVPI = consrTable2 VVType Agr comma ; +-- +-- MkVPS t p vp = mkVPS (lin Temp t) (lin Pol p) (lin VP vp) ; +-- ConjVPS c xs = conjunctDistrTable Agr c xs ; +-- PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ; +-- +-- +-- MkVPI vp = mkVPI (lin VP vp) ; +-- ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ; +-- ComplVPIVV vv vpi = insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ; +-- +-- +-- -------- two-place verb conjunction +-- +-- lincat +-- VPS2 = {s : Agr => Str ; c2 : Str} ; +-- [VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ; +-- VPI2 = {s : VVType => Agr => Str ; c2 : Str} ; +-- [VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Str} ; +-- +-- lin +-- MkVPS2 t p vpsl = mkVPS (lin Temp t) (lin Pol p) (lin VP vpsl) ** {c2 = vpsl.c2} ; +-- MkVPI2 vpsl = mkVPI (lin VP vpsl) ** {c2 = vpsl.c2} ; +-- +-- BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb +-- ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2} ; +-- +-- BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb +-- ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ; +-- +-- +-- ConjVPS2 c xs = conjunctDistrTable Agr c xs ** {c2 = xs.c2} ; +-- ConjVPI2 c xs = conjunctDistrTable2 VVType Agr c xs ** {c2 = xs.c2} ; +-- +-- +-- ComplVPS2 vps2 np = { +-- s = \\a => vps2.s ! a ++ vps2.c2 ++ np.s ! NPAcc +-- } ; +-- ComplVPI2 vpi2 np = { +-- s = \\t,a => vpi2.s ! t ! a ++ vpi2.c2 ++ np.s ! NPAcc +-- } ; +-- +-- oper +-- mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS { +-- s = \\a => +-- let +-- verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ; +-- verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ; +-- in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext +-- } ; +-- +-- mkVPI : VP -> VPI = \vp -> lin VPI { +-- s = table { +-- VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ; +-- VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ; +-- VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a +-- } +-- } ; +-- +-- ----- +-- +-- lin +-- ICompAP ap = {s = "how" ++ ap.s ! agrP3 Sg} ; ---- IComp should have agr! +-- +-- IAdvAdv adv = {s = "how" ++ adv.s} ; +-- +-- PresPartAP vp = { +-- s = \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext ; +-- isPre = vp.isSimple -- depends on whether there are complements +-- } ; +-- +-- EmbedPresPart vp = {s = infVP VVPresPart vp False Simul CPos (agrP3 Sg)} ; +-- +-- PastPartAP vp = { +-- s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ; +-- isPre = vp.isSimple -- depends on whether there are complements +-- } ; +-- PastPartAgentAP vp np = { +-- s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ "by" ++ np.s ! NPAcc ++ vp.ext ; +-- isPre = False +-- } ; +-- +-- GerundCN vp = { +-- s = \\n,c => vp.ad ! AgP3Sg Neutr ++ vp.prp ++ +-- case of { +-- => "" ; +-- => Predef.BIND ++ "'s" ; +-- => Predef.BIND ++ "s" ; +-- => Predef.BIND ++ "s'" +-- } ++ +-- vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext ; +-- g = Neutr +-- } ; +-- +-- GerundNP vp = +-- let a = AgP3Sg Neutr ---- agr +-- in +-- {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext ; a = a} ; +-- +-- GerundAdv vp = +-- let a = AgP3Sg Neutr +-- in +-- {s = vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext} ; +-- +-- WithoutVP vp = {s = "without" ++ (GerundAdv (lin VP vp)).s} ; +-- +-- InOrderToVP vp = {s = ("in order" | []) ++ infVP VVInf vp False Simul CPos (AgP3Sg Neutr)} ; +-- +-- PurposeVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ; --- agr +-- +-- ByVP vp = {s = "by" ++ (GerundAdv (lin VP vp)).s} ; +-- +-- PredIAdvVP iadv vp = {s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)} ; +-- +-- EmbedSSlash s = {s = "what" ++ s.s ++ s.c2} ; +-- +-- NominalizeVPSlashNP vpslash np = +-- let vp : ResZul.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ; +-- a = AgP3Sg Neutr +-- in +-- lin NP {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ; a = a} ; +-- +-- +-- oper passVPSlash : VPSlash -> Str -> ResZul.VP = +-- \vps,ag -> +-- let +-- be = predAux auxBe ; +-- ppt = vps.ptp +-- in { +-- s = be.s ; +-- p = [] ; +-- prp = be.prp ; +-- ptp = be.ptp ; +-- inf = be.inf ; +-- ad = \\_ => [] ; +-- s2 = \\a => vps.ad ! a ++ ppt ++ vps.p ++ vps.s2 ! a ++ ag ++ vps.c2 ; ---- place of agent +-- isSimple = False ; +-- ext = vps.ext +-- } ; +-- +-- lin +-- PassVPSlash vps = passVPSlash (lin VPS vps) [] ; +-- PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ; +-- ProgrVPSlash vp = insertObjc (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a) +-- (predAux auxBe ** {c2 = vp.c2; gapInMiddle = vp.gapInMiddle; missingAdv = vp.missingAdv}); +-- +-- --- AR 7/3/2013 +-- ComplSlashPartLast vps np = case vps.gapInMiddle of { +-- _ => insertObjPartLast (\\_ => vps.c2 ++ np.s ! NPAcc) vps --- +-- } ; +-- +-- --- AR 22/5/2013 +-- ExistsNP np = +-- mkClause "there" (agrP3 (fromAgr np.a).n) +-- (insertObj (\\_ => np.s ! NPAcc) (predV (regV "exist"))) ; +-- +-- ExistCN cn = +-- let +-- pos = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ; +-- neg = ExistNP (DetCN (DetQuant no_Quant NumSg) cn) ; +-- in posNegClause pos neg ; +-- ExistMassCN cn = +-- let +-- pos = ExistNP (MassNP cn) ; +-- neg = ExistNP (DetCN (DetQuant no_Quant NumSg) cn) ; +-- in posNegClause pos neg ; +-- ExistPluralCN cn = +-- let +-- pos = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ; +-- neg = ExistNP (DetCN (DetQuant no_Quant NumPl) cn) ; +-- in posNegClause pos neg ; +-- +-- +-- ComplBareVS v s = insertExtra s.s (predV v) ; +-- SlashBareV2S v s = insertExtrac s.s (predVc v) ; +-- +-- CompoundN noun cn = { +-- s = variants {\\n,c => noun.s ! Sg ! Nom ++ cn.s ! n ! c ; +-- \\n,c => noun.s ! Sg ! Nom ++ BIND++"-"++BIND ++ cn.s ! n ! c} ; +-- g = cn.g +-- } ; +-- +-- CompoundAP noun adj = { +-- s = variants {\\_ => noun.s ! Sg ! Nom ++ adj.s ! AAdj Posit Nom ; +-- \\_ => noun.s ! Sg ! Nom ++ BIND++"-"++BIND ++ adj.s ! AAdj Posit Nom} ; +-- isPre = True +-- } ; +-- +-- FrontExtPredVP np vp = { +-- s = \\t,a,b,o => +-- let +-- subj = np.s ! npNom ; +-- agr = np.a ; +-- verb = vp.s ! t ! a ! b ! o ! agr ; +-- compl = vp.s2 ! agr +-- in +-- case o of { +-- ODir _ => vp.ext ++ frontComma ++ subj ++ verb.aux ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ verb.inf ++ vp.p ++ compl ; +-- OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ verb.inf ++ vp.p ++ compl ++ vp.ext +-- } +-- } ; +-- +-- InvFrontExtPredVP np vp = { +-- s = \\t,a,b,o => +-- let +-- subj = np.s ! npNom ; +-- agr = np.a ; +-- verb = vp.s ! t ! a ! b ! o ! agr ; +-- compl = vp.s2 ! agr +-- in +-- case o of { +-- ODir _ => vp.ext ++ verb.aux ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ subj ++ verb.inf ++ vp.p ++ compl ; +-- OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ! agr ++ verb.fin ++ verb.inf ++ vp.p ++ compl ++ vp.ext +-- } +-- } ; +-- +-- +-- +-- lin +-- AdAdV = cc2 ; +-- +-- AdjAsCN ap = let cn = mkNoun "one" "one's" "ones" "ones'" ** {g = Neutr} +-- in { +-- s = \\n,c => preOrPost ap.isPre (ap.s ! agrgP3 n cn.g) (cn.s ! n ! c) ; +-- g = cn.g +-- } ; +-- AdjAsNP ap = { +-- s = \\c => ap.s ! agrgP3 Sg nonhuman ; ---- genitive case? +-- a = agrgP3 Sg nonhuman +-- } ; +-- +-- PositAdVAdj a = {s = a.s ! AAdv} ; +-- +-- lincat +-- RNP = {s : Agr => Str} ; +-- RNPList = {s1,s2 : Agr => Str} ; +-- +-- lin +-- ReflRNP vps rnp = insertObjPre (\\a => vps.c2 ++ rnp.s ! a) vps ; +-- ReflPron = {s = reflPron} ; +-- ReflPoss num cn = {s = \\a => possPron ! a ++ num.s ! True ! Nom ++ cn.s ! num.n ! Nom} ; +-- PredetRNP predet rnp = {s = \\a => predet.s ++ rnp.s ! a} ; +-- +-- ConjRNP conj rpns = conjunctDistrTable Agr conj rpns ; +-- +-- Base_rr_RNP x y = twoTable Agr x y ; +-- Base_nr_RNP x y = twoTable Agr {s = \\a => x.s ! NPAcc} y ; +-- Base_rn_RNP x y = twoTable Agr x {s = \\a => y.s ! NPAcc} ; +-- Cons_rr_RNP x xs = consrTable Agr comma x xs ; +-- Cons_nr_RNP x xs = consrTable Agr comma {s = \\a => x.s ! NPAcc} xs ; +-- +-- lin +-- ApposNP np1 np2 = {s = \\c => np1.s ! c ++ comma ++ np2.s ! c; a = np1.a} ; +-- +-- AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a} (UseComp (CompNP np)) ; +-- +-- ---- TODO: RNPList construction +-- +-- lin +-- ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++ +-- infVP v.typ vp False a.a p.p agr) +-- (predVV v) ; +-- +-- CompS s = {s = \\_ => "that" ++ s.s} ; +-- CompQS qs = {s = \\_ => qs.s ! QIndir} ; +-- CompVP ant p vp = {s = \\a => ant.s ++ p.s ++ +-- infVP VVInf vp False ant.a p.p a} ; +-- +-- -- quite specific for English anyway +-- +-- UncontractedNeg = {s = [] ; p = CNeg False} ; +-- UttVPShort vp = {s = infVP VVAux vp False Simul CPos (agrP3 Sg)} ; + + + + +} diff --git a/src/zulu/ExtraExtZul.gf b/src/zulu/ExtraExtZul.gf new file mode 100755 index 000000000..26f10d222 --- /dev/null +++ b/src/zulu/ExtraExtZul.gf @@ -0,0 +1,661 @@ +concrete ExtraExtZul of ExtraExt = + CatZul [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN], + CatExtZul + ** open ResZul,Prelude,ParamX in { + + lin + -- use with caution + ProDrop pron = { + s = table { + NFull => case pron.proDrop of { + True => "*" ++ pron.s!NFull ; + False => pron.empty + } ; + nform => "*" ++ pron.s!nform + } ; + agr = pron.agr ; + empty = pron.empty ; + proDrop = True + } ; + + lin + -- PotQS pol qcl = { + -- s = pol.s ++ qcl.potqcl!pol.p!Princ ; + -- qword_pre = qcl.qword_pre ; + -- qword_post = qcl.qword_post + -- } ; + + -- SubjunctS s = { s = s.subjs } ; + + -- AssocCop np = { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = np.s!Reduced ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- r = case np.proDrop of { + -- True => RC ; + -- False => initNP np.isPron np.agr + -- } ; + -- syl = SylMult ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = CopAssoc ; + -- comp_agr = np.agr ; + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + -- + -- EqCop np = { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = np.s!Full ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- r = case np.isPron of { + -- True => RC ; + -- False => initNP np.isPron np.agr + -- } ; + -- syl = SylMult ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = CopEq ; + -- comp_agr = np.agr ; + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + + -- UsePNPl pn = let + -- agr = Third pn.c Pl + -- in { + -- empty,predet_pre,predet_post = pn.empty ; + -- s = pn.s!Pl ; + -- mod = pn.empty ; + -- dem = pn.empty ; + -- agr = agr ; + -- i = nominit!agr ; + -- proDrop = False ; + -- isPron = False ; + -- -- reqLocS = True ; + -- qdef = Article Spec ; + -- } ; + + -- PNAsCN pn = pn ** { mod = \\_ => [] } ; + + -- DemPron quant pron = let + -- d = case quant.qdef of { + -- Article _ => Dem1 ; + -- Demonstrative d => d + -- } + -- in { + -- empty,predet_pre,dem,predet_post = pron.empty ; + -- -- dem = case quant.qdef of { + -- -- Article _ => dem_pron!Dem1!pron.agr ; + -- -- Demonstrative d => dem_pron!d!pron.agr + -- -- } ; + -- -- s = \\nform => quant.s ++ pron.s!nform ; + -- s = table { + -- Full => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ; + -- Reduced => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ; + -- Poss => quant.s ++ dem_pron!d!pron.agr ++ pron.empty ; + -- Loc => quant.s ++ dem_pron!d!pron.agr ++ pron.empty + -- } ; + -- mod = pron.empty ; + -- agr = pron.agr ; + -- i = RC ; + -- proDrop = False ; + -- isPron = True ; + -- -- reqLocS = True ; + -- qdef = case quant.qdef of { + -- Article _ => Demonstrative Dem1 ; + -- Demonstrative d => Demonstrative d + -- } + -- } ; + + -- EmphCN cn = { + -- s = \\num,nform => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.s!num!nform ; + -- mod = cn.mod ; + -- c = cn.c ; + -- empty = cn.empty + -- } ; + -- + -- ContrastCN cn = { + -- s = cn.s ; + -- mod = \\num => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.mod!num ; + -- c = cn.c ; + -- empty = cn.empty + -- } ; + + -- ApposCNCN cn1 cn2 = { + -- s = cn1.s ; + -- mod = \\n => cn1.mod!n ++ cn2.s!n!Full ++ cn2.mod!n ; + -- c = cn1.c ; + -- empty = cn1.empty ++ cn2.empty + -- } ; + + -- ApposNPN np n = let + -- num = case np.agr of { + -- First n => n ; + -- Second n => n ; + -- Third c n => n + -- } ; + -- in { + -- empty = np.empty ; + -- s = np.s; + -- mod = np.mod ++ np.predet_post ++ n.s!num!Full ; + -- dem = np.dem ; + -- predet_pre = np.predet_pre ; + -- predet_post = np.empty ; + -- agr = Third n.c num ; + -- i = np.i ; + -- proDrop = np.proDrop ; + -- isPron = np.isPron ; + -- -- reqLocS = np.reqLocS ; + -- qdef = np.qdef ; + -- } ; + + PossLocNP locn np = { + empty = np.empty ; + s = \\n,nform => locn.s ; + mod = \\num => poss_concord!(C17)!Sg!np.i ++BIND++ (poss_NP np) ; + c = C17 ; + emph = False + } ; + + InstrNPAdv np = + let + pref = instrPref!(initNP np.isPron np.agr) + in { + s = pref ++BIND++ (np.s!NReduced) ; + -- asp = Null ; + reqLocS = False + } ; + + InstrAdvNPAdv adv np = + let + pref = instrPref!(initNP np.isPron np.agr) + in { + s = adv.s ++ pref ++BIND++ (np.s!NReduced) ; + -- asp = adv.asp ; + reqLocS = False + } ; + + LocNPAdv np = { + s = np.s!NLoc ; + -- asp = Null ; + reqLocS = case np.isPron of { + False => True ; + True => False -- ki- + } ; + } ; + + LocAdvNPAdv adv np = { + s = adv.s ++ (np.s!NLoc) ; + -- asp = adv.asp ; + reqLocS = False + } ; + + -- locative kwa + KwaNPAdv np = { + -- s = "kwa" ++BIND++ (np.s!Reduced) ; + s = (poss_concord_agr!(Third C17 Sg)!np.i) ++BIND++ (np.s!NReduced) ; + -- asp = Null ; + reqLocS = False + } ; + + -- -- NOTE: this seems to be a specific construction. Not yet found in Poulos+Msimang + -- KwaAdvNPAdv adv np = + -- let + -- c = case np.agr of { + -- (First _ | Second _) => C1_2 ; -- people class as default + -- Third c _ => c + -- } ; + -- n = case np.agr of { + -- (First Sg | Second Sg | Third _ Sg) => Sg ; + -- (First Pl | Second Pl | Third _ Pl) => Pl + -- } + -- in + -- { + -- s = adv.s ++ poss_concord!C15!Sg!(initNP np.isPron np.agr) ++BIND++ np.s!Reduced ++ np.mod ++ np.predet_pre ++ np.predet_post ; + -- -- asp = adv.asp ; + -- reqLocS = False + -- } ; + + -- locative ku + KuNPAdv np = { + s = case np.isPron of { + True => "ki" ; + False => case (initNP np.isPron np.agr) of { + -- RI => "ki" ; + RO => "ko" ; + RA => "kw" ; + _ => "ku" + } + } + ++BIND++ (np.s!NReduced) ; + -- asp = Null ; + reqLocS = False + } ; + + KuAdvNPAdv adv np = { + s = adv.s ++ + case np.proDrop of { + True => "ki" ; + False => case (initNP np.isPron np.agr) of { + RI => "ki" ; + RO => "ko" ; + RA => "kw" ; + _ => "ku" + } + } + ++BIND++ (np.s!NReduced) ; + -- asp = Null ; + reqLocS = False + } ; + + NaNPAdv np = { + s = withPref ! (initNP np.isPron np.agr) ++BIND++ (np.s!NReduced) ; + -- asp = Null ; + reqLocS = False + } ; + + RelAdv adv = { + s = \\a => relConcLookup!a!RC ++BIND++ adv.s + } ; + + -- ProgVP vp = { + -- s = vp.s ; + -- perfSuff = vp.perfSuff ; + -- oc = vp.oc ; + -- comp = vp.comp ; + -- hasComp = vp.hasComp ; + -- r = vp.r ; + -- syl = vp.syl ; + -- asp = Prog ; + -- vptype = vp.vptype ; + -- comp_agr = vp.comp_agr ; + -- ap_comp = vp.ap_comp ; + -- ap_bool = vp.ap_bool ; + -- aux_root = vp.aux_root ; + -- hasAux = vp.hasAux + -- } ; + + -- QuantRS quant = { + -- s = \\a => relConcLookup!a!RC ++BIND++ quantConc!a ++BIND++ quant.s + -- } ; + -- + -- RelRS rel = { + -- s = \\a => relConcLookup!a!RC ++BIND++ rel.s + -- } ; + + -- QuantCN quant cn = { + -- empty = cn.empty ; + -- s = \\num,nform => + -- let + -- agr = Third cn.c num + -- in + -- case quant.isPost of { + -- True => cn.s ! num ! nform ++ quantConc!agr ++BIND++ quant.s ; + -- False => quantConc!agr ++BIND++ quant.s ++ cn.s ! num ! nform + -- } ; + -- c = cn.c + -- } ; + -- let + -- cn_agr = Third cn.c quant.n + -- in + -- { + -- empty = cn.empty ; + -- s = \\p => case quant.isPost of { + -- True => cn.s ! quant.n ! p ++ quantConc!cn_agr ++BIND++ quant.s ; + -- False => quantConc!cn_agr ++BIND++ quant.s ++ cn.s ! quant.n ! p + -- } ; + -- loc = quantConc!cn_agr ++BIND++ quant.s ++ cn.loc ! quant.n ; + -- desc = cn.desc ! quant.n ; + -- det = cn.empty ; + -- poss = poss_concord!cn.c!quant.n!(initNP False cn_agr) ++ cn.s ! quant.n ! Reduced ; + -- agr = cn_agr ; + -- proDrop = False ; + -- isPron = False ; + -- reqLocS = False ; + -- qdef = Article Def + -- } ; + + NumAdjCN cn a = { + s = \\num,nform => cn.s!num!nform ++ "na" ++BIND++ a.s!AF2 ; + -- loc = cn.loc ; + -- desc = \\num => + -- let + -- agr = Third cn.c num ; + -- in + -- cn.desc ! num ++ "na" ++BIND++ a.s!AF2 ; + c = cn.c ; + empty = cn.empty ++ a.empty + } ; + + only_QuantStem = { + s = table { + Third C1_2 Sg => "yedwa" ; + Third C1_2 Pl => "bodwa" ; + Third C1a_2a Sg => "yedwa" ; + Third C1a_2a Pl => "bodwa" ; + Third C3_4 Sg => "wodwa" ; + Third C3_4 Pl => "yodwa" ; + Third C5_6 Sg => "lodwa" ; + Third C5_6 Pl => "odwa" ; + Third C7_8 Sg => "sodwa" ; + Third C7_8 Pl => "zodwa" ; + Third C9_10 Sg => "yodwa" ; + Third C9_10 Pl => "zodwa" ; + Third C11_10 Sg => "lodwa" ; + Third C11_10 Pl => "zodwa" ; + Third C9_6 Sg => "yodwa" ; + Third C9_6 Pl => "odwa" ; + Third C14 _ => "bodwa" ; + Third C15 _ => "kodwa" ; + Third C17 _ => "kodwa" ; + First Sg => "ngedwa" ; + First Pl => "sodwa" ; + Second Sg => "wedwa" ; + Second Pl => "nodwa" + } + } ; + all_QuantStem = { + s = table { + Third C1_2 Sg => "wonke" ; + Third C1_2 Pl => "bonke" ; + Third C1a_2a Sg => "wonke" ; + Third C1a_2a Pl => "bonke" ; + Third C3_4 Sg => "wonke" ; + Third C3_4 Pl => "yonke" ; + Third C5_6 Sg => "lonke" ; + Third C5_6 Pl => "onke" ; + Third C7_8 Sg => "sonke" ; + Third C7_8 Pl => "zonke" ; + Third C9_10 Sg => "yonke" ; + Third C9_10 Pl => "zonke" ; + Third C11_10 Sg => "lonke" ; + Third C11_10 Pl => "zonke" ; + Third C9_6 Sg => "yonke" ; + Third C9_6 Pl => "onke" ; + Third C14 _ => "bonke" ; + Third C15 _ => "konke" ; + Third C17 _ => "konke" ; + First Sg => "ngenke" ; + First Pl => "sonke" ; + Second Sg => "wenke" ; + Second Pl => "nonke" + } + } ; + -- all_pre_Predet = { s = "nke" ; isPost = False } ; + painful_RelStem = { s = "buhlungu" } ; + + -- TPerfPast = { s = [] ; t = Relative PerfTense PastTense } ; + -- TPresPres = { s = [] ; t = PresTense } ; + -- TPastPres = { s = [] ; t = Relative PastTense PresTense } ; + -- TPastPerf = { s = [] ; t = Relative PastTense PerfTense } ; + + PredNP np = cl_with_np_predicate np ; + + -- IAdvQS np iadv = { + -- s = case np.proDrop of { + -- True => np.empty ; + -- False => np.s ! Full ++ np.desc + -- } ; + -- qword_pre = case iadv.postIAdv of { + -- False => let + -- vform = VFIndic Princ Pos PresTense Null + -- in + -- (subjConc vform np.agr False) ++ iadv.s ; + -- True => [] + -- } ; + -- qword_post = case iadv.postIAdv of { + -- True => let + -- vform = VFIndic Princ Pos PresTense Null + -- in + -- (subjConc vform np.agr False) ++ iadv.s ; + -- False => [] + -- } ; + -- } ; + + AdvQCl adv qcl = { + s = \\p,t,m => qcl.s!p!t!m ++ adv.s ; + potqcl = \\p,m => qcl.potqcl!p!m ++ adv.s ; + qword_pre = qcl.qword_pre ; + qword_post = qcl.qword_post + } ; + + ComplVAux vaux vp = { + s = vp.s ; + perfSuff = vp.perfSuff ; + suff = vp.suff ; + oc = vp.oc ; + comp = vp.comp ; + iadv = vp.iadv ; + advs = vp.advs ; + hasComp = vp.hasComp ; + r = vp.r ; + syl = vp.syl ; + asp = vp.asp ; + asp_pref = vp.asp_pref ; + vptype = vp.vptype ; + comp_agr = vp.comp_agr ; + ap_comp = vp.ap_comp ; + aux_root = vaux.s ; + hasAux = True + } ; + + -- UseLocNP np = { + -- s = [] ; + -- perfSuff = [] ; + -- oc = [] ; + -- comp = "s" ++BIND++ np.loc ++ np.desc ; + -- hasComp = True ; + -- r = nominit!np.agr ; + -- syl = SylMult ; + -- asp = Null ; + -- vptype = CopIdent ; + -- comp_agr = np.agr ; + -- ap_comp = \\_ => [] ; + -- ap_bool = False ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + + ConjNAdv conj s = { + s = conj.s ++ s.s; + -- asp = Null ; + reqLocS = False + } ; + + where_ConjN = { s = "lapho" } ; + + -- IAdvVP vp iadv = { + -- s = vp.s ; + -- -- perfSuff = vp.perfSuff ; + -- -- suff = vp.suff ; + -- -- oc = vp.oc ; + -- iadv = vp.iadv ++ iadv.s ; + -- comp = vp.comp ; + -- advs = vp.advs ; + -- hasComp = True ; + -- r = vp.r ; + -- -- syl = vp.syl ; + -- -- asp = vp.asp ; + -- -- asp_pref = vp.asp_pref ; + -- vptype = vp.vptype -- ; + -- -- comp_agr = vp.comp_agr ; + -- -- ap_comp = vp.ap_comp ; + -- -- aux_root = vp.aux_root ; + -- -- hasAux = vp.hasAux + -- } ; + + it3_Pron = mkPron (Third C3_4 Sg) ; + they4_Pron = mkPron (Third C3_4 Pl) ; + it5_Pron = mkPron (Third C5_6 Sg) ; + they6_Pron = mkPron (Third C5_6 Pl) ; + it7_Pron = mkPron (Third C7_8 Sg) ; + they8_Pron = mkPron (Third C7_8 Pl) ; + it9_Pron = mkPron (Third C9_10 Sg) ; + they10_Pron = mkPron (Third C9_10 Pl) ; + it11_Pron = mkPron (Third C11_10 Sg) ; + it14_Pron = mkPron (Third C14 Sg) ; + it15_Pron = mkPron (Third C15 Sg) ; + it17_Pron = mkPron (Third C17 Sg) ; + + yonder_Quant = { s = [] ; dist = Dem3 } ; + + at_which_IAdv np = { + s = "nga" ++BIND++ atwhichPhiPref!np.agr ++BIND++ "phi" ++ (np.s!NFull) ; + postIAdv = False + } ; + + what_IAdv = {s = BIND++"ni" ; postIAdv = True } ; + + how_many_IAdj = regAdj "ngaki" ; + + -- IAdjIAdv np iadj = { + -- s = (np.s!Loc) ++ adjConcLookup!np.agr ++BIND++ iadj.s!(aformN np.agr) ; + -- postIAdv = False + -- } ; + + how_IComp = { s = "njani" ; postIComp = False } ; -- -njani + where_IComp = { s = "phi" ; postIComp = True } ; -- -phi + how_much_IComp = { s = "ngakanani" ; postIComp = False } ; -- -ngakanani + + how2_IAdv = {s = "anjani" ; postIAdv = False } ; + how8much2_IAdv = {s = "angakanani" ; postIAdv = False } ; + + phakathi_LocN = { s = "phakathi" ; empty = [] } ; + phansi_LocN = { s = "phansi" ; empty = [] } ; + phesheya_LocN = { s = "phesheya" ; empty = [] } ; + phandle_LocN = { s = "phandle" ; empty = [] } ; + phambili_LocN = { s = "phambili" ; empty = [] } ; + phambi_LocN = { s = "phambi" ; empty = [] } ; + phakade_LocN = { s = "phakade" ; empty = [] } ; + phezulu_LocN = { s = "phezulu" ; empty = [] } ; + + lapha_Loc = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = ap_cop_pref vform a RelType ; -- u- + cop_base = "lapha" + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => pcp ++ cop_base + } ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- / onge- + pcp = ap_cop_pref vform a RelType ; -- [] / zoba + cop_base = "lapha" -- lapha + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => rcp ++ pcp ++ cop_base + } + } + } ; + + khona_Loc = { + s = \\c,a,p,t => kho_cop (VFIndic c p t) a ; + } ; + + kakhulu_Adv = { s = "kakhulu" ; reqLocS = False } ; + + AdvQS adv qs = { s = adv.s ++ qs.s ; qword_pre = [] ; qword_post = [] } ; + + -- Deverb15 v = + -- let + -- agr = Third C15 Sg ; + -- in + -- { + -- s = \\_ => table { + -- Full => case v.r of { + -- RC => "uku"++BIND++(v.s!R_a) ; + -- (RA|RE) => "ukw"++BIND++(v.s!R_a) ; + -- _ => "uk"++BIND++(v.s!R_a) + -- } ; + -- Reduced => case v.r of { + -- RC => "ku"++BIND++(v.s!R_a) ; + -- (RA|RE) => "kw"++BIND++(v.s!R_a) ; + -- _ => "k"++BIND++(v.s!R_a) + -- } ; + -- Poss => case v.r of { + -- RC => "ku"++BIND++(v.s!R_a) ; + -- (RA|RE) => "kw"++BIND++(v.s!R_a) ; + -- _ => "k"++BIND++(v.s!R_a) + -- } ; + -- Loc => case v.r of { + -- RC => "eku"++BIND++(v.s!R_e)++BIND++"ni" ; + -- (RA|RE) => "ekw"++BIND++(v.s!R_e)++BIND++"ni" ; + -- _ => "ek"++BIND++(v.s!R_e)++BIND++"ni" + -- } + -- } ; + -- c = C15 ; + -- empty = [] + -- } ; + + oper + -- qcl_np_iadv : NP -> IAdv -> {s : Polarity => ZTense => DMood => Str ; potqcl : Polarity => DMood => Str ; qword_pre : Str ; qword_post : Str } = \np,iadv -> { + -- s = \\p,t,dm => + -- let + -- subj = case np.proDrop of { + -- True => np.empty ; + -- False => np.s ! Full ++ np.desc + -- } ; + -- aux_tense = case t of { + -- Absolute bt => bt ; + -- Relative b1 b2 => b1 + -- } ; + -- main_tense = case t of { + -- Absolute bt => bt ; + -- Relative b1 b2 => b2 + -- } ; + -- vform_aux = VFIndic dm p aux_tense Null ; + -- vform_main = VFIndic dm p main_tense Null ; + -- aux = case t of { + -- Absolute bt => [] ; + -- Relative _ _ => relSubjConc aux_tense np.agr -- (subjConcLookup!np.agr!SC) ++BIND++ "b" ++BIND++ (vtermSuff vform_aux False) + -- } ; + -- in + -- subj ++ + -- aux ++ + -- (subjConc vform_main np.agr False) ++ + -- iadv.s ; + -- potqcl = \\p,dm => + -- let + -- subj = case np.proDrop of { + -- True => np.empty ; + -- False => np.s ! Full ++ np.desc + -- } ; + -- vform_main = VFPot dm p Null ; + -- in + -- subj ++ + -- -- aux ++ + -- (subjConc vform_main np.agr False) ++ + -- (potPref vform_main) ++ + -- iadv.s ; + -- qword_pre = [] ; + -- qword_post = [] + -- } ; + + cl_with_np_predicate : NP -> { s : Polarity => BasicTense => Str } = \np -> { + -- advs = [] ; + s = \\p,t => + let + vform_main = VFIndic MainCl p t ; + --pcp = pre_cop_pref vform_main np.agr ; + cp = id_cop_pref np.agr ; + cb = np.s!NFull + in + cp ++BIND++ + cb + } ; + +} diff --git a/src/zulu/GrammarZul.gf b/src/zulu/GrammarZul.gf new file mode 100755 index 000000000..4acef21b1 --- /dev/null +++ b/src/zulu/GrammarZul.gf @@ -0,0 +1,22 @@ +--# -path=.:../abstract:../common:prelude + +concrete GrammarZul of Grammar = + NounZul, + VerbZul, + AdjectiveZul, + AdverbZul, + NumeralZul, + SentenceZul, + QuestionZul, + RelativeZul, + ConjunctionZul, + PhraseZul, + TextX - [Temp,Adv,IAdv], + StructuralZul, + IdiomZul, + TenseX [PPos,PNeg] -- - [Temp,Adv] + ** open ResZul, Prelude in { + +flags startcat = Phr ; unlexer = text ; lexer = text ; + +} ; diff --git a/src/zulu/IdiomZul.gf b/src/zulu/IdiomZul.gf new file mode 100755 index 000000000..1f064454d --- /dev/null +++ b/src/zulu/IdiomZul.gf @@ -0,0 +1,62 @@ +concrete IdiomZul of Idiom = CatZul ** open Prelude, ResZul,ParamX in { + + flags optimize=all_subs ; + + -- lin + -- ImpersCl vp = mkClause "it" (agrP3 Sg) vp ; + -- GenericCl vp = mkClause "one" (agrP3 Sg) vp ; + -- + -- CleftNP np rs = mkClause "it" (agrP3 Sg) + -- (insertObj (\\_ => rs.s ! np.a) + -- (insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ; + -- + -- CleftAdv ad s = mkClause "it" (agrP3 Sg) + -- (insertObj (\\_ => conjThat ++ s.s) + -- (insertObj (\\_ => ad.s) (predAux auxBe))) ; + -- + -- ExistNP np = + -- mkClause "there" (agrP3 (fromAgr np.a).n) + -- (insertObj (\\_ => np.s ! NPAcc) (predAux auxBe)) ; + -- + -- ExistIP ip = + -- mkQuestion (ss (ip.s ! npNom)) + -- (mkClause "there" (agrP3 ip.n) (predAux auxBe)) ; + -- + -- ExistNPAdv np adv = + -- mkClause "there" (agrP3 (fromAgr np.a).n) + -- (insertObj (\\_ => np.s ! NPAcc ++ adv.s) (predAux auxBe)) ; + -- + -- ExistIPAdv ip adv = + -- mkQuestion (ss (ip.s ! npNom)) + -- (mkClause "there" (agrP3 ip.n) (insertObj (\\_ => adv.s) (predAux auxBe))) ; + + -- ProgrVP vp = { + -- s = vp.s ; + -- perfSuff = vp.perfSuff ; + -- oc = vp.oc ; + -- comp = vp.comp ; + -- hasComp = vp.hasComp ; + -- r = vp.r ; + -- syl = vp.syl ; + -- asp = Prog ; + -- asp_pref = \\vform => vp.asp_pref!vform ++ (progPref vform) ; + -- vptype = vp.vptype ; + -- comp_agr = vp.comp_agr ; + -- ap_comp = vp.ap_comp ; + -- ap_bool = vp.ap_bool ; + -- aux_root = vp.aux_root ; + -- hasAux = vp.hasAux + -- } ; + + -- ImpPl1 vp = {s = "let's" ++ infVP VVAux vp False Simul CPos (AgP1 Pl)} ; + -- + -- ImpP3 np vp = {s = "let" ++ np.s ! NPAcc ++ infVP VVAux vp False Simul CPos np.a} ; + -- + -- SelfAdvVP vp = insertObj reflPron vp ; + -- SelfAdVVP vp = insertAdVAgr reflPron vp ; + -- SelfNP np = { + -- s = \\c => np.s ! c ++ reflPron ! np.a ; + -- a = np.a + -- } ; + +} diff --git a/src/zulu/LangZul.gf b/src/zulu/LangZul.gf new file mode 100755 index 000000000..3ff15f495 --- /dev/null +++ b/src/zulu/LangZul.gf @@ -0,0 +1,13 @@ +--# -path=.:../abstract:../common:../api:../prelude + +concrete LangZul of Lang = + GrammarZul, + LexiconZul + -- ,ConstructionZul + -- ,DocumentationZul --# notpresent + -- ,MarkupZul - [stringMark] + ** { + + + +} ; diff --git a/src/zulu/LexiconZul.gf b/src/zulu/LexiconZul.gf new file mode 100755 index 000000000..106e3bcee --- /dev/null +++ b/src/zulu/LexiconZul.gf @@ -0,0 +1,379 @@ +--# -path=.:prelude + +concrete LexiconZul of Lexicon = CatZul ** + open ParadigmsZul, Prelude in { + +flags + optimize=values ; + +-- lin +-- airplane_N = regN "airplane" ; +-- alas_Interj = ss "alas" ; +-- answer_V2S = mkV2S (mkV "answer" "answered") toP ; +-- apartment_N = regN "apartment" ; +-- apple_N = regN "apple" ; +-- art_N = regN "art" ; +-- ask_V2Q = mkV2Q (regV "ask") noPrep ; +-- baby_N = regN "baby" ; +-- bad_A = mkADeg "bad" "worse" "worst" "badly" ; +-- bank_N = regN "bank" ; +-- beautiful_A = compoundADeg (regA "beautiful") ; +-- become_VA = mkVA (irregV "become" "became" "become") ; +-- beer_N = regN "beer" ; +-- beg_V2V = mkV2V (regDuplV "beg") noPrep toP ; +-- -- prevent_V2V = ingV2V (mkV "prevent") noPrep (mkPrep "from") ; +-- -- make_V2V = mkV2V make_V noPrep noPrep ; +-- big_A = duplADeg "big" ; +-- bike_N = regN "bike" ; +-- bird_N = regN "bird" ; +-- black_A = regADeg "black" ; +-- blue_A = regADeg "blue" ; +-- boat_N = regN "boat" ; +-- book_N = regN "book" ; +-- boot_N = regN "boot" ; +-- boss_N = mkN human (regN "boss") ; +-- boy_N = mkN masculine (regN "boy") ; +-- bread_N = regN "bread" ; +-- break_V2 = dirV2 (irregV "break" "broke" "broken") ; +-- broad_A = regADeg "broad" ; +-- brother_N2 = mkN2 (mkN masculine (mkN "brother")) (mkPrep "of") ; +-- brown_A = regADeg "brown" ; +-- butter_N = regN "butter" ; +-- buy_V2 = dirV2 (irregV "buy" "bought" "bought") ; +-- camera_N = regN "camera" ; +-- cap_N = regN "cap" ; +-- car_N = regN "car" ; +-- carpet_N = regN "carpet" ; +-- cat_N = regN "cat" ; +-- ceiling_N = regN "ceiling" ; +-- chair_N = regN "chair" ; +-- cheese_N = regN "cheese" ; +-- child_N = mk2N "child" "children" ; +-- church_N = regN "church" ; +-- city_N = regN "city" ; +-- clean_A = regADeg "clean" ; +-- clever_A = mkA "clever" "cleverer" ; +-- close_V2 = dirV2 (regV "close") ; +-- coat_N = regN "coat" ; +-- cold_A = regADeg "cold" ; +-- come_V = (irregV "come" "came" "come") ; +-- computer_N = regN "computer" ; +-- country_N = regN "country" ; +-- cousin_N = mkN human (regN "cousin") ; +-- cow_N = regN "cow" ; +-- die_V = (regV "die") ; +-- dirty_A = regADeg "dirty" ; +-- distance_N3 = mkN3 (regN "distance") fromP toP ; +-- doctor_N = mkN human (regN "doctor") ; +-- dog_N = regN "dog" ; +-- door_N = regN "door" ; +-- drink_V2 = dirV2 (irregV "drink" "drank" "drunk") ; +-- easy_A2V = mkA2V (regA "easy") forP ; +-- eat_V2 = dirV2 (irregV "eat" "ate" "eaten") ; +-- empty_A = regADeg "empty" ; +-- enemy_N = regN "enemy" ; +-- factory_N = regN "factory" ; +-- father_N2 = mkN2 (mkN masculine (mkN "father")) (mkPrep "of") ; +-- fear_VS = mkVS (regV "fear") ; +-- find_V2 = dirV2 (irregV "find" "found" "found") ; +-- fish_N = mk2N "fish" "fish" ; +-- floor_N = regN "floor" ; +-- forget_V2 = dirV2 (irregDuplV "forget" "forgot" "forgotten") ; +-- fridge_N = regN "fridge" ; +-- friend_N = mkN human (regN "friend") ; +-- fruit_N = mkN "fruit" "fruit" ; --- was: fruit, fruits before 7/12/2012 +-- fun_AV = mkAV (regA "fun") ; +-- garden_N = regN "garden" ; +-- girl_N = mkN feminine (regN "girl") ; +-- glove_N = regN "glove" ; +-- gold_N = regN "gold" ; +-- good_A = mkADeg "good" "better" "best" "well" ; +-- go_V = mk5V "go" "goes" "went" "gone" "going" ; +-- green_A = regADeg "green" ; +-- harbour_N = regN "harbour" ; +-- hate_V2 = dirV2 (regV "hate") ; +-- hat_N = regN "hat" ; +-- hear_V2 = dirV2 (irregV "hear" "heard" "heard") ; +-- hill_N = regN "hill" ; +-- hope_VS = mkVS (regV "hope") ; +-- horse_N = regN "horse" ; +-- hot_A = duplADeg "hot" ; +-- house_N = regN "house" ; +-- important_A = compoundADeg (regA "important") ; +-- industry_N = regN "industry" ; +-- iron_N = regN "iron" ; +-- king_N = mkN masculine (regN "king") ; +-- know_V2 = dirV2 (irregV "know" "knew" "known") ; +-- know_VQ = mkVQ (irregV "know" "knew" "known") ; +-- know_VS = mkVS (irregV "know" "knew" "known") ; +-- lake_N = regN "lake" ; +-- lamp_N = regN "lamp" ; +-- learn_V2 = dirV2 (regV "learn") ; +-- leather_N = regN "leather" ; +-- leave_V2 = dirV2 (irregV "leave" "left" "left") ; +-- like_V2 = dirV2 (regV "like") ; +-- listen_V2 = prepV2 (mkV "listen" "listened") toP ; +-- live_V = (regV "live") ; +-- long_A = regADeg "long" ; +-- lose_V2 = dirV2 (irregV "lose" "lost" "lost") ; +-- love_N = regN "love" ; +-- love_V2 = dirV2 (regV "love") ; +-- man_N = mkN masculine (mk2N "man" "men") ; +-- married_A2 = mkA2 (regA "married") toP ; +-- meat_N = regN "meat" ; +-- milk_N = regN "milk" ; +-- moon_N = regN "moon" ; +-- mother_N2 = mkN2 (mkN feminine (mkN "mother")) (mkPrep "of") ; +-- mountain_N = regN "mountain" ; +-- music_N = regN "music" ; +-- narrow_A = regADeg "narrow" ; +-- new_A = regADeg "new" ; +-- newspaper_N = regN "newspaper" ; +-- oil_N = regN "oil" ; +-- old_A = regADeg "old" ; +-- open_V2 = dirV2 (mkV "open" "opens" "opened" "opened" "opening") ; +-- paint_V2A = mkV2A (regV "paint") ; +-- paper_N = regN "paper" ; +-- paris_PN = mkPN (mkN nonhuman (mkN "Paris")) ; +-- peace_N = regN "peace" ; +-- pen_N = regN "pen" ; +-- planet_N = regN "planet" ; +-- plastic_N = regN "plastic" ; +-- play_V2 = dirV2 (regV "play") ; +-- policeman_N = mkN masculine (mkN "policeman" "policemen") ; +-- priest_N = mkN human (regN "priest") ; +-- probable_AS = mkAS (regA "probable") ; +-- queen_N = mkN feminine (regN "queen") ; +-- radio_N = regN "radio" ; +-- rain_V0 = mkV0 (regV "rain") ; +-- read_V2 = dirV2 (irregV "read" "read" "read") ; +-- red_A = duplADeg "red" ; +-- religion_N = regN "religion" ; +-- restaurant_N = regN "restaurant" ; +-- river_N = regN "river" ; +-- rock_N = regN "rock" ; +-- roof_N = regN "roof" ; +-- rubber_N = regN "rubber" ; +-- run_V = (irregDuplV "run" "ran" "run") ; +-- say_VS = mkVS (irregV "say" "said" "said") ; +-- school_N = regN "school" ; +-- science_N = regN "science" ; +-- sea_N = regN "sea" ; +-- seek_V2 = dirV2 (irregV "seek" "sought" "sought") ; +-- see_V2 = dirV2 (irregV "see" "saw" "seen") ; +-- sell_V3 = dirV3 (irregV "sell" "sold" "sold") toP ; +-- send_V3 = dirV3 (irregV "send" "sent" "sent") toP ; +-- sheep_N = mk2N "sheep" "sheep" ; +-- ship_N = regN "ship" ; +-- shirt_N = regN "shirt" ; +-- shoe_N = regN "shoe" ; +-- shop_N = regN "shop" ; +-- short_A = regADeg "short" ; +-- silver_N = regN "silver" ; +-- sister_N = mkN feminine (mkN "sister") ; +-- sleep_V = (irregV "sleep" "slept" "slept") ; +-- small_A = regADeg "small" ; +-- snake_N = regN "snake" ; +-- sock_N = regN "sock" ; +-- speak_V2 = dirV2 (irregV "speak" "spoke" "spoken") ; +-- star_N = regN "star" ; +-- steel_N = regN "steel" ; +-- stone_N = regN "stone" ; +-- stove_N = regN "stove" ; +-- student_N = mkN human (regN "student") ; +-- stupid_A = mkA "stupid" ; +-- sun_N = regN "sun" ; +-- switch8off_V2 = dirV2 (partV (regV "switch") "off") ; +-- switch8on_V2 = dirV2 (partV (regV "switch") "on") ; +-- table_N = regN "table" ; +-- talk_V3 = mkV3 (regV "talk") toP aboutP ; +-- teacher_N = mkN human (regN "teacher") ; +-- teach_V2 = dirV2 (irregV "teach" "taught" "taught") ; +-- television_N = regN "television" ; +-- thick_A = regADeg "thick" ; +-- thin_A = duplADeg "thin" ; +-- train_N = regN "train" ; +-- travel_V = (regDuplV "travel") ; +-- tree_N = regN "tree" ; +-- ---- trousers_N = regN "trousers" ; +-- ugly_A = mkA "ugly" ; +-- understand_V2 = dirV2 (irregV "understand" "understood" "understood") ; +-- university_N = regN "university" ; +-- village_N = regN "village" ; +-- wait_V2 = prepV2 (regV "wait") forP ; +-- walk_V = (regV "walk") ; +-- warm_A = regADeg "warm" ; +-- war_N = regN "war" ; +-- watch_V2 = dirV2 (regV "watch") ; +-- water_N = regN "water" ; +-- white_A = mkA "white" ; +-- window_N = regN "window" ; +-- wine_N = regN "wine" ; +-- win_V2 = dirV2 (irregDuplV "win" "won" "won") ; +-- woman_N = mkN feminine (mk2N "woman" "women") ; +-- wonder_VQ = mkVQ (mkV "wonder" "wondered") ; +-- wood_N = regN "wood" ; +-- write_V2 = dirV2 (irregV "write" "wrote" "written") ; +-- yellow_A = mkA "yellow" ; +-- young_A = regADeg "young" ; +-- +-- do_V2 = dirV2 (mk5V "do" "does" "did" "done" "doing") ; +-- now_Adv = mkAdv "now" ; +-- already_Adv = mkAdv "already" ; +-- song_N = regN "song" ; +-- add_V3 = dirV3 (regV "add") toP ; +-- number_N = regN "number" ; +-- put_V2 = prepV2 (irregDuplV "put" "put" "put") noPrep ; +-- stop_V = regDuplV "stop" ; +-- jump_V = regV "jump" ; +-- +-- left_Ord = mkOrd "left" ; +-- right_Ord = mkOrd "right" ; +-- far_Adv = mkAdv "far" ; +-- correct_A = (regA "correct") ; +-- dry_A = regA "dry" ; +-- dull_A = regA "dull" ; +-- full_A = regA "full" ; +-- heavy_A = regA "heavy" ; +-- near_A = regA "near" ; +-- rotten_A = (regA "rotten") ; +-- round_A = regA "round" ; +-- sharp_A = regA "sharp" ; +-- smooth_A = regA "smooth" ; +-- straight_A = regA "straight" ; +-- wet_A = regA "wet" ; ---- +-- wide_A = regA "wide" ; +-- animal_N = regN "animal" ; +-- ashes_N = regN "ash" ; -- FIXME: plural only? +-- back_N = regN "back" ; +-- bark_N = regN "bark" ; +-- belly_N = regN "belly" ; +-- blood_N = regN "blood" ; +-- bone_N = regN "bone" ; +-- breast_N = regN "breast" ; +-- cloud_N = regN "cloud" ; +-- day_N = regN "day" ; +-- dust_N = regN "dust" ; +-- ear_N = regN "ear" ; +-- earth_N = regN "earth" ; +-- egg_N = regN "egg" ; +-- eye_N = regN "eye" ; +-- fat_N = regN "fat" ; +-- feather_N = regN "feather" ; +-- fingernail_N = regN "fingernail" ; +-- fire_N = regN "fire" ; +-- flower_N = regN "flower" ; +-- fog_N = regN "fog" ; +-- foot_N = mk2N "foot" "feet" ; +-- forest_N = regN "forest" ; +-- grass_N = regN "grass" ; +-- guts_N = regN "gut" ; -- FIXME: no singular +-- hair_N = regN "hair" ; +-- hand_N = regN "hand" ; +-- head_N = regN "head" ; +-- heart_N = regN "heart" ; +-- horn_N = regN "horn" ; +-- husband_N = mkN masculine (regN "husband") ; +-- ice_N = regN "ice" ; +-- knee_N = regN "knee" ; +-- leaf_N = mk2N "leaf" "leaves" ; +-- leg_N = regN "leg" ; +-- liver_N = regN "liver" ; +-- louse_N = mk2N "louse" "lice" ; +-- mouth_N = regN "mouth" ; +-- name_N = regN "name" ; +-- neck_N = regN "neck" ; +-- night_N = regN "night" ; +-- nose_N = regN "nose" ; +-- person_N = mkN human (regN "person") ; +-- rain_N = regN "rain" ; +-- road_N = regN "road" ; +-- root_N = regN "root" ; +-- rope_N = regN "rope" ; +-- salt_N = regN "salt" ; +-- sand_N = regN "sand" ; +-- seed_N = regN "seed" ; +-- skin_N = regN "skin" ; +-- sky_N = regN "sky" ; +-- smoke_N = regN "smoke" ; +-- snow_N = regN "snow" ; +-- stick_N = regN "stick" ; +-- tail_N = regN "tail" ; +-- tongue_N = regN "tongue" ; +-- tooth_N = mk2N "tooth" "teeth" ; +-- wife_N = mkN feminine (mk2N "wife" "wives") ; +-- wind_N = regN "wind" ; +-- wing_N = regN "wing" ; +-- worm_N = regN "worm" ; +-- year_N = regN "year" ; +-- blow_V = IrregEng.blow_V ; +-- breathe_V = dirV2 (regV "breathe") ; +-- burn_V = IrregEng.burn_V ; +-- dig_V = IrregEng.dig_V ; +-- fall_V = IrregEng.fall_V ; +-- float_V = regV "float" ; +-- flow_V = regV "flow" ; +-- fly_V = IrregEng.fly_V ; +-- freeze_V = IrregEng.freeze_V ; +-- give_V3 = mkV3 give_V noPrep noPrep ; +-- laugh_V = regV "laugh" ; +-- lie_V = IrregEng.lie_V ; +-- play_V = regV "play" ; +-- sew_V = IrregEng.sew_V ; +-- sing_V = IrregEng.sing_V ; +-- sit_V = IrregEng.sit_V ; +-- smell_V = regV "smell" ; +-- spit_V = IrregEng.spit_V ; +-- stand_V = IrregEng.stand_V ; +-- swell_V = IrregEng.swell_V ; +-- swim_V = IrregEng.swim_V ; +-- think_V = IrregEng.think_V ; +-- turn_V = regV "turn" ; +-- vomit_V = mkV "vomit" "vomited" ; +-- +-- bite_V2 = dirV2 IrregEng.bite_V ; +-- count_V2 = dirV2 (regV "count") ; +-- cut_V2 = dirV2 IrregEng.cut_V ; +-- fear_V2 = dirV2 (regV "fear") ; +-- fight_V2 = dirV2 fight_V ; +-- hit_V2 = dirV2 hit_V ; +-- hold_V2 = dirV2 hold_V ; +-- hunt_V2 = dirV2 (regV "hunt") ; +-- kill_V2 = dirV2 (regV "kill") ; +-- pull_V2 = dirV2 (regV "pull") ; +-- push_V2 = dirV2 (regV "push") ; +-- rub_V2 = dirV2 (regDuplV "rub") ; +-- scratch_V2 = dirV2 (regV "scratch") ; +-- split_V2 = dirV2 split_V ; +-- squeeze_V2 = dirV2 (regV "squeeze") ; +-- stab_V2 = dirV2 (regDuplV "stab") ; +-- suck_V2 = dirV2 (regV "suck") ; +-- throw_V2 = dirV2 throw_V ; +-- tie_V2 = dirV2 (regV "tie") ; +-- wash_V2 = dirV2 (regV "wash") ; +-- wipe_V2 = dirV2 (regV "wipe") ; +-- +-- -- other_A = regA "other" ; +-- +-- grammar_N = regN "grammar" ; +-- language_N = regN "language" ; +-- rule_N = regN "rule" ; +-- +-- -- added 4/6/2007 +-- john_PN = mkPN (mkN masculine (mkN "John")) ; +-- question_N = regN "question" ; +-- ready_A = regA "ready" ; +-- reason_N = regN "reason" ; +-- today_Adv = mkAdv "today" ; +-- uncertain_A = regA "uncertain" ; +-- +-- oper +-- aboutP = mkPrep "about" ; +-- atP = mkPrep "at" ; +-- forP = mkPrep "for" ; +-- fromP = mkPrep "from" ; +-- inP = mkPrep "in" ; +-- onP = mkPrep "on" ; +-- toP = mkPrep "to" ; + +} ; diff --git a/src/zulu/MarkupZul.gf b/src/zulu/MarkupZul.gf new file mode 100755 index 000000000..40b0884e0 --- /dev/null +++ b/src/zulu/MarkupZul.gf @@ -0,0 +1,15 @@ +--# -path=.:../abstract:../common + +concrete MarkupZul of Markup = CatZul, MarkHTMLX ** { + +lin + MarkupCN m cn = {s = \\n,c => appMark m (cn.s ! n ! c) ; g = cn.g} ; + MarkupNP m np = {s = \\c => appMark m (np.s ! c) ; a = np.a} ; + MarkupAP m ap = {s = \\a => appMark m (ap.s ! a) ; isPre = ap.isPre} ; + MarkupAdv m adv = {s = appMark m adv.s} ; + MarkupS m s = {s = appMark m s.s} ; + MarkupUtt m utt = {s = appMark m utt.s} ; + MarkupPhr m phr = {s = appMark m phr.s} ; + MarkupText m txt = {s = appMark m txt.s} ; + +} diff --git a/src/zulu/NounExtZul.gf b/src/zulu/NounExtZul.gf new file mode 100644 index 000000000..46b35d675 --- /dev/null +++ b/src/zulu/NounExtZul.gf @@ -0,0 +1,218 @@ +concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, ParamX in { + + lin + + -- Quant is used for demonstratives, and QuantStem for all/only + + PronPostdetNP pron postdet = { + empty = pron.empty ; + s = \\nform => pron.s!nform ++ postdet.s!pron.agr ; + agr = pron.agr ; + i = RC ; + proDrop = pron.proDrop ; + isPron = True ; + heavy = True + } ; + + QuantPostdet q = { + s = \\a => q.s!a + } ; + + DemPostdet q = { + s = \\a => dem_pron!q.dist!a ++ q.s + } ; + + QuantDemPostdet q d = { + s = \\a => q.s!a ++ dem_pron!d.dist!a ++ d.s + } ; + + DemQuantPostdet d q = { + s = \\a => dem_pron!d.dist!a ++ q.s!a ++ d.s + } ; + + DetNum n = n ; -- ** { spec = Spec } ; + + -- NonspecDet n = n ** { spec = Nonspec } ; + + PostdetCN cn postdet det = let + agr = Third cn.c det.n + in { + empty = cn.empty ; + -- s = \\nform => cn.s!det.n!nform ++ cn.mod!det.n ++ postdet.s!agr ; + s = \\nform => cn.s!det.n!nform ++ postdet.s!agr ++ det.s ; + agr = agr ; + i = nominit!agr ; + proDrop = False ; + isPron = False ; + heavy = True + } ; + + RelN rs n = { + empty = n.empty ; + s = \\num,nform => rs.s!(Third n.c num) ++ n.s!num!nform ; + -- mod = \\_ => [] ; + c = n.c ; + emph = False + } ; + + -- TODO : check mod + ApposCN cn n = { + s = \\num,nform => cn.s!num!nform ++ n.s!num!nform ; + -- mod = \\num => n.s!num!Full ++ cn.mod!num ; + c = cn.c ; -- takes agr of cn + empty = cn.empty ; + emph = cn.emph + } ; + + -- TODO : check mod + ApposN cn n = { + s = \\num,nform => cn.s!num!nform ++ n.s!num!nform ; + -- mod = \\num => n.s!num!Full ++ cn.mod!num ; + c = n.c ; -- takes agr of n + empty = cn.empty ; + emph = cn.emph + } ; + + PredetN predet n = { + s = case predet.hasDem of { + True => \\num => table { + NFull | NReduced | NPoss => predet.s!(Third n.c num) ++ n.s!num!NReduced ; + NLoc => "ku" ++BIND++ predet.s!(Third n.c num) ++ n.s!num!NReduced + } ; + False => \\num,nform => predet.s!(Third n.c num) ++ n.s!num!nform + } ; + -- mod = \\_ => [] ; + c = n.c ; + empty = n.empty ; + emph = False + }; + + QuantPredet q = { + s = \\a => q.s!a ; + hasDem = False + } ; + + DemPredet q = { + s = \\a => dem_pron!q.dist!a ++ q.s ; + hasDem = True + } ; + + QuantDemPredet q d = { + s = \\a => q.s!a ++ dem_pron!d.dist!a ++ d.s ; + hasDem = True + } ; + + EmphCN cn = { + s = \\num => table { + NFull => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.s!num!NFull ; + NReduced => pron_stem!(Third cn.c num) ++ cn.s!num!NFull ; + NPoss => poss_pron_stem!(Third cn.c num) ++ cn.s!num!NFull ; + NLoc => "ku" ++BIND++ pron_stem!(Third cn.c num) ++ cn.s!num!NFull + } ; + -- mod = cn.mod ; + c = cn.c ; + empty = cn.empty ; + emph = True + } ; + + ContrastCN cn = { + s = \\num,nform => cn.s!num!nform ++ pron_stem!(Third cn.c num) ++BIND++ "na" ; + -- mod = \\num => pron_stem!(Third cn.c num) ++BIND++ "na" ++ cn.mod!num ; + c = cn.c ; + empty = cn.empty ; + emph = cn.emph ; + emph = cn.emph + } ; + + UsePNPl pn = let + agr = Third pn.c Pl + in { + empty = pn.empty ; + s = pn.s!Pl ; + agr = agr ; + i = nominit!agr ; + proDrop = False ; + isPron = False ; + heavy = True + } ; + + Deverb15 v = + let + agr = Third C15 Sg ; + in + { + s = \\_ => table { + NFull => case v.r of { + RC => "uku"++BIND++(v.s!R_a) ; + (RA|RE) => "ukw"++BIND++(v.s!R_a) ; + _ => "uk"++BIND++(v.s!R_a) + } ; + NReduced => case v.r of { + RC => "ku"++BIND++(v.s!R_a) ; + (RA|RE) => "kw"++BIND++(v.s!R_a) ; + _ => "k"++BIND++(v.s!R_a) + } ; + NPoss => case v.r of { + RC => "ku"++BIND++(v.s!R_a) ; + (RA|RE) => "kw"++BIND++(v.s!R_a) ; + _ => "k"++BIND++(v.s!R_a) + } ; + NLoc => case v.r of { + RC => "eku"++BIND++(v.s!R_e)++BIND++"ni" ; + (RA|RE) => "ekw"++BIND++(v.s!R_e)++BIND++"ni" ; + _ => "ek"++BIND++(v.s!R_e)++BIND++"ni" + } + } ; + c = C15 ; + empty = [] + } ; + + LocNP np = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba + cop_base = loc_n_cop_base np vform + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => pcp ++ cop_base + } ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- / onge- + pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba + cop_base = loc_n_cop_base np vform + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => rcp ++ pcp ++ cop_base + } + } ; + } ; + + LocNLoc locn = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba + cop_base = locn.s + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => pcp ++ cop_base + } ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- / onge- + pcp = ap_cop_pref vform a RelType ; -- u- / uzoba / akazukuba + cop_base = locn.s + in + case vform of { + VFIndic _ Neg PresTense => (kho_cop vform a) ++ cop_base; + VFIndic _ _ _ => rcp ++ pcp ++ cop_base + } + } ; + } ; + +} diff --git a/src/zulu/NounZul.gf b/src/zulu/NounZul.gf new file mode 100755 index 000000000..ba8c6bf61 --- /dev/null +++ b/src/zulu/NounZul.gf @@ -0,0 +1,102 @@ +concrete NounZul of Noun = CatZul ** open ResZul, Prelude, ParamX in { + + flags optimize=all_subs ; + + lin + -- TODO: check refactor + DetCN det cn = let + agr = Third cn.c det.n ; + in { + empty = cn.empty ; + s = \\nform => det.s ++ cn.s ! det.n ! nform ; + agr = agr ; + i = case cn.emph of { + False => nominit!agr ; + True => RC + } ; + proDrop = False ; + isPron = False ; + heavy = True + -- reqLocS = True ; -- TODO: change if a Det is ever added that has a non-empty string + -- qdef = det.qdef ; + } ; + + -- TODO: check refactor + UsePN pn = let + agr = Third pn.c Sg ; + in { + empty = pn.empty ; + s = pn.s!Sg ; + agr = agr ; + i = nominit!agr ; + proDrop = False ; + isPron = False ; + heavy = True + } ; + + -- TODO: check refactor + UsePron pron = { + empty = pron.empty ; + -- s = case pron.proDrop of { + -- False => pron.s ; + -- True => table { + -- NFull => pron.empty ; + -- NReduced => pron.s!NReduced ; + -- NPoss => pron.s!NPoss ; + -- NLoc => pron.s!NLoc + -- } + -- } ; + s = pron.s ; + agr = pron.agr ; + i = RC ; + proDrop = pron.proDrop ; + isPron = True ; + heavy = case pron.proDrop of { + True => False ; + False => True + } + } ; + + -- PredetNP, PPartNP, AdvNP, ExtAdvNP : not implemented + + -- TODO: refactor + RelNP np rs = { + empty = np.empty ; + s = \\nform => np.s!nform ++ rs.s!np.agr ; + agr = np.agr ; + i = np.i ; + proDrop = False ; -- probably right? + isPron = np.isPron ; + heavy = True + } ; + + -- DetNP, DetQuant, DetQuantOrd : not implemented + + NumSg = { s = [] ; n = Sg } ; + NumPl = { s = [] ; n = Pl } ; + + -- NumCard, NumNumeral, AdNum, OrdNumeral, OrdSuperl, OrdNumeralSuperl : not implemented + -- NumDigits, OrdDigits : not yet implemented + + -- DefArt, IndefArt, MassNP, PossPron : not implemented + + -- TODO: check refactor (no change?) + UseN n = n ** { emph = False } ; + + -- ComplN2, ComplN3, UseN2, Use2N3, Use3N3 : not implemented + + -- AdjCN, RelCN, AdvCN, SentCN, ApposCN : not implemented + + -- flashing of the lights / ukukhanya kwezibani + -- TODO: check refactor (no change?) + PossNP cn np = { + empty = cn.empty ; + s = \\num,nform => cn.s!num!nform ++ poss_concord!cn.c!num!np.i ++BIND++ np.s!NPoss; + -- mod = \\num => cn.mod!num ++ poss_concord!cn.c!num!np.i ++BIND++ (poss_NP np) ; + c = cn.c ; + emph = cn.emph + } ; + + -- PartNP, CountNP, AdjDAP, DetDAP : not implemented + +} diff --git a/src/zulu/NumeralZul.gf b/src/zulu/NumeralZul.gf new file mode 100755 index 000000000..1f4348753 --- /dev/null +++ b/src/zulu/NumeralZul.gf @@ -0,0 +1,95 @@ +concrete NumeralZul of Numeral = CatZul [Numeral,Digits] ** open Prelude, ResZul in { + +-- lincat +-- Digit = {s : DForm => CardOrd => Case => Str} ; +-- Sub10 = {s : DForm => CardOrd => Case => Str ; n : Number} ; +-- Sub100 = {s : CardOrd => Case => Str ; n : Number} ; +-- Sub1000 = {s : Bool => CardOrd => Case => Str ; n : Number} ; +-- Sub1000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ; +-- +-- lin num x = x ; +-- lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in +-- {s = \\f,o => case of { +-- => regGenitiveS "twelfth" ; +-- _ => two.s ! f ! o +-- } +-- } ; +-- +-- lin n3 = mkNum "three" "thirteen" "thirty" "third" ; +-- lin n4 = mkNum "four" "fourteen" "forty" "fourth" ; +-- lin n5 = mkNum "five" "fifteen" "fifty" "fifth" ; +-- lin n6 = regNum "six" ; +-- lin n7 = regNum "seven" ; +-- lin n8 = mkNum "eight" "eighteen" "eighty" "eighth" ; +-- lin n9 = mkNum "nine" "nineteen" "ninety" "ninth" ; +-- +-- lin pot01 = mkNum "one" "eleven" "ten" "first" ** {n = Sg} ; +-- lin pot0 d = d ** {n = Pl} ; +-- lin pot110 = regCardOrd "ten" ** {n = Pl} ; +-- lin pot111 = regCardOrd "eleven" ** {n = Pl} ; +-- lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ; +-- lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ; +-- lin pot1 d = {s = d.s ! ten} ** {n = Pl} ; +-- lin pot1plus d e = { +-- s = \\o,c => d.s ! ten ! NCard ! Nom ++ BIND ++ "-" ++ BIND ++ e.s ! unit ! o ! c ; n = Pl} ; +-- lin pot1as2 n = {s = \\_ => n.s; n=n.n} ; +-- lin pot2 d = {s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ mkCard o "hundred" ! c} ** {n = Pl} ; +-- lin pot2plus d e = { +-- s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ "hundred" ++ "and" ++ e.s ! o ! c ; n = Pl} ; +-- lin pot2as3 n = n ; +-- lin pot3 n = { +-- s = \\d,o,c => n.s ! d ! NCard ! Nom ++ mkCard o "thousand" ! c ; n = Pl} ; +-- lin pot3plus n m = { +-- s = \\d,o,c => n.s ! d ! NCard ! Nom ++ "thousand" ++ m.s ! False ! o ! c; n = Pl} ; +-- +-- -- numerals as sequences of digits +-- +-- lincat +-- Dig = TDigit ; +-- +-- lin +-- IDig d = d ** {tail = T1} ; +-- +-- IIDig d i = { +-- s = \\o,c => d.s ! NCard ! Nom ++ commaIf i.tail ++ i.s ! o ! c ; +-- n = Pl ; +-- tail = inc i.tail +-- } ; +-- +-- D_0 = mkDig "0" ; +-- D_1 = mk3Dig "1" "1st" Sg ; +-- D_2 = mk2Dig "2" "2nd" ; +-- D_3 = mk2Dig "3" "3rd" ; +-- D_4 = mkDig "4" ; +-- D_5 = mkDig "5" ; +-- D_6 = mkDig "6" ; +-- D_7 = mkDig "7" ; +-- D_8 = mkDig "8" ; +-- D_9 = mkDig "9" ; +-- +-- oper +-- commaIf : DTail -> Str = \t -> case t of { +-- T3 => BIND ++ "," ++ BIND ; +-- _ => BIND +-- } ; +-- +-- inc : DTail -> DTail = \t -> case t of { +-- T1 => T2 ; +-- T2 => T3 ; +-- T3 => T1 +-- } ; +-- +-- mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ; +-- mkDig : Str -> TDigit = \c -> mk2Dig c (c + "th") ; +-- +-- mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { +-- s = table {NCard => regGenitiveS c ; NOrd => regGenitiveS o} ; +-- n = n +-- } ; +-- +-- TDigit = { +-- n : Number ; +-- s : CardOrd => Case => Str +-- } ; + +} diff --git a/src/zulu/OverloadZul.gf b/src/zulu/OverloadZul.gf new file mode 100755 index 000000000..fcd3a22fa --- /dev/null +++ b/src/zulu/OverloadZul.gf @@ -0,0 +1 @@ +resource OverloadZul = Overload with (Grammar = GrammarZul) ; diff --git a/src/zulu/PChunkZul.gf b/src/zulu/PChunkZul.gf new file mode 100644 index 000000000..356c5c8e0 --- /dev/null +++ b/src/zulu/PChunkZul.gf @@ -0,0 +1,99 @@ +concrete PChunkZul of PChunk = CatZul, CatExtZul, SymbolZul [Symb] ** + open + Prelude, ResZul, ParamX, + (R = ResZul), (P = ParadigmsZul) in { + + lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + Chunk_AP, Chunk_Adv, Chunk_S, Chunk_RS, Chunk_QS, Chunk_CN, Chunk_NP, Chunk_N, Chunk_Symb = {s: Str} ; + + VC = V ; + + lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + ChunkPhr c = ss ("*" ++ c.s) | c ; + + Adv_Chunker c = c ; + S_Chunker c = c ; + RS_Chunker c = c ; + QS_Chunker c = c ; + CN_Chunker c = c ; + NP_Chunker c = c ; + N_Chunker c = c ; + Predet_Chunker c = c ; + Postdet_Chunker c = c ; + Symb_Chunker c = c ; + + Adv_Chunk a = { s = a.s } ; + S_Chunk s = { s = s.s } ; + RS_Chunk rs = { s = rs.s!agr_vars } ; + QS_Chunk s = { s = s.qword_pre ++ s.s ++ s.qword_post } ; + CN_Sg_Chunk cn = { + s = cn.s!Sg!NFull + } ; + CN_Pl_Chunk cn = { + s = cn.s!Pl!NFull + } ; + NP_Nom_Chunk np = { + s = variants { + np.s!NFull ; + np.s!NReduced + } + } ; + NP_Gen_Chunk np = { + s = poss_concord_agr!agr_vars!np.i ++BIND++ np.s!NPoss + } ; + Predet_Chunk predet = { + s = predet.s!agr_vars + } ; + Postdet_Chunk postdet = { + s = postdet.s!agr_vars + } ; + + -- for unknown words that are not names + Symb_Chunk symb = { s = symb.s } ; + + fullstop_Chunk = sbSS "." ; + exclmark_Chunk = sbSS "!" ; + questmark_Chunk = sbSS "?" ; + comma_Chunk = sbSS "," ; + colon_Chunk = sbSS ":" ; + semicolon_Chunk = sbSS ";" ; + quote_Chunk = variants {sbSS "\"" ; ss ("\"" ++ SOFT_BIND) } ; + lpar_Chunk = ss ("(" ++ SOFT_BIND) ; + rpar_Chunk = sbSS ")" ; + dash_Chunk = sbSS "-" ; + + oper + + sbSS : Str -> SS = \s -> ss (SOFT_BIND ++ s) ; + + agr_vars : Agr = variants { + Third C1_2 Sg ; + Third C1_2 Pl ; + Third C1a_2a Sg ; + Third C1a_2a Pl ; + Third C3_4 Sg ; + Third C3_4 Pl ; + Third C5_6 Sg ; + Third C5_6 Pl ; + Third C7_8 Sg ; + Third C7_8 Pl ; + Third C9_10 Sg ; + Third C9_10 Pl ; + Third C11_10 Sg ; + Third C11_10 Pl ; + Third C9_6 Sg ; + Third C9_6 Pl ; + Third C14 Sg ; + Third C15 Sg ; + Third C17 Sg ; + First Sg ; + First Pl ; + Second Sg ; + Second Pl + } ; + +} diff --git a/src/zulu/ParadigmsZul.gf b/src/zulu/ParadigmsZul.gf new file mode 100755 index 000000000..965f93ad9 --- /dev/null +++ b/src/zulu/ParadigmsZul.gf @@ -0,0 +1,180 @@ +--# -path=.:../abstract:../../prelude:../common + +--1 English Lexical Paradigms +-- +-- Aarne Ranta 2003--2005 +-- +-- This is an API for the user of the resource grammar +-- for adding lexical items. It gives functions for forming +-- expressions of open categories: nouns, adjectives, verbs. +-- +-- Closed categories (determiners, pronouns, conjunctions) are +-- accessed through the resource syntax API, $Structural.gf$. +-- +-- The main difference with $MorphoZul.gf$ is that the types +-- referred to are compiled resource grammar types. We have moreover +-- had the design principle of always having existing forms, rather +-- than stems, as string arguments of the paradigms. +-- +-- The structure of functions for each word class $C$ is the following: +-- first we give a handful of patterns that aim to cover all +-- regular cases. Then we give a worst-case function $mkC$, which serves as an +-- escape to construct the most irregular words of type $C$. +-- However, this function should only seldom be needed: we have a +-- separate module [``IrregZul`` ../../english/IrregZul.gf], +-- which covers irregular verbss. + +resource ParadigmsZul = open + (Predef=Predef), + Prelude, + -- MorphoZul, + ResZul, + CatZul, + CatExtZul, + ParamX + in { +--2 Parameters +-- +-- -- To abstract over gender names, we define the following identifiers. +-- +-- oper +-- Gender : Type ; +-- +-- human : Gender ; +-- nonhuman : Gender ; +-- masculine : Gender ; --% +-- feminine : Gender ; --% +-- +-- -- To abstract over number names, we define the following. +-- +-- Number : Type ; +-- +-- singular : Number ; +-- plural : Number ; +-- +-- -- To abstract over case names, we define the following. +-- +-- Case : Type ; --% +-- +-- nominative : Case ; --% +-- genitive : Case ; --% +-- +-- -- Prepositions are used in many-argument functions for rection. +-- -- The resource category $Prep$ is used. +-- +-- -- The number of a noun phrase can be extracted with the following +-- -- function. +-- +-- npNumber : NP -> Number ; -- exctract the number of a noun phrase +-- +-- +-- --2 Nouns +oper + mkN = overload { + mkN : (ngane : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns + mkN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ; + mkN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ; + } ; + + mkPN = overload { + mkPN : (John : Str) -> ClassGender -> N = \n,c -> lin N (regNoun n c) ; -- "thing" nouns + mkPN : (nyaka,onyakeni,eminyakeni : Str) -> ClassGender -> N = \n,ls,lp,c -> lin N (semiRegNoun n ls lp c) ; + mkPN : (iso,amehlo,esweni,emehlweni : Str) -> ClassGender -> N = \ns,np,ls,lp,c -> lin N (mkNoun ns np ls lp c) ; + } ; + + mkKwaPN = overload { + mkKwaPN : (Zulu : Str) -> ClassGender -> PN = \n,c -> lin PN (kwaProperName n c) ; + } ; + + mkAdA = overload { + mkAdA : (kakhulu : Str ) -> AdA = \a -> lin AdA (ss a) ; + } ; + + mkA = overload { + mkA : (kahle : Str) -> A = \a -> lin A (regAdj a) ; -- regular adjective + } ; + + mkRelA = overload { + mkRelA : (mnandi : Str) -> A = \a -> lin A (relAdj a) ; -- relative stem "adjective" + } ; + + -- mkEnumA = overload { + -- mkEnumA : (mbe : Str) -> A = \a -> lin A (enumAdj a) ; -- relative stem "adjective" + -- } ; + + mkV = overload { + mkV : (hamb : Str) -> V = \hamb -> lin V (regVerb hamb) ; + mkV : (th,thi : Str) -> V = \th,thi -> lin V (th_Verb th thi) ; + mkV : (guqubal,guqubala,guqubele : Str) -> V = \guqubal,guqubala,guqubele -> lin V (three_Verb guqubal guqubala guqubele) ; + mkV : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V = \guqubal,guqubala,guqubele,guqubele_2 -> lin V (four_Verb guqubal guqubala guqubele guqubele_2) ; + } ; + + passV = overload { + passV: Str -> V = \fakw -> lin V (passiveVerb fakw) ; + } ; + + passV2 = overload { + passV2: Str -> V2 = \fakw -> lin V2 (passiveVerb fakw) ; + } ; + + mkV2 = overload { + mkV2 : (hamb : Str) -> V2 = \hamb -> lin V2 (regVerb hamb) ; + mkV2 : (th,thi : Str) -> V2 = \th,thi -> lin V2 (th_Verb th thi) ; + mkV2 : (guqubal,guqubala,guqubele : Str) -> V2 = \guqubal,guqubala,guqubele -> lin V2 (three_Verb guqubal guqubala guqubele) ; + mkV2 : (guqubal,guqubala,guqubele,guqubele_2 : Str) -> V2 = \guqubal,guqubala,guqubele,guqubele_2 -> lin V2 (four_Verb guqubal guqubala guqubele guqubele_2) ; + } ; + + mkV3 = overload { + mkV3 : (phuz : Str) -> V3 = \phuz -> lin V3 (regVerb phuz) ; + -- mkV2 : (phathw : Str) -> Voice -> V2 = \phathw,voice -> lin V2 (passiveVerb phathw voice) ; + } ; + + mkVA = overload { + mkVA : (b : Str) -> VA = \b -> lin VA (regVerb b) ; + } ; + + mkVS = overload { + mkVS : (cel : Str) -> VS = \cel -> lin VS (regVerb cel) ; + } ; + + mkVAux = overload { + mkVAux : (hlale : Str) -> VAux = \hlale -> lin VAux { + s = hlale ; + at = PartAux + } + } ; + + -- yourPl_Det = overload { + -- yourPl_Det : Det = lin Det { s = "jou" ; n = Pl ; p = TPos } ; + -- } ; + -- + -- mkSgDet = overload { + -- mkSgDet : Str -> Det = \s -> lin Det { s = s ; n = Sg ; p = TPos } ; + -- } ; + + -- mkPlDet = overload { + -- mkPlDet : Str -> Det = \s -> lin Det { s = s ; n = Pl ; qdef = Article Def } ; + -- } ; + + -- -- mkVS = overload { + -- -- mkVS : V -> VS = \weet -> lin VS { v = weet ; c = "dat" } ; + -- -- } ; + -- -- + -- -- mkVQ = overload { + -- -- mkVQ : V -> VS = \wonder -> lin VS { v = wonder ; c = "of" } ; + -- -- } ; + + mkAdv = overload { + mkAdv : Str -> Adv = \adv -> lin Adv (regAdv adv) ; + -- mkAdv : Str -> Aspect -> Adv = \adv,asp -> lin Adv (aspAdv adv asp) ; + } ; + + mkIAdv = overload { + mkIAdv : Str -> Bool -> IAdv = \adv,b -> lin IAdv { s = "ingabe" ; postIAdv = b } ; + -- mkAdv : Str -> Aspect -> Adv = \adv,asp -> lin Adv (aspAdv adv asp) ; + } ; + + -- mkPredet = overload { + -- mkPredet : Str -> Predet = \predet -> lin Predet { s = predet ; p = TPos } ; + -- } ; +} ; diff --git a/src/zulu/PhraseZul.gf b/src/zulu/PhraseZul.gf new file mode 100755 index 000000000..7e48ec58d --- /dev/null +++ b/src/zulu/PhraseZul.gf @@ -0,0 +1,28 @@ +concrete PhraseZul of Phrase = CatZul ** open Prelude, ResZul in { + + lin + PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; + -- + UttS sent = { s = sent.s } ; + UttQS sent = { s = sent.qword_pre ++ sent.s ++ sent.qword_post } ; + UttImpSg pol imp = { s = pol.s ++ imp.s!pol.p } ; + -- UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ; + -- UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ; + + -- UttIP ip = {s = ip.s ! npNom} ; --- Acc also + -- UttIAdv iadv = iadv ; + -- UttNP np = {s = np.s ! npNom} ; + -- UttVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ; + -- UttAdv adv = adv ; + -- UttCN n = {s = n.s ! Sg ! Nom} ; + -- UttCard n = {s = n.s ! False ! Nom} ; + -- UttAP ap = {s = ap.s ! agrP3 Sg} ; + -- UttInterj i = i ; + + NoPConj = {s = []} ; + -- PConjConj conj = {s = conj.s2} ; --- + + NoVoc = {s = []} ; + -- VocNP np = {s = frontComma ++ np.s ! npNom} ; + +} diff --git a/src/zulu/QuestionZul.gf b/src/zulu/QuestionZul.gf new file mode 100755 index 000000000..7bacb63db --- /dev/null +++ b/src/zulu/QuestionZul.gf @@ -0,0 +1,110 @@ +concrete QuestionZul of Question = CatZul ** open ResZul, Prelude, ParamX in { + + flags optimize=all_subs ; + + lin + + QuestCl cl = { + s = \\p,t => cl.s!p!t ; + -- potqcl = cl.potcl ; + qword_pre = [] ; + qword_post = variants { "na" ; [] } ; + } ; -- guessing this will work... + + -- QuestVP qp vp = + -- let cl = mkClause (qp.s ! npNom) (agrP3 qp.n) vp + -- in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! oDir} ; ---- + -- + -- QuestSlash ip slash = + -- {s = \\t,a,b,q => + -- (mkQuestion (ss (ip.s ! NPAcc)) slash).s ! t ! a ! b ! q ++ slash.c2 + -- } ; + -- --- changed AR 5/6/2016: uses stranding; pied-piping in ExtraZul + + QuestIAdv iadv cl = qcl_iadv cl iadv ; + + QuestIComp icomp np = { + s = \\p,t => + let + vform = VFIndic MainCl p t ; + pre_icomp = case icomp.postIComp of { + False => (icomp_pref vform np.agr) ++ icomp.s ; + True => [] + } ; + post_icomp = case icomp.postIComp of { + True => (icomp_pref vform np.agr) ++ icomp.s ; + False => [] + } + in + pre_icomp ++ (np.s!NFull) ++ post_icomp ; + qword_pre = [] ; + qword_post = [] + } ; + -- mkQuestion icomp (mkClause (np.s ! npNom) np.a (predAux auxBe)) ; + + + -- PrepIP p ip = {s = p.s ++ ip.s ! NPAcc} ; + -- + -- AdvIP ip adv = { + -- s = \\c => ip.s ! c ++ adv.s ; + -- n = ip.n + -- } ; + -- + -- IdetCN idet cn = { + -- s = \\c => idet.s ++ cn.s ! idet.n ! npcase2case c ; + -- n = idet.n + -- } ; + -- + -- IdetIP idet = { + -- s = \\c => idet.s ; + -- n = idet.n + -- } ; + -- + -- IdetQuant idet num = { + -- s = idet.s ! num.n ++ num.s ! False ! Nom ; + -- n = num.n + -- } ; + -- + -- AdvIAdv i a = ss (i.s ++ a.s) ; + -- + -- CompIAdv a = a ; + -- CompIP p = ss (p.s ! npNom) ; + -- + -- lincat + -- QVP = ResZul.VP ; + -- lin + -- ComplSlashIP vp np = insertObjPre (\\_ => vp.c2 ++ np.s ! NPAcc) vp ; + -- AdvQVP vp adv = insertObj (\\_ => adv.s) vp ; + -- AddAdvQVP vp adv = insertObj (\\_ => adv.s) vp ; + -- + -- QuestQVP qp vp = + -- let cl = mkClause (qp.s ! npNom) (agrP3 qp.n) vp + -- in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! oDir} ; ---- + + oper + -- qcl_iadv : Cl -> CatZul.IAdv -> {s : Polarity => ZTense => DMood => Str ; potqcl : Polarity => DMood => Str ; qword_pre : Str ; qword_post : Str } = \cl,iadv -> { + -- s = case iadv.postIAdv of { + -- False => \\p,t,m => cl.s!p!t!m ++ iadv.s ++ cl.advs ; + -- True => \\p,t,m => cl.s!p!t!m ++ cl.advs + -- } ; + -- potqcl = cl.potcl ; + -- qword_pre = case iadv.postIAdv of { + -- False => [] ; + -- True => iadv.s + -- } ; + -- qword_post = [] + -- } ; + + qcl_iadv : Cl -> CatZul.IAdv -> {s : Polarity => BasicTense => Str ; qword_pre : Str ; qword_post : Str } = \cl,iadv -> { + s = \\p,t => cl.s!p!t ; + qword_pre = case iadv.postIAdv of { + True => [] ; + False => iadv.s + } ; + qword_post = case iadv.postIAdv of { + False => [] ; + True => iadv.s + } ; + } ; + +} diff --git a/src/zulu/README.md b/src/zulu/README.md new file mode 100755 index 000000000..24c6b543e --- /dev/null +++ b/src/zulu/README.md @@ -0,0 +1,30 @@ +# GF Zulu Resource Grammar + +### Authors +- Laurette Marais (lmarais@csir.co.za) +- Laurette Pretorius (laurette.pretorius@gmail.org) + + in collaboration with Lionel Posthumus + +This work has been made possible by the [South African Centre for Digital Language Resource (SADiLaR)](https://www.sadilar.org). + +## Introduction +This resource grammar provides an implementation of the Zulu language by making use of the common abstract syntax and a custom extension. The goal is to strike a balance between adhering as closely as possible to the common abstract syntax, while providing as much transparency and efficiency as possible. One important aim is to enable parsing, which is not possible for large, inefficient grammars. The most common, and most challenging, syntax categories and functions have so far been implemented. + +## Usage +The file structure has been adapted slightly to accommodate the custom extension, as well as to provide the ability to compile the base grammar with different lexica. + +| Compilable module | Lexicon | Description | +| ----------------- | ------- | ----------- | +| MonoLexLangZul.gf | MonoLexZul.gf | The base RG with a large lexicon containing Zulu roots and stems, using Zulu function names, eg. `hamb_V` | +| MultiLexLangZul.gf | MultiLexZul.gf | The base RG with a lexicon of common Zulu roots and stems, using English function names, eg. `walk_V` | +| MonoLexChunkZul.gf | MonoLexZul.gf | A chunk parsing enabled version of the RG with a large lexicon containing Zulu roots and stems, using Zulu function names, eg. `hamb_V` | +| MultiLexChunkZul.gf | MultiLexZul.gf | A chunk parsing enabled version of the RG with a lexicon of common Zulu roots and stems, using English function names, eg. `walk_V` | +| DevLexLangZul.gf | DevLexZul.gf | The base RG with a small development lexicon containing Zulu roots and stems, using Zulu function names, eg. `hamb_V` | + +Compiler directives setting up the appropriate paths have been added, so these modules should be compilable as is: + +`path/to/gf-rgl$ gf --make src/zulu/grammars/MonoLexLangZul.gf` + +## Supporting resources +Various supporting resources can be found at https://github.com/LauretteM/gf-zulu-resources diff --git a/src/zulu/RelativeZul.gf b/src/zulu/RelativeZul.gf new file mode 100755 index 000000000..78dfafd10 --- /dev/null +++ b/src/zulu/RelativeZul.gf @@ -0,0 +1,147 @@ +concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { + + flags optimize=all_subs ; + + lin + +-- RelCl cl = { +-- s = \\t,a,p,_ => "such" ++ "that" ++ cl.s ! t ! a ! p ! oDir ; +-- c = npNom +-- } ; + + RelVP rp vp = case vp.vptype of { + CopIdent => rcl_with_id_cop_predicate rp vp ; + CopAssoc => rcl_with_ass_cop_predicate rp vp ; + CopEq => rcl_with_eq_cop_predicate rp vp ; + CopDescr => rcl_with_descr_predicate rp vp ; + _ => rcl_with_verb_predicate rp vp + } ; + +-- -- Pied piping: "that we are looking at". Pied piping and empty +-- -- relative are defined in $ExtraZul.gf$ ("at which we are looking", +-- -- "we are looking at"). +-- +-- RelSlash rp slash = { +-- s = \\t,a,p,ag => +-- rp.s ! RC (fromAgr ag).g NPAcc ++ slash.s ! t ! a ! p ! oDir ++ slash.c2 ; +-- c = NPAcc +-- } ; +-- +-- FunRP p np rp = { +-- s = \\c => np.s ! NPAcc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ; +-- a = RAg np.a +-- } ; + + IdRP = { s = [] } ; + + oper + rcl_with_verb_predicate : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> { + s = \\a,p,t => + let + vform = VFIndic RelCl p t ; + vow = case of { + => False ; + <_,Pos,PresTense> => True ; + => False ; + <_,_,PastTense> => True ; + <_,_,_> => False + } ; + reqLF = case vp.hasComp of { + True => False ; + False => True + } ; + relsuf = case vp.hasComp of { + True => [] ; + False => relSuf vform + } ; + rcform = RelC ; -- case vform_main of { + -- VFIndic Part Pos PastTense _ => RelCA ; + -- VFIndic _ _ _ _ => RelC ; + -- VFPot _ _ _ => RelC ; + -- VFSubj _ => RelC + -- } ; + in + -- naively only took out the subject + rp.s + -- ++ (negPref vform_main) + -- -- ++ (exclSePref vform_main) + -- ++ relConc!a!rcform ++BIND + -- -- ++ (negPref2 vform_main) + -- -- ++ (exclKaPref vform) + -- ++ (tensePref vform) + -- ++ vp.oc + -- ++ vp.s!(rform vform_main reqLF) + ++ vp.s!RelCl!a!p!t + -- ++ relsuf + ++ vp.iadv + ++ vp.comp + ++ vp.advs + } ; + + rcl_with_id_cop_predicate : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> { + s = \\a,p,t => + let + vform_main = VFIndic RelCl p t ; + pcp = relConcLookup!a!vp.r ++BIND ; + -- cp = id_cop_pref vp.comp_agr ; + cb = vp.comp ; + in + -- naively removed subject + rp.s ++ + -- pcp ++ + vp.s!RelCl!a!p!t ++ + vp.iadv ++ + vp.advs + } ; + + rcl_with_ass_cop_predicate : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> { + s = \\a,p,t => + let + vform_main = VFIndic RelCl p t ; + pcp = relConcLookup!a!vp.r ++BIND; + -- cp = (assoc_cop_pref vp.comp_agr) ; + -- cb = (withPref ! vp.r) ++ BIND ++ vp.comp ; + -- asp = case vp.asp of { + -- Prog => progPref vform_main ; + -- _ => [] + -- } ; + in + -- naively removed subject + rp.s ++ + -- pcp ++ + vp.s!RelCl!a!p!t ++ + vp.iadv ++ + vp.advs + } ; + + rcl_with_eq_cop_predicate : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> { + s = \\a,p,t => + let + vform_main = VFIndic RelCl p t ; + pcp = relConcLookup!a!vp.r ++BIND; + -- cb = (eqPref ! vp.r) ++ BIND ++ vp.comp ; + in + -- naively removed subject + rp.s ++ + pcp ++ + vp.s!RelCl!a!p!t ++ + vp.iadv ++ + vp.advs + } ; + + rcl_with_descr_predicate : RP -> VP -> { s : Agr => Polarity => BasicTense => Str } = \rp,vp -> { + s = \\a,p,t => + let + vform_main = VFIndic RelCl p t ; + pcp = pre_cop_pref vform_main a ; + -- adjf = aformN a ; + -- adjpref = relAdjAgrLookup!p!a ++BIND ; + -- comp = vp.ap_comp!adjf ++ vp.comp + in + rp.s ++ + -- adjpref ++ + vp.s!RelCl!a!p!t + ++ vp.iadv ++ vp.advs + } ; + +} diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf new file mode 100755 index 000000000..a2e18f45f --- /dev/null +++ b/src/zulu/ResZul.gf @@ -0,0 +1,1867 @@ +--# -path=.:../abstract:../common:../../prelude + +resource ResZul = open Prelude,Predef,ParamX in { + + param + ClassGender = C1_2 | C1a_2a | C3_4 | C5_6 | C7_8 | C9_10 | C11_10 | C9_6 | C14 | C15 | C17 ; + SemanticType = Human | Animate | Misc ; + NForm = NFull | NReduced | NPoss | NLoc ; + Agr = First Number | Second Number | Third ClassGender Number ; + + -- SMood = SIndic | SPot | SSubj ; -- | SConsec ; + -- DMood = Princ | Part ; -- mood dimension that depends on grammatical context: principal and participial + CType = MainCl | RelCl ; + Aspect = Null | Prog | Excl ; + BasicTense = PresTense | FutTense | PastTense | RemFutTense | RemPastTense ; + -- ImpForm = Imper | Polite ; + -- Polarity = Pos | Neg ; + + -- NOTE: Although Poulos+Msimang use "verb form" instead of mood, + -- we use VForm (verb form) to indicate combination of all parameters + -- regarding the verb, and hence will use use "mood" for convenience. + + -- replacing BasicTense with Tense, just for now + -- VForm = VFIndic DMood Polarity BasicTense Aspect | VFPot DMood Polarity Aspect | VFSubj Polarity ; + -- VForm = VFIndic DMood Polarity BasicTense Aspect | VFPot DMood Polarity Aspect | VFSubj Polarity ; + VForm = VFIndic CType Polarity BasicTense ; + VPType = CopIdent | CopAssoc | CopDescr | CopEq | VNPCompl | NoComp | VSCompl | AdvComp | CopLoc ; -- VACompl | + AuxType = PartAux ; -- TODO: add SubjAux, InfAux, ConsecAux etc (p327) + AType = AdjType | RelType ; + + AForm = AF1 | AF2 | AF3 ; -- two forms for implementing sound changes Poulos+Msimang p143, one for monosyllabic + SCForm = SC | SCVow | SCNeg | SCNegVow | SCPS | SCPart | SCVowP | SCBe | SCRP ; + OCForm = OC | OCAE | OCIOU | OCMono | OCThing ; + RCForm = RelC | RelCA ; + + -- verb root characteristics + RForm = R_a | R_ile | R_e | R_i | R_anga ; + RInit = RA | RE | RI | RO | RU | RC ; + Syl = SylMono | SylMult ; + Voice = Active | Passive ; + + QuantDef = Article Specificity | Demonstrative Distance ; + -- Definiteness = Indef | Def ; + Specificity = Spec | Nonspec ; + Distance = Dem1 | Dem2 | Dem3 ; + + oper + + prefix_nasal : Str -> Str = \r -> case r of { + "ph"+x => "mp" + x ; + "bh"+x => "mb" + x ; + #nasal_de_asp+"h"+x => "n"+(take 1 r) + x ; + "hl"+x => "nhl"+x ; + "h"+x => "nk"+x ; + "sh"+x => "ntsh"+x ; + "l"+x => "nd"+x ; + #nasal_m+x => "m"+r ; + #nasal_ng+x => "ng"+r ; + #nasal+x => r ; + _ => "n"+r + } ; + -------------- + -- PRONOUNS -- + -------------- + -- mkFullPron : Str -> Agr -> { s : NForm => Str ; agr : Agr ; empty : Str ; proDrop : Bool } = \s,agr -> { + -- s = s ; + -- agr = agr ; + -- empty = [] ; + -- proDrop = False + -- } ; + + mkPron : Agr -> { s : NForm => Str ; agr : Agr ; empty : Str ; proDrop : Bool } = \agr -> { + s = table { + NFull => pron_stem!agr +"na" ; + NReduced => pron_stem!agr ; + NPoss => poss_pron_stem!agr ; + NLoc => case agr of { + First _ | Second Pl => "ki" ++BIND++ pron_stem!agr ; + _ => "ku" ++BIND++ pron_stem!agr + } + } ; + agr = agr ; + empty = [] ; + proDrop = False + } ; + + full_pron : Str -> Str = \s -> s ++BIND++ "na" ; + + pron_stem : Agr => Str = table { + First Sg => "mi" ; + First Pl => "thi" ; + Second Sg => "we" ; + Second Pl => "ni" ; + Third C1_2 Sg => "ye" ; + Third C1_2 Pl => "bo" ; + Third C1a_2a Sg => "ye" ; + Third C1a_2a Pl => "bo" ; + Third C3_4 Sg => "wo" ; + Third C3_4 Pl => "yo" ; + Third C5_6 Sg => "lo" ; + Third C5_6 Pl => "wo" ; + Third C7_8 Sg => "so" ; + Third C7_8 Pl => "zo" ; + Third C9_10 Sg => "yo" ; + Third C9_10 Pl => "zo" ; + Third C11_10 Sg => "lo" ; + Third C11_10 Pl => "zo" ; + Third C9_6 Sg => "yo" ; + Third C9_6 Pl => "wo" ; + Third C14 _ => "bo" ; + Third C15 _ => "kho" ; + Third C17 _ => "kho" + } ; + + poss_pron_stem : Agr => Str = table { + First Sg => "mi" ; + First Pl => "thu" ; + Second Sg => "kho" ; + Second Pl => "nu" ; + Third C1_2 Sg => "khe" ; + Third C1_2 Pl => "bo" ; + Third C1a_2a Sg => "khe" ; + Third C1a_2a Pl => "bo" ; + Third C3_4 Sg => "wo" ; + Third C3_4 Pl => "yo" ; + Third C5_6 Sg => "lo" ; + Third C5_6 Pl => "wo" ; + Third C7_8 Sg => "so" ; + Third C7_8 Pl => "zo" ; + Third C9_10 Sg => "yo" ; + Third C9_10 Pl => "zo" ; + Third C11_10 Sg => "lo" ; + Third C11_10 Pl => "zo" ; + Third C9_6 Sg => "yo" ; + Third C9_6 Pl => "wo" ; + Third C14 _ => "bo" ; + Third C15 _ => "kho" ; + Third C17 _ => "kho" + } ; + + dem_pron : Distance => Agr => Str = table { + Dem1 => table { + First Sg => "lo" ; + First Pl => "laba" ; + Second Sg => "lo" ; + Second Pl => "laba" ; + Third C1_2 Sg => "lo" ; + Third C1_2 Pl => "laba" ; + Third C1a_2a Sg => "lo" ; + Third C1a_2a Pl => "laba" ; + Third C3_4 Sg => "lo" ; + Third C3_4 Pl => "le" ; + Third C5_6 Sg => "leli" ; + Third C5_6 Pl => "la" ; + Third C7_8 Sg => "lesi" ; + Third C7_8 Pl => "lezi" ; + Third C9_10 Sg => "le" ; + Third C9_10 Pl => "lezi" ; + Third C11_10 Sg => "lolu" ; + Third C11_10 Pl => "lezi" ; + Third C9_6 Sg => "le" ; + Third C9_6 Pl => "la" ; + Third C14 _ => "lobu" ; + Third C15 _ => "lokhu" ; + Third C17 _ => "lapha" + } ; + Dem2 => table { + First Sg => "lowo" ; + First Pl => "labo" ; + Second Sg => "lowo" ; + Second Pl => "labo" ; + Third C1_2 Sg => "lowo" ; + Third C1_2 Pl => "labo" ; + Third C1a_2a Sg => "lowo" ; + Third C1a_2a Pl => "labo" ; + Third C3_4 Sg => "lowo" ; + Third C3_4 Pl => "leyo" ; + Third C5_6 Sg => "lelo" ; + Third C5_6 Pl => "lawo" ; + Third C7_8 Sg => "leso" ; + Third C7_8 Pl => "lezo" ; + Third C9_10 Sg => "leyo" ; + Third C9_10 Pl => "lezo" ; + Third C11_10 Sg => "lolo" ; + Third C11_10 Pl => "lezo" ; + Third C9_6 Sg => "leyo" ; + Third C9_6 Pl => "lawo" ; + Third C14 _ => "lobo" ; + Third C15 _ => "lokho" ; + Third C17 _ => "lapho" + } ; + Dem3 => table { + First Sg => "loya" ; + First Pl => "labaya" ; + Second Sg => "loya" ; + Second Pl => "labaya" ; + Third C1_2 Sg => "loya" ; + Third C1_2 Pl => "labaya" ; + Third C1a_2a Sg => "loya" ; + Third C1a_2a Pl => "labaya" ; + Third C3_4 Sg => "loya" ; + Third C3_4 Pl => "leya" ; + Third C5_6 Sg => "leliya" ; + Third C5_6 Pl => "lawaya" ; + Third C7_8 Sg => "lesiya" ; + Third C7_8 Pl => "leziya" ; + Third C9_10 Sg => "leya" ; + Third C9_10 Pl => "leziya" ; + Third C11_10 Sg => "loluya" ; + Third C11_10 Pl => "leziya" ; + Third C9_6 Sg => "leya" ; + Third C9_6 Pl => "lawaya" ; + Third C14 _ => "lobuya" ; + Third C15 _ => "lokhuya" ; + Third C17 _ => "laphaya" + } + } ; + + ----------- + -- VERBS -- + ----------- + regVerb : Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \root -> + { + s = table { + R_a => root ++BIND++ "a" ; + R_ile => case root of { + _+"el" => root ++BIND++ "e" ; + _+"al" => (tk 2 root) + "el" ++BIND++ "e" ; + _ => root ++BIND++ "ile" + } ; + R_e => case root of { + _+"al" => (tk 2 root) + "el" ++BIND++ "e" ; + _ => root ++BIND++ "e" + } ; + R_i => root ++BIND++ "i" ; + R_anga => root ++BIND++ "anga" + } ; + r = case root of { + "a"+_ => RA ; + "e"+_ => RE ; + "i"+_ => RI ; + "o"+_ => RO ; + "u"+_ => RU ; + _ => RC + } ; + syl = case root of { + _+#cons+#vowel+#cons+_ => SylMult ; + _ => SylMono + } ; + voice = Active + } ; + + th_Verb : Str -> Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \th,thi -> + { + s = table { + R_a => thi ; + R_ile => th ++BIND++ "ile" ; + R_e => th ++BIND++ "e" ; + R_i => th ++BIND++ "i" ; + R_anga => th ++BIND++ "anga" + } ; + r = case th of { + "a"+_ => RA ; + "e"+_ => RE ; + "i"+_ => RI ; + "o"+_ => RO ; + "u"+_ => RU ; + _ => RC + } ; + syl = case th of { + _+#cons+#vowel+#cons+_ => SylMult ; + _ => SylMono + } ; + voice = Active + } ; + + three_Verb : Str -> Str -> Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \root,r_a,r_ile -> { + s = table { + R_a => r_a ; + R_ile => r_ile ; + R_e => root ++BIND++ "e" ; + R_i => root ++BIND++ "i" ; + R_anga => root ++BIND++ "anga" + } ; + r = case root of { + "a"+_ => RA ; + "e"+_ => RE ; + "i"+_ => RI ; + "o"+_ => RO ; + "u"+_ => RU ; + _ => RC + } ; + syl = case root of { + _+#cons+#vowel+#cons+_ => SylMult ; + _ => SylMono + } ; + voice = Active + } ; + + four_Verb : Str -> Str -> Str -> Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \root,r_a,r_ile,r_e -> { + s = table { + R_a => r_a ; + R_ile => r_ile ; + R_e => r_e ; + R_i => root ++BIND++ "i" ; + R_anga => root ++BIND++ "anga" + } ; + r = case root of { + "a"+_ => RA ; + "e"+_ => RE ; + "i"+_ => RI ; + "o"+_ => RO ; + "u"+_ => RU ; + _ => RC + } ; + syl = case root of { + _+#cons+#vowel+#cons+_ => SylMult ; + _ => SylMono + } ; + voice = Active + } ; + + -- irregVerb : Str -> Str -> Str -> Str -> Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \hamba,hambile,hambe,hambi,hambanga -> { + -- s = table { + -- R_a => hamba ; + -- R_ile => hambile ; + -- R_e => hambe ; + -- R_i => hambi ; + -- R_anga => hambanga + -- } ; + -- r = case root of { + -- "a"+_ => RA ; + -- "e"+_ => RE ; + -- "i"+_ => RI ; + -- "o"+_ => RO ; + -- "u"+_ => RU ; + -- _ => RC + -- } ; + -- syl = case root of { + -- _+#cons+#vowel+#cons+_ => SylMult ; + -- _ => SylMono + -- } ; + -- voice = Active + -- } ; + + passiveVerb : Str -> { s : RForm => Str ; r : RInit ; syl : Syl ; voice : Voice } = \root -> + { + s = table { + R_a => root ++BIND++ "a" ; + R_ile => root ++BIND++ "ile" ; + R_e => root ++BIND++ "e" ; + R_i => root ++BIND++ "i" ; + R_anga => root ++BIND++ "anga" + } ; + r = case root of { + "a"+_ => RA ; + "e"+_ => RE ; + "i"+_ => RI ; + "o"+_ => RO ; + "u"+_ => RU ; + _ => RC + } ; + syl = case root of { + _+#cons+#vowel+#cons+_ => SylMult ; + _ => SylMono + } ; + voice = Passive + } ; + + -- Determine which form of the verb root to use + -- we're keeping the case statement for when we add back -e and -ile + rform : VForm -> Bool -> RForm = \vform,longform -> case longform of { + True => case vform of { + VFIndic _ Pos PresTense => R_a ; + VFIndic MainCl Neg PresTense => R_i ; + VFIndic RelCl Neg PresTense => R_i ; + VFIndic _ _ FutTense => R_a ; + VFIndic _ _ RemFutTense => R_a ; + VFIndic _ Pos PastTense => R_ile ; + VFIndic _ Neg PastTense => R_anga ; + VFIndic _ Pos RemPastTense => R_a ; + VFIndic _ Neg RemPastTense => R_anga + } ; + False => case vform of { + VFIndic _ Pos PresTense => R_a ; + VFIndic MainCl Neg PresTense => R_i ; + VFIndic RelCl Neg PresTense => R_i ; + VFIndic _ _ FutTense => R_a ; + VFIndic _ _ RemFutTense => R_a ; + VFIndic _ Pos PastTense => R_e ; + VFIndic _ Neg PastTense => R_anga ; + VFIndic _ Pos RemPastTense => R_a ; + VFIndic _ Neg RemPastTense => R_anga + } + } ; + + -- VERB MORPHEMES -- + + -- tense prefix + tensePref : VForm -> RInit -> Syl -> Str = \vform,r,syl -> + case of { + => "zoku" ++BIND ; + => "zo" ++BIND ; + <_,VFIndic _ Pos FutTense,_> => "zokw" ++BIND ; + => "zuku" ++BIND ; + <_,VFIndic _ Neg FutTense,_> => "zukw" ++BIND ; + + => "yoku" ++BIND ; + => "yo" ++BIND ; + <_,VFIndic _ Pos RemFutTense,_> => "yokw" ++BIND ; + => "yuku" ++BIND ; + <_,VFIndic _ Neg RemFutTense,_> => "yukw" ++BIND ; + + <(RA|RE),VFIndic _ _ RemPastTense> => [] ; + <_,VFIndic _ Pos RemPastTense> => "a" ++BIND ; + <_,VFIndic _ _ _,_> => [] --; + -- VFPot _ _ _ => [] ; + -- VFSubj _ => [] + } ; + + -- negative prefix + negPref : VForm -> Str = \vform -> + case vform of { + VFIndic _ Neg _ => "a"++BIND ; + VFIndic _ _ _ => [] + } ; + + -- TODO : sound rules to choose between nge and nga + -- negPref2 : VForm -> Str = \vform -> + -- case vform of { + -- VFIndic Part Neg FutTense Null => "nga" ++BIND ; -- sometimes nge? p274 + -- -- VFIndic Part Neg _ _ => pre { "z" => "nge" ; _ => "nga" } ++BIND ; + -- VFIndic Part Neg _ _ => "nga" ++BIND ; + -- VFIndic _ _ _ _ => [] ; + -- VFPot _ _ _ => [] ; + -- VFSubj Neg => pre { "z" => "nge" ; _ => "nga" } ++BIND ; + -- VFSubj Pos => [] + -- } ; + + negPrefNga : VForm -> Str = \vform -> case vform of { + VFIndic _ Neg _ => "nga" ; + VFIndic _ Pos _ => [] + } ; + + negPrefNge : VForm -> Str = \vform -> case vform of { + VFIndic _ Neg _ => "nge" ; + VFIndic _ Pos _ => [] + } ; + + icompNeg1 : VForm -> Str = \vform -> case vform of { + VFIndic _ Neg PresTense => "a"++BIND ; + VFIndic _ _ _ => [] + } ; + + icompNeg2 : VForm -> Str = \vform -> case vform of { + VFIndic _ Neg _ => "nga"++BIND ; + VFIndic _ _ _ => [] + } ; + + -- -- progressive prefix + -- progPref : VForm -> Str = \vform -> + -- case vform of { + -- VFIndic _ Pos PastTense Prog => nonExist ; -- progressive past does not occur + -- VFIndic _ Pos PastTense _ => [] ; + -- VFIndic _ Pos _ Prog => "sa" ++BIND ; + -- VFIndic _ Pos _ _ => [] ; + -- VFIndic _ Neg FutTense Prog => "se" ++BIND ; + -- VFIndic _ Neg _ Prog => "sa" ++BIND ; + -- VFIndic _ _ _ Prog => nonExist ; + -- VFIndic _ _ _ _ => [] ; + -- VFPot _ _ Prog => "se" ++BIND ; + -- VFPot _ _ _ => [] ; + -- VFSubj _ => [] + -- + -- } ; + + -- progressive prefix + -- progPref : VForm -> Str = \vform -> + -- case vform of { + -- VFIndic _ Pos PastTense _ => nonExist ; -- progressive past does not occur + -- -- VFIndic _ Pos PastTense _ => [] ; + -- VFIndic _ Pos _ _ => "sa" ++BIND ; + -- -- VFIndic _ Pos _ _ => [] ; + -- VFIndic _ Neg FutTense _ => "se" ++BIND ; + -- VFIndic _ Neg _ _ => "sa" ++BIND ; + -- VFIndic _ _ _ _ => nonExist ; + -- -- VFIndic _ _ _ _ => [] ; + -- VFPot _ _ _ => "se" ++BIND ; + -- -- VFPot _ _ _ => [] ; + -- VFSubj _ => nonExist + -- + -- } ; + + -- exclusive se prefix + -- exclSePref : VForm -> Str = \vform -> + -- case vform of { + -- VFIndic _ Pos _ Excl => "se"++BIND ; + -- VFIndic _ _ _ _ => [] ; + -- VFPot _ Pos Excl => "se"++BIND ; + -- VFPot _ _ _ => [] ; + -- VFSubj _ => [] + -- } ; + -- + -- -- exclusive ka prefix + -- exclKaPref : VForm -> Str = \vform -> + -- case vform of { + -- VFIndic _ Neg (PresTense | FutTense) Excl => "ka" ++BIND ; + -- VFIndic _ _ _ _ => [] ; + -- VFPot _ _ _ => [] ; + -- VFSubj _ => [] + -- } ; + + -- potential prefix + -- potPref : VForm -> Str = \vform -> + -- case vform of { + -- VFPot _ Pos _ => "nga" ++BIND ; + -- VFPot _ Neg _ => "nge" ++BIND ; + -- VFIndic _ _ _ _ => [] ; + -- VFSubj _ => [] + -- } ; + + -- VForm = VFIndic DMood Polarity BasicTense Aspect | VFPot DMood Polarity Aspect | VFSubj Polarity ; + -- aux_be : VForm -> Agr -> Str = \vform,agr -> + -- let + -- sc = subjConc vform agr False ; + -- scvow = subjConc vform agr True ; + -- short_be = case agr of { + -- -- Second Pl => sc ++ "bu" ; + -- -- Third C3_4 Sg => sc ++ "bu" ; + -- -- Third C3_4 Pl => sc ++ "bi" ; + -- -- Third C9_6 Sg | Third C9_10 Sg => sc ++ "bi" ; + -- First _ | Second _ | Third _ _ => subjConcLookup!agr!SCBe + -- } + -- in + -- case vform of { + -- VFIndic Princ Pos PresTense _ => [] ; + -- VFIndic Princ Pos PerfTense _ => short_be ++BIND ; -- 2021-01-26, chose to only implement short form + -- VFIndic Princ Pos FutTense _ => sc ++ "zobe" ; + -- VFIndic Princ Pos PastTense _ => scvow ++ "abe" ; + -- + -- VFIndic Princ Neg PresTense _ => [] ; + -- VFIndic Princ Neg PerfTense _ => short_be ++BIND ; + -- VFIndic Princ Neg FutTense _ => sc ++ "zobe" ; + -- VFIndic Princ Neg PastTense _ => scvow ++ "abe" ; + -- + -- VFIndic Part Pos PresTense _ => [] ; + -- VFIndic Part Pos PerfTense _ => short_be ++BIND ; + -- VFIndic Part Pos FutTense _ => sc ++ "zobe" ; + -- VFIndic Part Pos PastTense _ => scvow ++ "abe" ; + -- + -- VFIndic Part Neg PresTense _ => [] ; + -- VFIndic Part Neg PerfTense _ => short_be ++BIND ; + -- VFIndic Part Neg FutTense _ => sc ++ "zobe" ; + -- VFIndic Part Neg PastTense _ => scvow ++ "abe" ; + -- + -- VFPot _ Pos _ => sc ++ "ngaba" ; + -- VFPot _ Neg _ => sc ++ "ngebe" ; + -- VFSubj Pos => sc ++ "be" ++BIND ; + -- VFSubj Neg => sc ++ "ngabi" + -- } ; + + ------------- + -- ADVERBS -- + ------------- + regAdv : Str -> { s : Str ; asp : Aspect ; reqLocS : Bool } = \adv -> + { + s = adv ; + asp = Null ; + reqLocS = False + } ; + + aspAdv : Str -> Aspect -> { s : Str ; asp : Aspect ; reqLocS : Bool } = \adv,asp -> + { + s = adv ; + asp = asp ; + reqLocS = False + } ; + + -- together with + withPref : RInit => Str = table { + RU => "no" ; + RI => "ne" ; + RO => "no" ; + _ => "na" + } ; + + -- just like + eqPref : RInit => Str = table { + RU => "njengo" ; + RI => "njenge" ; + RO => "njengo" ; + _ => "njenga" + } ; + + -- as big as + eqSizePref : RInit => Str = table { + RU => "ngango" ; + RI => "ngange" ; + RO => "ngango" ; + _ => "nganga" + } ; + + -- with + instrPref : RInit => Str = table { + RU => "ngo" ; + RI => "nge" ; + RO => "ngo" ; + _ => "nga" + } ; + + -------------------- + -- QUALIFICATIVES -- + -------------------- + regAdj : Str -> { s : AForm => Str ; empty : Str ; t : AType } = \a -> + { + s = table { + AF1 => a ; + AF2 => prefix_nasal a ; + AF3 => case a of { + #cons+#cons*+#vowel => "u"+a ; + _ => a + } + } ; + -- b = case a of { + -- ("kh"|"th"|"sh"|"b"|"f"|"hl")+_ => True ; + -- ("m"|"n")+_ => True ; + -- _ => False + -- } ; + empty = [] ; + t = AdjType + } ; + + relAdj : Str -> { s : AForm => Str ; empty : Str ; t : AType } = \a -> + { + s = \\_ => a ; + -- b = case a of { + -- ("kh"|"th"|"sh"|"b"|"f"|"hl")+_ => True ; + -- ("m"|"n")+_ => True ; + -- _ => False + -- } ; + empty = [] ; + t = RelType + } ; + + -- enumAdj : Str -> { s : AForm => Str ; empty : Str ; t : AType } = \a -> + -- { + -- s = \\_ => a ; + -- -- b = case a of { + -- -- ("kh"|"th"|"sh"|"b"|"f"|"hl")+_ => True ; + -- -- ("m"|"n")+_ => True ; + -- -- _ => False + -- -- } ; + -- empty = [] ; + -- t = EnumType + -- } ; + + -- relSuf : VForm -> Bool -> Str = \longform -> + -- case longform of { + -- True => pre { #vowel => [] ; #cons => [] ; "y" => [] ; _ => "yo" } ; + -- False => [] + -- } ; + + rel_yo : Str = pre { + #vowel => [] ; + #cons => [] ; + _ => BIND++"yo" + } ; + + rel_yo_2 : Str = BIND++"yo" ; + + relSuf : VForm -> Str = \vform -> case vform of { + VFIndic _ Pos PresTense => rel_yo_2 ; + VFIndic _ Pos PastTense => rel_yo_2 ; + VFIndic _ _ _ => [] + } ; + + -- chooses the form of the root to use for N-prefixes + aformN : Agr -> AForm = \agr -> + case agr of { + Third C1_2 Sg => AF3 ; + Third C1a_2a Sg => AF3 ; + Third C3_4 Sg => AF3 ; + Third C7_8 Pl => AF2 ; + Third C9_10 Sg => AF2 ; + Third C9_10 Pl => AF2 ; + Third C9_6 Sg => AF2 ; + Third C11_10 Pl => AF2 ; + _ => AF1 + } ; + + -- TODO: check ; RInit is used to indicate what precedes the adj pref + adjPrefLookup : Agr => VForm => Str = + table { + Third C1_2 Sg => table { VFIndic _ _ _ => "m"++BIND } ; + Third C1_2 Pl => table { VFIndic _ _ _ => "ba"++BIND } ; + Third C1a_2a Sg => table { VFIndic _ _ _ => "m"++BIND } ; + Third C1a_2a Pl => table { VFIndic _ _ _ => "ba"++BIND } ; + Third C3_4 Sg => table { VFIndic _ _ _ => "m"++BIND } ; + Third C3_4 Pl => table { VFIndic _ _ _ => "mi"++BIND } ; + Third C5_6 Sg => table { VFIndic _ _ _ => "li"++BIND } ; + Third C5_6 Pl => table { VFIndic _ _ _ => "ma"++BIND } ; + Third C7_8 Sg => table { VFIndic _ _ _ => "si"++BIND } ; + Third C7_8 Pl => table { VFIndic _ _ _ => "zi"++BIND } ; -- nasal for 8,9,10 assumed to be fixed to root + Third C9_10 Sg => table { + VFIndic MainCl Pos PresTense => "yi" ++BIND ; + VFIndic _ Pos PresTense => [] ; + VFIndic RelCl Neg PresTense => [] ; + VFIndic _ _ FutTense => "yi"++BIND ; + VFIndic _ _ RemFutTense => "yi"++BIND ; + VFIndic _ _ PastTense => "yi" ++BIND ; + VFIndic _ _ RemPastTense => "yi" ++BIND ; + VFIndic _ _ _ => "i"++BIND + } ; + Third C9_10 Pl => table { VFIndic _ _ _ => "zi"++BIND } ; + Third C11_10 Sg => table { VFIndic _ _ _ => "lu"++BIND } ; + Third C11_10 Pl => table { VFIndic _ _ _ => "zi"++BIND } ; + Third C9_6 Sg => table { + VFIndic MainCl Pos PresTense => "yi" ++BIND ; + VFIndic _ Pos PresTense => [] ; + VFIndic RelCl Neg PresTense => [] ; + VFIndic _ _ FutTense => "yi"++BIND ; + VFIndic _ _ RemFutTense => "yi"++BIND ; + VFIndic _ _ PastTense => "yi" ++BIND ; + VFIndic _ _ RemPastTense => "yi" ++BIND ; + VFIndic _ _ _ => "i"++BIND + } ; + Third C9_6 Pl => table { VFIndic _ _ _ => "ma"++BIND } ; + Third C14 _ => table { VFIndic _ _ _ => "bu"++BIND } ; + Third C15 _ => table { VFIndic _ _ _ => "ku"++BIND } ; + Third C17 _ => table { VFIndic _ _ _ => "ku"++BIND } ; + First Sg => table { VFIndic _ _ _ => "m"++BIND } ; + First Pl => table { VFIndic _ _ _ => "ba"++BIND } ; + Second Sg => table { VFIndic _ _ _ => "m"++BIND } ; + Second Pl => table { VFIndic _ _ _ => "om"++BIND } + } ; + + adjPref : Agr -> VForm -> Str = \agr,vform -> case vform of { + VFIndic RelCl Pos PresTense => case agr of { + (First Sg | Second Sg | Third C1_2 Sg | Third C1a_2a Sg | Third C3_4 Sg) => "m"++BIND ; + (First Pl | Second Pl | Third _ _) => [] + } ; + VFIndic _ _ _ => adjPrefLookup!agr!vform + } ; + + atwhichPhiPref : Agr => Str = + table { + Third C1_2 Sg => "mu" ; + Third C1_2 Pl => "ba" ; + Third C1a_2a Sg => "mu" ; + Third C1a_2a Pl => "ba" ; + Third C3_4 Sg => "mu" ; + Third C3_4 Pl => "mi" ; + Third C5_6 Sg => "li" ; + Third C5_6 Pl => "ma" ; + Third C7_8 Sg => "si" ; + Third C7_8 Pl => "zi" ; + Third C9_10 Sg => "yi" ; + Third C9_10 Pl => "zi" ; + Third C11_10 Sg => "lu" ; + Third C11_10 Pl => "zi" ; + Third C9_6 Sg => "yi" ; + Third C9_6 Pl => "ma" ; + Third C14 _ => "bu" ; + Third C15 _ => "ku" ; + Third C17 _ => "ku" ; + First Sg => "mu" ; + First Pl => "ba" ; + Second Sg => "mu" ; + Second Pl => "om" + } ; + + ----------- + -- NOUNS -- + ----------- + -- worst case + mkNoun : (noms,nomp,locs,locp : Str) -> ClassGender -> { s : Number => NForm => Str ; c : ClassGender ; empty : Str } = + \noms,nomp,locs,locp,cg -> + let + sg_agr = Third cg Sg ; + pl_agr = Third cg Pl ; + in + { + s = table { + Sg => table { + NFull => noms ; + NReduced => (drop_init_vowel noms) ; + NPoss => (drop_init_vowel noms) ; + NLoc => locs + } ; + Pl => table { + NFull => nomp ; + NReduced => (drop_init_vowel nomp) ; + NPoss => (drop_init_vowel nomp) ; + NLoc => locp + } + } ; + c = cg ; + empty = [] + } ; + + semiRegNoun : (root,locs,locp : Str) -> ClassGender -> { s : Number => NForm => Str ; c : ClassGender ; empty : Str } = + \root,locs,locp,cg -> + let + noms : Str = nomNoun root Sg cg ; + nomp : Str = nomNoun root Pl cg ; + in + mkNoun noms nomp locs locp cg ; + + mkELocN : (root : Str) -> ClassGender -> { s : Number => NForm => Str ; c : ClassGender ; empty : Str } = + \root,cg -> + let + noms : Str = nomNoun root Sg cg ; + nomp : Str = nomNoun root Pl cg ; + locs : Str = onlyLocPrefix root Sg cg ; + locp : Str = onlyLocPrefix root Pl cg ; + in + mkNoun noms nomp locs locp cg ; + + regNoun : Str -> ClassGender -> { s : Number => NForm => Str ; c : ClassGender ; empty : Str } = + \root,cg -> + let + noms : Str = nomNoun root Sg cg ; + nomp : Str = nomNoun root Pl cg ; + locs : Str = locNoun root Sg cg ; + locp : Str = locNoun root Pl cg ; + empty = [] + in + mkNoun noms nomp locs locp cg ; + + kwaProperName : Str -> ClassGender -> { s : Number => NForm => Str ; c : ClassGender ; empty : Str } = + \root,cg -> + let + noms : Str = nomNoun root Sg cg ; + nomp : Str = nomNoun root Sg cg ; + locs : Str = "Kwa"+root ; + locp : Str = "Kwa"+root ; + in + mkNoun noms nomp locs locp cg ; + + initNP : Bool -> Agr -> RInit = \ispron,agr -> case ispron of { + True => RC ; + False => nominit!agr + } ; + + nominit : Agr => RInit = + table { + Third C1_2 Sg => RU ; + Third C1_2 Pl => RA ; + Third C1a_2a Sg => RU ; + Third C1a_2a Pl => RO ; + Third C3_4 Sg => RU ; + Third C3_4 Pl => RI ; + Third C5_6 Sg => RI ; + Third C5_6 Pl => RA ; + Third C7_8 Sg => RI ; + Third C7_8 Pl => RI ; + Third C9_10 Sg => RI ; + Third C9_10 Pl => RI ; + Third C11_10 Sg => RU ; + Third C11_10 Pl => RI ; + Third C9_6 Sg => RI ; + Third C9_6 Pl => RA ; + Third C14 _ => RU ; + Third C15 _ => RU ; + Third C17 _ => RU ; + (First _ | Second _ ) => RC + } ; + + locinit : Agr => RInit = + table { + Third C1_2 Sg => RC ; + Third C1_2 Pl => RC ; + Third C1a_2a Sg => RC ; + Third C1a_2a Pl => RC ; + Third _ _ => RE ; + (First _ | Second _ ) => RC + } ; + + onlyLocPrefix : Str -> Number -> ClassGender -> Str = \root,n,cg -> + case of + { + => case root of { + _+#cons+#vowel+#cons+_+#vowel+_ => "kum"+root ; + _ => "kumu"+root + } ; -- umu for single syllables, um for the rest + => "kuba"+root ; -- abe for tribes or guilds + => "ku"+root ; + => "ko"+root ; + => case root of { + ("m"|"n")+_ => "e"+root ; + _ => "em"+root + } ; + => "emi"+root ; + => "e"+root ; -- ili long form (not used?) + => case root of { + "i"+_ => "eme"+root ; + _ => "ema"+root + } ; -- ame for roots starting with i + => case root of { + #vowel+_ => "es"+root ; + _ => "esi"+root + } ; -- is for roots starting with vowel + => case root of { + #vowel+_ => "ez"+root ; + _ => "ezi"+root -- iz for roots starting with vowel + } ; + => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) + => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) + => "o"+root ; + => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh + => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) + => case root of { + "i"+_ => "eme"+root ; + _ => "ema"+root + } ; -- ame for roots starting with i + => "ebu"+root ; + => case root of { + ("a"|"e")+_ => "ekw"+root ; + (#cons|"y")+_ => "eku"+root ; + _ => "ek"+root + } ; -- ukw for roots starting with a/e, uk for roots starting with o + => "eku"+root -- sometimes ukw + } ; + + -- Src: Doke, Linda Hall + addLocSuffix : Str -> Str = \root -> + case root of + { + _+"mbo" => (tk 3 root) + "njeni" ; + _+"mbu" => (tk 3 root) + "njini" ; + _+"pho" => (tk 3 root) + "sheni" ; + _+"bho" => (tk 3 root) + "jeni" ; + _+"phu" => (tk 3 root) + "shini" ; + _+"bhu" => (tk 3 root) + "jini" ; + _+"bo" => (tk 2 root) + "tsheni" ; + _+"bu" => (tk 2 root) + "tshini" ; + _+"mo" => (tk 2 root) + "nyeni" ; + _+"mu" => (tk 2 root) + "nyini" ; + _+("a"|"e") => (init root)+"eni" ; + _+"i" => (init root)+"ini" ; + _+"o" => (init root)+"weni" ; + _+"u" => (init root)+"wini" ; + _ => (init root)+"ini" + } ; + + drop_init_vowel : Str -> Str = \s -> + case s of { + ("a"|"e"|"i"|"o"|"u")+_ => (drop 1 s) ; + _ => s + } ; + + vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ; + cons : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"y"|"z") ; + labial_cons : pattern Str = #("p"|"b"|"f"|"v"|"w") ; + alveolar_cons : pattern Str = #("s"|"d"|"t"|"z") ; + nasal_de_asp : pattern Str = #("t"|"k"|"x"|"c"|"q") ; + nasal_m : pattern Str = #("v"|"f"|"b") ; + nasal_ng : pattern Str = #("x"|"c"|"q") ; + nasal : pattern Str = #("n"|"m") ; + + nomNoun : Str -> Number -> ClassGender -> Str = \root,n,cg -> + case of + { + => case root of { + _+#cons+#vowel+#cons+_+#vowel+_ => "um"+root ; + _ => "umu"+root + } ; -- umu for single syllables, um for the rest + => "aba"+root ; -- abe for tribes or guilds + => "u"+root ; + => "o"+root ; + => case root of { + ("m"|"n")+_+#vowel+#cons+_+#vowel+_ => "u"+root ; + _+(#cons|"y")+#vowel+#cons+_+#vowel+_ => "um"+root ; + "o"+_ => "um"+root ; + _ => "umu"+root + } ; -- umu for single syllables, um for the rest + => "imi"+root ; + => "i"+root ; -- ili long form (not used?) + => case root of { + "i"+_ => "ame"+root ; + _ => "ama"+root + } ; -- ame for roots starting with i + => case root of { + #vowel+_ => "is"+root ; + _ => "isi"+root + } ; -- is for roots starting with vowel + => case root of { + #vowel+_ => "iz"+root ; + _ => "izi" + root + } ; + => "i" + prefix_nasal root ; + => "izi" + prefix_nasal root ; + => "u"+root ; + => "izi" + prefix_nasal root ; + => "i" + prefix_nasal root ; + => case root of { + "i"+_ => "ame"+root ; + _ => "ama"+root + } ; -- ame for roots starting with i + => "ubu"+root ; + => case root of { + ("a"|"e")+_ => "ukw"+root ; + (#cons|"y")+_ => "uku"+root ; + _ => "uk"+root + } ; -- ukw for roots starting with a/e, uk for roots starting with o + => "uku"+root -- sometimes ukw + } ; + + locNoun : Str -> Number -> ClassGender -> Str = \root,n,cg -> + case of + { + => case root of { + _+#cons+#vowel+#cons+_+#vowel+_ => "kum"+root ; + _ => "kumu"+root + } ; -- umu for single syllables, um for the rest + => "kuba"+root ; -- abe for tribes or guilds + => "ku"+root ; + => "ko"+root ; + => case root of { + ("m"|"n")+_ => "e"+(addLocSuffix root) ; + _ => "em"+(addLocSuffix root) + } ; + => "emi"+(addLocSuffix root) ; + => "e"+(addLocSuffix root) ; -- ili long form (not used?) + => case root of { + "i"+_ => "eme"+(addLocSuffix root) ; + _ => "ema"+(addLocSuffix root) + } ; -- ame for roots starting with i + => case root of { + #vowel+_ => "es"+(addLocSuffix root) ; + _ => "esi"+(addLocSuffix root) + } ; -- is for roots starting with vowel + => case root of { + #vowel+_ => "ez"+(addLocSuffix root) ; + _ => "ezi"+(addLocSuffix root) -- iz for roots starting with vowel + } ; + => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) + => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) + => "o"+(addLocSuffix root) ; + => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh + => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) + => case root of { + "i"+_ => "eme"+(addLocSuffix root) ; + _ => "ema"+(addLocSuffix root) + } ; -- ame for roots starting with i + => "ebu"+(addLocSuffix root) ; + => case root of { + ("a"|"e")+_ => "ekw"+(addLocSuffix root) ; + (#cons|"y")+_ => "eku"+root ; + _ => "ek"+(addLocSuffix root) + } ; -- ukw for roots starting with a/e, uk for roots starting with o + => "eku"+(addLocSuffix root) -- sometimes ukw + } ; + + locS : Agr => Str = table { + Third C1_2 _ => [] ; + Third C1a_2a _ => [] ; + Third _ _ => "s"++BIND ; + (First _ | Second _ ) => [] + } ; + + -- loc_n_cop_pref : VForm -> Agr -> Str = \vform,agr -> case vform of { + -- VFIndic _ Neg PresTense => kho_cop vform agr ; + -- VFIndic _ _ _ => id_pre_cop_pref vform agr + -- } ; + + loc_n_cop_base : { + empty : Str ; + s : NForm => Str ; + agr : Agr ; + i : RInit ; + proDrop : Bool ; + isPron : Bool ; + } -> VForm -> Str = \np,vform -> case vform of { + VFIndic _ Neg PresTense => np.s!NLoc ; + VFIndic _ _ _ => locS!np.agr ++ np.s!NLoc + } ; + + lin_NP : { + empty : Str ; + s : NForm => Str ; + mod : Str ; + dem : Str ; + predet_pre : Str ; + predet_post : Str ; + agr : Agr ; + proDrop : Bool ; + isPron : Bool ; + -- reqLocS : Bool ; + qdef : QuantDef + } -> Str = \np -> + np.predet_pre ++ + case of { +
=> np.s ! NFull ++ np.mod ; + => np.dem ++ np.s ! NReduced ++ np.mod ; + => np.dem ++ np.s ! NFull ++ np.mod + } + ++ np.predet_post ; + + loc_NP : { + empty : Str ; + s : NForm => Str ; + mod : Str ; + dem : Str ; + predet_pre : Str ; + predet_post : Str ; + agr : Agr ; + proDrop : Bool ; + isPron : Bool ; + -- reqLocS : Bool ; + qdef : QuantDef + } -> Str = \np -> np.s!NLoc ++ np.dem ++ np.mod ++ np.predet_pre ++ np.predet_post ; + + poss_NP : { + empty : Str ; + s : NForm => Str ; + -- mod : Str ; + -- dem : Str ; + -- predet_pre : Str ; + -- predet_post : Str ; + agr : Agr ; + proDrop : Bool ; + isPron : Bool + -- reqLocS : Bool ; + -- qdef : QuantDef + } -> Str = \np -> np.s!NPoss ; + + pref_lin_NP : { + empty : Str ; + s : NForm => Str ; + mod : Str ; + dem : Str ; + predet_pre : Str ; + predet_post : Str ; + agr : Agr ; + proDrop : Bool ; + isPron : Bool ; + -- reqLocS : Bool ; + qdef : QuantDef + } -> Str = \np -> np.s ! NReduced ++ np.dem ++ np.mod + ++ np.predet_pre ++ np.predet_post ; + + ---------------- + -- CONGRUENCE -- + ---------------- + + -- SUBJECT AGREEMENT MORPHEME -- + + -- NOTE : the empty SCVow for class 6 might produce a dangling BIND token, causing bugs + -- TODO: SC following vowel + subjConcLookup : Agr => SCForm => Str = + table { + -- agr default before vowel after neg pref sit/part potential/subjunct/indirect relative + First Sg => table {SC => "ngi" ; SCVow => "ng"++BIND ; SCNeg => "ngi" ; SCNegVow => "ng" ; SCPart => "ngi" ; SCPS => "ngi" ; SCVowP => "ngi" ; SCBe => "bengi" ; SCRP => "ngangi" } ; + Second Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "wu" ; SCNegVow => "w" ; SCPart => "u" ; SCPS => "u" ; SCVowP => "wu" ; SCBe => "ubu" ; SCRP => "wawu" } ; + First Pl => table {SC => "si" ; SCVow => "s"++BIND ; SCNeg => "si" ; SCNegVow => "s" ; SCPart => "si" ; SCPS => "si" ; SCVowP => "si" ; SCBe => "besi" ; SCRP => "sasi" } ; + Second Pl => table {SC => "ni" ; SCVow => "n"++BIND ; SCNeg => "ni" ; SCNegVow => "n" ; SCPart => "ni" ; SCPS => "ni" ; SCVowP => "ni" ; SCBe => "beni" ; SCRP => "nani" } ; + Third C1_2 Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "ka" ; SCNegVow => "k" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wu" ; SCBe => "ube" ; SCRP => "waye" } ; + Third C1_2 Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "babe" ; SCRP => "babe" } ; + Third C1a_2a Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "ka" ; SCNegVow => "k" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wu" ; SCBe => "ube" ; SCRP => "waye" } ; + Third C1a_2a Pl => table {SC => "ba" ; SCVow => "b"++BIND ; SCNeg => "ba" ; SCNegVow => "b" ; SCPart => "be" ; SCPS => "ba" ; SCVowP => "ba" ; SCBe => "babe" ; SCRP => "babe" } ; + Third C3_4 Sg => table {SC => "u" ; SCVow => "w"++BIND ; SCNeg => "wu" ; SCNegVow => "w" ; SCPart => "u" ; SCPS => "u" ; SCVowP => "wu" ; SCBe => "ubu" ; SCRP => "wawu" } ; + Third C3_4 Pl => table {SC => "i" ; SCVow => "y"++BIND ; SCNeg => "yi" ; SCNegVow => "y" ; SCPart => "i" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" ; SCRP => "yayi" } ; + Third C5_6 Sg => table {SC => "li" ; SCVow => "l"++BIND ; SCNeg => "li" ; SCNegVow => "l" ; SCPart => "li" ; SCPS => "li" ; SCVowP => "li" ; SCBe => "beli" ; SCRP => "lali" } ; + Third C5_6 Pl => table {SC => "a" ; SCVow => [] ; SCNeg => "wa" ; SCNegVow => "w" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wa" ; SCBe => "abe" ; SCRP => "aye" } ; + Third C7_8 Sg => table {SC => "si" ; SCVow => "s"++BIND ; SCNeg => "si" ; SCNegVow => "s" ; SCPart => "si" ; SCPS => "si" ; SCVowP => "si" ; SCBe => "besi" ; SCRP => "sasi" } ; + Third C7_8 Pl => table {SC => "zi" ; SCVow => "z"++BIND ; SCNeg => "zi" ; SCNegVow => "z" ; SCPart => "zi" ; SCPS => "zi" ; SCVowP => "zi" ; SCBe => "bezi" ; SCRP => "zazi" } ; + Third C9_10 Sg => table {SC => "i" ; SCVow => "y"++BIND ; SCNeg => "yi" ; SCNegVow => "y" ; SCPart => "yi" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" ; SCRP => "yayi" } ; + -- Third C9_10 Sg => table {SC => "i" ; SCVow => "i"++BIND ; SCNeg => "yi" ; SCPart => "yi" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" } ; + Third C9_10 Pl => table {SC => "zi" ; SCVow => "z"++BIND ; SCNeg => "zi" ; SCNegVow => "z" ; SCPart => "zi" ; SCPS => "zi" ; SCVowP => "zi" ; SCBe => "bezi" ; SCRP => "zazi" } ; + Third C11_10 Sg => table {SC => "lu" ; SCVow => "lw"++BIND ; SCNeg => "lu" ; SCNegVow => "l" ; SCPart => "lu" ; SCPS => "lu" ; SCVowP => "lu" ; SCBe => "belu" ; SCRP => "lwalu" } ; + Third C11_10 Pl => table {SC => "zi" ; SCVow => "z"++BIND ; SCNeg => "zi" ; SCNegVow => "z" ; SCPart => "zi" ; SCPS => "zi" ; SCVowP => "zi" ; SCBe => "bezi" ; SCRP => "zazi" } ; + Third C9_6 Sg => table {SC => "i" ; SCVow => "y"++BIND ; SCNeg => "yi" ; SCNegVow => "y" ; SCPart => "yi" ; SCPS => "i" ; SCVowP => "yi" ; SCBe => "ibi" ; SCRP => "yayi" } ; + Third C9_6 Pl => table {SC => "a" ; SCVow => [] ; SCNeg => "wa" ; SCNegVow => "w" ; SCPart => "e" ; SCPS => "a" ; SCVowP => "wa" ; SCBe => "abe" ; SCRP => "aye" } ; + Third C14 _ => table {SC => "bu" ; SCVow => "b"++BIND ; SCNeg => "bu" ; SCNegVow => "b" ; SCPart => "bu" ; SCPS => "bu" ; SCVowP => "bu" ; SCBe => "bebu" ; SCRP => "kwaku" } ; + Third C15 _ => table {SC => "ku" ; SCVow => "kw"++BIND ; SCNeg => "ku" ; SCNegVow => "k" ; SCPart => "ku" ; SCPS => "ku" ; SCVowP => "ku" ; SCBe => "beku" ; SCRP => "kwaku" } ; + Third C17 _ => table {SC => "ku" ; SCVow => "kw"++BIND ; SCNeg => "ku" ; SCNegVow => "k" ; SCPart => "ku" ; SCPS => "ku" ; SCVowP => "ku" ; SCBe => "beku" ; SCRP => "kwaku" } + } ; + + -- scvow_bind : Agr -> Str = \agr -> case agr of { + -- (Third C5_6 Pl|Third C9_6 Pl) => [] ; + -- _ => subjConcLookup ! agr ! SCVow ++BIND + -- } ; + + subjConc : VForm -> Agr -> Bool -> Str = \vform,agr,prevow -> + case of { + => subjConcLookup ! agr ! SCNeg ++BIND ; + => subjConcLookup ! agr ! SCNegVow ++BIND ; + => subjConcLookup ! agr ! SCVow ; + <_,VFIndic _ _ RemPastTense> => subjConcLookup ! agr ! SCVow ; + <_,VFIndic _ _ _> => subjConcLookup ! agr ! SC ++BIND + } ; + + -- -be aux: reference time in relation to coding time + -- relSubjConc : BasicTense -> Agr -> Str = \tense,agr -> + -- relSubjConc : BasicTense -> Agr -> Str = \tense,agr -> + -- case tense of { + -- PastTense => (subjConcLookup ! agr ! SCVow) ++ "a" ++BIND++ case agr of { + -- Second Sg | Third C3_4 Sg => "w" ++BIND ; + -- Third C1_2 Sg | Third C1a_2a Sg | Third C3_4 Pl | Third C5_6 Pl | Third C9_10 Sg => "y" ++BIND ; + -- First _ | Second _ | Third _ _ => [] + -- } ; + -- PerfTense | PresTense => subjConcLookup ! agr ! SC ++BIND++ "be" ; -- NOTE: present tense doesn't make much sense here, so default to perf + -- FutTense => subjConcLookup ! agr ! SC ++BIND++ "zobe" + -- } ; + + icomp_pref : VForm -> Agr -> Str = \vform,agr -> + let + neg1 = icompNeg1 vform ; + neg2 = icompNeg2 vform ; + in + case vform of { + VFIndic _ Pos PresTense => subjConcLookup ! agr ! SC ++BIND ; + VFIndic _ Pos PastTense => [] ; -- "be"++BIND++ subjConcLookup ! agr ! SCBe ++BIND ; + VFIndic _ Pos RemPastTense => subjConcLookup ! agr ! SC ++BIND++ "be" ++ subjConcLookup ! agr ! SCBe ++BIND ; + VFIndic _ Pos FutTense => subjConcLookup ! agr ! SC ++BIND ++ "zobe" ++ subjConcLookup ! agr ! SC ++BIND ; + VFIndic _ Pos RemFutTense => subjConcLookup ! agr ! SC ++BIND ++ "yobe" ++ subjConcLookup ! agr ! SC ++BIND ; + + -- might have to add an SCNegBe to the table + VFIndic _ Neg PresTense => neg1 ++ subjConcLookup ! agr ! SCNeg ++BIND ++ neg2 ; + VFIndic _ Neg PastTense => "nga" ; -- neg1 ++ "be"++BIND++ subjConcLookup ! agr ! SCBe ++BIND ++ neg2 ; + VFIndic _ Neg RemPastTense => neg1 ++ subjConcLookup ! agr ! SC ++BIND++ "be" ++ subjConcLookup ! agr ! SCBe ++BIND ++ neg2 ; + VFIndic _ Neg FutTense => neg1 ++ subjConcLookup ! agr ! SCNeg ++BIND ++ "zobe" ++ subjConcLookup ! agr ! SCBe ++BIND ++ neg2 ; + VFIndic _ Neg RemFutTense => neg1 ++ subjConcLookup ! agr ! SCNeg ++BIND ++ "yobe" ++ subjConcLookup ! agr ! SCBe ++BIND ++ neg2 + } ; + + -- OBJECT AGREEMENT MORPHEME -- + + objConcLookup : Agr => OCForm => Str = + table { + First Sg => table {OC => "ngi" ; OCAE => "ng" ; OCIOU => "ng" ; OCMono => "ngi" ; OCThing => "ngi" } ; + Second Sg => table {OC => "ku" ; OCAE => "k" ; OCIOU => "k" ; OCMono => "ku" ; OCThing => "ku" } ; + First Pl => table {OC => "si" ; OCAE => "s" ; OCIOU => "s" ; OCMono => "si" ; OCThing => "si" } ; + Second Pl => table {OC => "ni" ; OCAE => "n" ; OCIOU => "n" ; OCMono => "ni" ; OCThing => "ni" } ; + Third C1_2 Sg => table {OC => "m" ; OCAE => "m" ; OCIOU => "m" ; OCMono => "mu" ; OCThing => "wu" } ; + Third C1_2 Pl => table {OC => "ba" ; OCAE => "b" ; OCIOU => "b" ; OCMono => "ba" ; OCThing => "ba" } ; + Third C1a_2a Sg => table {OC => "m" ; OCAE => "m" ; OCIOU => "m" ; OCMono => "mu" ; OCThing => "wu" } ; + Third C1a_2a Pl => table {OC => "ba" ; OCAE => "b" ; OCIOU => "b" ; OCMono => "ba" ; OCThing => "ba" } ; + Third C3_4 Sg => table {OC => "wu" ; OCAE => "w" ; OCIOU => "w" ; OCMono => "wu" ; OCThing => "wu" } ; + Third C3_4 Pl => table {OC => "yi" ; OCAE => "y" ; OCIOU => "y" ; OCMono => "yi" ; OCThing => "yi" } ; + Third C5_6 Sg => table {OC => "li" ; OCAE => "l" ; OCIOU => "l" ; OCMono => "li" ; OCThing => "li" } ; + Third C5_6 Pl => table {OC => "wa" ; OCAE => "w" ; OCIOU => "w" ; OCMono => "wa" ; OCThing => "wa" } ; + Third C7_8 Sg => table {OC => "si" ; OCAE => "s" ; OCIOU => "s" ; OCMono => "si" ; OCThing => "si" } ; + Third C7_8 Pl => table {OC => "zi" ; OCAE => "z" ; OCIOU => "z" ; OCMono => "zi" ; OCThing => "zi" } ; + Third C9_10 Sg => table {OC => "yi" ; OCAE => "y" ; OCIOU => "y" ; OCMono => "yi" ; OCThing => "yi" } ; + Third C9_10 Pl => table {OC => "zi" ; OCAE => "z" ; OCIOU => "z" ; OCMono => "zi" ; OCThing => "zi" } ; + Third C11_10 Sg => table {OC => "lu" ; OCAE => "lw" ; OCIOU => "l" ; OCMono => "lu" ; OCThing => "lu" } ; + Third C11_10 Pl => table {OC => "zi" ; OCAE => "z" ; OCIOU => "z" ; OCMono => "zi" ; OCThing => "zi" } ; + Third C9_6 Sg => table {OC => "yi" ; OCAE => "y" ; OCIOU => "y" ; OCMono => "yi" ; OCThing => "yi" } ; + Third C9_6 Pl => table {OC => "wa" ; OCAE => "w" ; OCIOU => "w" ; OCMono => "wa" ; OCThing => "wa" } ; + Third C14 _ => table {OC => "bu" ; OCAE => "bw" ; OCIOU => "b" ; OCMono => "bu" ; OCThing => "bu" } ; + Third C15 _ => table {OC => "ku" ; OCAE => "kw" ; OCIOU => "k" ; OCMono => "ku" ; OCThing => "ku" } ; + Third C17 _ => table {OC => "ku" ; OCAE => "kw" ; OCIOU => "k" ; OCMono => "ku" ; OCThing => "ku" } + } ; + + -- ignoring the thing thing for now, must probably add something like gender to nouns... + objConc : Agr -> RInit -> Syl -> Str = \agr,rinit,syl -> + case rinit of { + (RA|RE) => objConcLookup ! agr ! OCAE ++BIND ; + (RI|RO|RU) => objConcLookup ! agr ! OCIOU ++BIND ; + RC => case syl of { + SylMono => objConcLookup ! agr ! OCMono ++BIND ; + _ => objConcLookup ! agr ! OC ++BIND + } + } ; + + -- ADJECTIVE ANTECEDENT AGREEMENT MORPHEME -- + + relAdjPrefLookup : Agr => Str = --table { + -- Pos => + table { + Third C1_2 Sg => "m" ; + Third C1_2 Pl => "" ; + Third C1a_2a Sg => "m" ; + Third C1a_2a Pl => "" ; + Third C3_4 Sg => "m" ; + Third C3_4 Pl => "mi" ; + Third C5_6 Sg => "" ; + Third C5_6 Pl => "ma" ; + Third C7_8 Sg => "" ; + Third C7_8 Pl => "" ; + Third C9_10 Sg => "" ; + Third C9_10 Pl => "" ; + Third C11_10 Sg => "" ; + Third C11_10 Pl => "" ; + Third C9_6 Sg => "" ; + Third C9_6 Pl => "ma" ; + Third C14 _ => "bu" ; + Third C15 _ => "ku" ; + Third C17 _ => "ku" ; + (First _ | Second _ ) => "m" + -- } ; + -- Neg => table { + -- Third C1_2 Sg => "ongem" ; + -- Third C1_2 Pl => "angeba" ; + -- Third C1a_2a Sg => "ongem" ; + -- Third C1a_2a Pl => "angeba" ; + -- Third C3_4 Sg => "ongem" ; + -- Third C3_4 Pl => "engemi" ; + -- Third C5_6 Sg => "engeli" ; + -- Third C5_6 Pl => "angema" ; + -- Third C7_8 Sg => "engesi" ; + -- Third C7_8 Pl => "engezi" ; + -- Third C9_10 Sg => "enge" ; + -- Third C9_10 Pl => "engezi" ; + -- Third C11_10 Sg => "ongelu" ; + -- Third C11_10 Pl => "engezi" ; + -- Third C9_6 Sg => "enge" ; + -- Third C9_6 Pl => "angema" ; + -- Third C14 _ => "ongebu" ; + -- Third C15 _ => "ongeku" ; + -- Third C17 _ => "ongeku" ; + -- (First _ | Second _ ) => "ongem" + -- } + } ; + + -- RELATIVE ANTECEDENT AGREEMENT MORPHEME -- + + relConc : VForm -> Agr -> RInit -> Str = \p,a,r -> case p of { + -- VFIndic CType Polarity BasicTense + VFIndic RelCl Pos PresTense => relConcLookup!a!r ; + VFIndic RelCl Pos RemPastTense => relConcLookup!a!RA ; + VFIndic RelCl Pos PastTense => relConcLookup!a!r ; + VFIndic RelCl Pos _ => relConcLookup!a!RC ; + VFIndic RelCl Neg PresTense => case r of { + RC => relConcLookup!a!RC ++ "nga" ++BIND ; + _ => relConcLookup!a!RC ++ "ng" ++BIND + } ; + VFIndic RelCl Neg PastTense => case r of { + RC => relConcLookup!a!RC ++ "nga" ++BIND ; + _ => relConcLookup!a!RC ++ "ng" ++BIND + } ; + VFIndic RelCl Neg RemPastTense => case r of { + RC => relConcLookup!a!RC ++ "nga" ++BIND ; + _ => relConcLookup!a!RC ++ "ng" ++BIND + } ; + VFIndic RelCl Neg FutTense => relConcLookup!a!RC ++ "nga" ++BIND ; + VFIndic RelCl Neg RemFutTense => relConcLookup!a!RC ++ "nga" ++BIND ; + VFIndic _ _ _ => [] + } ; + + relConcCop : VForm -> Agr -> RInit ->Str = \vform,a,r -> case vform of { + VFIndic _ _ PresTense => relConcLookup!a!RC ; + VFIndic _ _ FutTense => relConcLookup!a!RC ; + VFIndic _ _ RemFutTense => relConcLookup!a!RC ; + VFIndic _ _ PastTense => relCopConcBeLookup!a ; + VFIndic _ _ RemPastTense => case a of { + Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye + (First _ | Second _ | Third _ _ ) => shortRelConc!a ++BIND --++ subjConcLookup!a!SCRP + } + } ; + + relConcLookup : Agr => RInit => Str = + table { + Third C1_2 Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ; + Third C1_2 Pl => table { RC => "aba"++BIND ; _ => "ab"++BIND } ; + Third C1a_2a Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ; + Third C1a_2a Pl => table { RC => "aba"++BIND ; _ => "ab"++BIND } ; + Third C3_4 Sg => table { RO => [] ; (RA|RE) => "ow"++BIND ; _ => "o"++BIND } ; + Third C3_4 Pl => table { RE => [] ; (RA|RO) => "ey" ++BIND ; _ => "e"++BIND } ; + Third C5_6 Sg => table { RC => "eli"++BIND ; _ => "el"++BIND } ; + Third C5_6 Pl => table { RC => "a"++BIND ; _ => [] } ; + Third C7_8 Sg => table { RC => "esi"++BIND ; _ => "es"++BIND } ; + Third C7_8 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ; + Third C9_10 Sg => table { RE => [] ; (RA|RO) => "ey" ++BIND ; _ => "e"++BIND } ; + Third C9_10 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ; + Third C11_10 Sg => table { RC => "olu"++BIND ; (RA|RE) => "olw" ; _ => "ol"++BIND } ; + Third C11_10 Pl => table { RC => "ezi"++BIND ; _ => "ez"++BIND } ; + Third C9_6 Sg => table { RE => [] ; (RA|RO) => "ey" ; _ => "e"++BIND } ; + Third C9_6 Pl => table { RC => "a"++BIND ; _ => [] } ; + Third C14 _ => table { RC => "obu"++BIND ; _ => "ob"++BIND } ; + Third C15 _ => table { RC => "oku"++BIND ; (RA|RE) => "okw" ; _ => "ok"++BIND } ; + Third C17 _ => table { RC => "oku"++BIND ; (RA|RE) => "okw" ; _ => "ok"++BIND } ; + First Sg => table { RC => "engi"++BIND ; _ => "eng"++BIND } ; + First Pl => table { RC => "esi"++BIND ; _ => "es"++BIND } ; + Second Sg => table { RE => "ow"++BIND ; _ => "o"++BIND } ; + Second Pl => table { RC => "eni"++BIND ; _ => "en"++BIND } + } ; + + relCopConcBeLookup : Agr => Str = + table { + Third C1_2 Sg => "obe"++BIND ; + Third C1_2 Pl => "ababe"++BIND ; + Third C1a_2a Sg => "obe"++BIND ; + Third C1a_2a Pl => "ababe"++BIND ; + Third C3_4 Sg => "obu"++BIND ; + Third C3_4 Pl => "ebi"++BIND ; + Third C5_6 Sg => "ebeli"++BIND ; + Third C5_6 Pl => "abe"++BIND ; + Third C7_8 Sg => "ebesi"++BIND ; + Third C7_8 Pl => "ebezi"++BIND ; + Third C9_10 Sg => "ebi"++BIND ; + Third C9_10 Pl => "ebezi"++BIND ; + Third C11_10 Sg => "obelu"++BIND ; + Third C11_10 Pl => "ebezi"++BIND ; + Third C9_6 Sg => "ebi"++BIND ; + Third C9_6 Pl => "abe"++BIND ; + Third C14 _ => "obebu"++BIND ; + Third C15 _ => "obeku"++BIND ; + Third C17 _ => "obeku"++BIND ; + First Sg => "ebengi"++BIND ; + First Pl => "ebesi"++BIND ; + Second Sg => "obu"++BIND ; + Second Pl => "ebeni"++BIND + } ; + + -- relCopConcBeLookup : Agr => RInit => Str = + -- table { + -- Third C1_2 Sg => table { _ => "obe"++BIND } ; + -- Third C1_2 Pl => table { _ => "ababe"++BIND } ; + -- Third C1a_2a Sg => table { _ => "obe"++BIND } ; + -- Third C1a_2a Pl => table { _ => "ababe"++BIND } ; + -- Third C3_4 Sg => table { _ => "obe"++BIND } ; + -- Third C3_4 Pl => table { _ => "ebi"++BIND } ; + -- Third C5_6 Sg => table { _ => "beli"++BIND } ; + -- Third C5_6 Pl => table { _ => "abe"++BIND } ; + -- Third C7_8 Sg => table { _ => "ebesi"++BIND } ; + -- Third C7_8 Pl => table { _ => "ebezi"++BIND } ; + -- Third C9_10 Sg => table { _ => "ebi"++BIND } ; + -- Third C9_10 Pl => table { _ => "ebezi"++BIND } ; + -- Third C11_10 Sg => table { _ => "obelu"++BIND } ; + -- Third C11_10 Pl => table { _ => "ebezi"++BIND } ; + -- Third C9_6 Sg => table { _ => "ebi"++BIND } ; + -- Third C9_6 Pl => table { _ => "abe"++BIND } ; + -- Third C14 _ => table { _ => "obebu"++BIND } ; + -- Third C15 _ => table { _ => "obeku"++BIND } ; + -- Third C17 _ => table { _ => "obeku"++BIND } ; + -- First Sg => table { _ => "ebengi"++BIND } ; + -- First Pl => table { _ => "ebesi"++BIND } ; + -- Second Sg => table { _ => "obe"++BIND } ; + -- Second Pl => table { _ => "ebeni"++BIND } + -- } ; + + -- ENUMERATIVE ANTECEDENT AGREEMENT MORPHEME -- + + enumConc : Polarity -> Agr -> Str = \pol,agr -> case pol of { + Pos => enumConcLookup!agr ; + Neg => "nge" ++BIND++ enumConcLookup!agr + } ; + + enumConcLookup : Agr => Str = + table { + Third C1_2 Sg => "mu" ; + Third C1_2 Pl => "ba" ; + Third C1a_2a Sg => "mu" ; + Third C1a_2a Pl => "ba" ; + Third C3_4 Sg => "mu" ; + Third C3_4 Pl => "mi" ; + Third C5_6 Sg => "li" ; + Third C5_6 Pl => "ma" ; + Third C7_8 Sg => "si" ; + Third C7_8 Pl => "zi" ; + Third C9_10 Sg => "yi" ; + Third C9_10 Pl => "zi" ; + Third C11_10 Sg => "lu" ; + Third C11_10 Pl => "zi" ; + Third C9_6 Sg => "yi" ; + Third C9_6 Pl => "ma" ; + Third C14 _ => "bu" ; + Third C15 _ => "ku" ; + Third C17 _ => "ku" ; + (First _ | Second _ ) => "mu" + } ; + + shortRelConc : Agr => Str = + table { + Third C1_2 Sg => "o" ; + Third C1_2 Pl => "a" ; + Third C1a_2a Sg => "o" ; + Third C1a_2a Pl => "a" ; + Third C3_4 Sg => "o" ; + Third C3_4 Pl => "e" ; + Third C5_6 Sg => "e" ; + Third C5_6 Pl => "a" ; + Third C7_8 Sg => "e" ; + Third C7_8 Pl => "e" ; + Third C9_10 Sg => "e" ; + Third C9_10 Pl => "e" ; + Third C11_10 Sg => "o" ; + Third C11_10 Pl => "e" ; + Third C9_6 Sg => "e" ; + Third C9_6 Pl => "a" ; + Third C14 _ => "o" ; + Third C15 _ => "o" ; + Third C17 _ => "o" ; + First Sg => "e" ; + First Pl => "e" ; + Second Sg => "o" ; + Second Pl => "e" + } ; + + -- POSSESSIVE ANTECEDENT AGREEMENT MORPHEME -- + + poss_concord_agr : Agr => RInit => Str = + table { + First Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + First Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } ; + Second Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Second Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } ; + Third C1_2 Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Third C1_2 Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } ; + Third C1a_2a Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Third C1a_2a Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } ; + Third C3_4 Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Third C3_4 Pl => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } ; + Third C5_6 Sg => table {(RA|RC) => "la" ; (RE|RI) => "le" ; (RO|RU) => "lo" } ; + Third C5_6 Pl => table {(RA|RC) => "a" ; (RE|RI) => "e" ; (RO|RU) => "o" } ; + Third C7_8 Sg => table {(RA|RC) => "sa" ; (RE|RI) => "se" ; (RO|RU) => "so" } ; + Third C7_8 Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } ; + Third C9_10 Sg => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } ; + Third C9_10 Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } ; + Third C11_10 Sg => table {(RA|RC) => "lwa" ; (RE|RI) => "lwe" ; (RO|RU) => "lo" } ; + Third C11_10 Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } ; + Third C9_6 Sg => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } ; + Third C9_6 Pl => table {(RA|RC) => "a" ; (RE|RI) => "e" ; (RO|RU) => "o" } ; + Third C14 _ => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } ; + Third C15 _ => table {(RA|RC) => "kwa" ; (RE|RI) => "kwe" ; (RO|RU) => "ko" } ; + Third C17 _ => table {(RA|RC) => "kwa" ; (RE|RI) => "kwe" ; (RO|RU) => "ko" } + } ; + + poss_concord : ClassGender => Number => RInit => Str = + table { + C1_2 => table { + Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } + } ; + C1a_2a => table { + Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Pl => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } + } ; + C3_4 => table { + Sg => table {(RA|RC) => "wa" ; (RE|RI) => "we" ; (RO|RU) => "wo" } ; + Pl => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } + } ; + C5_6 => table { + Sg => table {(RA|RC) => "la" ; (RE|RI) => "le" ; (RO|RU) => "lo" } ; + Pl => table {(RA|RC) => "a" ; (RE|RI) => "e" ; (RO|RU) => "o" } + } ; + C7_8 => table { + Sg => table {(RA|RC) => "sa" ; (RE|RI) => "se" ; (RO|RU) => "so" } ; + Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } + } ; + C9_10 => table { + Sg => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } ; + Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } + } ; + C11_10 => table { + Sg => table {(RA|RC) => "lwa" ; (RE|RI) => "lwe" ; (RO|RU) => "lo" } ; + Pl => table {(RA|RC) => "za" ; (RE|RI) => "ze" ; (RO|RU) => "zo" } + } ; + C9_6 => table { + Sg => table {(RA|RC) => "ya" ; (RE|RI) => "ye" ; (RO|RU) => "yo" } ; + Pl => table {(RA|RC) => "a" ; (RE|RI) => "e" ; (RO|RU) => "o" } + } ; + C14 => table { + _ => table {(RA|RC) => "ba" ; (RE|RI) => "be" ; (RO|RU) => "bo" } + } ; + C15 => table { + _ => table {(RA|RC) => "kwa" ; (RE|RI) => "kwe" ; (RO|RU) => "ko" } + } ; + C17 => table { + _ => table {(RA|RC) => "kwa" ; (RE|RI) => "kwe" ; (RO|RU) => "ko" } + } + } ; + + poss_concord_c1a : ClassGender => Number => RInit => Str = + table { + C1_2 => table { + Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ; + Pl => table {(RA|RC) => "baka" ; (RE|RI) => "bake" ; (RO|RU) => "bako" } + } ; + C1a_2a => table { + Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ; + Pl => table {(RA|RC) => "baka" ; (RE|RI) => "bake" ; (RO|RU) => "bako" } + } ; + C3_4 => table { + Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ; + Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } + } ; + C5_6 => table { + Sg => table {(RA|RC) => "lika" ; (RE|RI) => "like" ; (RO|RU) => "liko" } ; + Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } + } ; + C7_8 => table { + Sg => table {(RA|RC) => "sika" ; (RE|RI) => "sike" ; (RO|RU) => "siko" } ; + Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" } + } ; + C9_10 => table { + Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ; + Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" } + } ; + C11_10 => table { + Sg => table {(RA|RC) => "luka" ; (RE|RI) => "luke" ; (RO|RU) => "luko" } ; + Pl => table {(RA|RC) => "zika" ; (RE|RI) => "zike" ; (RO|RU) => "ziko" } + } ; + C9_6 => table { + Sg => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } ; + Pl => table {(RA|RC) => "ka" ; (RE|RI) => "ke" ; (RO|RU) => "ko" } + } ; + C14 => table { + _ => table {(RA|RC) => "buka" ; (RE|RI) => "buke" ; (RO|RU) => "buko" } + } ; + C15 => table { + _ => table {(RA|RC) => "kuka" ; (RE|RI) => "kuke" ; (RO|RU) => "kuko" } + } ; + C17 => table { + _ => table {(RA|RC) => "kuka" ; (RE|RI) => "kuke" ; (RO|RU) => "kuko" } + } + } ; + + -- QUANTITATIVE AGREEMENT MORPHEME -- + -- (demonstatives) + + exclQuantConc : Agr => Str = table { + Third C1_2 Sg => "ye" ; + Third C1_2 Pl => "bo" ; + Third C1a_2a Sg => "ye" ; + Third C1a_2a Pl => "bo" ; + Third C3_4 Sg => "wo" ; + Third C3_4 Pl => "yo" ; + Third C5_6 Sg => "lo" ; + Third C5_6 Pl => "o" ; + Third C7_8 Sg => "so" ; + Third C7_8 Pl => "zo" ; + Third C9_10 Sg => "yo" ; + Third C9_10 Pl => "zo" ; + Third C11_10 Sg => "lo" ; + Third C11_10 Pl => "zo" ; + Third C9_6 Sg => "yo" ; + Third C9_6 Pl => "o" ; + Third C14 _ => "bo" ; + Third C15 _ => "ko" ; + Third C17 _ => "ko" ; + First Sg => "nge" ; + First Pl => "so" ; + Second Sg => "we" ; + Second Pl => "no" + } ; + + ----------------- + -- COPULATIVES -- + ----------------- + + pre_cop_pref : VForm -> Agr -> Str = \vform,agr -> + let + sc = subjConc vform agr False ; + scvow = subjConc vform agr True + in + case vform of { + VFIndic _ Pos PresTense => sc ; + VFIndic _ Neg PresTense => "a" ++BIND++ subjConcLookup!agr!SCNeg ++BIND ; + VFIndic _ _ FutTense => sc ++ (tensePref vform RC SylMult) ++ "ba" ; + VFIndic _ _ RemFutTense => sc ++ (tensePref vform RC SylMult) ++ "ba" ; + VFIndic _ _ _ => [] + } ; + + ap_cop_pref : VForm -> Agr -> AType -> Str = \vform,agr,atype -> + let + sc = subjConc vform agr False ; + scvow = subjConc vform agr True + in + -- TODO: + -- for positive, present: SC only inserted with class 9 + case vform of { + VFIndic MainCl Pos PresTense => case of { + <(Third _ _ | First _ | Second _),AdjType> => [] ; + <(Third C9_10 Sg | Third C9_6 Sg),_> => sc ; -- i++i = i + <(Third _ _ | First _ | Second _),_> => sc + } ; + VFIndic MainCl Neg PresTense => case of { + <(Third C9_10 Sg | Third C9_6 Sg),AdjType> => "a" ++BIND++ "y" ++BIND ; + <(Third C9_10 Sg | Third C9_6 Sg),_> => "a" ++BIND++ subjConcLookup!agr!SCNeg ++BIND ; + <(Third _ _ | First _ | Second _),_> => "a" ++BIND++ subjConcLookup!agr!SCNeg ++BIND + } ; + VFIndic RelCl Pos PresTense => [] ; + VFIndic RelCl Neg PresTense => "nge" ++BIND ; + + VFIndic MainCl Pos (FutTense|RemFutTense) => case agr of { + -- Third C9_10 Sg | Third C9_6 Sg => sc ++ (tensePref vform RC SylMult) ++ "b" ; -- ++BIND ; + Third _ _ | First _ | Second _ => sc ++ (tensePref vform RC SylMult) ++ "ba" -- ++BIND + } ; + VFIndic RelCl Pos (FutTense|RemFutTense) => case agr of { + -- Third C9_10 Sg | Third C9_6 Sg => (tensePref vform RC SylMult) ++ "b" ; -- ++BIND ; + Third _ _ | First _ | Second _ => (tensePref vform RC SylMult) ++ "ba" -- ++BIND + } ; + VFIndic MainCl Neg (FutTense|RemFutTense) => case agr of { + -- Third C9_10 Sg | Third C9_6 Sg => "a" ++BIND++ sc ++ (tensePref vform RC SylMult) ++ "b" ; + Third _ _ | First _ | Second _ => "a" ++BIND++ sc ++ (tensePref vform RC SylMult) ++ "ba" + } ; + VFIndic RelCl Neg (FutTense|RemFutTense) => "nge" ++BIND++ (tensePref vform RC SylMult) ++ "ba" ; + + VFIndic MainCl Pos PastTense => subjConcLookup!agr!SCBe ++BIND ; + VFIndic MainCl Neg PastTense => subjConcLookup!agr!SCBe ++BIND++ "nge" ++BIND ; + VFIndic RelCl Pos PastTense => [] ; + VFIndic RelCl Neg PastTense => "nge" ++BIND ; + + VFIndic _ Pos RemPastTense => subjConcLookup!agr!SCRP ++BIND ; + VFIndic _ Neg RemPastTense => subjConcLookup!agr!SCRP ++BIND++ "nge" ++BIND + } ; + + id_pre_cop_pref : VForm -> Agr -> Str = \vform,agr -> let + sc = subjConc vform agr False + in case vform of { + VFIndic MainCl Pos PresTense => sc ; + VFIndic MainCl Neg PresTense => "a" ++BIND++ sc ; -- "aku" ++BIND ; + VFIndic RelCl Pos PresTense => [] ; + VFIndic RelCl Neg PresTense => "nge" ++BIND ; + + VFIndic MainCl Pos FutTense => sc ++ "zoba" ; + VFIndic MainCl Neg FutTense => "a" ++BIND++ sc ++ "zukuba" ; + VFIndic RelCl Pos FutTense => "zoba" ; + VFIndic RelCl Neg FutTense => "nge" ++BIND++ "zukuba" ; + + VFIndic MainCl Pos RemFutTense => sc ++ "yoba" ; + VFIndic MainCl Neg RemFutTense => "a" ++BIND++ sc ++ "yukuba" ; + VFIndic RelCl Pos RemFutTense => "yoba" ; + VFIndic RelCl Neg RemFutTense => "nge" ++BIND++ "yukuba" ; + + VFIndic MainCl Pos PastTense => subjConcLookup!agr!SCBe ++BIND ; + VFIndic MainCl Neg PastTense => subjConcLookup!agr!SCBe ++ BIND ++ "nge" ++BIND ; + VFIndic RelCl Pos PastTense => [] ; + VFIndic RelCl Neg PastTense => "nge" ++BIND ; + + VFIndic _ Pos RemPastTense => subjConcLookup!agr!SCRP ++BIND ; + VFIndic _ Neg RemPastTense => subjConcLookup!agr!SCRP ++BIND++ "nge" ++BIND + } ; + + assoc_pre_cop_pref : VForm -> Agr -> Str = \vform,agr -> let + sc = subjConc vform agr False + in case vform of { + VFIndic MainCl Pos PresTense => sc ; + VFIndic MainCl Neg PresTense => "a" ++BIND++ sc ; + VFIndic RelCl Pos PresTense => [] ; + VFIndic RelCl Neg PresTense => "nge"++BIND ; + + VFIndic MainCl Pos FutTense => sc ++ "zoba" ; + VFIndic MainCl Neg FutTense => "a" ++BIND++ sc ++ "zukuba" ; + VFIndic RelCl Pos FutTense => "zoba" ; + VFIndic RelCl Neg FutTense => "nge" ++BIND++ "zukuba" ; + + VFIndic MainCl Pos RemFutTense => sc ++ "yoba" ; + VFIndic MainCl Neg RemFutTense => "a" ++BIND++ sc ++ "yukuba" ; + VFIndic RelCl Pos RemFutTense => "yoba" ; + VFIndic RelCl Neg RemFutTense => "nge" ++BIND++ "yukuba" ; + + VFIndic MainCl Pos PastTense => subjConcLookup!agr!SCBe ++BIND ; + VFIndic MainCl Neg PastTense => subjConcLookup!agr!SCBe ++BIND++ "nge" ++BIND ; + VFIndic RelCl Pos PastTense => [] ; + VFIndic RelCl Neg PastTense => "nge" ++BIND ; + + VFIndic _ Pos RemPastTense => subjConcLookup!agr!SCRP ++BIND ; + VFIndic _ Neg RemPastTense => subjConcLookup!agr!SCRP ++BIND++ "nge" ++BIND + } ; + + -- REF: Poulos & Msimang p355 + -- id_cop_pref has the following forms + -- ngu: + -- - absolute pronoun of 2nd person sg + -- - class 1 + -- - all other a-, o-, u- commencing absolute pronouns and nouns except class 11 + -- + -- y: + -- - i- commencing absolute pronouns and nouns + -- + -- ngu: + -- - everything else? + id_cop_pref : Agr -> Str = \agr -> case agr of { + Third C1_2 Sg => "ng"++BIND ; + Third C1_2 Pl => "ng"++BIND ; + Third C1a_2a Sg => "ng"++BIND ; + Third C1a_2a Pl => "ng"++BIND ; + Third C3_4 Sg => "ng"++BIND ; + Third C3_4 Pl => "y"++BIND ; + Third C5_6 Sg => "y"++BIND ; + Third C5_6 Pl => "ng"++BIND ; + Third C7_8 Sg => "y"++BIND ; + Third C7_8 Pl => "y"++BIND ; + Third C9_10 Sg => "y"++BIND ; + Third C9_10 Pl => "y"++BIND ; + Third C11_10 Sg => "w"++BIND ; + Third C11_10 Pl => "y"++BIND ; + Third C9_6 Sg => "y"++BIND ; + Third C9_6 Pl => "ng"++BIND ; + Third C14 _ => "ng"++BIND ; + Third C15 _ => "ng"++BIND ; + Third C17 _ => "ng"++BIND ; + First Sg => "y"++BIND ; + First Pl => "y"++BIND ; + Second Sg => "ng"++BIND ; + Second Pl => "y"++BIND + } ; + + assoc_cop_pref : Polarity -> Agr -> Str = \pol,agr -> case pol of { + Neg => "na"++BIND ; + Pos => case agr of { + Third C1_2 Sg => "no" ; + Third C1_2 Pl => "na" ; + Third C1a_2a Sg => "no" ; + Third C1a_2a Pl => "na" ; + Third C3_4 Sg => "no" ; + Third C3_4 Pl => "ne" ; + Third C5_6 Sg => "ne" ; + Third C5_6 Pl => "na" ; + Third C7_8 Sg => "ne" ; + Third C7_8 Pl => "ne" ; + Third C9_10 Sg => "ne" ; + Third C9_10 Pl => "ne" ; + Third C11_10 Sg => "no" ; + Third C11_10 Pl => "ne" ; + Third C9_6 Sg => "ne" ; + Third C9_6 Pl => "na" ; + Third C14 _ => "no" ; + Third C15 _ => "no" ; + Third C17 _ => "no" ; + First Sg => "na" ; + First Pl => "na" ; + Second Sg => "na" ; + Second Pl => "na" + } ++BIND + } ; + + kho_cop : VForm -> Agr -> Str = \vform,agr -> case vform of { + VFIndic MainCl Neg PresTense => neg_kho_cop_pref agr ++ "kho"; + VFIndic RelCl Neg PresTense => (relConcCop vform agr RC) ++ (ap_cop_pref (VFIndic RelCl Neg PresTense) agr RelType) ++BIND++ "kho" ; + VFIndic RelCl p t => (relConcCop vform agr RC) ++ (ap_cop_pref (VFIndic RelCl p t) agr RelType) ++ "khona" ; + VFIndic MainCl p t => (ap_cop_pref (VFIndic MainCl p t) agr RelType) ++ "khona" + } ; + + neg_kho_cop_pref : Agr -> Str = \agr -> + "a" ++BIND++ + case agr of { + Third C1_2 Sg => "ke" ; + Third C1_2 Pl => "be" ; + Third C1a_2a Sg => "ke" ; + Third C1a_2a Pl => "be" ; + -- Third C3_4 Sg => "no" ; + -- Third C3_4 Pl => "ne" ; + -- Third C5_6 Sg => "ne" ; + Third C5_6 Pl => "we" ; + -- Third C7_8 Sg => "ne" ; + -- Third C7_8 Pl => "ne" ; + -- Third C9_10 Sg => "ne" ; + -- Third C9_10 Pl => "ne" ; + -- Third C11_10 Sg => "no" ; + -- Third C11_10 Pl => "ne" ; + -- Third C9_6 Sg => "ne" ; + -- Third C9_6 Pl => "na" ; + -- Third C14 _ => "no" ; + -- Third C15 _ => "no" ; + -- Third C17 _ => "no" ; + -- First Sg => "na" ; + -- First Pl => "na" ; + -- Second Sg => "na" ; + -- Second Pl => "na" + (First _ | Second _ | Third _ _ ) => subjConcLookup!agr!SCNeg + } ++BIND ; + + + ---------------------------------------- + -- OTHER + ---------------------------------------- + + link_conj : Str -> Str -> Str -> Bool -> Str = \conj,s_full,s_novow,fix -> case fix of { + True => conj ++BIND ++ s_novow ; + False => conj ++ s_full + } ; +} diff --git a/src/zulu/SentenceZul.gf b/src/zulu/SentenceZul.gf new file mode 100755 index 000000000..285ab122d --- /dev/null +++ b/src/zulu/SentenceZul.gf @@ -0,0 +1,247 @@ +concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { + + flags optimize=all_subs ; + + lin + + PredVP np vp = case vp.vptype of { + CopIdent => comp_pred np vp ; + CopAssoc => comp_pred np vp ; + CopDescr => comp_pred np vp ; + CopLoc => comp_pred np vp ; + CopEq => cl_with_eq_cop_predicate np vp ; + -- VACompl => cl_with_ap_comp_predicate np vp ; + AdvComp => cl_with_adv_comp_predicate np vp ; + (NoComp | VNPCompl) => { + s = \\p,t => np.s!NFull ++ (verb_prefix vp p t np.agr) ++ vp.s!MainCl!np.agr!p!t ++ vp.comp ++ vp.iadv ++ vp.advs ; + } ; + _ => cl_with_verb_predicate np vp + } ; + +-- PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; + + ImpVP vp = let + np = { + empty = [] ; + s = table {NFull|NReduced|NPoss|NLoc => []} ; + -- loc = [] ; + -- desc = [] ; + -- det = [] ; + agr = Second Sg ; + i = nominit!(Second Sg) ; + proDrop = True ; + isPron = True ; + heavy = False + -- reqLocS = True ; + -- qdef = Article Spec + } ; + impTense = PresTense + in case vp.vptype of { + VNPCompl => { + s = table { + Pos => vp.s!MainCl!np.agr!Pos!impTense ++ vp.comp ++ vp.iadv ++ vp.advs ; + Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense ++ vp.comp ++ vp.iadv ++ vp.advs + } + } ; + + CopIdent => {s = \\pol => (comp_pred np vp).s!pol!impTense } ; + CopAssoc => {s = \\pol => (comp_pred np vp).s!pol!impTense } ; + CopDescr => {s = \\pol => (comp_pred np vp).s!pol!impTense } ; + CopEq => {s = \\pol => (cl_with_eq_cop_predicate np vp).s!pol!impTense } ; + -- VACompl => {s = \\pol => (cl_with_ap_comp_predicate np vp).s!pol!impTense!Princ } ; + AdvComp => {s = \\pol => (cl_with_adv_comp_predicate np vp).s!pol!impTense } ; + _ => {s = \\pol => (imp_verb_predicate np vp).s!pol!impTense } + } ; + +-- SlashVP np vp = +-- mkClause (np.s ! npNom) np.a vp ** {c2 = vp.c2} ; +-- +-- AdvSlash slash adv = { +-- s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ; +-- c2 = slash.c2 +-- } ; +-- +-- SlashPrep cl prep = cl ** {c2 = prep.s} ; +-- +-- SlashVS np vs slash = +-- mkClause (np.s ! npNom) np.a +-- (insertObj (\\_ => conjThat ++ slash.s) (predV vs)) ** +-- {c2 = slash.c2} ; +-- +-- EmbedS s = {s = conjThat ++ s.s} ; +-- EmbedQS qs = {s = qs.s ! QIndir} ; +-- EmbedVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ; + + UseCl t p cl = { + s = t.s ++ p.s ++ cl.s ! p.p ! t.t + } ; + UseQCl t p cl = { + s = t.s ++ p.s ++ cl.s ! p.p ! t.t ; + -- potqs = t.s ++ p.s ++ cl.potqcl ! p.p ! Princ ; + qword_pre = cl.qword_pre ; + qword_post = cl.qword_post + } ; + UseRCl temp pol rcl = { + s = \\a => temp.s ++ pol.s ++ rcl.s!a!pol.p!temp.t ; + } ; +-- UseSlash t p cl = { +-- s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! oDir ; +-- c2 = cl.c2 +-- } ; +-- +-- AdvS a s = {s = a.s ++ s.s} ; +-- ExtAdvS a s = {s = a.s ++ frontComma ++ s.s} ; +-- +-- SSubjS a s b = {s = a.s ++ frontComma ++ s.s ++ b.s} ; +-- +-- RelS s r = {s = s.s ++ frontComma ++ r.s ! agrP3 Sg} ; +-- +-- oper +-- ctr : CPolarity -> CPolarity = \x -> x ; +-- --- ctr = contrNeg True ; -- contracted negations + + oper + + comp_pred : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { + s = \\p,t => + let + subj = np.s!NFull + in + subj ++ + vp.s!MainCl!np.agr!p!t + ++ vp.comp ++ vp.iadv ++ vp.advs + } ; + + imp_verb_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { + s = \\p,t => + let + subj = np.s!NFull ; + vform_main = VFIndic MainCl p t ; + in + subj + ++ (imp_verb_prefix vp p t np.agr) + ++ vp.s!MainCl!np.agr!p!t + ++ vp.iadv + ++ vp.comp + ++ vp.advs + } ; + + imp_verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr -> + let + -- vow = case of { + vow = case of { + => False ; -- force the compiler to understand the table + => False ; -- long form ya + + <_,_,PresTense,RC> => False ; + <_,_,PresTense,_> => True ; + -- <_,Pos,PerfTense,RC> => False ; + -- <_,Pos,PerfTense,_> => True ; + <_,_,PastTense,RC> => False ; + <_,_,PastTense,_> => True ; + <_,_,RemPastTense,RC> => False ; + <_,_,RemPastTense,_> => True ; + <_,_,_,_> => False + } ; + vform = VFIndic MainCl p t + in + (negPref vform) + -- ++ (exclSePref vform_main) + ++ (subjConc vform agr vow) + -- ++ (negPref2 vform_main) + -- ++ (tensePref vform) + ; + + cl_with_verb_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { + s = \\p,t => + let + subj = np.s!NFull ; + vform_main = VFIndic MainCl p t ; + in + subj + ++ (verb_prefix vp p t np.agr) + ++ vp.s!MainCl!np.agr!p!t + ++ vp.iadv + ++ vp.comp + ++ vp.advs + } ; + + verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr -> + let + lfya = case of { + => "ya" ++BIND ; + => "y" ++BIND ; + <_,_,_> => [] + } ; + -- vow = case of { + vow = case of { + => False ; -- force the compiler to understand the table + => False ; -- long form ya + + <_,_,PresTense,RC> => False ; + <_,_,PresTense,_> => True ; + -- <_,Pos,PerfTense,RC> => False ; + -- <_,Pos,PerfTense,_> => True ; + <_,_,PastTense,RC> => False ; + <_,_,PastTense,_> => True ; + <_,_,RemPastTense,RC> => False ; + <_,_,RemPastTense,_> => True ; + <_,_,_,_> => False + } ; + vform = VFIndic MainCl p t + in + (negPref vform) + -- ++ (exclSePref vform_main) + ++ (subjConc vform agr vow) + -- ++ (negPref2 vform_main) + ++ lfya + -- ++ (tensePref vform) + ; + + -- TODO: aspect + cl_with_eq_cop_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { + s = \\p,t => + let + vform_main = VFIndic MainCl p t ; + subj = np.s!NFull ; + pcp = pre_cop_pref vform_main np.agr ; + -- cb = (eqPref ! vp.r) ++ BIND ++ vp.comp ; + in + subj ++ + -- pcp ++ + vp.s!MainCl!np.agr!p!t + ++ vp.comp ++ vp.iadv ++ vp.advs + } ; + + cl_with_adv_comp_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { + s = \\p,t => + let + subj = np.s!NFull ; + vform_main = VFIndic MainCl p t ; + vow = case of { + => False ; + <_,Pos,PresTense> => True ; + <_,_,_> => False + } ; + lfya = case of { + => "ya" ++BIND ; + <_,_,_> => [] + } ; + reqLF = case vp.hasComp of { + True => False ; + False => True + } + in + subj ++ + -- ++ (negPref vform_main) + -- -- ++ (exclSePref vform_main) + -- ++ (subjConc vform_main np.agr vow) + -- -- ++ (negPref2 vform_main) + -- ++ lfya + -- -- ++ (tensePref vform_main) + -- ++ vp.comp + vp.s!MainCl!np.agr!p!t + ++ vp.comp ++ vp.iadv ++ vp.advs + } ; + +} diff --git a/src/zulu/StructuralZul.gf b/src/zulu/StructuralZul.gf new file mode 100755 index 000000000..ad0787c9a --- /dev/null +++ b/src/zulu/StructuralZul.gf @@ -0,0 +1,159 @@ +concrete StructuralZul of Structural = CatZul ** + open + -- MorphoZul, + ResZul, ParadigmsZul, Prelude, ParamX in { + + flags optimize=all ; + + lin + -- AdA + -- almost_AdA = mkAdA "almost" ; + -- so_AdA = mkAdA "so" ; + -- too_AdA = mkAdA "too" ; + very_AdA = mkAdA "kakhulu" ; + + -- AdN + -- almost_AdN = mkAdN "almost" ; + -- at_least_AdN = mkAdN "at least" ; + -- at_most_AdN = mkAdN "at most" ; + + -- Adv + -- everywhere_Adv = mkAdv "everywhere" ; + -- here_Adv = mkAdv "here" ; + -- here7to_Adv = mkAdv ["to here"] ; + -- here7from_Adv = mkAdv ["from here"] ; + -- quite_Adv = mkAdv "quite" ; + -- somewhere_Adv = mkAdv "somewhere" ; + -- there_Adv = mkAdv "there" ; + -- there7to_Adv = mkAdv "there" ; + -- there7from_Adv = mkAdv ["from there"] ; + + -- AdV + -- always_AdV = mkAdV "always" ; + + -- CAdv + -- less_CAdv = mkCAdv "less" "no less" "than" ; + -- more_CAdv = mkCAdv "more" "no more" "than" ; + -- as_CAdv = mkCAdv "as" "not as" "as" ; + + -- Conj + and_Conj = { s = \\_ => "futhi" ; fix = False } ; + -- both7and_DConj = mkConj "both" "and"; + -- either7or_DConj = mkConj "either" "or" singular ; + -- or_Conj = mkConj "or" singular ; + -- if_then_Conj = mkConj "if" "then" singular ; + + -- Det + -- every_Det = mkDeterminerSpec singular "every" "everyone" "everything" False ; + -- few_Det = mkDeterminer plural "few" ; + -- many_Det = mkDeterminer plural "many" ; + -- much_Det = mkDeterminer singular "much" ; + -- someSg_Det = mkDeterminer singular "some" ; + -- somePl_Det = mkDeterminer plural "some" ; + + -- IAdv + how_IAdv = {s = "kanjani" ; postIAdv = False } ; + how8much_IAdv = {s = "kangakanani" ; postIAdv = False } ; + -- when_IAdv = ss "when" ; + -- where_IAdv = ss "where" ; + -- why_IAdv = ss "why" ; + + -- IDet + -- how8many_IDet = mkDeterminer plural ["how many"] ; + -- whichPl_IDet = mkDeterminer plural ["which"] ; + -- whichSg_IDet = mkDeterminer singular ["which"] ; + + -- IP + -- whatPl_IP = mkIP "what" "what" "what's" plural ; + -- whatSg_IP = mkIP "what" "what" "what's" singular ; + -- whoPl_IP = mkIP "who" "whom" "whose" plural ; + -- whoSg_IP = mkIP "who" "whom" "whose" singular ; + + -- IQuant + -- which_IQuant = {s = \\_ => "which"} ; + + -- NP + -- everybody_NP = regNP "everybody" singular ; + -- everything_NP = regNP "everything" singular ; + -- somebody_NP = regNP "somebody" singular ; + -- something_NP = regNP "something" singular ; + -- nobody_NP = regNP "nobody" singular ; + -- nothing_NP = regNP "nothing" singular ; + + -- PConj + -- but_PConj = ss "but" ; + -- otherwise_PConj = ss "otherwise" ; + -- therefore_PConj = ss "therefore" ; + + -- Predet + -- all_Predet = { s = "nke" ; isPost = True } ; + -- most_Predet = ss "most" ; + -- only_Predet = { s = "dwa" ; isPost = True } ; + -- not_Predet = { s : Str ; n : Number ; isPost : Bool } + + -- Prep + -- above_Prep = mkPrep "above" ; + -- after_Prep = mkPrep "after" ; + -- before_Prep = mkPrep "before" ; + -- behind_Prep = mkPrep "behind" ; + -- between_Prep = mkPrep "between" ; + -- by8agent_Prep = mkPrep "by" ; + -- by8means_Prep = mkPrep "by" ; + -- during_Prep = mkPrep "during" ; + -- for_Prep = mkPrep "for" ; + -- from_Prep = mkPrep "from" ; + -- in8front_Prep = mkPrep ["in front of"] ; + -- in_Prep = mkPrep "in" ; + -- on_Prep = mkPrep "on" ; + -- part_Prep = mkPrep "of" ; + -- possess_Prep = mkPrep "of" ; + -- through_Prep = mkPrep "through" ; + -- to_Prep = mkPrep "to" ; + -- under_Prep = mkPrep "under" ; + -- without_Prep = mkPrep "without" ; + -- with_Prep = mkPrep "with" ; + -- except_Prep = mkPrep "except" ; + + -- Pron + i_Pron = mkPron (First Sg) ; + we_Pron = mkPron (First Pl) ; + + youSg_Pron = mkPron (Second Sg) ; + youPl_Pron = mkPron (Second Pl) ; + + he_Pron = mkPron (Third C1_2 Sg) ; + it_Pron = mkPron (Third C3_4 Sg) ; + she_Pron = mkPron (Third C1_2 Sg) ; + they_Pron = mkPron (Third C1_2 Pl) ; + + -- youPol_Pron = mkPron "you" "you" "your" "yours" singular P2 human ; + + -- Quant (we use this category for demonstratives only) + that_Quant = { s = [] ; dist = Dem2 } ; + this_Quant = { s = [] ; dist = Dem1 } ; + -- no_Quant = mkQuant "no" "no" "none" "none" ; + + -- Subj + -- although_Subj = ss "although" ; + -- because_Subj = ss "because" ; + -- if_Subj = ss "if" ; + -- when_Subj = ss "when" ; + -- that_Subj = ss "that" ; + + -- Utt + -- no_Utt = ss "no" ; + -- yes_Utt = ss "yes" ; + language_title_Utt = ss "Zulu" ; + + -- Voc + -- please_Voc = ss "please" ; + + -- V2 + -- have_V2 = dirV2 (mk5V "have" "has" "had" "had" "having") ; + + -- VV + -- can8know_VV + -- can_VV + -- must_VV + +} diff --git a/src/zulu/SymbolZul.gf b/src/zulu/SymbolZul.gf new file mode 100755 index 000000000..82a775858 --- /dev/null +++ b/src/zulu/SymbolZul.gf @@ -0,0 +1,45 @@ +--# -path=.:../abstract:../common:../prelude + +concrete SymbolZul of Symbol = CatZul ** open Prelude, ResZul in { + +-- lin +-- SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; +-- IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; +-- FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; +-- NumPN i = {s = i.s ! False ; g = Neutr} ; +-- CNIntNP cn i = { +-- s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! npcase2case c ; +-- a = agrgP3 Sg cn.g +-- } ; +-- CNSymbNP det cn xs = { +-- s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! npcase2case c ; +-- a = agrgP3 det.n cn.g +-- } ; +-- CNNumNP cn i = { +-- s = \\c => cn.s ! Sg ! Nom ++ i.s ! False ! npcase2case c ; +-- a = agrgP3 Sg cn.g +-- } ; +-- +-- SymbS sy = sy ; +-- +-- SymbNum sy = { s,sp = \\_ => addGenitiveS sy.s ; n = Pl ; hasCard = True } ; +-- SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; +-- +lincat + + Symb = { s : Str } ; + -- [Symb] = SS ; + +lin + MkSymb s = s ; + +-- BaseSymb = infixSS "and" ; +-- ConsSymb = infixSS frontComma ; +-- +-- oper +-- -- Note: this results in a space before 's, but there's +-- -- not mauch we can do about that. +-- addGenitiveS : Str -> Case => Str = \s -> +-- table { Gen => s ++ BIND ++ "'s"; _ => s } ; + +} diff --git a/src/zulu/TempExtZul.gf b/src/zulu/TempExtZul.gf new file mode 100755 index 000000000..722ee24c6 --- /dev/null +++ b/src/zulu/TempExtZul.gf @@ -0,0 +1,9 @@ +concrete TempExtZul of TempExt = CatZul ** open ResZul in { + + lin + TPresTemp = { s = [] ; t = PresTense } ; + TPastTemp = { s = [] ; t = PastTense } ; + TFutTemp = { s = [] ; t = FutTense } ; + TRemFutTemp = { s = [] ; t = RemFutTense } ; + TRemPastTemp = { s = [] ; t = RemPastTense } ; +} diff --git a/src/zulu/TerminologyZul.gf b/src/zulu/TerminologyZul.gf new file mode 100755 index 000000000..77d474a9f --- /dev/null +++ b/src/zulu/TerminologyZul.gf @@ -0,0 +1,106 @@ +--# -path=.:../abstract:../common + +concrete TerminologyZul of Terminology = CatZul ** open + ResZul, + ParadigmsZul, + (G = GrammarZul), + (S = SyntaxZul), + (L = LexiconZul), + Prelude +in { + + +-- lincat +-- Category = G.N ; +-- ParameterType = G.N ; +-- Parameter = G.N ; +-- Modifier = G.A ; +-- +-- lin +-- noun_Category = mkN "noun" ; +-- adjective_Category = mkN "adjective" ; +-- verb_Category = mkN "verb" ; +-- adverb_Category = mkN "adverb" ; +-- preposition_Category = mkN "preposition" ; +-- numeral_Category = mkN "numeral" ; +-- pronoun_Category = mkN "pronoun" ; +-- determiner_Category = mkN "determiner" ; +-- article_Category = mkN "article" ; +-- +-- gender_ParameterType = mkN "Gender" ; +-- finite_form_ParameterType = mkN "finite form" ; +-- nominal_form_ParameterType = mkN "nominal form" ; +-- +-- singular_Parameter = mkN "singular" ; +-- plural_Parameter = mkN "plural" ; +-- +-- masculine_Parameter = mkN "masculine" ; +-- feminine_Parameter = mkN "feminine" ; +-- neuter_Parameter = mkN "neuter" ; +-- uter_Parameter = mkN "uter" ; +-- +-- nominative_Parameter = mkN "nominative" ; +-- genitive_Parameter = mkN "genitive" ; +-- dative_Parameter = mkN "dative" ; +-- accusative_Parameter = mkN "accusative" ; +-- +-- partitive_Parameter = mkN "partitive" ; +-- translative_Parameter = mkN "translative" ; +-- essive_Parameter = mkN "essive" ; +-- inessive_Parameter = mkN "inessive" ; +-- elative_Parameter = mkN "elative" ; +-- illative_Parameter = mkN "illative" ; +-- adessive_Parameter = mkN "adessive" ; +-- ablative_Parameter = mkN "ablative" ; +-- allative_Parameter = mkN "allative" ; +-- abessive_Parameter = mkN "abessive" ; +-- comitative_Parameter = mkN "comitative" ; +-- instructive_Parameter = mkN "instructive" ; +-- +-- active_Parameter = mkN "active" ; +-- passive_Parameter = mkN "passive" ; +-- middle_Parameter = mkN "middle" ; +-- +-- imperative_Parameter = mkN "imperative" ; +-- indicative_Parameter = mkN "indicative" ; +-- conjunctive_Parameter = mkN "conjunctive" ; +-- infinitive_Parameter = mkN "infinitive" ; +-- +-- definite_Parameter = mkN "definite" ; +-- indefinite_Parameter = mkN "indefinite" ; +-- +-- present_Parameter = mkN "present" ; +-- past_Parameter = mkN "past" ; +-- future_Parameter = mkN "future" ; +-- conditional_Parameter = mkN "conditional" ; +-- potential_Parameter = mkN "potential" ; +-- perfect_Parameter = mkN "perfect" ; +-- imperfect_Parameter = mkN "imperfect" ; +-- supine_Parameter = mkN "supine" ; +-- agent_Parameter = mkN "agent" ; +-- simple_past_Parameter = mkN "simple past" ; +-- +-- participle_Parameter = mkN "participle" ; +-- aux_verb_Parameter = mkN "auxiliary" ; +-- gerund_Parameter = mkN "Gerund" ; +-- +-- positive_Parameter = mkN "positive" ; +-- comparative_Parameter = mkN "comparative" ; +-- superlative_Parameter = mkN "superlative" ; +-- predicative_Parameter = mkN "predicative" ; +-- negative_Parameter = mkN "negative" ; +-- +-- short_Parameter = mkN "short" ; --- adjective +-- long_Parameter = mkN "long" ; +-- +-- strong_Parameter = mkN "strong" ; --- adjective +-- weak_Parameter = mkN "weak" ; +-- +-- nounHeading n = ss (n.s ! Sg ! Nom) ; +-- nounPluralHeading n = ss (n.s ! Pl ! Nom) ; +-- +-- exampleGr_N = mkN "example" ; +-- formGr_N = mkN "form" ; + + +} diff --git a/src/zulu/VerbExtZul.gf b/src/zulu/VerbExtZul.gf new file mode 100644 index 000000000..c3fece207 --- /dev/null +++ b/src/zulu/VerbExtZul.gf @@ -0,0 +1,152 @@ +concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, ParamX in { + + lin + + CopAP ap = { + s = case ap.t of { + AdjType => table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = ap_cop_pref vform a AdjType ; -- u- / uzoba / ube- / waye- / wayenge- + adjpref = adjPref a vform ; -- m- + cop_base = ap.s!(aformN a) -- khulu + in + pcp ++ adjpref ++ cop_base ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- + pcp = ap_cop_pref vform a AdjType ; -- [] / -nge- / zoba / -be- / -benge- -waye- / -wayenge- + adjpref = adjPref a vform ; -- m- + cop_base = ap.s!(aformN a) -- khulu + in + rcp ++ pcp ++ adjpref ++ cop_base + } ; + RelType => table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = ap_cop_pref vform a RelType ; -- u- + cop_base = ap.s!AF1 -- qotho + in + pcp ++ cop_base ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- + pcp = ap_cop_pref vform a RelType ; -- [] / -nge- / zoba / -benge- + cop_base = ap.s!AF1 -- qotho + in + rcp ++ pcp ++ cop_base + } + } ; + comp, iadv, advs = [] ; + hasComp = True ; + r = RC ; -- should not be used + syl = SylMult ; + vptype = CopDescr + } ; + + CopNP np = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = (id_pre_cop_pref vform a) ; -- u- / uzoba / akazukuba + cp = (id_cop_pref np.agr) ; -- ng- + cop_base = np.s!NFull -- umfundi + in + pcp ++ cp ++ cop_base ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- + pcp = (id_pre_cop_pref vform a) ; -- [] / zoba / zukuba + cp = (id_cop_pref np.agr) ; -- ng- + cop_base = np.s!NFull -- umfundi + in + rcp ++ pcp ++ cp ++ cop_base + } ; + comp, iadv, advs = [] ; + hasComp = np.heavy ; + r = RC ; -- should not be used + syl = SylMult ; + vptype = CopIdent + } ; + + CopNPAssoc np = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + pcp = (assoc_pre_cop_pref vform a) ; -- u- / uzoba + cp = (assoc_cop_pref p np.agr) ; -- ne- + cop_base = np.s!NReduced -- moto + in + pcp ++ cp ++ cop_base ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rcp = (relConcCop vform a RC) ; -- o- + pcp = (assoc_pre_cop_pref vform a) ; -- [] / zoba + cp = (assoc_cop_pref p np.agr) ; -- ne + cop_base = np.s!NReduced -- moto + in + rcp ++ pcp ++ cp ++ cop_base + } ; + comp, iadv, advs = [] ; + hasComp = np.heavy ; + r = RC ; -- should not be used + syl = SylMult ; + vptype = CopAssoc + } ; + + ComplV2Nonspec v2 np = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + tp = tensePref vform v2.r v2.syl ; + oc = objConc np.agr v2.r v2.syl ; + longform = case np.heavy of { + True => False ; + False => True + } ; + r = v2.s!(rform (VFIndic MainCl p t) longform) ; + obj = case p of { + Pos => np.s!NFull ; + Neg => np.s!NReduced + } ; + in case np.proDrop of { + True => tp ++ oc ++ r ++ obj ; + False => tp ++ r ++ obj + } ; + RelCl => \\a,p,t => let + vform = (VFIndic RelCl p t) ; + rc = relConc vform a v2.r ; + tp = tensePref vform v2.r v2.syl ; + oc = objConc np.agr v2.r v2.syl ; + longform = case np.heavy of { + True => False ; + False => True + } ; + r = v2.s!(rform vform longform) ; + obj = case p of { + Pos => np.s!NFull ; + Neg => np.s!NReduced + } ; + in case np.proDrop of { + True => rc ++ tp ++ oc ++ r ++ obj ; + False => rc ++ tp ++ r ++ obj + } + } ; + iadv, advs, comp = [] ; + ap_comp = \\_ => [] ; + hasComp = np.heavy ; + r = v2.r ; + syl = v2.syl ; + vptype = VNPCompl + } ; + + CopLoc loc = { + s = loc.s ; + comp,advs,iadv = [] ; + hasComp = True ; + r = RC ; + syl = SylMult ; + vptype = CopLoc + } ; + +} diff --git a/src/zulu/VerbZul.gf b/src/zulu/VerbZul.gf new file mode 100755 index 000000000..9ca04676f --- /dev/null +++ b/src/zulu/VerbZul.gf @@ -0,0 +1,312 @@ +concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in { + + flags optimize=all_subs ; + + lin + UseV v = { + s = table { + MainCl => \\a,p,t => let + vform = VFIndic MainCl p t ; + tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku- + r = v.s!(rform (VFIndic MainCl p t) True) -- hamba + -- rest of verb prefix built later (eg no "ya" with certain question words) + in tp ++ r ; + RelCl => \\a,p,t => let + vform = VFIndic RelCl p t ; + rc = relConc vform a v.r ; -- o- + tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku- + r = v.s!(rform vform True) ; -- hamba + suf = relSuf vform -- [] / -yo + in rc ++ tp ++ r ++ suf + } ; + iadv, advs, comp = [] ; + -- ap_comp = \\_ => [] ; + hasComp = False ; + r = v.r ; + syl = v.syl ; + vptype = NoComp + } ; + +-- ComplVV v vp = insertObj (\\a => infVP v.typ vp False Simul CPos a) (predVV v) ; ---- insertExtra? + + -- ComplVS vs s = vs ** { + -- -- s = vs.s ; + -- oc = [] ; + -- comp = s.subjs ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- -- r = vs.r ; + -- -- syl = vs.syl ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = VSCompl ; + -- comp_agr = First Sg ; -- this could be anything... + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + +-- --- ComplVS v s = insertObj (variants {\\_ => conjThat ++ s.s; \\_ => s.s}) (predV v) ; +-- ComplVQ v q = insertExtra (q.s ! QIndir) (predV v) ; + + -- ComplVA va ap = va ** { + -- -- s = va.s ; + -- oc = [] ; + -- comp = \\_ => [] ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- -- r = va.r ; + -- -- syl = va.syl ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = VACompl ; + -- comp_agr = First Sg ; -- this could be anything... + -- ap_comp = ap.s ; + -- ap_bool = ap.b ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + + + -- SlashV2a v = v ** { + -- oc = [] ; + -- comp = [] ; + -- -- iadv = [] ; + -- -- advs = [] ; + -- hasComp = False ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- vptype = VNPCompl ; + -- comp_agr = First Sg ; -- this could be anything... + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False -- ; + -- -- missing_np1 = True + -- } ; +-- Slash2V3 v np = +-- insertObjc (\\_ => v.c2 ++ np.s ! NPAcc) (predVc v ** {c2 = v.c3 ; gapInMiddle = False}) ; +-- Slash3V3 v np = +-- insertObjc (\\_ => v.c3 ++ np.s ! NPAcc) (predVc v) ; ---- +-- SlashV2V v vp = insertObjc (\\a => v.c3 ++ infVP v.typ vp False Simul CPos a) (predVc v) ; +-- SlashV2S v s = insertExtrac (conjThat ++ s.s) (predVc v) ; ---- insertExtra? +-- --- SlashV2S v s = insertObjc (variants {\\_ => conjThat ++ s.s; \\_ => s.s}) (predVc v) ; +-- SlashV2Q v q = insertExtrac (q.s ! QIndir) (predVc v) ; +-- SlashV2A v ap = insertObjc (\\a => v.c3 ++ ap.s ! a) (predVc v) ; ---- + + -- TODO: this simply adds the new np to the end of vp.comp; to be expanded beyond V2 using missing_np1 + -- ComplSlash vp np = { + -- oc = case np.proDrop of { + -- True => objConc np.agr vp.r vp.syl ; + -- False => np.empty + -- } ; + -- comp = np.s!Full ; + -- iadv = [] ; + -- advs = [] ; + -- hasComp = case np.proDrop of { + -- True => False ; + -- False => True + -- } ; + -- s = vp.s ; + -- r = vp.r ; + -- syl = vp.syl ; + -- asp = vp.asp ; + -- asp_pref = vp.asp_pref ; + -- vptype = VNPCompl ; + -- comp_agr = np.agr ; + -- ap_comp = vp.ap_comp ; + -- aux_root = vp.aux_root ; + -- hasAux = vp.hasAux + -- } ; + + -- UseComp comp = case comp.comptype of { + -- CopDescr => { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = [] ; -- doesn't matter + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- r = comp.r ; -- adjectives don't typically start on vowels + -- syl = SylMult ; + -- asp = comp.asp ; + -- asp_pref = comp.asp_pref ; + -- vptype = comp.comptype ; + -- comp_agr = comp.agr ; -- this could be anything... + -- ap_comp = comp.s ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + -- CopIdent => { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = comp.s!AF1 ; -- doesn't matter + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- r = comp.r ; + -- syl = SylMult ; + -- asp = comp.asp ; + -- asp_pref = comp.asp_pref ; + -- vptype = comp.comptype ; + -- comp_agr = comp.agr ; + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + -- AdvComp => { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = [] ; + -- iadv = [] ; + -- advs = comp.s!AF1 ; + -- hasComp = True ; + -- r = comp.r ; -- probably works... + -- syl = SylMult ; + -- asp = comp.asp ; + -- asp_pref = comp.asp_pref ; + -- vptype = comp.comptype ; + -- comp_agr = comp.agr ; + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } ; + -- -- the default tries to treat the comp as a NP type + -- _ => { + -- s = \\_ => [] ; + -- oc = [] ; + -- comp = comp.s!AF1 ; -- doesn't matter + -- iadv = [] ; + -- advs = [] ; + -- hasComp = True ; + -- r = comp.r ; + -- syl = SylMult ; + -- asp = comp.asp ; + -- asp_pref = comp.asp_pref ; + -- vptype = comp.comptype ; + -- comp_agr = comp.agr ; + -- ap_comp = \\_ => [] ; + -- aux_root = [] ; + -- hasAux = False + -- } + -- } ; + + AdvVP vp adv = vp ** { advs = vp.advs ++ adv.s } ; + -- { + -- s = vp.s ; + -- oc = vp.oc ; + -- comp = vp.comp ; + -- iadv = vp.iadv ; + -- advs = vp.advs ++ adv.s ; + -- hasComp = vp.hasComp ; + -- r = vp.r ; + -- syl = vp.syl ; + -- asp = vp.asp ; + -- asp_pref = vp.asp_pref ; + -- vptype = vp.vptype ; + -- comp_agr = vp.comp_agr ; + -- ap_comp = vp.ap_comp ; + -- aux_root = vp.aux_root ; + -- hasAux = vp.hasAux + -- } ; + +-- ExtAdvVP vp adv = insertObj (\\_ => frontComma ++ adv.s ++ finalComma) vp ; +-- AdVVP adv vp = insertAdV adv.s vp ; +-- +-- AdvVPSlash vp adv = vp ** insertObj (\\_ => adv.s) vp ; +-- AdVVPSlash adv vp = vp ** insertAdV adv.s vp ; +-- +-- ReflVP v = insertObjPre (\\a => v.c2 ++ reflPron ! a) v ; +-- +-- PassV2 v = insertObj (\\_ => v.s ! VPPart ++ v.p) (predAux auxBe) ; +-- +-- ---b UseVS, UseVQ = \vv -> {s = vv.s ; c2 = [] ; isRefl = vv.isRefl} ; -- no "to" + + -- CompAP ap = { + -- s = ap.s ; + -- r = RC ; + -- agr = First Sg ; -- this could be anything... + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- comptype = CopDescr + -- } ; + -- + -- CompNP np = { + -- s = \\nform => np.s!nform ; -- TODO: refactor + -- r = initNP np.isPron np.agr ; + -- agr = np.agr ; + -- asp = Null ; + -- asp_pref = \\_ => [] ; + -- comptype = CopIdent + -- } ; + -- + -- CompAdv adv = { + -- s = \\_ => case adv.reqLocS of { + -- True => "s" ++BIND ; + -- False => [] + -- } ++ adv.s ; + -- r = RC ; -- probably works... + -- agr = First Sg ; -- this could be anything... + -- asp = Null ; + -- asp_pref = \\_ => [] ; -- TODO: check + -- comptype = AdvComp + -- } ; + + -- CompCN cn = {s = \\a => case (fromAgr a).n of { + -- Sg => artIndef ++ cn.s ! Sg ! Nom ; + -- Pl => cn.s ! Pl ! Nom + -- } + -- } ; + +-- UseCopula = predAux auxBe ; +-- +-- VPSlashPrep vp p = vp ** {c2 = p.s ; gapInMiddle = False; missingAdv = True } ; + + -- oper + -- insert_np : VPSlash -> NP -> VP = \vp,np -> { + -- s = vp.s ; + -- perfSuff = vp.perfSuff ; + -- oc = case np.proDrop of { + -- True => objConc np.agr v2.r v2.syl ; + -- False => np.empty + -- } ; + -- comp = case np.proDrop of { + -- True => vp.comp ; + -- False => vp.comp ++ np.s ! Full ++ np.desc + -- } ; + -- hasComp = True ; + -- r = vp.r ; + -- syl = vp.syl ; + -- asp = vp.asp ; + -- asp_pref = vp.asp_pref ; + -- vptype = VNPCompl ; + -- comp_agr = np.agr ; -- this could be anything... + -- ap_comp = vp.ap_comp ; + -- ap_bool = vp.ap_bool ; + -- aux_root = vp.aux_root ; + -- hasAux = vp.hasAux + -- } ; + + oper + v_prefix : RInit -> Bool -> Agr -> Polarity -> BasicTense -> Str = \r,c,a,p,t -> + let + vow = case of { + => False ; + <_,Pos,PresTense> => True ; + <_,_,_> => False + } ; + lfya = case of { + => "ya" ++BIND ; + <_,_,_> => [] + } ; + vform_main = VFIndic MainCl p t + in + (negPref vform_main) + -- ++ (exclSePref vform_main) + ++ (subjConc vform_main a vow) + -- ++ (negPref2 vform_main) + ++ lfya + -- ++ (tensePref vform_main) + ; +} diff --git a/src/zulu/abstract_ext/CatExt.gf b/src/zulu/abstract_ext/CatExt.gf new file mode 100755 index 000000000..7a0e043a9 --- /dev/null +++ b/src/zulu/abstract_ext/CatExt.gf @@ -0,0 +1,15 @@ +abstract CatExt = { + + cat + Loc ; + LocN ; + QuantStem ; + RelStem ; + VAux ; + ConjN ; -- Nguni conjunction + IAdj ; -- how many + -- INAdv ; -- which/-phi? + + Postdet ; + +} diff --git a/src/zulu/abstract_ext/ExtraExt.gf b/src/zulu/abstract_ext/ExtraExt.gf new file mode 100755 index 000000000..41dfc7da4 --- /dev/null +++ b/src/zulu/abstract_ext/ExtraExt.gf @@ -0,0 +1,133 @@ +abstract ExtraExt = + Cat [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN], + CatExt ** { + + fun + ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired" + + fun + -- PotQS : Pol -> QCl -> QS ; + -- SubjunctS : S -> Utt ; + + -- AssocCop : NP -> VP ; + -- EqCop : NP -> VP ; + + -- UsePNPl : PN -> NP ; + -- PNAsCN : PN -> CN ; + + -- DemPron : Quant -> Pron -> NP ; + + -- EmphCN : CN -> CN ; -- + -- ContrastCN : CN -> CN ; + -- ApposNPN : NP -> N -> NP ; + -- ContrastNP : NP -> NP ; + + -- DescrNP : CN -> NP -> CN ; + -- PossLocNP : CN -> NP -> CN ; + -- PossPronZul : CN -> Pron -> CN ; -- of you (yours) + -- RelV : CN -> V -> Temp -> Pol -> CN ; -- lights that flash + + PossLocNP : LocN -> NP -> CN ; + + InstrNPAdv : NP -> Adv ; -- ngokuhlinzwa + InstrAdvNPAdv : Adv -> NP -> Adv ; -- cishe ngehora + LocNPAdv : NP -> Adv ; -- emahoreni + LocAdvNPAdv : Adv -> NP -> Adv ; -- cishe emahoreni + KwaNPAdv : NP -> Adv ; -- kwa-Laurette + -- KwaAdvNPAdv : Adv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule + KuNPAdv : NP -> Adv ; -- kwixesha [elingangeyure enye egqithileyo] + KuAdvNPAdv : Adv -> NP -> Adv ; -- ngaphezu kwamahora amabili adlule + NaNPAdv : NP -> Adv ; + + -- InstrAdvNP : NP -> NP -> NP ; -- questions about your pregnancy + + -- RelAdv : Adv -> RS ; + + -- ProgVP : VP -> VP ; + + -- QuantRS : QuantStem -> RS ; -- elilodwa + -- RelRS : RelStem -> RS ; -- elibuhlungu + + -- QuantCN : QuantStem -> CN -> CN ; -- izindlu zonke + + -- NumAdjCN : CN -> A -> CN ; + + only_QuantStem : QuantStem ; + all_QuantStem : QuantStem ; + -- all_pre_QuantStem : QuantStem ; + -- all_pre_Predet : Predet ; + + -- painful_RelStem : RelStem ; + -- sharp_RelStem : RelStem ; + + -- TPerfPast : Temp ; + -- TPastPast : Temp ; + -- TPresPres : Temp ; + -- TPastPres : Temp ; + -- TPastPerf : Temp ; + -- TPerfPerf : Temp ; + + -- PredNP : NP -> Cl ; + -- IAdvQS : NP -> INAdv -> QS ; -- where is the wine? iwayini liphi? + -- IAdvQCl : NP -> INAdv -> QCl ; -- where is the wine? iwayini liphi? + + -- AdvQCl : Adv -> QCl -> QCl ; + + -- ComplVAux : VAux -> VP -> VP ; + + ConjNAdv : ConjN -> S -> Adv ; -- lapho kunobuhlungu khona + + where_ConjN : ConjN ; + + IAdvVP : VP -> IAdv -> VP ; -- kushisa kangakanani eGoli + + it3_Pron : Pron ; + they4_Pron : Pron ; + it5_Pron : Pron ; + they6_Pron : Pron ; + it7_Pron : Pron ; + they8_Pron : Pron ; + it9_Pron : Pron ; + they10_Pron : Pron ; + it11_Pron : Pron ; + it14_Pron : Pron ; + it15_Pron : Pron ; + it17_Pron : Pron ; + + yonder_Quant : Quant ; + + at_which_IAdv : NP -> IAdv ; + what_IAdv : IAdv ; + + -- about_NP_Adv : NP -> Adv ; + + how_many_IAdj : IAdj ; + + -- IAdjIAdv : NP -> IAdj -> IAdv ; + + how_IComp : IComp ; -- -njani + where_IComp : IComp ; -- -phi + how_much_IComp : IComp ; -- -ngakanani + + how2_IAdv : IAdv ; + how8much2_IAdv : IAdv ; + + phakathi_LocN : LocN ; + phansi_LocN : LocN ; + phesheya_LocN : LocN ; + phandle_LocN : LocN ; + phambili_LocN : LocN ; + phambi_LocN : LocN ; + phakade_LocN : LocN ; + phezulu_LocN : LocN ; + + lapha_Loc : Loc ; + khona_Loc : Loc ; + + kakhulu_Adv : Adv ; + + -- Deverb15 : V -> N ; + + -- AdvQS : IAdv -> S -> QS ; -- maybe it is a pain that burns 2020-01-15: consider that this should rather be dealt with using QuestIAdv) + +} diff --git a/src/zulu/abstract_ext/NounExt.gf b/src/zulu/abstract_ext/NounExt.gf new file mode 100644 index 000000000..becb7c8a9 --- /dev/null +++ b/src/zulu/abstract_ext/NounExt.gf @@ -0,0 +1,47 @@ +abstract NounExt = Cat,CatExt ** { + + fun + + -- Quant is used for demonstratives, and QuantStem for all/only + + PronPostdetNP : Pron -> Postdet -> NP ; + + QuantPostdet : QuantStem -> Postdet ; + + DemPostdet : Quant -> Postdet ; + + QuantDemPostdet : QuantStem -> Quant -> Postdet ; + + DemQuantPostdet : Quant -> QuantStem -> Postdet ; + + DetNum : Num -> Det ; + + PostdetCN : CN -> Postdet -> Det -> NP ; + + RelN : RS -> N -> CN ; + + ApposCN : CN -> N -> CN ; -- (takes agr of CN) + + ApposN : CN -> N -> CN ; -- (takes agr of N) + + PredetN : Predet -> N -> CN ; + + QuantPredet : QuantStem -> Predet ; + + DemPredet : Quant -> Predet ; + + QuantDemPredet : QuantStem -> Quant -> Predet ; + + EmphCN : CN -> CN ; -- prepends emphatic pronoun + + ContrastCN : CN -> CN ; -- inserts contrastive pronoun + + UsePNPl : PN -> NP ; + + Deverb15 : V -> N ; + + LocNP : NP -> Loc ; + + LocNLoc : LocN -> Loc ; + +} diff --git a/src/zulu/abstract_ext/PChunk.gf b/src/zulu/abstract_ext/PChunk.gf new file mode 100644 index 000000000..71814dd6c --- /dev/null +++ b/src/zulu/abstract_ext/PChunk.gf @@ -0,0 +1,66 @@ +abstract PChunk = Cat, CatExt, Symbol [Symb] ** { + +cat + Chunks ; + Chunk ; + Chunk_AP ; + Chunk_Adv ; + Chunk_S ; + Chunk_RS ; + Chunk_QS ; + Chunk_CN ; + Chunk_NP ; + Chunk_N ; + Chunk_Predet ; + Chunk_Postdet ; + Chunk_Symb ; + VC ; + +fun + OneChunk : Chunk -> Chunks ; + PlusChunk : Chunk -> Chunks -> Chunks ; + ChunkPhr : Chunks -> Phr ; + + -- AP_Chunker : Chunk_AP -> Chunk ; + Adv_Chunker : Chunk_Adv -> Chunk ; + S_Chunker : Chunk_S -> Chunk ; + RS_Chunker : Chunk_RS -> Chunk ; + QS_Chunker : Chunk_QS -> Chunk ; + CN_Chunker : Chunk_CN -> Chunk ; + NP_Chunker : Chunk_NP -> Chunk ; + N_Chunker : Chunk_N -> Chunk ; + Predet_Chunker : Chunk_Predet -> Chunk ; + Postdet_Chunker : Chunk_Postdet -> Chunk ; + Symb_Chunker : Chunk_Symb -> Chunk ; + + -- AP_Chunk : AP -> Chunk_AP ; + Adv_Chunk : Adv -> Chunk_Adv ; + S_Chunk : S -> Chunk_S ; + RS_Chunk : RS -> Chunk_RS ; + QS_Chunk : QS -> Chunk_QS ; + CN_Pl_Chunk : CN -> Chunk_CN ; + CN_Sg_Chunk : CN -> Chunk_CN ; + NP_Nom_Chunk : NP -> Chunk_NP ; + NP_Gen_Chunk : NP -> Chunk_NP ; + Predet_Chunk : Predet -> Chunk_Predet ; + Postdet_Chunk : Postdet -> Chunk_Postdet ; + -- N_Sg_Chunk : N -> Chunk_N ; + -- N_Pl_Chunk : N -> Chunk_N ; + +-- for unknown words that are not names + + Symb_Chunk : Symb -> Chunk_Symb ; + +-- chunks for punctuation marks + fullstop_Chunk : Chunk ; + exclmark_Chunk : Chunk ; + questmark_Chunk : Chunk ; + comma_Chunk : Chunk ; + colon_Chunk : Chunk ; + semicolon_Chunk : Chunk ; + quote_Chunk : Chunk ; + lpar_Chunk : Chunk ; + rpar_Chunk : Chunk ; + dash_Chunk : Chunk ; + +} diff --git a/src/zulu/abstract_ext/TempExt.gf b/src/zulu/abstract_ext/TempExt.gf new file mode 100755 index 000000000..d83fd7808 --- /dev/null +++ b/src/zulu/abstract_ext/TempExt.gf @@ -0,0 +1,9 @@ +abstract TempExt = Cat ** { + + fun + TPresTemp : Temp ; + TPastTemp : Temp ; + TFutTemp : Temp ; + TRemFutTemp : Temp ; + TRemPastTemp : Temp ; +} diff --git a/src/zulu/abstract_ext/VerbExt.gf b/src/zulu/abstract_ext/VerbExt.gf new file mode 100644 index 000000000..db4105e21 --- /dev/null +++ b/src/zulu/abstract_ext/VerbExt.gf @@ -0,0 +1,17 @@ +abstract VerbExt = Cat,CatExt ** { + + fun + + CopAP : AP -> VP ; + CopNP : NP -> VP ; + CopNPAssoc : NP -> VP ; + CopLoc : Loc -> VP ; + + -- BecomeAP : AP -> VP ; + -- BecomeNP : NP -> VP ; + -- BecomeNPAssoc : NP -> VP ; + -- BecomeLoc : Loc -> VP ; + + ComplV2Nonspec : V2 -> NP -> VP ; + +} diff --git a/src/zulu/grammar_ext/DevLexLang.gf b/src/zulu/grammar_ext/DevLexLang.gf new file mode 100755 index 000000000..4276e567c --- /dev/null +++ b/src/zulu/grammar_ext/DevLexLang.gf @@ -0,0 +1,3 @@ +abstract DevLexLang = NguniLang, DevLex ** { + flags startcat=Phr ; +} ; diff --git a/src/zulu/grammar_ext/DevLexLangZul.gf b/src/zulu/grammar_ext/DevLexLangZul.gf new file mode 100755 index 000000000..2cdc3f6e3 --- /dev/null +++ b/src/zulu/grammar_ext/DevLexLangZul.gf @@ -0,0 +1,5 @@ +--# -path=.:..:../../abstract:../../common:../../prelude:../abstract_ext:../lexica + +concrete DevLexLangZul of DevLexLang = + NguniLangZul, + DevLexZul ** {} ; diff --git a/src/zulu/grammar_ext/MonoLexChunk.gf b/src/zulu/grammar_ext/MonoLexChunk.gf new file mode 100755 index 000000000..099b1e7fc --- /dev/null +++ b/src/zulu/grammar_ext/MonoLexChunk.gf @@ -0,0 +1,3 @@ +abstract MonoLexChunk = NguniChunk,MonoLex ** { + flags startcat=Phr ; +} ; diff --git a/src/zulu/grammar_ext/MonoLexChunkZul.gf b/src/zulu/grammar_ext/MonoLexChunkZul.gf new file mode 100755 index 000000000..7333e476d --- /dev/null +++ b/src/zulu/grammar_ext/MonoLexChunkZul.gf @@ -0,0 +1,5 @@ +--# -path=.:..:../../abstract:../../common:../../prelude:../abstract_ext:../lexica + +concrete MonoLexChunkZul of MonoLexChunk = + NguniChunkZul, + MonoLexZul ** {} ; diff --git a/src/zulu/grammar_ext/MonoLexLang.gf b/src/zulu/grammar_ext/MonoLexLang.gf new file mode 100755 index 000000000..662a78a45 --- /dev/null +++ b/src/zulu/grammar_ext/MonoLexLang.gf @@ -0,0 +1,3 @@ +abstract MonoLexLang = NguniLang,MonoLex ** { + flags startcat=Phr ; +} ; diff --git a/src/zulu/grammar_ext/MonoLexLangZul.gf b/src/zulu/grammar_ext/MonoLexLangZul.gf new file mode 100755 index 000000000..176e86260 --- /dev/null +++ b/src/zulu/grammar_ext/MonoLexLangZul.gf @@ -0,0 +1,5 @@ +--# -path=.:..:../../abstract:../../common:../../prelude:../abstract_ext:../lexica + +concrete MonoLexLangZul of MonoLexLang = + NguniLangZul, + MonoLexZul ** {} ; diff --git a/src/zulu/grammar_ext/MultiLexChunk.gf b/src/zulu/grammar_ext/MultiLexChunk.gf new file mode 100644 index 000000000..cf917c6a7 --- /dev/null +++ b/src/zulu/grammar_ext/MultiLexChunk.gf @@ -0,0 +1,3 @@ +abstract MultiLexChunk = NguniChunk,MultiLex ** { + flags startcat=Phr ; +} ; diff --git a/src/zulu/grammar_ext/MultiLexChunkZul.gf b/src/zulu/grammar_ext/MultiLexChunkZul.gf new file mode 100644 index 000000000..1ddd6c2f1 --- /dev/null +++ b/src/zulu/grammar_ext/MultiLexChunkZul.gf @@ -0,0 +1,5 @@ +--# -path=.:..:../../abstract:../../common:../../prelude:../abstract_ext:../lexica + +concrete MultiLexChunkZul of MultiLexChunk = + NguniChunkZul, + MultiLexZul ** {} ; diff --git a/src/zulu/grammar_ext/MultiLexLang.gf b/src/zulu/grammar_ext/MultiLexLang.gf new file mode 100644 index 000000000..d82eee100 --- /dev/null +++ b/src/zulu/grammar_ext/MultiLexLang.gf @@ -0,0 +1,3 @@ +abstract MultiLexLang = NguniLang,MultiLex ** { + flags startcat=Phr ; +} ; diff --git a/src/zulu/grammar_ext/MultiLexLangZul.gf b/src/zulu/grammar_ext/MultiLexLangZul.gf new file mode 100644 index 000000000..9d3cfc6b8 --- /dev/null +++ b/src/zulu/grammar_ext/MultiLexLangZul.gf @@ -0,0 +1,5 @@ +--# -path=.:..:../../abstract:../../common:../../prelude:../abstract_ext:../lexica + +concrete MultiLexLangZul of MultiLexLang = + NguniLangZul, + MultiLexZul ** {} ; diff --git a/src/zulu/grammar_ext/NguniChunk.gf b/src/zulu/grammar_ext/NguniChunk.gf new file mode 100755 index 000000000..c7095cbb6 --- /dev/null +++ b/src/zulu/grammar_ext/NguniChunk.gf @@ -0,0 +1,17 @@ +--1 Lang: a Test Module for the Resource Grammar + +abstract NguniChunk = + NguniGrammar, + Backward[ComplV2,ComplV3], + ExtraExt, + NounExt, + VerbExt, + -- MonoLexAbs, + PChunk, + Symbol - [Symb] + -- ,Construction --- could be compiled here, but not in concretes, as they call Syntax and Grammar + -- ,Documentation --# notpresent + -- ,Markup - [stringMark] + ** { + flags startcat=Phr ; + } ; diff --git a/src/zulu/grammar_ext/NguniChunkZul.gf b/src/zulu/grammar_ext/NguniChunkZul.gf new file mode 100755 index 000000000..0270a6223 --- /dev/null +++ b/src/zulu/grammar_ext/NguniChunkZul.gf @@ -0,0 +1,20 @@ +--# -path=.:../abstract:../common:../api:../prelude + +concrete NguniChunkZul of NguniChunk = + NguniGrammarZul, + BackwardZul[ComplV2,ComplV3], + ExtraExtZul, + NounExtZul, + VerbExtZul, + -- MonoLexZul, + PChunkZul, + SymbolZul - [Symb] + -- TempZul + -- ,ConstructionZul + -- ,DocumentationZul --# notpresent + -- ,MarkupZul - [stringMark] + ** { + + + +} ; diff --git a/src/zulu/grammar_ext/NguniGrammar.gf b/src/zulu/grammar_ext/NguniGrammar.gf new file mode 100755 index 000000000..4f2d46379 --- /dev/null +++ b/src/zulu/grammar_ext/NguniGrammar.gf @@ -0,0 +1,20 @@ +-- All functions are explicitly inherited, in order to allow useful probabilities + +abstract NguniGrammar = + Noun [DetCN, UsePron, DetQuant, NumSg, NumPl, IndefArt, DefArt, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP, MassNP], -- MassNP,AdvCN, AdvNP, + Verb [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash], + Adjective [PositA, AdAP], + Adverb [PositAdvAdj, SubjS], + -- Numeral, + Sentence [PredVP, ImpVP, UseCl, UseQCl, UseRCl], + Question [QuestCl, QuestIAdv, QuestIComp], + Relative [RelVP, IdRP], + -- Conjunction, + Phrase [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc], + Text - [Temp,Adv,IAdv], + Structural [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA], + -- Idiom, + Tense [PPos, PNeg], + -- Transfer , + TempExt -- [TPresTemp, TPerfTemp, TPastTemp, TFutTemp, TPastPresTemp, TFutPresTemp, TPerfPerfTemp, TFutPerfTemp, TPerfPresTemp] + ; diff --git a/src/zulu/grammar_ext/NguniGrammarZul.gf b/src/zulu/grammar_ext/NguniGrammarZul.gf new file mode 100755 index 000000000..972b51f0a --- /dev/null +++ b/src/zulu/grammar_ext/NguniGrammarZul.gf @@ -0,0 +1,24 @@ +-- All functions are explicitly inherited, in order to allow useful probabilities + +concrete NguniGrammarZul of NguniGrammar = + NounZul [DetCN, UsePron, DetQuant, NumSg, NumPl, IndefArt, DefArt, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP, MassNP], -- MassNP, AdvCN,AdvNP, + VerbZul [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash], + AdjectiveZul [PositA, AdAP], + AdverbZul [PositAdvAdj, SubjS], + -- Numeral, + SentenceZul [PredVP, ImpVP, UseCl, UseQCl, UseRCl], + QuestionZul [QuestCl, QuestIAdv, QuestIComp], + RelativeZul [RelVP, IdRP], + -- Conjunction, + PhraseZul [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc], + TextX - [Temp,Adv,IAdv], + StructuralZul [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA], + -- Idiom, + TenseX [PPos,PNeg], + -- Transfer , + TempExtZul -- [TPresTemp, TPerfTemp, TPastTemp, TFutTemp, TPastPresTemp, TFutPresTemp, TPerfPerfTemp, TFutPerfTemp, TPerfPresTemp] + ** open ResZul, Prelude in { + +flags startcat = Phr ; unlexer = text ; lexer = text ; + +} ; diff --git a/src/zulu/grammar_ext/NguniLang.gf b/src/zulu/grammar_ext/NguniLang.gf new file mode 100755 index 000000000..955f9996b --- /dev/null +++ b/src/zulu/grammar_ext/NguniLang.gf @@ -0,0 +1,17 @@ +--1 Lang: a Test Module for the Resource Grammar + +abstract NguniLang = + NguniGrammar, + Backward[ComplV2,ComplV3], + ExtraExt, + NounExt, + VerbExt + -- MonoLexAbs, + -- Chunk + -- Symbol - [Symb], + -- ,Construction --- could be compiled here, but not in concretes, as they call Syntax and Grammar + -- ,Documentation --# notpresent + -- ,Markup - [stringMark] + ** { + flags startcat=Phr ; + } ; diff --git a/src/zulu/grammar_ext/NguniLangZul.gf b/src/zulu/grammar_ext/NguniLangZul.gf new file mode 100755 index 000000000..d06196008 --- /dev/null +++ b/src/zulu/grammar_ext/NguniLangZul.gf @@ -0,0 +1,20 @@ +--# -path=.:../abstract:../common:../api:../prelude + +concrete NguniLangZul of NguniLang = + NguniGrammarZul, + BackwardZul[ComplV2,ComplV3], + ExtraExtZul, + NounExtZul, + VerbExtZul + -- MonoLexZul, + -- ChunkZul, + -- SymbolZul - [Symb], + -- TempZul + -- ,ConstructionZul + -- ,DocumentationZul --# notpresent + -- ,MarkupZul - [stringMark] + ** { + + + +} ; diff --git a/src/zulu/grammar_ext/NguniSyntax.gf b/src/zulu/grammar_ext/NguniSyntax.gf new file mode 100755 index 000000000..47aa67468 --- /dev/null +++ b/src/zulu/grammar_ext/NguniSyntax.gf @@ -0,0 +1,258 @@ +incomplete resource NguniSyntax = + open Grammar,ExtraZulAbs,Backward,TempAbs + +in { + +oper + + mkUtt = overload { + mkUtt : S -> Utt + = UttS ; + mkUtt : QS -> Utt + = UttQS ; + mkUtt : Pol -> Imp -> Utt + = UttImpSg ; + mkUtt : Imp -> Utt + = UttImpSg PPos + } ; + + mkImp = overload { + mkImp : VP -> Imp + = ImpVP ; + } ; + + mkS = overload { + mkS : Temp -> Pol -> Cl -> S + = UseCl ; + mkS : Pol -> Cl -> S + = UseCl TPresTemp ; + mkS : Temp -> Cl -> S + = \t -> UseCl t PPos ; + mkS : Cl -> S + = UseCl TPresTemp PPos + } ; + + mkQS = overload { + mkQS : Temp -> Pol -> QCl -> QS + = UseQCl ; + mkQS : Pol -> QCl -> QS + = UseQCl TPresTemp ; + mkQS : Temp -> QCl -> QS + = \t -> UseQCl t PPos ; + mkQS : QCl -> QS + = UseQCl TPresTemp PPos -- ; + -- mkQS : Adv -> QS -> QS + -- = AdvQS ; + } ; + + potQS = overload { + potQS : Pol -> QCl -> QS + = PotQS + } ; + + positivePol : Pol + = PPos ; + negativePol : Pol + = PNeg ; + + presentTense : Temp + = TPresTemp ; + perfectTense : Temp + = TPerfTemp ; + pastTense : Temp + = TPastTemp ; + futureTense : Temp + = TFutTemp ; + + mkCl = overload { + mkCl : NP -> VP -> Cl + = PredVP ; + mkCl : NP -> V -> Cl + = \np,v -> PredVP np (UseV v) ; + mkCl : NP -> V2 -> NP -> Cl + = \np,v,obj -> PredVP np (ComplV2 v obj) ; + -- mkCl : NP -> AP -> Cl + -- = \np,ap -> PredVP np (UseAP ap) ; + -- mkCl : NP -> A -> Cl + -- = \np,a -> PredVP np (UseAP (PositA a)) ; + mkCl : NP -> Cl + = PredNP + } ; + + mkQCl = overload { + mkQCl : Cl -> QCl + = QuestCl ; + -- mkQCl : NP -> IAdv -> QCl + -- = IAdvQCl ; + mkQCl : IAdv -> Cl -> QCl + = QuestIAdv + -- mkQCl : Adv -> QCl -> QCl + -- = AdvQCl + } ; + + mkVP = overload { + mkVP : V -> VP + = UseV ; + mkVP : V2 -> NP -> VP + = ComplV2 ; + mkVP : V3 -> NP -> NP -> VP + = ComplV3 ; + mkVP : NP -> VP + = \np -> UseComp (CompNP np) ; + mkVP : Adv -> VP + = \adv -> UseComp (CompAdv adv) ; + mkVP : AP -> VP + = \ap -> UseComp (CompAP ap) ; + mkVP : VP -> Adv -> VP + = AdvVP ; + mkVP : VA -> AP -> VP + = ComplVA ; + mkVP : VS -> S -> VP + = ComplVS ; + mkVP : VAux -> VP -> VP + = ComplVAux + } ; + + assocVP = overload { + assocVP : NP -> VP + = AssocCop + } ; + + eqVP = overload { + eqVP : NP -> VP + = EqCop + } ; + + -- progVP = overload { + -- progVP : VP -> VP + -- = ProgVP + -- } ; + + mkNP = overload { + mkNP : Det -> CN -> NP + = DetCN ; + mkNP : Det -> N -> NP + = \det,n -> DetCN det (UseN n) ; + mkNP : Pron -> NP + = UsePron ; + mkNP : CN -> NP + = \cn -> DetCN (DetQuant IndefArt NumSg) cn ; + mkNP : N -> NP + = \n -> DetCN (DetQuant IndefArt NumSg) (UseN n) ; + -- mkNP : NP -> Conj -> NP -> NP + -- = \np1,conj,np2 -> ConjNP np1 conj np2 ; + mkNP : QuantStem -> CN -> NP + = QuantCN ; + mkNP : NP -> Adv -> NP + = AdvNP + } ; + + i_NP : NP + = UsePron i_Pron ; + you_NP : NP + = UsePron youSg_Pron ; + -- he_NP : NP + -- = UsePron he_Pron ; + -- she_NP : NP + -- = UsePron she_Pron ; + + mkCN = overload { + mkCN : N -> CN + = UseN ; + mkCN : AP -> CN -> CN + = AdjCN ; + mkCN : A -> N -> CN + = \a,n -> AdjCN (PositA a) (UseN n) ; + mkCN : A -> CN -> CN + = \a,cn -> AdjCN (PositA a) cn ; + mkCN : Adv -> CN -> CN + = \adv,cn -> AdvCN cn adv ; + mkCN : CN -> RS -> CN + = RelCN ; + mkCN : CN -> NP -> CN + = PossNP ; + mkCN : N -> NP -> CN + = \n,np -> PossNP (UseN n) np + -- mkCN : CN -> Pron -> CN + -- = PossPron ; + } ; + + numCN = overload { + numCN : CN -> A -> CN + = NumAdjCN ; + } ; + + -- descrCN : CN -> NP -> CN = DescrNP ; + + mkAP = overload { + mkAP : A -> AP + = PositA ; + mkAP : AdA -> AP -> AP + = AdAP + } ; + + mkAdv = overload { + mkAdv : NP -> Adv + = \np -> LocNPAdv np ; + -- mkAdv : ConjN -> S -> Adv + -- = \conj,s -> ConjAdv conj s ; + mkAdv : Subj -> S -> Adv + = SubjS ; + mkAdv : A -> Adv + = PositAdvAdj + } ; + + instrAdv = overload { + instrAdv : NP -> Adv + = \np -> InstrNPAdv np ; + instrAdv : Adv -> NP -> Adv + = InstrAdvNPAdv + } ; + + locAdv = overload { + locAdv : NP -> Adv + = \np -> LocNPAdv np ; + locAdv : Adv -> NP -> Adv + = \adv,np -> LocAdvNPAdv adv np + } ; + + kwaAdv = overload { + kwaAdv : Adv -> NP -> Adv + = \adv,np -> KwaNPAdv adv np + } ; + + kuAdv = overload { + kuAdv : NP -> Adv + = \np -> KuNPAdv np ; + -- kuAdv : Adv -> NP -> Adv + -- = \adv,np -> KuAdvNPAdv adv np + } ; + + assocAdv = overload { + assocAdv : NP -> Adv + = NaNPAdv + } ; + + relAdv = overload { + relAdv : Adv -> RS + = \adv -> RelAdv adv + } ; + + mkRS = overload { + mkRS : QuantStem -> RS + = QuantRS ; + mkRS : RelStem -> RS + = RelRS ; + mkRS : Temp -> Pol -> VP -> RS + = \t,p,vp -> UseRCl t p (RelVP IdRP vp) ; + mkRS : VP -> RS + = \vp -> UseRCl TPresTemp PPos (RelVP IdRP vp) + } ; + + aPl_Det : Det + = DetQuant IndefArt NumPl ; + + -- mkSymb : Symb + -- = MkSymb ; + +} diff --git a/src/zulu/grammar_ext/NguniSyntaxZul.gf b/src/zulu/grammar_ext/NguniSyntaxZul.gf new file mode 100755 index 000000000..cee36c105 --- /dev/null +++ b/src/zulu/grammar_ext/NguniSyntaxZul.gf @@ -0,0 +1,10 @@ +--# -path=.:../zulu:../abstract + +resource NguniSyntaxZul = + GrammarZul, + ExtraZul ** --- inheriting everything from Grammar, not just Cat and Structural + NguniSyntax with + (Grammar=GrammarZul), + (ExtraZulAbs=ExtraZul), + (Backward=BackwardZul), + (TempAbs=TempZul) ; diff --git a/src/zulu/lexica/DevLex.gf b/src/zulu/lexica/DevLex.gf new file mode 100755 index 000000000..bff5b44cb --- /dev/null +++ b/src/zulu/lexica/DevLex.gf @@ -0,0 +1,81 @@ +abstract DevLex = Cat ** { + + fun + -- adjective stems + bana_A : A ; + bi_A : A ; + bili_A : A ; + dala_A : A ; + hle_A : A ; + khulu_A : A ; + ningi_A : A ; + de_A : A ; + + -- relative stems + mnandi_R : A ; + nzima_R : A ; + mbalwa_R : A ; + qotho_R : A ; + mhlophe_R : A ; + mbe_R : A ; + mnyama_R : A ; + + -- enumerative stems + mbe_E : A ; + nye_E : A ; + + -- noun stems + + ntu_1_2_N : N ; + fana_1_2_N : N ; + fundi_1_2_N : N ; + bhubesi_5_6_N : N ; + phoyisa_5_6_N : N ; + jele_5_6_N : N ; + hlahla_7_8_N : N ; + ncwadi_9_10_N : N ; + ndlu_9_10_N : N ; + komo_9_10_N : N ; + taba_9_10_N : N ; + ngane_9_10_N : N ; + doda_9_10_N : N ; + moto_9_10_N : N ; + John_PN : PN ; + John_1a_2a_N : N ; + nkonyana_5_6_N : N ; + lwane_7_8_N : N ; + sila_3_4_N : N ; + khova_7_8_N : N ; + tombi_9_10_N : N ; + khaya_5_6_N : N ; + + Tatjana_PN : PN ; + medal_N : N ; + gold_N : N ; + day_N : N ; + swimmer_N : N ; + majority_N : N ; + + -- verb roots + ab_V : V ; + ab_V2 : V2 ; + aban_V : V ; + aban_V2 : V2 ; + bon_V2 : V2 ; + hamb_V : V ; + sh_V : V ; + -- th_V : V ; + eq_V : V ; + ehl_V : V ; + f_V : V ; + + be_hot_V : V ; + be_healthy_V : V ; + be_fast_V : V ; + + win_V2 : V2 ; + + ngaphezu_Adv : Adv ; + -- kakhulu_AdA : AdA ; + +} diff --git a/src/zulu/lexica/DevLexZul.gf b/src/zulu/lexica/DevLexZul.gf new file mode 100755 index 000000000..230354491 --- /dev/null +++ b/src/zulu/lexica/DevLexZul.gf @@ -0,0 +1,79 @@ +concrete DevLexZul of DevLex = CatZul ** open ResZul,ParadigmsZul in { + + lin + -- adjective stems + bana_A = mkA "bana" ; + bi_A = mkA "bi" ; + bili_A = mkA "bili" ; + dala_A = mkA "dala" ; + hle_A = mkA "hle" ; + khulu_A = mkA "khulu" ; + ningi_A = mkA "ningi" ; + de_A = mkA "de" ; + + -- relative stems + mnandi_R = mkRelA "mnandi" ; + nzima_R = mkRelA "nzima" ; + mbalwa_R = mkRelA "mbalwa" ; + qotho_R = mkRelA "qotho" ; + mhlophe_R = mkRelA "mhlophe" ; + mbe_R = mkRelA "mbe" ; + mnyama_R = mkRelA "mnyama" ; + + -- enumerative stems + mbe_E = mkA "mbe" ; + nye_E = mkA "nye" ; + + -- noun stems + ntu_1_2_N = mkN "ntu" C1_2 ; + fana_1_2_N = mkN "fana" C1_2 ; + fundi_1_2_N = mkN "fundi" C1_2 ; + bhubesi_5_6_N = mkN "bhubesi" C5_6 ; + phoyisa_5_6_N = mkN "phoyisa" C5_6 ; + jele_5_6_N = mkN "jele" "ejele" "emajele" C5_6 ; + hlahla_7_8_N = mkN "hlahla" C7_8 ; + ncwadi_9_10_N = mkN "ncwadi" C9_10 ; + ndlu_9_10_N = mkN "ndlu" C9_10 ; + komo_9_10_N = mkN "komo" C9_10 ; + taba_9_10_N = mkN "taba" C9_10 ; + ngane_9_10_N = mkN "ngane" C9_10 ; + doda_9_10_N = mkN "doda" C9_10 ; + moto_9_10_N = mkN "moto" C9_10 ; + John_PN = mkPN "John" C1a_2a ; + John_1a_2a_N = mkN "John" C1a_2a ; + Goli_PN = mkPN "Goli" C5_6 ; + nkonyana_5_6_N = mkN "nkonyana" C5_6 ; + lwane_7_8_N = mkN "lwane" C7_8 ; + sila_3_4_N = mkN "sila" C3_4 ; + khova_7_8_N = mkN "khova" C7_8 ; + tombi_9_10_N = mkN "tombi" C9_10 ; + khaya_5_6_N = mkELocN "khaya" C5_6 ; + + Tatjana_PN = mkPN "Tatjana" C1a_2a ; + medal_N = mkN "dondo" C9_10 ; + gold_N = mkN "golide" C5_6 ; + day_N = mkN "suku" C11_10 ; + swimmer_N = mkN "hlambi" C9_10 ; + majority_N = mkN "ningi" C5_6 ; + + -- verb roots + ab_V = mkV "ab" ; + ab_V2 = mkV2 "ab" ; + aban_V = mkV "aban" ; + aban_V2 = mkV2 "aban" ; + bon_V2 = mkV2 "bon" ; + hamb_V = mkV "hamb" ; + sh_V = mkV "sh" ; + eq_V = mkV "eq" ; + ehl_V = mkV "ehl" ; + f_V = mkV "f" ; + + be_hot_V = mkV "shis" ; + be_healthy_V = mkV "phil" ; + be_fast_V = mkV "shes" ; + + win_V2 = mkV2 "zuz" ; + + ngaphezu_Adv = mkAdv "ngaphezu" ; + -- kakhulu_AdA = { s = "kakhulu" } ; +} diff --git a/src/zulu/lexica/MonoLex.gf b/src/zulu/lexica/MonoLex.gf new file mode 100755 index 000000000..cbce159d0 --- /dev/null +++ b/src/zulu/lexica/MonoLex.gf @@ -0,0 +1,16976 @@ +abstract MonoLex = Cat ** { + + fun + -- -- MANUAL ADDITIONS -- + -- gcwele_RelStem : RelStem ; + ningi_5_N : N ; + lungu_1a_2a_N : N ; + + -- adjective stems + bana_A : A ; + bi_A : A ; + bili_A : A ; + dadlana_A : A ; + dala_A : A ; + dana_A : A ; + de_A : A ; + fishane_A : A ; + fuphi_A : A ; + fushane_A : A ; + hlanu_A : A ; + hle_A : A ; + jana_A : A ; + khudlwana_A : A ; + khulu_A : A ; + khulukhulu_A : A ; + mbi_A : A ; + ncane_A : A ; + nci_A : A ; + ncinyane_A : A ; + ne_A : A ; + ngaka_A : A ; + ngaki_A : A ; + ngako_A : A ; + ngaphi_A : A ; + ningana_A : A ; + ningi_A : A ; + nyana_A : A ; + nye_A : A ; + sha_A : A ; + thathu_A : A ; + thulu_A : A ; + + -- noun stems + aba_8_N : N ; + abelo_7_8_N : N ; + abi_1_2_N : N ; + abo_3_4_N : N ; + adla_7_8_N : N ; + aga_7_8_N : N ; + agila_7_8_N : N ; + ahlukaniso_7_8_N : N ; + ahluko_3_4_N : N ; + ahluko_7_8_N : N ; + ahluleli_1_2_N : N ; + ahlulelo_7_8_N : N ; + ahlulo_3_N : N ; + akhamizi_8_N : N ; + akhamuzi_7_8_N : N ; + akhelwana_1_2_N : N ; + akhelwane_1_2_N : N ; + akhi_1_2_N : N ; + akhi_7_8_N : N ; + akhiwo_7_8_N : N ; + ala_7_8_N : N ; + alakutshelwa_7_8_N : N ; + ali_1_2_N : N ; + alimani_7_8_N : N ; + aliwa_7_8_N : N ; + aliwakazi_7_8_N : N ; + alukazana_7_8_N : N ; + alukazi_7_8_N : N ; + ama_5_6_N : N ; + amba_7_8_N : N ; + ambane_7_8_N : N ; + ambatho_7_8_N : N ; + ambulo_7_8_N : N ; + amil_7_8_N : N ; + amukela_7_8_N : N ; + amuku_7_8_N : N ; + an_5_6_N : N ; + ancinza_7_8_N : N ; + anda_7_8_N : N ; + andiso_7_8_N : N ; + andla_6_N : N ; + andla_7_8_N : N ; + andlu_7_8_N : N ; + andlwana_7_8_N : N ; + ando_7_8_N : N ; + andulela_7_8_N : N ; + andulelo_7_8_N : N ; + anga_6_N : N ; + anga_9_10_N : N ; + angcobe_7_8_N : N ; + ango_7_8_N : N ; + angoma_7_8_N : N ; + angquma_7_N : N ; + ankahlu_7_N : N ; + antu_11_10_N : N ; + antungwana_7_8_N : N ; + anusi_7_8_N : N ; + anya_7_8_N : N ; + apa_5_N : N ; + aphethe_7_8_N : N ; + aphuli_1_2_N : N ; + apula_5_6_N : N ; + aqheqhe_8_N : N ; + asi_5_6_N : N ; + atali_5_N : N ; + auteng_5_N : N ; + azela_7_8_N : N ; + azelo_7_N : N ; + azi_11_10_N : N ; + azi_1_2_N : N ; + azi_7_8_N : N ; + azisi_1_2_N : N ; + aziso_7_8_N : N ; + baba_9_10_N : N ; + babala_9_10_N : N ; + babe_11_N : N ; + babule_7_8_N : N ; + bala_11_N : N ; + bala_3_4_N : N ; + bala_5_6_N : N ; + bala_9_N : N ; + balabala_3_4_N : N ; + balo_5_6_N : N ; + balo_7_8_N : N ; + bamba_11_10_N : N ; + bamba_5_6_N : N ; + bamba_7_8_N : N ; + bamba_9_N : N ; + bambe_9_10_N : N ; + bambela_9_10_N : N ; + bambiso_7_8_N : N ; + bambo_11_10_N : N ; + bambo_7_8_N : N ; + banda_5_6_N : N ; + banda_9_10_N : N ; + bande_11_10_N : N ; + bande_5_6_N : N ; + bande_7_8_N : N ; + bande_9_10_N : N ; + bandela_3_4_N : N ; + bandla_5_6_N : N ; + bandlululo_11_N : N ; + bane_11_10_N : N ; + bane_7_8_N : N ; + banga_5_6_N : N ; + bangana_5_N : N ; + bangandlala_3_4_N : N ; + bangela_9_N : N ; + bangi_1_2_N : N ; + bangi_9_10_N : N ; + bango_3_4_N : N ; + bani_11_10_N : N ; + bani_3_4_N : N ; + bani_7_8_N : N ; + banibani_14_N : N ; + banzi_14_N : N ; + basa_5_6_N : N ; + basa_9_10_N : N ; + batha_3_4_N : N ; + batha_9_6_N : N ; + bawu_7_8_N : N ; + baya_7_8_N : N ; + baza_5_6_N : N ; + bazi_11_N : N ; + bazi_1_2_N : N ; + bazi_7_8_N : N ; + bazi_9_10_N : N ; + bazo_9_10_N : N ; + bebe_5_N : N ; + befu_11_N : N ; + beka_3_N : N ; + beka_5_6_N : N ; + bekeli_7_8_N : N ; + beki_1_2_N : N ; + bele_14_N : N ; + bele_3_4_N : N ; + bele_5_6_N : N ; + bele_7_8_N : N ; + belebele_3_4_N : N ; + belejongosi_6_N : N ; + beleko_9_10_N : N ; + bemba_11_10_N : N ; + bemba_9_10_N : N ; + bende_11_10_N : N ; + bende_14_N : N ; + benge_9_10_N : N ; + bengi_1_2_N : N ; + bengo_3_4_N : N ; + benyebenye_14_N : N ; + bethe_3_N : N ; + bethe_5_6_N : N ; + bethi_1_2_N : N ; + bha_11_N : N ; + bha_14_N : N ; + bhabhadlolo_11_10_N : N ; + bhaca_11_10_N : N ; + bhaca_7_8_N : N ; + bhada_5_6_N : N ; + bhadada_9_10_N : N ; + bhadi_5_6_N : N ; + bhadu_7_8_N : N ; + bhajethi_5_6_N : N ; + bhakabhaka_7_8_N : N ; + bhakede_5_6_N : N ; + bhakela_7_8_N : N ; + bhako_3_4_N : N ; + bhaku_5_6_N : N ; + bhala_5_6_N : N ; + bhalakaxa_5_6_N : N ; + bhalakaxa_9_10_N : N ; + bhalala_7_8_N : N ; + bhalane_5_6_N : N ; + bhali_1_2_N : N ; + bhalo_3_4_N : N ; + bhamba_7_8_N : N ; + bhambalala_11_10_N : N ; + bhamu_7_8_N : N ; + bhamuza_5_6_N : N ; + bhande_5_6_N : N ; + bhandeshi_5_6_N : N ; + bhanela_5_6_N : N ; + bhange_5_6_N : N ; + bhanoyi_5_6_N : N ; + bhanqule_5_6_N : N ; + bhansi_5_6_N : N ; + bhantshi_5_6_N : N ; + bhanyaza_5_6_N : N ; + bhaqa_11_10_N : N ; + bhaqanga_3_N : N ; + bhasi_5_6_N : N ; + bhasikidi_5_6_N : N ; + bhaxa_5_6_N : N ; + bhaxa_9_10_N : N ; + bhaxu_7_8_N : N ; + bhaxu_9_10_N : N ; + bhayi_5_6_N : N ; + bhayibheli_5_6_N : N ; + bhayisikili_5_6_N : N ; + bhayisikobho_5_6_N : N ; + bhebhe_7_8_N : N ; + bhede_3_4_N : N ; + bhedlela_7_8_N : N ; + bhedo_3_4_N : N ; + bhedu_11_10_N : N ; + bheduka_3_4_N : N ; + bhedumehlwana_9_N : N ; + bheja_5_6_N : N ; + bhejazane_3_4_N : N ; + bheji_5_6_N : N ; + bheka_5_6_N : N ; + bheki_1_2_N : N ; + bhele_5_6_N : N ; + bhelu_7_8_N : N ; + bhemi_1_2_N : N ; + bhentshi_5_6_N : N ; + bheshu_5_6_N : N ; + bhici_11_10_N : N ; + bhidi_1_2_N : N ; + bhidi_8_N : N ; + bhikili_5_6_N : N ; + bhikisho_3_4_N : N ; + bhilijisi_9_10_N : N ; + bhimbi_5_6_N : N ; + bhinca_5_6_N : N ; + bhishi_5_6_N : N ; + bhiza_9_10_N : N ; + bhizinisi_5_6_N : N ; + bhobe_3_4_N : N ; + bhobho_3_4_N : N ; + bhobhodlana_6_N : N ; + bhobo_7_8_N : N ; + bhobo_9_10_N : N ; + bhodi_5_6_N : N ; + bhodla_9_10_N : N ; + bhodlela_5_6_N : N ; + bhodwe_5_6_N : N ; + bhojongwana_5_6_N : N ; + bhokisi_5_6_N : N ; + bhoko_11_10_N : N ; + bhoko_9_10_N : N ; + bhokodo_9_10_N : N ; + bhokodwe_9_10_N : N ; + bhokodwebomvu_9_N : N ; + bhola_5_6_N : N ; + bhola_9_10_N : N ; + bholoho_5_6_N : N ; + bhomu_5_6_N : N ; + bhonga_5_6_N : N ; + bhongolo_9_10_N : N ; + bhoshongo_3_4_N : N ; + bhu_11_N : N ; + bhu_5_6_N : N ; + bhu_9_N : N ; + bhube_9_10_N : N ; + bhubesi_5_6_N : N ; + bhubhiso_9_N : N ; + bhubhudlo_3_4_N : N ; + bhucu_7_8_N : N ; + bhudane_9_10_N : N ; + bhude_9_10_N : N ; + bhudle_5_6_N : N ; + bhuku_11_10_N : N ; + bhuku_5_6_N : N ; + bhulashi_5_6_N : N ; + bhuleki_5_6_N : N ; + bhulelo_3_4_N : N ; + bhuli_1_2_N : N ; + bhuloho_5_6_N : N ; + bhulukwe_5_6_N : N ; + bhulunga_9_10_N : N ; + bhumbe_7_8_N : N ; + bhumbulu_9_N : N ; + bhumbulu_9_10_N : N ; + bhunga_5_6_N : N ; + bhungane_5_6_N : N ; + bhungezi_5_6_N : N ; + bhungu_5_6_N : N ; + bhungulu_9_10_N : N ; + bhunu_5_6_N : N ; + bhunu_7_N : N ; + bhuqe_5_6_N : N ; + bhuqu_5_6_N : N ; + bhuqwa_3_N : N ; + bhuthuma_9_10_N : N ; + bhuzana_9_10_N : N ; + bhuzane_11_10_N : N ; + bhuzazana_7_8_N : N ; + bhuzi_9_10_N : N ; + bhuzikazi_9_10_N : N ; + bi_11_N : N ; + bi_14_N : N ; + bi_7_8_N : N ; + bi_9_N : N ; + biba_7_8_N : N ; + bibi_5_6_N : N ; + bibithwane_7_N : N ; + bika_5_6_N : N ; + biki_1_2_N : N ; + bikibiki_11_10_N : N ; + biko_3_4_N : N ; + bila_9_10_N : N ; + bili_14_N : N ; + bili_7_N : N ; + biliboco_8_N : N ; + bilini_8_N : N ; + biliso_7_8_N : N ; + bilo_11_10_N : N ; + bimbi_3_4_N : N ; + binda_7_8_N : N ; + bindi_7_8_N : N ; + bingelelo_7_8_N : N ; + bisi_11_N : N ; + bizo_11_10_N : N ; + bizo_5_6_N : N ; + bizo_9_10_N : N ; + bizo_9_6_N : N ; + bobe_11_10_N : N ; + bobo_3_4_N : N ; + boko_3_4_N : N ; + bokwane_3_4_N : N ; + bola_3_4_N : N ; + bolo_11_N : N ; + bombo_3_4_N : N ; + bombo_5_6_N : N ; + bombo_9_10_N : N ; + bomu_5_6_N : N ; + bomu_7_8_N : N ; + bomvana_14_N : N ; + bomvu_11_N : N ; + bomvu_14_N : N ; + bomvu_5_6_N : N ; + bomvu_7_8_N : N ; + bona_5_6_N : N ; + bonakaliso_7_8_N : N ; + bonambi_3_4_N : N ; + bonda_11_10_N : N ; + bonda_7_8_N : N ; + bondlo_8_N : N ; + bonelo_7_8_N : N ; + bonga_9_10_N : N ; + bongi_1_2_N : N ; + bongi_9_10_N : N ; + bongo_7_8_N : N ; + boni_1_2_N : N ; + boni_7_8_N : N ; + boni_9_6_N : N ; + bonisi_1_2_N : N ; + boniso_7_8_N : N ; + bono_3_4_N : N ; + bopha_9_10_N : N ; + bopho_7_8_N : N ; + boshwa_7_8_N : N ; + bovu_11_N : N ; + boya_11_N : N ; + bozane_5_6_N : N ; + bozi_7_8_N : N ; + bubulo_3_4_N : N ; + bubulungu_7_8_N : N ; + buka_11_10_N : N ; + buka_5_6_N : N ; + bukeli_7_8_N : N ; + bukiso_3_4_N : N ; + buko_7_8_N : N ; + bukubuku_11_N : N ; + bulali_1_2_N : N ; + bululu_5_6_N : N ; + bumba_5_6_N : N ; + bumba_9_N : N ; + bumbano_11_N : N ; + bumbi_1_2_N : N ; + bunda_5_6_N : N ; + bundu_3_4_N : N ; + bundu_9_10_N : N ; + bungu_5_6_N : N ; + bunzi_5_6_N : N ; + busi_1_2_N : N ; + busiso_7_8_N : N ; + buso_3_4_N : N ; + buso_5_6_N : N ; + buthano_3_4_N : N ; + buthi_1_2_N : N ; + butho_3_4_N : N ; + butho_5_6_N : N ; + buthu_8_N : N ; + buya_5_6_N : N ; + buya_7_8_N : N ; + buya_9_10_N : N ; + buzi_1_2_N : N ; + buzi_5_6_N : N ; + buzo_3_4_N : N ; + caba_3_4_N : N ; + caba_7_8_N : N ; + cabanga_11_N : N ; + cabango_11_N : N ; + cabango_3_4_N : N ; + cabha_7_8_N : N ; + caca_11_N : N ; + caca_5_6_N : N ; + cacamezelo_3_4_N : N ; + cako_3_4_N : N ; + cala_5_6_N : N ; + camelo_3_4_N : N ; + camu_9_10_N : N ; + cansi_11_N : N ; + cansi_5_6_N : N ; + casha_5_6_N : N ; + cathu_3_4_N : N ; + cathulo_7_8_N : N ; + cayi_14_N : N ; + cebe_11_N : N ; + cebi_7_8_N : N ; + cebo_3_4_N : N ; + cebo_5_6_N : N ; + cece_5_6_N : N ; + cefe_7_8_N : N ; + ceke_7_8_N : N ; + cele_5_6_N : N ; + celo_7_8_N : N ; + celu_9_10_N : N ; + cengece_11_10_N : N ; + cengezi_3_4_N : N ; + cephu_7_8_N : N ; + cezu_11_10_N : N ; + cezwana_5_6_N : N ; + cha_11_N : N ; + chachazo_3_4_N : N ; + chaka_7_8_N : N ; + chakide_5_6_N : N ; + chalaha_5_6_N : N ; + chamo_3_4_N : N ; + changuzo_3_4_N : N ; + chaphazelo_5_6_N : N ; + chaphazi_5_6_N : N ; + chasiselo_7_8_N : N ; + chasiso_7_8_N : N ; + chazelo_9_10_N : N ; + cheme_7_8_N : N ; + chenene_7_8_N : N ; + chengela_9_10_N : N ; + chi_5_6_N : N ; + chibi_5_6_N : N ; + chibi_7_8_N : N ; + chide_5_6_N : N ; + chilo_3_4_N : N ; + chilo_5_6_N : N ; + chitha_5_6_N : N ; + chitho_7_8_N : N ; + choba_5_6_N : N ; + choko_11_N : N ; + cholo_7_8_N : N ; + chopho_14_N : N ; + chopho_5_6_N : N ; + chuku_11_N : N ; + chungechunge_11_N : N ; + chuse_7_8_N : N ; + chushela_11_10_N : N ; + chushela_9_10_N : N ; + chwane_5_6_N : N ; + chwe_7_8_N : N ; + chwensi_7_8_N : N ; + chwepheshe_14_N : N ; + ci_7_8_N : N ; + cibilindi_3_4_N : N ; + cibisholo_3_4_N : N ; + cibo_5_6_N : N ; + cici_5_6_N : N ; + ciki_9_10_N : N ; + cikinciki_9_10_N : N ; + ciko_14_N : N ; + ciko_5_6_N : N ; + cilongo_5_6_N : N ; + cimbi_3_4_N : N ; + cime_5_6_N : N ; + cindezeli_1_2_N : N ; + cingo_11_10_N : N ; + cipho_9_10_N : N ; + cishe_5_6_N : N ; + cobangcoba_9_10_N : N ; + coco_7_8_N : N ; + combo_3_4_N : N ; + condo_3_4_N : N ; + congco_9_10_N : N ; + consi_5_6_N : N ; + cosana_9_10_N : N ; + cosi_9_10_N : N ; + cozana_9_10_N : N ; + cozi_9_10_N : N ; + cu_11_N : N ; + cu_3_4_N : N ; + cuba_5_6_N : N ; + cubu_7_8_N : N ; + cucu_7_8_N : N ; + culi_1_2_N : N ; + culo_3_N : N ; + culo_5_6_N : N ; + cupho_7_8_N : N ; + cwaningi_1_2_N : N ; + cwaningo_11_N : N ; + cwatha_11_N : N ; + cwazicwazi_14_N : N ; + cwebe_11_10_N : N ; + cwebecwebe_14_N : N ; + cwecwe_11_10_N : N ; + cwibi_14_N : N ; + cwicwicwi_7_8_N : N ; + daba_11_10_N : N ; + daba_9_10_N : N ; + dabe_11_N : N ; + dabu_3_N : N ; + dabuko_9_N : N ; + dada_3_4_N : N ; + dada_5_6_N : N ; + dadada_7_8_N : N ; + dadawe_11_10_N : N ; + daka_11_10_N : N ; + daka_3_4_N : N ; + daka_7_8_N : N ; + dakwa_7_8_N : N ; + dala_14_N : N ; + dala_5_6_N : N ; + dala_7_N : N ; + dali_3_N : N ; + dali_9_10_N : N ; + dalo_9_N : N ; + dalwa_7_8_N : N ; + damu_5_6_N : N ; + dandatho_9_10_N : N ; + dangala_9_10_N : N ; + danso_3_4_N : N ; + dati_3_4_N : N ; + datsha_9_10_N : N ; + dayimane_5_6_N : N ; + dayisi_1_2_N : N ; + de_14_N : N ; + debe_11_10_N : N ; + debe_9_10_N : N ; + debele_7_8_N : N ; + dede_5_6_N : N ; + dedengu_14_N : N ; + dekazi_9_10_N : N ; + deku_7_8_N : N ; + dela_5_6_N : N ; + dela_6_N : N ; + dela_9_10_N : N ; + dele_5_6_N : N ; + delelo_9_10_N : N ; + denda_11_10_N : N ; + dengezi_11_10_N : N ; + desiki_5_6_N : N ; + devu_5_6_N : N ; + dibi_3_4_N : N ; + dibilishi_9_10_N : N ; + dida_9_10_N : N ; + didi_11_N : N ; + dididi_14_N : N ; + dididi_7_8_N : N ; + didiyeli_1_2_N : N ; + dikadika_7_8_N : N ; + dikimba_9_N : N ; + dikimba_9_10_N : N ; + dikiselo_7_8_N : N ; + dikoni_5_6_N : N ; + dili_5_6_N : N ; + dilinga_9_10_N : N ; + dina_5_6_N : N ; + dina_7_8_N : N ; + dinanja_3_4_N : N ; + dinda_5_6_N : N ; + dindi_7_8_N : N ; + dingilizi_7_8_N : N ; + dingilizi_9_10_N : N ; + dingo_7_8_N : N ; + dingongqangi_7_8_N : N ; + dini_11_10_N : N ; + dini_3_4_N : N ; + dinsi_5_6_N : N ; + diphi_5_6_N : N ; + dishi_9_10_N : N ; + diva_9_10_N : N ; + dixa_5_6_N : N ; + dla_14_N : N ; + dla_7_8_N : N ; + dladla_5_6_N : N ; + dladla_7_8_N : N ; + dlakadla_7_8_N : N ; + dlakadlaka_5_6_N : N ; + dlala_5_6_N : N ; + dlali_1_2_N : N ; + dlalifa_9_10_N : N ; + dlalo_3_4_N : N ; + dlambedlu_11_10_N : N ; + dlame_11_10_N : N ; + dlamini_9_10_N : N ; + dlamu_9_10_N : N ; + dlandla_3_4_N : N ; + dlanga_5_6_N : N ; + dlangala_5_6_N : N ; + dlangudlangu_7_8_N : N ; + dlanzi_5_6_N : N ; + dlavuza_3_4_N : N ; + dlawu_11_10_N : N ; + dlebe_11_N : N ; + dlebe_3_4_N : N ; + dlebe_5_6_N : N ; + dlebe_9_10_N : N ; + dledle_11_10_N : N ; + dleke_7_8_N : N ; + dlekedle_3_4_N : N ; + dleko_9_10_N : N ; + dlela_3_4_N : N ; + dlela_9_10_N : N ; + dlelo_5_6_N : N ; + dlelwane_14_N : N ; + dlelwano_14_N : N ; + dlengelele_11_10_N : N ; + dlezane_1_2_N : N ; + dlezane_3_4_N : N ; + dli_11_N : N ; + dli_1_2_N : N ; + dli_7_8_N : N ; + dlikidliki_5_6_N : N ; + dlikidliki_9_10_N : N ; + dlingozi_5_6_N : N ; + dlinza_5_6_N : N ; + dlinzo_3_4_N : N ; + dliso_5_6_N : N ; + dliwa_1_2_N : N ; + dliwa_5_6_N : N ; + dlo_7_8_N : N ; + dlodlo_7_8_N : N ; + dlodlombiya_5_6_N : N ; + dlokwe_5_6_N : N ; + dlolo_11_10_N : N ; + dlondlo_9_10_N : N ; + dlova_14_N : N ; + dlovu_3_4_N : N ; + dlovu_9_10_N : N ; + dlovukazi_9_10_N : N ; + dlovuyangena_9_N : N ; + dlozi_5_6_N : N ; + dlubu_11_10_N : N ; + dlula_5_6_N : N ; + dlunkulu_3_4_N : N ; + dluthudluthu_14_N : N ; + dluzele_9_10_N : N ; + dlwangudlwangu_14_N : N ; + doda_14_N : N ; + doda_9_6_N : N ; + dodakazi_9_6_N : N ; + dodana_9_6_N : N ; + dojeyana_9_6_N : N ; + dokotela_14_N : N ; + dokwe_3_N : N ; + dokwe_5_N : N ; + dolo_5_6_N : N ; + doloba_5_6_N : N ; + dolobha_5_6_N : N ; + dololwane_9_10_N : N ; + dombolo_5_6_N : N ; + domu_7_8_N : N ; + donda_11_10_N : N ; + dondo_9_10_N : N ; + dondolo_11_10_N : N ; + dondoshiya_3_4_N : N ; + donga_11_10_N : N ; + dongwe_11_N : N ; + doni_9_10_N : N ; + donsa_7_8_N : N ; + donsa_9_N : N ; + dosha_5_6_N : N ; + dosi_11_10_N : N ; + du_11_N : N ; + dube_5_6_N : N ; + dubo_3_4_N : N ; + dubu_3_4_N : N ; + dude_11_10_N : N ; + dudu_5_6_N : N ; + duduzi_1_2_N : N ; + duduzo_9_10_N : N ; + duka_5_6_N : N ; + duku_11_10_N : N ; + duku_5_6_N : N ; + duku_9_10_N : N ; + duli_7_8_N : N ; + duma_11_10_N : N ; + duma_5_6_N : N ; + duma_7_8_N : N ; + duma_9_N : N ; + dumalo_9_10_N : N ; + dumba_11_N : N ; + dumbe_5_6_N : N ; + dumbe_7_8_N : N ; + dumbi_7_8_N : N ; + dumbini_7_N : N ; + dumbu_5_6_N : N ; + dumbu_7_8_N : N ; + dumbu_9_10_N : N ; + dumela_5_6_N : N ; + dumezulu_9_10_N : N ; + dumo_11_10_N : N ; + dumo_7_8_N : N ; + dumo_9_10_N : N ; + duna_5_6_N : N ; + duna_9_10_N : N ; + dundu_5_6_N : N ; + dunduma_9_10_N : N ; + duze_14_N : N ; + duze_3_4_N : N ; + duze_5_6_N : N ; + dwa_3_4_N : N ; + dwa_7_N : N ; + dwa_9_10_N : N ; + dwaba_7_8_N : N ; + dwadwa_11_10_N : N ; + dwala_11_N : N ; + dwala_5_6_N : N ; + dwangu_9_10_N : N ; + dwangubane_5_6_N : N ; + dwani_11_10_N : N ; + dwedwe_7_8_N : N ; + dwele_9_10_N : N ; + dwendwe_11_10_N : N ; + dweshu_11_10_N : N ; + dweshu_5_6_N : N ; + dwi_5_6_N : N ; + ebheru_7_8_N : N ; + ebuzo_3_4_N : N ; + ehlakalo_7_8_N : N ; + ehlo_3_N : N ; + ehlo_7_8_N : N ; + ehlukaniso_7_8_N : N ; + ehluko_3_4_N : N ; + ehova_11_N : N ; + elamani_8_N : N ; + elegu_7_8_N : N ; + elelesi_7_8_N : N ; + eluleko_7_8_N : N ; + embatho_7_8_N : N ; + enabelo_7_8_N : N ; + endo_3_4_N : N ; + enge_11_N : N ; + engulo_3_N : N ; + eno_3_4_N : N ; + enziwa_1_2_N : N ; + enzo_7_8_N : N ; + esheli_7_8_N : N ; + esu_11_N : N ; + ethembiso_7_8_N : N ; + ethulo_7_8_N : N ; + evatho_7_8_N : N ; + exwayiso_7_8_N : N ; + fa_11_10_N : N ; + fa_5_6_N : N ; + fa_9_10_N : N ; + fa_9_6_N : N ; + faduko_9_10_N : N ; + fahlasi_11_10_N : N ; + fakazi_14_N : N ; + falakahla_5_6_N : N ; + fama_9_10_N : N ; + famona_7_8_N : N ; + famu_5_6_N : N ; + fana_14_N : N ; + fana_1_2_N : N ; + fanekiso_3_4_N : N ; + fanekiso_7_8_N : N ; + fanelo_9_10_N : N ; + faniso_7_8_N : N ; + fantu_11_10_N : N ; + fantu_3_4_N : N ; + fanyana_1_2_N : N ; + fasimba_11_N : N ; + fasimbe_11_N : N ; + fasitela_5_6_N : N ; + fasitele_5_6_N : N ; + fayili_5_6_N : N ; + fazana_7_N : N ; + fazane_7_N : N ; + fazi_1_2_N : N ; + fe_7_8_N : N ; + fe_9_N : N ; + fekethiso_7_8_N : N ; + felandawonye_3_4_N : N ; + felokazi_1_2_N : N ; + felwa_1_2_N : N ; + felwakazi_1_2_N : N ; + fene_9_10_N : N ; + fengqo_7_8_N : N ; + fezela_5_6_N : N ; + fezi_9_10_N : N ; + fi_1_2_N : N ; + fibinga_9_10_N : N ; + fica_7_8_N : N ; + fico_7_8_N : N ; + fihlakalo_9_10_N : N ; + fihlo_9_10_N : N ; + fika_9_10_N : N ; + fiki_7_8_N : N ; + findo_11_10_N : N ; + findo_5_6_N : N ; + fino_3_4_N : N ; + finyezo_7_8_N : N ; + finyila_6_N : N ; + fipha_11_10_N : N ; + fipha_5_6_N : N ; + fiso_7_8_N : N ; + fithi_9_10_N : N ; + fiva_9_10_N : N ; + fo_1_2_N : N ; + fo_7_8_N : N ; + fociya_7_8_N : N ; + fohlo_11_10_N : N ; + fohlofohlo_9_10_N : N ; + fokazana_1_2_N : N ; + fokazi_1_2_N : N ; + fokozi_5_6_N : N ; + fologo_9_10_N : N ; + foloko_9_N : N ; + foloko_9_10_N : N ; + folozi_9_10_N : N ; + fomu_5_6_N : N ; + foni_5_6_N : N ; + fonyo_7_8_N : N ; + fosholo_5_6_N : N ; + fosi_5_6_N : N ; + fothomfotho_9_10_N : N ; + fothongo_7_8_N : N ; + fowabo_1_2_N : N ; + fowenu_1_2_N : N ; + fowethu_1_2_N : N ; + frika_5_N : N ; + fu_11_10_N : N ; + fu_5_6_N : N ; + fu_7_8_N : N ; + fuba_7_8_N : N ; + fucumfucu_9_10_N : N ; + fucuza_9_10_N : N ; + fudu_11_10_N : N ; + fudumezi_7_8_N : N ; + fuku_5_6_N : N ; + fula_3_4_N : N ; + fulaha_5_6_N : N ; + fuma_3_4_N : N ; + fumba_9_10_N : N ; + fumbe_9_10_N : N ; + fumuka_5_6_N : N ; + funda_3_4_N : N ; + funda_7_8_N : N ; + funda_9_10_N : N ; + fundazwe_7_8_N : N ; + fundeni_3_N : N ; + fundi_1_2_N : N ; + fundisi_14_N : N ; + fundisi_1_2_N : N ; + fundiso_9_10_N : N ; + fundiswa_7_8_N : N ; + fundo_7_8_N : N ; + fundo_9_N : N ; + fungo_7_8_N : N ; + funo_10_N : N ; + funzi_1_2_N : N ; + fuphi_5_6_N : N ; + fuqulu_3_4_N : N ; + fusi_3_4_N : N ; + fusi_5_6_N : N ; + fusi_9_10_N : N ; + futha_11_N : N ; + futha_6_N : N ; + futho_11_N : N ; + futho_3_4_N : N ; + futho_9_10_N : N ; + fuyo_9_10_N : N ; + fuzo_11_10_N : N ; + ga_3_4_N : N ; + ga_7_8_N : N ; + gaba_11_N : N ; + gaba_5_6_N : N ; + gaba_7_8_N : N ; + gaba_9_10_N : N ; + gabade_5_6_N : N ; + gabaza_5_6_N : N ; + gabe_5_6_N : N ; + gabe_7_8_N : N ; + gabha_5_6_N : N ; + gada_11_10_N : N ; + gada_9_10_N : N ; + gade_5_6_N : N ; + gadi_9_10_N : N ; + gadla_9_10_N : N ; + gadu_5_6_N : N ; + gaga_11_10_N : N ; + gaga_5_6_N : N ; + gaga_9_10_N : N ; + gagamela_9_10_N : N ; + gagasi_5_6_N : N ; + gage_11_10_N : N ; + gagu_11_N : N ; + gagu_5_6_N : N ; + gagu_9_10_N : N ; + galaji_5_6_N : N ; + galelo_5_6_N : N ; + galo_11_10_N : N ; + galo_9_10_N : N ; + gama_5_6_N : N ; + gamanxa_5_6_N : N ; + gameko_7_8_N : N ; + gamu_3_4_N : N ; + gamu_5_6_N : N ; + gamu_7_8_N : N ; + gamu_9_10_N : N ; + ganga_11_N : N ; + ganga_5_6_N : N ; + ganga_7_8_N : N ; + gange_11_N : N ; + gangi_7_8_N : N ; + ganu_5_6_N : N ; + ganxa_5_6_N : N ; + gaqa_11_10_N : N ; + gaqa_5_6_N : N ; + gatsha_5_6_N : N ; + gatsha_9_10_N : N ; + gawu_11_10_N : N ; + gaxa_7_8_N : N ; + gazethi_5_6_N : N ; + gazi_11_N : N ; + gazi_5_6_N : N ; + gazi_9_10_N : N ; + gcagco_3_4_N : N ; + gcaki_5_6_N : N ; + gcaki_7_8_N : N ; + gcawu_7_8_N : N ; + gceba_9_10_N : N ; + gceka_5_6_N : N ; + gceke_5_6_N : N ; + gcifiza_7_8_N : N ; + gcina_9_10_N : N ; + gcinisikhwama_1_2_N : N ; + gcino_7_8_N : N ; + gciwane_5_6_N : N ; + gcobo_5_6_N : N ; + gcogcoma_5_6_N : N ; + gcosana_9_10_N : N ; + gcotshwa_1_2_N : N ; + gcwagcwa_7_N : N ; + gcwelegcwele_14_N : N ; + gcwelegcwele_7_8_N : N ; + ge_5_6_N : N ; + gebe_11_10_N : N ; + gebe_5_6_N : N ; + gebe_9_10_N : N ; + gebedu_11_10_N : N ; + gebengu_14_N : N ; + gebengu_7_8_N : N ; + gebhe_9_N : N ; + gebhezi_11_10_N : N ; + gece_7_8_N : N ; + gede_3_4_N : N ; + gede_7_8_N : N ; + gede_9_10_N : N ; + gedla_11_10_N : N ; + gedle_11_10_N : N ; + gedlela_5_6_N : N ; + gege_7_8_N : N ; + geja_5_6_N : N ; + gejane_7_8_N : N ; + gekle_5_6_N : N ; + gele_9_10_N : N ; + gelegele_11_10_N : N ; + gelekeqe_11_10_N : N ; + gelekeqe_7_8_N : N ; + gemegeme_7_8_N : N ; + gengelezi_9_10_N : N ; + gengi_1_2_N : N ; + genqe_5_6_N : N ; + geqe_9_10_N : N ; + geqele_5_6_N : N ; + gesi_5_6_N : N ; + gevu_9_10_N : N ; + gexo_3_4_N : N ; + geza_5_6_N : N ; + geza_9_10_N : N ; + geze_5_6_N : N ; + gezi_1_2_N : N ; + gi_7_8_N : N ; + gibe_11_10_N : N ; + gibe_3_4_N : N ; + gibe_9_10_N : N ; + gibeli_1_2_N : N ; + gide_11_10_N : N ; + gidi_1_2_N : N ; + gidi_3_4_N : N ; + gidi_7_8_N : N ; + gidi_9_10_N : N ; + gidigidi_5_6_N : N ; + gidigidi_7_8_N : N ; + gidigidi_8_N : N ; + gidingo_3_4_N : N ; + gidla_3_4_N : N ; + gido_3_4_N : N ; + gigaba_7_8_N : N ; + gijimi_7_8_N : N ; + gila_9_10_N : N ; + gilamkhuba_7_8_N : N ; + gilavu_5_6_N : N ; + gilazi_9_10_N : N ; + gilingwane_3_4_N : N ; + gilo_5_6_N : N ; + gingqi_5_6_N : N ; + gingqi_9_10_N : N ; + gingqo_3_4_N : N ; + gini_9_10_N : N ; + gintshogintsho_14_N : N ; + gisi_5_6_N : N ; + gisi_7_8_N : N ; + goba_11_10_N : N ; + gobe_11_10_N : N ; + gobe_9_10_N : N ; + gobela_9_10_N : N ; + gobhe_7_8_N : N ; + gobo_9_10_N : N ; + gobolondo_5_6_N : N ; + gobongo_5_6_N : N ; + goda_5_6_N : N ; + godi_3_4_N : N ; + godi_5_6_N : N ; + godi_7_8_N : N ; + godi_9_10_N : N ; + godla_3_4_N : N ; + godla_5_6_N : N ; + godlo_7_8_N : N ; + godlogodlo_14_N : N ; + godo_11_10_N : N ; + godo_7_8_N : N ; + godo_9_10_N : N ; + godosi_9_10_N : N ; + godoyi_3_4_N : N ; + goduso_9_10_N : N ; + gogo_11_10_N : N ; + gogo_5_6_N : N ; + gogo_9_10_N : N ; + gogodla_3_4_N : N ; + gogogo_5_6_N : N ; + gola_11_10_N : N ; + gola_9_10_N : N ; + goli_5_N : N ; + goli_5_6_N : N ; + golide_5_N : N ; + golokodo_5_6_N : N ; + golokoqo_11_10_N : N ; + goma_11_10_N : N ; + gomeni_3_4_N : N ; + gomo_3_4_N : N ; + gona_9_N : N ; + gongoni_9_10_N : N ; + goni_9_10_N : N ; + gono_9_10_N : N ; + gonqo_3_4_N : N ; + goqo_3_4_N : N ; + goqo_5_6_N : N ; + gosa_5_6_N : N ; + gosi_5_6_N : N ; + gosi_9_10_N : N ; + gotshwa_5_6_N : N ; + govu_14_N : N ; + govu_3_4_N : N ; + govu_5_6_N : N ; + goxi_9_10_N : N ; + gqa_3_4_N : N ; + gqabho_5_6_N : N ; + gqabo_3_4_N : N ; + gqabo_7_8_N : N ; + gqabu_5_6_N : N ; + gqakazo_3_4_N : N ; + gqala_7_8_N : N ; + gqekezi_1_2_N : N ; + gqi_7_8_N : N ; + gqibelo_3_4_N : N ; + gqigqo_3_4_N : N ; + gqiki_3_4_N : N ; + gqiki_7_8_N : N ; + gqikolo_5_6_N : N ; + gqila_7_8_N : N ; + gqila_8_N : N ; + gqili_14_N : N ; + gqili_7_8_N : N ; + gqinsi_5_6_N : N ; + gqiza_5_6_N : N ; + gqizo_7_8_N : N ; + gqobe_9_10_N : N ; + gqoka_5_6_N : N ; + gqoko_11_10_N : N ; + gqoko_7_8_N : N ; + gqokolo_9_10_N : N ; + gqokwe_5_6_N : N ; + gqomo_3_4_N : N ; + gqondo_9_N : N ; + gqozi_11_N : N ; + gqubu_5_6_N : N ; + gqukumbane_9_10_N : N ; + gquma_5_6_N : N ; + gqumo_3_4_N : N ; + gqumu_5_6_N : N ; + gqumunga_9_10_N : N ; + gqwabagqwaba_3_N : N ; + gqwayi_11_10_N : N ; + gu_11_10_N : N ; + guba_11_10_N : N ; + gubhela_5_6_N : N ; + gubho_7_8_N : N ; + gubhu_11_10_N : N ; + gubhu_7_8_N : N ; + gubhukane_7_8_N : N ; + gubu_3_4_N : N ; + gubudu_7_8_N : N ; + gubuzelo_3_4_N : N ; + gude_7_8_N : N ; + gudlu_9_10_N : N ; + gudlugudlu_14_N : N ; + gudu_3_4_N : N ; + gudu_5_6_N : N ; + guga_7_8_N : N ; + guga_9_10_N : N ; + gugu_5_6_N : N ; + gugu_7_8_N : N ; + gula_5_6_N : N ; + gula_9_10_N : N ; + gule_11_10_N : N ; + guleni_5_6_N : N ; + guli_7_8_N : N ; + gulule_9_10_N : N ; + guma_5_6_N : N ; + gumbi_5_6_N : N ; + guncu_5_6_N : N ; + gundane_5_6_N : N ; + gundatshani_3_4_N : N ; + gundi_1_2_N : N ; + gundwane_5_6_N : N ; + gungu_7_8_N : N ; + gungu_9_10_N : N ; + gungundlovu_3_N : N ; + gunya_5_6_N : N ; + gunyathi_3_4_N : N ; + guqa_5_6_N : N ; + guqa_7_8_N : N ; + guqa_9_10_N : N ; + guqo_7_8_N : N ; + guquguqu_9_10_N : N ; + guquko_11_N : N ; + guquko_11_10_N : N ; + guquko_9_N : N ; + guquko_9_10_N : N ; + guqunguqu_9_10_N : N ; + guzunga_9_10_N : N ; + gwababa_5_6_N : N ; + gwaca_7_8_N : N ; + gwadla_9_10_N : N ; + gwadule_11_10_N : N ; + gwagwa_3_4_N : N ; + gwagwa_5_6_N : N ; + gwala_11_10_N : N ; + gwala_14_N : N ; + gwala_5_6_N : N ; + gwalagwala_5_6_N : N ; + gwamanda_3_4_N : N ; + gwane_9_10_N : N ; + gwaqo_3_4_N : N ; + gwayi_11_N : N ; + gwayi_5_6_N : N ; + gwazi_9_10_N : N ; + gwebedla_7_8_N : N ; + gwebo_7_8_N : N ; + gwebu_5_6_N : N ; + gwebu_9_N : N ; + gwegwe_5_6_N : N ; + gwegwe_7_8_N : N ; + gwegwe_9_10_N : N ; + gwenya_9_10_N : N ; + gwevu_9_10_N : N ; + gwija_5_6_N : N ; + gwili_7_8_N : N ; + gxa_11_10_N : N ; + gxala_3_4_N : N ; + gxalaba_5_6_N : N ; + gxangxa_9_10_N : N ; + gxathu_5_6_N : N ; + gxavula_9_10_N : N ; + gxobo_7_8_N : N ; + gxolo_5_6_N : N ; + haba_5_6_N : N ; + habe_11_N : N ; + haca_11_N : N ; + haca_14_N : N ; + haca_5_6_N : N ; + haca_7_N : N ; + hala_5_6_N : N ; + halakasha_11_10_N : N ; + halavu_5_6_N : N ; + hamba_5_6_N : N ; + hamba_9_10_N : N ; + hambeli_7_8_N : N ; + hambi_1_2_N : N ; + hambi_7_8_N : N ; + hambo_11_10_N : N ; + hambo_9_10_N : N ; + hambuma_3_4_N : N ; + hamu_5_6_N : N ; + hanga_3_4_N : N ; + hansi_5_6_N : N ; + hawu_3_N : N ; + hawu_5_6_N : N ; + hawu_7_N : N ; + hayi_11_N : N ; + hayibheli_5_6_N : N ; + hayina_5_6_N : N ; + he_7_N : N ; + heku_5_N : N ; + hekwini_5_N : N ; + helane_3_4_N : N ; + hele_11_10_N : N ; + hele_5_6_N : N ; + helehele_5_6_N : N ; + hembe_5_6_N : N ; + hemuhemu_5_6_N : N ; + henqo_7_8_N : N ; + hewu_6_N : N ; + hhabe_11_10_N : N ; + hhala_5_6_N : N ; + hhashi_5_6_N : N ; + hhawu_11_N : N ; + hhayi_11_10_N : N ; + hhoko_5_6_N : N ; + hholo_5_6_N : N ; + hhomfu_5_6_N : N ; + hhotela_5_6_N : N ; + hhovisi_5_6_N : N ; + hibe_7_8_N : N ; + hide_11_10_N : N ; + hidi_11_10_N : N ; + hiya_5_N : N ; + hla_11_10_N : N ; + hla_3_4_N : N ; + hlaba_3_4_N : N ; + hlaba_5_6_N : N ; + hlaba_9_10_N : N ; + hlabahlangana_3_4_N : N ; + hlabani_5_6_N : N ; + hlabathi_3_4_N : N ; + hlabathi_5_6_N : N ; + hlabathi_7_8_N : N ; + hlabathi_9_10_N : N ; + hlabathini_6_N : N ; + hlabi_1_2_N : N ; + hlafuno_9_10_N : N ; + hlahla_5_6_N : N ; + hlahla_7_8_N : N ; + hlahla_9_10_N : N ; + hlahlandlela_3_4_N : N ; + hlahlo_3_4_N : N ; + hlaka_11_10_N : N ; + hlaka_5_N : N ; + hlaka_5_6_N : N ; + hlakahlaka_5_6_N : N ; + hlakahlaka_9_10_N : N ; + hlakala_7_8_N : N ; + hlakalala_14_N : N ; + hlakanhlaka_9_10_N : N ; + hlakani_14_N : N ; + hlakaniphi_7_8_N : N ; + hlakanipho_9_10_N : N ; + hlala_5_6_N : N ; + hlalakahle_9_10_N : N ; + hlalaphansi_3_4_N : N ; + hlali_1_2_N : N ; + hlali_5_6_N : N ; + hlali_9_10_N : N ; + hlalo_7_8_N : N ; + hlalo_9_10_N : N ; + hlalu_11_N : N ; + hlalu_14_N : N ; + hlama_9_10_N : N ; + hlamba_3_4_N : N ; + hlamba_9_N : N ; + hlambi_3_4_N : N ; + hlambi_7_8_N : N ; + hlambi_9_10_N : N ; + hlambo_5_6_N : N ; + hlambo_7_8_N : N ; + hlamvu_11_10_N : N ; + hlamvu_5_6_N : N ; + hlamvu_9_10_N : N ; + hlamvukazi_9_10_N : N ; + hlana_3_4_N : N ; + hlandla_3_4_N : N ; + hlandla_7_8_N : N ; + hlane_3_4_N : N ; + hlane_5_6_N : N ; + hlanekela_9_10_N : N ; + hlanekezela_9_10_N : N ; + hlanga_11_10_N : N ; + hlanga_14_N : N ; + hlanga_3_4_N : N ; + hlanga_5_6_N : N ; + hlanga_9_10_N : N ; + hlanganisela_9_10_N : N ; + hlanganiso_3_4_N : N ; + hlanganiso_9_10_N : N ; + hlangano_3_4_N : N ; + hlangano_9_10_N : N ; + hlange_3_4_N : N ; + hlangothi_11_10_N : N ; + hlangothi_9_10_N : N ; + hlangu_7_8_N : N ; + hlangu_9_10_N : N ; + hlangwe_3_4_N : N ; + hlanhlatho_9_10_N : N ; + hlanjana_3_4_N : N ; + hlansi_9_10_N : N ; + hlanti_3_4_N : N ; + hlanu_7_8_N : N ; + hlanya_11_10_N : N ; + hlanya_14_N : N ; + hlanzane_9_N : N ; + hlanze_5_6_N : N ; + hlanzi_9_10_N : N ; + hlapho_3_4_N : N ; + hlaseli_1_2_N : N ; + hlathi_14_N : N ; + hlathi_3_4_N : N ; + hlathi_5_6_N : N ; + hlathi_7_8_N : N ; + hlathuze_3_N : N ; + hlatshelo_3_4_N : N ; + hlava_9_10_N : N ; + hlawe_5_6_N : N ; + hlawulo_9_10_N : N ; + hlaya_5_6_N : N ; + hlayenza_9_N : N ; + hlaza_11_N : N ; + hlaza_3_4_N : N ; + hlazane_9_N : N ; + hlazi_7_8_N : N ; + hlazo_5_6_N : N ; + hlazo_9_10_N : N ; + hle_14_N : N ; + hle_7_8_N : N ; + hlebi_9_10_N : N ; + hlekabayeni_9_10_N : N ; + hleke_5_6_N : N ; + hleke_7_8_N : N ; + hlekehleke_7_8_N : N ; + hlekelele_9_10_N : N ; + hlekisa_9_10_N : N ; + hleko_11_10_N : N ; + hleli_1_2_N : N ; + hlelo_11_10_N : N ; + hlelo_5_6_N : N ; + hlelo_9_10_N : N ; + hlenga_7_8_N : N ; + hlengethwa_5_6_N : N ; + hlengezela_9_10_N : N ; + hlengi_1_2_N : N ; + hlevane_11_10_N : N ; + hleza_5_6_N : N ; + hlezi_5_6_N : N ; + hlikwe_3_4_N : N ; + hlilingi_7_8_N : N ; + hliziyo_9_10_N : N ; + hlobo_11_10_N : N ; + hlobo_14_N : N ; + hlobo_1_2_N : N ; + hlobo_3_4_N : N ; + -- hlobo_5_N : N ; + hlobo_5_6_N : N ; + hlobo_7_8_N : N ; + hlobo_9_10_N : N ; + hlobonhlobo_9_10_N : N ; + hlofu_11_10_N : N ; + hloko_7_8_N : N ; + hloko_9_10_N : N ; + hlokohlela_9_10_N : N ; + hlokohloko_5_6_N : N ; + hlokomo_9_N : N ; + hlola_3_4_N : N ; + hlola_7_8_N : N ; + hlola_9_10_N : N ; + hloli_1_2_N : N ; + hloli_9_10_N : N ; + hlolo_3_4_N : N ; + hlombe_5_6_N : N ; + hlomo_5_6_N : N ; + hlomunye_3_N : N ; + hlongandlebe_5_6_N : N ; + hlonhlo_3_4_N : N ; + hloni_6_N : N ; + hlonipho_9_N : N ; + hlonishwa_3_4_N : N ; + hlonono_7_8_N : N ; + hlonti_7_8_N : N ; + hlonze_11_10_N : N ; + hlonze_9_10_N : N ; + hlonzi_11_10_N : N ; + hlophe_3_4_N : N ; + hlosa_5_6_N : N ; + hloshazana_3_4_N : N ; + hloso_9_10_N : N ; + hloza_11_N : N ; + hlozi_5_6_N : N ; + hlu_11_10_N : N ; + hlubulo_3_4_N : N ; + hluku_7_8_N : N ; + hlukuzo_5_6_N : N ; + hlule_5_6_N : N ; + hlungu_14_N : N ; + -- hlungu_14_10_N : N ; + hlungu_5_6_N : N ; + hlungu_7_8_N : N ; + hlungwana_14_N : N ; + hluphe_7_8_N : N ; + hlupheki_7_8_N : N ; + hlupheko_9_10_N : N ; + hlupho_11_10_N : N ; + hluthu_7_8_N : N ; + hluthulelo_7_8_N : N ; + hluzi_1_2_N : N ; + hluzi_3_N : N ; + hluzi_7_8_N : N ; + hluzo_5_6_N : N ; + hluzwa_9_10_N : N ; + hlwa_11_10_N : N ; + hlwa_14_N : N ; + hlwa_3_4_N : N ; + hlwa_7_8_N : N ; + hlwa_9_N : N ; + hlwabusi_9_10_N : N ; + hlwathi_11_10_N : N ; + hlwathi_7_8_N : N ; + hlwathi_9_10_N : N ; + hlwayi_11_10_N : N ; + hlwaza_9_10_N : N ; + hlwazimamba_3_N : N ; + hlwele_7_8_N : N ; + hlwempu_5_6_N : N ; + hlwenga_3_4_N : N ; + hlweza_11_10_N : N ; + hobe_14_N : N ; + hobe_5_6_N : N ; + hoi_5_6_N : N ; + hole_7_8_N : N ; + holi_14_N : N ; + holi_1_2_N : N ; + holide_5_6_N : N ; + holo_3_4_N : N ; + holo_5_6_N : N ; + holobo_7_8_N : N ; + honi_7_8_N : N ; + hora_5_6_N : N ; + hosa_7_8_N : N ; + hosha_3_4_N : N ; + hosha_7_8_N : N ; + hoshe_3_4_N : N ; + hoshe_7_8_N : N ; + hosho_7_8_N : N ; + hu_11_10_N : N ; + hubhe_3_4_N : N ; + hubo_5_6_N : N ; + hudo_11_N : N ; + hudula_7_8_N : N ; + huha_5_N : N ; + hule_11_10_N : N ; + hume_3_4_N : N ; + humusha_14_N : N ; + humusha_5_6_N : N ; + huntshu_11_10_N : N ; + hunu_5_6_N : N ; + hunu_7_8_N : N ; + huqa_3_4_N : N ; + hushu_11_N : N ; + hwalahwala_5_6_N : N ; + hwanqa_5_6_N : N ; + hwebo_11_N : N ; + ihlo_5_6_N : N ; + imkhulu_3_N : N ; + ingizimu_5_N : N ; + ingizimu_9_N : N ; + inselelo_9_10_N : N ; + iso_5_N : N ; + iso_5_6_N : N ; + itoli_5_N : N ; + iva_5_6_N : N ; + iyoni_5_6_N : N ; + ja_5_6_N : N ; + ja_7_N : N ; + ja_9_10_N : N ; + jabulo_9_10_N : N ; + jadu_3_4_N : N ; + jadu_5_6_N : N ; + jaha_5_6_N : N ; + jaho_3_4_N : N ; + jaji_5_6_N : N ; + jaka_14_N : N ; + jalidi_5_6_N : N ; + jalimane_5_6_N : N ; + jalimane_7_8_N : N ; + jati_5_6_N : N ; + jazi_5_6_N : N ; + jele_5_6_N : N ; + jenga_11_10_N : N ; + jezi_5_6_N : N ; + jeziso_7_8_N : N ; + ji_7_8_N : N ; + jiki_5_6_N : N ; + jinga_9_10_N : N ; + jingo_7_8_N : N ; + jiva_3_4_N : N ; + jobo_9_10_N : N ; + jodo_11_10_N : N ; + jojela_9_10_N : N ; + jojo_11_10_N : N ; + joka_5_6_N : N ; + jokwane_3_4_N : N ; + jolo_9_10_N : N ; + jomane_9_10_N : N ; + jongo_9_10_N : N ; + jongosi_5_6_N : N ; + jovo_3_4_N : N ; + joyini_5_6_N : N ; + jozi_5_6_N : N ; + ju_11_N : N ; + ju_7_8_N : N ; + juba_5_6_N : N ; + juba_9_10_N : N ; + jubane_5_N : N ; + jubane_5_6_N : N ; + jubantondo_5_6_N : N ; + juda_5_6_N : N ; + jukujuku_6_N : N ; + jula_7_8_N : N ; + jula_9_10_N : N ; + juluko_3_4_N : N ; + jumba_7_8_N : N ; + jwabu_5_6_N : N ; + jwaphu_5_6_N : N ; + kade_5_N : N ; + kali_7_8_N : N ; + kalishi_5_6_N : N ; + kalo_7_8_N : N ; + kamela_5_6_N : N ; + kamelo_5_6_N : N ; + kamu_5_6_N : N ; + kandlela_5_6_N : N ; + kani_5_6_N : N ; + kaniso_7_8_N : N ; + kantini_9_10_N : N ; + kantolo_9_10_N : N ; + kati_5_6_N : N ; + kebhe_5_6_N : N ; + keke_11_10_N : N ; + kele_7_8_N : N ; + kelemu_7_8_N : N ; + kesi_5_6_N : N ; + ketanga_5_6_N : N ; + ketekete_7_8_N : N ; + keyi_7_8_N : N ; + kha_6_N : N ; + khaba_3_4_N : N ; + khaba_5_6_N : N ; + khaba_9_10_N : N ; + khabazwe_9_N : N ; + khabethe_5_6_N : N ; + khabhinethi_5_6_N : N ; + khadi_5_6_N : N ; + khafu_7_8_N : N ; + khafula_5_6_N : N ; + khahlamba_11_10_N : N ; + khakha_3_4_N : N ; + khakhasi_5_6_N : N ; + khakhayi_11_10_N : N ; + khala_5_6_N : N ; + khala_7_8_N : N ; + khaladi_5_6_N : N ; + khali_14_N : N ; + khali_7_8_N : N ; + khalo_11_10_N : N ; + khalo_7_8_N : N ; + khama_9_10_N : N ; + khamba_11_10_N : N ; + khamba_3_4_N : N ; + khambathi_3_4_N : N ; + khambathini_3_N : N ; + khambi_5_6_N : N ; + khamo_7_8_N : N ; + khanda_11_10_N : N ; + khanda_5_6_N : N ; + khanda_9_10_N : N ; + khandlela_5_6_N : N ; + khandlu_3_4_N : N ; + khangala_9_10_N : N ; + khangu_3_4_N : N ; + khanjana_5_6_N : N ; + khanka_5_6_N : N ; + khankaso_3_4_N : N ; + khansela_5_6_N : N ; + khanya_3_4_N : N ; + khanyiso_9_N : N ; + khasha_11_10_N : N ; + khashana_7_8_N : N ; + khasi_5_6_N : N ; + khasimende_5_6_N : N ; + khatha_7_8_N : N ; + khatha_9_10_N : N ; + khathakhatha_6_N : N ; + khathazo_9_10_N : N ; + khathi_3_4_N : N ; + khathi_5_6_N : N ; + khathi_7_8_N : N ; + khathi_9_10_N : N ; + khawu_7_8_N : N ; + khawukhawu_7_8_N : N ; + khawuko_3_4_N : N ; + khawulo_3_4_N : N ; + -- khaya_3_N : N ; + khaya_3_4_N : N ; + khaya_5_6_N : N ; + khaza_6_N : N ; + khazane_9_10_N : N ; + khaze_3_4_N : N ; + khazela_5_6_N : N ; + khazikhazi_14_N : N ; + khazimulo_9_10_N : N ; + khebenkebe_9_10_N : N ; + khedama_9_10_N : N ; + khefu_5_6_N : N ; + khehla_5_6_N : N ; + khehle_11_10_N : N ; + khehli_9_10_N : N ; + kheji_5_6_N : N ; + khekhe_5_6_N : N ; + khelekethe_5_6_N : N ; + khelekethe_9_10_N : N ; + kheli_5_6_N : N ; + khemese_5_6_N : N ; + khemezelo_3_4_N : N ; + khemisi_1_2_N : N ; + khemisi_5_6_N : N ; + khencekhence_14_N : N ; + khephunkephu_9_N : N ; + kheshe_11_N : N ; + khetha_9_10_N : N ; + khethe_11_10_N : N ; + khethe_9_10_N : N ; + khethelo_5_6_N : N ; + khethini_5_6_N : N ; + khetho_11_10_N : N ; + khetho_5_6_N : N ; + khewu_7_8_N : N ; + khexe_5_6_N : N ; + khezo_11_10_N : N ; + khezo_9_10_N : N ; + khikhi_5_6_N : N ; + khikhizela_5_6_N : N ; + khindi_7_8_N : N ; + khinga_9_10_N : N ; + khiqizo_3_4_N : N ; + khishi_5_6_N : N ; + khithikhithi_14_N : N ; + khiwane_5_6_N : N ; + khiye_7_8_N : N ; + khizane_5_6_N : N ; + khizo_3_4_N : N ; + khoba_5_6_N : N ; + khobe_11_10_N : N ; + khobe_9_10_N : N ; + khofi_5_N : N ; + khohlakalo_9_10_N : N ; + khohlisi_1_2_N : N ; + khohliso_9_10_N : N ; + khohlo_11_10_N : N ; + khohlo_5_6_N : N ; + khohlwa_5_6_N : N ; + khohlwa_7_8_N : N ; + khokha_3_4_N : N ; + khokhela_5_6_N : N ; + khokheli_1_2_N : N ; + khokhelo_9_10_N : N ; + khokho_11_N : N ; + khokho_11_10_N : N ; + khokho_7_8_N : N ; + khokhothi_11_10_N : N ; + kholo_11_10_N : N ; + kholo_9_10_N : N ; + kholwa_14_N : N ; + kholwa_5_6_N : N ; + khomana_9_10_N : N ; + khomazi_3_4_N : N ; + khomazi_9_10_N : N ; + khomba_9_10_N : N ; + khombe_5_6_N : N ; + khombe_7_8_N : N ; + khombisa_7_8_N : N ; + khomela_11_10_N : N ; + khomishani_5_6_N : N ; + khomishini_9_6_N : N ; + khomo_9_10_N : N ; + khomololo_7_8_N : N ; + khompyuta_5_6_N : N ; + khona_14_N : N ; + khonde_5_6_N : N ; + khondo_11_10_N : N ; + khondo_3_4_N : N ; + khondomu_5_6_N : N ; + khondomu_9_6_N : N ; + khongi_1_2_N : N ; + khonko_7_8_N : N ; + khonkwane_7_8_N : N ; + khono_3_4_N : N ; + khono_5_6_N : N ; + khonsathi_5_6_N : N ; + khonto_3_4_N : N ; + khonyana_9_10_N : N ; + khonyane_7_N : N ; + khonzi_7_8_N : N ; + khonzo_3_4_N : N ; + khonzo_9_10_N : N ; + khophe_11_10_N : N ; + khophi_5_6_N : N ; + khosana_14_N : N ; + khosana_9_6_N : N ; + khosazana_9_6_N : N ; + khosazane_9_6_N : N ; + khosela_5_6_N : N ; + khosi_14_N : N ; + khosi_3_4_N : N ; + khosi_9_6_N : N ; + khosikazi_14_N : N ; + khosikazi_9_6_N : N ; + khotha_11_N : N ; + khotha_7_8_N : N ; + khothamo_5_6_N : N ; + khothe_5_6_N : N ; + khothe_7_8_N : N ; + khova_11_N : N ; + khova_7_8_N : N ; + khovu_3_4_N : N ; + khovula_6_N : N ; + khowankowane_9_N : N ; + khowe_5_6_N : N ; + khowe_7_8_N : N ; + khoxe_7_8_N : N ; + khoza_5_6_N : N ; + khozi_11_10_N : N ; + khuba_3_4_N : N ; + khuba_5_6_N : N ; + khuba_9_10_N : N ; + khubalo_5_6_N : N ; + khubazekile_1_2_N : N ; + khubekiso_7_8_N : N ; + khubulo_3_4_N : N ; + khuhlane_3_4_N : N ; + khukho_11_10_N : N ; + khukhu_5_6_N : N ; + khukhu_7_8_N : N ; + khukhula_7_8_N : N ; + khuku_9_10_N : N ; + khula_11_10_N : N ; + khuleko_3_4_N : N ; + khulu_14_N : N ; + khulu_5_6_N : N ; + khulu_7_8_N : N ; + khululeko_9_10_N : N ; + khululi_1_2_N : N ; + khulumi_1_2_N : N ; + khulumi_7_8_N : N ; + khulumo_9_10_N : N ; + khulungwane_3_4_N : N ; + khulungwane_9_10_N : N ; + khumalo_5_6_N : N ; + khumba_7_8_N : N ; + khumbi_11_10_N : N ; + khumbi_3_4_N : N ; + khumbi_9_10_N : N ; + khumbulo_9_10_N : N ; + khumbuzi_7_8_N : N ; + khumbuzo_7_8_N : N ; + khumulo_7_8_N : N ; + khundla_7_8_N : N ; + khundla_9_10_N : N ; + khungo_7_8_N : N ; + khuni_11_10_N : N ; + khuni_7_8_N : N ; + khunku_7_8_N : N ; + khunkuli_1_2_N : N ; + khunzana_9_10_N : N ; + khunzi_9_10_N : N ; + khunzimalanga_9_10_N : N ; + khupha_7_8_N : N ; + khusu_3_4_N : N ; + khutha_7_N : N ; + khuthali_7_8_N : N ; + khuthalo_9_10_N : N ; + khuze_3_4_N : N ; + khwa_5_6_N : N ; + khwa_7_8_N : N ; + khwabukhwabu_7_8_N : N ; + khwali_9_10_N : N ; + khwama_7_8_N : N ; + khwapha_5_6_N : N ; + khwe_14_N : N ; + khwe_3_4_N : N ; + khwe_5_6_N : N ; + khwe_7_8_N : N ; + khwebu_7_8_N : N ; + khwehlela_7_8_N : N ; + khwekazi_1_2_N : N ; + khwekhwe_11_10_N : N ; + khwele_14_N : N ; + khwele_7_8_N : N ; + khwelo_5_6_N : N ; + khwelo_7_8_N : N ; + khwembe_11_10_N : N ; + khwembe_5_6_N : N ; + khwembeza_5_6_N : N ; + khwenyana_1_2_N : N ; + khwepha_7_8_N : N ; + khweshe_11_10_N : N ; + khwetha_1_2_N : N ; + khwezela_5_6_N : N ; + khwezeli_1_2_N : N ; + khwezi_5_6_N : N ; + khwili_7_8_N : N ; + khwishikhwishi_7_8_N : N ; + kilasi_5_6_N : N ; + kithi_1_2_N : N ; + klabishi_5_6_N : N ; + klanguklangu_11_10_N : N ; + klasi_5_6_N : N ; + klebhe_7_8_N : N ; + klele_5_6_N : N ; + klele_9_10_N : N ; + kloba_5_6_N : N ; + klolo_5_6_N : N ; + klolodo_5_6_N : N ; + klomelo_3_4_N : N ; + klwa_5_6_N : N ; + kole_7_8_N : N ; + kolo_7_8_N : N ; + kolobhi_1_2_N : N ; + komidi_5_6_N : N ; + komiti_5_6_N : N ; + komkhulu_5_N : N ; + kopi_5_6_N : N ; + koti_7_8_N : N ; + krestu_11_N : N ; + krestu_14_N : N ; + krestu_5_6_N : N ; + kubo_1_2_N : N ; + kubo_5_6_N : N ; + kukisi_5_6_N : N ; + kula_5_6_N : N ; + kulunkulu_14_N : N ; + kumbe_5_6_N : N ; + kusasa_5_N : N ; + kutu_7_8_N : N ; + kwaya_5_6_N : N ; + kwele_7_8_N : N ; + kweletu_7_8_N : N ; + kweqekweqe_14_N : N ; + kwi_11_N : N ; + kwitikwiti_14_N : N ; + labalaba_3_4_N : N ; + lahlane_7_8_N : N ; + lahlankosi_3_4_N : N ; + lahle_5_6_N : N ; + laka_11_N : N ; + lala_11_N : N ; + lala_14_N : N ; + lala_3_4_N : N ; + lala_5_6_N : N ; + lala_7_N : N ; + lalamvubu_3_N : N ; + lalazi_3_4_N : N ; + lalela_3_4_N : N ; + laleli_1_2_N : N ; + lambalidlile_5_6_N : N ; + lambo_3_4_N : N ; + lambu_5_6_N : N ; + lamu_1_2_N : N ; + lamuli_1_2_N : N ; + landa_14_N : N ; + landa_5_6_N : N ; + landeli_1_2_N : N ; + landelo_7_8_N : N ; + lando_3_4_N : N ; + landu_3_4_N : N ; + langa_5_6_N : N ; + langabi_5_6_N : N ; + langulangu_14_N : N ; + lantsha_3_4_N : N ; + lasha_11_N : N ; + lathi_5_6_N : N ; + lawu_14_N : N ; + lawu_5_6_N : N ; + lawuli_1_2_N : N ; + layezo_3_4_N : N ; + layisense_5_6_N : N ; + layisi_5_6_N : N ; + layo_11_10_N : N ; + laza_11_N : N ; + laza_3_4_N : N ; + laza_7_N : N ; + lazi_7_8_N : N ; + le_3_N : N ; + lekeleli_1_2_N : N ; + lele_11_10_N : N ; + lele_7_8_N : N ; + lembe_5_6_N : N ; + lembu_14_N : N ; + lenze_3_4_N : N ; + letha_5_6_N : N ; + leti_7_8_N : N ; + levi_5_6_N : N ; + levu_7_8_N : N ; + liba_5_6_N : N ; + libe_3_4_N : N ; + lili_14_N : N ; + lili_7_8_N : N ; + lilo_3_4_N : N ; + lilo_7_8_N : N ; + lima_14_N : N ; + lima_5_6_N : N ; + lima_7_8_N : N ; + lima_9_10_N : N ; + limela_3_4_N : N ; + limi_11_10_N : N ; + limi_1_2_N : N ; + limi_6_N : N ; + limo_7_8_N : N ; + lindankosi_3_4_N : N ; + lindi_1_2_N : N ; + lindi_3_4_N : N ; + lindo_3_4_N : N ; + lingane_1_2_N : N ; + lingani_1_2_N : N ; + linganiso_7_8_N : N ; + linganiso_9_10_N : N ; + lingi_7_8_N : N ; + lingiswa_1_2_N : N ; + lingo_3_4_N : N ; + lingo_7_8_N : N ; + lisa_1_2_N : N ; + lisa_7_N : N ; + lisho_5_6_N : N ; + lo_7_8_N : N ; + lobi_1_2_N : N ; + lobokazi_1_2_N : N ; + lobolo_5_N : N ; + lokazane_7_8_N : N ; + lokishi_5_6_N : N ; + lokozane_7_N : N ; + lokwe_5_6_N : N ; + loli_5_6_N : N ; + lolozelo_3_4_N : N ; + loma_5_6_N : N ; + lombo_6_N : N ; + lomo_3_4_N : N ; + lomo_7_8_N : N ; + londa_7_8_N : N ; + londolozi_1_2_N : N ; + longwe_14_N : N ; + lotha_3_4_N : N ; + lotho_5_6_N : N ; + lovu_5_6_N : N ; + loya_11_N : N ; + loyi_5_6_N : N ; + loyo_5_6_N : N ; + lozi_1_2_N : N ; + lozi_3_4_N : N ; + luba_5_N : N ; + luba_7_8_N : N ; + luhlaza_14_N : N ; + lukela_5_6_N : N ; + lukuluku_5_6_N : N ; + lula_14_N : N ; + lula_5_6_N : N ; + lulu_7_8_N : N ; + lulwane_14_N : N ; + lulwane_5_6_N : N ; + lumbi_1_2_N : N ; + lumbo_5_6_N : N ; + lunda_5_6_N : N ; + lunga_14_N : N ; + lunga_5_6_N : N ; + lunge_11_10_N : N ; + lungelo_5_6_N : N ; + lungelunge_11_10_N : N ; + lungiselelo_5_6_N : N ; + lungiswa_14_N : N ; + lungu_14_N : N ; + lungu_5_6_N : N ; + lungu_7_N : N ; + lwana_7_8_N : N ; + lwandle_11_10_N : N ; + lwane_14_N : N ; + lwane_7_8_N : N ; + lwanga_11_10_N : N ; + lwembu_11_10_N : N ; + lwesibili_11_N : N ; + lwesihlanu_11_N : N ; + lwesine_11_N : N ; + lwesithathu_11_N : N ; + lwezi_11_N : N ; + lwi_7_8_N : N ; + mabani_3_N : N ; + makade_7_8_N : N ; + makethe_9_10_N : N ; + maki_5_6_N : N ; + maku_7_8_N : N ; + malaleveva_3_N : N ; + mali_9_10_N : N ; + malunkambu_3_N : N ; + mamba_9_10_N : N ; + mame_7_N : N ; + mandulo_3_N : N ; + manga_7_8_N : N ; + mangaliso_3_4_N : N ; + mangaliso_7_8_N : N ; + mango_3_4_N : N ; + manje_7_N : N ; + mantshi_9_10_N : N ; + manzi_14_N : N ; + mawundeni_9_10_N : N ; + mayela_5_6_N : N ; + mayemaye_14_N : N ; + mayemaye_7_N : N ; + mayini_9_10_N : N ; + mayo_3_N : N ; + mazi_9_10_N : N ; + mbala_9_10_N : N ; + mbali_9_10_N : N ; + mbatha_6_N : N ; + mbawula_9_10_N : N ; + mbayiyana_3_N : N ; + mbaza_9_10_N : N ; + mbazu_9_10_N : N ; + mbebe_9_10_N : N ; + mbewu_9_10_N : N ; + mbi_1_2_N : N ; + mbiba_9_10_N : N ; + mbibi_9_10_N : N ; + mbila_3_4_N : N ; + mbila_7_8_N : N ; + mbilapho_9_10_N : N ; + mbili_9_10_N : N ; + mbo_7_8_N : N ; + mbo_9_N : N ; + mbona_3_N : N ; + mbone_9_10_N : N ; + mbongolo_9_10_N : N ; + mboni_9_10_N : N ; + mboza_5_6_N : N ; + mbuka_14_N : N ; + mbuka_5_6_N : N ; + mbulu_9_10_N : N ; + mbuthuma_9_10_N : N ; + me_11_N : N ; + me_14_N : N ; + meleli_1_2_N : N ; + meli_1_2_N : N ; + meli_9_10_N : N ; + melika_14_N : N ; + melika_9_6_N : N ; + mema_11_10_N : N ; + mema_3_N : N ; + meme_3_4_N : N ; + meme_5_N : N ; + memezelo_7_8_N : N ; + memezi_3_N : N ; + memo_7_8_N : N ; + menenja_9_10_N : N ; + mentshisi_3_N : N ; + menywa_7_8_N : N ; + mephu_9_10_N : N ; + mese_3_4_N : N ; + meya_9_10_N : N ; + meyili_9_10_N : N ; + mfengwane_9_10_N : N ; + mfimfi_9_10_N : N ; + mfonyomfonyo_5_6_N : N ; + mhlophe_14_N : N ; + mila_7_8_N : N ; + milamongo_7_8_N : N ; + milo_7_8_N : N ; + mina_11_10_N : N ; + mina_14_N : N ; + mina_3_N : N ; + mini_9_10_N : N ; + minithi_5_6_N : N ; + misa_5_6_N : N ; + miselo_7_8_N : N ; + mishani_9_10_N : N ; + miso_3_4_N : N ; + miso_7_8_N : N ; + mitha_5_6_N : N ; + miyane_3_4_N : N ; + mnandi_14_N : N ; + mnene_14_N : N ; + mnini_14_N : N ; + mnyama_14_N : N ; + mo_14_N : N ; + mo_3_4_N : N ; + mo_7_8_N : N ; + moba_3_N : N ; + moba_3_4_N : N ; + moba_7_8_N : N ; + moliya_7_N : N ; + mome_9_N : N ; + mongo_7_8_N : N ; + mongozima_3_N : N ; + monyo_7_8_N : N ; + moto_9_10_N : N ; + moya_3_4_N : N ; + mpabanga_9_10_N : N ; + mpaka_9_10_N : N ; + mpama_9_10_N : N ; + mpande_9_10_N : N ; + mpange_9_10_N : N ; + mpangele_9_10_N : N ; + mpatha_9_10_N : N ; + mpelesi_9_10_N : N ; + mpempe_9_10_N : N ; + mpi_14_N : N ; + mpi_9_10_N : N ; + mpisi_9_10_N : N ; + mpofu_14_N : N ; + mpohlo_9_10_N : N ; + mpompi_7_8_N : N ; + mpondo_14_N : N ; + mpondo_5_6_N : N ; + mpondo_9_10_N : N ; + mpongozembe_9_10_N : N ; + mpontshi_9_10_N : N ; + mpu_11_10_N : N ; + mpu_5_6_N : N ; + mpu_9_10_N : N ; + mpukane_9_10_N : N ; + mpunga_14_N : N ; + mpunga_9_10_N : N ; + mpungushe_9_N : N ; + mpuphu_9_N : N ; + mtoti_14_N : N ; + mukanandwendwe_7_8_N : N ; + mukela_3_4_N : N ; + mungulu_7_8_N : N ; + nakwabo_1_2_N : N ; + nakwethu_1_2_N : N ; + nala_9_10_N : N ; + nambuzane_7_8_N : N ; + nani_5_6_N : N ; + nanja_3_4_N : N ; + nanja_5_6_N : N ; + nansika_11_10_N : N ; + nansika_5_6_N : N ; + nansika_9_10_N : N ; + naphakade_11_N : N ; + naphungana_7_8_N : N ; + nawami_1_2_N : N ; + ncamu_5_6_N : N ; + ncane_14_N : N ; + ncazelo_9_10_N : N ; + nce_11_N : N ; + nceku_14_N : N ; + nceku_9_10_N : N ; + ncele_3_4_N : N ; + ncele_9_10_N : N ; + ncema_9_10_N : N ; + ncengela_9_10_N : N ; + ncibijane_11_N : N ; + ncindo_3_4_N : N ; + ncintiswano_3_4_N : N ; + ncinyane_14_N : N ; + ncinyane_9_10_N : N ; + ncishi_9_10_N : N ; + nco_9_10_N : N ; + ncokazi_9_10_N : N ; + ncoko_6_N : N ; + ncomo_9_10_N : N ; + ncotho_9_10_N : N ; + nculu_9_10_N : N ; + ncumbe_9_10_N : N ; + ncushuncushu_9_10_N : N ; + ncwaba_11_N : N ; + ncwadi_9_10_N : N ; + ncwazi_11_10_N : N ; + ndanda_11_10_N : N ; + ndawo_9_10_N : N ; + ndawu_5_6_N : N ; + nde_3_4_N : N ; + ndeni_3_4_N : N ; + ndeni_9_10_N : N ; + ndi_11_N : N ; + ndibilisha_9_10_N : N ; + ndiki_5_6_N : N ; + ndiki_9_10_N : N ; + ndilokwe_5_6_N : N ; + ndima_9_10_N : N ; + ndimbane_9_10_N : N ; + ndimi_8_N : N ; + ndindi_3_4_N : N ; + ndinganiso_9_N : N ; + ndiya_5_6_N : N ; + ndiza_9_10_N : N ; + ndizamshini_9_10_N : N ; + ndla_6_N : N ; + ndlala_9_10_N : N ; + ndle_9_N : N ; + ndlu_9_10_N : N ; + ndlunkulu_9_10_N : N ; + ndlwana_9_10_N : N ; + ndlwane_5_6_N : N ; + ndondo_3_N : N ; + ndulo_5_6_N : N ; + nduze_3_4_N : N ; + ndwandwe_9_10_N : N ; + ne_14_N : N ; + ne_7_8_N : N ; + neke_7_N : N ; + nembe_11_N : N ; + nembe_6_N : N ; + nembe_9_N : N ; + nembeza_11_N : N ; + nembeza_11_10_N : N ; + nembo_11_N : N ; + nene_14_N : N ; + nene_17_N : N ; + nene_5_6_N : N ; + nene_7_8_N : N ; + nengiso_7_8_N : N ; + nenke_3_4_N : N ; + nesi_14_N : N ; + nesi_5_6_N : N ; + netha_5_6_N : N ; + nethe_14_N : N ; + newabo_1_2_N : N ; + newenu_1_2_N : N ; + newethu_1_2_N : N ; + nga_3_4_N : N ; + nga_6_N : N ; + nga_7_8_N : N ; + ngaka_14_N : N ; + ngakanani_14_N : N ; + ngako_14_N : N ; + ngamanzi_5_N : N ; + ngamunwe_5_6_N : N ; + ngane_11_N : N ; + ngane_14_N : N ; + ngane_1_2_N : N ; + ngane_7_8_N : N ; + ngane_9_10_N : N ; + nganeko_9_10_N : N ; + nganekwane_9_10_N : N ; + ngani_1_2_N : N ; + ngani_7_8_N : N ; + ngathekiso_7_8_N : N ; + ngcebo_9_N : N ; + ngcele_3_4_N : N ; + ngci_11_N : N ; + ngcobangcoba_9_10_N : N ; + ngcono_14_N : N ; + ngcuba_9_10_N : N ; + ngculazi_9_N : N ; + ngcungu_9_10_N : N ; + ngcwaba_5_6_N : N ; + ngcwabo_3_4_N : N ; + ngcwele_9_N : N ; + ngcweti_14_N : N ; + ngcwi_3_4_N : N ; + nge_3_4_N : N ; + ngele_11_10_N : N ; + ngele_5_6_N : N ; + ngelosi_9_10_N : N ; + ngenandlini_3_N : N ; + ngende_9_10_N : N ; + ngenela_3_4_N : N ; + ngeni_3_N : N ; + ngeniso_7_8_N : N ; + ngethe_6_N : N ; + ngide_9_10_N : N ; + ngisi_5_6_N : N ; + ngisi_7_N : N ; + ngobe_5_6_N : N ; + ngobese_9_10_N : N ; + ngobo_9_10_N : N ; + ngoma_14_N : N ; + ngoma_1_2_N : N ; + ngoma_9_10_N : N ; + ngomuso_9_N : N ; + ngonyama_9_10_N : N ; + ngovolo_9_10_N : N ; + ngoye_11_N : N ; + ngozi_14_N : N ; + ngozi_9_10_N : N ; + ngqakala_9_10_N : N ; + ngqanga_6_N : N ; + ngqangqa_5_6_N : N ; + ngqangqa_9_10_N : N ; + ngqayingqayi_14_N : N ; + ngqayizivele_9_N : N ; + ngqephu_9_10_N : N ; + ngqi_11_N : N ; + ngqikithi_9_10_N : N ; + ngqinamba_9_10_N : N ; + ngqofa_9_10_N : N ; + ngqongqo_14_N : N ; + ngqoqwane_11_N : N ; + ngqungqulu_9_10_N : N ; + ngquphane_3_4_N : N ; + ngquthu_9_10_N : N ; + ngqwashi_9_10_N : N ; + ngqwele_9_10_N : N ; + ngubo_9_10_N : N ; + ngulube_9_10_N : N ; + ngunaphakade_11_N : N ; + ngungumbane_9_10_N : N ; + nguni_1_2_N : N ; + ngwazi_7_8_N : N ; + ngwe_6_N : N ; + ngwe_9_10_N : N ; + ngwevu_14_N : N ; + ngwevu_6_N : N ; + ngwevu_9_10_N : N ; + ngxabano_9_10_N : N ; + ngxenye_9_N : N ; + ngxenye_9_10_N : N ; + ngxoxo_9_10_N : N ; + nhla_9_N : N ; + nhlanhla_9_10_N : N ; + nhlendla_9_10_N : N ; + nikazi_14_N : N ; + nikazi_1_2_N : N ; + nikeli_1_2_N : N ; + nikelo_3_4_N : N ; + nikinikana_5_6_N : N ; + nikiniki_14_N : N ; + nikiniki_6_N : N ; + nina_14_N : N ; + nina_5_6_N : N ; + ninakhulu_9_N : N ; + ningi_14_N : N ; + ningi_3_4_N : N ; + ningi_9_N : N ; + ningizimu_9_N : N ; + ningo_9_10_N : N ; + nini_1_2_N : N ; + nini_3_4_N : N ; + nini_7_8_N : N ; + ninimuzi_1_2_N : N ; + ninindlu_3_N : N ; + niningo_3_4_N : N ; + niningwane_3_4_N : N ; + niniyo_1_2_N : N ; + nja_14_N : N ; + nja_9_10_N : N ; + njalo_14_N : N ; + njalo_9_10_N : N ; + njani_14_N : N ; + njini_9_10_N : N ; + njoloba_9_10_N : N ; + njonjo_3_4_N : N ; + njunju_3_4_N : N ; + nkaba_9_10_N : N ; + nkabi_9_10_N : N ; + nkala_9_10_N : N ; + nkalankala_9_10_N : N ; + nkamba_9_10_N : N ; + nkambabeyibuza_9_10_N : N ; + nkambiso_9_10_N : N ; + nkambo_9_10_N : N ; + nkambu_9_10_N : N ; + nkampani_9_10_N : N ; + nkanankana_9_10_N : N ; + nkandla_9_N : N ; + nkani_9_10_N : N ; + nkanka_6_N : N ; + nkantsha_3_N : N ; + nkanyezi_9_10_N : N ; + nkatho_9_N : N ; + nkawu_9_10_N : N ; + nkayiya_5_6_N : N ; + nkelenkele_9_10_N : N ; + nkemba_7_8_N : N ; + nkemba_9_10_N : N ; + nkengane_5_6_N : N ; + nkenke_3_4_N : N ; + nkentshane_5_6_N : N ; + nkibaniso_9_10_N : N ; + nkilikiqi_9_10_N : N ; + nkinobho_9_10_N : N ; + nkinsela_9_10_N : N ; + nkintsho_9_10_N : N ; + nkinyankinya_7_8_N : N ; + nkobo_9_10_N : N ; + nkolo_9_10_N : N ; + nkolombela_9_10_N : N ; + nkomishi_9_10_N : N ; + nkomponi_9_10_N : N ; + nkondlo_9_10_N : N ; + nkone_9_10_N : N ; + nkongolo_9_10_N : N ; + nkonjane_9_10_N : N ; + nkonkoni_9_10_N : N ; + nkontileka_9_10_N : N ; + nkonyana_9_10_N : N ; + nkonyana_9_6_N : N ; + nkonyane_9_10_N : N ; + nkonyane_9_6_N : N ; + nkosa_9_10_N : N ; + nkoza_9_10_N : N ; + nkukhu_9_10_N : N ; + nkulungu_9_10_N : N ; + nkume_9_10_N : N ; + nkungu_9_10_N : N ; + nkwa_7_8_N : N ; + nkwali_9_N : N ; + nkwali_9_10_N : N ; + nkwantshu_9_10_N : N ; + nkwe_7_8_N : N ; + nofonofo_9_N : N ; + nokwe_7_8_N : N ; + nombolo_9_10_N : N ; + nomfi_9_N : N ; + nomphela_11_N : N ; + nomphelo_11_N : N ; + nongo_11_10_N : N ; + noni_5_6_N : N ; + noni_9_10_N : N ; + nono_14_N : N ; + nono_5_6_N : N ; + nothi_5_6_N : N ; + notho_3_N : N ; + noveli_5_6_N : N ; + nqaba_9_10_N : N ; + nqaku_6_N : N ; + nqala_9_10_N : N ; + nqalanqala_7_8_N : N ; + nqama_9_10_N : N ; + nqambothi_11_N : N ; + nqamu_6_N : N ; + nqamu_7_8_N : N ; + nqanawe_9_10_N : N ; + nqawe_7_8_N : N ; + nqayi_3_4_N : N ; + nqayi_5_6_N : N ; + nqe_5_6_N : N ; + nqe_7_8_N : N ; + nqeni_7_8_N : N ; + nqikanqika_6_N : N ; + nqina_5_6_N : N ; + nqina_9_10_N : N ; + nqindi_7_8_N : N ; + nqindi_9_10_N : N ; + nqini_3_4_N : N ; + nqobo_5_6_N : N ; + nqoboka_9_10_N : N ; + nqola_9_10_N : N ; + nqolobana_9_10_N : N ; + nqolobane_9_10_N : N ; + nqondo_3_4_N : N ; + nqondo_5_6_N : N ; + nqotho_8_N : N ; + nqubo_9_10_N : N ; + nqubu_9_10_N : N ; + nqukuza_7_8_N : N ; + nqulu_9_10_N : N ; + nquma_3_4_N : N ; + nquma_9_10_N : N ; + nqumo_3_4_N : N ; + nqumo_7_8_N : N ; + nqunu_14_N : N ; + nqwaba_9_10_N : N ; + nsaba_9_10_N : N ; + nsabula_9_10_N : N ; + nsada_9_10_N : N ; + nsangu_9_N : N ; + nsansa_8_N : N ; + nsansa_9_10_N : N ; + nselele_9_N : N ; + nselelo_9_10_N : N ; + nselo_9_10_N : N ; + nsephe_9_10_N : N ; + nsika_9_10_N : N ; + nsimango_9_10_N : N ; + nsimba_9_N : N ; + nsimbi_9_10_N : N ; + nsinde_9_N : N ; + nsingizi_9_10_N : N ; + nsinsi_11_N : N ; + nsipho_8_N : N ; + nsipho_9_10_N : N ; + nsizwa_9_10_N : N ; + nso_9_10_N : N ; + nsosha_9_10_N : N ; + nsoyi_9_N : N ; + nsudu_9_10_N : N ; + nsumansumane_9_10_N : N ; + nsundu_9_10_N : N ; + nsunguzi_9_10_N : N ; + nsunsu_9_10_N : N ; + nsuze_9_10_N : N ; + nta_9_10_N : N ; + ntaba_9_10_N : N ; + ntabakhe_1_2_N : N ; + ntabami_1_2_N : N ; + ntaka_9_10_N : N ; + ntakababa_1_2_N : N ; + ntakwethu_1_2_N : N ; + ntamo_9_10_N : N ; + ntanakhe_1_2_N : N ; + ntanakho_1_2_N : N ; + ntanami_1_2_N : N ; + ntanami_3_N : N ; + ntandane_9_10_N : N ; + ntanegwababa_1_2_N : N ; + ntanethu_1_2_N : N ; + ntanga_9_10_N : N ; + ntanomntanami_1_2_N : N ; + ntanomntanami_3_N : N ; + ntanomuntu_1_2_N : N ; + ntanta_11_10_N : N ; + nteli_7_8_N : N ; + ntende_9_10_N : N ; + ntenesha_5_6_N : N ; + ntengantenga_9_10_N : N ; + nti_9_N : N ; + nto_11_N : N ; + ntolibhantshi_9_10_N : N ; + ntolwane_9_10_N : N ; + ntombazana_14_N : N ; + ntombazana_5_6_N : N ; + ntombazane_14_N : N ; + ntombazane_5_6_N : N ; + ntombi_14_N : N ; + ntonga_9_10_N : N ; + ntongela_5_6_N : N ; + ntongomane_5_6_N : N ; + ntonjana_9_10_N : N ; + ntsha_14_N : N ; + ntshakaza_9_10_N : N ; + ntshe_9_10_N : N ; + ntshebe_9_10_N : N ; + ntshongo_9_10_N : N ; + ntshontsho_5_6_N : N ; + ntu_11_N : N ; + ntu_14_N : N ; + ntu_1_2_N : N ; + ntu_7_N : N ; + ntukazana_1_2_N : N ; + ntulo_9_10_N : N ; + ntungwa_1_2_N : N ; + ntungwa_5_6_N : N ; + ntuthuko_9_10_N : N ; + ntuthwane_9_10_N : N ; + ntwakuntwaku_9_10_N : N ; + ntwala_9_10_N : N ; + ntwana_14_N : N ; + ntwana_1_2_N : N ; + nuka_3_4_N : N ; + nuke_7_8_N : N ; + nuku_14_N : N ; + numzana_1_2_N : N ; + numzane_1_2_N : N ; + nungu_11_10_N : N ; + nungu_7_8_N : N ; + nungu_9_10_N : N ; + nunu_9_10_N : N ; + nwabu_11_10_N : N ; + nwe_3_4_N : N ; + nwe_7_N : N ; + nwele_11_10_N : N ; + nxa_3_4_N : N ; + nxa_5_6_N : N ; + nxa_9_10_N : N ; + nxanxathela_9_10_N : N ; + nxeba_5_6_N : N ; + nxele_14_N : N ; + nxele_17_N : N ; + nxele_7_N : N ; + nxenye_9_N : N ; + nxephezelo_7_8_N : N ; + nxi_7_N : N ; + nxiwa_5_6_N : N ; + nxuluma_5_6_N : N ; + nxuluma_9_10_N : N ; + nxusa_5_6_N : N ; + nxushunxushu_9_10_N : N ; + nya_11_N : N ; + nya_3_4_N : N ; + nya_5_6_N : N ; + nyaba_3_4_N : N ; + nyaka_11_N : N ; + nyaka_3_4_N : N ; + nyakazo_3_4_N : N ; + nyala_6_N : N ; + nyalinyali_5_6_N : N ; + nyama_3_N : N ; + nyama_7_N : N ; + nyama_9_10_N : N ; + nyamana_9_10_N : N ; + nyamazane_9_10_N : N ; + nyamu_7_8_N : N ; + nyanda_5_6_N : N ; + nyanda_9_10_N : N ; + nyandezulu_9_10_N : N ; + nyanga_14_N : N ; + nyanga_9_10_N : N ; + nyango_3_4_N : N ; + nyani_3_4_N : N ; + nyathelo_5_6_N : N ; + nyathelo_7_8_N : N ; + nyathelo_9_10_N : N ; + nyathi_9_10_N : N ; + nyawo_11_10_N : N ; + nyazi_11_N : N ; + nye_14_N : N ; + nye_7_8_N : N ; + nyela_5_6_N : N ; + nyele_5_6_N : N ; + nyelele_11_10_N : N ; + nyembe_9_10_N : N ; + nyembezi_11_10_N : N ; + nyengelezi_9_10_N : N ; + nyeza_5_6_N : N ; + nyezane_3_4_N : N ; + nyezi_11_N : N ; + nyobonyobo_11_10_N : N ; + nyoka_14_N : N ; + nyoka_9_10_N : N ; + nyokotho_7_8_N : N ; + nyoluka_11_N : N ; + nyombo_3_4_N : N ; + nyonga_5_6_N : N ; + nyonga_9_10_N : N ; + nyongo_9_10_N : N ; + nyoni_9_10_N : N ; + nyoninco_14_N : N ; + nyosi_9_10_N : N ; + nyovu_3_4_N : N ; + nyu_3_N : N ; + nyuluka_9_10_N : N ; + nyumba_9_10_N : N ; + nyumbazana_9_10_N : N ; + nyumbazane_9_N : N ; + nyunyana_9_10_N : N ; + nyuvesi_5_6_N : N ; + nyuziphepha_5_6_N : N ; + nzi_6_N : N ; + nzima_11_N : N ; + nzima_14_N : N ; + nzima_7_8_N : N ; + nzima_9_10_N : N ; + nzimakazi_9_10_N : N ; + nzonzo_5_6_N : N ; + nzulu_14_N : N ; + nzulu_9_10_N : N ; + oba_3_N : N ; + oli_5_N : N ; + omiso_7_N : N ; + ona_3_N : N ; + ona_7_8_N : N ; + onakali_7_8_N : N ; + onakalo_3_N : N ; + ondli_1_2_N : N ; + ondlo_3_4_N : N ; + ongameli_1_2_N : N ; + ongi_1_2_N : N ; + ongo_3_N : N ; + ongo_3_4_N : N ; + ongo_7_8_N : N ; + oni_1_2_N : N ; + oni_7_8_N : N ; + oni_9_10_N : N ; + ono_7_8_N : N ; + onto_5_N : N ; + onto_5_6_N : N ; + opho_3_N : N ; + ova_5_6_N : N ; + oya_14_N : N ; + oya_3_N : N ; + pani_5_6_N : N ; + pani_7_8_N : N ; + pasi_5_6_N : N ; + payipi_5_6_N : N ; + pelesi_9_10_N : N ; + peni_5_6_N : N ; + pesheli_7_8_N : N ; + pesheni_9_10_N : N ; + petshisi_3_4_N : N ; + pha_3_4_N : N ; + phahla_11_10_N : N ; + phahla_5_6_N : N ; + phahla_9_10_N : N ; + phakama_5_6_N : N ; + phakamiso_7_8_N : N ; + phakathi_3_4_N : N ; + phakathi_5_6_N : N ; + phakethe_5_6_N : N ; + phako_3_4_N : N ; + phalafini_11_N : N ; + phalamende_5_6_N : N ; + phalaphala_7_8_N : N ; + phalishi_5_6_N : N ; + phamba_9_10_N : N ; + phambano_7_8_N : N ; + phambeko_7_8_N : N ; + phambili_3_4_N : N ; + phambosi_9_10_N : N ; + phambu_9_10_N : N ; + phande_5_6_N : N ; + phandla_7_8_N : N ; + phandla_9_10_N : N ; + phandle_6_N : N ; + phandleni_9_N : N ; + phanga_7_8_N : N ; + phangela_5_6_N : N ; + phangi_1_2_N : N ; + phango_5_N : N ; + phango_9_10_N : N ; + phansi_1_2_N : N ; + phapha_7_8_N : N ; + phaphasi_5_6_N : N ; + phaphatheka_5_6_N : N ; + phaphe_11_10_N : N ; + phaphu_5_6_N : N ; + phaqa_5_6_N : N ; + phasela_5_6_N : N ; + phasika_5_N : N ; + phatha_11_10_N : N ; + phatha_3_4_N : N ; + phatha_5_6_N : N ; + phathe_11_N : N ; + phathi_1_2_N : N ; + phathimandla_7_8_N : N ; + phathiswa_1_2_N : N ; + phatho_9_10_N : N ; + phawu_11_10_N : N ; + phazamiso_7_8_N : N ; + phe_5_6_N : N ; + phe_7_8_N : N ; + phefu_7_8_N : N ; + phefumulo_3_4_N : N ; + phehla_9_10_N : N ; + phehlwa_9_10_N : N ; + pheka_7_8_N : N ; + phekepha_11_10_N : N ; + pheki_1_2_N : N ; + phela_3_4_N : N ; + phela_5_6_N : N ; + phela_6_N : N ; + phela_9_N : N ; + phelasonto_9_10_N : N ; + phelekezeli_1_2_N : N ; + phelo_3_N : N ; + pheme_3_4_N : N ; + phenama_7_8_N : N ; + phendulo_9_10_N : N ; + phenyane_11_N : N ; + phenyo_11_N : N ; + phenyo_11_10_N : N ; + phepha_5_6_N : N ; + phephandaba_5_6_N : N ; + phephelezi_11_10_N : N ; + phephethi_1_2_N : N ; + phepho_7_8_N : N ; + phepho_9_10_N : N ; + phesenti_5_6_N : N ; + phethe_7_8_N : N ; + phethelo_5_6_N : N ; + phetho_3_4_N : N ; + phetho_7_8_N : N ; + phethu_7_8_N : N ; + phethu_9_10_N : N ; + phezulu_3_4_N : N ; + phi_1_2_N : N ; + phicabadala_9_10_N : N ; + phicaphicwano_7_8_N : N ; + phici_11_10_N : N ; + phihli_7_8_N : N ; + phika_5_6_N : N ; + phika_7_8_N : N ; + phike_7_8_N : N ; + phikeleli_7_8_N : N ; + phikiswano_9_10_N : N ; + phiko_11_10_N : N ; + phiko_5_6_N : N ; + phiko_9_10_N : N ; + phila_9_10_N : N ; + philisi_5_6_N : N ; + philo_9_10_N : N ; + phimbo_3_4_N : N ; + phimbo_5_6_N : N ; + phinda_9_10_N : N ; + phingo_7_8_N : N ; + phini_3_4_N : N ; + phini_5_6_N : N ; + phinifo_5_6_N : N ; + phisi_5_6_N : N ; + phisi_9_10_N : N ; + phiso_11_10_N : N ; + phithi_11_10_N : N ; + phithi_5_N : N ; + phithi_5_6_N : N ; + phithi_9_N : N ; + phithiphithi_7_8_N : N ; + phiva_5_6_N : N ; + phiwa_1_2_N : N ; + phiwo_7_8_N : N ; + pho_7_8_N : N ; + phofana_9_10_N : N ; + phofu_14_N : N ; + phofu_7_8_N : N ; + phofu_9_10_N : N ; + phohlongo_7_N : N ; + phoko_11_N : N ; + phokophelo_9_10_N : N ; + pholela_5_6_N : N ; + phondo_11_10_N : N ; + phondo_5_6_N : N ; + phongo_7_8_N : N ; + phongo_9_10_N : N ; + phongolo_3_4_N : N ; + phophoma_9_10_N : N ; + phoqabulungu_9_10_N : N ; + phoqo_9_N : N ; + phosiso_7_8_N : N ; + photho_5_N : N ; + phothwe_5_6_N : N ; + phoyinti_5_6_N : N ; + phoyisa_5_6_N : N ; + phucuko_9_N : N ; + phucuzeko_9_10_N : N ; + phuhle_5_6_N : N ; + phuku_7_8_N : N ; + phuku_9_10_N : N ; + phukuphuku_14_N : N ; + phukuphuku_7_8_N : N ; + phukuphukwana_7_8_N : N ; + phukuthu_7_8_N : N ; + phulukundlu_5_6_N : N ; + phuma_5_6_N : N ; + phumalanga_9_N : N ; + phumela_3_4_N : N ; + phumelelo_9_10_N : N ; + phumputhe_9_10_N : N ; + phumulo_6_N : N ; + phumulo_9_10_N : N ; + phundu_7_8_N : N ; + phundu_9_10_N : N ; + phunga_5_6_N : N ; + phunga_7_8_N : N ; + phungo_3_4_N : N ; + phunzi_7_8_N : N ; + phunzi_9_10_N : N ; + phuphe_3_4_N : N ; + phuphi_1_2_N : N ; + phupho_5_6_N : N ; + phuphu_5_6_N : N ; + phuphuma_5_6_N : N ; + phuphuma_7_8_N : N ; + phuphusi_5_6_N : N ; + phushu_5_N : N ; + phutha_5_6_N : N ; + phuthe_7_8_N : N ; + phuthu_11_N : N ; + phuthu_5_6_N : N ; + phuzi_5_6_N : N ; + phuzo_11_N : N ; + phuzo_7_8_N : N ; + phuzu_5_6_N : N ; + piki_5_6_N : N ; + pikili_7_8_N : N ; + piliyoni_7_8_N : N ; + pipi_5_6_N : N ; + piyane_11_10_N : N ; + poki_7_8_N : N ; + poli_7_8_N : N ; + politiki_5_6_N : N ; + poliyane_7_N : N ; + posi_5_6_N : N ; + potimende_5_6_N : N ; + pristi_14_N : N ; + pristi_1_2_N : N ; + profethi_1_2_N : N ; + pulangwe_5_6_N : N ; + pulani_5_6_N : N ; + pulazi_5_6_N : N ; + puleti_5_6_N : N ; + pulupiti_5_6_N : N ; + pumalanga_5_N : N ; + punu_7_8_N : N ; + putukezi_5_6_N : N ; + qa_5_6_N : N ; + qaba_14_N : N ; + qaba_5_6_N : N ; + qaba_9_10_N : N ; + qabetho_7_8_N : N ; + qabunga_5_6_N : N ; + qakala_5_6_N : N ; + qakala_9_10_N : N ; + qala_3_4_N : N ; + qala_9_10_N : N ; + qalabutho_9_10_N : N ; + qalaqala_5_6_N : N ; + qalekiso_7_8_N : N ; + qali_1_2_N : N ; + qalo_7_8_N : N ; + qalothi_3_4_N : N ; + qamama_14_N : N ; + qambi_1_2_N : N ; + qambi_5_6_N : N ; + qambi_9_10_N : N ; + qamelo_3_4_N : N ; + qanda_5_6_N : N ; + qanduqandu_11_10_N : N ; + qangala_3_4_N : N ; + qansa_3_4_N : N ; + qapheli_9_10_N : N ; + qaqa_5_6_N : N ; + qashi_1_2_N : N ; + qashi_5_6_N : N ; + qatha_14_N : N ; + qatha_5_6_N : N ; + qatha_7_8_N : N ; + qatha_9_10_N : N ; + qathe_5_6_N : N ; + qebelengwana_5_6_N : N ; + qebelengwane_5_6_N : N ; + qele_5_6_N : N ; + qembe_5_6_N : N ; + qembu_5_6_N : N ; + qengqe_7_8_N : N ; + qephu_7_8_N : N ; + qephu_9_10_N : N ; + qeqeshi_1_2_N : N ; + qethu_5_N : N ; + qha_5_6_N : N ; + qhabanga_5_6_N : N ; + qhalaqhala_14_N : N ; + qhalaqhala_5_6_N : N ; + qhamuka_5_6_N : N ; + qhasha_5_6_N : N ; + qhathi_1_2_N : N ; + qhawe_14_N : N ; + qhawe_5_6_N : N ; + qhaza_5_6_N : N ; + qhaza_7_8_N : N ; + qhekeko_11_10_N : N ; + qhele_3_4_N : N ; + qhewu_3_4_N : N ; + qhikiza_5_6_N : N ; + qhimiza_6_N : N ; + qhinga_5_6_N : N ; + qhingi_7_8_N : N ; + qhino_3_4_N : N ; + qhobosho_7_8_N : N ; + qholo_5_6_N : N ; + qholosha_14_N : N ; + qholosha_5_6_N : N ; + qhoqho_7_8_N : N ; + qhotho_11_10_N : N ; + qhubo_9_10_N : N ; + qhubu_5_6_N : N ; + qhude_5_6_N : N ; + qhudelwano_3_4_N : N ; + qhugwane_5_6_N : N ; + qhulu_5_6_N : N ; + qhume_11_N : N ; + qhume_5_6_N : N ; + qhuqho_11_N : N ; + qhuqhumbelo_3_4_N : N ; + qhuzu_5_6_N : N ; + qhwa_5_N : N ; + qhwaga_7_8_N : N ; + qhwagi_5_6_N : N ; + qikili_7_8_N : N ; + qili_14_N : N ; + qili_5_6_N : N ; + qingo_3_4_N : N ; + qinisekiso_7_8_N : N ; + qiniseko_7_8_N : N ; + qiniso_5_6_N : N ; + qinti_7_8_N : N ; + qiqingo_3_4_N : N ; + qobo_11_N : N ; + qobo_3_4_N : N ; + qobo_5_6_N : N ; + qoka_3_4_N : N ; + qola_5_6_N : N ; + qolo_5_6_N : N ; + qoma_5_6_N : N ; + qombothi_11_10_N : N ; + qombothi_3_N : N ; + qomondo_11_10_N : N ; + qondisi_1_2_N : N ; + qondo_11_N : N ; + qondo_3_4_N : N ; + qondo_5_6_N : N ; + qondo_9_10_N : N ; + qongo_3_4_N : N ; + qongo_7_8_N : N ; + qophi_1_2_N : N ; + qoqo_5_6_N : N ; + qotho_14_N : N ; + qotho_5_6_N : N ; + qotho_9_10_N : N ; + qu_7_8_N : N ; + quba_3_N : N ; + quba_9_10_N : N ; + qubekelaphambili_9_10_N : N ; + qubu_11_10_N : N ; + qubu_5_6_N : N ; + qubu_7_N : N ; + qubula_5_6_N : N ; + qubulo_7_N : N ; + qubulo_7_8_N : N ; + qukaquka_7_8_N : N ; + qulu_3_4_N : N ; + qumama_7_8_N : N ; + qumbe_3_4_N : N ; + qumbe_5_6_N : N ; + qumbi_9_10_N : N ; + qundu_7_8_N : N ; + qunga_11_10_N : N ; + qungo_7_8_N : N ; + qupha_5_6_N : N ; + quqaba_11_N : N ; + ququ_5_N : N ; + ququmadevu_7_8_N : N ; + qwabe_11_10_N : N ; + qwabe_5_6_N : N ; + qwayi_7_8_N : N ; + qwayiba_3_4_N : N ; + qwembe_11_10_N : N ; + qweqwe_11_10_N : N ; + randi_5_6_N : N ; + rayisi_5_6_N : N ; + rekhodi_5_6_N : N ; + rediyo_5_6_N : N ; + rikhi_7_8_N : N ; + riphabhuliki_5_6_N : N ; + sa_3_N : N ; + sa_7_N : N ; + saba_11_10_N : N ; + saba_5_6_N : N ; + sabalala_11_N : N ; + sabatha_5_6_N : N ; + saho_3_4_N : N ; + saka_5_6_N : N ; + sakazi_1_2_N : N ; + sakazo_3_4_N : N ; + salamuzi_5_6_N : N ; + salela_5_6_N : N ; + salela_9_10_N : N ; + salelo_9_10_N : N ; + sali_1_2_N : N ; + salo_9_10_N : N ; + sambatheka_9_10_N : N ; + samo_3_N : N ; + sana_11_N : N ; + sanga_3_4_N : N ; + sango_5_6_N : N ; + sapho_11_N : N ; + sasa_5_6_N : N ; + sasane_3_4_N : N ; + sasasa_5_6_N : N ; + savuleka_9_10_N : N ; + sawoti_11_N : N ; + sayensi_5_6_N : N ; + sebe_11_N : N ; + sebe_3_4_N : N ; + sebenzi_1_2_N : N ; + sebenzi_3_4_N : N ; + sebenzi_7_8_N : N ; + sebenzo_9_10_N : N ; + sefo_7_8_N : N ; + sekela_11_N : N ; + sekela_5_6_N : N ; + sekelo_7_8_N : N ; + sekisi_5_6_N : N ; + seko_5_6_N : N ; + sela_14_N : N ; + sela_5_6_N : N ; + sele_3_4_N : N ; + sele_5_6_N : N ; + sele_7_8_N : N ; + selesele_5_6_N : N ; + selula_5_6_N : N ; + selwa_11_10_N : N ; + selwa_5_6_N : N ; + seme_5_6_N : N ; + sempu_5_6_N : N ; + sende_5_6_N : N ; + sendo_3_N : N ; + senga_14_N : N ; + sengane_9_10_N : N ; + sengi_9_10_N : N ; + sengwakazi_9_10_N : N ; + senti_5_6_N : N ; + sentu_11_N : N ; + sephe_9_10_N : N ; + sese_5_N : N ; + seshi_1_2_N : N ; + sevisi_5_6_N : N ; + sha_14_N : N ; + sha_1_2_N : N ; + shaba_11_N : N ; + shabalala_6_N : N ; + shada_11_N : N ; + shada_5_6_N : N ; + shada_7_8_N : N ; + shado_3_4_N : N ; + shaka_5_6_N : N ; + shalofu_5_6_N : N ; + shana_3_4_N : N ; + shanelo_3_4_N : N ; + shangane_11_10_N : N ; + shantshi_5_6_N : N ; + shanyelo_3_4_N : N ; + shaqa_11_N : N ; + shaqa_5_6_N : N ; + shashalazi_5_6_N : N ; + shayakhothe_5_6_N : N ; + shayelelo_7_8_N : N ; + shayeli_1_2_N : N ; + shayelo_3_4_N : N ; + shayi_1_2_N : N ; + shayo_3_4_N : N ; + shebo_7_8_N : N ; + sheduli_5_6_N : N ; + sheke_5_6_N : N ; + shelelezi_14_N : N ; + shelezi_14_N : N ; + shengele_3_4_N : N ; + sheshe_7_8_N : N ; + sheshelengwana_3_4_N : N ; + sheshi_14_N : N ; + sheshi_5_6_N : N ; + shevu_11_N : N ; + sheya_5_6_N : N ; + shidi_5_6_N : N ; + shikashika_3_N : N ; + shikishi_11_10_N : N ; + shimane_7_8_N : N ; + shinga_14_N : N ; + shinga_5_6_N : N ; + shini_3_4_N : N ; + shintsho_11_N : N ; + shiqa_6_N : N ; + shisa_5_6_N : N ; + shishi_7_8_N : N ; + shiya_3_4_N : N ; + shiya_5_6_N : N ; + shiyagalolunye_7_N : N ; + shiyagalombili_7_N : N ; + shiyi_5_6_N : N ; + shiza_3_4_N : N ; + shizi_11_N : N ; + sho_3_4_N : N ; + sho_7_8_N : N ; + shoba_5_6_N : N ; + shokobezi_1_2_N : N ; + shokolo_7_8_N : N ; + sholo_7_8_N : N ; + shongololo_5_6_N : N ; + shosha_7_8_N : N ; + shoshaphansi_3_4_N : N ; + shu_3_4_N : N ; + shubo_3_N : N ; + shumayeli_1_2_N : N ; + shumayelo_9_10_N : N ; + shumi_5_6_N : N ; + shungu_3_4_N : N ; + shungu_5_6_N : N ; + shuqulo_3_4_N : N ; + shuqulu_3_4_N : N ; + shuqulu_7_8_N : N ; + shushu_6_N : N ; + shwa_3_4_N : N ; + shwa_5_6_N : N ; + shwamu_9_10_N : N ; + shwapha_7_8_N : N ; + shwe_3_4_N : N ; + si_11_N : N ; + si_14_N : N ; + si_3_N : N ; + si_5_6_N : N ; + si_7_N : N ; + siba_11_10_N : N ; + sibekelo_7_8_N : N ; + sika_14_N : N ; + sikazi_9_10_N : N ; + siki_1_2_N : N ; + sikisiki_11_N : N ; + siko_11_10_N : N ; + siko_3_4_N : N ; + siko_5_6_N : N ; + sila_3_4_N : N ; + sila_7_8_N : N ; + sila_9_10_N : N ; + silaha_5_6_N : N ; + silala_9_10_N : N ; + sileti_5_6_N : N ; + siliva_5_6_N : N ; + simba_5_6_N : N ; + simu_9_6_N : N ; + sina_7_8_N : N ; + sinda_5_6_N : N ; + sinda_9_10_N : N ; + sinde_5_N : N ; + sinde_5_6_N : N ; + sinde_7_8_N : N ; + sindisi_1_2_N : N ; + sindo_3_4_N : N ; + sindo_7_8_N : N ; + singa_11_10_N : N ; + singa_3_4_N : N ; + singa_7_8_N : N ; + singili_9_10_N : N ; + singizane_3_4_N : N ; + singo_9_10_N : N ; + sini_11_N : N ; + sini_1_2_N : N ; + sini_7_8_N : N ; + sini_9_10_N : N ; + sinini_7_8_N : N ; + sinsi_3_4_N : N ; + sipha_3_4_N : N ; + sipha_5_6_N : N ; + sipho_9_10_N : N ; + siso_5_6_N : N ; + sitashi_11_N : N ; + sitha_5_6_N : N ; + sithelo_7_8_N : N ; + siza_10_N : N ; + siza_5_6_N : N ; + sizakalo_9_10_N : N ; + size_7_8_N : N ; + sizi_11_N : N ; + sizi_1_2_N : N ; + sizi_3_4_N : N ; + sizi_9_10_N : N ; + sizo_11_N : N ; + so_14_N : N ; + so_3_N : N ; + so_5_6_N : N ; + sobho_5_6_N : N ; + sobo_3_4_N : N ; + soco_3_4_N : N ; + soka_5_6_N : N ; + sokama_3_N : N ; + sokisi_5_6_N : N ; + solo_11_N : N ; + solo_11_10_N : N ; + solo_5_6_N : N ; + solo_9_10_N : N ; + solokohlo_6_N : N ; + solwa_1_2_N : N ; + sombuluko_3_N : N ; + somi_5_6_N : N ; + sondezeli_1_2_N : N ; + sondo_5_6_N : N ; + songa_5_6_N : N ; + songela_5_6_N : N ; + songo_11_10_N : N ; + songo_5_6_N : N ; + sonte_9_10_N : N ; + sonto_5_6_N : N ; + sonto_9_10_N : N ; + sosha_5_6_N : N ; + sotsha_5_6_N : N ; + soyi_5_6_N : N ; + su_5_6_N : N ; + su_7_8_N : N ; + sudi_5_6_N : N ; + suka_3_4_N : N ; + suku_11_N : N ; + suku_11_10_N : N ; + suku_14_N : N ; + suku_3_4_N : N ; + sukwana_11_10_N : N ; + sukwana_14_N : N ; + sulu_11_N : N ; + sulubezi_5_6_N : N ; + sululu_3_4_N : N ; + sulwa_3_4_N : N ; + sumpa_5_6_N : N ; + sumpa_9_10_N : N ; + sundu_3_4_N : N ; + sundu_5_6_N : N ; + sungulo_11_10_N : N ; + susa_7_8_N : N ; + suthu_11_N : N ; + suthu_11_10_N : N ; + suthu_7_N : N ; + suzwane_3_4_N : N ; + swakama_3_N : N ; + swani_3_4_N : N ; + swani_9_10_N : N ; + swayi_5_6_N : N ; + swazi_11_10_N : N ; + swazi_3_4_N : N ; + swazi_5_6_N : N ; + swe_11_10_N : N ; + swebhu_7_8_N : N ; + swela_5_6_N : N ; + swelaboya_9_10_N : N ; + sweli_5_6_N : N ; + swelo_9_10_N : N ; + swenya_3_4_N : N ; + swenya_7_8_N : N ; + tafula_5_6_N : N ; + taladi_7_8_N : N ; + talagu_11_10_N : N ; + tambu_7_8_N : N ; + tapo_3_4_N : N ; + tasatasa_6_N : N ; + tata_3_4_N : N ; + tatama_1_2_N : N ; + tate_3_4_N : N ; + tatimende_7_8_N : N ; + tebe_9_10_N : N ; + tebele_7_8_N : N ; + tebhe_5_6_N : N ; + tebhisi_7_8_N : N ; + tekenteke_9_10_N : N ; + tekenya_5_6_N : N ; + tekisi_5_6_N : N ; + tekisi_9_6_N : N ; + teku_11_N : N ; + teku_11_10_N : N ; + teleka_7_8_N : N ; + tembu_7_8_N : N ; + tende_5_6_N : N ; + tende_7_8_N : N ; + teshi_7_8_N : N ; + tezi_7_8_N : N ; + tha_11_N : N ; + tha_14_N : N ; + tha_7_8_N : N ; + thabatha_5_6_N : N ; + thabathaba_7_8_N : N ; + thafa_5_6_N : N ; + thakathaka_14_N : N ; + thakathi_14_N : N ; + thakathi_1_2_N : N ; + thakazelo_7_8_N : N ; + thaki_1_2_N : N ; + thala_3_4_N : N ; + thala_5_6_N : N ; + thalente_5_6_N : N ; + thambama_5_6_N : N ; + thambama_9_6_N : N ; + thambeka_3_4_N : N ; + thambo_11_10_N : N ; + thambo_3_4_N : N ; + thambo_5_6_N : N ; + thambo_9_10_N : N ; + thamo_3_4_N : N ; + thamo_5_6_N : N ; + thanda_3_4_N : N ; + thandani_8_N : N ; + thandazo_3_4_N : N ; + thandi_1_2_N : N ; + thando_11_N : N ; + thando_9_10_N : N ; + thandokazi_9_10_N : N ; + thandwa_7_8_N : N ; + thanga_11_10_N : N ; + thanga_5_6_N : N ; + thanga_7_8_N : N ; + thangala_3_4_N : N ; + thange_5_6_N : N ; + thango_11_10_N : N ; + thani_5_6_N : N ; + thantala_5_6_N : N ; + thanyana_3_4_N : N ; + thaphuthaphu_14_N : N ; + thatha_14_N : N ; + thatha_3_N : N ; + thatha_5_6_N : N ; + thatha_7_8_N : N ; + thathe_11_10_N : N ; + thathe_3_N : N ; + thathe_7_8_N : N ; + thathu_7_8_N : N ; + thawini_5_6_N : N ; + thawula_5_6_N : N ; + thaya_5_6_N : N ; + thayi_5_6_N : N ; + the_5_6_N : N ; + thebe_7_8_N : N ; + thebe_9_10_N : N ; + thekeli_1_2_N : N ; + theketheke_5_6_N : N ; + theku_5_6_N : N ; + thela_9_10_N : N ; + thelela_3_4_N : N ; + thelevishini_5_6_N : N ; + thelezi_14_N : N ; + thelezi_9_10_N : N ; + thelo_7_8_N : N ; + themba_5_6_N : N ; + thembiso_7_8_N : N ; + thembu_1_2_N : N ; + thembu_5_6_N : N ; + thembu_7_8_N : N ; + thende_5_6_N : N ; + thende_7_8_N : N ; + thendele_5_6_N : N ; + thengi_1_2_N : N ; + thengisi_1_2_N : N ; + thengiso_9_10_N : N ; + thengo_9_10_N : N ; + thethe_14_N : N ; + thethe_5_6_N : N ; + thethe_9_10_N : N ; + thethelelo_9_10_N : N ; + thetho_3_4_N : N ; + thethosisekelo_3_4_N : N ; + thethosivivinywa_3_4_N : N ; + thi_11_10_N : N ; + thi_14_N : N ; + thi_3_4_N : N ; + thibhathi_5_6_N : N ; + thikamezo_7_N : N ; + thiki_9_10_N : N ; + thikithi_11_10_N : N ; + thikithi_5_6_N : N ; + thilomu_5_6_N : N ; + thimba_3_4_N : N ; + thimba_5_6_N : N ; + thina_14_N : N ; + thingo_11_10_N : N ; + thini_3_4_N : N ; + thini_5_6_N : N ; + thinta_5_6_N : N ; + thintane_5_6_N : N ; + thinti_5_6_N : N ; + thinti_7_8_N : N ; + thiphilizi_7_8_N : N ; + thishela_14_N : N ; + thisipuni_5_6_N : N ; + thithibala_7_8_N : N ; + thithithi_7_8_N : N ; + thixo_7_8_N : N ; + thiyo_7_8_N : N ; + tho_11_N : N ; + tho_11_10_N : N ; + tho_7_8_N : N ; + tho_9_10_N : N ; + thobeko_9_N : N ; + thofontofo_9_10_N : N ; + thohlongwana_7_8_N : N ; + thokazi_11_10_N : N ; + thokazi_7_8_N : N ; + thokazi_9_10_N : N ; + thokomalo_9_10_N : N ; + thokozo_9_N : N ; + thokozo_9_10_N : N ; + thola_5_6_N : N ; + thola_9_10_N : N ; + tholampilo_3_4_N : N ; + thole_3_4_N : N ; + thole_5_6_N : N ; + thole_7_8_N : N ; + tholi_1_2_N : N ; + tholo_3_4_N : N ; + thombe_3_4_N : N ; + thombe_7_8_N : N ; + thombi_9_10_N : N ; + thombo_3_4_N : N ; + thombo_7_8_N : N ; + thombonkala_5_N : N ; + thombothi_3_4_N : N ; + thondo_3_4_N : N ; + thondolo_9_10_N : N ; + thonga_9_10_N : N ; + thongo_14_N : N ; + thongo_5_6_N : N ; + thongo_7_8_N : N ; + thonjana_9_10_N : N ; + thonsela_3_4_N : N ; + thonsi_5_6_N : N ; + thontela_9_10_N : N ; + thonto_7_8_N : N ; + thonya_5_N : N ; + thoshi_5_6_N : N ; + thotho_11_10_N : N ; + thothobala_7_8_N : N ; + thothololo_9_10_N : N ; + thuba_5_6_N : N ; + thuba_7_8_N : N ; + thuba_9_10_N : N ; + thube_5_6_N : N ; + thubi_3_N : N ; + thukela_11_N : N ; + thukuthelo_9_N : N ; + thukuthuku_7_8_N : N ; + thuli_11_10_N : N ; + thulu_7_8_N : N ; + thuluzi_5_6_N : N ; + thulwa_5_6_N : N ; + thuma_3_4_N : N ; + thumba_5_6_N : N ; + thumbanja_7_8_N : N ; + thumbi_1_2_N : N ; + thumbu_11_10_N : N ; + thumbu_14_N : N ; + thumbu_3_N : N ; + thumbu_5_6_N : N ; + thumela_3_4_N : N ; + thuna_5_6_N : N ; + thunga_5_6_N : N ; + thungo_11_10_N : N ; + thungo_3_4_N : N ; + thungu_7_8_N : N ; + thungulu_3_4_N : N ; + thungwa_9_10_N : N ; + thunjwa_1_2_N : N ; + thunjwa_7_8_N : N ; + thuntu_14_N : N ; + thunywa_1_2_N : N ; + thunywa_7_8_N : N ; + thunzi_3_4_N : N ; + thunzi_5_6_N : N ; + thunzi_7_8_N : N ; + thupha_11_10_N : N ; + thupha_6_N : N ; + thupha_7_8_N : N ; + thuqasana_11_10_N : N ; + thuqu_3_4_N : N ; + thusi_5_6_N : N ; + thutha_14_N : N ; + thutha_7_8_N : N ; + thuthu_11_N : N ; + thuthu_14_N : N ; + thuthu_9_10_N : N ; + thuthuva_11_10_N : N ; + thwa_7_8_N : N ; + thwali_1_2_N : N ; + thwalo_3_4_N : N ; + thwalume_3_N : N ; + thwasa_5_6_N : N ; + thwasahlobo_9_N : N ; + thwathwa_7_N : N ; + thwayithwayi_11_10_N : N ; + thwazi_3_4_N : N ; + thwishi_5_6_N : N ; + tibili_7_8_N : N ; + tifiketi_7_8_N : N ; + tilobho_7_8_N : N ; + tilogo_5_6_N : N ; + tilongo_5_6_N : N ; + timela_7_8_N : N ; + timu_7_8_N : N ; + tini_7_8_N : N ; + tiye_5_6_N : N ; + tobo_7_8_N : N ; + tofe_11_N : N ; + tofu_7_8_N : N ; + toho_5_6_N : N ; + tokwe_7_8_N : N ; + tolo_7_8_N : N ; + tolotolo_7_8_N : N ; + toti_3_N : N ; + tsha_3_4_N : N ; + tsha_7_8_N : N ; + tsha_9_N : N ; + tshakaza_9_10_N : N ; + tshali_1_2_N : N ; + tshali_5_6_N : N ; + tshalo_7_8_N : N ; + tshalo_8_N : N ; + tshani_14_N : N ; + tshe_5_6_N : N ; + tsheke_11_N : N ; + tsheketshe_5_6_N : N ; + tsheko_3_4_N : N ; + tshensi_5_6_N : N ; + tshezi_3_4_N : N ; + tshiki_3_N : N ; + tshilo_5_6_N : N ; + tshingo_3_4_N : N ; + tshisekelo_9_N : N ; + tshitshi_5_6_N : N ; + tshiyo_5_6_N : N ; + tshobe_5_6_N : N ; + tshoko_11_10_N : N ; + tshonalanga_5_N : N ; + tshudeni_7_8_N : N ; + tshumayelo_9_10_N : N ; + tshumentshu_9_10_N : N ; + tshwala_14_N : N ; + tshwala_6_N : N ; + tshwele_5_6_N : N ; + tswayi_5_N : N ; + tuba_11_10_N : N ; + tubesi_5_6_N : N ; + tulo_7_8_N : N ; + tulu_7_8_N : N ; + tulwa_5_6_N : N ; + twa_11_10_N : N ; + twayi_11_N : N ; + twetwe_5_N : N ; + -- ulu_1_6_N : N ; + ulu_5_N : N ; + ulu_7_N : N ; + ulu_7_8_N : N ; + una_5_N : N ; + uthu_7_8_N : N ; + va_3_4_N : N ; + va_5_6_N : N ; + vaba_9_10_N : N ; + vaka_14_N : N ; + vaka_5_6_N : N ; + vakashi_7_8_N : N ; + vakazi_9_10_N : N ; + valo_11_10_N : N ; + valo_7_8_N : N ; + vama_9_10_N : N ; + vamisa_9_N : N ; + vana_9_10_N : N ; + vande_7_8_N : N ; + vange_9_N : N ; + vangeli_1_2_N : N ; + vangeli_5_6_N : N ; + vanzi_11_N : N ; + vava_11_10_N : N ; + ve_11_10_N : N ; + velakancane_5_6_N : N ; + velaphi_9_N : N ; + velinqangi_1_N : N ; + velivelayo_1_2_N : N ; + velo_9_10_N : N ; + vemvane_11_10_N : N ; + vemvane_9_10_N : N ; + vemve_3_4_N : N ; + venge_5_6_N : N ; + veni_5_6_N : N ; + vesi_5_6_N : N ; + veyili_5_6_N : N ; + veza_7_8_N : N ; + vi_11_10_N : N ; + vi_3_4_N : N ; + vi_5_6_N : N ; + vidiyo_5_6_N : N ; + vikeli_1_2_N : N ; + viki_5_6_N : N ; + viki_9_10_N : N ; + vila_14_N : N ; + vila_5_6_N : N ; + vili_11_N : N ; + vimba_14_N : N ; + vimba_9_10_N : N ; + vimbe_9_10_N : N ; + vimbela_5_6_N : N ; + vimbi_3_4_N : N ; + vini_11_N : N ; + vinini_7_8_N : N ; + vithi_9_10_N : N ; + vivane_7_8_N : N ; + vivi_11_N : N ; + vivi_7_N : N ; + vivinyo_7_8_N : N ; + viyo_3_4_N : N ; + viyo_5_6_N : N ; + vo_11_N : N ; + vo_3_4_N : N ; + vo_5_6_N : N ; + vokwana_11_10_N : N ; + vokwane_11_10_N : N ; + volovolo_5_6_N : N ; + voti_5_6_N : N ; + vovo_5_6_N : N ; + vu_11_10_N : N ; + vu_9_10_N : N ; + vubelo_9_10_N : N ; + vubu_9_10_N : N ; + vuka_5_6_N : N ; + vukazi_9_10_N : N ; + vula_5_6_N : N ; + vula_9_10_N : N ; + vuma_3_4_N : N ; + vuma_9_10_N : N ; + vume_9_10_N : N ; + vumeli_1_2_N : N ; + vumelwana_7_8_N : N ; + vumelwano_7_8_N : N ; + vumi_1_2_N : N ; + vumi_9_10_N : N ; + vundlo_3_4_N : N ; + vundo_9_10_N : N ; + vunga_9_N : N ; + vunge_3_4_N : N ; + vunge_9_N : N ; + vunguvungu_7_8_N : N ; + vuni_1_2_N : N ; + vunulo_9_10_N : N ; + vuselelo_9_10_N : N ; + vusi_1_2_N : N ; + vuso_5_6_N : N ; + vutha_5_6_N : N ; + vuthu_3_4_N : N ; + vuthu_9_10_N : N ; + vuthuluka_9_10_N : N ; + vuthuthu_11_10_N : N ; + vuthwa_5_6_N : N ; + vuthwamini_3_4_N : N ; + vuvu_7_8_N : N ; + vuzane_3_4_N : N ; + vuzo_3_4_N : N ; + wa_5_6_N : N ; + wa_7_8_N : N ; + waba_5_6_N : N ; + waca_11_10_N : N ; + wadi_5_6_N : N ; + wahlawahla_14_N : N ; + waka_5_6_N : N ; + wala_6_N : N ; + wamba_11_10_N : N ; + wamba_5_6_N : N ; + wangala_11_10_N : N ; + wanqa_5_6_N : N ; + waphu_5_6_N : N ; + washi_5_6_N : N ; + wathanga_5_6_N : N ; + wati_7_8_N : N ; + wawa_5_6_N : N ; + wayini_5_6_N : N ; + wazi_5_6_N : N ; + wela_5_6_N : N ; + wele_5_6_N : N ; + welewele_14_N : N ; + weseli_14_N : N ; + weseli_5_6_N : N ; + wezi_5_6_N : N ; + widi_5_6_N : N ; + windi_5_6_N : N ; + wisa_5_6_N : N ; + wohlo_7_8_N : N ; + woma_5_6_N : N ; + wombe_5_6_N : N ; + wombe_7_8_N : N ; + wonga_5_6_N : N ; + wonke_11_N : N ; + wowane_3_4_N : N ; + wozawoza_5_6_N : N ; + wuba_5_6_N : N ; + wudlu_5_6_N : N ; + wula_14_N : N ; + wula_7_8_N : N ; + wundlu_5_6_N : N ; + xa_5_6_N : N ; + xazululo_7_8_N : N ; + xebe_7_8_N : N ; + xha_7_8_N : N ; + xhafuxhafu_14_N : N ; + xhaka_3_4_N : N ; + xhala_5_6_N : N ; + xhama_5_6_N : N ; + xhanti_7_8_N : N ; + xhaphaxhapha_5_6_N : N ; + xhaphozi_5_6_N : N ; + xhasi_1_2_N : N ; + xhaso_3_4_N : N ; + xhaxha_11_N : N ; + xhegu_5_6_N : N ; + xhiba_5_6_N : N ; + xhiliba_3_4_N : N ; + xhobo_7_8_N : N ; + xhokovu_5_6_N : N ; + xhumanisi_1_2_N : N ; + xhumo_7_8_N : N ; + xhwala_5_N : N ; + xhwanguxhwangu_7_8_N : N ; + xhwele_3_N : N ; + xobho_5_6_N : N ; + xokoxoko_14_N : N ; + xola_5_6_N : N ; + xolo_11_N : N ; + xolo_5_6_N : N ; + xoxi_1_2_N : N ; + xoxo_5_6_N : N ; + xoxo_9_10_N : N ; + xuku_7_8_N : N ; + xwexwe_7_8_N : N ; + ya_5_6_N : N ; + yaba_11_10_N : N ; + yaca_11_N : N ; + yafu_11_N : N ; + yakatho_5_N : N ; + yala_5_6_N : N ; + yalelo_3_4_N : N ; + yalelo_7_8_N : N ; + yalezo_3_4_N : N ; + yalo_3_4_N : N ; + yalo_7_8_N : N ; + yalu_11_10_N : N ; + yaluyalu_7_8_N : N ; + yambazi_5_6_N : N ; + ye_5_6_N : N ; + yeke_7_8_N : N ; + yekelo_11_N : N ; + yeko_3_4_N : N ; + yembe_5_6_N : N ; + yena_11_N : N ; + yena_7_N : N ; + yenda_5_6_N : N ; + yende_5_6_N : N ; + yengo_11_10_N : N ; + yeni_1_2_N : N ; + yesi_5_6_N : N ; + yeza_5_6_N : N ; + yezane_3_4_N : N ; + yezi_5_6_N : N ; + yezi_7_8_N : N ; + yiba_11_N : N ; + yika_5_6_N : N ; + yiko_5_6_N : N ; + yingelezi_7_8_N : N ; + yingilizi_7_8_N : N ; + yocu_3_4_N : N ; + yoyo_7_8_N : N ; + yunithi_5_6_N : N ; + yunivesithi_5_6_N : N ; + za_11_10_N : N ; + za_5_6_N : N ; + za_7_8_N : N ; + zabalazo_3_4_N : N ; + zala_1_2_N : N ; + zala_3_4_N : N ; + zala_5_6_N : N ; + zali_1_2_N : N ; + zalo_11_N : N ; + zalo_9_10_N : N ; + zalwane_1_2_N : N ; + zambane_5_6_N : N ; + zamo_3_4_N : N ; + zane_3_4_N : N ; + zansi_1_2_N : N ; + zansi_3_N : N ; + zansi_5_6_N : N ; + zansi_9_N : N ; + zanyana_1_2_N : N ; + zathu_7_8_N : N ; + zathula_9_10_N : N ; + zazi_14_N : N ; + ze_14_N : N ; + ze_5_6_N : N ; + zece_9_10_N : N ; + zekeliso_3_4_N : N ; + zele_14_N : N ; + zele_5_6_N : N ; + zema_9_10_N : N ; + zemazema_7_8_N : N ; + zembe_5_6_N : N ; + zenze_5_6_N : N ; + zenze_7_8_N : N ; + zeze_5_6_N : N ; + zi_11_N : N ; + zi_3_4_N : N ; + zi_7_N : N ; + ziba_7_8_N : N ; + zibe_9_10_N : N ; + zibuko_5_6_N : N ; + zibulo_5_6_N : N ; + ziko_5_6_N : N ; + ziko_7_8_N : N ; + zila_3_4_N : N ; + zilo_5_6_N : N ; + zilo_9_N : N ; + zimba_3_4_N : N ; + zimba_5_6_N : N ; + zime_11_10_N : N ; + zimu_5_6_N : N ; + zimuzimu_5_6_N : N ; + zinda_7_8_N : N ; + zindlo_3_4_N : N ; + zinga_5_6_N : N ; + zinga_9_10_N : N ; + zingathi_5_6_N : N ; + zingeli_1_2_N : N ; + zinyane_5_6_N : N ; + zinyathi_3_N : N ; + zinyo_5_6_N : N ; + zipho_11_10_N : N ; + zipho_5_6_N : N ; + ziyoni_14_N : N ; + zizi_5_6_N : N ; + zo_3_4_N : N ; + zobe_7_8_N : N ; + zolo_11_N : N ; + zolo_5_6_N : N ; + zondo_3_4_N : N ; + zondo_9_10_N : N ; + zuko_3_4_N : N ; + zukulu_1_2_N : N ; + zukulu_7_8_N : N ; + zukulwana_7_8_N : N ; + zukulwane_7_8_N : N ; + zukuzuku_3_4_N : N ; + zulu_14_N : N ; + zulu_3_N : N ; + zulu_5_N : N ; + zululwane_9_10_N : N ; + zungu_11_10_N : N ; + zungu_7_N : N ; + zungulu_3_4_N : N ; + zuzo_3_4_N : N ; + zuzo_9_10_N : N ; + zuzu_3_4_N : N ; + zuzwana_3_4_N : N ; + zwa_11_10_N : N ; + zwa_3_4_N : N ; + zwa_9_10_N : N ; + zwabethi_9_10_N : N ; + zwambuzwambu_11_10_N : N ; + zwangedwa_3_4_N : N ; + zwani_11_10_N : N ; + zwani_5_6_N : N ; + zwathi_11_10_N : N ; + zwe_14_N : N ; + zwe_5_6_N : N ; + zwe_7_8_N : N ; + zwekufa_5_6_N : N ; + zwela_11_N : N ; + zwelo_11_N : N ; + zwelo_3_4_N : N ; + zwelonke_5_N : N ; + zwi_5_6_N : N ; + zwibela_5_6_N : N ; + zwilili_3_4_N : N ; + + -- diminutives + agana_7_8_N : N ; + agidlana_7_8_N : N ; + alukazana_7_8_N : N ; + andlana_7_8_N : N ; + andlwana_7_8_N : N ; + badlana_3_4_N : N ; + balana_3_4_N : N ; + bana_1a_2a_N : N ; + bangana_5_6_N : N ; + banganeni_5_6_N : N ; + bazwana_9_10_N : N ; + bekelana_7_8_N : N ; + benjana_11_10_N : N ; + bhakwaneni_5_6_N : N ; + bhanjana_5_6_N : N ; + bhansana_5_6_N : N ; + bhaxana_5_6_N : N ; + bhayana_5_6_N : N ; + bhekana_1_2_N : N ; + bhekana_5_6_N : N ; + bheshwana_5_6_N : N ; + bhodlelana_5_6_N : N ; + bhukwana_11_10_N : N ; + bhukwana_5_6_N : N ; + bhukwaneni_5_6_N : N ; + bhulohwana_5_6_N : N ; + bhulukwana_5_6_N : N ; + bhungwana_5_6_N : N ; + bhunywana_7_8_N : N ; + binjana_7_8_N : N ; + bizana_9_10_N : N ; + bomvana_5_6_N : N ; + bonisana_1_2_N : N ; + botshaneni_3_4_N : N ; + boyana_11_N : N ; + bukana_5_6_N : N ; + bukwana_7_8_N : N ; + bushwana_5_6_N : N ; + buzana_5_6_N : N ; + buzana_9_10_N : N ; + cabangwana_3_4_N : N ; + cajana_7_8_N : N ; + cana_7_8_N : N ; + canyana_9_10_N : N ; + cathulwana_7_8_N : N ; + cengezana_3_4_N : N ; + cezwana_11_10_N : N ; + chachazwana_3_4_N : N ; + chakijana_1a_2a_N : N ; + chaphazana_5_6_N : N ; + chidlwana_3_4_N : N ; + chitshana_5_6_N : N ; + cishana_9_10_N : N ; + conjwana_3_4_N : N ; + cosana_9_10_N : N ; + cozana_9_10_N : N ; + cudlwana_5_6_N : N ; + cwana_3_4_N : N ; + dadlana_3_4_N : N ; + dadlana_9_10_N : N ; + dana_11_N : N ; + datshana_11_10_N : N ; + datshana_9_10_N : N ; + detshana_9_10_N : N ; + dibilishana_9_10_N : N ; + dikiselwana_7_8_N : N ; + dilingana_9_10_N : N ; + dishana_9_10_N : N ; + dishaneni_9_10_N : N ; + dlakadlakana_5_6_N : N ; + dlana_11_N : N ; + dlana_7_8_N : N ; + dlanzana_5_6_N : N ; + dledlana_11_10_N : N ; + dledlana_9_10_N : N ; + dletshana_5_6_N : N ; + dletshana_9_10_N : N ; + dlolwana_1a_2a_N : N ; + dodana_9_6_N : N ; + dodaneni_9_6_N : N ; + dombolwana_5_6_N : N ; + dongwana_11_N : N ; + donsana_7_8_N : N ; + doshaneni_5_6_N : N ; + dudana_11_10_N : N ; + dukwana_11_10_N : N ; + dukwana_9_10_N : N ; + dunjana_7_8_N : N ; + dunyana_5_6_N : N ; + dunyana_9_10_N : N ; + dutshana_3_4_N : N ; + dwalana_5_6_N : N ; + dwana_1a_2a_N : N ; + dwana_5_6_N : N ; + dwana_9_10_N : N ; + ehlukwana_3_4_N : N ; + fakazana_14_N : N ; + fana_11_10_N : N ; + fana_1_2_N : N ; + fana_5_6_N : N ; + fana_7_8_N : N ; + fana_9_10_N : N ; + fanyana_1_2_N : N ; + fasitelana_5_6_N : N ; + fokazana_1_2_N : N ; + fokozaneni_5_6_N : N ; + fothongwaneni_7_8_N : N ; + fudlana_3_4_N : N ; + fudlaneni_3_4_N : N ; + funjwana_9_10_N : N ; + funzana_1_2_N : N ; + fuqulwana_3_4_N : N ; + fushana_5_6_N : N ; + futshana_7_8_N : N ; + futshaneni_7_8_N : N ; + gadlwana_9_10_N : N ; + gagana_9_10_N : N ; + gajana_9_10_N : N ; + gana_5_6_N : N ; + ganyana_9_10_N : N ; + gatshana_5_6_N : N ; + gatshana_7_8_N : N ; + gegana_7_8_N : N ; + geqelana_5_6_N : N ; + gojana_7_8_N : N ; + gojwana_11_10_N : N ; + goqwana_5_6_N : N ; + gosana_9_10_N : N ; + gqokwana_7_8_N : N ; + gqunyana_5_6_N : N ; + gqunyaneni_5_6_N : N ; + gujana_7_8_N : N ; + gulana_7_8_N : N ; + gutshana_11_10_N : N ; + gwagwana_3_4_N : N ; + gwaqwana_3_4_N : N ; + gwegwana_5_6_N : N ; + gwetshana_5_6_N : N ; + hambelana_7_8_N : N ; + hana_11_10_N : N ; + hana_7_8_N : N ; + hana_9_10_N : N ; + helehelana_5_6_N : N ; + hlahlana_7_8_N : N ; + hlamvana_11_10_N : N ; + hlana_11_10_N : N ; + hlana_14_N : N ; + hlangana_11_10_N : N ; + hlangana_3_4_N : N ; + hlangana_5_6_N : N ; + hlanjana_3_4_N : N ; + hlansana_9_10_N : N ; + hlanyana_3_4_N : N ; + hlashana_3_4_N : N ; + hlashana_5_6_N : N ; + hlashaneni_14_N : N ; + hlatshaneni_3_4_N : N ; + hlayana_5_6_N : N ; + hlazana_3_4_N : N ; + hlokwana_9_10_N : N ; + hlonjana_5_6_N : N ; + hlonyana_5_6_N : N ; + hlotshana_11_10_N : N ; + hlulana_5_6_N : N ; + hlungwana_14_N : N ; + hlwaneni_3_4_N : N ; + hodlwana_3_4_N : N ; + hoshana_3_4_N : N ; + hujana_3_4_N : N ; + hwanqana_5_6_N : N ; + iswana_5_6_N : N ; + jana_5_6_N : N ; + jana_7_8_N : N ; + jazana_5_6_N : N ; + jezana_5_6_N : N ; + jojwana_11_10_N : N ; + jongwana_9_10_N : N ; + julukwana_3_4_N : N ; + junjana_7_8_N : N ; + kanyana_9_10_N : N ; + kashana_9_10_N : N ; + kejana_5_6_N : N ; + kejaneni_5_6_N : N ; + kezwana_9_10_N : N ; + khabethana_5_6_N : N ; + khadlana_5_6_N : N ; + khadlana_7_8_N : N ; + khalwana_11_10_N : N ; + khanjana_5_6_N : N ; + khashana_5_6_N : N ; + khashana_7_8_N : N ; + khathakhathana_5_6_N : N ; + khefana_5_6_N : N ; + khehlana_5_6_N : N ; + khinjana_7_8_N : N ; + khizwana_3_4_N : N ; + khombisana_7_8_N : N ; + khonkwaneni_7_8_N : N ; + khontshwana_3_4_N : N ; + khonyana_14_N : N ; + khonywana_3_4_N : N ; + khosana_14_N : N ; + khosana_9_6_N : N ; + khosanyana_9_6_N : N ; + khudlana_11_10_N : N ; + khudlwana_1a_2a_N : N ; + khukhwana_5_6_N : N ; + khumbuzana_7_8_N : N ; + khutshana_3_4_N : N ; + khwana_7_8_N : N ; + khwanyana_7_8_N : N ; + kodlana_7_8_N : N ; + konyana_9_10_N : N ; + konyaneni_9_10_N : N ; + kosana_9_6_N : N ; + kotshana_5_6_N : N ; + kulana_5_6_N : N ; + kunzana_9_10_N : N ; + lana_1a_2a_N : N ; + landelana_1_2_N : N ; + lenzana_3_4_N : N ; + lidlwana_3_4_N : N ; + lilwana_3_4_N : N ; + lingana_7_8_N : N ; + lingwana_7_8_N : N ; + lonyana_3_4_N : N ; + loshana_3_4_N : N ; + loyana_11_N : N ; + lukulukwana_5_6_N : N ; + lungana_5_6_N : N ; + lutshana_7_8_N : N ; + lwaneni_7_8_N : N ; + lwanyana_7_8_N : N ; + madevana_1a_2a_N : N ; + madlana_9_10_N : N ; + makwana_7_8_N : N ; + malukazana_1a_2a_N : N ; + mana_11_N : N ; + mayelana_5_6_N : N ; + mbana_1_2_N : N ; + mbanjana_11_10_N : N ; + mbazana_9_10_N : N ; + melana_1_2_N : N ; + memezana_3_4_N : N ; + mfimfana_9_10_N : N ; + mishana_5_6_N : N ; + mkhudlwana_1a_2a_N : N ; + mnanjana_1a_2a_N : N ; + mpana_9_10_N : N ; + mponjwana_9_10_N : N ; + mpushana_9_10_N : N ; + ncanyana_5_6_N : N ; + ncwajana_9_10_N : N ; + ndana_11_N : N ; + ndawana_5_6_N : N ; + ndawana_9_10_N : N ; + ndawaneni_9_10_N : N ; + ndinyana_7_8_N : N ; + ndinyana_9_10_N : N ; + ndlana_5_6_N : N ; + ndledlana_1a_2a_N : N ; + ndlwana_9_10_N : N ; + ndlwaneni_9_10_N : N ; + nenjana_5_6_N : N ; + nganekwaneni_9_10_N : N ; + nganeni_7_8_N : N ; + nganyana_1_2_N : N ; + nganyana_9_10_N : N ; + ngconywana_14_N : N ; + ngqofana_9_10_N : N ; + ngutshana_9_10_N : N ; + ngwaneni_5_6_N : N ; + nhlana_9_10_N : N ; + nikinikana_5_6_N : N ; + ningana_3_4_N : N ; + ningana_9_10_N : N ; + niningwaneni_3_4_N : N ; + njana_9_10_N : N ; + nkondlwana_9_10_N : N ; + nkosana_9_10_N : N ; + nkotshana_9_10_N : N ; + nkulungwaneni_9_10_N : N ; + nkwana_7_8_N : N ; + novelana_5_6_N : N ; + nqana_7_8_N : N ; + nqinyana_3_4_N : N ; + nqodlana_9_10_N : N ; + nqonjwaneni_5_6_N : N ; + nqwatshana_9_10_N : N ; + nsinjana_9_10_N : N ; + nsizwana_9_10_N : N ; + ntana_14_N : N ; + ntatshana_9_10_N : N ; + ntenjana_9_10_N : N ; + ntolibhantshana_9_10_N : N ; + ntombazanyana_5_6_N : N ; + ntonjwana_1a_2a_N : N ; + ntshetshana_9_10_N : N ; + ntuthwanyana_9_10_N : N ; + ntwanyana_1_2_N : N ; + nyakana_3_4_N : N ; + nyamanyana_9_10_N : N ; + nyana_11_N : N ; + nyana_1a_2a_N : N ; + nyana_7_8_N : N ; + nyangana_9_10_N : N ; + nyawana_11_10_N : N ; + nzana_5_6_N : N ; + nzinyana_7_8_N : N ; + omlonyana_3_4_N : N ; + ongwana_7_8_N : N ; + oyana_14_N : N ; + oyana_3_4_N : N ; + pahlana_9_10_N : N ; + pandlana_9_10_N : N ; + panjana_9_10_N : N ; + pawana_11_10_N : N ; + phalishana_5_6_N : N ; + phana_5_6_N : N ; + phandlana_7_8_N : N ; + phangelana_5_6_N : N ; + phaselana_5_6_N : N ; + phefana_7_8_N : N ; + phefumudlwana_3_4_N : N ; + phelekezelana_1_2_N : N ; + pheshana_5_6_N : N ; + phithana_5_6_N : N ; + phongwana_7_8_N : N ; + phonjwana_11_10_N : N ; + phothana_5_6_N : N ; + phukuphukwana_7_8_N : N ; + phukwana_7_8_N : N ; + phunzana_7_8_N : N ; + phushana_5_6_N : N ; + phushwana_5_6_N : N ; + pikilana_7_8_N : N ; + pikwana_11_10_N : N ; + pofana_9_10_N : N ; + potimendana_5_6_N : N ; + potimendaneni_5_6_N : N ; + qana_5_6_N : N ; + qandana_5_6_N : N ; + qansana_3_4_N : N ; + qashana_5_6_N : N ; + qelana_5_6_N : N ; + qenjana_5_6_N : N ; + qeshana_7_8_N : N ; + qeshaneni_7_8_N : N ; + qhazana_7_8_N : N ; + qhoshwana_11_10_N : N ; + qhutshana_5_6_N : N ; + qonjwana_3_4_N : N ; + qoqwana_5_6_N : N ; + qulwana_3_4_N : N ; + qwana_7_8_N : N ; + qwenjana_11_10_N : N ; + qweqwana_11_10_N : N ; + sakana_5_6_N : N ; + sana_11_N : N ; + sana_5_6_N : N ; + sebenzana_1_2_N : N ; + sebenzana_3_4_N : N ; + sedlana_3_4_N : N ; + sentshana_5_6_N : N ; + seyidlana_1a_2a_N : N ; + shana_1_2_N : N ; + shayana_1_2_N : N ; + shintshana_1a_2a_N : N ; + shinyana_3_4_N : N ; + shukelana_1a_2a_N : N ; + shungwana_5_6_N : N ; + shuqulwana_7_8_N : N ; + sidlana_3_4_N : N ; + sidlana_7_8_N : N ; + sifana_1a_2a_N : N ; + sinjana_9_10_N : N ; + sinjwana_3_4_N : N ; + sizana_9_10_N : N ; + sondelana_1a_2a_N : N ; + songwana_5_6_N : N ; + sukwana_11_10_N : N ; + sukwana_3_4_N : N ; + sukwaneni_14_N : N ; + sulubezana_5_6_N : N ; + sushwana_11_10_N : N ; + swana_7_8_N : N ; + tafulana_5_6_N : N ; + tafulaneni_5_6_N : N ; + tana_9_10_N : N ; + tanjana_11_10_N : N ; + tanjana_9_10_N : N ; + tekentekana_9_10_N : N ; + teshana_7_8_N : N ; + teshana_9_10_N : N ; + thakashana_1_2_N : N ; + thana_11_N : N ; + thana_14_N : N ; + thana_3_4_N : N ; + thandana_1_2_N : N ; + thanjana_5_6_N : N ; + thanyana_3_4_N : N ; + thathana_11_10_N : N ; + thenjana_5_6_N : N ; + theshwana_3_4_N : N ; + thethana_5_6_N : N ; + thetshana_7_8_N : N ; + thintana_5_6_N : N ; + thintana_7_8_N : N ; + thiphilizana_7_8_N : N ; + thodlana_5_6_N : N ; + tholana_5_6_N : N ; + thongwana_7_8_N : N ; + thonjana_7_8_N : N ; + thonjaneni_3_4_N : N ; + thonselana_3_4_N : N ; + thoyilethe_5_6_N : N ; + thudlana_11_10_N : N ; + thungana_5_6_N : N ; + thunjana_11_10_N : N ; + thunjana_14_N : N ; + thunzana_3_4_N : N ; + thunzana_5_6_N : N ; + thunzana_7_8_N : N ; + thutshana_5_6_N : N ; + thwadlana_1_2_N : N ; + todlwana_7_8_N : N ; + tofana_11_N : N ; + tonjana_9_10_N : N ; + tshana_5_6_N : N ; + tshana_7_8_N : N ; + tshana_9_10_N : N ; + tshekwana_3_4_N : N ; + tshitshana_5_6_N : N ; + tudlwana_7_8_N : N ; + twana_11_10_N : N ; + ubhekana_1a_2a_N : N ; + udlwana_7_8_N : N ; + ufana_1a_2a_N : N ; + vadlwana_11_10_N : N ; + vakana_5_6_N : N ; + valwana_11_10_N : N ; + vana_3_4_N : N ; + vana_9_10_N : N ; + vivaneni_7_8_N : N ; + vukazana_9_10_N : N ; + vumelana_1_2_N : N ; + vungana_9_10_N : N ; + xhaphozana_5_6_N : N ; + xhokovana_5_6_N : N ; + xhokovaneni_5_6_N : N ; + xoxwana_5_6_N : N ; + yafana_11_N : N ; + yana_5_6_N : N ; + yenjana_5_6_N : N ; + yoywana_7_8_N : N ; + zana_14_N : N ; + zana_3_4_N : N ; + zana_7_8_N : N ; + zansana_5_6_N : N ; + zansana_9_10_N : N ; + zanyana_3_4_N : N ; + zibukwana_5_6_N : N ; + zilana_3_4_N : N ; + zinjana_3_4_N : N ; + zinyanyana_5_6_N : N ; + zukulwaneni_7_8_N : N ; + zukwana_3_4_N : N ; + zuzwana_3_4_N : N ; + zwana_11_10_N : N ; + zwana_5_6_N : N ; + zwana_7_8_N : N ; + zwaneni_11_10_N : N ; + zwaneni_14_N : N ; + + -- 1a_2a + Bhebhe_1a_2a_N : N ; +Bhekifa_1a_2a_N : N ; +Bonginkosi_1a_2a_N : N ; +Botha_1a_2a_N : N ; +Buhlalu_1a_2a_N : N ; +Busisiwe_1a_2a_N : N ; +Buthelezi_1a_2a_N : N ; +Cele_1a_2a_N : N ; +Dingane_1a_2a_N : N ; +Disemba_1a_2a_N : N ; +Dlamini_1a_2a_N : N ; +Dube_1a_2a_N : N ; +Duma_1a_2a_N : N ; +Elizabeth_1a_2a_N : N ; +Fikile_1a_2a_N : N ; +Goba_1a_2a_N : N ; +Godongwane_1a_2a_N : N ; +Gumede_1a_2a_N : N ; +Gwala_1a_2a_N : N ; +Hlathi_1a_2a_N : N ; +Hlela_1a_2a_N : N ; +Hlengiwe_1a_2a_N : N ; +Hlengwa_1a_2a_N : N ; +Hlophe_1a_2a_N : N ; +Ina_1a_2a_N : N ; +Jabulani_1a_2a_N : N ; +Jama_1a_2a_N : N ; +Januwari_1a_2a_N : N ; +John_1a_2a_N : N ; +Jordaan_1a_2a_N : N ; +Julayi_1a_2a_N : N ; +Juni_1a_2a_N : N ; +Khahlamba_1a_2a_N : N ; +Khanyile_1a_2a_N : N ; +Khisimusi_1a_2a_N : N ; +Khoza_1a_2a_N : N ; +Khwela_1a_2a_N : N ; +Kubheka_1a_2a_N : N ; +Kufa_1a_2a_N : N ; +Kunene_1a_2a_N : N ; +Linda_1a_2a_N : N ; +Lindiwe_1a_2a_N : N ; +Lubambo_1a_2a_N : N ; +Lungelo_1a_2a_N : N ; +Luthuli_1a_2a_N : N ; +Lwesibili_1a_2a_N : N ; +Lwesihlanu_1a_2a_N : N ; +Lwesine_1a_2a_N : N ; +Lwesithathu_1a_2a_N : N ; +Mabuza_1a_2a_N : N ; +Mahlaba_1a_2a_N : N ; +Mahlangu_1a_2a_N : N ; +Malandela_1a_2a_N : N ; +Malinga_1a_2a_N : N ; +Malungu_1a_2a_N : N ; +Manyosi_1a_2a_N : N ; +Manzini_1a_2a_N : N ; +Maseko_1a_2a_N : N ; +Masondo_1a_2a_N : N ; +Masuku_1a_2a_N : N ; +Mavimbela_1a_2a_N : N ; +Mazibuko_1a_2a_N : N ; +Mbatha_1a_2a_N : N ; +Mbeki_1a_2a_N : N ; +Mbethe_1a_2a_N : N ; +Mbonambi_1a_2a_N : N ; +Mdletshe_1a_2a_N : N ; +Mduduzi_1a_2a_N : N ; +Menzi_1a_2a_N : N ; +Meyi_1a_2a_N : N ; +Mgidi_1a_2a_N : N ; +Mgungundlovu_1a_2a_N : N ; +Mhlanga_1a_2a_N : N ; +Mike_1a_2a_N : N ; +Mlambo_1a_2a_N : N ; +Mndeni_1a_2a_N : N ; +Mngoma_1a_2a_N : N ; +Mpendulo_1a_2a_N : N ; +Mpilo_1a_2a_N : N ; +Mpofu_1a_2a_N : N ; +Mpucuko_1a_2a_N : N ; +Mpumelelo_1a_2a_N : N ; +Mqondisi_1a_2a_N : N ; +Mshumayeli_1a_2a_N : N ; +Msombuluko_1a_2a_N : N ; +Msomi_1a_2a_N : N ; +Mtshali_1a_2a_N : N ; +Myeza_1a_2a_N : N ; +Mzobe_1a_2a_N : N ; +Nandi_1a_2a_N : N ; +Ndaba_1a_2a_N : N ; +Ndlela_1a_2a_N : N ; +Ndlovu_1a_2a_N : N ; +Ndunankulu_1a_2a_N : N ; +Ngoma_1a_2a_N : N ; +Ngwenya_1a_2a_N : N ; +Nhlabathi_1a_2a_N : N ; +Njabulo_1a_2a_N : N ; +Nkanyezi_1a_2a_N : N ; +Nkomo_1a_2a_N : N ; +Nkosazana_1a_2a_N : N ; +Nkulunkulu_1a_2a_N : N ; +Nokubonga_1a_2a_N : N ; +Nokukhanya_1a_2a_N : N ; +Nokulunga_1a_2a_N : N ; +Nokuthokoza_1a_2a_N : N ; +Nombuso_1a_2a_N : N ; +Nomcebo_1a_2a_N : N ; +Nomthandazo_1a_2a_N : N ; +Nomusa_1a_2a_N : N ; +Novemba_1a_2a_N : N ; +Ntokozo_1a_2a_N : N ; +Ntombenhle_1a_2a_N : N ; +Ntuli_1a_2a_N : N ; +Peter_1a_2a_N : N ; +Phakama_1a_2a_N : N ; +Phakathi_1a_2a_N : N ; +Phapha_1a_2a_N : N ; +Phumelela_1a_2a_N : N ; +Sangweni_1a_2a_N : N ; +Sathane_1a_2a_N : N ; +Senzangakhona_1a_2a_N : N ; +Septemba_1a_2a_N : N ; +Septhemba_1a_2a_N : N ; +Shaka_1a_2a_N : N ; +Sibaya_1a_2a_N : N ; +Sibongile_1a_2a_N : N ; +Sibusiso_1a_2a_N : N ; +Sifiso_1a_2a_N : N ; +Sihle_1a_2a_N : N ; +Sililo_1a_2a_N : N ; +Silwane_1a_2a_N : N ; +Simakade_1a_2a_N : N ; +Sindisiwe_1a_2a_N : N ; +Siphiwe_1a_2a_N : N ; +Sipho_1a_2a_N : N ; +Sithole_1a_2a_N : N ; +Siwela_1a_2a_N : N ; +Siyabonga_1a_2a_N : N ; +Sizamile_1a_2a_N : N ; +Sokhulu_1a_2a_N : N ; +Somandla_1a_2a_N : N ; +Sono_1a_2a_N : N ; +Steve_1a_2a_N : N ; +Thandiwe_1a_2a_N : N ; +Themba_1a_2a_N : N ; +Thembekile_1a_2a_N : N ; +Thokozile_1a_2a_N : N ; +Thulani_1a_2a_N : N ; +Vezi_1a_2a_N : N ; +Vilakazi_1a_2a_N : N ; +Zama_1a_2a_N : N ; +Zanele_1a_2a_N : N ; +Zondo_1a_2a_N : N ; +Zonke_1a_2a_N : N ; +Zulu_1a_2a_N : N ; +Zuma_1a_2a_N : N ; +Zwane_1a_2a_N : N ; +Zwide_1a_2a_N : N ; +akhelwana_1a_2a_N : N ; +akhelwane_1a_2a_N : N ; +alusi_1a_2a_N : N ; +anga_1a_2a_N : N ; +asi_1a_2a_N : N ; +azi_1a_2a_N : N ; +ba_1a_2a_N : N ; +baba_1a_2a_N : N ; +babamkhulu_1a_2a_N : N ; +babe_1a_2a_N : N ; +babekazi_1a_2a_N : N ; +babezala_1a_2a_N : N ; +bambo_1a_2a_N : N ; +bani_1a_2a_N : N ; +banibani_1a_2a_N : N ; +basi_1a_2a_N : N ; +batha_1a_2a_N : N ; +bathini_1a_2a_N : N ; +baya_1a_2a_N : N ; +bebe_1a_2a_N : N ; +bebebe_1a_2a_N : N ; +beki_1a_2a_N : N ; +belejongosi_1a_2a_N : N ; +bendle_1a_2a_N : N ; +bethe_1a_2a_N : N ; +bhadi_1a_2a_N : N ; +bhalane_1a_2a_N : N ; +bhanana_1a_2a_N : N ; +bhasikidi_1a_2a_N : N ; +bhatata_1a_2a_N : N ; +bhebhenene_1a_2a_N : N ; +bhejane_1a_2a_N : N ; +bheka_1a_2a_N : N ; +bhekeni_1a_2a_N : N ; +bheseni_1a_2a_N : N ; +bhici_1a_2a_N : N ; +bhisi_1a_2a_N : N ; +bhontshisi_1a_2a_N : N ; +bhova_1a_2a_N : N ; +bhulube_1a_2a_N : N ; +bhuti_1a_2a_N : N ; +bhuzana_1a_2a_N : N ; +bhuzi_1a_2a_N : N ; +bikibiki_1a_2a_N : N ; +bili_1a_2a_N : N ; +bizo_1a_2a_N : N ; +bombo_1a_2a_N : N ; +bonambi_1a_2a_N : N ; +bopha_1a_2a_N : N ; +busiso_1a_2a_N : N ; +buso_1a_2a_N : N ; +buzi_1a_2a_N : N ; +caca_1a_2a_N : N ; +cambalala_1a_2a_N : N ; +cebo_1a_2a_N : N ; +celemba_1a_2a_N : N ; +cetshwayo_1a_2a_N : N ; +chakide_1a_2a_N : N ; +chakijana_1a_2a_N : N ; +chithi_1a_2a_N : N ; +chwepheshe_1a_2a_N : N ; +ciki_1a_2a_N : N ; +cikicane_1a_2a_N : N ; +cilo_1a_2a_N : N ; +daba_1a_2a_N : N ; +dade_1a_2a_N : N ; +dadewabo_1a_2a_N : N ; +dadewenu_1a_2a_N : N ; +dadewethu_1a_2a_N : N ; +dedangendlale_1a_2a_N : N ; +dingiswayo_1a_2a_N : N ; +dlamini_1a_2a_N : N ; +dlela_1a_2a_N : N ; +dlolo_1a_2a_N : N ; +dlovu_1a_2a_N : N ; +dlovukazi_1a_2a_N : N ; +dokotela_1a_2a_N : N ; +doli_1a_2a_N : N ; +doti_1a_2a_N : N ; +dube_1a_2a_N : N ; +duduzi_1a_2a_N : N ; +dukathole_1a_2a_N : N ; +duma_1a_2a_N : N ; +dwi_1a_2a_N : N ; +enzi_1a_2a_N : N ; +fa_1a_2a_N : N ; +fagolweni_1a_2a_N : N ; +fakazi_1a_2a_N : N ; +faku_1a_2a_N : N ; +fe_1a_2a_N : N ; +feleba_1a_2a_N : N ; +fezela_1a_2a_N : N ; +fo_1a_2a_N : N ; +fu_1a_2a_N : N ; +fulawa_1a_2a_N : N ; +fumba_1a_2a_N : N ; +gabigabi_1a_2a_N : N ; +gada_1a_2a_N : N ; +gadi_1a_2a_N : N ; +galo_1a_2a_N : N ; +gandaganda_1a_2a_N : N ; +gazi_1a_2a_N : N ; +gelegele_1a_2a_N : N ; +gesi_1a_2a_N : N ; +gidi_1a_2a_N : N ; +goba_1a_2a_N : N ; +gogo_1a_2a_N : N ; +gologo_1a_2a_N : N ; +gqayinyanga_1a_2a_N : N ; +guga_1a_2a_N : N ; +gumbeqe_1a_2a_N : N ; +gungundlovu_1a_2a_N : N ; +guqabadele_1a_2a_N : N ; +guqu_1a_2a_N : N ; +gwala_1a_2a_N : N ; +gweva_1a_2a_N : N ; +gxila_1a_2a_N : N ; +hala_1a_2a_N : N ; +hamba_1a_2a_N : N ; +hhafu_1a_2a_N : N ; +hlaba_1a_2a_N : N ; +hlabathi_1a_2a_N : N ; +hlalu_1a_2a_N : N ; +hlanga_1a_2a_N : N ; +hlange_1a_2a_N : N ; +hlangothi_1a_2a_N : N ; +hlathi_1a_2a_N : N ; +hle_1a_2a_N : N ; +hodoba_1a_2a_N : N ; +hulumende_1a_2a_N : N ; +hulumeni_1a_2a_N : N ; +ihlo_1a_2a_N : N ; +jabulo_1a_2a_N : N ; +jamu_1a_2a_N : N ; +jantshi_1a_2a_N : N ; +jazi_1a_2a_N : N ; +jele_1a_2a_N : N ; +jenga_1a_2a_N : N ; +jeqe_1a_2a_N : N ; +jiba_1a_2a_N : N ; +jobe_1a_2a_N : N ; +jodo_1a_2a_N : N ; +jojo_1a_2a_N : N ; +josaka_1a_2a_N : N ; +jubingqwanga_1a_2a_N : N ; +juqu_1a_2a_N : N ; +kandlela_1a_2a_N : N ; +kanina_1a_2a_N : N ; +khahlamba_1a_2a_N : N ; +khala_1a_2a_N : N ; +khali_1a_2a_N : N ; +khambi_1a_2a_N : N ; +khanda_1a_2a_N : N ; +khangela_1a_2a_N : N ; +khanjana_1a_2a_N : N ; +khanyikhanyi_1a_2a_N : N ; +khehle_1a_2a_N : N ; +kheshi_1a_2a_N : N ; +khisimusi_1a_2a_N : N ; +khiye_1a_2a_N : N ; +khokho_1a_2a_N : N ; +kholo_1a_2a_N : N ; +khololo_1a_2a_N : N ; +kholwe_1a_2a_N : N ; +khomo_1a_2a_N : N ; +khonkolo_1a_2a_N : N ; +khosazana_1a_2a_N : N ; +khosi_1a_2a_N : N ; +khosikazi_1a_2a_N : N ; +khothi_1a_2a_N : N ; +khoza_1a_2a_N : N ; +khulu_1a_2a_N : N ; +khuni_1a_2a_N : N ; +khwahla_1a_2a_N : N ; +khweshe_1a_2a_N : N ; +klebe_1a_2a_N : N ; +komkhulu_1a_2a_N : N ; +kopolo_1a_2a_N : N ; +kotshi_1a_2a_N : N ; +kuka_1a_2a_N : N ; +kula_1a_2a_N : N ; +kuwela_1a_2a_N : N ; +la_1a_2a_N : N ; +lambo_1a_2a_N : N ; +lamula_1a_2a_N : N ; +landapense_1a_2a_N : N ; +lilo_1a_2a_N : N ; +lisho_1a_2a_N : N ; +lola_1a_2a_N : N ; +lomo_1a_2a_N : N ; +lova_1a_2a_N : N ; +lunda_1a_2a_N : N ; +lungelo_1a_2a_N : N ; +-- lungu_1a_2a_N : N ; +luthuli_1a_2a_N : N ; +lwandle_1a_2a_N : N ; +lwane_1a_2a_N : N ; +lwesibili_1a_2a_N : N ; +lwesihlanu_1a_2a_N : N ; +lwesine_1a_2a_N : N ; +lwesithathu_1a_2a_N : N ; +lwezi_1a_2a_N : N ; +mabani_1a_2a_N : N ; +mabelejongosi_1a_2a_N : N ; +mabhalane_1a_2a_N : N ; +mabonwa_1a_2a_N : N ; +mabonwabulawe_1a_2a_N : N ; +mabuyaze_1a_2a_N : N ; +madevana_1a_2a_N : N ; +madevu_1a_2a_N : N ; +mafavuke_1a_2a_N : N ; +mafungwase_1a_2a_N : N ; +mahamba_1a_2a_N : N ; +mahlekehlathini_1a_2a_N : N ; +makade_1a_2a_N : N ; +makhanjana_1a_2a_N : N ; +makhelwana_1a_2a_N : N ; +makhelwane_1a_2a_N : N ; +makhukhumesana_1a_2a_N : N ; +makhulu_1a_2a_N : N ; +makhweyana_1a_2a_N : N ; +makoti_1a_2a_N : N ; +malokazana_1a_2a_N : N ; +malukazi_1a_2a_N : N ; +malume_1a_2a_N : N ; +malunda_1a_2a_N : N ; +malusi_1a_2a_N : N ; +mama_1a_2a_N : N ; +mamatheka_1a_2a_N : N ; +mame_1a_2a_N : N ; +mamezala_1a_2a_N : N ; +mana_1a_2a_N : N ; +mananga_1a_2a_N : N ; +mancintshana_1a_2a_N : N ; +mancishana_1a_2a_N : N ; +mancishane_1a_2a_N : N ; +manga_1a_2a_N : N ; +mantindane_1a_2a_N : N ; +manzini_1a_2a_N : N ; +maqanda_1a_2a_N : N ; +maqinase_1a_2a_N : N ; +maqondana_1a_2a_N : N ; +mashiyakukhalwa_1a_2a_N : N ; +masipala_1a_2a_N : N ; +masithela_1a_2a_N : N ; +mathebethebeni_1a_2a_N : N ; +mathunzi_1a_2a_N : N ; +matilasi_1a_2a_N : N ; +matiwane_1a_2a_N : N ; +mbalane_1a_2a_N : N ; +mbombo_1a_2a_N : N ; +mbonambi_1a_2a_N : N ; +mbopha_1a_2a_N : N ; +mbuzana_1a_2a_N : N ; +me_1a_2a_N : N ; +mesisi_1a_2a_N : N ; +miyane_1a_2a_N : N ; +mkabo_1a_2a_N : N ; +mkakhe_1a_2a_N : N ; +mkakho_1a_2a_N : N ; +mkami_1a_2a_N : N ; +mkethu_1a_2a_N : N ; +mkhulu_1a_2a_N : N ; +mnakile_1a_2a_N : N ; +mnakwabo_1a_2a_N : N ; +mnakwethu_1a_2a_N : N ; +mnandi_1a_2a_N : N ; +mnawami_1a_2a_N : N ; +mongameli_1a_2a_N : N ; +mpetha_1a_2a_N : N ; +mpingizane_1a_2a_N : N ; +mpisimpisi_1a_2a_N : N ; +mpofu_1a_2a_N : N ; +mpompi_1a_2a_N : N ; +mpukane_1a_2a_N : N ; +muhle_1a_2a_N : N ; +nakwabo_1a_2a_N : N ; +nakwethu_1a_2a_N : N ; +nanja_1a_2a_N : N ; +nansika_1a_2a_N : N ; +nawami_1a_2a_N : N ; +ndaba_1a_2a_N : N ; +ndabazabantu_1a_2a_N : N ; +ndabezitha_1a_2a_N : N ; +ndasa_1a_2a_N : N ; +ndeni_1a_2a_N : N ; +ndle_1a_2a_N : N ; +ndlele_1a_2a_N : N ; +ndunankulu_1a_2a_N : N ; +ndwandwe_1a_2a_N : N ; +ne_1a_2a_N : N ; +nembe_1a_2a_N : N ; +nene_1a_2a_N : N ; +nesi_1a_2a_N : N ; +nga_1a_2a_N : N ; +ngazi_1a_2a_N : N ; +ngazini_1a_2a_N : N ; +ngcede_1a_2a_N : N ; +ngcingci_1a_2a_N : N ; +ngcwecwe_1a_2a_N : N ; +nginakile_1a_2a_N : N ; +ngiyane_1a_2a_N : N ; +ngoma_1a_2a_N : N ; +ngoti_1a_2a_N : N ; +ngqo_1a_2a_N : N ; +ngqongqoshe_1a_2a_N : N ; +ngubo_1a_2a_N : N ; +nguboziyeweni_1a_2a_N : N ; +nguqunguqu_1a_2a_N : N ; +ngwaqa_1a_2a_N : N ; +nhlangothi_1a_2a_N : N ; +nina_1a_2a_N : N ; +ninalume_1a_2a_N : N ; +ninazala_1a_2a_N : N ; +nkabi_1a_2a_N : N ; +nkamisa_1a_2a_N : N ; +nkombose_1a_2a_N : N ; +nkonka_1a_2a_N : N ; +nkosikazi_1a_2a_N : N ; +nobhala_1a_2a_N : N ; +nobhutshuzwayo_1a_2a_N : N ; +nogada_1a_2a_N : N ; +nogwaja_1a_2a_N : N ; +nolwandle_1a_2a_N : N ; +nomaweni_1a_2a_N : N ; +nomphumela_1a_2a_N : N ; +nomuntu_1a_2a_N : N ; +nondlini_1a_2a_N : N ; +nondwayiza_1a_2a_N : N ; +nongxi_1a_2a_N : N ; +nonina_1a_2a_N : N ; +notha_1a_2a_N : N ; +nowamba_1a_2a_N : N ; +noxhaka_1a_2a_N : N ; +noxhongo_1a_2a_N : N ; +noyi_1a_2a_N : N ; +nozalizingwenya_1a_2a_N : N ; +nozinti_1a_2a_N : N ; +nozondi_1a_2a_N : N ; +nswinswinswi_1a_2a_N : N ; +ntanga_1a_2a_N : N ; +ntembuzane_1a_2a_N : N ; +ntondo_1a_2a_N : N ; +ntu_1a_2a_N : N ; +nukani_1a_2a_N : N ; +nxazonke_1a_2a_N : N ; +nyamanambana_1a_2a_N : N ; +nyanya_1a_2a_N : N ; +nyazi_1a_2a_N : N ; +nyoko_1a_2a_N : N ; +nyokokazi_1a_2a_N : N ; +nyokolume_1a_2a_N : N ; +nyokozala_1a_2a_N : N ; +nyovane_1a_2a_N : N ; +nyube_1a_2a_N : N ; +ongameli_1a_2a_N : N ; +ono_1a_2a_N : N ; +pelepele_1a_2a_N : N ; +pewula_1a_2a_N : N ; +phakama_1a_2a_N : N ; +phakathi_1a_2a_N : N ; +phapha_1a_2a_N : N ; +phefeni_1a_2a_N : N ; +phempethwane_1a_2a_N : N ; +phendulo_1a_2a_N : N ; +phethe_1a_2a_N : N ; +philo_1a_2a_N : N ; +pho_1a_2a_N : N ; +phofu_1a_2a_N : N ; +pholi_1a_2a_N : N ; +pholile_1a_2a_N : N ; +phumela_1a_2a_N : N ; +phumelelo_1a_2a_N : N ; +pondo_1a_2a_N : N ; +popo_1a_2a_N : N ; +qanda_1a_2a_N : N ; +qethu_1a_2a_N : N ; +qhotho_1a_2a_N : N ; +qondisi_1a_2a_N : N ; +qondo_1a_2a_N : N ; +qukula_1a_2a_N : N ; +qwabe_1a_2a_N : N ; +sa_1a_2a_N : N ; +sakazana_1a_2a_N : N ; +sayitsheni_1a_2a_N : N ; +saziwayo_1a_2a_N : N ; +seko_1a_2a_N : N ; +sende_1a_2a_N : N ; +seyili_1a_2a_N : N ; +shaka_1a_2a_N : N ; +shangane_1a_2a_N : N ; +shavu_1a_2a_N : N ; +sheleni_1a_2a_N : N ; +shibedabe_1a_2a_N : N ; +shintshi_1a_2a_N : N ; +shintsho_1a_2a_N : N ; +shisa_1a_2a_N : N ; +shukela_1a_2a_N : N ; +shumayeli_1a_2a_N : N ; +shuwa_1a_2a_N : N ; +shwele_1a_2a_N : N ; +si_1a_2a_N : N ; +sibali_1a_2a_N : N ; +sibanibani_1a_2a_N : N ; +sifa_1a_2a_N : N ; +sihlalo_1a_2a_N : N ; +sikilidi_1a_2a_N : N ; +silandelana_1a_2a_N : N ; +sina_1a_2a_N : N ; +sipho_1a_2a_N : N ; +sisi_1a_2a_N : N ; +sista_1a_2a_N : N ; +sizwile_1a_2a_N : N ; +sobanibani_1a_2a_N : N ; +sobantu_1a_2a_N : N ; +sofa_1a_2a_N : N ; +sokhaya_1a_2a_N : N ; +sokhuni_1a_2a_N : N ; +sokulunga_1a_2a_N : N ; +solwazi_1a_2a_N : N ; +somabhizinisi_1a_2a_N : N ; +somandla_1a_2a_N : N ; +sombuluko_1a_2a_N : N ; +somlomo_1a_2a_N : N ; +sondela_1a_2a_N : N ; +sondo_1a_2a_N : N ; +soshangane_1a_2a_N : N ; +swidi_1a_2a_N : N ; +tamatisi_1a_2a_N : N ; +tana_1a_2a_N : N ; +tate_1a_2a_N : N ; +tebhu_1a_2a_N : N ; +tha_1a_2a_N : N ; +thandazo_1a_2a_N : N ; +thasi_1a_2a_N : N ; +thathu_1a_2a_N : N ; +thayela_1a_2a_N : N ; +thayi_1a_2a_N : N ; +thekwane_1a_2a_N : N ; +thelezi_1a_2a_N : N ; +themba_1a_2a_N : N ; +thisha_1a_2a_N : N ; +thishela_1a_2a_N : N ; +thishomkhulu_1a_2a_N : N ; +thokozo_1a_2a_N : N ; +thole_1a_2a_N : N ; +thulasizwe_1a_2a_N : N ; +thuli_1a_2a_N : N ; +thumbu_1a_2a_N : N ; +thunjana_1a_2a_N : N ; +thupha_1a_2a_N : N ; +thuthu_1a_2a_N : N ; +tiki_1a_2a_N : N ; +tokoloshe_1a_2a_N : N ; +tshali_1a_2a_N : N ; +tshana_1a_2a_N : N ; +velabahleke_1a_2a_N : N ; +vele_1a_2a_N : N ; +vete_1a_2a_N : N ; +vila_1a_2a_N : N ; +vokwane_1a_2a_N : N ; +volo_1a_2a_N : N ; +vulande_1a_2a_N : N ; +vumazonke_1a_2a_N : N ; +wabo_1a_2a_N : N ; +waka_1a_2a_N : N ; +wamba_1a_2a_N : N ; +watela_1a_2a_N : N ; +wawa_1a_2a_N : N ; +wela_1a_2a_N : N ; +wenu_1a_2a_N : N ; +weta_1a_2a_N : N ; +wethu_1a_2a_N : N ; +wula_1a_2a_N : N ; +xamu_1a_2a_N : N ; +xhaphozi_1a_2a_N : N ; +yihlo_1a_2a_N : N ; +yihlomkhulu_1a_2a_N : N ; +yihlozala_1a_2a_N : N ; +yise_1a_2a_N : N ; +yisemkhulu_1a_2a_N : N ; +yisezala_1a_2a_N : N ; +zagiga_1a_2a_N : N ; +zakwabo_1a_2a_N : N ; +zakwenu_1a_2a_N : N ; +zakwethu_1a_2a_N : N ; +zamcolo_1a_2a_N : N ; +zamlandela_1a_2a_N : N ; +zankosi_1a_2a_N : N ; +zavolo_1a_2a_N : N ; +zenzele_1a_2a_N : N ; +zibuko_1a_2a_N : N ; +zibuse_1a_2a_N : N ; +zilile_1a_2a_N : N ; +zozo_1a_2a_N : N ; +zuka_1a_2a_N : N ; +zulu_1a_2a_N : N ; +zwa_1a_2a_N : N ; +zwelonke_1a_2a_N : N ; + + -- verb roots + ab_V : V ; + ab_V2 : V2 ; + aban_V : V ; + aban_V2 : V2 ; + abanelis_V : V ; + abanelis_V2 : V2 ; + abek_V : V ; + abek_V2 : V2 ; + abekel_V : V ; + abekel_V2 : V2 ; + abekelan_V : V ; + abekelan_V2 : V2 ; + abekelel_V : V ; + abekelel_V2 : V2 ; + abel_V : V ; + abel_V2 : V2 ; + abelan_V : V ; + abelan_V2 : V2 ; + abelek_V : V ; + abelek_V2 : V2 ; + abelel_V : V ; + abelel_V2 : V2 ; + abuk_V : V ; + abuk_V2 : V2 ; + abukan_V : V ; + abukan_V2 : V2 ; + abukek_V : V ; + abukek_V2 : V2 ; + abukel_V : V ; + abukel_V2 : V2 ; + abukis_V : V ; + abukis_V2 : V2 ; + abul_V : V ; + abul_V2 : V2 ; + abulel_V : V ; + abulel_V2 : V2 ; + abulis_V : V ; + abulis_V2 : V2 ; + abuz_V : V ; + abuz_V2 : V2 ; + abuzan_V : V ; + abuzan_V2 : V2 ; + abuzisan_V : V ; + abuzisan_V2 : V2 ; + abuzisis_V : V ; + abuzisis_V2 : V2 ; + ahluk_V : V ; + ahluk_V2 : V2 ; + ahlukan_V : V ; + ahlukan_V2 : V2 ; + ahlukanis_V : V ; + ahlukanis_V2 : V2 ; + ahlukanisel_V : V ; + ahlukanisel_V2 : V2 ; + ahlukel_V : V ; + ahlukel_V2 : V2 ; + ahlul_V : V ; + ahlul_V2 : V2 ; + ahlulan_V : V ; + ahlulan_V2 : V2 ; + ahlulek_V : V ; + ahlulek_V2 : V2 ; + ahlulel_V : V ; + ahlulel_V2 : V2 ; + akh_V : V ; + akh_V2 : V2 ; + akhan_V : V ; + akhan_V2 : V2 ; + akhek_V : V ; + akhek_V2 : V2 ; + akhel_V : V ; + akhel_V2 : V2 ; + akhelan_V : V ; + akhelan_V2 : V2 ; + akhis_V : V ; + akhis_V2 : V2 ; + al_V : V ; + al_V2 : V2 ; + alan_V : V ; + alan_V2 : V2 ; + alanel_V : V ; + alanel_V2 : V2 ; + alek_V : V ; + alek_V2 : V2 ; + alekel_V : V ; + alekel_V2 : V2 ; + alekelek_V : V ; + alekelek_V2 : V2 ; + alekelel_V : V ; + alekelel_V2 : V2 ; + alekis_V : V ; + alekis_V2 : V2 ; + alel_V : V ; + alel_V2 : V2 ; + alelis_V : V ; + alelis_V2 : V2 ; + alelisis_V : V ; + alelisis_V2 : V2 ; + alis_V : V ; + alis_V2 : V2 ; + alisan_V : V ; + alisan_V2 : V2 ; + alisel_V : V ; + alisel_V2 : V2 ; + aluk_V : V ; + aluk_V2 : V2 ; + alus_V : V ; + alus_V2 : V2 ; + amb_V : V ; + amb_V2 : V2 ; + amban_V : V ; + amban_V2 : V2 ; + ambanis_V : V ; + ambanis_V2 : V2 ; + ambath_V : V ; + ambath_V2 : V2 ; + ambathek_V : V ; + ambathek_V2 : V2 ; + ambek_V : V ; + ambek_V2 : V2 ; + ambekel_V : V ; + ambekel_V2 : V2 ; + ambel_V : V ; + ambel_V2 : V2 ; + ambelan_V : V ; + ambelan_V2 : V2 ; + ambelel_V : V ; + ambelel_V2 : V2 ; + ambis_V : V ; + ambis_V2 : V2 ; + ambisan_V : V ; + ambisan_V2 : V2 ; + ambuk_V : V ; + ambuk_V2 : V2 ; + ambukel_V : V ; + ambukel_V2 : V2 ; + ambul_V : V ; + ambul_V2 : V2 ; + ambulel_V : V ; + ambulel_V2 : V2 ; + amuk_V : V ; + amuk_V2 : V2 ; + amukel_V : V ; + amukel_V2 : V2 ; + amukelek_V : V ; + amukelek_V2 : V2 ; + amukis_V : V ; + amukis_V2 : V2 ; + amul_V : V ; + amul_V2 : V2 ; + amulel_V : V ; + amulel_V2 : V2 ; + amulis_V : V ; + amulis_V2 : V2 ; + and_V : V ; + and_V2 : V2 ; + andel_V : V ; + andel_V2 : V2 ; + andelan_V : V ; + andelan_V2 : V2 ; + andelis_V : V ; + andelis_V2 : V2 ; + andis_V : V ; + andis_V2 : V2 ; + andul_V : V ; + andul_V2 : V2 ; + andulel_V : V ; + andulel_V2 : V2 ; + anel_V : V ; + anel_V2 : V2 ; + anelekelel_V : V ; + anelekelel_V2 : V2 ; + anelis_V : V ; + anelis_V2 : V2 ; + anelisek_V : V ; + anelisek_V2 : V2 ; + anezel_V : V ; + anezel_V2 : V2 ; + anezezel_V : V ; + anezezel_V2 : V2 ; + ang_V : V ; + ang_V2 : V2 ; + angam_V : V ; + angam_V2 : V2 ; + angaman_V : V ; + angaman_V2 : V2 ; + angamel_V : V ; + angamel_V2 : V2 ; + angamelan_V : V ; + angamelan_V2 : V2 ; + angan_V : V ; + angan_V2 : V2 ; + anganel_V : V ; + anganel_V2 : V2 ; + anganis_V : V ; + anganis_V2 : V2 ; + angek_V : V ; + angek_V2 : V2 ; + angel_V : V ; + angel_V2 : V2 ; + angelekelel_V : V ; + angelekelel_V2 : V2 ; + angis_V : V ; + angis_V2 : V2 ; + angisan_V : V ; + angisan_V2 : V2 ; + any_V : V ; + any_V2 : V2 ; + anyan_V : V ; + anyan_V2 : V2 ; + anyelel_V : V ; + anyelel_V2 : V2 ; + anyuk_V : V ; + anyuk_V2 : V2 ; + anyul_V : V ; + anyul_V2 : V2 ; + aphuc_V : V ; + aphuc_V2 : V2 ; + aphuk_V : V ; + aphuk_V2 : V2 ; + aphul_V : V ; + aphul_V2 : V2 ; + ath_V : V ; + ath_V2 : V2 ; + athan_V : V ; + athan_V2 : V2 ; + athek_V : V ; + athek_V2 : V2 ; + athekel_V : V ; + athekel_V2 : V2 ; + athekis_V : V ; + athekis_V2 : V2 ; + athel_V : V ; + athel_V2 : V2 ; + athelek_V : V ; + athelek_V2 : V2 ; + athelel_V : V ; + athelel_V2 : V2 ; + athelelan_V : V ; + athelelan_V2 : V2 ; + az_V : V ; + az_V2 : V2 ; + azan_V : V ; + azan_V2 : V2 ; + azek_V : V ; + azek_V2 : V2 ; + azel_V : V ; + azel_V2 : V2 ; + azis_V : V ; + azis_V2 : V2 ; + b_V : V ; + b_V2 : V2 ; + bab_V : V ; + bab_V2 : V2 ; + babal_V : V ; + babal_V2 : V2 ; + babalek_V : V ; + babalek_V2 : V2 ; + babalekel_V : V ; + babalekel_V2 : V2 ; + babalis_V : V ; + babalis_V2 : V2 ; + babaz_V : V ; + babaz_V2 : V2 ; + babazek_V : V ; + babazek_V2 : V2 ; + babek_V : V ; + babek_V2 : V2 ; + babekelel_V : V ; + babekelel_V2 : V2 ; + babel_V : V ; + babel_V2 : V2 ; + babelel_V : V ; + babelel_V2 : V2 ; + babuk_V : V ; + babuk_V2 : V2 ; + babukan_V : V ; + babukan_V2 : V2 ; + babukek_V : V ; + babukek_V2 : V2 ; + babukel_V : V ; + babukel_V2 : V2 ; + babul_V : V ; + babul_V2 : V2 ; + babulel_V : V ; + babulel_V2 : V2 ; + bakaz_V : V ; + bakaz_V2 : V2 ; + bal_V : V ; + bal_V2 : V2 ; + balabal_V : V ; + balabal_V2 : V2 ; + balan_V : V ; + balan_V2 : V2 ; + balek_V : V ; + balek_V2 : V2 ; + balekel_V : V ; + balekel_V2 : V2 ; + balekelek_V : V ; + balekelek_V2 : V2 ; + balekelel_V : V ; + balekelel_V2 : V2 ; + balekis_V : V ; + balekis_V2 : V2 ; + balel_V : V ; + balel_V2 : V2 ; + balis_V : V ; + balis_V2 : V2 ; + balisan_V : V ; + balisan_V2 : V2 ; + balisel_V : V ; + balisel_V2 : V2 ; + balul_V : V ; + balul_V2 : V2 ; + balulek_V : V ; + balulek_V2 : V2 ; + bamb_V : V ; + bamb_V2 : V2 ; + bamban_V : V ; + bamban_V2 : V2 ; + bambanis_V : V ; + bambanis_V2 : V2 ; + bambek_V : V ; + bambek_V2 : V2 ; + bambekel_V : V ; + bambekel_V2 : V2 ; + bambel_V : V ; + bambel_V2 : V2 ; + bambelan_V : V ; + bambelan_V2 : V2 ; + bambelel_V : V ; + bambelel_V2 : V2 ; + bambezel_V : V ; + bambezel_V2 : V2 ; + bambezelek_V : V ; + bambezelek_V2 : V2 ; + bambis_V : V ; + bambis_V2 : V2 ; + bambisan_V : V ; + bambisan_V2 : V2 ; + bambisis_V : V ; + bambisis_V2 : V2 ; + ban_V : V ; + ban_V2 : V2 ; + band_V : V ; + band_V2 : V2 ; + bandakany_V : V ; + bandakany_V2 : V2 ; + bandel_V : V ; + bandel_V2 : V2 ; + bandis_V : V ; + bandis_V2 : V2 ; + bandl_V : V ; + bandl_V2 : V2 ; + bandlulul_V : V ; + bandlulul_V2 : V2 ; + banek_V : V ; + banek_V2 : V2 ; + banelis_V : V ; + banelis_V2 : V2 ; + bang_V : V ; + bang_V2 : V2 ; + bangalal_V : V ; + bangalal_V2 : V2 ; + bangan_V : V ; + bangan_V2 : V2 ; + bangek_V : V ; + bangek_V2 : V2 ; + bangel_V : V ; + bangel_V2 : V2 ; + bangis_V : V ; + bangis_V2 : V2 ; + bangisan_V : V ; + bangisan_V2 : V2 ; + bangul_V : V ; + bangul_V2 : V2 ; + baniz_V : V ; + baniz_V2 : V2 ; + bas_V : V ; + bas_V2 : V2 ; + basekel_V : V ; + basekel_V2 : V2 ; + basel_V : V ; + basel_V2 : V2 ; + bathaz_V : V ; + bathaz_V2 : V2 ; + bathazel_V : V ; + bathazel_V2 : V2 ; + bawel_V : V ; + bawel_V2 : V2 ; + bawelel_V : V ; + bawelel_V2 : V2 ; + bawelis_V : V ; + bawelis_V2 : V2 ; + bawelisel_V : V ; + bawelisel_V2 : V2 ; + baz_V : V ; + baz_V2 : V2 ; + bazek_V : V ; + bazek_V2 : V2 ; + bazekel_V : V ; + bazekel_V2 : V2 ; + bazis_V : V ; + bazis_V2 : V2 ; + bazisek_V : V ; + bazisek_V2 : V2 ; + beb_V : V ; + beb_V2 : V2 ; + beban_V : V ; + beban_V2 : V2 ; + bebek_V : V ; + bebek_V2 : V2 ; + bebelel_V : V ; + bebelel_V2 : V2 ; + bebeth_V : V ; + bebeth_V2 : V2 ; + bebez_V : V ; + bebez_V2 : V2 ; + befuzel_V : V ; + befuzel_V2 : V2 ; + behlek_V : V ; + behlek_V2 : V2 ; + bek_V : V ; + bek_V2 : V2 ; + bekan_V : V ; + bekan_V2 : V2 ; + bekel_V : V ; + bekel_V2 : V2 ; + bekelan_V : V ; + bekelan_V2 : V2 ; + bekelel_V : V ; + bekelel_V2 : V2 ; + bekezel_V : V ; + bekezel_V2 : V2 ; + bekezelel_V : V ; + bekezelel_V2 : V2 ; + bekis_V : V ; + bekis_V2 : V2 ; + bel_V : V ; + bel_V2 : V2 ; + belan_V : V ; + belan_V2 : V2 ; + belek_V : V ; + belek_V2 : V2 ; + belekelel_V : V ; + belekelel_V2 : V2 ; + belel_V : V ; + belel_V2 : V2 ; + belesel_V : V ; + belesel_V2 : V2 ; + beleth_V : V ; + beleth_V2 : V2 ; + belethan_V : V ; + belethan_V2 : V2 ; + belethel_V : V ; + belethel_V2 : V2 ; + belethis_V : V ; + belethis_V2 : V2 ; + bendl_V : V ; + bendl_V2 : V2 ; + bendlel_V : V ; + bendlel_V2 : V2 ; + beng_V : V ; + beng_V2 : V2 ; + bengek_V : V ; + bengek_V2 : V2 ; + bengez_V : V ; + bengez_V2 : V2 ; + benyezel_V : V ; + benyezel_V2 : V2 ; + beth_V : V ; + beth_V2 : V2 ; + bethan_V : V ; + bethan_V2 : V2 ; + bethel_V : V ; + bethel_V2 : V2 ; + bethelekel_V : V ; + bethelekel_V2 : V2 ; + bethelel_V : V ; + bethelel_V2 : V2 ; + bez_V : V ; + bez_V2 : V2 ; + bezel_V : V ; + bezel_V2 : V2 ; + bezis_V : V ; + bezis_V2 : V2 ; + bhabhalal_V : V ; + bhabhalal_V2 : V2 ; + bhac_V : V ; + bhac_V2 : V2 ; + bhad_V : V ; + bhad_V2 : V2 ; + bhadam_V : V ; + bhadam_V2 : V2 ; + bhadazel_V : V ; + bhadazel_V2 : V2 ; + bhadl_V : V ; + bhadl_V2 : V2 ; + bhak_V : V ; + bhak_V2 : V2 ; + bhakabhak_V : V ; + bhakabhak_V2 : V2 ; + bhakaz_V : V ; + bhakaz_V2 : V2 ; + bhakel_V : V ; + bhakel_V2 : V2 ; + bhaklazek_V : V ; + bhaklazek_V2 : V2 ; + bhakuz_V : V ; + bhakuz_V2 : V2 ; + bhakuzel_V : V ; + bhakuzel_V2 : V2 ; + bhakuzis_V : V ; + bhakuzis_V2 : V2 ; + bhal_V : V ; + bhal_V2 : V2 ; + bhalakax_V : V ; + bhalakax_V2 : V2 ; + bhalek_V : V ; + bhalek_V2 : V2 ; + bhalel_V : V ; + bhalel_V2 : V2 ; + bhalelan_V : V ; + bhalelan_V2 : V2 ; + bhalis_V : V ; + bhalis_V2 : V2 ; + bhalisel_V : V ; + bhalisel_V2 : V2 ; + bhamb_V : V ; + bhamb_V2 : V2 ; + bhambabul_V : V ; + bhambabul_V2 : V2 ; + bhambath_V : V ; + bhambath_V2 : V2 ; + bhamuz_V : V ; + bhamuz_V2 : V2 ; + bhand_V : V ; + bhand_V2 : V2 ; + bhangq_V : V ; + bhangq_V2 : V2 ; + bhansan_V : V ; + bhansan_V2 : V2 ; + bhansel_V : V ; + bhansel_V2 : V2 ; + bhaq_V : V ; + bhaq_V2 : V2 ; + bhash_V : V ; + bhash_V2 : V2 ; + bhavumul_V : V ; + bhavumul_V2 : V2 ; + bhaxabul_V : V ; + bhaxabul_V2 : V2 ; + bhaxan_V : V ; + bhaxan_V2 : V2 ; + bhayiz_V : V ; + bhayiz_V2 : V2 ; + bhebh_V : V ; + bhebh_V2 : V2 ; + bhebhethek_V : V ; + bhebhethek_V2 : V2 ; + bhebhezel_V : V ; + bhebhezel_V2 : V2 ; + bhec_V : V ; + bhec_V2 : V2 ; + bhed_V : V ; + bhed_V2 : V2 ; + bhedel_V : V ; + bhedel_V2 : V2 ; + bhedezan_V : V ; + bhedezan_V2 : V2 ; + bhedl_V : V ; + bhedl_V2 : V2 ; + bhedlel_V : V ; + bhedlel_V2 : V2 ; + bheduk_V : V ; + bheduk_V2 : V2 ; + bhedul_V : V ; + bhedul_V2 : V2 ; + bhej_V : V ; + bhej_V2 : V2 ; + bhejan_V : V ; + bhejan_V2 : V2 ; + bhek_V : V ; + bhek_V2 : V2 ; + bhekabhek_V : V ; + bhekabhek_V2 : V2 ; + bhekan_V : V ; + bhekan_V2 : V2 ; + bhekek_V : V ; + bhekek_V2 : V2 ; + bhekel_V : V ; + bhekel_V2 : V2 ; + bhekelek_V : V ; + bhekelek_V2 : V2 ; + bhekelel_V : V ; + bhekelel_V2 : V2 ; + bhekis_V : V ; + bhekis_V2 : V2 ; + bhekisis_V : V ; + bhekisis_V2 : V2 ; + bheluz_V : V ; + bheluz_V2 : V2 ; + bhem_V : V ; + bhem_V2 : V2 ; + bhemis_V : V ; + bhemis_V2 : V2 ; + bhen_V : V ; + bhen_V2 : V2 ; + bhenguz_V : V ; + bhenguz_V2 : V2 ; + bhens_V : V ; + bhens_V2 : V2 ; + bhibh_V : V ; + bhibh_V2 : V2 ; + bhibhidl_V : V ; + bhibhidl_V2 : V2 ; + bhibhis_V : V ; + bhibhis_V2 : V2 ; + bhidlang_V : V ; + bhidlang_V2 : V2 ; + bhidlik_V : V ; + bhidlik_V2 : V2 ; + bhidlikel_V : V ; + bhidlikel_V2 : V2 ; + bhidliz_V : V ; + bhidliz_V2 : V2 ; + bhij_V : V ; + bhij_V2 : V2 ; + bhil_V : V ; + bhil_V2 : V2 ; + bhinc_V : V ; + bhinc_V2 : V2 ; + bhincel_V : V ; + bhincel_V2 : V2 ; + bhincis_V : V ; + bhincis_V2 : V2 ; + bhinq_V : V ; + bhinq_V2 : V2 ; + bhizel_V : V ; + bhizel_V2 : V2 ; + bhobhodlan_V : V ; + bhobhodlan_V2 : V2 ; + bhobok_V : V ; + bhobok_V2 : V2 ; + bhobokel_V : V ; + bhobokel_V2 : V2 ; + bhobos_V : V ; + bhobos_V2 : V2 ; + bhoboz_V : V ; + bhoboz_V2 : V2 ; + bhobozel_V : V ; + bhobozel_V2 : V2 ; + bhocobal_V : V ; + bhocobal_V2 : V2 ; + bhodl_V : V ; + bhodl_V2 : V2 ; + bhodlel_V : V ; + bhodlel_V2 : V2 ; + bhodlelan_V : V ; + bhodlelan_V2 : V2 ; + bhodloz_V : V ; + bhodloz_V2 : V2 ; + bhok_V : V ; + bhok_V2 : V2 ; + bhokel_V : V ; + bhokel_V2 : V2 ; + bhokod_V : V ; + bhokod_V2 : V2 ; + bhol_V : V ; + bhol_V2 : V2 ; + bhong_V : V ; + bhong_V2 : V2 ; + bhongel_V : V ; + bhongel_V2 : V2 ; + bhongis_V : V ; + bhongis_V2 : V2 ; + bhongoz_V : V ; + bhongoz_V2 : V2 ; + bhonq_V : V ; + bhonq_V2 : V2 ; + bhonqabhonq_V : V ; + bhonqabhonq_V2 : V2 ; + bhons_V : V ; + bhons_V2 : V2 ; + bhonxul_V : V ; + bhonxul_V2 : V2 ; + bhony_V : V ; + bhony_V2 : V2 ; + bhov_V : V ; + bhov_V2 : V2 ; + bhox_V : V ; + bhox_V2 : V2 ; + bhozomel_V : V ; + bhozomel_V2 : V2 ; + bhubh_V : V ; + bhubh_V2 : V2 ; + bhubhis_V : V ; + bhubhis_V2 : V2 ; + bhubhudl_V : V ; + bhubhudl_V2 : V2 ; + bhubhuz_V : V ; + bhubhuz_V2 : V2 ; + bhubhuzel_V : V ; + bhubhuzel_V2 : V2 ; + bhucuk_V : V ; + bhucuk_V2 : V2 ; + bhudl_V : V ; + bhudl_V2 : V2 ; + bhuduzel_V : V ; + bhuduzel_V2 : V2 ; + bhukud_V : V ; + bhukud_V2 : V2 ; + bhukul_V : V ; + bhukul_V2 : V2 ; + bhul_V : V ; + bhul_V2 : V2 ; + bhulel_V : V ; + bhulel_V2 : V2 ; + bhulub_V : V ; + bhulub_V2 : V2 ; + bhumb_V : V ; + bhumb_V2 : V2 ; + bhumbuluz_V : V ; + bhumbuluz_V2 : V2 ; + bhung_V : V ; + bhung_V2 : V2 ; + bhungan_V : V ; + bhungan_V2 : V2 ; + bhunguk_V : V ; + bhunguk_V2 : V2 ; + bhungukel_V : V ; + bhungukel_V2 : V2 ; + bhunkul_V : V ; + bhunkul_V2 : V2 ; + bhuntsh_V : V ; + bhuntsh_V2 : V2 ; + bhuq_V : V ; + bhuq_V2 : V2 ; + bhuqabhuqek_V : V ; + bhuqabhuqek_V2 : V2 ; + bhuqan_V : V ; + bhuqan_V2 : V2 ; + bhuqek_V : V ; + bhuqek_V2 : V2 ; + bhuquz_V : V ; + bhuquz_V2 : V2 ; + bhuquzis_V : V ; + bhuquzis_V2 : V2 ; + bhushuzel_V : V ; + bhushuzel_V2 : V2 ; + bhuxek_V : V ; + bhuxek_V2 : V2 ; + bhuz_V : V ; + bhuz_V2 : V2 ; + bhuzan_V : V ; + bhuzan_V2 : V2 ; + bibithek_V : V ; + bibithek_V2 : V2 ; + bihlik_V : V ; + bihlik_V2 : V2 ; + bik_V : V ; + bik_V2 : V2 ; + bikel_V : V ; + bikel_V2 : V2 ; + bikelan_V : V ; + bikelan_V2 : V2 ; + bikezel_V : V ; + bikezel_V2 : V2 ; + bikizel_V : V ; + bikizel_V2 : V2 ; + bil_V : V ; + bil_V2 : V2 ; + bilel_V : V ; + bilel_V2 : V2 ; + bilis_V : V ; + bilis_V2 : V2 ; + bind_V : V ; + bind_V2 : V2 ; + bingelel_V : V ; + bingelel_V2 : V2 ; + bingelelan_V : V ; + bingelelan_V2 : V2 ; + biny_V : V ; + biny_V2 : V2 ; + binyek_V : V ; + binyek_V2 : V2 ; + biph_V : V ; + biph_V2 : V2 ; + bis_V : V ; + bis_V2 : V2 ; + bisan_V : V ; + bisan_V2 : V2 ; + bish_V : V ; + bish_V2 : V2 ; + bishan_V : V ; + bishan_V2 : V2 ; + bisis_V : V ; + bisis_V2 : V2 ; + biy_V : V ; + biy_V2 : V2 ; + biyel_V : V ; + biyel_V2 : V2 ; + biz_V : V ; + biz_V2 : V2 ; + bizan_V : V ; + bizan_V2 : V2 ; + bizek_V : V ; + bizek_V2 : V2 ; + bizel_V : V ; + bizel_V2 : V2 ; + bohl_V : V ; + bohl_V2 : V2 ; + bol_V : V ; + bol_V2 : V2 ; + bolek_V : V ; + bolek_V2 : V2 ; + bolekis_V : V ; + bolekis_V2 : V2 ; + bon_V : V ; + bon_V2 : V2 ; + bonakal_V : V ; + bonakal_V2 : V2 ; + bonakalis_V : V ; + bonakalis_V2 : V2 ; + bonan_V : V ; + bonan_V2 : V2 ; + bond_V : V ; + bond_V2 : V2 ; + bondabond_V : V ; + bondabond_V2 : V2 ; + bondel_V : V ; + bondel_V2 : V2 ; + bondelan_V : V ; + bondelan_V2 : V2 ; + bonel_V : V ; + bonel_V2 : V2 ; + bonelel_V : V ; + bonelel_V2 : V2 ; + bong_V : V ; + bong_V2 : V2 ; + bongel_V : V ; + bongel_V2 : V2 ; + bongoz_V : V ; + bongoz_V2 : V2 ; + bonis_V : V ; + bonis_V2 : V2 ; + bonisan_V : V ; + bonisan_V2 : V2 ; + bonisis_V : V ; + bonisis_V2 : V2 ; + boph_V : V ; + boph_V2 : V2 ; + bophan_V : V ; + bophan_V2 : V2 ; + bophel_V : V ; + bophel_V2 : V2 ; + bophelan_V : V ; + bophelan_V2 : V2 ; + bophezel_V : V ; + bophezel_V2 : V2 ; + bophis_V : V ; + bophis_V2 : V2 ; + both_V : V ; + both_V2 : V2 ; + bovul_V : V ; + bovul_V2 : V2 ; + bub_V : V ; + bub_V2 : V2 ; + bubek_V : V ; + bubek_V2 : V2 ; + bubul_V : V ; + bubul_V2 : V2 ; + buhluz_V : V ; + buhluz_V2 : V2 ; + buk_V : V ; + buk_V2 : V2 ; + bukabuk_V : V ; + bukabuk_V2 : V2 ; + bukan_V : V ; + bukan_V2 : V2 ; + bukek_V : V ; + bukek_V2 : V2 ; + bukel_V : V ; + bukel_V2 : V2 ; + bukelan_V : V ; + bukelan_V2 : V2 ; + bukelek_V : V ; + bukelek_V2 : V2 ; + bukelel_V : V ; + bukelel_V2 : V2 ; + bukez_V : V ; + bukez_V2 : V2 ; + bukezel_V : V ; + bukezel_V2 : V2 ; + bukis_V : V ; + bukis_V2 : V2 ; + bukisis_V : V ; + bukisis_V2 : V2 ; + bulal_V : V ; + bulal_V2 : V2 ; + bulalan_V : V ; + bulalan_V2 : V2 ; + bulalel_V : V ; + bulalel_V2 : V2 ; + bulalis_V : V ; + bulalis_V2 : V2 ; + bulis_V : V ; + bulis_V2 : V2 ; + bulisan_V : V ; + bulisan_V2 : V2 ; + bulung_V : V ; + bulung_V2 : V2 ; + bulungis_V : V ; + bulungis_V2 : V2 ; + bumb_V : V ; + bumb_V2 : V2 ; + bumban_V : V ; + bumban_V2 : V2 ; + bumbek_V : V ; + bumbek_V2 : V2 ; + bumbel_V : V ; + bumbel_V2 : V2 ; + bumbisis_V : V ; + bumbisis_V2 : V2 ; + bun_V : V ; + bun_V2 : V2 ; + bund_V : V ; + bund_V2 : V2 ; + bundis_V : V ; + bundis_V2 : V2 ; + bunek_V : V ; + bunek_V2 : V2 ; + bung_V : V ; + bung_V2 : V2 ; + bungan_V : V ; + bungan_V2 : V2 ; + bunganyel_V : V ; + bunganyel_V2 : V2 ; + bungaz_V : V ; + bungaz_V2 : V2 ; + bungazis_V : V ; + bungazis_V2 : V2 ; + bungek_V : V ; + bungek_V2 : V2 ; + bungel_V : V ; + bungel_V2 : V2 ; + bunis_V : V ; + bunis_V2 : V2 ; + buny_V : V ; + buny_V2 : V2 ; + bus_V : V ; + bus_V2 : V2 ; + busel_V : V ; + busel_V2 : V2 ; + busis_V : V ; + busis_V2 : V2 ; + busisek_V : V ; + busisek_V2 : V2 ; + buth_V : V ; + buth_V2 : V2 ; + buthan_V : V ; + buthan_V2 : V2 ; + buthanel_V : V ; + buthanel_V2 : V2 ; + buthel_V : V ; + buthel_V2 : V2 ; + buthis_V : V ; + buthis_V2 : V2 ; + buy_V : V ; + buy_V2 : V2 ; + buyek_V : V ; + buyek_V2 : V2 ; + buyekez_V : V ; + buyekez_V2 : V2 ; + buyel_V : V ; + buyel_V2 : V2 ; + buyelan_V : V ; + buyelan_V2 : V2 ; + buyis_V : V ; + buyis_V2 : V2 ; + buyisan_V : V ; + buyisan_V2 : V2 ; + buyisel_V : V ; + buyisel_V2 : V2 ; + buyiselel_V : V ; + buyiselel_V2 : V2 ; + buz_V : V ; + buz_V2 : V2 ; + buzabuz_V : V ; + buzabuz_V2 : V2 ; + buzan_V : V ; + buzan_V2 : V2 ; + buzel_V : V ; + buzel_V2 : V2 ; + buzis_V : V ; + buzis_V2 : V2 ; + buzisan_V : V ; + buzisan_V2 : V2 ; + buzisis_V : V ; + buzisis_V2 : V2 ; + cab_V : V ; + cab_V2 : V2 ; + cabang_V : V ; + cabang_V2 : V2 ; + cabangan_V : V ; + cabangan_V2 : V2 ; + cabangel_V : V ; + cabangel_V2 : V2 ; + cabangis_V : V ; + cabangis_V2 : V2 ; + cabangisis_V : V ; + cabangisis_V2 : V2 ; + cac_V : V ; + cac_V2 : V2 ; + cacamezel_V : V ; + cacamezel_V2 : V2 ; + cacamezelel_V : V ; + cacamezelel_V2 : V2 ; + cacel_V : V ; + cacel_V2 : V2 ; + cacis_V : V ; + cacis_V2 : V2 ; + cacisel_V : V ; + cacisel_V2 : V2 ; + cambalal_V : V ; + cambalal_V2 : V2 ; + cambalalel_V : V ; + cambalalel_V2 : V2 ; + camel_V : V ; + camel_V2 : V2 ; + can_V : V ; + can_V2 : V2 ; + cangcath_V : V ; + cangcath_V2 : V2 ; + caphun_V : V ; + caphun_V2 : V2 ; + caphunek_V : V ; + caphunek_V2 : V2 ; + caphunel_V : V ; + caphunel_V2 : V2 ; + cas_V : V ; + cas_V2 : V2 ; + cash_V : V ; + cash_V2 : V2 ; + cashek_V : V ; + cashek_V2 : V2 ; + cashel_V : V ; + cashel_V2 : V2 ; + cashelan_V : V ; + cashelan_V2 : V2 ; + cashis_V : V ; + cashis_V2 : V2 ; + casuk_V : V ; + casuk_V2 : V2 ; + casukel_V : V ; + casukel_V2 : V2 ; + casul_V : V ; + casul_V2 : V2 ; + casuzelis_V : V ; + casuzelis_V2 : V2 ; + catham_V : V ; + catham_V2 : V2 ; + cathamel_V : V ; + cathamel_V2 : V2 ; + cathul_V : V ; + cathul_V2 : V2 ; + cazis_V : V ; + cazis_V2 : V2 ; + ceb_V : V ; + ceb_V2 : V2 ; + cebek_V : V ; + cebek_V2 : V2 ; + cebis_V : V ; + cebis_V2 : V2 ; + cebisan_V : V ; + cebisan_V2 : V2 ; + cek_V : V ; + cek_V2 : V2 ; + cekel_V : V ; + cekel_V2 : V2 ; + cel_V : V ; + cel_V2 : V2 ; + celan_V : V ; + celan_V2 : V2 ; + celel_V : V ; + celel_V2 : V2 ; + centel_V : V ; + centel_V2 : V2 ; + chach_V : V ; + chach_V2 : V2 ; + chachamb_V : V ; + chachamb_V2 : V2 ; + chachaz_V : V ; + chachaz_V2 : V2 ; + chachazel_V : V ; + chachazel_V2 : V2 ; + chachis_V : V ; + chachis_V2 : V2 ; + chak_V : V ; + chak_V2 : V2 ; + cham_V : V ; + cham_V2 : V2 ; + chamusel_V : V ; + chamusel_V2 : V2 ; + chanas_V : V ; + chanas_V2 : V2 ; + chanasel_V : V ; + chanasel_V2 : V2 ; + changuz_V : V ; + changuz_V2 : V2 ; + chaph_V : V ; + chaph_V2 : V2 ; + chaphazel_V : V ; + chaphazel_V2 : V2 ; + chaphazelek_V : V ; + chaphazelek_V2 : V2 ; + chasis_V : V ; + chasis_V2 : V2 ; + chasisel_V : V ; + chasisel_V2 : V2 ; + chathazel_V : V ; + chathazel_V2 : V2 ; + chathek_V : V ; + chathek_V2 : V2 ; + chay_V : V ; + chay_V2 : V2 ; + chaz_V : V ; + chaz_V2 : V2 ; + chazan_V : V ; + chazan_V2 : V2 ; + chazek_V : V ; + chazek_V2 : V2 ; + chazel_V : V ; + chazel_V2 : V2 ; + chazelan_V : V ; + chazelan_V2 : V2 ; + chel_V : V ; + chel_V2 : V2 ; + chelel_V : V ; + chelel_V2 : V2 ; + chezuk_V : V ; + chezuk_V2 : V2 ; + chibel_V : V ; + chibel_V2 : V2 ; + chibelel_V : V ; + chibelel_V2 : V2 ; + chich_V : V ; + chich_V2 : V2 ; + chichim_V : V ; + chichim_V2 : V2 ; + chiliz_V : V ; + chiliz_V2 : V2 ; + chilizel_V : V ; + chilizel_V2 : V2 ; + chins_V : V ; + chins_V2 : V2 ; + chinsel_V : V ; + chinsel_V2 : V2 ; + chiphiz_V : V ; + chiphiz_V2 : V2 ; + chiphizan_V : V ; + chiphizan_V2 : V2 ; + chith_V : V ; + chith_V2 : V2 ; + chithek_V : V ; + chithek_V2 : V2 ; + chithekel_V : V ; + chithekel_V2 : V2 ; + chithel_V : V ; + chithel_V2 : V2 ; + chithelan_V : V ; + chithelan_V2 : V2 ; + chithis_V : V ; + chithis_V2 : V2 ; + chiz_V : V ; + chiz_V2 : V2 ; + chizel_V : V ; + chizel_V2 : V2 ; + choban_V : V ; + choban_V2 : V2 ; + choboz_V : V ; + choboz_V2 : V2 ; + chobozel_V : V ; + chobozel_V2 : V2 ; + choch_V : V ; + choch_V2 : V2 ; + chochis_V : V ; + chochis_V2 : V2 ; + chom_V : V ; + chom_V2 : V2 ; + choph_V : V ; + choph_V2 : V2 ; + chum_V : V ; + chum_V2 : V2 ; + chumis_V : V ; + chumis_V2 : V2 ; + chush_V : V ; + chush_V2 : V2 ; + chushachush_V : V ; + chushachush_V2 : V2 ; + chushis_V : V ; + chushis_V2 : V2 ; + chushisan_V : V ; + chushisan_V2 : V2 ; + chwabazis_V : V ; + chwabazis_V2 : V2 ; + chwanek_V : V ; + chwanek_V2 : V2 ; + chwashaz_V : V ; + chwashaz_V2 : V2 ; + chway_V : V ; + chway_V2 : V2 ; + chwaz_V : V ; + chwaz_V2 : V2 ; + chwazel_V : V ; + chwazel_V2 : V2 ; + chwens_V : V ; + chwens_V2 : V2 ; + chwephesh_V : V ; + chwephesh_V2 : V2 ; + cib_V : V ; + cib_V2 : V2 ; + ciban_V : V ; + ciban_V2 : V2 ; + cibek_V : V ; + cibek_V2 : V2 ; + cibel_V : V ; + cibel_V2 : V2 ; + ciciyel_V : V ; + ciciyel_V2 : V2 ; + ciciyelek_V : V ; + ciciyelek_V2 : V2 ; + cifelan_V : V ; + cifelan_V2 : V2 ; + cij_V : V ; + cij_V2 : V2 ; + cijis_V : V ; + cijis_V2 : V2 ; + cik_V : V ; + cik_V2 : V2 ; + cikic_V : V ; + cikic_V2 : V2 ; + cikican_V : V ; + cikican_V2 : V2 ; + cikoz_V : V ; + cikoz_V2 : V2 ; + cim_V : V ; + cim_V2 : V2 ; + cimel_V : V ; + cimel_V2 : V2 ; + cimez_V : V ; + cimez_V2 : V2 ; + cin_V : V ; + cin_V2 : V2 ; + cinan_V : V ; + cinan_V2 : V2 ; + cinanis_V : V ; + cinanis_V2 : V2 ; + cindezel_V : V ; + cindezel_V2 : V2 ; + cindezelek_V : V ; + cindezelek_V2 : V2 ; + cinelel_V : V ; + cinelel_V2 : V2 ; + cing_V : V ; + cing_V2 : V2 ; + cingel_V : V ; + cingel_V2 : V2 ; + cingisis_V : V ; + cingisis_V2 : V2 ; + cish_V : V ; + cish_V2 : V2 ; + cishel_V : V ; + cishel_V2 : V2 ; + cob_V : V ; + cob_V2 : V2 ; + cobek_V : V ; + cobek_V2 : V2 ; + cobel_V : V ; + cobel_V2 : V2 ; + cobelelan_V : V ; + cobelelan_V2 : V2 ; + coboshis_V : V ; + coboshis_V2 : V2 ; + cofiy_V : V ; + cofiy_V2 : V2 ; + cogis_V : V ; + cogis_V2 : V2 ; + cokosh_V : V ; + cokosh_V2 : V2 ; + col_V : V ; + col_V2 : V2 ; + colek_V : V ; + colek_V2 : V2 ; + colisek_V : V ; + colisek_V2 : V2 ; + colisis_V : V ; + colisis_V2 : V2 ; + cons_V : V ; + cons_V2 : V2 ; + consis_V : V ; + consis_V2 : V2 ; + cophelel_V : V ; + cophelel_V2 : V2 ; + cosh_V : V ; + cosh_V2 : V2 ; + coshacosh_V : V ; + coshacosh_V2 : V2 ; + coshel_V : V ; + coshel_V2 : V2 ; + cosulelan_V : V ; + cosulelan_V2 : V2 ; + cothoz_V : V ; + cothoz_V2 : V2 ; + cothozel_V : V ; + cothozel_V2 : V2 ; + cub_V : V ; + cub_V2 : V2 ; + cubungul_V : V ; + cubungul_V2 : V2 ; + cubungulisis_V : V ; + cubungulisis_V2 : V2 ; + cucuz_V : V ; + cucuz_V2 : V2 ; + cucuzan_V : V ; + cucuzan_V2 : V2 ; + cul_V : V ; + cul_V2 : V2 ; + culel_V : V ; + culel_V2 : V2 ; + cunul_V : V ; + cunul_V2 : V2 ; + cuph_V : V ; + cuph_V2 : V2 ; + cuphelis_V : V ; + cuphelis_V2 : V2 ; + cusukel_V : V ; + cusukel_V2 : V2 ; + cuth_V : V ; + cuth_V2 : V2 ; + cuthel_V : V ; + cuthel_V2 : V2 ; + cuthis_V : V ; + cuthis_V2 : V2 ; + cwal_V : V ; + cwal_V2 : V2 ; + cwalek_V : V ; + cwalek_V2 : V2 ; + cwalis_V : V ; + cwalis_V2 : V2 ; + cwaning_V : V ; + cwaning_V2 : V2 ; + cwaningel_V : V ; + cwaningel_V2 : V2 ; + cwaningisis_V : V ; + cwaningisis_V2 : V2 ; + cwas_V : V ; + cwas_V2 : V2 ; + cwath_V : V ; + cwath_V2 : V2 ; + cwayiz_V : V ; + cwayiz_V2 : V2 ; + cwazimul_V : V ; + cwazimul_V2 : V2 ; + cweb_V : V ; + cweb_V2 : V2 ; + cwebezel_V : V ; + cwebezel_V2 : V2 ; + cwebezelis_V : V ; + cwebezelis_V2 : V2 ; + cwecw_V : V ; + cwecw_V2 : V2 ; + cweng_V : V ; + cweng_V2 : V2 ; + cwengek_V : V ; + cwengek_V2 : V2 ; + cwethul_V : V ; + cwethul_V2 : V2 ; + cwil_V : V ; + cwil_V2 : V2 ; + cwilis_V : V ; + cwilis_V2 : V2 ; + dabudabul_V : V ; + dabudabul_V2 : V2 ; + dabuk_V : V ; + dabuk_V2 : V2 ; + dabukel_V : V ; + dabukel_V2 : V2 ; + dabukis_V : V ; + dabukis_V2 : V2 ; + dabul_V : V ; + dabul_V2 : V2 ; + dad_V : V ; + dad_V2 : V2 ; + dadlazel_V : V ; + dadlazel_V2 : V2 ; + dak_V : V ; + dak_V2 : V2 ; + dakis_V : V ; + dakis_V2 : V2 ; + dal_V : V ; + dal_V2 : V2 ; + dalek_V : V ; + dalek_V2 : V2 ; + dalel_V : V ; + dalel_V2 : V2 ; + damb_V : V ; + damb_V2 : V2 ; + dambis_V : V ; + dambis_V2 : V2 ; + dambuz_V : V ; + dambuz_V2 : V2 ; + damuk_V : V ; + damuk_V2 : V2 ; + dan_V : V ; + dan_V2 : V2 ; + dangal_V : V ; + dangal_V2 : V2 ; + dangalel_V : V ; + dangalel_V2 : V2 ; + danis_V : V ; + danis_V2 : V2 ; + dans_V : V ; + dans_V2 : V2 ; + davuz_V : V ; + davuz_V2 : V2 ; + davuzel_V : V ; + davuzel_V2 : V2 ; + dayis_V : V ; + dayis_V2 : V2 ; + dayisel_V : V ; + dayisel_V2 : V2 ; + daz_V : V ; + daz_V2 : V2 ; + dazan_V : V ; + dazan_V2 : V2 ; + dazuluk_V : V ; + dazuluk_V2 : V2 ; + debez_V : V ; + debez_V2 : V2 ; + ded_V : V ; + ded_V2 : V2 ; + dedel_V : V ; + dedel_V2 : V2 ; + dedelan_V : V ; + dedelan_V2 : V2 ; + dek_V : V ; + dek_V2 : V2 ; + del_V : V ; + del_V2 : V2 ; + delel_V : V ; + delel_V2 : V2 ; + delis_V : V ; + delis_V2 : V2 ; + delisan_V : V ; + delisan_V2 : V2 ; + dend_V : V ; + dend_V2 : V2 ; + deph_V : V ; + deph_V2 : V2 ; + dephisis_V : V ; + dephisis_V2 : V2 ; + diban_V : V ; + diban_V2 : V2 ; + dibanis_V : V ; + dibanis_V2 : V2 ; + dic_V : V ; + dic_V2 : V2 ; + did_V : V ; + did_V2 : V2 ; + didek_V : V ; + didek_V2 : V2 ; + didiyel_V : V ; + didiyel_V2 : V2 ; + didizel_V : V ; + didizel_V2 : V2 ; + dikadik_V : V ; + dikadik_V2 : V2 ; + dikibal_V : V ; + dikibal_V2 : V2 ; + dikiz_V : V ; + dikiz_V2 : V2 ; + dilik_V : V ; + dilik_V2 : V2 ; + diliz_V : V ; + diliz_V2 : V2 ; + din_V : V ; + din_V2 : V2 ; + dind_V : V ; + dind_V2 : V2 ; + dindiliz_V : V ; + dindiliz_V2 : V2 ; + dinek_V : V ; + dinek_V2 : V2 ; + ding_V : V ; + ding_V2 : V2 ; + dingakal_V : V ; + dingakal_V2 : V2 ; + dingan_V : V ; + dingan_V2 : V2 ; + dingek_V : V ; + dingek_V2 : V2 ; + dingekel_V : V ; + dingekel_V2 : V2 ; + dingel_V : V ; + dingel_V2 : V2 ; + dingid_V : V ; + dingid_V2 : V2 ; + dingis_V : V ; + dingis_V2 : V2 ; + diph_V : V ; + diph_V2 : V2 ; + dish_V : V ; + dish_V2 : V2 ; + dishizel_V : V ; + dishizel_V2 : V2 ; + dl_V : V ; + dl_V2 : V2 ; + dlal_V : V ; + dlal_V2 : V2 ; + dlaladlal_V : V ; + dlaladlal_V2 : V2 ; + dlalel_V : V ; + dlalel_V2 : V2 ; + dlalis_V : V ; + dlalis_V2 : V2 ; + dlalisel_V : V ; + dlalisel_V2 : V2 ; + dlan_V : V ; + dlan_V2 : V2 ; + dlang_V : V ; + dlang_V2 : V2 ; + dlavuz_V : V ; + dlavuz_V2 : V2 ; + dlebelekis_V : V ; + dlebelekis_V2 : V2 ; + dlek_V : V ; + dlek_V2 : V2 ; + dlekezel_V : V ; + dlekezel_V2 : V2 ; + dlel_V : V ; + dlel_V2 : V2 ; + dlelan_V : V ; + dlelan_V2 : V2 ; + dlelesel_V : V ; + dlelesel_V2 : V2 ; + dlinz_V : V ; + dlinz_V2 : V2 ; + dlis_V : V ; + dlis_V2 : V2 ; + dlisel_V : V ; + dlisel_V2 : V2 ; + dlob_V : V ; + dlob_V2 : V2 ; + dlokovul_V : V ; + dlokovul_V2 : V2 ; + dlondlobal_V : V ; + dlondlobal_V2 : V2 ; + dlov_V : V ; + dlov_V2 : V2 ; + dlubulund_V : V ; + dlubulund_V2 : V2 ; + dlubulundel_V : V ; + dlubulundel_V2 : V2 ; + dlukuz_V : V ; + dlukuz_V2 : V2 ; + dlul_V : V ; + dlul_V2 : V2 ; + dlulel_V : V ; + dlulel_V2 : V2 ; + dlulis_V : V ; + dlulis_V2 : V2 ; + dlulisel_V : V ; + dlulisel_V2 : V2 ; + dlung_V : V ; + dlung_V2 : V2 ; + dluthul_V : V ; + dluthul_V2 : V2 ; + dluthuzel_V : V ; + dluthuzel_V2 : V2 ; + dlwengul_V : V ; + dlwengul_V2 : V2 ; + dob_V : V ; + dob_V2 : V2 ; + doban_V : V ; + doban_V2 : V2 ; + dobel_V : V ; + dobel_V2 : V2 ; + dod_V : V ; + dod_V2 : V2 ; + dombolozan_V : V ; + dombolozan_V2 : V2 ; + dond_V : V ; + dond_V2 : V2 ; + dondis_V : V ; + dondis_V2 : V2 ; + dondolozel_V : V ; + dondolozel_V2 : V2 ; + dons_V : V ; + dons_V2 : V2 ; + donsan_V : V ; + donsan_V2 : V2 ; + donsel_V : V ; + donsel_V2 : V2 ; + donsis_V : V ; + donsis_V2 : V2 ; + dovadov_V : V ; + dovadov_V2 : V2 ; + dub_V : V ; + dub_V2 : V2 ; + dubukal_V : V ; + dubukal_V2 : V2 ; + dubukel_V : V ; + dubukel_V2 : V2 ; + dubul_V : V ; + dubul_V2 : V2 ; + dubulan_V : V ; + dubulan_V2 : V2 ; + dubuz_V : V ; + dubuz_V2 : V2 ; + dud_V : V ; + dud_V2 : V2 ; + dudan_V : V ; + dudan_V2 : V2 ; + dudanel_V : V ; + dudanel_V2 : V2 ; + dudl_V : V ; + dudl_V2 : V2 ; + dudul_V : V ; + dudul_V2 : V2 ; + dudulan_V : V ; + dudulan_V2 : V2 ; + dudulek_V : V ; + dudulek_V2 : V2 ; + dudulel_V : V ; + dudulel_V2 : V2 ; + duduz_V : V ; + duduz_V2 : V2 ; + duduzan_V : V ; + duduzan_V2 : V2 ; + duduzek_V : V ; + duduzek_V2 : V2 ; + duk_V : V ; + duk_V2 : V2 ; + dukel_V : V ; + dukel_V2 : V2 ; + dukelan_V : V ; + dukelan_V2 : V2 ; + dukis_V : V ; + dukis_V2 : V2 ; + dukluz_V : V ; + dukluz_V2 : V2 ; + dukuz_V : V ; + dukuz_V2 : V2 ; + dul_V : V ; + dul_V2 : V2 ; + dulel_V : V ; + dulel_V2 : V2 ; + dum_V : V ; + dum_V2 : V2 ; + dumal_V : V ; + dumal_V2 : V2 ; + dumaz_V : V ; + dumaz_V2 : V2 ; + dumazek_V : V ; + dumazek_V2 : V2 ; + dumazel_V : V ; + dumazel_V2 : V2 ; + dumb_V : V ; + dumb_V2 : V2 ; + dumel_V : V ; + dumel_V2 : V2 ; + dumelan_V : V ; + dumelan_V2 : V2 ; + dumelis_V : V ; + dumelis_V2 : V2 ; + dumis_V : V ; + dumis_V2 : V2 ; + dundubal_V : V ; + dundubal_V2 : V2 ; + dung_V : V ; + dung_V2 : V2 ; + dungek_V : V ; + dungek_V2 : V2 ; + dunguzel_V : V ; + dunguzel_V2 : V2 ; + dunsuzan_V : V ; + dunsuzan_V2 : V2 ; + dush_V : V ; + dush_V2 : V2 ; + dushuz_V : V ; + dushuz_V2 : V2 ; + duz_V : V ; + duz_V2 : V2 ; + duzan_V : V ; + duzan_V2 : V2 ; + dwal_V : V ; + dwal_V2 : V2 ; + dwanguz_V : V ; + dwanguz_V2 : V2 ; + dweb_V : V ; + dweb_V2 : V2 ; + dwebek_V : V ; + dwebek_V2 : V2 ; + dwebel_V : V ; + dwebel_V2 : V2 ; + eb_V : V ; + eb_V2 : V2 ; + eban_V : V ; + eban_V2 : V2 ; + eband_V : V ; + eband_V2 : V2 ; + ebek_V : V ; + ebek_V2 : V2 ; + ebekis_V : V ; + ebekis_V2 : V2 ; + ebel_V : V ; + ebel_V2 : V2 ; + ebelekelelan_V : V ; + ebelekelelan_V2 : V2 ; + ebelel_V : V ; + ebelel_V2 : V2 ; + ebuk_V : V ; + ebuk_V2 : V2 ; + ebukan_V : V ; + ebukan_V2 : V2 ; + ebukek_V : V ; + ebukek_V2 : V2 ; + ebukel_V : V ; + ebukel_V2 : V2 ; + ebul_V : V ; + ebul_V2 : V2 ; + ebulisan_V : V ; + ebulisan_V2 : V2 ; + ebuz_V : V ; + ebuz_V2 : V2 ; + ebuzan_V : V ; + ebuzan_V2 : V2 ; + ebuzel_V : V ; + ebuzel_V2 : V2 ; + ebuzisis_V : V ; + ebuzisis_V2 : V2 ; + ecek_V : V ; + ecek_V2 : V2 ; + edlul_V : V ; + edlul_V2 : V2 ; + edlulel_V : V ; + edlulel_V2 : V2 ; + edlulis_V : V ; + edlulis_V2 : V2 ; + edlulisel_V : V ; + edlulisel_V2 : V2 ; + eduk_V : V ; + eduk_V2 : V2 ; + edukel_V : V ; + edukel_V2 : V2 ; + edukelan_V : V ; + edukelan_V2 : V2 ; + edukis_V : V ; + edukis_V2 : V2 ; + edus_V : V ; + edus_V2 : V2 ; + efund_V : V ; + efund_V2 : V2 ; + efundel_V : V ; + efundel_V2 : V2 ; + efundis_V : V ; + efundis_V2 : V2 ; + efundisel_V : V ; + efundisel_V2 : V2 ; + efuz_V : V ; + efuz_V2 : V2 ; + efuzel_V : V ; + efuzel_V2 : V2 ; + eg_V : V ; + eg_V2 : V2 ; + egan_V : V ; + egan_V2 : V2 ; + egcwal_V : V ; + egcwal_V2 : V2 ; + egcwalis_V : V ; + egcwalis_V2 : V2 ; + egej_V : V ; + egej_V2 : V2 ; + ehl_V : V ; + ehl_V2 : V2 ; + ehlakal_V : V ; + ehlakal_V2 : V2 ; + ehlan_V : V ; + ehlan_V2 : V2 ; + ehlek_V : V ; + ehlek_V2 : V2 ; + ehlekel_V : V ; + ehlekel_V2 : V2 ; + ehlekis_V : V ; + ehlekis_V2 : V2 ; + ehlel_V : V ; + ehlel_V2 : V2 ; + ehlelek_V : V ; + ehlelek_V2 : V2 ; + ehlelel_V : V ; + ehlelel_V2 : V2 ; + ehlik_V : V ; + ehlik_V2 : V2 ; + ehlikel_V : V ; + ehlikel_V2 : V2 ; + ehlis_V : V ; + ehlis_V2 : V2 ; + ehlisan_V : V ; + ehlisan_V2 : V2 ; + ehlisel_V : V ; + ehlisel_V2 : V2 ; + ehlisis_V : V ; + ehlisis_V2 : V2 ; + ehluk_V : V ; + ehluk_V2 : V2 ; + ehlukan_V : V ; + ehlukan_V2 : V2 ; + ehlukanis_V : V ; + ehlukanis_V2 : V2 ; + ehlukaniselan_V : V ; + ehlukaniselan_V2 : V2 ; + ehlukekan_V : V ; + ehlukekan_V2 : V2 ; + ehlul_V : V ; + ehlul_V2 : V2 ; + ehlulan_V : V ; + ehlulan_V2 : V2 ; + ehlulek_V : V ; + ehlulek_V2 : V2 ; + ehlulekel_V : V ; + ehlulekel_V2 : V2 ; + ehlulel_V : V ; + ehlulel_V2 : V2 ; + ejwayel_V : V ; + ejwayel_V2 : V2 ; + ejwayelan_V : V ; + ejwayelan_V2 : V2 ; + ejwayelek_V : V ; + ejwayelek_V2 : V2 ; + ejwayez_V : V ; + ejwayez_V2 : V2 ; + ekham_V : V ; + ekham_V2 : V2 ; + ekhamis_V : V ; + ekhamis_V2 : V2 ; + ekhathel_V : V ; + ekhathel_V2 : V2 ; + el_V : V ; + el_V2 : V2 ; + elakanyan_V : V ; + elakanyan_V2 : V2 ; + elakanyis_V : V ; + elakanyis_V2 : V2 ; + elam_V : V ; + elam_V2 : V2 ; + elaman_V : V ; + elaman_V2 : V2 ; + elamanis_V : V ; + elamanis_V2 : V2 ; + elamel_V : V ; + elamel_V2 : V2 ; + elan_V : V ; + elan_V2 : V2 ; + elanel_V : V ; + elanel_V2 : V2 ; + elaph_V : V ; + elaph_V2 : V2 ; + elaphan_V : V ; + elaphan_V2 : V2 ; + elaphek_V : V ; + elaphek_V2 : V2 ; + elaphel_V : V ; + elaphel_V2 : V2 ; + elek_V : V ; + elek_V2 : V2 ; + elekan_V : V ; + elekan_V2 : V2 ; + elekelel_V : V ; + elekelel_V2 : V2 ; + elekelelan_V : V ; + elekelelan_V2 : V2 ; + elel_V : V ; + elel_V2 : V2 ; + elelek_V : V ; + elelek_V2 : V2 ; + elelelek_V : V ; + elelelek_V2 : V2 ; + elis_V : V ; + elis_V2 : V2 ; + elisek_V : V ; + elisek_V2 : V2 ; + elisel_V : V ; + elisel_V2 : V2 ; + eluk_V : V ; + eluk_V2 : V2 ; + elukel_V : V ; + elukel_V2 : V2 ; + elul_V : V ; + elul_V2 : V2 ; + elulalul_V : V ; + elulalul_V2 : V2 ; + elulek_V : V ; + elulek_V2 : V2 ; + elulekel_V : V ; + elulekel_V2 : V2 ; + elus_V : V ; + elus_V2 : V2 ; + elusel_V : V ; + elusel_V2 : V2 ; + eman_V : V ; + eman_V2 : V2 ; + embath_V : V ; + embath_V2 : V2 ; + embathis_V : V ; + embathis_V2 : V2 ; + embes_V : V ; + embes_V2 : V2 ; + embuk_V : V ; + embuk_V2 : V2 ; + embukel_V : V ; + embukel_V2 : V2 ; + embul_V : V ; + embul_V2 : V2 ; + embulek_V : V ; + embulek_V2 : V2 ; + embulel_V : V ; + embulel_V2 : V2 ; + emith_V : V ; + emith_V2 : V2 ; + emithan_V : V ; + emithan_V2 : V2 ; + emithelel_V : V ; + emithelel_V2 : V2 ; + emuk_V : V ; + emuk_V2 : V2 ; + emukel_V : V ; + emukel_V2 : V2 ; + emukelek_V : V ; + emukelek_V2 : V2 ; + emukis_V : V ; + emukis_V2 : V2 ; + en_V : V ; + en_V2 : V2 ; + enab_V : V ; + enab_V2 : V2 ; + enabel_V : V ; + enabel_V2 : V2 ; + enam_V : V ; + enam_V2 : V2 ; + enamel_V : V ; + enamel_V2 : V2 ; + enamis_V : V ; + enamis_V2 : V2 ; + enan_V : V ; + enan_V2 : V2 ; + enanan_V : V ; + enanan_V2 : V2 ; + enanel_V : V ; + enanel_V2 : V2 ; + encik_V : V ; + encik_V2 : V2 ; + encikan_V : V ; + encikan_V2 : V2 ; + end_V : V ; + end_V2 : V2 ; + endel_V : V ; + endel_V2 : V2 ; + endis_V : V ; + endis_V2 : V2 ; + endisel_V : V ; + endisel_V2 : V2 ; + endiselan_V : V ; + endiselan_V2 : V2 ; + endlal_V : V ; + endlal_V2 : V2 ; + endlalek_V : V ; + endlalek_V2 : V2 ; + endlalel_V : V ; + endlalel_V2 : V2 ; + endlul_V : V ; + endlul_V2 : V2 ; + enek_V : V ; + enek_V2 : V2 ; + enekek_V : V ; + enekek_V2 : V2 ; + enekel_V : V ; + enekel_V2 : V2 ; + enel_V : V ; + enel_V2 : V2 ; + enelis_V : V ; + enelis_V2 : V2 ; + enelisek_V : V ; + enelisek_V2 : V2 ; + enezezel_V : V ; + enezezel_V2 : V2 ; + engam_V : V ; + engam_V2 : V2 ; + engaman_V : V ; + engaman_V2 : V2 ; + engamel_V : V ; + engamel_V2 : V2 ; + engamelan_V : V ; + engamelan_V2 : V2 ; + engez_V : V ; + engez_V2 : V2 ; + engul_V : V ; + engul_V2 : V2 ; + enis_V : V ; + enis_V2 : V2 ; + enisan_V : V ; + enisan_V2 : V2 ; + enqab_V : V ; + enqab_V2 : V2 ; + enqabel_V : V ; + enqabel_V2 : V2 ; + enqak_V : V ; + enqak_V2 : V2 ; + enqakisan_V : V ; + enqakisan_V2 : V2 ; + enqen_V : V ; + enqen_V2 : V2 ; + enway_V : V ; + enway_V2 : V2 ; + enyany_V : V ; + enyany_V2 : V2 ; + enyanyek_V : V ; + enyanyek_V2 : V2 ; + enyel_V : V ; + enyel_V2 : V2 ; + enyis_V : V ; + enyis_V2 : V2 ; + enyuk_V : V ; + enyuk_V2 : V2 ; + enyukel_V : V ; + enyukel_V2 : V2 ; + enyus_V : V ; + enyus_V2 : V2 ; + enyusel_V : V ; + enyusel_V2 : V2 ; + enz_V : V ; + enz_V2 : V2 ; + enzakal_V : V ; + enzakal_V2 : V2 ; + enzakalel_V : V ; + enzakalel_V2 : V2 ; + enzakalis_V : V ; + enzakalis_V2 : V2 ; + enzan_V : V ; + enzan_V2 : V2 ; + enzek_V : V ; + enzek_V2 : V2 ; + enzekan_V : V ; + enzekan_V2 : V2 ; + enzekel_V : V ; + enzekel_V2 : V2 ; + enzel_V : V ; + enzel_V2 : V2 ; + enzelan_V : V ; + enzelan_V2 : V2 ; + enzis_V : V ; + enzis_V2 : V2 ; + enzisan_V : V ; + enzisan_V2 : V2 ; + eph_V : V ; + eph_V2 : V2 ; + ephan_V : V ; + ephan_V2 : V2 ; + ephek_V : V ; + ephek_V2 : V2 ; + ephel_V : V ; + ephel_V2 : V2 ; + ephelel_V : V ; + ephelel_V2 : V2 ; + epheph_V : V ; + epheph_V2 : V2 ; + ephephel_V : V ; + ephephel_V2 : V2 ; + ephuc_V : V ; + ephuc_V2 : V2 ; + ephuk_V : V ; + ephuk_V2 : V2 ; + ephukel_V : V ; + ephukel_V2 : V2 ; + ephul_V : V ; + ephul_V2 : V2 ; + ephulel_V : V ; + ephulel_V2 : V2 ; + ephus_V : V ; + ephus_V2 : V2 ; + ephuz_V : V ; + ephuz_V2 : V2 ; + ephuzis_V : V ; + ephuzis_V2 : V2 ; + eq_V : V ; + eq_V2 : V2 ; + eqan_V : V ; + eqan_V2 : V2 ; + eqek_V : V ; + eqek_V2 : V2 ; + eqel_V : V ; + eqel_V2 : V2 ; + eqis_V : V ; + eqis_V2 : V2 ; + es_V : V ; + es_V2 : V2 ; + esab_V : V ; + esab_V2 : V2 ; + esaban_V : V ; + esaban_V2 : V2 ; + esabek_V : V ; + esabek_V2 : V2 ; + esabel_V : V ; + esabel_V2 : V2 ; + esabis_V : V ; + esabis_V2 : V2 ; + esanel_V : V ; + esanel_V2 : V2 ; + esanisan_V : V ; + esanisan_V2 : V2 ; + esas_V : V ; + esas_V2 : V2 ; + esasel_V : V ; + esasel_V2 : V2 ; + esek_V : V ; + esek_V2 : V2 ; + esekan_V : V ; + esekan_V2 : V2 ; + esekel_V : V ; + esekel_V2 : V2 ; + esel_V : V ; + esel_V2 : V2 ; + eselel_V : V ; + eselel_V2 : V2 ; + eshel_V : V ; + eshel_V2 : V2 ; + eshelel_V : V ; + eshelel_V2 : V2 ; + eshwam_V : V ; + eshwam_V2 : V2 ; + esis_V : V ; + esis_V2 : V2 ; + esisel_V : V ; + esisel_V2 : V2 ; + esong_V : V ; + esong_V2 : V2 ; + esongan_V : V ; + esongan_V2 : V2 ; + esongel_V : V ; + esongel_V2 : V2 ; + esuk_V : V ; + esuk_V2 : V2 ; + esukasukel_V : V ; + esukasukel_V2 : V2 ; + esukel_V : V ; + esukel_V2 : V2 ; + esul_V : V ; + esul_V2 : V2 ; + esulel_V : V ; + esulel_V2 : V2 ; + esus_V : V ; + esus_V2 : V2 ; + esusel_V : V ; + esusel_V2 : V2 ; + esuth_V : V ; + esuth_V2 : V2 ; + esuthis_V : V ; + esuthis_V2 : V2 ; + eth_V : V ; + eth_V2 : V2 ; + ethab_V : V ; + ethab_V2 : V2 ; + ethamel_V : V ; + ethamel_V2 : V2 ; + ethan_V : V ; + ethan_V2 : V2 ; + ethekel_V : V ; + ethekel_V2 : V2 ; + ethel_V : V ; + ethel_V2 : V2 ; + ethelek_V : V ; + ethelek_V2 : V2 ; + ethelekel_V : V ; + ethelekel_V2 : V2 ; + ethelel_V : V ; + ethelel_V2 : V2 ; + ethemb_V : V ; + ethemb_V2 : V2 ; + ethemban_V : V ; + ethemban_V2 : V2 ; + ethembek_V : V ; + ethembek_V2 : V2 ; + ethembel_V : V ; + ethembel_V2 : V2 ; + ethembis_V : V ; + ethembis_V2 : V2 ; + ethembisan_V : V ; + ethembisan_V2 : V2 ; + ethimul_V : V ; + ethimul_V2 : V2 ; + ethuk_V : V ; + ethuk_V2 : V2 ; + ethukel_V : V ; + ethukel_V2 : V2 ; + ethukis_V : V ; + ethukis_V2 : V2 ; + ethul_V : V ; + ethul_V2 : V2 ; + ethulek_V : V ; + ethulek_V2 : V2 ; + ethulel_V : V ; + ethulel_V2 : V2 ; + ethus_V : V ; + ethus_V2 : V2 ; + ethusel_V : V ; + ethusel_V2 : V2 ; + ethuselan_V : V ; + ethuselan_V2 : V2 ; + ethwal_V : V ; + ethwal_V2 : V2 ; + ethwas_V : V ; + ethwas_V2 : V2 ; + ethwasel_V : V ; + ethwasel_V2 : V2 ; + ethwes_V : V ; + ethwes_V2 : V2 ; + etshath_V : V ; + etshath_V2 : V2 ; + etshis_V : V ; + etshis_V2 : V2 ; + ev_V : V ; + ev_V2 : V2 ; + evan_V : V ; + evan_V2 : V2 ; + evath_V : V ; + evath_V2 : V2 ; + evel_V : V ; + evel_V2 : V2 ; + evelel_V : V ; + evelel_V2 : V2 ; + ewuk_V : V ; + ewuk_V2 : V2 ; + ewukel_V : V ; + ewukel_V2 : V2 ; + ewus_V : V ; + ewus_V2 : V2 ; + ewusan_V : V ; + ewusan_V2 : V2 ; + ewusel_V : V ; + ewusel_V2 : V2 ; + exaban_V : V ; + exaban_V2 : V2 ; + exway_V : V ; + exway_V2 : V2 ; + exwayis_V : V ; + exwayis_V2 : V2 ; + ey_V : V ; + ey_V2 : V2 ; + eyam_V : V ; + eyam_V2 : V2 ; + eyaman_V : V ; + eyaman_V2 : V2 ; + eyan_V : V ; + eyan_V2 : V2 ; + eyanel_V : V ; + eyanel_V2 : V2 ; + eyek_V : V ; + eyek_V2 : V2 ; + eyis_V : V ; + eyis_V2 : V2 ; + eyisekel_V : V ; + eyisekel_V2 : V2 ; + eyisel_V : V ; + eyisel_V2 : V2 ; + ezel_V : V ; + ezel_V2 : V2 ; + ezelel_V : V ; + ezelel_V2 : V2 ; + f_V : V ; + f_V2 : V2 ; + facaz_V : V ; + facaz_V2 : V2 ; + fadalal_V : V ; + fadalal_V2 : V2 ; + fadalel_V : V ; + fadalel_V2 : V2 ; + fafaz_V : V ; + fafaz_V2 : V2 ; + fahl_V : V ; + fahl_V2 : V2 ; + fahlaz_V : V ; + fahlaz_V2 : V2 ; + fahlazel_V : V ; + fahlazel_V2 : V2 ; + fak_V : V ; + fak_V2 : V2 ; + fakan_V : V ; + fakan_V2 : V2 ; + fakaz_V : V ; + fakaz_V2 : V2 ; + fakazan_V : V ; + fakazan_V2 : V2 ; + fakazel_V : V ; + fakazel_V2 : V2 ; + fakazis_V : V ; + fakazis_V2 : V2 ; + fakel_V : V ; + fakel_V2 : V2 ; + falakahl_V : V ; + falakahl_V2 : V2 ; + falakahlan_V : V ; + falakahlan_V2 : V2 ; + fan_V : V ; + fan_V2 : V2 ; + fanek_V : V ; + fanek_V2 : V2 ; + fanekis_V : V ; + fanekis_V2 : V2 ; + fanel_V : V ; + fanel_V2 : V2 ; + fanelan_V : V ; + fanelan_V2 : V2 ; + fanelek_V : V ; + fanelek_V2 : V2 ; + fanis_V : V ; + fanis_V2 : V2 ; + faniselan_V : V ; + faniselan_V2 : V2 ; + fas_V : V ; + fas_V2 : V2 ; + fay_V : V ; + fay_V2 : V2 ; + faz_V : V ; + faz_V2 : V2 ; + fazan_V : V ; + fazan_V2 : V2 ; + fekel_V : V ; + fekel_V2 : V2 ; + fel_V : V ; + fel_V2 : V2 ; + felel_V : V ; + felel_V2 : V2 ; + fenyis_V : V ; + fenyis_V2 : V2 ; + feyil_V : V ; + feyil_V2 : V2 ; + fez_V : V ; + fez_V2 : V2 ; + fezek_V : V ; + fezek_V2 : V2 ; + fezekis_V : V ; + fezekis_V2 : V2 ; + fezel_V : V ; + fezel_V2 : V2 ; + fic_V : V ; + fic_V2 : V2 ; + fican_V : V ; + fican_V2 : V2 ; + ficel_V : V ; + ficel_V2 : V2 ; + ficezel_V : V ; + ficezel_V2 : V2 ; + fif_V : V ; + fif_V2 : V2 ; + fifan_V : V ; + fifan_V2 : V2 ; + fifiyel_V : V ; + fifiyel_V2 : V2 ; + fihl_V : V ; + fihl_V2 : V2 ; + fihlel_V : V ; + fihlel_V2 : V2 ; + fihliz_V : V ; + fihliz_V2 : V2 ; + fik_V : V ; + fik_V2 : V2 ; + fikek_V : V ; + fikek_V2 : V2 ; + fikel_V : V ; + fikel_V2 : V2 ; + fikis_V : V ; + fikis_V2 : V2 ; + fikisan_V : V ; + fikisan_V2 : V2 ; + fikisel_V : V ; + fikisel_V2 : V2 ; + findis_V : V ; + findis_V2 : V2 ; + fingq_V : V ; + fingq_V2 : V2 ; + fingqan_V : V ; + fingqan_V2 : V2 ; + fininek_V : V ; + fininek_V2 : V2 ; + finy_V : V ; + finy_V2 : V2 ; + finyanisek_V : V ; + finyanisek_V2 : V2 ; + finyel_V : V ; + finyel_V2 : V2 ; + finyelel_V : V ; + finyelel_V2 : V2 ; + finyelelek_V : V ; + finyelelek_V2 : V2 ; + finyez_V : V ; + finyez_V2 : V2 ; + fiphal_V : V ; + fiphal_V2 : V2 ; + fiphaz_V : V ; + fiphaz_V2 : V2 ; + fis_V : V ; + fis_V2 : V2 ; + fisel_V : V ; + fisel_V2 : V2 ; + fiselan_V : V ; + fiselan_V2 : V2 ; + fofobal_V : V ; + fofobal_V2 : V2 ; + fohl_V : V ; + fohl_V2 : V2 ; + fohlofohloz_V : V ; + fohlofohloz_V2 : V2 ; + fohlok_V : V ; + fohlok_V2 : V2 ; + fokozan_V : V ; + fokozan_V2 : V2 ; + fol_V : V ; + fol_V2 : V2 ; + folis_V : V ; + folis_V2 : V2 ; + fucuz_V : V ; + fucuz_V2 : V2 ; + fudumal_V : V ; + fudumal_V2 : V2 ; + fudumez_V : V ; + fudumez_V2 : V2 ; + fuhlelek_V : V ; + fuhlelek_V2 : V2 ; + fukamel_V : V ; + fukamel_V2 : V2 ; + fukul_V : V ; + fukul_V2 : V2 ; + fukulan_V : V ; + fukulan_V2 : V2 ; + fukuz_V : V ; + fukuz_V2 : V2 ; + ful_V : V ; + ful_V2 : V2 ; + fulathel_V : V ; + fulathel_V2 : V2 ; + fulel_V : V ; + fulel_V2 : V2 ; + fum_V : V ; + fum_V2 : V2 ; + fuman_V : V ; + fuman_V2 : V2 ; + fumanis_V : V ; + fumanis_V2 : V2 ; + fumanisek_V : V ; + fumanisek_V2 : V2 ; + fumb_V : V ; + fumb_V2 : V2 ; + fumbath_V : V ; + fumbath_V2 : V2 ; + fumbathis_V : V ; + fumbathis_V2 : V2 ; + fumbek_V : V ; + fumbek_V2 : V2 ; + fumfus_V : V ; + fumfus_V2 : V2 ; + fun_V : V ; + fun_V2 : V2 ; + funafun_V : V ; + funafun_V2 : V2 ; + funakal_V : V ; + funakal_V2 : V2 ; + funan_V : V ; + funan_V2 : V2 ; + fund_V : V ; + fund_V2 : V2 ; + fundam_V : V ; + fundam_V2 : V2 ; + fundek_V : V ; + fundek_V2 : V2 ; + fundekel_V : V ; + fundekel_V2 : V2 ; + fundel_V : V ; + fundel_V2 : V2 ; + fundis_V : V ; + fundis_V2 : V2 ; + fundisan_V : V ; + fundisan_V2 : V2 ; + fundisel_V : V ; + fundisel_V2 : V2 ; + fundisis_V : V ; + fundisis_V2 : V2 ; + funek_V : V ; + funek_V2 : V2 ; + funel_V : V ; + funel_V2 : V2 ; + fung_V : V ; + fung_V2 : V2 ; + fungel_V : V ; + fungel_V2 : V2 ; + fungisis_V : V ; + fungisis_V2 : V2 ; + funis_V : V ; + funis_V2 : V2 ; + funisel_V : V ; + funisel_V2 : V2 ; + funisis_V : V ; + funisis_V2 : V2 ; + funyanis_V : V ; + funyanis_V2 : V2 ; + funyanisek_V : V ; + funyanisek_V2 : V2 ; + funz_V : V ; + funz_V2 : V2 ; + funzan_V : V ; + funzan_V2 : V2 ; + funzel_V : V ; + funzel_V2 : V2 ; + fuqel_V : V ; + fuqel_V2 : V2 ; + fuquk_V : V ; + fuquk_V2 : V2 ; + fuquz_V : V ; + fuquz_V2 : V2 ; + fus_V : V ; + fus_V2 : V2 ; + futh_V : V ; + futh_V2 : V2 ; + futhanisel_V : V ; + futhanisel_V2 : V2 ; + futhek_V : V ; + futhek_V2 : V2 ; + futhel_V : V ; + futhel_V2 : V2 ; + futhelan_V : V ; + futhelan_V2 : V2 ; + fuy_V : V ; + fuy_V2 : V2 ; + fuz_V : V ; + fuz_V2 : V2 ; + fuzis_V : V ; + fuzis_V2 : V2 ; + gab_V : V ; + gab_V2 : V2 ; + gabavul_V : V ; + gabavul_V2 : V2 ; + gabaz_V : V ; + gabaz_V2 : V2 ; + gabh_V : V ; + gabh_V2 : V2 ; + gabhis_V : V ; + gabhis_V2 : V2 ; + gabis_V : V ; + gabis_V2 : V2 ; + gabisel_V : V ; + gabisel_V2 : V2 ; + gad_V : V ; + gad_V2 : V2 ; + gadel_V : V ; + gadel_V2 : V2 ; + gadl_V : V ; + gadl_V2 : V2 ; + gadlel_V : V ; + gadlel_V2 : V2 ; + gadlis_V : V ; + gadlis_V2 : V2 ; + gadul_V : V ; + gadul_V2 : V2 ; + gagamel_V : V ; + gagamel_V2 : V2 ; + gagul_V : V ; + gagul_V2 : V2 ; + gaklaz_V : V ; + gaklaz_V2 : V2 ; + galaz_V : V ; + galaz_V2 : V2 ; + galel_V : V ; + galel_V2 : V2 ; + galelek_V : V ; + galelek_V2 : V2 ; + gamanx_V : V ; + gamanx_V2 : V2 ; + gambaqel_V : V ; + gambaqel_V2 : V2 ; + gamel_V : V ; + gamel_V2 : V2 ; + gan_V : V ; + gan_V2 : V2 ; + ganan_V : V ; + ganan_V2 : V2 ; + gandagand_V : V ; + gandagand_V2 : V2 ; + ganday_V : V ; + ganday_V2 : V2 ; + ganel_V : V ; + ganel_V2 : V2 ; + gang_V : V ; + gang_V2 : V2 ; + gangel_V : V ; + gangel_V2 : V2 ; + gangis_V : V ; + gangis_V2 : V2 ; + gaq_V : V ; + gaq_V2 : V2 ; + gaqan_V : V ; + gaqan_V2 : V2 ; + gaqazel_V : V ; + gaqazel_V2 : V2 ; + gasel_V : V ; + gasel_V2 : V2 ; + gawul_V : V ; + gawul_V2 : V2 ; + gax_V : V ; + gax_V2 : V2 ; + gaxek_V : V ; + gaxek_V2 : V2 ; + gaxel_V : V ; + gaxel_V2 : V2 ; + gay_V : V ; + gay_V2 : V2 ; + gazing_V : V ; + gazing_V2 : V2 ; + gcab_V : V ; + gcab_V2 : V2 ; + gcagc_V : V ; + gcagc_V2 : V2 ; + gcagcel_V : V ; + gcagcel_V2 : V2 ; + gcakagc_V : V ; + gcakagc_V2 : V2 ; + gcakel_V : V ; + gcakel_V2 : V2 ; + gcansel_V : V ; + gcansel_V2 : V2 ; + gcifiz_V : V ; + gcifiz_V2 : V2 ; + gcik_V : V ; + gcik_V2 : V2 ; + gcin_V : V ; + gcin_V2 : V2 ; + gcinan_V : V ; + gcinan_V2 : V2 ; + gcinek_V : V ; + gcinek_V2 : V2 ; + gcinel_V : V ; + gcinel_V2 : V2 ; + gcizelel_V : V ; + gcizelel_V2 : V2 ; + gcizelelek_V : V ; + gcizelelek_V2 : V2 ; + gcob_V : V ; + gcob_V2 : V2 ; + gcobel_V : V ; + gcobel_V2 : V2 ; + gcobh_V : V ; + gcobh_V2 : V2 ; + gcogcom_V : V ; + gcogcom_V2 : V2 ; + gcon_V : V ; + gcon_V2 : V2 ; + gconan_V : V ; + gconan_V2 : V2 ; + gculis_V : V ; + gculis_V2 : V2 ; + gculisek_V : V ; + gculisek_V2 : V2 ; + gcwal_V : V ; + gcwal_V2 : V2 ; + gcwalis_V : V ; + gcwalis_V2 : V2 ; + gcwalisek_V : V ; + gcwalisek_V2 : V2 ; + gcwalisel_V : V ; + gcwalisel_V2 : V2 ; + gcwanek_V : V ; + gcwanek_V2 : V2 ; + gcwelez_V : V ; + gcwelez_V2 : V2 ; + geb_V : V ; + geb_V2 : V2 ; + gebel_V : V ; + gebel_V2 : V2 ; + gebeng_V : V ; + gebeng_V2 : V2 ; + gebhul_V : V ; + gebhul_V2 : V2 ; + gebis_V : V ; + gebis_V2 : V2 ; + gebisel_V : V ; + gebisel_V2 : V2 ; + gedez_V : V ; + gedez_V2 : V2 ; + gedezel_V : V ; + gedezel_V2 : V2 ; + gedl_V : V ; + gedl_V2 : V2 ; + gedlezel_V : V ; + gedlezel_V2 : V2 ; + geg_V : V ; + geg_V2 : V2 ; + gegan_V : V ; + gegan_V2 : V2 ; + gegel_V : V ; + gegel_V2 : V2 ; + gegethek_V : V ; + gegethek_V2 : V2 ; + gej_V : V ; + gej_V2 : V2 ; + gejan_V : V ; + gejan_V2 : V2 ; + gelekeq_V : V ; + gelekeq_V2 : V2 ; + gelekeqek_V : V ; + gelekeqek_V2 : V2 ; + gelez_V : V ; + gelez_V2 : V2 ; + gelezel_V : V ; + gelezel_V2 : V2 ; + gem_V : V ; + gem_V2 : V2 ; + genc_V : V ; + genc_V2 : V2 ; + gencek_V : V ; + gencek_V2 : V2 ; + gend_V : V ; + gend_V2 : V2 ; + gengelez_V : V ; + gengelez_V2 : V2 ; + genqez_V : V ; + genqez_V2 : V2 ; + geq_V : V ; + geq_V2 : V2 ; + geqek_V : V ; + geqek_V2 : V2 ; + geqel_V : V ; + geqel_V2 : V2 ; + geqelan_V : V ; + geqelan_V2 : V2 ; + gevuz_V : V ; + gevuz_V2 : V2 ; + gex_V : V ; + gex_V2 : V2 ; + gez_V : V ; + gez_V2 : V2 ; + gezan_V : V ; + gezan_V2 : V2 ; + gezel_V : V ; + gezel_V2 : V2 ; + gib_V : V ; + gib_V2 : V2 ; + gibanis_V : V ; + gibanis_V2 : V2 ; + gibel_V : V ; + gibel_V2 : V2 ; + gibelan_V : V ; + gibelan_V2 : V2 ; + gibelis_V : V ; + gibelis_V2 : V2 ; + gid_V : V ; + gid_V2 : V2 ; + gidek_V : V ; + gidek_V2 : V2 ; + gidis_V : V ; + gidis_V2 : V2 ; + gidl_V : V ; + gidl_V2 : V2 ; + gidlan_V : V ; + gidlan_V2 : V2 ; + gigithek_V : V ; + gigithek_V2 : V2 ; + gigiyel_V : V ; + gigiyel_V2 : V2 ; + gigizel_V : V ; + gigizel_V2 : V2 ; + gijigijim_V : V ; + gijigijim_V2 : V2 ; + gijim_V : V ; + gijim_V2 : V2 ; + gijimel_V : V ; + gijimel_V2 : V2 ; + gijimis_V : V ; + gijimis_V2 : V2 ; + gil_V : V ; + gil_V2 : V2 ; + gilel_V : V ; + gilel_V2 : V2 ; + gilikidel_V : V ; + gilikidel_V2 : V2 ; + gin_V : V ; + gin_V2 : V2 ; + ging_V : V ; + ging_V2 : V2 ; + gingq_V : V ; + gingq_V2 : V2 ; + gingqik_V : V ; + gingqik_V2 : V2 ; + gingqikel_V : V ; + gingqikel_V2 : V2 ; + ginq_V : V ; + ginq_V2 : V2 ; + gintshoz_V : V ; + gintshoz_V2 : V2 ; + gintshozis_V : V ; + gintshozis_V2 : V2 ; + giy_V : V ; + giy_V2 : V2 ; + gob_V : V ; + gob_V2 : V2 ; + gobh_V : V ; + gobh_V2 : V2 ; + gobhoz_V : V ; + gobhoz_V2 : V2 ; + gobodis_V : V ; + gobodis_V2 : V2 ; + god_V : V ; + god_V2 : V2 ; + godl_V : V ; + godl_V2 : V2 ; + godloz_V : V ; + godloz_V2 : V2 ; + godlozel_V : V ; + godlozel_V2 : V2 ; + godol_V : V ; + godol_V2 : V2 ; + godolel_V : V ; + godolel_V2 : V2 ; + godolis_V : V ; + godolis_V2 : V2 ; + goduk_V : V ; + goduk_V2 : V2 ; + godukel_V : V ; + godukel_V2 : V2 ; + gog_V : V ; + gog_V2 : V2 ; + gogek_V : V ; + gogek_V2 : V2 ; + gogobal_V : V ; + gogobal_V2 : V2 ; + gogod_V : V ; + gogod_V2 : V2 ; + gojan_V : V ; + gojan_V2 : V2 ; + gojel_V : V ; + gojel_V2 : V2 ; + gol_V : V ; + gol_V2 : V2 ; + golel_V : V ; + golel_V2 : V2 ; + goloz_V : V ; + goloz_V2 : V2 ; + golozel_V : V ; + golozel_V2 : V2 ; + gom_V : V ; + gom_V2 : V2 ; + gomel_V : V ; + gomel_V2 : V2 ; + gomothelan_V : V ; + gomothelan_V2 : V2 ; + gon_V : V ; + gon_V2 : V2 ; + gonan_V : V ; + gonan_V2 : V2 ; + gonel_V : V ; + gonel_V2 : V2 ; + gongobal_V : V ; + gongobal_V2 : V2 ; + gonq_V : V ; + gonq_V2 : V2 ; + goq_V : V ; + goq_V2 : V2 ; + goqan_V : V ; + goqan_V2 : V2 ; + goqanan_V : V ; + goqanan_V2 : V2 ; + goqongan_V : V ; + goqongan_V2 : V2 ; + goqoz_V : V ; + goqoz_V2 : V2 ; + gqab_V : V ; + gqab_V2 : V2 ; + gqabel_V : V ; + gqabel_V2 : V2 ; + gqabuk_V : V ; + gqabuk_V2 : V2 ; + gqabukel_V : V ; + gqabukel_V2 : V2 ; + gqabul_V : V ; + gqabul_V2 : V2 ; + gqagqan_V : V ; + gqagqan_V2 : V2 ; + gqagqel_V : V ; + gqagqel_V2 : V2 ; + gqaj_V : V ; + gqaj_V2 : V2 ; + gqam_V : V ; + gqam_V2 : V2 ; + gqamis_V : V ; + gqamis_V2 : V2 ; + gqamuk_V : V ; + gqamuk_V2 : V2 ; + gqashuk_V : V ; + gqashuk_V2 : V2 ; + gqashul_V : V ; + gqashul_V2 : V2 ; + gqekez_V : V ; + gqekez_V2 : V2 ; + gqib_V : V ; + gqib_V2 : V2 ; + gqiban_V : V ; + gqiban_V2 : V2 ; + gqibek_V : V ; + gqibek_V2 : V2 ; + gqibel_V : V ; + gqibel_V2 : V2 ; + gqibuk_V : V ; + gqibuk_V2 : V2 ; + gqigq_V : V ; + gqigq_V2 : V2 ; + gqigqizel_V : V ; + gqigqizel_V2 : V2 ; + gqih_V : V ; + gqih_V2 : V2 ; + gqihis_V : V ; + gqihis_V2 : V2 ; + gqilaz_V : V ; + gqilaz_V2 : V2 ; + gqilazek_V : V ; + gqilazek_V2 : V2 ; + gqinsil_V : V ; + gqinsil_V2 : V2 ; + gqish_V : V ; + gqish_V2 : V2 ; + gqishan_V : V ; + gqishan_V2 : V2 ; + gqishazel_V : V ; + gqishazel_V2 : V2 ; + gqishek_V : V ; + gqishek_V2 : V2 ; + gqiz_V : V ; + gqiz_V2 : V2 ; + gqobhelan_V : V ; + gqobhelan_V2 : V2 ; + gqobhok_V : V ; + gqobhok_V2 : V2 ; + gqobhoz_V : V ; + gqobhoz_V2 : V2 ; + gqogq_V : V ; + gqogq_V2 : V2 ; + gqok_V : V ; + gqok_V2 : V2 ; + gqokan_V : V ; + gqokan_V2 : V2 ; + gqokis_V : V ; + gqokis_V2 : V2 ; + gqoloz_V : V ; + gqoloz_V2 : V2 ; + gqolozel_V : V ; + gqolozel_V2 : V2 ; + gqolozelan_V : V ; + gqolozelan_V2 : V2 ; + gqoz_V : V ; + gqoz_V2 : V2 ; + gqozek_V : V ; + gqozek_V2 : V2 ; + gqub_V : V ; + gqub_V2 : V2 ; + gqugqumez_V : V ; + gqugqumez_V2 : V2 ; + gqugquzel_V : V ; + gqugquzel_V2 : V2 ; + gqul_V : V ; + gqul_V2 : V2 ; + gqum_V : V ; + gqum_V2 : V2 ; + gqumbuz_V : V ; + gqumbuz_V2 : V2 ; + gqumis_V : V ; + gqumis_V2 : V2 ; + gqumuz_V : V ; + gqumuz_V2 : V2 ; + gqwabagqwab_V : V ; + gqwabagqwab_V2 : V2 ; + gqwal_V : V ; + gqwal_V2 : V2 ; + gqwayizelis_V : V ; + gqwayizelis_V2 : V2 ; + gubaz_V : V ; + gubaz_V2 : V2 ; + gubelan_V : V ; + gubelan_V2 : V2 ; + gubh_V : V ; + gubh_V2 : V2 ; + gubhazel_V : V ; + gubhazel_V2 : V2 ; + gubhel_V : V ; + gubhel_V2 : V2 ; + gubhis_V : V ; + gubhis_V2 : V2 ; + gubhuk_V : V ; + gubhuk_V2 : V2 ; + gubuzel_V : V ; + gubuzel_V2 : V2 ; + gud_V : V ; + gud_V2 : V2 ; + gudl_V : V ; + gudl_V2 : V2 ; + gudlan_V : V ; + gudlan_V2 : V2 ; + gudlel_V : V ; + gudlel_V2 : V2 ; + gudlis_V : V ; + gudlis_V2 : V2 ; + gudluk_V : V ; + gudluk_V2 : V2 ; + gudlul_V : V ; + gudlul_V2 : V2 ; + gudlumez_V : V ; + gudlumez_V2 : V2 ; + gudlumezel_V : V ; + gudlumezel_V2 : V2 ; + gudluz_V : V ; + gudluz_V2 : V2 ; + gudluzel_V : V ; + gudluzel_V2 : V2 ; + guduz_V : V ; + guduz_V2 : V2 ; + guduzan_V : V ; + guduzan_V2 : V2 ; + gug_V : V ; + gug_V2 : V2 ; + gugel_V : V ; + gugel_V2 : V2 ; + gugis_V : V ; + gugis_V2 : V2 ; + gugisel_V : V ; + gugisel_V2 : V2 ; + gul_V : V ; + gul_V2 : V2 ; + gulan_V : V ; + gulan_V2 : V2 ; + gulel_V : V ; + gulel_V2 : V2 ; + gulis_V : V ; + gulis_V2 : V2 ; + gulukudel_V : V ; + gulukudel_V2 : V2 ; + gulul_V : V ; + gulul_V2 : V2 ; + gumb_V : V ; + gumb_V2 : V2 ; + gund_V : V ; + gund_V2 : V2 ; + gundan_V : V ; + gundan_V2 : V2 ; + gunquz_V : V ; + gunquz_V2 : V2 ; + gunquzis_V : V ; + gunquzis_V2 : V2 ; + guny_V : V ; + guny_V2 : V2 ; + gunyaz_V : V ; + gunyaz_V2 : V2 ; + gunyel_V : V ; + gunyel_V2 : V2 ; + guq_V : V ; + guq_V2 : V2 ; + guqel_V : V ; + guqel_V2 : V2 ; + guqis_V : V ; + guqis_V2 : V2 ; + guqubal_V : V ; + guqubal_V2 : V2 ; + guqubalis_V : V ; + guqubalis_V2 : V2 ; + guquk_V : V ; + guquk_V2 : V2 ; + guqukel_V : V ; + guqukel_V2 : V2 ; + guqul_V : V ; + guqul_V2 : V2 ; + guqulan_V : V ; + guqulan_V2 : V2 ; + guqulel_V : V ; + guqulel_V2 : V2 ; + gush_V : V ; + gush_V2 : V2 ; + gwab_V : V ; + gwab_V2 : V2 ; + gwac_V : V ; + gwac_V2 : V2 ; + gwajaz_V : V ; + gwajaz_V2 : V2 ; + gwal_V : V ; + gwal_V2 : V2 ; + gwaliz_V : V ; + gwaliz_V2 : V2 ; + gwaq_V : V ; + gwaq_V2 : V2 ; + gwaqan_V : V ; + gwaqan_V2 : V2 ; + gwaqaz_V : V ; + gwaqaz_V2 : V2 ; + gwaqazel_V : V ; + gwaqazel_V2 : V2 ; + gwaqazis_V : V ; + gwaqazis_V2 : V2 ; + gwaqazisan_V : V ; + gwaqazisan_V2 : V2 ; + gwavum_V : V ; + gwavum_V2 : V2 ; + gwavumel_V : V ; + gwavumel_V2 : V2 ; + gwaz_V : V ; + gwaz_V2 : V2 ; + gwazan_V : V ; + gwazan_V2 : V2 ; + gwazek_V : V ; + gwazek_V2 : V2 ; + gwazel_V : V ; + gwazel_V2 : V2 ; + gweb_V : V ; + gweb_V2 : V2 ; + gwegw_V : V ; + gwegw_V2 : V2 ; + gwegwes_V : V ; + gwegwes_V2 : V2 ; + gwem_V : V ; + gwem_V2 : V2 ; + gwemel_V : V ; + gwemel_V2 : V2 ; + gwev_V : V ; + gwev_V2 : V2 ; + gwij_V : V ; + gwij_V2 : V2 ; + gwiliz_V : V ; + gwiliz_V2 : V2 ; + gwilizis_V : V ; + gwilizis_V2 : V2 ; + gwinsizis_V : V ; + gwinsizis_V2 : V2 ; + gwiny_V : V ; + gwiny_V2 : V2 ; + gxadazel_V : V ; + gxadazel_V2 : V2 ; + gxamalaz_V : V ; + gxamalaz_V2 : V2 ; + gxamalazel_V : V ; + gxamalazel_V2 : V2 ; + gxambukel_V : V ; + gxambukel_V2 : V2 ; + gxavul_V : V ; + gxavul_V2 : V2 ; + gxaz_V : V ; + gxaz_V2 : V2 ; + gxek_V : V ; + gxek_V2 : V2 ; + gxil_V : V ; + gxil_V2 : V2 ; + gxilis_V : V ; + gxilis_V2 : V2 ; + gxish_V : V ; + gxish_V2 : V2 ; + gxiviz_V : V ; + gxiviz_V2 : V2 ; + gxob_V : V ; + gxob_V2 : V2 ; + gxobagxob_V : V ; + gxobagxob_V2 : V2 ; + gxum_V : V ; + gxum_V2 : V2 ; + gxumagxum_V : V ; + gxumagxum_V2 : V2 ; + gxumagxumis_V : V ; + gxumagxumis_V2 : V2 ; + gxumek_V : V ; + gxumek_V2 : V2 ; + gxumel_V : V ; + gxumel_V2 : V2 ; + gxumis_V : V ; + gxumis_V2 : V2 ; + gxushekek_V : V ; + gxushekek_V2 : V2 ; + habul_V : V ; + habul_V2 : V2 ; + hahel_V : V ; + hahel_V2 : V2 ; + hahisel_V : V ; + hahisel_V2 : V2 ; + hal_V : V ; + hal_V2 : V2 ; + halakashel_V : V ; + halakashel_V2 : V2 ; + halalis_V : V ; + halalis_V2 : V2 ; + halalisel_V : V ; + halalisel_V2 : V2 ; + halel_V : V ; + halel_V2 : V2 ; + hamb_V : V ; + hamb_V2 : V2 ; + hambahamb_V : V ; + hambahamb_V2 : V2 ; + hambahambel_V : V ; + hambahambel_V2 : V2 ; + hambek_V : V ; + hambek_V2 : V2 ; + hambel_V : V ; + hambel_V2 : V2 ; + hambelan_V : V ; + hambelan_V2 : V2 ; + hambis_V : V ; + hambis_V2 : V2 ; + hambisan_V : V ; + hambisan_V2 : V2 ; + hambisel_V : V ; + hambisel_V2 : V2 ; + hamuk_V : V ; + hamuk_V2 : V2 ; + hangul_V : V ; + hangul_V2 : V2 ; + haq_V : V ; + haq_V2 : V2 ; + hawuk_V : V ; + hawuk_V2 : V2 ; + hawukel_V : V ; + hawukel_V2 : V2 ; + hay_V : V ; + hay_V2 : V2 ; + hayek_V : V ; + hayek_V2 : V2 ; + hayis_V : V ; + hayis_V2 : V2 ; + hayiz_V : V ; + hayiz_V2 : V2 ; + haz_V : V ; + haz_V2 : V2 ; + hebez_V : V ; + hebez_V2 : V2 ; + hefuzel_V : V ; + hefuzel_V2 : V2 ; + heh_V : V ; + heh_V2 : V2 ; + hel_V : V ; + hel_V2 : V2 ; + helez_V : V ; + helez_V2 : V2 ; + hem_V : V ; + hem_V2 : V2 ; + hemel_V : V ; + hemel_V2 : V2 ; + henq_V : V ; + henq_V2 : V2 ; + henqel_V : V ; + henqel_V2 : V2 ; + hhehh_V : V ; + hhehh_V2 : V2 ; + hhem_V : V ; + hhem_V2 : V2 ; + hhewul_V : V ; + hhewul_V2 : V2 ; + hhul_V : V ; + hhul_V2 : V2 ; + hhum_V : V ; + hhum_V2 : V2 ; + hhumuzel_V : V ; + hhumuzel_V2 : V2 ; + hib_V : V ; + hib_V2 : V2 ; + hid_V : V ; + hid_V2 : V2 ; + hil_V : V ; + hil_V2 : V2 ; + hilan_V : V ; + hilan_V2 : V2 ; + hilel_V : V ; + hilel_V2 : V2 ; + hlab_V : V ; + hlab_V2 : V2 ; + hlaban_V : V ; + hlaban_V2 : V2 ; + hlabanis_V : V ; + hlabanis_V2 : V2 ; + hlabek_V : V ; + hlabek_V2 : V2 ; + hlabekis_V : V ; + hlabekis_V2 : V2 ; + hlabel_V : V ; + hlabel_V2 : V2 ; + hlabelel_V : V ; + hlabelel_V2 : V2 ; + hlabelelis_V : V ; + hlabelelis_V2 : V2 ; + hlabis_V : V ; + hlabis_V2 : V2 ; + hlafun_V : V ; + hlafun_V2 : V2 ; + hlahl_V : V ; + hlahl_V2 : V2 ; + hlahlanan_V : V ; + hlahlanan_V2 : V2 ; + hlahlel_V : V ; + hlahlel_V2 : V2 ; + hlahlelek_V : V ; + hlahlelek_V2 : V2 ; + hlakaniph_V : V ; + hlakaniph_V2 : V2 ; + hlakaniphel_V : V ; + hlakaniphel_V2 : V2 ; + hlakaniphis_V : V ; + hlakaniphis_V2 : V2 ; + hlakaz_V : V ; + hlakaz_V2 : V2 ; + hlakazek_V : V ; + hlakazek_V2 : V2 ; + hlakazel_V : V ; + hlakazel_V2 : V2 ; + hlakul_V : V ; + hlakul_V2 : V2 ; + hlakulel_V : V ; + hlakulel_V2 : V2 ; + hlal_V : V ; + hlal_V2 : V2 ; + hlalahlal_V : V ; + hlalahlal_V2 : V2 ; + hlalek_V : V ; + hlalek_V2 : V2 ; + hlalel_V : V ; + hlalel_V2 : V2 ; + hlalis_V : V ; + hlalis_V2 : V2 ; + hlalisan_V : V ; + hlalisan_V2 : V2 ; + hlaluk_V : V ; + hlaluk_V2 : V2 ; + hlamb_V : V ; + hlamb_V2 : V2 ; + hlambalaz_V : V ; + hlambalaz_V2 : V2 ; + hlambuluk_V : V ; + hlambuluk_V2 : V2 ; + hlambulul_V : V ; + hlambulul_V2 : V2 ; + hlamuk_V : V ; + hlamuk_V2 : V2 ; + hlandl_V : V ; + hlandl_V2 : V2 ; + hlanekezel_V : V ; + hlanekezel_V2 : V2 ; + hlanekezelek_V : V ; + hlanekezelek_V2 : V2 ; + hlangabez_V : V ; + hlangabez_V2 : V2 ; + hlangabezan_V : V ; + hlangabezan_V2 : V2 ; + hlangan_V : V ; + hlangan_V2 : V2 ; + hlanganel_V : V ; + hlanganel_V2 : V2 ; + hlanganis_V : V ; + hlanganis_V2 : V2 ; + hlanganisel_V : V ; + hlanganisel_V2 : V2 ; + hlanganyel_V : V ; + hlanganyel_V2 : V2 ; + hlany_V : V ; + hlany_V2 : V2 ; + hlanyan_V : V ; + hlanyan_V2 : V2 ; + hlanyis_V : V ; + hlanyis_V2 : V2 ; + hlanz_V : V ; + hlanz_V2 : V2 ; + hlanzek_V : V ; + hlanzek_V2 : V2 ; + hlaphaz_V : V ; + hlaphaz_V2 : V2 ; + hlasel_V : V ; + hlasel_V2 : V2 ; + hlasimul_V : V ; + hlasimul_V2 : V2 ; + hlasimulis_V : V ; + hlasimulis_V2 : V2 ; + hlawul_V : V ; + hlawul_V2 : V2 ; + hlawulel_V : V ; + hlawulel_V2 : V2 ; + hlawulis_V : V ; + hlawulis_V2 : V2 ; + hlaz_V : V ; + hlaz_V2 : V2 ; + hlazan_V : V ; + hlazan_V2 : V2 ; + hlazek_V : V ; + hlazek_V2 : V2 ; + hlazis_V : V ; + hlazis_V2 : V2 ; + hlaziy_V : V ; + hlaziy_V2 : V2 ; + hlaziyek_V : V ; + hlaziyek_V2 : V2 ; + hleb_V : V ; + hleb_V2 : V2 ; + hleban_V : V ; + hleban_V2 : V2 ; + hlebek_V : V ; + hlebek_V2 : V2 ; + hlebel_V : V ; + hlebel_V2 : V2 ; + hlebez_V : V ; + hlebez_V2 : V2 ; + hlehl_V : V ; + hlehl_V2 : V2 ; + hlehlel_V : V ; + hlehlel_V2 : V2 ; + hlehlis_V : V ; + hlehlis_V2 : V2 ; + hlehlisel_V : V ; + hlehlisel_V2 : V2 ; + hlek_V : V ; + hlek_V2 : V2 ; + hlekel_V : V ; + hlekel_V2 : V2 ; + hlekis_V : V ; + hlekis_V2 : V2 ; + hlekisan_V : V ; + hlekisan_V2 : V2 ; + hlel_V : V ; + hlel_V2 : V2 ; + hlelek_V : V ; + hlelek_V2 : V2 ; + hlelel_V : V ; + hlelel_V2 : V2 ; + hlelemb_V : V ; + hlelemb_V2 : V2 ; + hlelembek_V : V ; + hlelembek_V2 : V2 ; + hlelembel_V : V ; + hlelembel_V2 : V2 ; + hleng_V : V ; + hleng_V2 : V2 ; + hlengezel_V : V ; + hlengezel_V2 : V2 ; + hlephul_V : V ; + hlephul_V2 : V2 ; + hlibik_V : V ; + hlibik_V2 : V2 ; + hlihliz_V : V ; + hlihliz_V2 : V2 ; + hlihlizel_V : V ; + hlihlizel_V2 : V2 ; + hlikihl_V : V ; + hlikihl_V2 : V2 ; + hlikiz_V : V ; + hlikiz_V2 : V2 ; + hlin_V : V ; + hlin_V2 : V2 ; + hlinz_V : V ; + hlinz_V2 : V2 ; + hlinzek_V : V ; + hlinzek_V2 : V2 ; + hlinzekel_V : V ; + hlinzekel_V2 : V2 ; + hlinzel_V : V ; + hlinzel_V2 : V2 ; + hlob_V : V ; + hlob_V2 : V2 ; + hloban_V : V ; + hloban_V2 : V2 ; + hlobis_V : V ; + hlobis_V2 : V2 ; + hlobong_V : V ; + hlobong_V2 : V2 ; + hlohl_V : V ; + hlohl_V2 : V2 ; + hlohlel_V : V ; + hlohlel_V2 : V2 ; + hlohlolozel_V : V ; + hlohlolozel_V2 : V2 ; + hlokom_V : V ; + hlokom_V2 : V2 ; + hlokoz_V : V ; + hlokoz_V2 : V2 ; + hlol_V : V ; + hlol_V2 : V2 ; + hlolahlol_V : V ; + hlolahlol_V2 : V2 ; + hlolek_V : V ; + hlolek_V2 : V2 ; + hlolel_V : V ; + hlolel_V2 : V2 ; + hlolisis_V : V ; + hlolisis_V2 : V2 ; + hlom_V : V ; + hlom_V2 : V2 ; + hlomel_V : V ; + hlomel_V2 : V2 ; + hlomis_V : V ; + hlomis_V2 : V2 ; + hlomul_V : V ; + hlomul_V2 : V2 ; + hlomulis_V : V ; + hlomulis_V2 : V2 ; + hlongoz_V : V ; + hlongoz_V2 : V2 ; + hloniph_V : V ; + hloniph_V2 : V2 ; + hloniphan_V : V ; + hloniphan_V2 : V2 ; + hloniphek_V : V ; + hloniphek_V2 : V2 ; + hlonz_V : V ; + hlonz_V2 : V2 ; + hlos_V : V ; + hlos_V2 : V2 ; + hlub_V : V ; + hlub_V2 : V2 ; + hlubuk_V : V ; + hlubuk_V2 : V2 ; + hlubukis_V : V ; + hlubukis_V2 : V2 ; + hlubul_V : V ; + hlubul_V2 : V2 ; + hluk_V : V ; + hluk_V2 : V2 ; + hlukan_V : V ; + hlukan_V2 : V2 ; + hlukanis_V : V ; + hlukanis_V2 : V2 ; + hlukanisel_V : V ; + hlukanisel_V2 : V2 ; + hlukaniselan_V : V ; + hlukaniselan_V2 : V2 ; + hlukel_V : V ; + hlukel_V2 : V2 ; + hlukumez_V : V ; + hlukumez_V2 : V2 ; + hlul_V : V ; + hlul_V2 : V2 ; + hlulan_V : V ; + hlulan_V2 : V2 ; + hlulek_V : V ; + hlulek_V2 : V2 ; + hlulel_V : V ; + hlulel_V2 : V2 ; + hlum_V : V ; + hlum_V2 : V2 ; + hlumis_V : V ; + hlumis_V2 : V2 ; + hlunam_V : V ; + hlunam_V2 : V2 ; + hlung_V : V ; + hlung_V2 : V2 ; + hluph_V : V ; + hluph_V2 : V2 ; + hluphahluph_V : V ; + hluphahluph_V2 : V2 ; + hluphek_V : V ; + hluphek_V2 : V2 ; + hluphekel_V : V ; + hluphekel_V2 : V2 ; + hluphel_V : V ; + hluphel_V2 : V2 ; + hluphelan_V : V ; + hluphelan_V2 : V2 ; + hluthuk_V : V ; + hluthuk_V2 : V2 ; + hluthul_V : V ; + hluthul_V2 : V2 ; + hluthulel_V : V ; + hluthulel_V2 : V2 ; + hluz_V : V ; + hluz_V2 : V2 ; + hluzek_V : V ; + hluzek_V2 : V2 ; + hlw_V : V ; + hlw_V2 : V2 ; + hlwabus_V : V ; + hlwabus_V2 : V2 ; + hlwanyel_V : V ; + hlwanyel_V2 : V2 ; + hlwathiz_V : V ; + hlwathiz_V2 : V2 ; + hlway_V : V ; + hlway_V2 : V2 ; + hlwayel_V : V ; + hlwayel_V2 : V2 ; + hlwel_V : V ; + hlwel_V2 : V2 ; + hlweng_V : V ; + hlweng_V2 : V2 ; + hlwengis_V : V ; + hlwengis_V2 : V2 ; + hlwis_V : V ; + hlwis_V2 : V2 ; + hlwith_V : V ; + hlwith_V2 : V2 ; + hob_V : V ; + hob_V2 : V2 ; + hobis_V : V ; + hobis_V2 : V2 ; + hogel_V : V ; + hogel_V2 : V2 ; + hogelis_V : V ; + hogelis_V2 : V2 ; + hol_V : V ; + hol_V2 : V2 ; + holan_V : V ; + holan_V2 : V2 ; + holel_V : V ; + holel_V2 : V2 ; + hon_V : V ; + hon_V2 : V2 ; + honq_V : V ; + honq_V2 : V2 ; + hosh_V : V ; + hosh_V2 : V2 ; + hoshek_V : V ; + hoshek_V2 : V2 ; + hoshelan_V : V ; + hoshelan_V2 : V2 ; + hoshobal_V : V ; + hoshobal_V2 : V2 ; + hoshoz_V : V ; + hoshoz_V2 : V2 ; + hoshuk_V : V ; + hoshuk_V2 : V2 ; + hox_V : V ; + hox_V2 : V2 ; + hoxelek_V : V ; + hoxelek_V2 : V2 ; + hoxis_V : V ; + hoxis_V2 : V2 ; + hoz_V : V ; + hoz_V2 : V2 ; + hub_V : V ; + hub_V2 : V2 ; + hubel_V : V ; + hubel_V2 : V2 ; + hubh_V : V ; + hubh_V2 : V2 ; + hubhan_V : V ; + hubhan_V2 : V2 ; + hudul_V : V ; + hudul_V2 : V2 ; + hudulan_V : V ; + hudulan_V2 : V2 ; + huh_V : V ; + huh_V2 : V2 ; + huhek_V : V ; + huhek_V2 : V2 ; + huhuluz_V : V ; + huhuluz_V2 : V2 ; + hul_V : V ; + hul_V2 : V2 ; + hulul_V : V ; + hulul_V2 : V2 ; + humush_V : V ; + humush_V2 : V2 ; + humushek_V : V ; + humushek_V2 : V2 ; + humushel_V : V ; + humushel_V2 : V2 ; + hung_V : V ; + hung_V2 : V2 ; + huq_V : V ; + huq_V2 : V2 ; + hush_V : V ; + hush_V2 : V2 ; + hushuz_V : V ; + hushuz_V2 : V2 ; + huzuk_V : V ; + huzuk_V2 : V2 ; + hwabhek_V : V ; + hwabhek_V2 : V2 ; + hwalal_V : V ; + hwalal_V2 : V2 ; + hwamuk_V : V ; + hwamuk_V2 : V2 ; + hwaphuluz_V : V ; + hwaphuluz_V2 : V2 ; + hwaqabal_V : V ; + hwaqabal_V2 : V2 ; + hwathuzel_V : V ; + hwathuzel_V2 : V2 ; + hwathuzis_V : V ; + hwathuzis_V2 : V2 ; + hweb_V : V ; + hweb_V2 : V2 ; + hwelel_V : V ; + hwelel_V2 : V2 ; + hwith_V : V ; + hwith_V2 : V2 ; + indla_V : V ; + indla_V2 : V2 ; + jabh_V : V ; + jabh_V2 : V2 ; + jabhis_V : V ; + jabhis_V2 : V2 ; + jabul_V : V ; + jabul_V2 : V2 ; + jabulel_V : V ; + jabulel_V2 : V2 ; + jabulis_V : V ; + jabulis_V2 : V2 ; + jabulisan_V : V ; + jabulisan_V2 : V2 ; + jah_V : V ; + jah_V2 : V2 ; + jahek_V : V ; + jahek_V2 : V2 ; + jahel_V : V ; + jahel_V2 : V2 ; + jaj_V : V ; + jaj_V2 : V2 ; + jak_V : V ; + jak_V2 : V2 ; + jakaj_V : V ; + jakaj_V2 : V2 ; + jam_V : V ; + jam_V2 : V2 ; + jamel_V : V ; + jamel_V2 : V2 ; + jamelan_V : V ; + jamelan_V2 : V2 ; + jeng_V : V ; + jeng_V2 : V2 ; + jeqez_V : V ; + jeqez_V2 : V2 ; + jez_V : V ; + jez_V2 : V2 ; + jezan_V : V ; + jezan_V2 : V2 ; + jezis_V : V ; + jezis_V2 : V2 ; + jib_V : V ; + jib_V2 : V2 ; + jijan_V : V ; + jijan_V2 : V2 ; + jijimez_V : V ; + jijimez_V2 : V2 ; + jik_V : V ; + jik_V2 : V2 ; + jikajik_V : V ; + jikajik_V2 : V2 ; + jikel_V : V ; + jikel_V2 : V2 ; + jikelel_V : V ; + jikelel_V2 : V2 ; + jikelez_V : V ; + jikelez_V2 : V2 ; + jikijel_V : V ; + jikijel_V2 : V2 ; + jikijelek_V : V ; + jikijelek_V2 : V2 ; + jikis_V : V ; + jikis_V2 : V2 ; + jikiz_V : V ; + jikiz_V2 : V2 ; + jikizis_V : V ; + jikizis_V2 : V2 ; + jing_V : V ; + jing_V2 : V2 ; + jivaz_V : V ; + jivaz_V2 : V2 ; + jiy_V : V ; + jiy_V2 : V2 ; + jiyez_V : V ; + jiyez_V2 : V2 ; + job_V : V ; + job_V2 : V2 ; + jobelel_V : V ; + jobelel_V2 : V2 ; + joj_V : V ; + joj_V2 : V2 ; + jok_V : V ; + jok_V2 : V2 ; + jokol_V : V ; + jokol_V2 : V2 ; + jolozel_V : V ; + jolozel_V2 : V2 ; + jomb_V : V ; + jomb_V2 : V2 ; + jong_V : V ; + jong_V2 : V2 ; + joqel_V : V ; + joqel_V2 : V2 ; + joyin_V : V ; + joyin_V2 : V2 ; + jub_V : V ; + jub_V2 : V2 ; + jubalal_V : V ; + jubalal_V2 : V2 ; + juban_V : V ; + juban_V2 : V2 ; + jubek_V : V ; + jubek_V2 : V2 ; + jubel_V : V ; + jubel_V2 : V2 ; + jukujel_V : V ; + jukujel_V2 : V2 ; + jul_V : V ; + jul_V2 : V2 ; + julis_V : V ; + julis_V2 : V2 ; + juluk_V : V ; + juluk_V2 : V2 ; + julukel_V : V ; + julukel_V2 : V2 ; + julukis_V : V ; + julukis_V2 : V2 ; + jum_V : V ; + jum_V2 : V2 ; + jumek_V : V ; + jumek_V2 : V2 ; + juq_V : V ; + juq_V2 : V2 ; + juquk_V : V ; + juquk_V2 : V2 ; + juzis_V : V ; + juzis_V2 : V2 ; + jwaphun_V : V ; + jwaphun_V2 : V2 ; + jwayel_V : V ; + jwayel_V2 : V2 ; + jwayelan_V : V ; + jwayelan_V2 : V2 ; + jwayelek_V : V ; + jwayelek_V2 : V2 ; + jwayez_V : V ; + jwayez_V2 : V2 ; + kab_V : V ; + kab_V2 : V2 ; + kaban_V : V ; + kaban_V2 : V2 ; + kabek_V : V ; + kabek_V2 : V2 ; + kabhanan_V : V ; + kabhanan_V2 : V2 ; + kabhek_V : V ; + kabhek_V2 : V2 ; + kak_V : V ; + kak_V2 : V2 ; + kal_V : V ; + kal_V2 : V2 ; + kalel_V : V ; + kalel_V2 : V2 ; + kam_V : V ; + kam_V2 : V2 ; + kamel_V : V ; + kamel_V2 : V2 ; + kamelek_V : V ; + kamelek_V2 : V2 ; + kanis_V : V ; + kanis_V2 : V2 ; + kap_V : V ; + kap_V2 : V2 ; + kapak_V : V ; + kapak_V2 : V2 ; + kekel_V : V ; + kekel_V2 : V2 ; + kekelel_V : V ; + kekelel_V2 : V2 ; + kel_V : V ; + kel_V2 : V2 ; + kelan_V : V ; + kelan_V2 : V2 ; + kelek_V : V ; + kelek_V2 : V2 ; + kelel_V : V ; + kelel_V2 : V2 ; + ketshez_V : V ; + ketshez_V2 : V2 ; + ketul_V : V ; + ketul_V2 : V2 ; + kh_V : V ; + kh_V2 : V2 ; + khab_V : V ; + khab_V2 : V2 ; + khabel_V : V ; + khabel_V2 : V2 ; + khabuzel_V : V ; + khabuzel_V2 : V2 ; + khac_V : V ; + khac_V2 : V2 ; + khaful_V : V ; + khaful_V2 : V2 ; + khafulel_V : V ; + khafulel_V2 : V2 ; + khahl_V : V ; + khahl_V2 : V2 ; + khahlel_V : V ; + khahlel_V2 : V2 ; + khahlelek_V : V ; + khahlelek_V2 : V2 ; + khakh_V : V ; + khakh_V2 : V2 ; + khakhabis_V : V ; + khakhabis_V2 : V2 ; + khakhabisel_V : V ; + khakhabisel_V2 : V2 ; + khakhan_V : V ; + khakhan_V2 : V2 ; + khal_V : V ; + khal_V2 : V2 ; + khalakathel_V : V ; + khalakathel_V2 : V2 ; + khalek_V : V ; + khalek_V2 : V2 ; + khalel_V : V ; + khalel_V2 : V2 ; + khalelis_V : V ; + khalelis_V2 : V2 ; + khalim_V : V ; + khalim_V2 : V2 ; + khaliph_V : V ; + khaliph_V2 : V2 ; + khaliphel_V : V ; + khaliphel_V2 : V2 ; + khaliphis_V : V ; + khaliphis_V2 : V2 ; + khalis_V : V ; + khalis_V2 : V2 ; + kham_V : V ; + kham_V2 : V2 ; + khamelel_V : V ; + khamelel_V2 : V2 ; + khamis_V : V ; + khamis_V2 : V2 ; + khan_V : V ; + khan_V2 : V2 ; + khand_V : V ; + khand_V2 : V2 ; + khandan_V : V ; + khandan_V2 : V2 ; + khandanis_V : V ; + khandanis_V2 : V2 ; + khandel_V : V ; + khandel_V2 : V2 ; + khandl_V : V ; + khandl_V2 : V2 ; + khandlek_V : V ; + khandlek_V2 : V2 ; + khandlel_V : V ; + khandlel_V2 : V2 ; + khang_V : V ; + khang_V2 : V2 ; + khangel_V : V ; + khangel_V2 : V2 ; + khangelan_V : V ; + khangelan_V2 : V2 ; + khangez_V : V ; + khangez_V2 : V2 ; + khangis_V : V ; + khangis_V2 : V2 ; + khankas_V : V ; + khankas_V2 : V2 ; + khankasel_V : V ; + khankasel_V2 : V2 ; + khanulel_V : V ; + khanulel_V2 : V2 ; + khany_V : V ; + khany_V2 : V2 ; + khanyel_V : V ; + khanyel_V2 : V2 ; + khanyis_V : V ; + khanyis_V2 : V2 ; + khanyisel_V : V ; + khanyisel_V2 : V2 ; + khaph_V : V ; + khaph_V2 : V2 ; + khaphez_V : V ; + khaphez_V2 : V2 ; + khaphezan_V : V ; + khaphezan_V2 : V2 ; + khas_V : V ; + khas_V2 : V2 ; + khasel_V : V ; + khasel_V2 : V2 ; + khath_V : V ; + khath_V2 : V2 ; + khathal_V : V ; + khathal_V2 : V2 ; + khathalek_V : V ; + khathalek_V2 : V2 ; + khathalel_V : V ; + khathalel_V2 : V2 ; + khathaz_V : V ; + khathaz_V2 : V2 ; + khathazek_V : V ; + khathazek_V2 : V2 ; + khathel_V : V ; + khathel_V2 : V2 ; + khawul_V : V ; + khawul_V2 : V2 ; + khazimul_V : V ; + khazimul_V2 : V2 ; + khedamis_V : V ; + khedamis_V2 : V2 ; + khefuzel_V : V ; + khefuzel_V2 : V2 ; + khehl_V : V ; + khehl_V2 : V2 ; + khehlek_V : V ; + khehlek_V2 : V2 ; + khehlezis_V : V ; + khehlezis_V2 : V2 ; + khek_V : V ; + khek_V2 : V2 ; + khel_V : V ; + khel_V2 : V2 ; + khelan_V : V ; + khelan_V2 : V2 ; + khelek_V : V ; + khelek_V2 : V2 ; + khelel_V : V ; + khelel_V2 : V2 ; + khemezelis_V : V ; + khemezelis_V2 : V2 ; + khencez_V : V ; + khencez_V2 : V2 ; + khendlel_V : V ; + khendlel_V2 : V2 ; + khes_V : V ; + khes_V2 : V2 ; + kheth_V : V ; + kheth_V2 : V2 ; + khethek_V : V ; + khethek_V2 : V2 ; + khethel_V : V ; + khethel_V2 : V2 ; + khex_V : V ; + khex_V2 : V2 ; + khexel_V : V ; + khexel_V2 : V2 ; + khihl_V : V ; + khihl_V2 : V2 ; + khihlel_V : V ; + khihlel_V2 : V2 ; + khihlik_V : V ; + khihlik_V2 : V2 ; + khihliz_V : V ; + khihliz_V2 : V2 ; + khilikithel_V : V ; + khilikithel_V2 : V2 ; + khind_V : V ; + khind_V2 : V2 ; + khinindel_V : V ; + khinindel_V2 : V2 ; + khinyabezek_V : V ; + khinyabezek_V2 : V2 ; + khiph_V : V ; + khiph_V2 : V2 ; + khiphel_V : V ; + khiphel_V2 : V2 ; + khiphis_V : V ; + khiphis_V2 : V2 ; + khiqiz_V : V ; + khiqiz_V2 : V2 ; + khiqizel_V : V ; + khiqizel_V2 : V2 ; + khithizel_V : V ; + khithizel_V2 : V2 ; + khiy_V : V ; + khiy_V2 : V2 ; + khiz_V : V ; + khiz_V2 : V2 ; + khohlakal_V : V ; + khohlakal_V2 : V2 ; + khohlakalek_V : V ; + khohlakalek_V2 : V2 ; + khohlan_V : V ; + khohlan_V2 : V2 ; + khohlek_V : V ; + khohlek_V2 : V2 ; + khohlis_V : V ; + khohlis_V2 : V2 ; + khohlisan_V : V ; + khohlisan_V2 : V2 ; + khohlisek_V : V ; + khohlisek_V2 : V2 ; + khohlisel_V : V ; + khohlisel_V2 : V2 ; + khokh_V : V ; + khokh_V2 : V2 ; + khokhel_V : V ; + khokhel_V2 : V2 ; + khokhis_V : V ; + khokhis_V2 : V2 ; + khokhisel_V : V ; + khokhisel_V2 : V2 ; + khokhob_V : V ; + khokhob_V2 : V2 ; + khokhobel_V : V ; + khokhobel_V2 : V2 ; + kholek_V : V ; + kholek_V2 : V2 ; + kholis_V : V ; + kholis_V2 : V2 ; + kholisek_V : V ; + kholisek_V2 : V2 ; + -- kholw_V : V ; + -- kholw_V2 : V2 ; + khomb_V : V ; + khomb_V2 : V2 ; + khomban_V : V ; + khomban_V2 : V2 ; + khombel_V : V ; + khombel_V2 : V2 ; + khombis_V : V ; + khombis_V2 : V2 ; + khombisan_V : V ; + khombisan_V2 : V2 ; + khombisis_V : V ; + khombisis_V2 : V2 ; + khonel_V : V ; + khonel_V2 : V2 ; + khong_V : V ; + khong_V2 : V2 ; + khonkel_V : V ; + khonkel_V2 : V2 ; + khonkobal_V : V ; + khonkobal_V2 : V2 ; + khonkoth_V : V ; + khonkoth_V2 : V2 ; + khonkothis_V : V ; + khonkothis_V2 : V2 ; + khonon_V : V ; + khonon_V2 : V2 ; + khonond_V : V ; + khonond_V2 : V2 ; + khony_V : V ; + khony_V2 : V2 ; + khonyan_V : V ; + khonyan_V2 : V2 ; + khonz_V : V ; + khonz_V2 : V2 ; + khonzan_V : V ; + khonzan_V2 : V2 ; + khonzel_V : V ; + khonzel_V2 : V2 ; + khonzisel_V : V ; + khonzisel_V2 : V2 ; + khophoz_V : V ; + khophoz_V2 : V2 ; + khophozel_V : V ; + khophozel_V2 : V2 ; + khosel_V : V ; + khosel_V2 : V2 ; + khoselek_V : V ; + khoselek_V2 : V2 ; + khoselis_V : V ; + khoselis_V2 : V2 ; + khoth_V : V ; + khoth_V2 : V2 ; + khotham_V : V ; + khotham_V2 : V2 ; + khothamel_V : V ; + khothamel_V2 : V2 ; + khothamis_V : V ; + khothamis_V2 : V2 ; + khothis_V : V ; + khothis_V2 : V2 ; + khothisis_V : V ; + khothisis_V2 : V2 ; + khothuluz_V : V ; + khothuluz_V2 : V2 ; + khov_V : V ; + khov_V2 : V2 ; + khox_V : V ; + khox_V2 : V2 ; + khoxan_V : V ; + khoxan_V2 : V2 ; + khoz_V : V ; + khoz_V2 : V2 ; + khub_V : V ; + khub_V2 : V2 ; + khubaz_V : V ; + khubaz_V2 : V2 ; + khubazek_V : V ; + khubazek_V2 : V2 ; + khubek_V : V ; + khubek_V2 : V2 ; + khubekis_V : V ; + khubekis_V2 : V2 ; + khuculul_V : V ; + khuculul_V2 : V2 ; + khuhl_V : V ; + khuhl_V2 : V2 ; + khuhlan_V : V ; + khuhlan_V2 : V2 ; + khukhul_V : V ; + khukhul_V2 : V2 ; + khukhumal_V : V ; + khukhumal_V2 : V2 ; + khukhumalis_V : V ; + khukhumalis_V2 : V2 ; + khukhumez_V : V ; + khukhumez_V2 : V2 ; + khul_V : V ; + khul_V2 : V2 ; + khulakhul_V : V ; + khulakhul_V2 : V2 ; + khulek_V : V ; + khulek_V2 : V2 ; + khulekel_V : V ; + khulekel_V2 : V2 ; + khulekis_V : V ; + khulekis_V2 : V2 ; + khulel_V : V ; + khulel_V2 : V2 ; + khulis_V : V ; + khulis_V2 : V2 ; + khulisek_V : V ; + khulisek_V2 : V2 ; + khulisel_V : V ; + khulisel_V2 : V2 ; + khulukhulum_V : V ; + khulukhulum_V2 : V2 ; + khulul_V : V ; + khulul_V2 : V2 ; + khululek_V : V ; + khululek_V2 : V2 ; + khululel_V : V ; + khululel_V2 : V2 ; + khulum_V : V ; + khulum_V2 : V2 ; + khulumel_V : V ; + khulumel_V2 : V2 ; + khulumis_V : V ; + khulumis_V2 : V2 ; + khulumisan_V : V ; + khulumisan_V2 : V2 ; + khuluphal_V : V ; + khuluphal_V2 : V2 ; + khumbul_V : V ; + khumbul_V2 : V2 ; + khumbulek_V : V ; + khumbulek_V2 : V2 ; + khumbuz_V : V ; + khumbuz_V2 : V2 ; + khumbuzan_V : V ; + khumbuzan_V2 : V2 ; + khumuk_V : V ; + khumuk_V2 : V2 ; + khumukan_V : V ; + khumukan_V2 : V2 ; + khumul_V : V ; + khumul_V2 : V2 ; + khumulel_V : V ; + khumulel_V2 : V2 ; + khumulis_V : V ; + khumulis_V2 : V2 ; + khumuzek_V : V ; + khumuzek_V2 : V2 ; + khun_V : V ; + khun_V2 : V2 ; + khung_V : V ; + khung_V2 : V2 ; + khungath_V : V ; + khungath_V2 : V2 ; + khungathek_V : V ; + khungathek_V2 : V2 ; + khunkul_V : V ; + khunkul_V2 : V2 ; + khunt_V : V ; + khunt_V2 : V2 ; + khuphuk_V : V ; + khuphuk_V2 : V2 ; + khuphukel_V : V ; + khuphukel_V2 : V2 ; + khuphul_V : V ; + khuphul_V2 : V2 ; + khuphulel_V : V ; + khuphulel_V2 : V2 ; + khushuz_V : V ; + khushuz_V2 : V2 ; + khuth_V : V ; + khuth_V2 : V2 ; + khuthal_V : V ; + khuthal_V2 : V2 ; + khuthalel_V : V ; + khuthalel_V2 : V2 ; + khuthaz_V : V ; + khuthaz_V2 : V2 ; + khuthazek_V : V ; + khuthazek_V2 : V2 ; + khuthel_V : V ; + khuthel_V2 : V2 ; + khuthuz_V : V ; + khuthuz_V2 : V2 ; + khuxuzek_V : V ; + khuxuzek_V2 : V2 ; + khuz_V : V ; + khuz_V2 : V2 ; + khuzel_V : V ; + khuzel_V2 : V2 ; + khwabanisel_V : V ; + khwabanisel_V2 : V2 ; + khwahl_V : V ; + khwahl_V2 : V2 ; + khwanyan_V : V ; + khwanyan_V2 : V2 ; + khwashaz_V : V ; + khwashaz_V2 : V2 ; + khwashazel_V : V ; + khwashazel_V2 : V2 ; + khwathaz_V : V ; + khwathaz_V2 : V2 ; + khwebezan_V : V ; + khwebezan_V2 : V2 ; + khwebul_V : V ; + khwebul_V2 : V2 ; + khwec_V : V ; + khwec_V2 : V2 ; + khwecel_V : V ; + khwecel_V2 : V2 ; + khwehlel_V : V ; + khwehlel_V2 : V2 ; + khwehlelis_V : V ; + khwehlelis_V2 : V2 ; + khwel_V : V ; + khwel_V2 : V2 ; + khwelek_V : V ; + khwelek_V2 : V2 ; + khwelel_V : V ; + khwelel_V2 : V2 ; + khwelez_V : V ; + khwelez_V2 : V2 ; + khwemb_V : V ; + khwemb_V2 : V2 ; + khwesh_V : V ; + khwesh_V2 : V2 ; + khwez_V : V ; + khwez_V2 : V2 ; + khwezel_V : V ; + khwezel_V2 : V2 ; + khwibiz_V : V ; + khwibiz_V2 : V2 ; + khwif_V : V ; + khwif_V2 : V2 ; + khwishiz_V : V ; + khwishiz_V2 : V2 ; + khwix_V : V ; + khwix_V2 : V2 ; + kikilig_V : V ; + kikilig_V2 : V2 ; + kikiliz_V : V ; + kikiliz_V2 : V2 ; + kikiz_V : V ; + kikiz_V2 : V2 ; + kikizel_V : V ; + kikizel_V2 : V2 ; + kipit_V : V ; + kipit_V2 : V2 ; + kitaz_V : V ; + kitaz_V2 : V2 ; + kitazek_V : V ; + kitazek_V2 : V2 ; + klab_V : V ; + klab_V2 : V2 ; + klabalas_V : V ; + klabalas_V2 : V2 ; + klabel_V : V ; + klabel_V2 : V2 ; + klabh_V : V ; + klabh_V2 : V2 ; + kladulis_V : V ; + kladulis_V2 : V2 ; + klas_V : V ; + klas_V2 : V2 ; + klebhul_V : V ; + klebhul_V2 : V2 ; + klekl_V : V ; + klekl_V2 : V2 ; + klel_V : V ; + klel_V2 : V2 ; + kliny_V : V ; + kliny_V2 : V2 ; + klolod_V : V ; + klolod_V2 : V2 ; + klolodel_V : V ; + klolodel_V2 : V2 ; + kloz_V : V ; + kloz_V2 : V2 ; + kluny_V : V ; + kluny_V2 : V2 ; + klwebh_V : V ; + klwebh_V2 : V2 ; + klwebhel_V : V ; + klwebhel_V2 : V2 ; + klwel_V : V ; + klwel_V2 : V2 ; + kok_V : V ; + kok_V2 : V2 ; + kokel_V : V ; + kokel_V2 : V2 ; + kolobh_V : V ; + kolobh_V2 : V2 ; + kopel_V : V ; + kopel_V2 : V2 ; + kotiz_V : V ; + kotiz_V2 : V2 ; + kotoz_V : V ; + kotoz_V2 : V2 ; + kukufanis_V : V ; + kukufanis_V2 : V2 ; + kukuzekel_V : V ; + kukuzekel_V2 : V2 ; + kwapun_V : V ; + kwapun_V2 : V2 ; + kweletel_V : V ; + kweletel_V2 : V2 ; + kweletis_V : V ; + kweletis_V2 : V2 ; + kweq_V : V ; + kweq_V2 : V2 ; + kweqel_V : V ; + kweqel_V2 : V2 ; + kweqis_V : V ; + kweqis_V2 : V2 ; + kwitiz_V : V ; + kwitiz_V2 : V2 ; + labalab_V : V ; + labalab_V2 : V2 ; + labalabel_V : V ; + labalabel_V2 : V2 ; + labathek_V : V ; + labathek_V2 : V2 ; + lahl_V : V ; + lahl_V2 : V2 ; + lahlan_V : V ; + lahlan_V2 : V2 ; + lahlek_V : V ; + lahlek_V2 : V2 ; + lahlekel_V : V ; + lahlekel_V2 : V2 ; + lahlekis_V : V ; + lahlekis_V2 : V2 ; + lahlekisel_V : V ; + lahlekisel_V2 : V2 ; + lahlel_V : V ; + lahlel_V2 : V2 ; + lal_V : V ; + lal_V2 : V2 ; + lalan_V : V ; + lalan_V2 : V2 ; + lalel_V : V ; + lalel_V2 : V2 ; + lalelis_V : V ; + lalelis_V2 : V2 ; + lalelisis_V : V ; + lalelisis_V2 : V2 ; + lalis_V : V ; + lalis_V2 : V2 ; + lamb_V : V ; + lamb_V2 : V2 ; + lambath_V : V ; + lambath_V2 : V2 ; + lambek_V : V ; + lambek_V2 : V2 ; + lambel_V : V ; + lambel_V2 : V2 ; + lambis_V : V ; + lambis_V2 : V2 ; + lambiz_V : V ; + lambiz_V2 : V2 ; + lamul_V : V ; + lamul_V2 : V2 ; + lamulel_V : V ; + lamulel_V2 : V2 ; + land_V : V ; + land_V2 : V2 ; + landaland_V : V ; + landaland_V2 : V2 ; + landel_V : V ; + landel_V2 : V2 ; + landelan_V : V ; + landelan_V2 : V2 ; + landelandel_V : V ; + landelandel_V2 : V2 ; + landelel_V : V ; + landelel_V2 : V2 ; + landelis_V : V ; + landelis_V2 : V2 ; + landelisis_V : V ; + landelisis_V2 : V2 ; + landis_V : V ; + landis_V2 : V2 ; + landul_V : V ; + landul_V2 : V2 ; + landulel_V : V ; + landulel_V2 : V2 ; + langazel_V : V ; + langazel_V2 : V2 ; + langazelel_V : V ; + langazelel_V2 : V2 ; + languk_V : V ; + languk_V2 : V2 ; + lanq_V : V ; + lanq_V2 : V2 ; + lawul_V : V ; + lawul_V2 : V2 ; + lay_V : V ; + lay_V2 : V2 ; + layek_V : V ; + layek_V2 : V2 ; + layel_V : V ; + layel_V2 : V2 ; + layez_V : V ; + layez_V2 : V2 ; + layezel_V : V ; + layezel_V2 : V2 ; + layish_V : V ; + layish_V2 : V2 ; + layishis_V : V ; + layishis_V2 : V2 ; + layisis_V : V ; + layisis_V2 : V2 ; + laz_V : V ; + laz_V2 : V2 ; + lazis_V : V ; + lazis_V2 : V2 ; + leb_V : V ; + leb_V2 : V2 ; + lekelel_V : V ; + lekelel_V2 : V2 ; + lekelelan_V : V ; + lekelelan_V2 : V2 ; + leles_V : V ; + leles_V2 : V2 ; + lemb_V : V ; + lemb_V2 : V2 ; + lembulul_V : V ; + lembulul_V2 : V2 ; + lendlel_V : V ; + lendlel_V2 : V2 ; + leng_V : V ; + leng_V2 : V2 ; + lengan_V : V ; + lengan_V2 : V2 ; + lengel_V : V ; + lengel_V2 : V2 ; + lengis_V : V ; + lengis_V2 : V2 ; + lephukel_V : V ; + lephukel_V2 : V2 ; + lephul_V : V ; + lephul_V2 : V2 ; + leth_V : V ; + leth_V2 : V2 ; + lethel_V : V ; + lethel_V2 : V2 ; + levuz_V : V ; + levuz_V2 : V2 ; + lez_V : V ; + lez_V2 : V2 ; + lezek_V : V ; + lezek_V2 : V2 ; + libal_V : V ; + libal_V2 : V2 ; + libalek_V : V ; + libalek_V2 : V2 ; + libalekel_V : V ; + libalekel_V2 : V2 ; + libazis_V : V ; + libazis_V2 : V2 ; + libazisek_V : V ; + libazisek_V2 : V2 ; + lil_V : V ; + lil_V2 : V2 ; + lilel_V : V ; + lilel_V2 : V2 ; + lilizel_V : V ; + lilizel_V2 : V2 ; + lim_V : V ; + lim_V2 : V2 ; + limal_V : V ; + limal_V2 : V2 ; + limaz_V : V ; + limaz_V2 : V2 ; + limazan_V : V ; + limazan_V2 : V2 ; + limel_V : V ; + limel_V2 : V2 ; + limis_V : V ; + limis_V2 : V2 ; + lind_V : V ; + lind_V2 : V2 ; + lindalind_V : V ; + lindalind_V2 : V2 ; + lindel_V : V ; + lindel_V2 : V2 ; + lindelek_V : V ; + lindelek_V2 : V2 ; + lindelekan_V : V ; + lindelekan_V2 : V2 ; + lindelel_V : V ; + lindelel_V2 : V2 ; + lindis_V : V ; + lindis_V2 : V2 ; + ling_V : V ; + ling_V2 : V2 ; + lingan_V : V ; + lingan_V2 : V2 ; + linganan_V : V ; + linganan_V2 : V2 ; + linganis_V : V ; + linganis_V2 : V2 ; + linganisan_V : V ; + linganisan_V2 : V2 ; + linganisek_V : V ; + linganisek_V2 : V2 ; + lingek_V : V ; + lingek_V2 : V2 ; + lingis_V : V ; + lingis_V2 : V2 ; + lingisel_V : V ; + lingisel_V2 : V2 ; + lisel_V : V ; + lisel_V2 : V2 ; + lob_V : V ; + lob_V2 : V2 ; + lobel_V : V ; + lobel_V2 : V2 ; + lobiz_V : V ; + lobiz_V2 : V2 ; + lobizel_V : V ; + lobizel_V2 : V2 ; + lobol_V : V ; + lobol_V2 : V2 ; + lobolel_V : V ; + lobolel_V2 : V2 ; + lobolis_V : V ; + lobolis_V2 : V2 ; + lokoth_V : V ; + lokoth_V2 : V2 ; + lokoz_V : V ; + lokoz_V2 : V2 ; + lol_V : V ; + lol_V2 : V2 ; + lolek_V : V ; + lolek_V2 : V2 ; + lolel_V : V ; + lolel_V2 : V2 ; + lolisis_V : V ; + lolisis_V2 : V2 ; + lolong_V : V ; + lolong_V2 : V2 ; + lolongan_V : V ; + lolongan_V2 : V2 ; + lolongek_V : V ; + lolongek_V2 : V2 ; + lolongel_V : V ; + lolongel_V2 : V2 ; + lolozel_V : V ; + lolozel_V2 : V2 ; + lolozelek_V : V ; + lolozelek_V2 : V2 ; + lond_V : V ; + lond_V2 : V2 ; + londek_V : V ; + londek_V2 : V2 ; + londoloz_V : V ; + londoloz_V2 : V2 ; + loth_V : V ; + loth_V2 : V2 ; + loy_V : V ; + loy_V2 : V2 ; + loyan_V : V ; + loyan_V2 : V2 ; + loz_V : V ; + loz_V2 : V2 ; + lub_V : V ; + lub_V2 : V2 ; + lubanek_V : V ; + lubanek_V2 : V2 ; + lubek_V : V ; + lubek_V2 : V2 ; + lubel_V : V ; + lubel_V2 : V2 ; + luk_V : V ; + luk_V2 : V2 ; + lukaluk_V : V ; + lukaluk_V2 : V2 ; + lulam_V : V ; + lulam_V2 : V2 ; + lulaz_V : V ; + lulaz_V2 : V2 ; + lulek_V : V ; + lulek_V2 : V2 ; + lum_V : V ; + lum_V2 : V2 ; + luman_V : V ; + luman_V2 : V2 ; + lumb_V : V ; + lumb_V2 : V2 ; + lumek_V : V ; + lumek_V2 : V2 ; + lumel_V : V ; + lumel_V2 : V2 ; + lumuk_V : V ; + lumuk_V2 : V2 ; + lumukis_V : V ; + lumukis_V2 : V2 ; + lung_V : V ; + lung_V2 : V2 ; + lungel_V : V ; + lungel_V2 : V2 ; + lungelan_V : V ; + lungelan_V2 : V2 ; + lungis_V : V ; + lungis_V2 : V2 ; + lungisel_V : V ; + lungisel_V2 : V2 ; + lungiselel_V : V ; + lungiselel_V2 : V2 ; + lunguz_V : V ; + lunguz_V2 : V2 ; + lunguzel_V : V ; + lunguzel_V2 : V2 ; + luphal_V : V ; + luphal_V2 : V2 ; + luth_V : V ; + luth_V2 : V2 ; + luthek_V : V ; + luthek_V2 : V2 ; + luthel_V : V ; + luthel_V2 : V2 ; + lw_V : V ; + lw_V2 : V2 ; + lwan_V : V ; + lwan_V2 : V2 ; + lwanel_V : V ; + lwanel_V2 : V2 ; + lwel_V : V ; + lwel_V2 : V2 ; + lwis_V : V ; + lwis_V2 : V2 ; + m_V : V ; + m_V2 : V2 ; + makal_V : V ; + makal_V2 : V2 ; + mamathek_V : V ; + mamathek_V2 : V2 ; + mamathekel_V : V ; + mamathekel_V2 : V2 ; + man_V : V ; + man_V2 : V2 ; + manel_V : V ; + manel_V2 : V2 ; + mangal_V : V ; + mangal_V2 : V2 ; + mangalek_V : V ; + mangalek_V2 : V2 ; + mangalel_V : V ; + mangalel_V2 : V2 ; + mangalis_V : V ; + mangalis_V2 : V2 ; + manyazel_V : V ; + manyazel_V2 : V2 ; + manz_V : V ; + manz_V2 : V2 ; + manzan_V : V ; + manzan_V2 : V2 ; + mat_V : V ; + mat_V2 : V2 ; + mayim_V : V ; + mayim_V2 : V2 ; + mb_V : V ; + mb_V2 : V2 ; + mbambath_V : V ; + mbambath_V2 : V2 ; + mbambathan_V : V ; + mbambathan_V2 : V2 ; + mban_V : V ; + mban_V2 : V2 ; + mbandaz_V : V ; + mbandaz_V2 : V2 ; + mbath_V : V ; + mbath_V2 : V2 ; + mbathek_V : V ; + mbathek_V2 : V2 ; + mbek_V : V ; + mbek_V2 : V2 ; + mbekel_V : V ; + mbekel_V2 : V2 ; + mbel_V : V ; + mbel_V2 : V2 ; + mbembethel_V : V ; + mbembethel_V2 : V2 ; + mbisis_V : V ; + mbisis_V2 : V2 ; + mbongoz_V : V ; + mbongoz_V2 : V2 ; + mboz_V : V ; + mboz_V2 : V2 ; + mbozan_V : V ; + mbozan_V2 : V2 ; + mbumbuzel_V : V ; + mbumbuzel_V2 : V2 ; + mbungqanis_V : V ; + mbungqanis_V2 : V2 ; + mek_V : V ; + mek_V2 : V2 ; + mel_V : V ; + mel_V2 : V2 ; + melamel_V : V ; + melamel_V2 : V2 ; + melan_V : V ; + melan_V2 : V2 ; + melek_V : V ; + melek_V2 : V2 ; + melekelel_V : V ; + melekelel_V2 : V2 ; + melel_V : V ; + melel_V2 : V2 ; + melelek_V : V ; + melelek_V2 : V2 ; + melelelek_V : V ; + melelelek_V2 : V2 ; + mem_V : V ; + mem_V2 : V2 ; + memel_V : V ; + memel_V2 : V2 ; + memez_V : V ; + memez_V2 : V2 ; + memezan_V : V ; + memezan_V2 : V2 ; + memezel_V : V ; + memezel_V2 : V2 ; + memezelel_V : V ; + memezelel_V2 : V2 ; + memezis_V : V ; + memezis_V2 : V2 ; + memfuk_V : V ; + memfuk_V2 : V2 ; + mfimf_V : V ; + mfimf_V2 : V2 ; + mfimfel_V : V ; + mfimfel_V2 : V2 ; + mfininek_V : V ; + mfininek_V2 : V2 ; + mfom_V : V ; + mfom_V2 : V2 ; + mil_V : V ; + mil_V2 : V2 ; + milel_V : V ; + milel_V2 : V2 ; + miny_V : V ; + miny_V2 : V2 ; + minyan_V : V ; + minyan_V2 : V2 ; + minz_V : V ; + minz_V2 : V2 ; + minzis_V : V ; + minzis_V2 : V2 ; + mis_V : V ; + mis_V2 : V2 ; + misel_V : V ; + misel_V2 : V2 ; + mith_V : V ; + mith_V2 : V2 ; + momothek_V : V ; + momothek_V2 : V2 ; + mony_V : V ; + mony_V2 : V2 ; + monyozel_V : V ; + monyozel_V2 : V2 ; + monyuk_V : V ; + monyuk_V2 : V2 ; + mos_V : V ; + mos_V2 : V2 ; + mosek_V : V ; + mosek_V2 : V2 ; + mosel_V : V ; + mosel_V2 : V2 ; + moyizel_V : V ; + moyizel_V2 : V2 ; + mpamp_V : V ; + mpamp_V2 : V2 ; + mpintsh_V : V ; + mpintsh_V2 : V2 ; + mpintshan_V : V ; + mpintshan_V2 : V2 ; + mpintshek_V : V ; + mpintshek_V2 : V2 ; + mpomp_V : V ; + mpomp_V2 : V2 ; + mpompoloz_V : V ; + mpompoloz_V2 : V2 ; + mpompoz_V : V ; + mpompoz_V2 : V2 ; + muk_V : V ; + muk_V2 : V2 ; + mukel_V : V ; + mukel_V2 : V2 ; + mukelek_V : V ; + mukelek_V2 : V2 ; + mukis_V : V ; + mukis_V2 : V2 ; + mul_V : V ; + mul_V2 : V2 ; + mumath_V : V ; + mumath_V2 : V2 ; + munc_V : V ; + munc_V2 : V2 ; + muny_V : V ; + muny_V2 : V2 ; + munyung_V : V ; + munyung_V2 : V2 ; + mus_V : V ; + mus_V2 : V2 ; + musel_V : V ; + musel_V2 : V2 ; + n_V : V ; + n_V2 : V2 ; + nafun_V : V ; + nafun_V2 : V2 ; + nak_V : V ; + nak_V2 : V2 ; + nakal_V : V ; + nakal_V2 : V2 ; + nakan_V : V ; + nakan_V2 : V2 ; + nakek_V : V ; + nakek_V2 : V2 ; + nakekel_V : V ; + nakekel_V2 : V2 ; + nakisis_V : V ; + nakisis_V2 : V2 ; + nam_V : V ; + nam_V2 : V2 ; + naman_V : V ; + naman_V2 : V2 ; + namath_V : V ; + namath_V2 : V2 ; + namathel_V : V ; + namathel_V2 : V2 ; + namathelan_V : V ; + namathelan_V2 : V2 ; + namathisel_V : V ; + namathisel_V2 : V2 ; + nambith_V : V ; + nambith_V2 : V2 ; + nambithek_V : V ; + nambithek_V2 : V2 ; + nambithisis_V : V ; + nambithisis_V2 : V2 ; + nambuz_V : V ; + nambuz_V2 : V2 ; + nambuzan_V : V ; + nambuzan_V2 : V2 ; + namek_V : V ; + namek_V2 : V2 ; + namuz_V : V ; + namuz_V2 : V2 ; + nan_V : V ; + nan_V2 : V2 ; + nanaz_V : V ; + nanaz_V2 : V2 ; + nanazel_V : V ; + nanazel_V2 : V2 ; + nanazis_V : V ; + nanazis_V2 : V2 ; + nandis_V : V ; + nandis_V2 : V2 ; + nanel_V : V ; + nanel_V2 : V2 ; + nansik_V : V ; + nansik_V2 : V2 ; + ncam_V : V ; + ncam_V2 : V2 ; + ncamel_V : V ; + ncamel_V2 : V2 ; + ncanyan_V : V ; + ncanyan_V2 : V2 ; + ncel_V : V ; + ncel_V2 : V2 ; + ncelis_V : V ; + ncelis_V2 : V2 ; + ncenceth_V : V ; + ncenceth_V2 : V2 ; + nceng_V : V ; + nceng_V2 : V2 ; + ncengan_V : V ; + ncengan_V2 : V2 ; + ncengek_V : V ; + ncengek_V2 : V2 ; + ncengel_V : V ; + ncengel_V2 : V2 ; + ncibilik_V : V ; + ncibilik_V2 : V2 ; + ncibilikis_V : V ; + ncibilikis_V2 : V2 ; + ncik_V : V ; + ncik_V2 : V2 ; + ncikel_V : V ; + ncikel_V2 : V2 ; + ncikis_V : V ; + ncikis_V2 : V2 ; + ncinc_V : V ; + ncinc_V2 : V2 ; + ncinciz_V : V ; + ncinciz_V2 : V2 ; + ncint_V : V ; + ncint_V2 : V2 ; + ncintisan_V : V ; + ncintisan_V2 : V2 ; + ncinz_V : V ; + ncinz_V2 : V2 ; + ncinzek_V : V ; + ncinzek_V2 : V2 ; + nciph_V : V ; + nciph_V2 : V2 ; + nciphis_V : V ; + nciphis_V2 : V2 ; + ncish_V : V ; + ncish_V2 : V2 ; + ncishan_V : V ; + ncishan_V2 : V2 ; + ncokol_V : V ; + ncokol_V2 : V2 ; + ncokolel_V : V ; + ncokolel_V2 : V2 ; + ncokolis_V : V ; + ncokolis_V2 : V2 ; + ncol_V : V ; + ncol_V2 : V2 ; + ncom_V : V ; + ncom_V2 : V2 ; + ncomek_V : V ; + ncomek_V2 : V2 ; + nconcoz_V : V ; + nconcoz_V2 : V2 ; + ncweb_V : V ; + ncweb_V2 : V2 ; + ncwel_V : V ; + ncwel_V2 : V2 ; + ncwelek_V : V ; + ncwelek_V2 : V2 ; + ndand_V : V ; + ndand_V2 : V2 ; + ndandanis_V : V ; + ndandanis_V2 : V2 ; + ndas_V : V ; + ndas_V2 : V2 ; + ndinyan_V : V ; + ndinyan_V2 : V2 ; + ndiyaz_V : V ; + ndiyaz_V2 : V2 ; + ndiz_V : V ; + ndiz_V2 : V2 ; + ndizandiz_V : V ; + ndizandiz_V2 : V2 ; + ndizel_V : V ; + ndizel_V2 : V2 ; + ndizis_V : V ; + ndizis_V2 : V2 ; + ndlal_V : V ; + ndlal_V2 : V2 ; + ndlalek_V : V ; + ndlalek_V2 : V2 ; + ndlalel_V : V ; + ndlalel_V2 : V2 ; + ndond_V : V ; + ndond_V2 : V2 ; + ndondony_V : V ; + ndondony_V2 : V2 ; + ndunyan_V : V ; + ndunyan_V2 : V2 ; + nek_V : V ; + nek_V2 : V2 ; + nekis_V : V ; + nekis_V2 : V2 ; + nel_V : V ; + nel_V2 : V2 ; + nelan_V : V ; + nelan_V2 : V2 ; + nelek_V : V ; + nelek_V2 : V2 ; + nelis_V : V ; + nelis_V2 : V2 ; + nelisek_V : V ; + nelisek_V2 : V2 ; + nemb_V : V ; + nemb_V2 : V2 ; + nembez_V : V ; + nembez_V2 : V2 ; + neng_V : V ; + neng_V2 : V2 ; + nengan_V : V ; + nengan_V2 : V2 ; + nengek_V : V ; + nengek_V2 : V2 ; + nenk_V : V ; + nenk_V2 : V2 ; + nens_V : V ; + nens_V2 : V2 ; + nenselel_V : V ; + nenselel_V2 : V2 ; + nes_V : V ; + nes_V2 : V2 ; + nesanisan_V : V ; + nesanisan_V2 : V2 ; + nesekel_V : V ; + nesekel_V2 : V2 ; + nesel_V : V ; + nesel_V2 : V2 ; + neth_V : V ; + neth_V2 : V2 ; + nethezek_V : V ; + nethezek_V2 : V2 ; + nev_V : V ; + nev_V2 : V2 ; + nezezel_V : V ; + nezezel_V2 : V2 ; + ngabaz_V : V ; + ngabaz_V2 : V2 ; + ngabazek_V : V ; + ngabazek_V2 : V2 ; + ngabazis_V : V ; + ngabazis_V2 : V2 ; + ngambuz_V : V ; + ngambuz_V2 : V2 ; + ngcingciz_V : V ; + ngcingciz_V2 : V2 ; + ngcof_V : V ; + ngcof_V2 : V2 ; + ngcol_V : V ; + ngcol_V2 : V2 ; + ngcolis_V : V ; + ngcolis_V2 : V2 ; + ngcolisek_V : V ; + ngcolisek_V2 : V2 ; + ngcwab_V : V ; + ngcwab_V2 : V2 ; + ngcwek_V : V ; + ngcwek_V2 : V2 ; + ngcwelis_V : V ; + ngcwelis_V2 : V2 ; + ngcwelisel_V : V ; + ngcwelisel_V2 : V2 ; + ngen_V : V ; + ngen_V2 : V2 ; + ngenan_V : V ; + ngenan_V2 : V2 ; + ngenanel_V : V ; + ngenanel_V2 : V2 ; + ngenek_V : V ; + ngenek_V2 : V2 ; + ngenel_V : V ; + ngenel_V2 : V2 ; + ngenelis_V : V ; + ngenelis_V2 : V2 ; + ngenelisek_V : V ; + ngenelisek_V2 : V2 ; + ngenis_V : V ; + ngenis_V2 : V2 ; + ngenisan_V : V ; + ngenisan_V2 : V2 ; + ngenisel_V : V ; + ngenisel_V2 : V2 ; + ngingiz_V : V ; + ngingiz_V2 : V2 ; + ngom_V : V ; + ngom_V2 : V2 ; + ngoman_V : V ; + ngoman_V2 : V2 ; + ngqabashiy_V : V ; + ngqabashiy_V2 : V2 ; + ngqabith_V : V ; + ngqabith_V2 : V2 ; + ngqangq_V : V ; + ngqangq_V2 : V2 ; + ngqangqel_V : V ; + ngqangqel_V2 : V2 ; + ngqangqisan_V : V ; + ngqangqisan_V2 : V2 ; + ngqayiz_V : V ; + ngqayiz_V2 : V2 ; + ngqengq_V : V ; + ngqengq_V2 : V2 ; + ngqibithek_V : V ; + ngqibithek_V2 : V2 ; + ngqof_V : V ; + ngqof_V2 : V2 ; + ngqofan_V : V ; + ngqofan_V2 : V2 ; + ngqongq_V : V ; + ngqongq_V2 : V2 ; + ngqongqoth_V : V ; + ngqongqoth_V2 : V2 ; + ngqongqoz_V : V ; + ngqongqoz_V2 : V2 ; + ngqothul_V : V ; + ngqothul_V2 : V2 ; + ngqubuzan_V : V ; + ngqubuzan_V2 : V2 ; + ngqubuzek_V : V ; + ngqubuzek_V2 : V2 ; + ngqumuz_V : V ; + ngqumuz_V2 : V2 ; + ngquzul_V : V ; + ngquzul_V2 : V2 ; + ngul_V : V ; + ngul_V2 : V2 ; + ngung_V : V ; + ngung_V2 : V2 ; + ngxam_V : V ; + ngxam_V2 : V2 ; + nhlanhlath_V : V ; + nhlanhlath_V2 : V2 ; + nik_V : V ; + nik_V2 : V2 ; + nikel_V : V ; + nikel_V2 : V2 ; + nikelel_V : V ; + nikelel_V2 : V2 ; + nikez_V : V ; + nikez_V2 : V2 ; + nikezan_V : V ; + nikezan_V2 : V2 ; + nikezel_V : V ; + nikezel_V2 : V2 ; + nikezelan_V : V ; + nikezelan_V2 : V2 ; + nikin_V : V ; + nikin_V2 : V2 ; + nikinek_V : V ; + nikinek_V2 : V2 ; + nikinel_V : V ; + nikinel_V2 : V2 ; + nikiz_V : V ; + nikiz_V2 : V2 ; + nin_V : V ; + nin_V2 : V2 ; + nind_V : V ; + nind_V2 : V2 ; + nis_V : V ; + nis_V2 : V2 ; + nisan_V : V ; + nisan_V2 : V2 ; + nisel_V : V ; + nisel_V2 : V2 ; + nithel_V : V ; + nithel_V2 : V2 ; + niyam_V : V ; + niyam_V2 : V2 ; + niz_V : V ; + niz_V2 : V2 ; + nkankazelel_V : V ; + nkankazelel_V2 : V2 ; + nkem_V : V ; + nkem_V2 : V2 ; + nkeman_V : V ; + nkeman_V2 : V2 ; + nkenez_V : V ; + nkenez_V2 : V2 ; + nkenketh_V : V ; + nkenketh_V2 : V2 ; + nkentez_V : V ; + nkentez_V2 : V2 ; + nkinsel_V : V ; + nkinsel_V2 : V2 ; + nkinyan_V : V ; + nkinyan_V2 : V2 ; + nkonkomis_V : V ; + nkonkomis_V2 : V2 ; + nkontshel_V : V ; + nkontshel_V2 : V2 ; + nkwankwaz_V : V ; + nkwankwaz_V2 : V2 ; + nkwanyan_V : V ; + nkwanyan_V2 : V2 ; + nombel_V : V ; + nombel_V2 : V2 ; + nomfan_V : V ; + nomfan_V2 : V2 ; + non_V : V ; + non_V2 : V2 ; + nonel_V : V ; + nonel_V2 : V2 ; + nongoz_V : V ; + nongoz_V2 : V2 ; + nonoph_V : V ; + nonoph_V2 : V2 ; + nonophal_V : V ; + nonophal_V2 : V2 ; + nonophalis_V : V ; + nonophalis_V2 : V2 ; + nonophel_V : V ; + nonophel_V2 : V2 ; + nonsul_V : V ; + nonsul_V2 : V2 ; + noth_V : V ; + noth_V2 : V2 ; + novelan_V : V ; + novelan_V2 : V2 ; + nqab_V : V ; + nqab_V2 : V2 ; + nqabel_V : V ; + nqabel_V2 : V2 ; + nqak_V : V ; + nqak_V2 : V2 ; + nqakisan_V : V ; + nqakisan_V2 : V2 ; + nqakul_V : V ; + nqakul_V2 : V2 ; + nqal_V : V ; + nqal_V2 : V2 ; + nqamuk_V : V ; + nqamuk_V2 : V2 ; + nqamul_V : V ; + nqamul_V2 : V2 ; + nqamulel_V : V ; + nqamulel_V2 : V2 ; + nqand_V : V ; + nqand_V2 : V2 ; + nqandek_V : V ; + nqandek_V2 : V2 ; + nqathuz_V : V ; + nqathuz_V2 : V2 ; + nqekuz_V : V ; + nqekuz_V2 : V2 ; + nqekuzel_V : V ; + nqekuzel_V2 : V2 ; + nqekuzis_V : V ; + nqekuzis_V2 : V2 ; + nqen_V : V ; + nqen_V2 : V2 ; + nqib_V : V ; + nqib_V2 : V2 ; + nqikaz_V : V ; + nqikaz_V2 : V2 ; + nqikazis_V : V ; + nqikazis_V2 : V2 ; + nqin_V : V ; + nqin_V2 : V2 ; + nqinis_V : V ; + nqinis_V2 : V2 ; + nqob_V : V ; + nqob_V2 : V2 ; + nqobek_V : V ; + nqobek_V2 : V2 ; + nqoh_V : V ; + nqoh_V2 : V2 ; + nqong_V : V ; + nqong_V2 : V2 ; + nqonqoth_V : V ; + nqonqoth_V2 : V2 ; + nqonqoz_V : V ; + nqonqoz_V2 : V2 ; + nqukul_V : V ; + nqukul_V2 : V2 ; + nqukuz_V : V ; + nqukuz_V2 : V2 ; + nqum_V : V ; + nqum_V2 : V2 ; + nqumel_V : V ; + nqumel_V2 : V2 ; + nqumelan_V : V ; + nqumelan_V2 : V2 ; + nqumis_V : V ; + nqumis_V2 : V2 ; + nqund_V : V ; + nqund_V2 : V2 ; + nqundek_V : V ; + nqundek_V2 : V2 ; + nqunt_V : V ; + nqunt_V2 : V2 ; + nqwabel_V : V ; + nqwabel_V2 : V2 ; + nqwabelan_V : V ; + nqwabelan_V2 : V2 ; + nqwah_V : V ; + nqwah_V2 : V2 ; + nqwaman_V : V ; + nqwaman_V2 : V2 ; + nqwamb_V : V ; + nqwamb_V2 : V2 ; + nsiny_V : V ; + nsiny_V2 : V2 ; + nsinyan_V : V ; + nsinyan_V2 : V2 ; + nswininiz_V : V ; + nswininiz_V2 : V2 ; + ntant_V : V ; + ntant_V2 : V2 ; + ntantathek_V : V ; + ntantathek_V2 : V2 ; + ntany_V : V ; + ntany_V2 : V2 ; + ntaz_V : V ; + ntaz_V2 : V2 ; + ntel_V : V ; + ntel_V2 : V2 ; + ntelel_V : V ; + ntelel_V2 : V2 ; + ntenganteng_V : V ; + ntenganteng_V2 : V2 ; + ntengemul_V : V ; + ntengemul_V2 : V2 ; + ntez_V : V ; + ntez_V2 : V2 ; + ntininiz_V : V ; + ntininiz_V2 : V2 ; + ntinyel_V : V ; + ntinyel_V2 : V2 ; + ntongel_V : V ; + ntongel_V2 : V2 ; + ntontel_V : V ; + ntontel_V2 : V2 ; + ntshentsheth_V : V ; + ntshentsheth_V2 : V2 ; + ntshing_V : V ; + ntshing_V2 : V2 ; + ntshontsh_V : V ; + ntshontsh_V2 : V2 ; + ntshontshan_V : V ; + ntshontshan_V2 : V2 ; + ntshontshel_V : V ; + ntshontshel_V2 : V2 ; + ntul_V : V ; + ntul_V2 : V2 ; + ntulek_V : V ; + ntulek_V2 : V2 ; + ntwayizel_V : V ; + ntwayizel_V2 : V2 ; + ntwel_V : V ; + ntwel_V2 : V2 ; + ntwez_V : V ; + ntwez_V2 : V2 ; + nuk_V : V ; + nuk_V2 : V2 ; + nukek_V : V ; + nukek_V2 : V2 ; + nukel_V : V ; + nukel_V2 : V2 ; + nukubez_V : V ; + nukubez_V2 : V2 ; + nukubezek_V : V ; + nukubezek_V2 : V2 ; + nunusel_V : V ; + nunusel_V2 : V2 ; + nwabuzel_V : V ; + nwabuzel_V2 : V2 ; + nwampel_V : V ; + nwampel_V2 : V2 ; + nway_V : V ; + nway_V2 : V2 ; + nwayiz_V : V ; + nwayiz_V2 : V2 ; + nweb_V : V ; + nweb_V2 : V2 ; + nwebek_V : V ; + nwebek_V2 : V2 ; + nwebul_V : V ; + nwebul_V2 : V2 ; + nxanel_V : V ; + nxanel_V2 : V2 ; + nxaph_V : V ; + nxaph_V2 : V2 ; + nxaphel_V : V ; + nxaphel_V2 : V2 ; + nxephez_V : V ; + nxephez_V2 : V2 ; + nxephezis_V : V ; + nxephezis_V2 : V2 ; + nxib_V : V ; + nxib_V2 : V2 ; + nximf_V : V ; + nximf_V2 : V2 ; + nxus_V : V ; + nxus_V2 : V2 ; + nxusel_V : V ; + nxusel_V2 : V2 ; + nxusisis_V : V ; + nxusisis_V2 : V2 ; + ny_V : V ; + ny_V2 : V2 ; + nyab_V : V ; + nyab_V2 : V2 ; + nyakanyakaz_V : V ; + nyakanyakaz_V2 : V2 ; + nyakanyakazis_V : V ; + nyakanyakazis_V2 : V2 ; + nyakaz_V : V ; + nyakaz_V2 : V2 ; + nyakazel_V : V ; + nyakazel_V2 : V2 ; + nyakazis_V : V ; + nyakazis_V2 : V2 ; + nyaliz_V : V ; + nyaliz_V2 : V2 ; + nyamalal_V : V ; + nyamalal_V2 : V2 ; + nyamalalel_V : V ; + nyamalalel_V2 : V2 ; + nyamezel_V : V ; + nyamezel_V2 : V2 ; + nyan_V : V ; + nyan_V2 : V2 ; + nyang_V : V ; + nyang_V2 : V2 ; + nyangan_V : V ; + nyangan_V2 : V2 ; + nyany_V : V ; + nyany_V2 : V2 ; + nyanyalat_V : V ; + nyanyalat_V2 : V2 ; + nyanyan_V : V ; + nyanyan_V2 : V2 ; + nyathel_V : V ; + nyathel_V2 : V2 ; + nyathelan_V : V ; + nyathelan_V2 : V2 ; + nyathelek_V : V ; + nyathelek_V2 : V2 ; + nyathelel_V : V ; + nyathelel_V2 : V2 ; + nyathuzel_V : V ; + nyathuzel_V2 : V2 ; + nyek_V : V ; + nyek_V2 : V2 ; + nyel_V : V ; + nyel_V2 : V2 ; + nyelel_V : V ; + nyelel_V2 : V2 ; + nyemb_V : V ; + nyemb_V2 : V2 ; + nyeny_V : V ; + nyeny_V2 : V2 ; + nyenyez_V : V ; + nyenyez_V2 : V2 ; + nyenyezel_V : V ; + nyenyezel_V2 : V2 ; + nyenyezelan_V : V ; + nyenyezelan_V2 : V2 ; + nyewuk_V : V ; + nyewuk_V2 : V2 ; + nyez_V : V ; + nyez_V2 : V2 ; + nyezel_V : V ; + nyezel_V2 : V2 ; + nyibilik_V : V ; + nyibilik_V2 : V2 ; + nyikanyik_V : V ; + nyikanyik_V2 : V2 ; + nyikiny_V : V ; + nyikiny_V2 : V2 ; + nyikizis_V : V ; + nyikizis_V2 : V2 ; + nyinyithek_V : V ; + nyinyithek_V2 : V2 ; + nyiph_V : V ; + nyiph_V2 : V2 ; + nyis_V : V ; + nyis_V2 : V2 ; + nyobozel_V : V ; + nyobozel_V2 : V2 ; + nyolozel_V : V ; + nyolozel_V2 : V2 ; + nyombuluk_V : V ; + nyombuluk_V2 : V2 ; + nyonkoloz_V : V ; + nyonkoloz_V2 : V2 ; + nyony_V : V ; + nyony_V2 : V2 ; + nyonyob_V : V ; + nyonyob_V2 : V2 ; + nyonyobel_V : V ; + nyonyobel_V2 : V2 ; + nyonyobis_V : V ; + nyonyobis_V2 : V2 ; + nyov_V : V ; + nyov_V2 : V2 ; + nyovan_V : V ; + nyovan_V2 : V2 ; + nyukubal_V : V ; + nyukubal_V2 : V2 ; + nyukuny_V : V ; + nyukuny_V2 : V2 ; + nyukunyek_V : V ; + nyukunyek_V2 : V2 ; + nyumb_V : V ; + nyumb_V2 : V2 ; + obuk_V : V ; + obuk_V2 : V2 ; + obukan_V : V ; + obukan_V2 : V2 ; + obukek_V : V ; + obukek_V2 : V2 ; + obukel_V : V ; + obukel_V2 : V2 ; + obul_V : V ; + obul_V2 : V2 ; + obulis_V : V ; + obulis_V2 : V2 ; + obuz_V : V ; + obuz_V2 : V2 ; + obuzan_V : V ; + obuzan_V2 : V2 ; + od_V : V ; + od_V2 : V2 ; + odan_V : V ; + odan_V2 : V2 ; + odel_V : V ; + odel_V2 : V2 ; + odelel_V : V ; + odelel_V2 : V2 ; + odelis_V : V ; + odelis_V2 : V2 ; + ojwayel_V : V ; + ojwayel_V2 : V2 ; + ojwayelek_V : V ; + ojwayelek_V2 : V2 ; + okh_V : V ; + okh_V2 : V2 ; + okhan_V : V ; + okhan_V2 : V2 ; + okhel_V : V ; + okhel_V2 : V2 ; + okhelek_V : V ; + okhelek_V2 : V2 ; + olul_V : V ; + olul_V2 : V2 ; + olulek_V : V ; + olulek_V2 : V2 ; + om_V : V ; + om_V2 : V2 ; + oman_V : V ; + oman_V2 : V2 ; + omel_V : V ; + omel_V2 : V2 ; + omelan_V : V ; + omelan_V2 : V2 ; + omelek_V : V ; + omelek_V2 : V2 ; + omelekelel_V : V ; + omelekelel_V2 : V2 ; + omelel_V : V ; + omelel_V2 : V2 ; + omis_V : V ; + omis_V2 : V2 ; + omisel_V : V ; + omisel_V2 : V2 ; + on_V : V ; + on_V2 : V2 ; + onakal_V : V ; + onakal_V2 : V2 ; + onakalis_V : V ; + onakalis_V2 : V2 ; + onan_V : V ; + onan_V2 : V2 ; + onanel_V : V ; + onanel_V2 : V2 ; + ond_V : V ; + ond_V2 : V2 ; + ondan_V : V ; + ondan_V2 : V2 ; + ondek_V : V ; + ondek_V2 : V2 ; + ondel_V : V ; + ondel_V2 : V2 ; + ondelan_V : V ; + ondelan_V2 : V2 ; + ondis_V : V ; + ondis_V2 : V2 ; + ondl_V : V ; + ondl_V2 : V2 ; + ondlek_V : V ; + ondlek_V2 : V2 ; + ondlel_V : V ; + ondlel_V2 : V2 ; + onek_V : V ; + onek_V2 : V2 ; + onel_V : V ; + onel_V2 : V2 ; + onelel_V : V ; + onelel_V2 : V2 ; + onelisek_V : V ; + onelisek_V2 : V2 ; + ong_V : V ; + ong_V2 : V2 ; + ongam_V : V ; + ongam_V2 : V2 ; + ongamel_V : V ; + ongamel_V2 : V2 ; + ongamelan_V : V ; + ongamelan_V2 : V2 ; + ongan_V : V ; + ongan_V2 : V2 ; + onganelekelel_V : V ; + onganelekelel_V2 : V2 ; + ongek_V : V ; + ongek_V2 : V2 ; + ongel_V : V ; + ongel_V2 : V2 ; + ongez_V : V ; + ongez_V2 : V2 ; + ongisis_V : V ; + ongisis_V2 : V2 ; + onis_V : V ; + onis_V2 : V2 ; + onisan_V : V ; + onisan_V2 : V2 ; + onisis_V : V ; + onisis_V2 : V2 ; + oph_V : V ; + oph_V2 : V2 ; + ophan_V : V ; + ophan_V2 : V2 ; + ophek_V : V ; + ophek_V2 : V2 ; + ophekel_V : V ; + ophekel_V2 : V2 ; + ophel_V : V ; + ophel_V2 : V2 ; + ophelan_V : V ; + ophelan_V2 : V2 ; + ophelel_V : V ; + ophelel_V2 : V2 ; + ophis_V : V ; + ophis_V2 : V2 ; + ophul_V : V ; + ophul_V2 : V2 ; + os_V : V ; + os_V2 : V2 ; + osanel_V : V ; + osanel_V2 : V2 ; + osek_V : V ; + osek_V2 : V2 ; + osekel_V : V ; + osekel_V2 : V2 ; + osel_V : V ; + osel_V2 : V2 ; + oselel_V : V ; + oselel_V2 : V2 ; + osisel_V : V ; + osisel_V2 : V2 ; + osul_V : V ; + osul_V2 : V2 ; + oth_V : V ; + oth_V2 : V2 ; + othan_V : V ; + othan_V2 : V2 ; + othel_V : V ; + othel_V2 : V2 ; + othelan_V : V ; + othelan_V2 : V2 ; + othelek_V : V ; + othelek_V2 : V2 ; + othelel_V : V ; + othelel_V2 : V2 ; + othis_V : V ; + othis_V2 : V2 ; + othul_V : V ; + othul_V2 : V2 ; + ozel_V : V ; + ozel_V2 : V2 ; + paquz_V : V ; + paquz_V2 : V2 ; + patsh_V : V ; + patsh_V2 : V2 ; + pend_V : V ; + pend_V2 : V2 ; + pensul_V : V ; + pensul_V2 : V2 ; + petezel_V : V ; + petezel_V2 : V2 ; + ph_V : V ; + ph_V2 : V2 ; + phafuz_V : V ; + phafuz_V2 : V2 ; + phafuzan_V : V ; + phafuzan_V2 : V2 ; + phafuzek_V : V ; + phafuzek_V2 : V2 ; + phahl_V : V ; + phahl_V2 : V2 ; + phahlan_V : V ; + phahlan_V2 : V2 ; + phahlazek_V : V ; + phahlazek_V2 : V2 ; + phahlek_V : V ; + phahlek_V2 : V2 ; + phahluk_V : V ; + phahluk_V2 : V2 ; + phak_V : V ; + phak_V2 : V2 ; + phakam_V : V ; + phakam_V2 : V2 ; + phakamel_V : V ; + phakamel_V2 : V2 ; + phakamis_V : V ; + phakamis_V2 : V2 ; + phakamisel_V : V ; + phakamisel_V2 : V2 ; + phakath_V : V ; + phakath_V2 : V2 ; + phakel_V : V ; + phakel_V2 : V2 ; + phal_V : V ; + phal_V2 : V2 ; + phalal_V : V ; + phalal_V2 : V2 ; + phalaz_V : V ; + phalaz_V2 : V2 ; + phalazel_V : V ; + phalazel_V2 : V2 ; + phalazis_V : V ; + phalazis_V2 : V2 ; + phamb_V : V ; + phamb_V2 : V2 ; + phamban_V : V ; + phamban_V2 : V2 ; + phambanis_V : V ; + phambanis_V2 : V2 ; + phambanisel_V : V ; + phambanisel_V2 : V2 ; + phambek_V : V ; + phambek_V2 : V2 ; + phambel_V : V ; + phambel_V2 : V2 ; + phambuk_V : V ; + phambuk_V2 : V2 ; + phambukel_V : V ; + phambukel_V2 : V2 ; + phambukis_V : V ; + phambukis_V2 : V2 ; + phan_V : V ; + phan_V2 : V2 ; + phand_V : V ; + phand_V2 : V2 ; + phandel_V : V ; + phandel_V2 : V2 ; + phandl_V : V ; + phandl_V2 : V2 ; + phang_V : V ; + phang_V2 : V2 ; + phangalal_V : V ; + phangalal_V2 : V2 ; + phangazel_V : V ; + phangazel_V2 : V2 ; + phangel_V : V ; + phangel_V2 : V2 ; + phangelan_V : V ; + phangelan_V2 : V2 ; + phangis_V : V ; + phangis_V2 : V2 ; + phanyek_V : V ; + phanyek_V2 : V2 ; + phaph_V : V ; + phaph_V2 : V2 ; + phaphalaz_V : V ; + phaphalaz_V2 : V2 ; + phapham_V : V ; + phapham_V2 : V2 ; + phaphamis_V : V ; + phaphamis_V2 : V2 ; + phaphathek_V : V ; + phaphathek_V2 : V2 ; + phaq_V : V ; + phaq_V2 : V2 ; + phaqul_V : V ; + phaqul_V2 : V2 ; + phas_V : V ; + phas_V2 : V2 ; + phasel_V : V ; + phasel_V2 : V2 ; + phaselan_V : V ; + phaselan_V2 : V2 ; + phasis_V : V ; + phasis_V2 : V2 ; + phath_V : V ; + phath_V2 : V2 ; + phathan_V : V ; + phathan_V2 : V2 ; + phathanisel_V : V ; + phathanisel_V2 : V2 ; + phathaphath_V : V ; + phathaphath_V2 : V2 ; + phathek_V : V ; + phathek_V2 : V2 ; + phathel_V : V ; + phathel_V2 : V2 ; + phathelan_V : V ; + phathelan_V2 : V2 ; + phathis_V : V ; + phathis_V2 : V2 ; + phathisel_V : V ; + phathisel_V2 : V2 ; + phawul_V : V ; + phawul_V2 : V2 ; + phawulek_V : V ; + phawulek_V2 : V2 ; + phayiz_V : V ; + phayiz_V2 : V2 ; + phayizel_V : V ; + phayizel_V2 : V2 ; + phazamis_V : V ; + phazamis_V2 : V2 ; + phazamisek_V : V ; + phazamisek_V2 : V2 ; + phazim_V : V ; + phazim_V2 : V2 ; + phefumul_V : V ; + phefumul_V2 : V2 ; + phefumulel_V : V ; + phefumulel_V2 : V2 ; + phefumulelan_V : V ; + phefumulelan_V2 : V2 ; + phefumulis_V : V ; + phefumulis_V2 : V2 ; + phehl_V : V ; + phehl_V2 : V2 ; + phek_V : V ; + phek_V2 : V2 ; + phekel_V : V ; + phekel_V2 : V2 ; + phel_V : V ; + phel_V2 : V2 ; + phelan_V : V ; + phelan_V2 : V2 ; + phelekezel_V : V ; + phelekezel_V2 : V2 ; + phelekezelan_V : V ; + phelekezelan_V2 : V2 ; + phelel_V : V ; + phelel_V2 : V2 ; + phelelis_V : V ; + phelelis_V2 : V2 ; + phelezel_V : V ; + phelezel_V2 : V2 ; + phelis_V : V ; + phelis_V2 : V2 ; + phemb_V : V ; + phemb_V2 : V2 ; + phembek_V : V ; + phembek_V2 : V2 ; + phembel_V : V ; + phembel_V2 : V2 ; + phenduk_V : V ; + phenduk_V2 : V2 ; + phendukel_V : V ; + phendukel_V2 : V2 ; + phendukezel_V : V ; + phendukezel_V2 : V2 ; + phendul_V : V ; + phendul_V2 : V2 ; + phendulan_V : V ; + phendulan_V2 : V2 ; + phendulek_V : V ; + phendulek_V2 : V2 ; + phendulel_V : V ; + phendulel_V2 : V2 ; + phenduphenduk_V : V ; + phenduphenduk_V2 : V2 ; + phenduphendul_V : V ; + phenduphendul_V2 : V2 ; + phengul_V : V ; + phengul_V2 : V2 ; + phenq_V : V ; + phenq_V2 : V2 ; + phenqul_V : V ; + phenqul_V2 : V2 ; + pheny_V : V ; + pheny_V2 : V2 ; + phenyan_V : V ; + phenyan_V2 : V2 ; + phenyapheny_V : V ; + phenyapheny_V2 : V2 ; + phenyel_V : V ; + phenyel_V2 : V2 ; + phenyisis_V : V ; + phenyisis_V2 : V2 ; + pheph_V : V ; + pheph_V2 : V2 ; + phephel_V : V ; + phephel_V2 : V2 ; + phepheth_V : V ; + phepheth_V2 : V2 ; + phephethek_V : V ; + phephethek_V2 : V2 ; + phephezel_V : V ; + phephezel_V2 : V2 ; + phephis_V : V ; + phephis_V2 : V2 ; + phephuk_V : V ; + phephuk_V2 : V2 ; + phephul_V : V ; + phephul_V2 : V2 ; + pheq_V : V ; + pheq_V2 : V2 ; + pheqel_V : V ; + pheqel_V2 : V2 ; + pheqez_V : V ; + pheqez_V2 : V2 ; + phequlul_V : V ; + phequlul_V2 : V2 ; + pheth_V : V ; + pheth_V2 : V2 ; + phethek_V : V ; + phethek_V2 : V2 ; + phethel_V : V ; + phethel_V2 : V2 ; + phethuk_V : V ; + phethuk_V2 : V2 ; + phethuz_V : V ; + phethuz_V2 : V2 ; + phez_V : V ; + phez_V2 : V2 ; + phic_V : V ; + phic_V2 : V2 ; + phihlik_V : V ; + phihlik_V2 : V2 ; + phihlikel_V : V ; + phihlikel_V2 : V2 ; + phihliz_V : V ; + phihliz_V2 : V2 ; + phihlizek_V : V ; + phihlizek_V2 : V2 ; + phik_V : V ; + phik_V2 : V2 ; + phikel_V : V ; + phikel_V2 : V2 ; + phikelel_V : V ; + phikelel_V2 : V2 ; + phikis_V : V ; + phikis_V2 : V2 ; + phikisan_V : V ; + phikisan_V2 : V2 ; + phil_V : V ; + phil_V2 : V2 ; + philek_V : V ; + philek_V2 : V2 ; + philel_V : V ; + philel_V2 : V2 ; + philis_V : V ; + philis_V2 : V2 ; + philisan_V : V ; + philisan_V2 : V2 ; + phimis_V : V ; + phimis_V2 : V2 ; + phimisel_V : V ; + phimisel_V2 : V2 ; + phimiselek_V : V ; + phimiselek_V2 : V2 ; + phind_V : V ; + phind_V2 : V2 ; + phindan_V : V ; + phindan_V2 : V2 ; + phindaphind_V : V ; + phindaphind_V2 : V2 ; + phindaphindek_V : V ; + phindaphindek_V2 : V2 ; + phindel_V : V ; + phindel_V2 : V2 ; + phindelel_V : V ; + phindelel_V2 : V2 ; + phindelisel_V : V ; + phindelisel_V2 : V2 ; + phindis_V : V ; + phindis_V2 : V2 ; + phindisel_V : V ; + phindisel_V2 : V2 ; + phindiselel_V : V ; + phindiselel_V2 : V2 ; + phing_V : V ; + phing_V2 : V2 ; + phinqilik_V : V ; + phinqilik_V2 : V2 ; + phiqik_V : V ; + phiqik_V2 : V2 ; + phisel_V : V ; + phisel_V2 : V2 ; + phithan_V : V ; + phithan_V2 : V2 ; + phithiz_V : V ; + phithiz_V2 : V2 ; + phithizel_V : V ; + phithizel_V2 : V2 ; + phofis_V : V ; + phofis_V2 : V2 ; + phohloz_V : V ; + phohloz_V2 : V2 ; + phokophel_V : V ; + phokophel_V2 : V2 ; + phokophelel_V : V ; + phokophelel_V2 : V2 ; + phol_V : V ; + phol_V2 : V2 ; + pholel_V : V ; + pholel_V2 : V2 ; + pholis_V : V ; + pholis_V2 : V2 ; + phons_V : V ; + phons_V2 : V2 ; + phonsek_V : V ; + phonsek_V2 : V2 ; + phonsel_V : V ; + phonsel_V2 : V2 ; + phophoth_V : V ; + phophoth_V2 : V2 ; + phophoz_V : V ; + phophoz_V2 : V2 ; + phoq_V : V ; + phoq_V2 : V2 ; + phoqek_V : V ; + phoqek_V2 : V2 ; + phoqelek_V : V ; + phoqelek_V2 : V2 ; + phoqelel_V : V ; + phoqelel_V2 : V2 ; + phoqok_V : V ; + phoqok_V2 : V2 ; + phoqoz_V : V ; + phoqoz_V2 : V2 ; + phos_V : V ; + phos_V2 : V2 ; + phosek_V : V ; + phosek_V2 : V2 ; + phosis_V : V ; + phosis_V2 : V2 ; + photh_V : V ; + photh_V2 : V2 ; + phothan_V : V ; + phothan_V2 : V2 ; + phothel_V : V ; + phothel_V2 : V2 ; + phothul_V : V ; + phothul_V2 : V2 ; + phox_V : V ; + phox_V2 : V2 ; + phoxan_V : V ; + phoxan_V2 : V2 ; + phoxek_V : V ; + phoxek_V2 : V2 ; + phoyis_V : V ; + phoyis_V2 : V2 ; + phoz_V : V ; + phoz_V2 : V2 ; + phozis_V : V ; + phozis_V2 : V2 ; + phuc_V : V ; + phuc_V2 : V2 ; + phucan_V : V ; + phucan_V2 : V2 ; + phucuk_V : V ; + phucuk_V2 : V2 ; + phucul_V : V ; + phucul_V2 : V2 ; + phucuzek_V : V ; + phucuzek_V2 : V2 ; + phuk_V : V ; + phuk_V2 : V2 ; + phukul_V : V ; + phukul_V2 : V2 ; + phukulel_V : V ; + phukulel_V2 : V2 ; + phul_V : V ; + phul_V2 : V2 ; + phulukundlel_V : V ; + phulukundlel_V2 : V2 ; + phulul_V : V ; + phulul_V2 : V2 ; + phuluz_V : V ; + phuluz_V2 : V2 ; + phum_V : V ; + phum_V2 : V2 ; + phumel_V : V ; + phumel_V2 : V2 ; + phumelel_V : V ; + phumelel_V2 : V2 ; + phumelelis_V : V ; + phumelelis_V2 : V2 ; + phumes_V : V ; + phumes_V2 : V2 ; + phumisan_V : V ; + phumisan_V2 : V2 ; + phumisel_V : V ; + phumisel_V2 : V2 ; + phumputh_V : V ; + phumputh_V2 : V2 ; + phumul_V : V ; + phumul_V2 : V2 ; + phumulel_V : V ; + phumulel_V2 : V2 ; + phumuz_V : V ; + phumuz_V2 : V2 ; + phung_V : V ; + phung_V2 : V2 ; + phungaphung_V : V ; + phungaphung_V2 : V2 ; + phungel_V : V ; + phungel_V2 : V2 ; + phunguk_V : V ; + phunguk_V2 : V2 ; + phungul_V : V ; + phungul_V2 : V2 ; + phungulel_V : V ; + phungulel_V2 : V2 ; + phunyuk_V : V ; + phunyuk_V2 : V2 ; + phunyul_V : V ; + phunyul_V2 : V2 ; + phunyulek_V : V ; + phunyulek_V2 : V2 ; + phunzan_V : V ; + phunzan_V2 : V2 ; + phuph_V : V ; + phuph_V2 : V2 ; + phuphum_V : V ; + phuphum_V2 : V2 ; + phuphuthek_V : V ; + phuphuthek_V2 : V2 ; + phuquk_V : V ; + phuquk_V2 : V2 ; + phus_V : V ; + phus_V2 : V2 ; + phush_V : V ; + phush_V2 : V2 ; + phuth_V : V ; + phuth_V2 : V2 ; + phuthaphuthaz_V : V ; + phuthaphuthaz_V2 : V2 ; + phuthaz_V : V ; + phuthaz_V2 : V2 ; + phuthazan_V : V ; + phuthazan_V2 : V2 ; + phuthisel_V : V ; + phuthisel_V2 : V2 ; + phuthum_V : V ; + phuthum_V2 : V2 ; + phuthumis_V : V ; + phuthumis_V2 : V2 ; + phuthuzel_V : V ; + phuthuzel_V2 : V2 ; + phuz_V : V ; + phuz_V2 : V2 ; + phuzaphuz_V : V ; + phuzaphuz_V2 : V2 ; + phuzel_V : V ; + phuzel_V2 : V2 ; + phuzelis_V : V ; + phuzelis_V2 : V2 ; + phuzis_V : V ; + phuzis_V2 : V2 ; + pikl_V : V ; + pikl_V2 : V2 ; + piklel_V : V ; + piklel_V2 : V2 ; + pok_V : V ; + pok_V2 : V2 ; + pos_V : V ; + pos_V2 : V2 ; + posel_V : V ; + posel_V2 : V2 ; + profeth_V : V ; + profeth_V2 : V2 ; + putshuk_V : V ; + putshuk_V2 : V2 ; + qabuk_V : V ; + qabuk_V2 : V2 ; + qabukek_V : V ; + qabukek_V2 : V2 ; + qabul_V : V ; + qabul_V2 : V2 ; + qagel_V : V ; + qagel_V2 : V2 ; + qagelis_V : V ; + qagelis_V2 : V2 ; + qagelisan_V : V ; + qagelisan_V2 : V2 ; + qagulisan_V : V ; + qagulisan_V2 : V2 ; + qak_V : V ; + qak_V2 : V2 ; + qakal_V : V ; + qakal_V2 : V2 ; + qal_V : V ; + qal_V2 : V2 ; + qalang_V : V ; + qalang_V2 : V2 ; + qalaqalaz_V : V ; + qalaqalaz_V2 : V2 ; + qalaz_V : V ; + qalaz_V2 : V2 ; + qalekis_V : V ; + qalekis_V2 : V2 ; + qalekisel_V : V ; + qalekisel_V2 : V2 ; + qalel_V : V ; + qalel_V2 : V2 ; + qalis_V : V ; + qalis_V2 : V2 ; + qamb_V : V ; + qamb_V2 : V2 ; + qambel_V : V ; + qambel_V2 : V2 ; + qamel_V : V ; + qamel_V2 : V2 ; + qand_V : V ; + qand_V2 : V2 ; + qandul_V : V ; + qandul_V2 : V2 ; + qandulek_V : V ; + qandulek_V2 : V2 ; + qang_V : V ; + qang_V2 : V2 ; + qanganis_V : V ; + qanganis_V2 : V2 ; + qanganisel_V : V ; + qanganisel_V2 : V2 ; + qangqathek_V : V ; + qangqathek_V2 : V2 ; + qans_V : V ; + qans_V2 : V2 ; + qanul_V : V ; + qanul_V2 : V2 ; + qaph_V : V ; + qaph_V2 : V2 ; + qaphaz_V : V ; + qaphaz_V2 : V2 ; + qaphel_V : V ; + qaphel_V2 : V2 ; + qaphelis_V : V ; + qaphelis_V2 : V2 ; + qaphelisis_V : V ; + qaphelisis_V2 : V2 ; + qaq_V : V ; + qaq_V2 : V2 ; + qaqamb_V : V ; + qaqamb_V2 : V2 ; + qaqek_V : V ; + qaqek_V2 : V2 ; + qaqel_V : V ; + qaqel_V2 : V2 ; + qaqelis_V : V ; + qaqelis_V2 : V2 ; + qaqulul_V : V ; + qaqulul_V2 : V2 ; + qash_V : V ; + qash_V2 : V2 ; + qashan_V : V ; + qashan_V2 : V2 ; + qashel_V : V ; + qashel_V2 : V2 ; + qashis_V : V ; + qashis_V2 : V2 ; + qashisel_V : V ; + qashisel_V2 : V2 ; + qath_V : V ; + qath_V2 : V2 ; + qathak_V : V ; + qathak_V2 : V2 ; + qathakel_V : V ; + qathakel_V2 : V2 ; + qathanis_V : V ; + qathanis_V2 : V2 ; + qathaz_V : V ; + qathaz_V2 : V2 ; + qav_V : V ; + qav_V2 : V2 ; + qed_V : V ; + qed_V2 : V2 ; + qedan_V : V ; + qedan_V2 : V2 ; + qedel_V : V ; + qedel_V2 : V2 ; + qedelel_V : V ; + qedelel_V2 : V2 ; + qekelelan_V : V ; + qekelelan_V2 : V2 ; + qeketh_V : V ; + qeketh_V2 : V2 ; + qembuk_V : V ; + qembuk_V2 : V2 ; + qengq_V : V ; + qengq_V2 : V2 ; + qephuz_V : V ; + qephuz_V2 : V2 ; + qephuzan_V : V ; + qephuzan_V2 : V2 ; + qeqebul_V : V ; + qeqebul_V2 : V2 ; + qeqesh_V : V ; + qeqesh_V2 : V2 ; + qeqeshel_V : V ; + qeqeshel_V2 : V2 ; + qethul_V : V ; + qethul_V2 : V2 ; + qhabaz_V : V ; + qhabaz_V2 : V2 ; + qhakaz_V : V ; + qhakaz_V2 : V2 ; + qham_V : V ; + qham_V2 : V2 ; + qhamuk_V : V ; + qhamuk_V2 : V2 ; + qhamukel_V : V ; + qhamukel_V2 : V2 ; + qhamukis_V : V ; + qhamukis_V2 : V2 ; + qhantsh_V : V ; + qhantsh_V2 : V2 ; + qhaqh_V : V ; + qhaqh_V2 : V2 ; + qhaqhazel_V : V ; + qhaqhazel_V2 : V2 ; + qhaqhek_V : V ; + qhaqhek_V2 : V2 ; + qhash_V : V ; + qhash_V2 : V2 ; + qhashaqhash_V : V ; + qhashaqhash_V2 : V2 ; + qhashis_V : V ; + qhashis_V2 : V2 ; + qhath_V : V ; + qhath_V2 : V2 ; + qhathanis_V : V ; + qhathanis_V2 : V2 ; + qhathek_V : V ; + qhathek_V2 : V2 ; + qhayis_V : V ; + qhayis_V2 : V2 ; + qhaz_V : V ; + qhaz_V2 : V2 ; + qhazan_V : V ; + qhazan_V2 : V2 ; + qhekez_V : V ; + qhekez_V2 : V2 ; + qhekezek_V : V ; + qhekezek_V2 : V2 ; + qhel_V : V ; + qhel_V2 : V2 ; + qhelel_V : V ; + qhelel_V2 : V2 ; + qhelelan_V : V ; + qhelelan_V2 : V2 ; + qheluk_V : V ; + qheluk_V2 : V2 ; + qhelukel_V : V ; + qhelukel_V2 : V2 ; + qhelukis_V : V ; + qhelukis_V2 : V2 ; + qheny_V : V ; + qheny_V2 : V2 ; + qhenyel_V : V ; + qhenyel_V2 : V2 ; + qhephuk_V : V ; + qhephuk_V2 : V2 ; + qheth_V : V ; + qheth_V2 : V2 ; + qhezuk_V : V ; + qhezuk_V2 : V2 ; + qhibuk_V : V ; + qhibuk_V2 : V2 ; + qhibul_V : V ; + qhibul_V2 : V2 ; + qhikiz_V : V ; + qhikiz_V2 : V2 ; + qhilik_V : V ; + qhilik_V2 : V2 ; + qhin_V : V ; + qhin_V2 : V2 ; + qhing_V : V ; + qhing_V2 : V2 ; + qhiyam_V : V ; + qhiyam_V2 : V2 ; + qhobozel_V : V ; + qhobozel_V2 : V2 ; + qhofoqhofoz_V : V ; + qhofoqhofoz_V2 : V2 ; + qhofoz_V : V ; + qhofoz_V2 : V2 ; + qhol_V : V ; + qhol_V2 : V2 ; + qholosh_V : V ; + qholosh_V2 : V2 ; + qholoshel_V : V ; + qholoshel_V2 : V2 ; + qhomoloz_V : V ; + qhomoloz_V2 : V2 ; + qhosh_V : V ; + qhosh_V2 : V2 ; + qhoshel_V : V ; + qhoshel_V2 : V2 ; + qhub_V : V ; + qhub_V2 : V2 ; + qhubek_V : V ; + qhubek_V2 : V2 ; + qhubekel_V : V ; + qhubekel_V2 : V2 ; + qhubel_V : V ; + qhubel_V2 : V2 ; + qhubukush_V : V ; + qhubukush_V2 : V2 ; + qhud_V : V ; + qhud_V2 : V2 ; + qhudelan_V : V ; + qhudelan_V2 : V2 ; + qhudul_V : V ; + qhudul_V2 : V2 ; + qhug_V : V ; + qhug_V2 : V2 ; + qhukuluz_V : V ; + qhukuluz_V2 : V2 ; + qhukuqhukuz_V : V ; + qhukuqhukuz_V2 : V2 ; + qhukuzan_V : V ; + qhukuzan_V2 : V2 ; + qhululel_V : V ; + qhululel_V2 : V2 ; + qhum_V : V ; + qhum_V2 : V2 ; + qhumbuk_V : V ; + qhumbuk_V2 : V2 ; + qhumis_V : V ; + qhumis_V2 : V2 ; + qhumuk_V : V ; + qhumuk_V2 : V2 ; + qhumuz_V : V ; + qhumuz_V2 : V2 ; + qhunsul_V : V ; + qhunsul_V2 : V2 ; + qhunsulek_V : V ; + qhunsulek_V2 : V2 ; + qhunsulel_V : V ; + qhunsulel_V2 : V2 ; + qhunsulelan_V : V ; + qhunsulelan_V2 : V2 ; + qhuqh_V : V ; + qhuqh_V2 : V2 ; + qhuqhumbel_V : V ; + qhuqhumbel_V2 : V2 ; + qhuth_V : V ; + qhuth_V2 : V2 ; + qhuzuk_V : V ; + qhuzuk_V2 : V2 ; + qhwabaz_V : V ; + qhwabaz_V2 : V2 ; + qhwag_V : V ; + qhwag_V2 : V2 ; + qhwakel_V : V ; + qhwakel_V2 : V2 ; + qhwand_V : V ; + qhwand_V2 : V2 ; + qhwandel_V : V ; + qhwandel_V2 : V2 ; + qhweb_V : V ; + qhweb_V2 : V2 ; + qhweban_V : V ; + qhweban_V2 : V2 ; + qhwish_V : V ; + qhwish_V2 : V2 ; + qikelel_V : V ; + qikelel_V2 : V2 ; + qikilek_V : V ; + qikilek_V2 : V2 ; + qin_V : V ; + qin_V2 : V2 ; + qinel_V : V ; + qinel_V2 : V2 ; + qinis_V : V ; + qinis_V2 : V2 ; + qinisek_V : V ; + qinisek_V2 : V2 ; + qinisekis_V : V ; + qinisekis_V2 : V2 ; + qinisel_V : V ; + qinisel_V2 : V2 ; + qiqing_V : V ; + qiqing_V2 : V2 ; + qob_V : V ; + qob_V2 : V2 ; + qobol_V : V ; + qobol_V2 : V2 ; + qojam_V : V ; + qojam_V2 : V2 ; + qok_V : V ; + qok_V2 : V2 ; + qokelel_V : V ; + qokelel_V2 : V2 ; + qom_V : V ; + qom_V2 : V2 ; + qombol_V : V ; + qombol_V2 : V2 ; + qomel_V : V ; + qomel_V2 : V2 ; + qomis_V : V ; + qomis_V2 : V2 ; + qomisek_V : V ; + qomisek_V2 : V2 ; + qond_V : V ; + qond_V2 : V2 ; + qondakal_V : V ; + qondakal_V2 : V2 ; + qondan_V : V ; + qondan_V2 : V2 ; + qondis_V : V ; + qondis_V2 : V2 ; + qondisis_V : V ; + qondisis_V2 : V2 ; + qonel_V : V ; + qonel_V2 : V2 ; + qong_V : V ; + qong_V2 : V2 ; + qongelel_V : V ; + qongelel_V2 : V2 ; + qongqoth_V : V ; + qongqoth_V2 : V2 ; + qoph_V : V ; + qoph_V2 : V2 ; + qophisan_V : V ; + qophisan_V2 : V2 ; + qoq_V : V ; + qoq_V2 : V2 ; + qoqan_V : V ; + qoqan_V2 : V2 ; + qoqaqoq_V : V ; + qoqaqoq_V2 : V2 ; + qoqek_V : V ; + qoqek_V2 : V2 ; + qoqekel_V : V ; + qoqekel_V2 : V2 ; + qoqel_V : V ; + qoqel_V2 : V2 ; + qosham_V : V ; + qosham_V2 : V2 ; + qoth_V : V ; + qoth_V2 : V2 ; + qothel_V : V ; + qothel_V2 : V2 ; + qothuk_V : V ; + qothuk_V2 : V2 ; + qothukel_V : V ; + qothukel_V2 : V2 ; + qothul_V : V ; + qothul_V2 : V2 ; + qub_V : V ; + qub_V2 : V2 ; + qubek_V : V ; + qubek_V2 : V2 ; + qubuk_V : V ; + qubuk_V2 : V2 ; + qubul_V : V ; + qubul_V2 : V2 ; + qukath_V : V ; + qukath_V2 : V2 ; + qukul_V : V ; + qukul_V2 : V2 ; + qukulan_V : V ; + qukulan_V2 : V2 ; + qul_V : V ; + qul_V2 : V2 ; + qulek_V : V ; + qulek_V2 : V2 ; + qulel_V : V ; + qulel_V2 : V2 ; + qulus_V : V ; + qulus_V2 : V2 ; + qumb_V : V ; + qumb_V2 : V2 ; + qumbek_V : V ; + qumbek_V2 : V2 ; + qumbelan_V : V ; + qumbelan_V2 : V2 ; + qundek_V : V ; + qundek_V2 : V2 ; + qung_V : V ; + qung_V2 : V2 ; + quny_V : V ; + quny_V2 : V2 ; + quph_V : V ; + quph_V2 : V2 ; + ququbal_V : V ; + ququbal_V2 : V2 ; + ququd_V : V ; + ququd_V2 : V2 ; + qwash_V : V ; + qwash_V2 : V2 ; + qwashis_V : V ; + qwashis_V2 : V2 ; + s_V : V ; + s_V2 : V2 ; + sab_V : V ; + sab_V2 : V2 ; + sabalal_V : V ; + sabalal_V2 : V2 ; + sabalalis_V : V ; + sabalalis_V2 : V2 ; + sabek_V : V ; + sabek_V2 : V2 ; + sabel_V : V ; + sabel_V2 : V2 ; + sadukelan_V : V ; + sadukelan_V2 : V2 ; + safun_V : V ; + safun_V2 : V2 ; + safunan_V : V ; + safunan_V2 : V2 ; + safunek_V : V ; + safunek_V2 : V2 ; + safunisel_V : V ; + safunisel_V2 : V2 ; + sah_V : V ; + sah_V2 : V2 ; + sakaz_V : V ; + sakaz_V2 : V2 ; + sakazan_V : V ; + sakazan_V2 : V2 ; + sakazek_V : V ; + sakazek_V2 : V2 ; + sakazel_V : V ; + sakazel_V2 : V2 ; + sal_V : V ; + sal_V2 : V2 ; + salel_V : V ; + salel_V2 : V2 ; + sambathek_V : V ; + sambathek_V2 : V2 ; + san_V : V ; + san_V2 : V2 ; + sanel_V : V ; + sanel_V2 : V2 ; + sangan_V : V ; + sangan_V2 : V2 ; + sanganis_V : V ; + sanganis_V2 : V2 ; + sanguluk_V : V ; + sanguluk_V2 : V2 ; + sangulukel_V : V ; + sangulukel_V2 : V2 ; + saphaz_V : V ; + saphaz_V2 : V2 ; + sas_V : V ; + sas_V2 : V2 ; + sasel_V : V ; + sasel_V2 : V2 ; + sath_V : V ; + sath_V2 : V2 ; + sathan_V : V ; + sathan_V2 : V2 ; + sathelek_V : V ; + sathelek_V2 : V2 ; + sathelelan_V : V ; + sathelelan_V2 : V2 ; + savun_V : V ; + savun_V2 : V2 ; + savunel_V : V ; + savunel_V2 : V2 ; + sayin_V : V ; + sayin_V2 : V2 ; + sayinel_V : V ; + sayinel_V2 : V2 ; + sebenz_V : V ; + sebenz_V2 : V2 ; + sebenzan_V : V ; + sebenzan_V2 : V2 ; + sebenzek_V : V ; + sebenzek_V2 : V2 ; + sebenzel_V : V ; + sebenzel_V2 : V2 ; + sebenzelan_V : V ; + sebenzelan_V2 : V2 ; + sebenzis_V : V ; + sebenzis_V2 : V2 ; + sebenzisan_V : V ; + sebenzisan_V2 : V2 ; + sebenzisek_V : V ; + sebenzisek_V2 : V2 ; + sebenzisel_V : V ; + sebenzisel_V2 : V2 ; + sebesebenz_V : V ; + sebesebenz_V2 : V2 ; + sef_V : V ; + sef_V2 : V2 ; + sefan_V : V ; + sefan_V2 : V2 ; + sefanel_V : V ; + sefanel_V2 : V2 ; + sefis_V : V ; + sefis_V2 : V2 ; + sek_V : V ; + sek_V2 : V2 ; + sekel_V : V ; + sekel_V2 : V2 ; + sel_V : V ; + sel_V2 : V2 ; + selekelel_V : V ; + selekelel_V2 : V2 ; + selel_V : V ; + selel_V2 : V2 ; + send_V : V ; + send_V2 : V2 ; + sendel_V : V ; + sendel_V2 : V2 ; + seng_V : V ; + seng_V2 : V2 ; + sengan_V : V ; + sengan_V2 : V2 ; + senganek_V : V ; + senganek_V2 : V2 ; + sesh_V : V ; + sesh_V2 : V2 ; + seshis_V : V ; + seshis_V2 : V2 ; + seshisek_V : V ; + seshisek_V2 : V2 ; + sev_V : V ; + sev_V2 : V2 ; + sevel_V : V ; + sevel_V2 : V2 ; + sevul_V : V ; + sevul_V2 : V2 ; + sevulek_V : V ; + sevulek_V2 : V2 ; + sevuzel_V : V ; + sevuzel_V2 : V2 ; + sewuz_V : V ; + sewuz_V2 : V2 ; + sez_V : V ; + sez_V2 : V2 ; + sh_V : V ; + sh_V2 : V2 ; + shab_V : V ; + shab_V2 : V2 ; + shabalal_V : V ; + shabalal_V2 : V2 ; + shabashek_V : V ; + shabashek_V2 : V2 ; + shad_V : V ; + shad_V2 : V2 ; + shadel_V : V ; + shadel_V2 : V2 ; + shadis_V : V ; + shadis_V2 : V2 ; + shalaz_V : V ; + shalaz_V2 : V2 ; + shalazel_V : V ; + shalazel_V2 : V2 ; + shalushaluz_V : V ; + shalushaluz_V2 : V2 ; + shaluz_V : V ; + shaluz_V2 : V2 ; + shaluzis_V : V ; + shaluzis_V2 : V2 ; + shan_V : V ; + shan_V2 : V2 ; + shanel_V : V ; + shanel_V2 : V2 ; + shaq_V : V ; + shaq_V2 : V2 ; + shaqan_V : V ; + shaqan_V2 : V2 ; + shaqek_V : V ; + shaqek_V2 : V2 ; + shaqis_V : V ; + shaqis_V2 : V2 ; + shawul_V : V ; + shawul_V2 : V2 ; + shawulel_V : V ; + shawulel_V2 : V2 ; + shay_V : V ; + shay_V2 : V2 ; + shayan_V : V ; + shayan_V2 : V2 ; + shayanis_V : V ; + shayanis_V2 : V2 ; + shayek_V : V ; + shayek_V2 : V2 ; + shayel_V : V ; + shayel_V2 : V2 ; + shayelek_V : V ; + shayelek_V2 : V2 ; + shayelel_V : V ; + shayelel_V2 : V2 ; + shayis_V : V ; + shayis_V2 : V2 ; + shayisan_V : V ; + shayisan_V2 : V2 ; + shayisek_V : V ; + shayisek_V2 : V2 ; + sheb_V : V ; + sheb_V2 : V2 ; + shebelez_V : V ; + shebelez_V2 : V2 ; + shekelel_V : V ; + shekelel_V2 : V2 ; + shel_V : V ; + shel_V2 : V2 ; + shelel_V : V ; + shelel_V2 : V2 ; + shelelekis_V : V ; + shelelekis_V2 : V2 ; + shendel_V : V ; + shendel_V2 : V2 ; + shesh_V : V ; + shesh_V2 : V2 ; + sheshek_V : V ; + sheshek_V2 : V2 ; + sheshel_V : V ; + sheshel_V2 : V2 ; + sheshis_V : V ; + sheshis_V2 : V2 ; + shibh_V : V ; + shibh_V2 : V2 ; + shibhis_V : V ; + shibhis_V2 : V2 ; + shibilik_V : V ; + shibilik_V2 : V2 ; + shikashik_V : V ; + shikashik_V2 : V2 ; + shikashikek_V : V ; + shikashikek_V2 : V2 ; + shikil_V : V ; + shikil_V2 : V2 ; + shikilis_V : V ; + shikilis_V2 : V2 ; + shikilisan_V : V ; + shikilisan_V2 : V2 ; + shikizel_V : V ; + shikizel_V2 : V2 ; + shikizelel_V : V ; + shikizelel_V2 : V2 ; + shing_V : V ; + shing_V2 : V2 ; + shingan_V : V ; + shingan_V2 : V2 ; + shingil_V : V ; + shingil_V2 : V2 ; + shintsh_V : V ; + shintsh_V2 : V2 ; + shintshan_V : V ; + shintshan_V2 : V2 ; + shintshashintsh_V : V ; + shintshashintsh_V2 : V2 ; + shintshel_V : V ; + shintshel_V2 : V2 ; + shiphizel_V : V ; + shiphizel_V2 : V2 ; + shiqelek_V : V ; + shiqelek_V2 : V2 ; + shis_V : V ; + shis_V2 : V2 ; + shisek_V : V ; + shisek_V2 : V2 ; + shisekel_V : V ; + shisekel_V2 : V2 ; + shisel_V : V ; + shisel_V2 : V2 ; + shiselan_V : V ; + shiselan_V2 : V2 ; + shishiliz_V : V ; + shishiliz_V2 : V2 ; + shishizel_V : V ; + shishizel_V2 : V2 ; + shisis_V : V ; + shisis_V2 : V2 ; + shiy_V : V ; + shiy_V2 : V2 ; + shiyek_V : V ; + shiyek_V2 : V2 ; + shiyel_V : V ; + shiyel_V2 : V2 ; + shiyis_V : V ; + shiyis_V2 : V2 ; + shob_V : V ; + shob_V2 : V2 ; + shoban_V : V ; + shoban_V2 : V2 ; + shok_V : V ; + shok_V2 : V2 ; + shokek_V : V ; + shokek_V2 : V2 ; + shokel_V : V ; + shokel_V2 : V2 ; + shokobez_V : V ; + shokobez_V2 : V2 ; + shol_V : V ; + shol_V2 : V2 ; + shoman_V : V ; + shoman_V2 : V2 ; + shon_V : V ; + shon_V2 : V2 ; + shonel_V : V ; + shonel_V2 : V2 ; + shonis_V : V ; + shonis_V2 : V2 ; + shosh_V : V ; + shosh_V2 : V2 ; + shoshel_V : V ; + shoshel_V2 : V2 ; + shoshozel_V : V ; + shoshozel_V2 : V2 ; + shov_V : V ; + shov_V2 : V2 ; + shub_V : V ; + shub_V2 : V2 ; + shubis_V : V ; + shubis_V2 : V2 ; + shud_V : V ; + shud_V2 : V2 ; + shudul_V : V ; + shudul_V2 : V2 ; + shudulisan_V : V ; + shudulisan_V2 : V2 ; + shuk_V : V ; + shuk_V2 : V2 ; + shukel_V : V ; + shukel_V2 : V2 ; + shukelan_V : V ; + shukelan_V2 : V2 ; + shukum_V : V ; + shukum_V2 : V2 ; + shukumis_V : V ; + shukumis_V2 : V2 ; + shum_V : V ; + shum_V2 : V2 ; + shumayel_V : V ; + shumayel_V2 : V2 ; + shumayez_V : V ; + shumayez_V2 : V2 ; + shumek_V : V ; + shumek_V2 : V2 ; + shumpul_V : V ; + shumpul_V2 : V2 ; + shumpulel_V : V ; + shumpulel_V2 : V2 ; + shunq_V : V ; + shunq_V2 : V2 ; + shunqis_V : V ; + shunqis_V2 : V2 ; + shunqisel_V : V ; + shunqisel_V2 : V2 ; + shuqelan_V : V ; + shuqelan_V2 : V2 ; + shuqis_V : V ; + shuqis_V2 : V2 ; + shuqul_V : V ; + shuqul_V2 : V2 ; + shuqungan_V : V ; + shuqungan_V2 : V2 ; + shushuluz_V : V ; + shushuluz_V2 : V2 ; + shushumb_V : V ; + shushumb_V2 : V2 ; + shushumbis_V : V ; + shushumbis_V2 : V2 ; + shuthek_V : V ; + shuthek_V2 : V2 ; + shwabadel_V : V ; + shwabadel_V2 : V2 ; + shwaban_V : V ; + shwaban_V2 : V2 ; + shwaph_V : V ; + shwaph_V2 : V2 ; + shwaphuluz_V : V ; + shwaphuluz_V2 : V2 ; + shwaq_V : V ; + shwaq_V2 : V2 ; + shwathiz_V : V ; + shwathiz_V2 : V2 ; + shwelez_V : V ; + shwelez_V2 : V2 ; + shwez_V : V ; + shwez_V2 : V2 ; + shwib_V : V ; + shwib_V2 : V2 ; + shwibek_V : V ; + shwibek_V2 : V2 ; + shwiliz_V : V ; + shwiliz_V2 : V2 ; + sibekel_V : V ; + sibekel_V2 : V2 ; + sibekelan_V : V ; + sibekelan_V2 : V2 ; + sihl_V : V ; + sihl_V2 : V2 ; + sihlakal_V : V ; + sihlakal_V2 : V2 ; + sihlek_V : V ; + sihlek_V2 : V2 ; + sihlekis_V : V ; + sihlekis_V2 : V2 ; + sihlel_V : V ; + sihlel_V2 : V2 ; + sihlelek_V : V ; + sihlelek_V2 : V2 ; + sihlis_V : V ; + sihlis_V2 : V2 ; + sik_V : V ; + sik_V2 : V2 ; + sikan_V : V ; + sikan_V2 : V2 ; + sikaz_V : V ; + sikaz_V2 : V2 ; + sikek_V : V ; + sikek_V2 : V2 ; + sikel_V : V ; + sikel_V2 : V2 ; + sil_V : V ; + sil_V2 : V2 ; + silal_V : V ; + silal_V2 : V2 ; + silalel_V : V ; + silalel_V2 : V2 ; + silaz_V : V ; + silaz_V2 : V2 ; + silekelel_V : V ; + silekelel_V2 : V2 ; + silel_V : V ; + silel_V2 : V2 ; + silis_V : V ; + silis_V2 : V2 ; + simam_V : V ; + simam_V2 : V2 ; + simamis_V : V ; + simamis_V2 : V2 ; + simbuk_V : V ; + simbuk_V2 : V2 ; + sin_V : V ; + sin_V2 : V2 ; + sinan_V : V ; + sinan_V2 : V2 ; + sind_V : V ; + sind_V2 : V2 ; + sindan_V : V ; + sindan_V2 : V2 ; + sindel_V : V ; + sindel_V2 : V2 ; + sindis_V : V ; + sindis_V2 : V2 ; + sinek_V : V ; + sinek_V2 : V2 ; + sinekis_V : V ; + sinekis_V2 : V2 ; + sinel_V : V ; + sinel_V2 : V2 ; + sinelan_V : V ; + sinelan_V2 : V2 ; + sinelek_V : V ; + sinelek_V2 : V2 ; + sing_V : V ; + sing_V2 : V2 ; + singan_V : V ; + singan_V2 : V2 ; + singath_V : V ; + singath_V2 : V2 ; + singek_V : V ; + singek_V2 : V2 ; + sinis_V : V ; + sinis_V2 : V2 ; + siny_V : V ; + siny_V2 : V2 ; + siphuk_V : V ; + siphuk_V2 : V2 ; + siphul_V : V ; + siphul_V2 : V2 ; + siphuz_V : V ; + siphuz_V2 : V2 ; + siphuzelis_V : V ; + siphuzelis_V2 : V2 ; + sis_V : V ; + sis_V2 : V2 ; + sisek_V : V ; + sisek_V2 : V2 ; + sisel_V : V ; + sisel_V2 : V2 ; + sising_V : V ; + sising_V2 : V2 ; + sisithek_V : V ; + sisithek_V2 : V2 ; + sith_V : V ; + sith_V2 : V2 ; + sithek_V : V ; + sithek_V2 : V2 ; + sithel_V : V ; + sithel_V2 : V2 ; + sithelekel_V : V ; + sithelekel_V2 : V2 ; + sithelel_V : V ; + sithelel_V2 : V2 ; + sithelis_V : V ; + sithelis_V2 : V2 ; + sithibez_V : V ; + sithibez_V2 : V2 ; + siz_V : V ; + siz_V2 : V2 ; + sizakal_V : V ; + sizakal_V2 : V2 ; + sizan_V : V ; + sizan_V2 : V2 ; + sizanelis_V : V ; + sizanelis_V2 : V2 ; + sizekel_V : V ; + sizekel_V2 : V2 ; + sizil_V : V ; + sizil_V2 : V2 ; + sizis_V : V ; + sizis_V2 : V2 ; + sobozel_V : V ; + sobozel_V2 : V2 ; + sobozelis_V : V ; + sobozelis_V2 : V2 ; + sok_V : V ; + sok_V2 : V2 ; + sokel_V : V ; + sokel_V2 : V2 ; + sokol_V : V ; + sokol_V2 : V2 ; + sol_V : V ; + sol_V2 : V2 ; + solasol_V : V ; + solasol_V2 : V2 ; + solasolek_V : V ; + solasolek_V2 : V2 ; + solek_V : V ; + solek_V2 : V2 ; + solel_V : V ; + solel_V2 : V2 ; + solis_V : V ; + solis_V2 : V2 ; + som_V : V ; + som_V2 : V2 ; + sombuluk_V : V ; + sombuluk_V2 : V2 ; + sombulul_V : V ; + sombulul_V2 : V2 ; + sombululek_V : V ; + sombululek_V2 : V2 ; + sondel_V : V ; + sondel_V2 : V2 ; + sondelan_V : V ; + sondelan_V2 : V2 ; + sondelanis_V : V ; + sondelanis_V2 : V2 ; + sondez_V : V ; + sondez_V2 : V2 ; + sondezel_V : V ; + sondezel_V2 : V2 ; + song_V : V ; + song_V2 : V2 ; + songan_V : V ; + songan_V2 : V2 ; + songasong_V : V ; + songasong_V2 : V2 ; + songel_V : V ; + songel_V2 : V2 ; + sont_V : V ; + sont_V2 : V2 ; + sontan_V : V ; + sontan_V2 : V2 ; + sontasont_V : V ; + sontasont_V2 : V2 ; + sontis_V : V ; + sontis_V2 : V2 ; + soph_V : V ; + soph_V2 : V2 ; + sub_V : V ; + sub_V2 : V2 ; + subath_V : V ; + subath_V2 : V2 ; + suduk_V : V ; + suduk_V2 : V2 ; + suk_V : V ; + suk_V2 : V2 ; + sukek_V : V ; + sukek_V2 : V2 ; + sukel_V : V ; + sukel_V2 : V2 ; + sukis_V : V ; + sukis_V2 : V2 ; + sukum_V : V ; + sukum_V2 : V2 ; + sukumel_V : V ; + sukumel_V2 : V2 ; + sul_V : V ; + sul_V2 : V2 ; + sulazel_V : V ; + sulazel_V2 : V2 ; + sulel_V : V ; + sulel_V2 : V2 ; + sulisis_V : V ; + sulisis_V2 : V2 ; + sulubezan_V : V ; + sulubezan_V2 : V2 ; + sunduz_V : V ; + sunduz_V2 : V2 ; + sungul_V : V ; + sungul_V2 : V2 ; + sungulel_V : V ; + sungulel_V2 : V2 ; + sus_V : V ; + sus_V2 : V2 ; + susel_V : V ; + susel_V2 : V2 ; + suth_V : V ; + suth_V2 : V2 ; + suthek_V : V ; + suthek_V2 : V2 ; + suthelek_V : V ; + suthelek_V2 : V2 ; + suthis_V : V ; + suthis_V2 : V2 ; + suz_V : V ; + suz_V2 : V2 ; + swabuluk_V : V ; + swabuluk_V2 : V2 ; + swac_V : V ; + swac_V2 : V2 ; + swakam_V : V ; + swakam_V2 : V2 ; + swakamel_V : V ; + swakamel_V2 : V2 ; + swanguluk_V : V ; + swanguluk_V2 : V2 ; + swel_V : V ; + swel_V2 : V2 ; + swelakal_V : V ; + swelakal_V2 : V2 ; + swelek_V : V ; + swelek_V2 : V2 ; + swelis_V : V ; + swelis_V2 : V2 ; + tak_V : V ; + tak_V2 : V2 ; + takelan_V : V ; + takelan_V2 : V2 ; + tan_V : V ; + tan_V2 : V2 ; + tanan_V : V ; + tanan_V2 : V2 ; + tanas_V : V ; + tanas_V2 : V2 ; + tap_V : V ; + tap_V2 : V2 ; + tapel_V : V ; + tapel_V2 : V2 ; + tat_V : V ; + tat_V2 : V2 ; + tatabuk_V : V ; + tatabuk_V2 : V2 ; + tatam_V : V ; + tatam_V2 : V2 ; + tatamis_V : V ; + tatamis_V2 : V2 ; + tatazel_V : V ; + tatazel_V2 : V2 ; + tatulul_V : V ; + tatulul_V2 : V2 ; + tebel_V : V ; + tebel_V2 : V2 ; + tekul_V : V ; + tekul_V2 : V2 ; + telebhel_V : V ; + telebhel_V2 : V2 ; + tet_V : V ; + tet_V2 : V2 ; + tetem_V : V ; + tetem_V2 : V2 ; + th_V : V ; + th_V2 : V2 ; + thab_V : V ; + thab_V2 : V2 ; + thabath_V : V ; + thabath_V2 : V2 ; + thabathel_V : V ; + thabathel_V2 : V2 ; + thak_V : V ; + thak_V2 : V2 ; + thakath_V : V ; + thakath_V2 : V2 ; + thakathan_V : V ; + thakathan_V2 : V2 ; + thakathel_V : V ; + thakathel_V2 : V2 ; + thakazel_V : V ; + thakazel_V2 : V2 ; + thakel_V : V ; + thakel_V2 : V2 ; + thakis_V : V ; + thakis_V2 : V2 ; + thalalis_V : V ; + thalalis_V2 : V2 ; + thalaz_V : V ; + thalaz_V2 : V2 ; + thamb_V : V ; + thamb_V2 : V2 ; + thambalal_V : V ; + thambalal_V2 : V2 ; + thambam_V : V ; + thambam_V2 : V2 ; + thambek_V : V ; + thambek_V2 : V2 ; + thambekek_V : V ; + thambekek_V2 : V2 ; + thambekel_V : V ; + thambekel_V2 : V2 ; + thambis_V : V ; + thambis_V2 : V2 ; + thamel_V : V ; + thamel_V2 : V2 ; + thamund_V : V ; + thamund_V2 : V2 ; + than_V : V ; + than_V2 : V2 ; + thand_V : V ; + thand_V2 : V2 ; + thandabuz_V : V ; + thandabuz_V2 : V2 ; + thandan_V : V ; + thandan_V2 : V2 ; + thandanel_V : V ; + thandanel_V2 : V2 ; + thandanis_V : V ; + thandanis_V2 : V2 ; + thandaz_V : V ; + thandaz_V2 : V2 ; + thandazel_V : V ; + thandazel_V2 : V2 ; + thandek_V : V ; + thandek_V2 : V2 ; + thandel_V : V ; + thandel_V2 : V2 ; + thandisis_V : V ; + thandisis_V2 : V2 ; + thanel_V : V ; + thanel_V2 : V2 ; + thanqaz_V : V ; + thanqaz_V2 : V2 ; + thaph_V : V ; + thaph_V2 : V2 ; + thaphuk_V : V ; + thaphuk_V2 : V2 ; + thath_V : V ; + thath_V2 : V2 ; + thathan_V : V ; + thathan_V2 : V2 ; + thathathek_V : V ; + thathathek_V2 : V2 ; + thathazelan_V : V ; + thathazelan_V2 : V2 ; + thathek_V : V ; + thathek_V2 : V2 ; + thathel_V : V ; + thathel_V2 : V2 ; + thathelan_V : V ; + thathelan_V2 : V2 ; + thathelel_V : V ; + thathelel_V2 : V2 ; + thathis_V : V ; + thathis_V2 : V2 ; + thayiz_V : V ; + thayiz_V2 : V2 ; + thek_V : V ; + thek_V2 : V2 ; + thekel_V : V ; + thekel_V2 : V2 ; + thel_V : V ; + thel_V2 : V2 ; + thelan_V : V ; + thelan_V2 : V2 ; + thelek_V : V ; + thelek_V2 : V2 ; + thelekel_V : V ; + thelekel_V2 : V2 ; + thelel_V : V ; + thelel_V2 : V2 ; + thelelan_V : V ; + thelelan_V2 : V2 ; + thelez_V : V ; + thelez_V2 : V2 ; + themb_V : V ; + themb_V2 : V2 ; + thembek_V : V ; + thembek_V2 : V2 ; + thembel_V : V ; + thembel_V2 : V2 ; + thembis_V : V ; + thembis_V2 : V2 ; + thembisan_V : V ; + thembisan_V2 : V2 ; + then_V : V ; + then_V2 : V2 ; + thend_V : V ; + thend_V2 : V2 ; + thendel_V : V ; + thendel_V2 : V2 ; + thenek_V : V ; + thenek_V2 : V2 ; + theng_V : V ; + theng_V2 : V2 ; + thengatheng_V : V ; + thengatheng_V2 : V2 ; + thengek_V : V ; + thengek_V2 : V2 ; + thengel_V : V ; + thengel_V2 : V2 ; + thengis_V : V ; + thengis_V2 : V2 ; + thengisel_V : V ; + thengisel_V2 : V2 ; + theth_V : V ; + theth_V2 : V2 ; + thethan_V : V ; + thethan_V2 : V2 ; + thethelel_V : V ; + thethelel_V2 : V2 ; + thethis_V : V ; + thethis_V2 : V2 ; + thethisan_V : V ; + thethisan_V2 : V2 ; + thethisel_V : V ; + thethisel_V2 : V2 ; + thez_V : V ; + thez_V2 : V2 ; + thezel_V : V ; + thezel_V2 : V2 ; + thib_V : V ; + thib_V2 : V2 ; + thibis_V : V ; + thibis_V2 : V2 ; + thikamez_V : V ; + thikamez_V2 : V2 ; + thikamezek_V : V ; + thikamezek_V2 : V2 ; + thimb_V : V ; + thimb_V2 : V2 ; + thimul_V : V ; + thimul_V2 : V2 ; + thint_V : V ; + thint_V2 : V2 ; + thintan_V : V ; + thintan_V2 : V2 ; + thintathint_V : V ; + thintathint_V2 : V2 ; + thintek_V : V ; + thintek_V2 : V2 ; + thintel_V : V ; + thintel_V2 : V2 ; + thintith_V : V ; + thintith_V2 : V2 ; + thiphilizan_V : V ; + thiphilizan_V2 : V2 ; + this_V : V ; + this_V2 : V2 ; + thithibal_V : V ; + thithibal_V2 : V2 ; + thithiz_V : V ; + thithiz_V2 : V2 ; + thiy_V : V ; + thiy_V2 : V2 ; + thiyan_V : V ; + thiyan_V2 : V2 ; + thob_V : V ; + thob_V2 : V2 ; + thobathob_V : V ; + thobathob_V2 : V2 ; + thobek_V : V ; + thobek_V2 : V2 ; + thobel_V : V ; + thobel_V2 : V2 ; + thobis_V : V ; + thobis_V2 : V2 ; + thokomal_V : V ; + thokomal_V2 : V2 ; + thokoz_V : V ; + thokoz_V2 : V2 ; + thokozel_V : V ; + thokozel_V2 : V2 ; + thokozis_V : V ; + thokozis_V2 : V2 ; + thol_V : V ; + thol_V2 : V2 ; + tholakal_V : V ; + tholakal_V2 : V2 ; + tholan_V : V ; + tholan_V2 : V2 ; + tholel_V : V ; + tholel_V2 : V2 ; + tholis_V : V ; + tholis_V2 : V2 ; + tholoz_V : V ; + tholoz_V2 : V2 ; + thomb_V : V ; + thomb_V2 : V2 ; + thombuluk_V : V ; + thombuluk_V2 : V2 ; + thombulul_V : V ; + thombulul_V2 : V2 ; + thontel_V : V ; + thontel_V2 : V2 ; + thony_V : V ; + thony_V2 : V2 ; + thoph_V : V ; + thoph_V2 : V2 ; + thos_V : V ; + thos_V2 : V2 ; + thosel_V : V ; + thosel_V2 : V2 ; + thothan_V : V ; + thothan_V2 : V2 ; + thothobal_V : V ; + thothobal_V2 : V2 ; + thothongan_V : V ; + thothongan_V2 : V2 ; + thub_V : V ; + thub_V2 : V2 ; + thubelez_V : V ; + thubelez_V2 : V2 ; + thufel_V : V ; + thufel_V2 : V2 ; + thufelel_V : V ; + thufelel_V2 : V2 ; + thuk_V : V ; + thuk_V2 : V2 ; + thukel_V : V ; + thukel_V2 : V2 ; + thukulul_V : V ; + thukulul_V2 : V2 ; + thukus_V : V ; + thukus_V2 : V2 ; + thukuthel_V : V ; + thukuthel_V2 : V2 ; + thukuthelel_V : V ; + thukuthelel_V2 : V2 ; + thukuthelis_V : V ; + thukuthelis_V2 : V2 ; + thul_V : V ; + thul_V2 : V2 ; + thulathul_V : V ; + thulathul_V2 : V2 ; + thulek_V : V ; + thulek_V2 : V2 ; + thulel_V : V ; + thulel_V2 : V2 ; + thulis_V : V ; + thulis_V2 : V2 ; + thulul_V : V ; + thulul_V2 : V2 ; + thululek_V : V ; + thululek_V2 : V2 ; + thululel_V : V ; + thululel_V2 : V2 ; + thum_V : V ; + thum_V2 : V2 ; + thumathum_V : V ; + thumathum_V2 : V2 ; + thumb_V : V ; + thumb_V2 : V2 ; + thumek_V : V ; + thumek_V2 : V2 ; + thumel_V : V ; + thumel_V2 : V2 ; + thumelel_V : V ; + thumelel_V2 : V2 ; + thun_V : V ; + thun_V2 : V2 ; + thunakal_V : V ; + thunakal_V2 : V2 ; + thunaz_V : V ; + thunaz_V2 : V2 ; + thunazek_V : V ; + thunazek_V2 : V2 ; + thunduzel_V : V ; + thunduzel_V2 : V2 ; + thung_V : V ; + thung_V2 : V2 ; + thungan_V : V ; + thungan_V2 : V2 ; + thungath_V : V ; + thungath_V2 : V2 ; + thungathan_V : V ; + thungathan_V2 : V2 ; + thungathel_V : V ; + thungathel_V2 : V2 ; + thungathung_V : V ; + thungathung_V2 : V2 ; + thungel_V : V ; + thungel_V2 : V2 ; + thungelek_V : V ; + thungelek_V2 : V2 ; + thungis_V : V ; + thungis_V2 : V2 ; + thunq_V : V ; + thunq_V2 : V2 ; + thunqis_V : V ; + thunqis_V2 : V2 ; + thunqisel_V : V ; + thunqisel_V2 : V2 ; + thuntubez_V : V ; + thuntubez_V2 : V2 ; + thuntuth_V : V ; + thuntuth_V2 : V2 ; + thunuk_V : V ; + thunuk_V2 : V2 ; + thunukal_V : V ; + thunukal_V2 : V2 ; + thunukel_V : V ; + thunukel_V2 : V2 ; + thuquk_V : V ; + thuquk_V2 : V2 ; + thus_V : V ; + thus_V2 : V2 ; + thusel_V : V ; + thusel_V2 : V2 ; + thushuk_V : V ; + thushuk_V2 : V2 ; + thuth_V : V ; + thuth_V2 : V2 ; + thuthan_V : V ; + thuthan_V2 : V2 ; + thuthel_V : V ; + thuthel_V2 : V2 ; + thuthelek_V : V ; + thuthelek_V2 : V2 ; + thuthuk_V : V ; + thuthuk_V2 : V2 ; + thuthukis_V : V ; + thuthukis_V2 : V2 ; + thuthumb_V : V ; + thuthumb_V2 : V2 ; + thuthumel_V : V ; + thuthumel_V2 : V2 ; + thuthumelis_V : V ; + thuthumelis_V2 : V2 ; + thuthuzel_V : V ; + thuthuzel_V2 : V2 ; + thwabaz_V : V ; + thwabaz_V2 : V2 ; + thwal_V : V ; + thwal_V2 : V2 ; + thwalel_V : V ; + thwalel_V2 : V2 ; + thwalis_V : V ; + thwalis_V2 : V2 ; + thwas_V : V ; + thwas_V2 : V2 ; + thwebul_V : V ; + thwebul_V2 : V2 ; + thwes_V : V ; + thwes_V2 : V2 ; + thwish_V : V ; + thwish_V2 : V2 ; + thwishil_V : V ; + thwishil_V2 : V2 ; + tibil_V : V ; + tibil_V2 : V2 ; + tik_V : V ; + tik_V2 : V2 ; + tikek_V : V ; + tikek_V2 : V2 ; + tikit_V : V ; + tikit_V2 : V2 ; + tikitel_V : V ; + tikitel_V2 : V2 ; + titiny_V : V ; + titiny_V2 : V2 ; + totob_V : V ; + totob_V2 : V2 ; + totobel_V : V ; + totobel_V2 : V2 ; + tshak_V : V ; + tshak_V2 : V2 ; + tshakadul_V : V ; + tshakadul_V2 : V2 ; + tshal_V : V ; + tshal_V2 : V2 ; + tshalel_V : V ; + tshalel_V2 : V2 ; + tshaz_V : V ; + tshaz_V2 : V2 ; + tshek_V : V ; + tshek_V2 : V2 ; + tshekel_V : V ; + tshekel_V2 : V2 ; + tshekis_V : V ; + tshekis_V2 : V2 ; + tshekul_V : V ; + tshekul_V2 : V2 ; + tshel_V : V ; + tshel_V2 : V2 ; + tshelan_V : V ; + tshelan_V2 : V2 ; + tshelek_V : V ; + tshelek_V2 : V2 ; + tshelel_V : V ; + tshelel_V2 : V2 ; + tshenel_V : V ; + tshenel_V2 : V2 ; + tshengis_V : V ; + tshengis_V2 : V2 ; + tshikiz_V : V ; + tshikiz_V2 : V2 ; + tshiloz_V : V ; + tshiloz_V2 : V2 ; + tshing_V : V ; + tshing_V2 : V2 ; + tshiyoz_V : V ; + tshiyoz_V2 : V2 ; + tshod_V : V ; + tshod_V2 : V2 ; + tshud_V : V ; + tshud_V2 : V2 ; + tshuman_V : V ; + tshuman_V2 : V2 ; + tshutshumb_V : V ; + tshutshumb_V2 : V2 ; + tshuz_V : V ; + tshuz_V2 : V2 ; + tshwek_V : V ; + tshwek_V2 : V2 ; + tub_V : V ; + tub_V2 : V2 ; + tubek_V : V ; + tubek_V2 : V2 ; + tus_V : V ; + tus_V2 : V2 ; + tusan_V : V ; + tusan_V2 : V2 ; + tusel_V : V ; + tusel_V2 : V2 ; + v_V : V ; + v_V2 : V2 ; + vakash_V : V ; + vakash_V2 : V2 ; + vakashel_V : V ; + vakashel_V2 : V2 ; + vakashelan_V : V ; + vakashelan_V2 : V2 ; + vakashelel_V : V ; + vakashelel_V2 : V2 ; + vakashis_V : V ; + vakashis_V2 : V2 ; + val_V : V ; + val_V2 : V2 ; + valek_V : V ; + valek_V2 : V2 ; + valel_V : V ; + valel_V2 : V2 ; + valelek_V : V ; + valelek_V2 : V2 ; + valelis_V : V ; + valelis_V2 : V2 ; + valelisan_V : V ; + valelisan_V2 : V2 ; + valelisel_V : V ; + valelisel_V2 : V2 ; + valisis_V : V ; + valisis_V2 : V2 ; + vam_V : V ; + vam_V2 : V2 ; + vamel_V : V ; + vamel_V2 : V2 ; + vamelan_V : V ; + vamelan_V2 : V2 ; + vamis_V : V ; + vamis_V2 : V2 ; + vath_V : V ; + vath_V2 : V2 ; + vathazel_V : V ; + vathazel_V2 : V2 ; + vathis_V : V ; + vathis_V2 : V2 ; + vav_V : V ; + vav_V2 : V2 ; + vel_V : V ; + vel_V2 : V2 ; + velel_V : V ; + velel_V2 : V2 ; + velelis_V : V ; + velelis_V2 : V2 ; + vev_V : V ; + vev_V2 : V2 ; + vevezel_V : V ; + vevezel_V2 : V2 ; + vevis_V : V ; + vevis_V2 : V2 ; + vez_V : V ; + vez_V2 : V2 ; + vezel_V : V ; + vezel_V2 : V2 ; + vezelan_V : V ; + vezelan_V2 : V2 ; + vik_V : V ; + vik_V2 : V2 ; + vikel_V : V ; + vikel_V2 : V2 ; + vikelek_V : V ; + vikelek_V2 : V2 ; + vilaph_V : V ; + vilaph_V2 : V2 ; + vimb_V : V ; + vimb_V2 : V2 ; + vimban_V : V ; + vimban_V2 : V2 ; + vimbanis_V : V ; + vimbanis_V2 : V2 ; + vimbek_V : V ; + vimbek_V2 : V2 ; + vimbel_V : V ; + vimbel_V2 : V2 ; + vimbelek_V : V ; + vimbelek_V2 : V2 ; + vimbezel_V : V ; + vimbezel_V2 : V2 ; + vith_V : V ; + vith_V2 : V2 ; + vithiz_V : V ; + vithiz_V2 : V2 ; + viv_V : V ; + viv_V2 : V2 ; + vivan_V : V ; + vivan_V2 : V2 ; + vivel_V : V ; + vivel_V2 : V2 ; + viviny_V : V ; + viviny_V2 : V2 ; + vivinyisis_V : V ; + vivinyisis_V2 : V2 ; + viyoz_V : V ; + viyoz_V2 : V2 ; + vondozel_V : V ; + vondozel_V2 : V2 ; + vonx_V : V ; + vonx_V2 : V2 ; + vot_V : V ; + vot_V2 : V2 ; + votel_V : V ; + votel_V2 : V2 ; + vov_V : V ; + vov_V2 : V2 ; + vovek_V : V ; + vovek_V2 : V2 ; + vub_V : V ; + vub_V2 : V2 ; + vubel_V : V ; + vubel_V2 : V2 ; + vuk_V : V ; + vuk_V2 : V2 ; + vukel_V : V ; + vukel_V2 : V2 ; + vul_V : V ; + vul_V2 : V2 ; + vulan_V : V ; + vulan_V2 : V2 ; + vulek_V : V ; + vulek_V2 : V2 ; + vulekel_V : V ; + vulekel_V2 : V2 ; + vulel_V : V ; + vulel_V2 : V2 ; + vulelan_V : V ; + vulelan_V2 : V2 ; + vulelek_V : V ; + vulelek_V2 : V2 ; + vum_V : V ; + vum_V2 : V2 ; + vumavuman_V : V ; + vumavuman_V2 : V2 ; + vumbuk_V : V ; + vumbuk_V2 : V2 ; + vumbulul_V : V ; + vumbulul_V2 : V2 ; + vumel_V : V ; + vumel_V2 : V2 ; + vumelan_V : V ; + vumelan_V2 : V2 ; + vumelek_V : V ; + vumelek_V2 : V2 ; + vumelel_V : V ; + vumelel_V2 : V2 ; + vumis_V : V ; + vumis_V2 : V2 ; + vun_V : V ; + vun_V2 : V2 ; + vund_V : V ; + vund_V2 : V2 ; + vundis_V : V ; + vundis_V2 : V2 ; + vundl_V : V ; + vundl_V2 : V2 ; + vunel_V : V ; + vunel_V2 : V2 ; + vung_V : V ; + vung_V2 : V2 ; + vungam_V : V ; + vungam_V2 : V2 ; + vungan_V : V ; + vungan_V2 : V2 ; + vungul_V : V ; + vungul_V2 : V2 ; + vunguz_V : V ; + vunguz_V2 : V2 ; + vunkul_V : V ; + vunkul_V2 : V2 ; + vunul_V : V ; + vunul_V2 : V2 ; + vunulel_V : V ; + vunulel_V2 : V2 ; + vus_V : V ; + vus_V2 : V2 ; + vusan_V : V ; + vusan_V2 : V2 ; + vusel_V : V ; + vusel_V2 : V2 ; + vuselel_V : V ; + vuselel_V2 : V2 ; + vuth_V : V ; + vuth_V2 : V2 ; + vuthel_V : V ; + vuthel_V2 : V2 ; + vuthelel_V : V ; + vuthelel_V2 : V2 ; + vuthuluk_V : V ; + vuthuluk_V2 : V2 ; + vuthulul_V : V ; + vuthulul_V2 : V2 ; + -- vuthw_V : V ; + -- vuthw_V2 : V2 ; + vuvukal_V : V ; + vuvukal_V2 : V2 ; + vuvukel_V : V ; + vuvukel_V2 : V2 ; + vuvuzel_V : V ; + vuvuzel_V2 : V2 ; + vuy_V : V ; + vuy_V2 : V2 ; + vuz_V : V ; + vuz_V2 : V2 ; + vuzan_V : V ; + vuzan_V2 : V2 ; + vuzel_V : V ; + vuzel_V2 : V2 ; + w_V : V ; + w_V2 : V2 ; + wahlel_V : V ; + wahlel_V2 : V2 ; + wahlelel_V : V ; + wahlelel_V2 : V2 ; + wak_V : V ; + wak_V2 : V2 ; + wanek_V : V ; + wanek_V2 : V2 ; + wanel_V : V ; + wanel_V2 : V2 ; + wanelis_V : V ; + wanelis_V2 : V2 ; + wanis_V : V ; + wanis_V2 : V2 ; + wanq_V : V ; + wanq_V2 : V2 ; + wash_V : V ; + wash_V2 : V2 ; + washel_V : V ; + washel_V2 : V2 ; + washelel_V : V ; + washelel_V2 : V2 ; + washis_V : V ; + washis_V2 : V2 ; + washisek_V : V ; + washisek_V2 : V2 ; + weduk_V : V ; + weduk_V2 : V2 ; + wel_V : V ; + wel_V2 : V2 ; + welek_V : V ; + welek_V2 : V2 ; + welel_V : V ; + welel_V2 : V2 ; + welis_V : V ; + welis_V2 : V2 ; + welisel_V : V ; + welisel_V2 : V2 ; + wez_V : V ; + wez_V2 : V2 ; + wezel_V : V ; + wezel_V2 : V2 ; + win_V : V ; + win_V2 : V2 ; + winel_V : V ; + winel_V2 : V2 ; + wis_V : V ; + wis_V2 : V2 ; + wisel_V : V ; + wisel_V2 : V2 ; + wohlok_V : V ; + wohlok_V2 : V2 ; + wohlokis_V : V ; + wohlokis_V2 : V2 ; + wohloz_V : V ; + wohloz_V2 : V2 ; + wol_V : V ; + wol_V2 : V2 ; + wong_V : V ; + wong_V2 : V2 ; + woth_V : V ; + woth_V2 : V2 ; + wul_V : V ; + wul_V2 : V2 ; + wulukuhlek_V : V ; + wulukuhlek_V2 : V2 ; + wulul_V : V ; + wulul_V2 : V2 ; + wumis_V : V ; + wumis_V2 : V2 ; + wungan_V : V ; + wungan_V2 : V2 ; + wungawung_V : V ; + wungawung_V2 : V2 ; + wungek_V : V ; + wungek_V2 : V2 ; + wush_V : V ; + wush_V2 : V2 ; + wushis_V : V ; + wushis_V2 : V2 ; + wuz_V : V ; + wuz_V2 : V2 ; + wuzel_V : V ; + wuzel_V2 : V2 ; + xab_V : V ; + xab_V2 : V2 ; + xabalaz_V : V ; + xabalaz_V2 : V2 ; + xaban_V : V ; + xaban_V2 : V2 ; + xabanel_V : V ; + xabanel_V2 : V2 ; + xabanis_V : V ; + xabanis_V2 : V2 ; + xak_V : V ; + xak_V2 : V2 ; + xakazisan_V : V ; + xakazisan_V2 : V2 ; + xakek_V : V ; + xakek_V2 : V2 ; + xax_V : V ; + xax_V2 : V2 ; + xazulul_V : V ; + xazulul_V2 : V2 ; + xazululek_V : V ; + xazululek_V2 : V2 ; + xazululel_V : V ; + xazululel_V2 : V2 ; + xebul_V : V ; + xebul_V2 : V2 ; + xeg_V : V ; + xeg_V2 : V2 ; + xegaxeg_V : V ; + xegaxeg_V2 : V2 ; + xegis_V : V ; + xegis_V2 : V2 ; + xephul_V : V ; + xephul_V2 : V2 ; + xhak_V : V ; + xhak_V2 : V2 ; + xhakan_V : V ; + xhakan_V2 : V2 ; + xhakazis_V : V ; + xhakazis_V2 : V2 ; + xhamazel_V : V ; + xhamazel_V2 : V2 ; + xhantel_V : V ; + xhantel_V2 : V2 ; + xhaphak_V : V ; + xhaphak_V2 : V2 ; + xhaphaxhaph_V : V ; + xhaphaxhaph_V2 : V2 ; + xhaphazel_V : V ; + xhaphazel_V2 : V2 ; + xhaphel_V : V ; + xhaphel_V2 : V2 ; + xhas_V : V ; + xhas_V2 : V2 ; + xhawul_V : V ; + xhawul_V2 : V2 ; + xhawulan_V : V ; + xhawulan_V2 : V2 ; + xhaz_V : V ; + xhaz_V2 : V2 ; + xhokovan_V : V ; + xhokovan_V2 : V2 ; + xhokoxh_V : V ; + xhokoxh_V2 : V2 ; + xhom_V : V ; + xhom_V2 : V2 ; + xhoph_V : V ; + xhoph_V2 : V2 ; + xhoxhan_V : V ; + xhoxhan_V2 : V2 ; + xhoz_V : V ; + xhoz_V2 : V2 ; + xhukul_V : V ; + xhukul_V2 : V2 ; + xhum_V : V ; + xhum_V2 : V2 ; + xhuman_V : V ; + xhuman_V2 : V2 ; + xhumanis_V : V ; + xhumanis_V2 : V2 ; + xhumel_V : V ; + xhumel_V2 : V2 ; + xhumelel_V : V ; + xhumelel_V2 : V2 ; + xhuth_V : V ; + xhuth_V2 : V2 ; + xhuxhuzelis_V : V ; + xhuxhuzelis_V2 : V2 ; + xhwal_V : V ; + xhwal_V2 : V2 ; + xhwath_V : V ; + xhwath_V2 : V2 ; + xin_V : V ; + xin_V2 : V2 ; + xinek_V : V ; + xinek_V2 : V2 ; + xing_V : V ; + xing_V2 : V2 ; + xingel_V : V ; + xingel_V2 : V2 ; + xobis_V : V ; + xobis_V2 : V2 ; + xokozel_V : V ; + xokozel_V2 : V2 ; + xol_V : V ; + xol_V2 : V2 ; + xolel_V : V ; + xolel_V2 : V2 ; + xolis_V : V ; + xolis_V2 : V2 ; + xolisel_V : V ; + xolisel_V2 : V2 ; + xosh_V : V ; + xosh_V2 : V2 ; + xoshan_V : V ; + xoshan_V2 : V2 ; + xoshel_V : V ; + xoshel_V2 : V2 ; + xoshis_V : V ; + xoshis_V2 : V2 ; + xov_V : V ; + xov_V2 : V2 ; + xovek_V : V ; + xovek_V2 : V2 ; + xovel_V : V ; + xovel_V2 : V2 ; + xox_V : V ; + xox_V2 : V2 ; + xoxaxox_V : V ; + xoxaxox_V2 : V2 ; + xoxek_V : V ; + xoxek_V2 : V2 ; + xoxel_V : V ; + xoxel_V2 : V2 ; + xoxelan_V : V ; + xoxelan_V2 : V2 ; + xoxis_V : V ; + xoxis_V2 : V2 ; + xoxisan_V : V ; + xoxisan_V2 : V2 ; + xoxom_V : V ; + xoxom_V2 : V2 ; + xub_V : V ; + xub_V2 : V2 ; + xuban_V : V ; + xuban_V2 : V2 ; + xubanis_V : V ; + xubanis_V2 : V2 ; + xubh_V : V ; + xubh_V2 : V2 ; + xukuz_V : V ; + xukuz_V2 : V2 ; + xukuzis_V : V ; + xukuzis_V2 : V2 ; + xway_V : V ; + xway_V2 : V2 ; + xwayis_V : V ; + xwayis_V2 : V2 ; + y_V : V ; + y_V2 : V2 ; + yabathek_V : V ; + yabathek_V2 : V2 ; + yabazis_V : V ; + yabazis_V2 : V2 ; + yabiz_V : V ; + yabiz_V2 : V2 ; + yabizan_V : V ; + yabizan_V2 : V2 ; + yabul_V : V ; + yabul_V2 : V2 ; + yabuz_V : V ; + yabuz_V2 : V2 ; + yabuzisan_V : V ; + yabuzisan_V2 : V2 ; + yacaz_V : V ; + yacaz_V2 : V2 ; + yacazis_V : V ; + yacazis_V2 : V2 ; + yakaz_V : V ; + yakaz_V2 : V2 ; + yal_V : V ; + yal_V2 : V2 ; + yalaz_V : V ; + yalaz_V2 : V2 ; + yalazis_V : V ; + yalazis_V2 : V2 ; + yalekelel_V : V ; + yalekelel_V2 : V2 ; + yalel_V : V ; + yalel_V2 : V2 ; + yalez_V : V ; + yalez_V2 : V2 ; + yalezel_V : V ; + yalezel_V2 : V2 ; + yaluz_V : V ; + yaluz_V2 : V2 ; + yaluzis_V : V ; + yaluzis_V2 : V2 ; + yan_V : V ; + yan_V2 : V2 ; + yanel_V : V ; + yanel_V2 : V2 ; + yanquz_V : V ; + yanquz_V2 : V2 ; + yavuz_V : V ; + yavuz_V2 : V2 ; + yayiz_V : V ; + yayiz_V2 : V2 ; + yek_V : V ; + yek_V2 : V2 ; + yekel_V : V ; + yekel_V2 : V2 ; + yekelan_V : V ; + yekelan_V2 : V2 ; + yekelel_V : V ; + yekelel_V2 : V2 ; + yekez_V : V ; + yekez_V2 : V2 ; + yekis_V : V ; + yekis_V2 : V2 ; + yel_V : V ; + yel_V2 : V2 ; + yelan_V : V ; + yelan_V2 : V2 ; + yelekelel_V : V ; + yelekelel_V2 : V2 ; + yelel_V : V ; + yelel_V2 : V2 ; + yend_V : V ; + yend_V2 : V2 ; + yendel_V : V ; + yendel_V2 : V2 ; + yendis_V : V ; + yendis_V2 : V2 ; + yendlel_V : V ; + yendlel_V2 : V2 ; + yeng_V : V ; + yeng_V2 : V2 ; + yengan_V : V ; + yengan_V2 : V2 ; + yengek_V : V ; + yengek_V2 : V2 ; + yengel_V : V ; + yengel_V2 : V2 ; + yephuk_V : V ; + yephuk_V2 : V2 ; + yeth_V : V ; + yeth_V2 : V2 ; + yikaz_V : V ; + yikaz_V2 : V2 ; + ying_V : V ; + ying_V2 : V2 ; + yingan_V : V ; + yingan_V2 : V2 ; + yingaz_V : V ; + yingaz_V2 : V2 ; + yingek_V : V ; + yingek_V2 : V2 ; + yis_V : V ; + yis_V2 : V2 ; + yisan_V : V ; + yisan_V2 : V2 ; + yisanel_V : V ; + yisanel_V2 : V2 ; + yisel_V : V ; + yisel_V2 : V2 ; + yiyiz_V : V ; + yiyiz_V2 : V2 ; + yobayob_V : V ; + yobayob_V2 : V2 ; + yobayobek_V : V ; + yobayobek_V2 : V2 ; + yobek_V : V ; + yobek_V2 : V2 ; + yobekel_V : V ; + yobekel_V2 : V2 ; + yobelekelel_V : V ; + yobelekelel_V2 : V2 ; + yobukel_V : V ; + yobukel_V2 : V2 ; + yobul_V : V ; + yobul_V2 : V2 ; + yobuz_V : V ; + yobuz_V2 : V2 ; + yocel_V : V ; + yocel_V2 : V2 ; + yocelel_V : V ; + yocelel_V2 : V2 ; + yokoz_V : V ; + yokoz_V2 : V2 ; + yolekelel_V : V ; + yolekelel_V2 : V2 ; + yosuk_V : V ; + yosuk_V2 : V2 ; + yosul_V : V ; + yosul_V2 : V2 ; + yothul_V : V ; + yothul_V2 : V2 ; + yovuk_V : V ; + yovuk_V2 : V2 ; + yovul_V : V ; + yovul_V2 : V2 ; + yovulel_V : V ; + yovulel_V2 : V2 ; + yoyosis_V : V ; + yoyosis_V2 : V2 ; + z_V : V ; + z_V2 : V2 ; + zab_V : V ; + zab_V2 : V2 ; + zabalaz_V : V ; + zabalaz_V2 : V2 ; + zaban_V : V ; + zaban_V2 : V2 ; + zabanelis_V : V ; + zabanelis_V2 : V2 ; + zac_V : V ; + zac_V2 : V2 ; + zakal_V : V ; + zakal_V2 : V2 ; + zal_V : V ; + zal_V2 : V2 ; + zalan_V : V ; + zalan_V2 : V2 ; + zalel_V : V ; + zalel_V2 : V2 ; + zam_V : V ; + zam_V2 : V2 ; + zaman_V : V ; + zaman_V2 : V2 ; + zamazam_V : V ; + zamazam_V2 : V2 ; + zamek_V : V ; + zamek_V2 : V2 ; + zamel_V : V ; + zamel_V2 : V2 ; + zamul_V : V ; + zamul_V2 : V2 ; + zan_V : V ; + zan_V2 : V2 ; + zanel_V : V ; + zanel_V2 : V2 ; + zanelis_V : V ; + zanelis_V2 : V2 ; + zang_V : V ; + zang_V2 : V2 ; + zangaz_V : V ; + zangaz_V2 : V2 ; + zathul_V : V ; + zathul_V2 : V2 ; + zaz_V : V ; + zaz_V2 : V2 ; + zazel_V : V ; + zazel_V2 : V2 ; + zazis_V : V ; + zazis_V2 : V2 ; + zek_V : V ; + zek_V2 : V2 ; + zekek_V : V ; + zekek_V2 : V2 ; + zekel_V : V ; + zekel_V2 : V2 ; + zel_V : V ; + zel_V2 : V2 ; + zelekelel_V : V ; + zelekelel_V2 : V2 ; + zib_V : V ; + zib_V2 : V2 ; + ziban_V : V ; + ziban_V2 : V2 ; + zibek_V : V ; + zibek_V2 : V2 ; + zibekan_V : V ; + zibekan_V2 : V2 ; + zibekel_V : V ; + zibekel_V2 : V2 ; + zibel_V : V ; + zibel_V2 : V2 ; + zibul_V : V ; + zibul_V2 : V2 ; + zibulel_V : V ; + zibulel_V2 : V2 ; + zibus_V : V ; + zibus_V2 : V2 ; + zibusel_V : V ; + zibusel_V2 : V2 ; + zik_V : V ; + zik_V2 : V2 ; + zil_V : V ; + zil_V2 : V2 ; + zilan_V : V ; + zilan_V2 : V2 ; + zilekelel_V : V ; + zilekelel_V2 : V2 ; + zilel_V : V ; + zilel_V2 : V2 ; + zilis_V : V ; + zilis_V2 : V2 ; + zimazis_V : V ; + zimazis_V2 : V2 ; + zimelel_V : V ; + zimelel_V2 : V2 ; + zimuk_V : V ; + zimuk_V2 : V2 ; + zind_V : V ; + zind_V2 : V2 ; + zindel_V : V ; + zindel_V2 : V2 ; + zindl_V : V ; + zindl_V2 : V2 ; + zindlel_V : V ; + zindlel_V2 : V2 ; + zing_V : V ; + zing_V2 : V2 ; + zingan_V : V ; + zingan_V2 : V2 ; + zinganel_V : V ; + zinganel_V2 : V2 ; + zingek_V : V ; + zingek_V2 : V2 ; + zingel_V : V ; + zingel_V2 : V2 ; + zinz_V : V ; + zinz_V2 : V2 ; + zis_V : V ; + zis_V2 : V2 ; + zisan_V : V ; + zisan_V2 : V2 ; + zisekel_V : V ; + zisekel_V2 : V2 ; + zisel_V : V ; + zisel_V2 : V2 ; + zisis_V : V ; + zisis_V2 : V2 ; + ziy_V : V ; + ziy_V2 : V2 ; + ziyek_V : V ; + ziyek_V2 : V2 ; + ziyekel_V : V ; + ziyekel_V2 : V2 ; + ziyel_V : V ; + ziyel_V2 : V2 ; + ziyis_V : V ; + ziyis_V2 : V2 ; + zob_V : V ; + zob_V2 : V2 ; + zobek_V : V ; + zobek_V2 : V2 ; + zol_V : V ; + zol_V2 : V2 ; + zolekelel_V : V ; + zolekelel_V2 : V2 ; + zolis_V : V ; + zolis_V2 : V2 ; + zombekel_V : V ; + zombekel_V2 : V2 ; + zombiz_V : V ; + zombiz_V2 : V2 ; + zond_V : V ; + zond_V2 : V2 ; + zondan_V : V ; + zondan_V2 : V2 ; + zondel_V : V ; + zondel_V2 : V2 ; + zoth_V : V ; + zoth_V2 : V2 ; + zothel_V : V ; + zothel_V2 : V2 ; + zothelel_V : V ; + zothelel_V2 : V2 ; + zothis_V : V ; + zothis_V2 : V2 ; + zoyiz_V : V ; + zoyiz_V2 : V2 ; + zub_V : V ; + zub_V2 : V2 ; + zuk_V : V ; + zuk_V2 : V2 ; + zukan_V : V ; + zukan_V2 : V2 ; + zukek_V : V ; + zukek_V2 : V2 ; + zukuz_V : V ; + zukuz_V2 : V2 ; + zukuzis_V : V ; + zukuzis_V2 : V2 ; + zul_V : V ; + zul_V2 : V2 ; + zulazul_V : V ; + zulazul_V2 : V2 ; + zulel_V : V ; + zulel_V2 : V2 ; + zulis_V : V ; + zulis_V2 : V2 ; + zum_V : V ; + zum_V2 : V2 ; + zumek_V : V ; + zumek_V2 : V2 ; + zumekel_V : V ; + zumekel_V2 : V2 ; + zumis_V : V ; + zumis_V2 : V2 ; + zungez_V : V ; + zungez_V2 : V2 ; + zuz_V : V ; + zuz_V2 : V2 ; + zuzel_V : V ; + zuzel_V2 : V2 ; + zw_V : V ; + zw_V2 : V2 ; + zwakal_V : V ; + zwakal_V2 : V2 ; + zwan_V : V ; + zwan_V2 : V2 ; + zwel_V : V ; + zwel_V2 : V2 ; + zwelan_V : V ; + zwelan_V2 : V2 ; + zwib_V : V ; + zwib_V2 : V2 ; + zwis_V : V ; + zwis_V2 : V2 ; + zwisis_V : V ; + zwisis_V2 : V2 ; + + -- passive verb roots + abekelw_V : V ; + abekelw_V2 : V2 ; + abekiw_V : V ; + abekiw_V2 : V2 ; + abekw_V : V ; + abekw_V2 : V2 ; + abelw_V : V ; + abelw_V2 : V2 ; + abiw_V : V ; + abiw_V2 : V2 ; + abukelw_V : V ; + abukelw_V2 : V2 ; + abukw_V : V ; + abukw_V2 : V2 ; + abuzw_V : V ; + abuzw_V2 : V2 ; + ahlukaniselw_V : V ; + ahlukaniselw_V2 : V2 ; + ahlukanisw_V : V ; + ahlukanisw_V2 : V2 ; + ahlukw_V : V ; + ahlukw_V2 : V2 ; + ahlulelw_V : V ; + ahlulelw_V2 : V2 ; + ahlulw_V : V ; + ahlulw_V2 : V2 ; + akhelw_V : V ; + akhelw_V2 : V2 ; + akhisw_V : V ; + akhisw_V2 : V2 ; + akhiw_V : V ; + akhiw_V2 : V2 ; + akhw_V : V ; + akhw_V2 : V2 ; + akhwelw_V : V ; + akhwelw_V2 : V2 ; + alekelelw_V : V ; + alekelelw_V2 : V2 ; + alekelw_V : V ; + alekelw_V2 : V2 ; + alekw_V : V ; + alekw_V2 : V2 ; + aleliw_V : V ; + aleliw_V2 : V2 ; + alelw_V : V ; + alelw_V2 : V2 ; + alisw_V : V ; + alisw_V2 : V2 ; + aliw_V : V ; + aliw_V2 : V2 ; + alukiw_V : V ; + alukiw_V2 : V2 ; + alukw_V : V ; + alukw_V2 : V2 ; + alw_V : V ; + alw_V2 : V2 ; + ambelw_V : V ; + ambelw_V2 : V2 ; + ambiw_V : V ; + ambiw_V2 : V2 ; + amukelw_V : V ; + amukelw_V2 : V2 ; + amukisw_V : V ; + amukisw_V2 : V2 ; + amulisw_V : V ; + amulisw_V2 : V2 ; + andelelw_V : V ; + andelelw_V2 : V2 ; + andelw_V : V ; + andelw_V2 : V2 ; + andisw_V : V ; + andisw_V2 : V2 ; + andiw_V : V ; + andiw_V2 : V2 ; + andulw_V : V ; + andulw_V2 : V2 ; + andw_V : V ; + andw_V2 : V2 ; + anelisiw_V : V ; + anelisiw_V2 : V2 ; + anelisw_V : V ; + anelisw_V2 : V2 ; + anelw_V : V ; + anelw_V2 : V2 ; + angamisw_V : V ; + angamisw_V2 : V2 ; + anganelisiw_V : V ; + anganelisiw_V2 : V2 ; + anganelw_V : V ; + anganelw_V2 : V2 ; + anganisw_V : V ; + anganisw_V2 : V2 ; + angelw_V : V ; + angelw_V2 : V2 ; + angisw_V : V ; + angisw_V2 : V2 ; + angiw_V : V ; + angiw_V2 : V2 ; + angw_V : V ; + angw_V2 : V2 ; + anyelelw_V : V ; + anyelelw_V2 : V2 ; + anyelw_V : V ; + anyelw_V2 : V2 ; + anyisw_V : V ; + anyisw_V2 : V2 ; + anyulelw_V : V ; + anyulelw_V2 : V2 ; + anyulw_V : V ; + anyulw_V2 : V2 ; + anyusw_V : V ; + anyusw_V2 : V2 ; + anyw_V : V ; + anyw_V2 : V2 ; + aphucw_V : V ; + aphucw_V2 : V2 ; + aphulelw_V : V ; + aphulelw_V2 : V2 ; + athekw_V : V ; + athekw_V2 : V2 ; + athelelw_V : V ; + athelelw_V2 : V2 ; + atheliw_V : V ; + atheliw_V2 : V2 ; + athelw_V : V ; + athelw_V2 : V2 ; + athiw_V : V ; + athiw_V2 : V2 ; + athw_V : V ; + athw_V2 : V2 ; + athwelw_V : V ; + athwelw_V2 : V2 ; + aziw_V : V ; + aziw_V2 : V2 ; + babalekelw_V : V ; + babalekelw_V2 : V2 ; + babalw_V : V ; + babalw_V2 : V2 ; + babaziw_V : V ; + babaziw_V2 : V2 ; + babelw_V : V ; + babelw_V2 : V2 ; + bakazw_V : V ; + bakazw_V2 : V2 ; + bakuzw_V : V ; + bakuzw_V2 : V2 ; + balekelw_V : V ; + balekelw_V2 : V2 ; + balekw_V : V ; + balekw_V2 : V2 ; + balelw_V : V ; + balelw_V2 : V2 ; + baliw_V : V ; + baliw_V2 : V2 ; + balulw_V : V ; + balulw_V2 : V2 ; + balw_V : V ; + balw_V2 : V2 ; + bambelw_V : V ; + bambelw_V2 : V2 ; + bambisw_V : V ; + bambisw_V2 : V2 ; + bambiw_V : V ; + bambiw_V2 : V2 ; + bambw_V : V ; + bambw_V2 : V2 ; + bandakanyw_V : V ; + bandakanyw_V2 : V2 ; + bandelw_V : V ; + bandelw_V2 : V2 ; + bandlululw_V : V ; + bandlululw_V2 : V2 ; + bangelw_V : V ; + bangelw_V2 : V2 ; + bangisw_V : V ; + bangisw_V2 : V2 ; + bangw_V : V ; + bangw_V2 : V2 ; + baselw_V : V ; + baselw_V2 : V2 ; + basiw_V : V ; + basiw_V2 : V2 ; + bazisw_V : V ; + bazisw_V2 : V2 ; + baziw_V : V ; + baziw_V2 : V2 ; + bazw_V : V ; + bazw_V2 : V2 ; + bebelw_V : V ; + bebelw_V2 : V2 ; + bebethw_V : V ; + bebethw_V2 : V2 ; + bebw_V : V ; + bebw_V2 : V2 ; + behlekisw_V : V ; + behlekisw_V2 : V2 ; + bekelelw_V : V ; + bekelelw_V2 : V2 ; + bekelw_V : V ; + bekelw_V2 : V2 ; + bekisw_V : V ; + bekisw_V2 : V2 ; + bekiw_V : V ; + bekiw_V2 : V2 ; + bekw_V : V ; + bekw_V2 : V2 ; + belekw_V : V ; + belekw_V2 : V2 ; + beleselw_V : V ; + beleselw_V2 : V2 ; + belethw_V : V ; + belethw_V2 : V2 ; + belw_V : V ; + belw_V2 : V2 ; + bengw_V : V ; + bengw_V2 : V2 ; + bethelw_V : V ; + bethelw_V2 : V2 ; + bethw_V : V ; + bethw_V2 : V2 ; + bezelw_V : V ; + bezelw_V2 : V2 ; + bezw_V : V ; + bezw_V2 : V2 ; + bhabhathizw_V : V ; + bhabhathizw_V2 : V2 ; + bhabhiw_V : V ; + bhabhiw_V2 : V2 ; + bhabhw_V : V ; + bhabhw_V2 : V2 ; + bhajiw_V : V ; + bhajiw_V2 : V2 ; + bhajw_V : V ; + bhajw_V2 : V2 ; + bhakw_V : V ; + bhakw_V2 : V2 ; + bhalelw_V : V ; + bhalelw_V2 : V2 ; + bhaliselw_V : V ; + bhaliselw_V2 : V2 ; + bhalisiw_V : V ; + bhalisiw_V2 : V2 ; + bhalisw_V : V ; + bhalisw_V2 : V2 ; + bhaliw_V : V ; + bhaliw_V2 : V2 ; + bhalw_V : V ; + bhalw_V2 : V2 ; + bhaxabulw_V : V ; + bhaxabulw_V2 : V2 ; + bhecw_V : V ; + bhecw_V2 : V2 ; + bhedisw_V : V ; + bhedisw_V2 : V2 ; + bhekelw_V : V ; + bhekelw_V2 : V2 ; + bhekisisw_V : V ; + bhekisisw_V2 : V2 ; + bhekisw_V : V ; + bhekisw_V2 : V2 ; + bhekiw_V : V ; + bhekiw_V2 : V2 ; + bhekw_V : V ; + bhekw_V2 : V2 ; + bhidliziw_V : V ; + bhidliziw_V2 : V2 ; + bhokelw_V : V ; + bhokelw_V2 : V2 ; + bhokodw_V : V ; + bhokodw_V2 : V2 ; + bhonyw_V : V ; + bhonyw_V2 : V2 ; + bhubhelw_V : V ; + bhubhelw_V2 : V2 ; + bhubhw_V : V ; + bhubhw_V2 : V2 ; + bhudlw_V : V ; + bhudlw_V2 : V2 ; + bhudukezw_V : V ; + bhudukezw_V2 : V2 ; + bhujelw_V : V ; + bhujelw_V2 : V2 ; + bhujw_V : V ; + bhujw_V2 : V2 ; + bhuliw_V : V ; + bhuliw_V2 : V2 ; + bhulukw_V : V ; + bhulukw_V2 : V2 ; + bhulw_V : V ; + bhulw_V2 : V2 ; + bhungw_V : V ; + bhungw_V2 : V2 ; + bhunyelw_V : V ; + bhunyelw_V2 : V2 ; + bhunyw_V : V ; + bhunyw_V2 : V2 ; + bhuquzisw_V : V ; + bhuquzisw_V2 : V2 ; + bhuqw_V : V ; + bhuqw_V2 : V2 ; + bihlekisw_V : V ; + bihlekisw_V2 : V2 ; + bikelw_V : V ; + bikelw_V2 : V2 ; + bikw_V : V ; + bikw_V2 : V2 ; + bilozisw_V : V ; + bilozisw_V2 : V2 ; + bindw_V : V ; + bindw_V2 : V2 ; + bingelelw_V : V ; + bingelelw_V2 : V2 ; + biw_V : V ; + biw_V2 : V2 ; + biyelw_V : V ; + biyelw_V2 : V2 ; + bizelw_V : V ; + bizelw_V2 : V2 ; + biziw_V : V ; + biziw_V2 : V2 ; + bizw_V : V ; + bizw_V2 : V2 ; + bolekw_V : V ; + bolekw_V2 : V2 ; + bondw_V : V ; + bondw_V2 : V2 ; + bonelelw_V : V ; + bonelelw_V2 : V2 ; + bongelw_V : V ; + bongelw_V2 : V2 ; + bongw_V : V ; + bongw_V2 : V2 ; + bonisiw_V : V ; + bonisiw_V2 : V2 ; + bonisw_V : V ; + bonisw_V2 : V2 ; + boniw_V : V ; + boniw_V2 : V2 ; + bonw_V : V ; + bonw_V2 : V2 ; + bophelw_V : V ; + bophelw_V2 : V2 ; + bophiw_V : V ; + bophiw_V2 : V2 ; + bophw_V : V ; + bophw_V2 : V2 ; + bukelw_V : V ; + bukelw_V2 : V2 ; + bukeziw_V : V ; + bukeziw_V2 : V2 ; + bukezw_V : V ; + bukezw_V2 : V2 ; + bukisw_V : V ; + bukisw_V2 : V2 ; + bukw_V : V ; + bukw_V2 : V2 ; + bulungisw_V : V ; + bulungisw_V2 : V2 ; + bumbw_V : V ; + bumbw_V2 : V2 ; + bundisw_V : V ; + bundisw_V2 : V2 ; + bundw_V : V ; + bundw_V2 : V2 ; + bunganyelw_V : V ; + bunganyelw_V2 : V2 ; + bungaziw_V : V ; + bungaziw_V2 : V2 ; + bunyw_V : V ; + bunyw_V2 : V2 ; + busisiw_V : V ; + busisiw_V2 : V2 ; + busw_V : V ; + busw_V2 : V2 ; + buthanw_V : V ; + buthanw_V2 : V2 ; + buthelw_V : V ; + buthelw_V2 : V2 ; + buthiw_V : V ; + buthiw_V2 : V2 ; + buthw_V : V ; + buthw_V2 : V2 ; + buyekeziw_V : V ; + buyekeziw_V2 : V2 ; + buyekezw_V : V ; + buyekezw_V2 : V2 ; + buyelw_V : V ; + buyelw_V2 : V2 ; + buyiselw_V : V ; + buyiselw_V2 : V2 ; + buyisw_V : V ; + buyisw_V2 : V2 ; + buyw_V : V ; + buyw_V2 : V2 ; + buzisw_V : V ; + buzisw_V2 : V2 ; + buziw_V : V ; + buziw_V2 : V2 ; + buzw_V : V ; + buzw_V2 : V2 ; + buzwiw_V : V ; + buzwiw_V2 : V2 ; + cabangw_V : V ; + cabangw_V2 : V2 ; + cacisw_V : V ; + cacisw_V2 : V2 ; + cakiw_V : V ; + cakiw_V2 : V2 ; + cangcathw_V : V ; + cangcathw_V2 : V2 ; + cashw_V : V ; + cashw_V2 : V2 ; + casulw_V : V ; + casulw_V2 : V2 ; + cathulw_V : V ; + cathulw_V2 : V2 ; + cebw_V : V ; + cebw_V2 : V2 ; + cekw_V : V ; + cekw_V2 : V2 ; + celiw_V : V ; + celiw_V2 : V2 ; + celw_V : V ; + celw_V2 : V2 ; + centelw_V : V ; + centelw_V2 : V2 ; + centw_V : V ; + centw_V2 : V2 ; + cezw_V : V ; + cezw_V2 : V2 ; + chachazw_V : V ; + chachazw_V2 : V2 ; + chachelw_V : V ; + chachelw_V2 : V2 ; + chambuzw_V : V ; + chambuzw_V2 : V2 ; + chamiselw_V : V ; + chamiselw_V2 : V2 ; + chaphw_V : V ; + chaphw_V2 : V2 ; + chasiselw_V : V ; + chasiselw_V2 : V2 ; + chathazw_V : V ; + chathazw_V2 : V2 ; + chayw_V : V ; + chayw_V2 : V2 ; + chazelw_V : V ; + chazelw_V2 : V2 ; + chaziw_V : V ; + chaziw_V2 : V2 ; + chazw_V : V ; + chazw_V2 : V2 ; + chelelw_V : V ; + chelelw_V2 : V2 ; + chelw_V : V ; + chelw_V2 : V2 ; + chiphizw_V : V ; + chiphizw_V2 : V2 ; + chithelw_V : V ; + chithelw_V2 : V2 ; + chithw_V : V ; + chithw_V2 : V2 ; + chobisw_V : V ; + chobisw_V2 : V2 ; + chomw_V : V ; + chomw_V2 : V2 ; + chumisw_V : V ; + chumisw_V2 : V2 ; + chushw_V : V ; + chushw_V2 : V2 ; + chwenselw_V : V ; + chwenselw_V2 : V2 ; + chwensw_V : V ; + chwensw_V2 : V2 ; + cibw_V : V ; + cibw_V2 : V2 ; + ciciyelw_V : V ; + ciciyelw_V2 : V2 ; + cikelw_V : V ; + cikelw_V2 : V2 ; + cimelisw_V : V ; + cimelisw_V2 : V2 ; + cimw_V : V ; + cimw_V2 : V2 ; + cindezelw_V : V ; + cindezelw_V2 : V2 ; + cinelelw_V : V ; + cinelelw_V2 : V2 ; + cingw_V : V ; + cingw_V2 : V2 ; + cishw_V : V ; + cishw_V2 : V2 ; + cobelw_V : V ; + cobelw_V2 : V2 ; + cobw_V : V ; + cobw_V2 : V2 ; + colw_V : V ; + colw_V2 : V2 ; + consiselw_V : V ; + consiselw_V2 : V2 ; + coshw_V : V ; + coshw_V2 : V2 ; + culw_V : V ; + culw_V2 : V2 ; + cuphw_V : V ; + cuphw_V2 : V2 ; + cushw_V : V ; + cushw_V2 : V2 ; + cwaningw_V : V ; + cwaningw_V2 : V2 ; + cwasiw_V : V ; + cwasiw_V2 : V2 ; + cwasw_V : V ; + cwasw_V2 : V2 ; + cwengw_V : V ; + cwengw_V2 : V2 ; + cwilisw_V : V ; + cwilisw_V2 : V2 ; + dakelw_V : V ; + dakelw_V2 : V2 ; + dakiw_V : V ; + dakiw_V2 : V2 ; + dakw_V : V ; + dakw_V2 : V2 ; + dalakaxw_V : V ; + dalakaxw_V2 : V2 ; + dalelw_V : V ; + dalelw_V2 : V2 ; + daliw_V : V ; + daliw_V2 : V2 ; + dalw_V : V ; + dalw_V2 : V2 ; + dambisw_V : V ; + dambisw_V2 : V2 ; + dangalisw_V : V ; + dangalisw_V2 : V2 ; + dayiselw_V : V ; + dayiselw_V2 : V2 ; + dayisiw_V : V ; + dayisiw_V2 : V2 ; + dayisw_V : V ; + dayisw_V2 : V2 ; + dazw_V : V ; + dazw_V2 : V2 ; + dedelw_V : V ; + dedelw_V2 : V2 ; + dekiw_V : V ; + dekiw_V2 : V2 ; + deklezekiw_V : V ; + deklezekiw_V2 : V2 ; + dekw_V : V ; + dekw_V2 : V2 ; + delelw_V : V ; + delelw_V2 : V2 ; + delw_V : V ; + delw_V2 : V2 ; + dengw_V : V ; + dengw_V2 : V2 ; + didiyelw_V : V ; + didiyelw_V2 : V2 ; + didizelw_V : V ; + didizelw_V2 : V2 ; + didw_V : V ; + didw_V2 : V2 ; + dikadikw_V : V ; + dikadikw_V2 : V2 ; + dikiselw_V : V ; + dikiselw_V2 : V2 ; + dilikelw_V : V ; + dilikelw_V2 : V2 ; + dilizelw_V : V ; + dilizelw_V2 : V2 ; + dilizw_V : V ; + dilizw_V2 : V2 ; + dindw_V : V ; + dindw_V2 : V2 ; + dingidiw_V : V ; + dingidiw_V2 : V2 ; + dingidw_V : V ; + dingidw_V2 : V2 ; + dingisiw_V : V ; + dingisiw_V2 : V2 ; + dingisw_V : V ; + dingisw_V2 : V2 ; + dingw_V : V ; + dingw_V2 : V2 ; + diniw_V : V ; + diniw_V2 : V2 ; + dinw_V : V ; + dinw_V2 : V2 ; + dlalelw_V : V ; + dlalelw_V2 : V2 ; + dlalisw_V : V ; + dlalisw_V2 : V2 ; + dlalw_V : V ; + dlalw_V2 : V2 ; + dleleselw_V : V ; + dleleselw_V2 : V2 ; + dlelw_V : V ; + dlelw_V2 : V2 ; + dlisiw_V : V ; + dlisiw_V2 : V2 ; + dlisw_V : V ; + dlisw_V2 : V2 ; + dliw_V : V ; + dliw_V2 : V2 ; + dluliselw_V : V ; + dluliselw_V2 : V2 ; + dlulisw_V : V ; + dlulisw_V2 : V2 ; + dlulw_V : V ; + dlulw_V2 : V2 ; + dlungw_V : V ; + dlungw_V2 : V2 ; + dlw_V : V ; + dlw_V2 : V2 ; + dlwengulw_V : V ; + dlwengulw_V2 : V2 ; + dodw_V : V ; + dodw_V2 : V2 ; + donselw_V : V ; + donselw_V2 : V2 ; + donsw_V : V ; + donsw_V2 : V2 ; + dudulw_V : V ; + dudulw_V2 : V2 ; + duduzelw_V : V ; + duduzelw_V2 : V2 ; + duduzw_V : V ; + duduzw_V2 : V2 ; + dudw_V : V ; + dudw_V2 : V2 ; + dukelw_V : V ; + dukelw_V2 : V2 ; + dukisw_V : V ; + dukisw_V2 : V2 ; + dumbw_V : V ; + dumbw_V2 : V2 ; + dumelw_V : V ; + dumelw_V2 : V2 ; + dwebelw_V : V ; + dwebelw_V2 : V2 ; + dwebiw_V : V ; + dwebiw_V2 : V2 ; + dwebw_V : V ; + dwebw_V2 : V2 ; + ebekelw_V : V ; + ebekelw_V2 : V2 ; + ebekiw_V : V ; + ebekiw_V2 : V2 ; + ebekw_V : V ; + ebekw_V2 : V2 ; + ebelw_V : V ; + ebelw_V2 : V2 ; + ebiw_V : V ; + ebiw_V2 : V2 ; + ebukelw_V : V ; + ebukelw_V2 : V2 ; + ebukw_V : V ; + ebukw_V2 : V2 ; + ebuzw_V : V ; + ebuzw_V2 : V2 ; + ecekw_V : V ; + ecekw_V2 : V2 ; + edluliselw_V : V ; + edluliselw_V2 : V2 ; + edlulisw_V : V ; + edlulisw_V2 : V2 ; + edlulw_V : V ; + edlulw_V2 : V2 ; + efundelw_V : V ; + efundelw_V2 : V2 ; + efundisiw_V : V ; + efundisiw_V2 : V2 ; + efundisw_V : V ; + efundisw_V2 : V2 ; + efundw_V : V ; + efundw_V2 : V2 ; + eganiw_V : V ; + eganiw_V2 : V2 ; + eganw_V : V ; + eganw_V2 : V2 ; + ehlekisw_V : V ; + ehlekisw_V2 : V2 ; + ehlelelw_V : V ; + ehlelelw_V2 : V2 ; + ehlelw_V : V ; + ehlelw_V2 : V2 ; + ehlisw_V : V ; + ehlisw_V2 : V2 ; + ehliw_V : V ; + ehliw_V2 : V2 ; + ehlukaniselw_V : V ; + ehlukaniselw_V2 : V2 ; + ehlukanisiw_V : V ; + ehlukanisiw_V2 : V2 ; + ehlukanisw_V : V ; + ehlukanisw_V2 : V2 ; + ehlukw_V : V ; + ehlukw_V2 : V2 ; + ehlulelw_V : V ; + ehlulelw_V2 : V2 ; + ehluliw_V : V ; + ehluliw_V2 : V2 ; + ehlulw_V : V ; + ehlulw_V2 : V2 ; + ehlw_V : V ; + ehlw_V2 : V2 ; + ejwayezw_V : V ; + ejwayezw_V2 : V2 ; + ekhamisw_V : V ; + ekhamisw_V2 : V2 ; + elamelw_V : V ; + elamelw_V2 : V2 ; + elamw_V : V ; + elamw_V2 : V2 ; + elaphiw_V : V ; + elaphiw_V2 : V2 ; + elaphw_V : V ; + elaphw_V2 : V2 ; + elekelelw_V : V ; + elekelelw_V2 : V2 ; + elelelw_V : V ; + elelelw_V2 : V2 ; + elelw_V : V ; + elelw_V2 : V2 ; + elisiw_V : V ; + elisiw_V2 : V2 ; + elisw_V : V ; + elisw_V2 : V2 ; + eliw_V : V ; + eliw_V2 : V2 ; + elukiw_V : V ; + elukiw_V2 : V2 ; + elukw_V : V ; + elukw_V2 : V2 ; + elulekw_V : V ; + elulekw_V2 : V2 ; + elulelw_V : V ; + elulelw_V2 : V2 ; + eluliw_V : V ; + eluliw_V2 : V2 ; + elulw_V : V ; + elulw_V2 : V2 ; + elusw_V : V ; + elusw_V2 : V2 ; + elw_V : V ; + elw_V2 : V2 ; + embathisw_V : V ; + embathisw_V2 : V2 ; + embesw_V : V ; + embesw_V2 : V2 ; + embulelw_V : V ; + embulelw_V2 : V2 ; + emukelw_V : V ; + emukelw_V2 : V2 ; + emukw_V : V ; + emukw_V2 : V2 ; + enamisw_V : V ; + enamisw_V2 : V2 ; + enanelw_V : V ; + enanelw_V2 : V2 ; + encikiselw_V : V ; + encikiselw_V2 : V2 ; + endelw_V : V ; + endelw_V2 : V2 ; + endiselw_V : V ; + endiselw_V2 : V2 ; + endisw_V : V ; + endisw_V2 : V2 ; + endlalelw_V : V ; + endlalelw_V2 : V2 ; + endlalw_V : V ; + endlalw_V2 : V2 ; + endw_V : V ; + endw_V2 : V2 ; + enekelw_V : V ; + enekelw_V2 : V2 ; + enekw_V : V ; + enekw_V2 : V2 ; + enelisiw_V : V ; + enelisiw_V2 : V2 ; + enelisw_V : V ; + enelisw_V2 : V2 ; + enelw_V : V ; + enelw_V2 : V2 ; + engamelw_V : V ; + engamelw_V2 : V2 ; + engamw_V : V ; + engamw_V2 : V2 ; + engeziw_V : V ; + engeziw_V2 : V2 ; + engezw_V : V ; + engezw_V2 : V2 ; + enisw_V : V ; + enisw_V2 : V2 ; + enqabelw_V : V ; + enqabelw_V2 : V2 ; + enqabisw_V : V ; + enqabisw_V2 : V2 ; + enqabiw_V : V ; + enqabiw_V2 : V2 ; + enqabw_V : V ; + enqabw_V2 : V2 ; + enw_V : V ; + enw_V2 : V2 ; + enwayw_V : V ; + enwayw_V2 : V2 ; + enyanyw_V : V ; + enyanyw_V2 : V2 ; + enyelw_V : V ; + enyelw_V2 : V2 ; + enyukelw_V : V ; + enyukelw_V2 : V2 ; + enyusw_V : V ; + enyusw_V2 : V2 ; + enzakalisw_V : V ; + enzakalisw_V2 : V2 ; + enzelw_V : V ; + enzelw_V2 : V2 ; + enzisw_V : V ; + enzisw_V2 : V2 ; + enziw_V : V ; + enziw_V2 : V2 ; + enzw_V : V ; + enzw_V2 : V2 ; + ephekw_V : V ; + ephekw_V2 : V2 ; + ephelelw_V : V ; + ephelelw_V2 : V2 ; + ephiw_V : V ; + ephiw_V2 : V2 ; + ephucw_V : V ; + ephucw_V2 : V2 ; + ephukelw_V : V ; + ephukelw_V2 : V2 ; + ephulw_V : V ; + ephulw_V2 : V2 ; + ephuzw_V : V ; + ephuzw_V2 : V2 ; + eqelw_V : V ; + eqelw_V2 : V2 ; + eqisw_V : V ; + eqisw_V2 : V2 ; + eqiw_V : V ; + eqiw_V2 : V2 ; + esabisw_V : V ; + esabisw_V2 : V2 ; + esabw_V : V ; + esabw_V2 : V2 ; + esanelisiw_V : V ; + esanelisiw_V2 : V2 ; + esasw_V : V ; + esasw_V2 : V2 ; + esekelw_V : V ; + esekelw_V2 : V2 ; + esekw_V : V ; + esekw_V2 : V2 ; + eselw_V : V ; + eselw_V2 : V2 ; + eshelelisw_V : V ; + eshelelisw_V2 : V2 ; + eshelw_V : V ; + eshelw_V2 : V2 ; + esisekelw_V : V ; + esisekelw_V2 : V2 ; + esisiw_V : V ; + esisiw_V2 : V2 ; + esisw_V : V ; + esisw_V2 : V2 ; + esiw_V : V ; + esiw_V2 : V2 ; + esongw_V : V ; + esongw_V2 : V2 ; + esukelw_V : V ; + esukelw_V2 : V2 ; + esulw_V : V ; + esulw_V2 : V2 ; + esuselw_V : V ; + esuselw_V2 : V2 ; + esusw_V : V ; + esusw_V2 : V2 ; + esw_V : V ; + esw_V2 : V2 ; + ethekelisw_V : V ; + ethekelisw_V2 : V2 ; + ethekelw_V : V ; + ethekelw_V2 : V2 ; + ethelw_V : V ; + ethelw_V2 : V2 ; + ethembelw_V : V ; + ethembelw_V2 : V2 ; + ethembisiw_V : V ; + ethembisiw_V2 : V2 ; + ethembisw_V : V ; + ethembisw_V2 : V2 ; + ethembiw_V : V ; + ethembiw_V2 : V2 ; + ethembw_V : V ; + ethembw_V2 : V2 ; + ethiw_V : V ; + ethiw_V2 : V2 ; + ethukw_V : V ; + ethukw_V2 : V2 ; + ethulelw_V : V ; + ethulelw_V2 : V2 ; + ethulw_V : V ; + ethulw_V2 : V2 ; + ethusw_V : V ; + ethusw_V2 : V2 ; + ethw_V : V ; + ethw_V2 : V2 ; + ethwasisw_V : V ; + ethwasisw_V2 : V2 ; + ethwelw_V : V ; + ethwelw_V2 : V2 ; + ethwesw_V : V ; + ethwesw_V2 : V2 ; + evelelw_V : V ; + evelelw_V2 : V2 ; + exwayisw_V : V ; + exwayisw_V2 : V2 ; + eyisw_V : V ; + eyisw_V2 : V2 ; + eyiw_V : V ; + eyiw_V2 : V2 ; + ezeleliw_V : V ; + ezeleliw_V2 : V2 ; + ezelelw_V : V ; + ezelelw_V2 : V2 ; + ezelw_V : V ; + ezelw_V2 : V2 ; + fakazelw_V : V ; + fakazelw_V2 : V2 ; + fakazw_V : V ; + fakazw_V2 : V2 ; + fakelw_V : V ; + fakelw_V2 : V2 ; + fakw_V : V ; + fakw_V2 : V2 ; + fanelw_V : V ; + fanelw_V2 : V2 ; + fanisw_V : V ; + fanisw_V2 : V2 ; + fasw_V : V ; + fasw_V2 : V2 ; + fayw_V : V ; + fayw_V2 : V2 ; + fekethisiw_V : V ; + fekethisiw_V2 : V2 ; + fekethisw_V : V ; + fekethisw_V2 : V2 ; + felw_V : V ; + felw_V2 : V2 ; + fezw_V : V ; + fezw_V2 : V2 ; + ficw_V : V ; + ficw_V2 : V2 ; + fihlelw_V : V ; + fihlelw_V2 : V2 ; + fihliw_V : V ; + fihliw_V2 : V2 ; + fihlw_V : V ; + fihlw_V2 : V2 ; + fikelw_V : V ; + fikelw_V2 : V2 ; + fikisw_V : V ; + fikisw_V2 : V2 ; + fikw_V : V ; + fikw_V2 : V2 ; + finyelelw_V : V ; + finyelelw_V2 : V2 ; + finyeziw_V : V ; + finyeziw_V2 : V2 ; + finyw_V : V ; + finyw_V2 : V2 ; + fiphazw_V : V ; + fiphazw_V2 : V2 ; + fisw_V : V ; + fisw_V2 : V2 ; + fiw_V : V ; + fiw_V2 : V2 ; + folisw_V : V ; + folisw_V2 : V2 ; + fuhlelw_V : V ; + fuhlelw_V2 : V2 ; + fulathelw_V : V ; + fulathelw_V2 : V2 ; + fulelw_V : V ; + fulelw_V2 : V2 ; + fumanisw_V : V ; + fumanisw_V2 : V2 ; + fumanw_V : V ; + fumanw_V2 : V2 ; + fumbw_V : V ; + fumbw_V2 : V2 ; + fundelw_V : V ; + fundelw_V2 : V2 ; + fundiselw_V : V ; + fundiselw_V2 : V2 ; + fundisiw_V : V ; + fundisiw_V2 : V2 ; + fundisw_V : V ; + fundisw_V2 : V2 ; + fundiw_V : V ; + fundiw_V2 : V2 ; + fundw_V : V ; + fundw_V2 : V2 ; + fungw_V : V ; + fungw_V2 : V2 ; + funw_V : V ; + funw_V2 : V2 ; + funyanisw_V : V ; + funyanisw_V2 : V2 ; + funyanw_V : V ; + funyanw_V2 : V2 ; + funzw_V : V ; + funzw_V2 : V2 ; + fuqw_V : V ; + fuqw_V2 : V2 ; + fushanisw_V : V ; + fushanisw_V2 : V2 ; + futhw_V : V ; + futhw_V2 : V2 ; + fuyiw_V : V ; + fuyiw_V2 : V2 ; + fuyw_V : V ; + fuyw_V2 : V2 ; + fw_V : V ; + fw_V2 : V2 ; + gabhelw_V : V ; + gabhelw_V2 : V2 ; + gabhisw_V : V ; + gabhisw_V2 : V2 ; + gabhw_V : V ; + gabhw_V2 : V2 ; + gadiw_V : V ; + gadiw_V2 : V2 ; + gadw_V : V ; + gadw_V2 : V2 ; + gandayw_V : V ; + gandayw_V2 : V2 ; + ganelw_V : V ; + ganelw_V2 : V2 ; + gangelw_V : V ; + gangelw_V2 : V2 ; + gangw_V : V ; + gangw_V2 : V2 ; + ganiselw_V : V ; + ganiselw_V2 : V2 ; + ganiw_V : V ; + ganiw_V2 : V2 ; + ganw_V : V ; + ganw_V2 : V2 ; + gaqelw_V : V ; + gaqelw_V2 : V2 ; + gawuliw_V : V ; + gawuliw_V2 : V2 ; + gawulw_V : V ; + gawulw_V2 : V2 ; + gaxekw_V : V ; + gaxekw_V2 : V2 ; + gaxw_V : V ; + gaxw_V2 : V2 ; + gayelw_V : V ; + gayelw_V2 : V2 ; + gayiw_V : V ; + gayiw_V2 : V2 ; + gayw_V : V ; + gayw_V2 : V2 ; + gazingiw_V : V ; + gazingiw_V2 : V2 ; + gcabw_V : V ; + gcabw_V2 : V2 ; + gcagcelw_V : V ; + gcagcelw_V2 : V2 ; + gcagcw_V : V ; + gcagcw_V2 : V2 ; + gcinelw_V : V ; + gcinelw_V2 : V2 ; + gcinw_V : V ; + gcinw_V2 : V2 ; + gcizelelw_V : V ; + gcizelelw_V2 : V2 ; + gcobelw_V : V ; + gcobelw_V2 : V2 ; + gcobiw_V : V ; + gcobiw_V2 : V2 ; + gcobw_V : V ; + gcobw_V2 : V2 ; + gculisiw_V : V ; + gculisiw_V2 : V2 ; + gculisw_V : V ; + gculisw_V2 : V2 ; + gcwalisw_V : V ; + gcwalisw_V2 : V2 ; + gelekeqekw_V : V ; + gelekeqekw_V2 : V2 ; + gencw_V : V ; + gencw_V2 : V2 ; + gexw_V : V ; + gexw_V2 : V2 ; + gezelw_V : V ; + gezelw_V2 : V2 ; + gezw_V : V ; + gezw_V2 : V2 ; + gibelisw_V : V ; + gibelisw_V2 : V2 ; + gibelw_V : V ; + gibelw_V2 : V2 ; + gidw_V : V ; + gidw_V2 : V2 ; + gijimelw_V : V ; + gijimelw_V2 : V2 ; + gijimisw_V : V ; + gijimisw_V2 : V2 ; + giklizw_V : V ; + giklizw_V2 : V2 ; + gilw_V : V ; + gilw_V2 : V2 ; + gobhw_V : V ; + gobhw_V2 : V2 ; + gobw_V : V ; + gobw_V2 : V2 ; + godlw_V : V ; + godlw_V2 : V2 ; + godolisw_V : V ; + godolisw_V2 : V2 ; + godongw_V : V ; + godongw_V2 : V2 ; + godukw_V : V ; + godukw_V2 : V2 ; + gojw_V : V ; + gojw_V2 : V2 ; + gomw_V : V ; + gomw_V2 : V2 ; + goniw_V : V ; + goniw_V2 : V2 ; + gonqw_V : V ; + gonqw_V2 : V2 ; + gonw_V : V ; + gonw_V2 : V2 ; + goqiw_V : V ; + goqiw_V2 : V2 ; + goqw_V : V ; + goqw_V2 : V2 ; + gotshw_V : V ; + gotshw_V2 : V2 ; + gqamisw_V : V ; + gqamisw_V2 : V2 ; + gqamw_V : V ; + gqamw_V2 : V2 ; + gqekezw_V : V ; + gqekezw_V2 : V2 ; + gqibw_V : V ; + gqibw_V2 : V2 ; + gqigqw_V : V ; + gqigqw_V2 : V2 ; + gqilazw_V : V ; + gqilazw_V2 : V2 ; + gqizw_V : V ; + gqizw_V2 : V2 ; + gqobhw_V : V ; + gqobhw_V2 : V2 ; + gqokisw_V : V ; + gqokisw_V2 : V2 ; + gqokw_V : V ; + gqokw_V2 : V2 ; + gqubw_V : V ; + gqubw_V2 : V2 ; + gqugquzelw_V : V ; + gqugquzelw_V2 : V2 ; + gubhiw_V : V ; + gubhiw_V2 : V2 ; + gubhw_V : V ; + gubhw_V2 : V2 ; + gudluzelw_V : V ; + gudluzelw_V2 : V2 ; + gudluzw_V : V ; + gudluzw_V2 : V2 ; + gugelw_V : V ; + gugelw_V2 : V2 ; + gulelw_V : V ; + gulelw_V2 : V2 ; + gulisw_V : V ; + gulisw_V2 : V2 ; + gulw_V : V ; + gulw_V2 : V2 ; + gundw_V : V ; + gundw_V2 : V2 ; + gunyazelw_V : V ; + gunyazelw_V2 : V2 ; + gunyaziw_V : V ; + gunyaziw_V2 : V2 ; + gunyazw_V : V ; + gunyazw_V2 : V2 ; + gunyw_V : V ; + gunyw_V2 : V2 ; + guqukelw_V : V ; + guqukelw_V2 : V2 ; + guqulw_V : V ; + guqulw_V2 : V2 ; + guqw_V : V ; + guqw_V2 : V2 ; + gwaqw_V : V ; + gwaqw_V2 : V2 ; + gwaziw_V : V ; + gwaziw_V2 : V2 ; + gwazw_V : V ; + gwazw_V2 : V2 ; + gwebw_V : V ; + gwebw_V2 : V2 ; + gwemw_V : V ; + gwemw_V2 : V2 ; + gwinyw_V : V ; + gwinyw_V2 : V2 ; + gxekw_V : V ; + gxekw_V2 : V2 ; + gxilw_V : V ; + gxilw_V2 : V2 ; + gxivizw_V : V ; + gxivizw_V2 : V2 ; + gxobelw_V : V ; + gxobelw_V2 : V2 ; + gxobw_V : V ; + gxobw_V2 : V2 ; + halalisw_V : V ; + halalisw_V2 : V2 ; + hambelw_V : V ; + hambelw_V2 : V2 ; + hambisw_V : V ; + hambisw_V2 : V2 ; + hambiw_V : V ; + hambiw_V2 : V2 ; + hambw_V : V ; + hambw_V2 : V2 ; + hawukelw_V : V ; + hawukelw_V2 : V2 ; + hayelw_V : V ; + hayelw_V2 : V2 ; + hayw_V : V ; + hayw_V2 : V2 ; + hazulw_V : V ; + hazulw_V2 : V2 ; + helw_V : V ; + helw_V2 : V2 ; + henqelw_V : V ; + henqelw_V2 : V2 ; + hhalaliselw_V : V ; + hhalaliselw_V2 : V2 ; + hilw_V : V ; + hilw_V2 : V2 ; + hlabelelisw_V : V ; + hlabelelisw_V2 : V2 ; + hlabelelw_V : V ; + hlabelelw_V2 : V2 ; + hlabelw_V : V ; + hlabelw_V2 : V2 ; + hlabisw_V : V ; + hlabisw_V2 : V2 ; + hlabiw_V : V ; + hlabiw_V2 : V2 ; + hlabw_V : V ; + hlabw_V2 : V2 ; + hlafunw_V : V ; + hlafunw_V2 : V2 ; + hlahlelw_V : V ; + hlahlelw_V2 : V2 ; + hlahlw_V : V ; + hlahlw_V2 : V2 ; + hlakazekw_V : V ; + hlakazekw_V2 : V2 ; + hlakazw_V : V ; + hlakazw_V2 : V2 ; + hlakulw_V : V ; + hlakulw_V2 : V2 ; + hlalelw_V : V ; + hlalelw_V2 : V2 ; + hlalisw_V : V ; + hlalisw_V2 : V2 ; + hlaliw_V : V ; + hlaliw_V2 : V2 ; + hlalw_V : V ; + hlalw_V2 : V2 ; + hlambelw_V : V ; + hlambelw_V2 : V2 ; + hlanekezelw_V : V ; + hlanekezelw_V2 : V2 ; + hlanganelw_V : V ; + hlanganelw_V2 : V2 ; + hlanganiselw_V : V ; + hlanganiselw_V2 : V2 ; + hlanganisiw_V : V ; + hlanganisiw_V2 : V2 ; + hlanganisw_V : V ; + hlanganisw_V2 : V2 ; + hlanganw_V : V ; + hlanganw_V2 : V2 ; + hlanganyelw_V : V ; + hlanganyelw_V2 : V2 ; + hlanzisw_V : V ; + hlanzisw_V2 : V2 ; + hlanzw_V : V ; + hlanzw_V2 : V2 ; + hlaselw_V : V ; + hlaselw_V2 : V2 ; + hlawulisw_V : V ; + hlawulisw_V2 : V2 ; + hlaziyw_V : V ; + hlaziyw_V2 : V2 ; + hlazw_V : V ; + hlazw_V2 : V2 ; + hlebw_V : V ; + hlebw_V2 : V2 ; + hlehliselw_V : V ; + hlehliselw_V2 : V2 ; + hlehlisw_V : V ; + hlehlisw_V2 : V2 ; + hlekelw_V : V ; + hlekelw_V2 : V2 ; + hlekisw_V : V ; + hlekisw_V2 : V2 ; + hlekw_V : V ; + hlekw_V2 : V2 ; + hlelelw_V : V ; + hlelelw_V2 : V2 ; + hleliw_V : V ; + hleliw_V2 : V2 ; + hlelw_V : V ; + hlelw_V2 : V2 ; + hlengiw_V : V ; + hlengiw_V2 : V2 ; + hlengw_V : V ; + hlengw_V2 : V2 ; + hlikizw_V : V ; + hlikizw_V2 : V2 ; + hlinzekw_V : V ; + hlinzekw_V2 : V2 ; + hlinzelw_V : V ; + hlinzelw_V2 : V2 ; + hlinzw_V : V ; + hlinzw_V2 : V2 ; + hlobisw_V : V ; + hlobisw_V2 : V2 ; + hlohlolozw_V : V ; + hlohlolozw_V2 : V2 ; + hlohlw_V : V ; + hlohlw_V2 : V2 ; + hlolelw_V : V ; + hlolelw_V2 : V2 ; + hlolisisiw_V : V ; + hlolisisiw_V2 : V2 ; + hlolisisw_V : V ; + hlolisisw_V2 : V2 ; + hloliw_V : V ; + hloliw_V2 : V2 ; + hlolw_V : V ; + hlolw_V2 : V2 ; + hlomisw_V : V ; + hlomisw_V2 : V2 ; + hlomw_V : V ; + hlomw_V2 : V2 ; + hlongozw_V : V ; + hlongozw_V2 : V2 ; + hlongw_V : V ; + hlongw_V2 : V2 ; + hloniphisw_V : V ; + hloniphisw_V2 : V2 ; + hloniphw_V : V ; + hloniphw_V2 : V2 ; + hlosiw_V : V ; + hlosiw_V2 : V2 ; + hlosw_V : V ; + hlosw_V2 : V2 ; + hlukaniselw_V : V ; + hlukaniselw_V2 : V2 ; + hlukanisw_V : V ; + hlukanisw_V2 : V2 ; + hlukw_V : V ; + hlukw_V2 : V2 ; + hlulelw_V : V ; + hlulelw_V2 : V2 ; + hluliw_V : V ; + hluliw_V2 : V2 ; + hlulw_V : V ; + hlulw_V2 : V2 ; + hlungw_V : V ; + hlungw_V2 : V2 ; + hluphekiw_V : V ; + hluphekiw_V2 : V2 ; + hluphekw_V : V ; + hluphekw_V2 : V2 ; + hluphelw_V : V ; + hluphelw_V2 : V2 ; + hluphw_V : V ; + hluphw_V2 : V2 ; + hluzw_V : V ; + hluzw_V2 : V2 ; + hlwanyelw_V : V ; + hlwanyelw_V2 : V2 ; + hlwelw_V : V ; + hlwelw_V2 : V2 ; + hlwithw_V : V ; + hlwithw_V2 : V2 ; + hogelw_V : V ; + hogelw_V2 : V2 ; + holelw_V : V ; + holelw_V2 : V2 ; + holw_V : V ; + holw_V2 : V2 ; + hoshw_V : V ; + hoshw_V2 : V2 ; + hoxisw_V : V ; + hoxisw_V2 : V2 ; + hubhw_V : V ; + hubhw_V2 : V2 ; + hubw_V : V ; + hubw_V2 : V2 ; + hudulelw_V : V ; + hudulelw_V2 : V2 ; + hungw_V : V ; + hungw_V2 : V2 ; + huqw_V : V ; + huqw_V2 : V2 ; + huzukw_V : V ; + huzukw_V2 : V2 ; + jahiw_V : V ; + jahiw_V2 : V2 ; + jahw_V : V ; + jahw_V2 : V2 ; + jamelw_V : V ; + jamelw_V2 : V2 ; + jeziselw_V : V ; + jeziselw_V2 : V2 ; + jezisw_V : V ; + jezisw_V2 : V2 ; + jikelw_V : V ; + jikelw_V2 : V2 ; + jikw_V : V ; + jikw_V2 : V2 ; + jiyelw_V : V ; + jiyelw_V2 : V2 ; + jobelelw_V : V ; + jobelelw_V2 : V2 ; + jojw_V : V ; + jojw_V2 : V2 ; + jokw_V : V ; + jokw_V2 : V2 ; + jubiw_V : V ; + jubiw_V2 : V2 ; + jubw_V : V ; + jubw_V2 : V2 ; + julukelw_V : V ; + julukelw_V2 : V2 ; + julukisw_V : V ; + julukisw_V2 : V2 ; + julukw_V : V ; + julukw_V2 : V2 ; + julw_V : V ; + julw_V2 : V2 ; + juqw_V : V ; + juqw_V2 : V2 ; + jwayelw_V : V ; + jwayelw_V2 : V2 ; + jwayezw_V : V ; + jwayezw_V2 : V2 ; + kakw_V : V ; + kakw_V2 : V2 ; + kalw_V : V ; + kalw_V2 : V2 ; + kamw_V : V ; + kamw_V2 : V2 ; + kanisw_V : V ; + kanisw_V2 : V2 ; + kekelezelw_V : V ; + kekelezelw_V2 : V2 ; + kelisw_V : V ; + kelisw_V2 : V2 ; + kelw_V : V ; + kelw_V2 : V2 ; + khabw_V : V ; + khabw_V2 : V2 ; + khahlw_V : V ; + khahlw_V2 : V2 ; + khalelw_V : V ; + khalelw_V2 : V2 ; + khalisw_V : V ; + khalisw_V2 : V2 ; + khalw_V : V ; + khalw_V2 : V2 ; + khamelw_V : V ; + khamelw_V2 : V2 ; + khamisiw_V : V ; + khamisiw_V2 : V2 ; + khamisw_V : V ; + khamisw_V2 : V2 ; + khandiw_V : V ; + khandiw_V2 : V2 ; + khangezw_V : V ; + khangezw_V2 : V2 ; + khangisw_V : V ; + khangisw_V2 : V2 ; + khangw_V : V ; + khangw_V2 : V2 ; + khanyelw_V : V ; + khanyelw_V2 : V2 ; + khanyisiw_V : V ; + khanyisiw_V2 : V2 ; + khanyisw_V : V ; + khanyisw_V2 : V2 ; + khaphw_V : V ; + khaphw_V2 : V2 ; + khathazw_V : V ; + khathazw_V2 : V2 ; + khawulw_V : V ; + khawulw_V2 : V2 ; + khehlw_V : V ; + khehlw_V2 : V2 ; + khelw_V : V ; + khelw_V2 : V2 ; + khesw_V : V ; + khesw_V2 : V2 ; + khethelw_V : V ; + khethelw_V2 : V2 ; + khethiw_V : V ; + khethiw_V2 : V2 ; + khethw_V : V ; + khethw_V2 : V2 ; + khinyabezw_V : V ; + khinyabezw_V2 : V2 ; + khiphelw_V : V ; + khiphelw_V2 : V2 ; + khiphisw_V : V ; + khiphisw_V2 : V2 ; + khiphiw_V : V ; + khiphiw_V2 : V2 ; + khiphw_V : V ; + khiphw_V2 : V2 ; + khiphwelw_V : V ; + khiphwelw_V2 : V2 ; + khiqiziw_V : V ; + khiqiziw_V2 : V2 ; + khiqizw_V : V ; + khiqizw_V2 : V2 ; + khisw_V : V ; + khisw_V2 : V2 ; + khiw_V : V ; + khiw_V2 : V2 ; + khiyiw_V : V ; + khiyiw_V2 : V2 ; + khiyw_V : V ; + khiyw_V2 : V2 ; + khizw_V : V ; + khizw_V2 : V2 ; + khohlisw_V : V ; + khohlisw_V2 : V2 ; + khohliw_V : V ; + khohliw_V2 : V2 ; + khohlw_V : V ; + khohlw_V2 : V2 ; + khokhelw_V : V ; + khokhelw_V2 : V2 ; + khokhisw_V : V ; + khokhisw_V2 : V2 ; + khokhw_V : V ; + khokhw_V2 : V2 ; + kholelw_V : V ; + kholelw_V2 : V2 ; + kholiw_V : V ; + kholiw_V2 : V2 ; + kholongw_V : V ; + kholongw_V2 : V2 ; + kholw_V : V ; + kholw_V2 : V2 ; + khombisiw_V : V ; + khombisiw_V2 : V2 ; + khombisw_V : V ; + khombisw_V2 : V2 ; + khombw_V : V ; + khombw_V2 : V2 ; + khongw_V : V ; + khongw_V2 : V2 ; + khonkiw_V : V ; + khonkiw_V2 : V2 ; + khonkw_V : V ; + khonkw_V2 : V2 ; + khonondisw_V : V ; + khonondisw_V2 : V2 ; + khonzelw_V : V ; + khonzelw_V2 : V2 ; + khonzw_V : V ; + khonzw_V2 : V2 ; + khothw_V : V ; + khothw_V2 : V2 ; + khubw_V : V ; + khubw_V2 : V2 ; + khukhulw_V : V ; + khukhulw_V2 : V2 ; + khulekiw_V : V ; + khulekiw_V2 : V2 ; + khulekw_V : V ; + khulekw_V2 : V2 ; + khulelisw_V : V ; + khulelisw_V2 : V2 ; + khulelw_V : V ; + khulelw_V2 : V2 ; + khulisw_V : V ; + khulisw_V2 : V2 ; + khululw_V : V ; + khululw_V2 : V2 ; + khulumelw_V : V ; + khulumelw_V2 : V2 ; + khulumisw_V : V ; + khulumisw_V2 : V2 ; + khulumiw_V : V ; + khulumiw_V2 : V2 ; + khulumw_V : V ; + khulumw_V2 : V2 ; + khuluphalisw_V : V ; + khuluphalisw_V2 : V2 ; + khumulw_V : V ; + khumulw_V2 : V2 ; + khungw_V : V ; + khungw_V2 : V2 ; + khushukelw_V : V ; + khushukelw_V2 : V2 ; + khushukw_V : V ; + khushukw_V2 : V2 ; + khuthazw_V : V ; + khuthazw_V2 : V2 ; + khuzw_V : V ; + khuzw_V2 : V2 ; + khw_V : V ; + khw_V2 : V2 ; + khwelw_V : V ; + khwelw_V2 : V2 ; + khwezelw_V : V ; + khwezelw_V2 : V2 ; + khwezw_V : V ; + khwezw_V2 : V2 ; + kitazw_V : V ; + kitazw_V2 : V2 ; + klabelw_V : V ; + klabelw_V2 : V2 ; + klelisw_V : V ; + klelisw_V2 : V2 ; + klezisw_V : V ; + klezisw_V2 : V2 ; + klinyw_V : V ; + klinyw_V2 : V2 ; + kokw_V : V ; + kokw_V2 : V2 ; + kopishw_V : V ; + kopishw_V2 : V2 ; + kukuzw_V : V ; + kukuzw_V2 : V2 ; + kweletw_V : V ; + kweletw_V2 : V2 ; + kweqisw_V : V ; + kweqisw_V2 : V2 ; + kweqiw_V : V ; + kweqiw_V2 : V2 ; + lahlekelw_V : V ; + lahlekelw_V2 : V2 ; + lahliw_V : V ; + lahliw_V2 : V2 ; + lahlw_V : V ; + lahlw_V2 : V2 ; + lalelw_V : V ; + lalelw_V2 : V2 ; + lalisw_V : V ; + lalisw_V2 : V2 ; + lalukiw_V : V ; + lalukiw_V2 : V2 ; + lalw_V : V ; + lalw_V2 : V2 ; + lambw_V : V ; + lambw_V2 : V2 ; + landelelw_V : V ; + landelelw_V2 : V2 ; + landelw_V : V ; + landelw_V2 : V2 ; + landisw_V : V ; + landisw_V2 : V2 ; + landiw_V : V ; + landiw_V2 : V2 ; + landulw_V : V ; + landulw_V2 : V2 ; + landw_V : V ; + landw_V2 : V2 ; + lawulw_V : V ; + lawulw_V2 : V2 ; + layelw_V : V ; + layelw_V2 : V2 ; + layishw_V : V ; + layishw_V2 : V2 ; + layisisiw_V : V ; + layisisiw_V2 : V2 ; + laziw_V : V ; + laziw_V2 : V2 ; + lazw_V : V ; + lazw_V2 : V2 ; + lekelelw_V : V ; + lekelelw_V2 : V2 ; + lendlw_V : V ; + lendlw_V2 : V2 ; + lengiselw_V : V ; + lengiselw_V2 : V2 ; + lengisw_V : V ; + lengisw_V2 : V2 ; + lengw_V : V ; + lengw_V2 : V2 ; + lethelw_V : V ; + lethelw_V2 : V2 ; + lethiw_V : V ; + lethiw_V2 : V2 ; + lethw_V : V ; + lethw_V2 : V2 ; + lezw_V : V ; + lezw_V2 : V2 ; + lilelw_V : V ; + lilelw_V2 : V2 ; + lilizelw_V : V ; + lilizelw_V2 : V2 ; + lilw_V : V ; + lilw_V2 : V2 ; + limw_V : V ; + limw_V2 : V2 ; + lindelw_V : V ; + lindelw_V2 : V2 ; + lindisw_V : V ; + lindisw_V2 : V2 ; + lindiw_V : V ; + lindiw_V2 : V2 ; + lindw_V : V ; + lindw_V2 : V2 ; + linganiselw_V : V ; + linganiselw_V2 : V2 ; + linganisiw_V : V ; + linganisiw_V2 : V2 ; + linganisw_V : V ; + linganisw_V2 : V2 ; + lingisw_V : V ; + lingisw_V2 : V2 ; + lingw_V : V ; + lingw_V2 : V2 ; + lobiw_V : V ; + lobiw_V2 : V2 ; + lobw_V : V ; + lobw_V2 : V2 ; + lokothw_V : V ; + lokothw_V2 : V2 ; + loliw_V : V ; + loliw_V2 : V2 ; + lolongw_V : V ; + lolongw_V2 : V2 ; + lolozelw_V : V ; + lolozelw_V2 : V2 ; + lolw_V : V ; + lolw_V2 : V2 ; + londolozw_V : V ; + londolozw_V2 : V2 ; + lubw_V : V ; + lubw_V2 : V2 ; + lukiw_V : V ; + lukiw_V2 : V2 ; + lukw_V : V ; + lukw_V2 : V2 ; + lulekw_V : V ; + lulekw_V2 : V2 ; + lumbw_V : V ; + lumbw_V2 : V2 ; + lungiselelw_V : V ; + lungiselelw_V2 : V2 ; + lungiselw_V : V ; + lungiselw_V2 : V2 ; + lungisiw_V : V ; + lungisiw_V2 : V2 ; + lungisw_V : V ; + lungisw_V2 : V2 ; + lunguzw_V : V ; + lunguzw_V2 : V2 ; + luthw_V : V ; + luthw_V2 : V2 ; + lwelw_V : V ; + lwelw_V2 : V2 ; + lwezw_V : V ; + lwezw_V2 : V2 ; + mangalisw_V : V ; + mangalisw_V2 : V2 ; + matisw_V : V ; + matisw_V2 : V2 ; + matiw_V : V ; + matiw_V2 : V2 ; + matw_V : V ; + matw_V2 : V2 ; + mbelekw_V : V ; + mbelekw_V2 : V2 ; + mbelw_V : V ; + mbelw_V2 : V2 ; + mbiw_V : V ; + mbiw_V2 : V2 ; + mbozw_V : V ; + mbozw_V2 : V2 ; + melelelw_V : V ; + melelelw_V2 : V2 ; + melw_V : V ; + melw_V2 : V2 ; + memelw_V : V ; + memelw_V2 : V2 ; + memezelw_V : V ; + memezelw_V2 : V2 ; + memiw_V : V ; + memiw_V2 : V2 ; + memw_V : V ; + memw_V2 : V2 ; + milw_V : V ; + milw_V2 : V2 ; + miselw_V : V ; + miselw_V2 : V2 ; + misiw_V : V ; + misiw_V2 : V2 ; + misw_V : V ; + misw_V2 : V2 ; + miw_V : V ; + miw_V2 : V2 ; + monyw_V : V ; + monyw_V2 : V2 ; + mpintshw_V : V ; + mpintshw_V2 : V2 ; + mukelw_V : V ; + mukelw_V2 : V2 ; + mukisw_V : V ; + mukisw_V2 : V2 ; + mulisw_V : V ; + mulisw_V2 : V2 ; + muncw_V : V ; + muncw_V2 : V2 ; + munyungw_V : V ; + munyungw_V2 : V2 ; + mw_V : V ; + mw_V2 : V2 ; + nakalelw_V : V ; + nakalelw_V2 : V2 ; + nakekelw_V : V ; + nakekelw_V2 : V2 ; + nakelelw_V : V ; + nakelelw_V2 : V2 ; + nakiw_V : V ; + nakiw_V2 : V2 ; + nakw_V : V ; + nakw_V2 : V2 ; + namathelisiw_V : V ; + namathelisiw_V2 : V2 ; + nambithisw_V : V ; + nambithisw_V2 : V2 ; + nambithw_V : V ; + nambithw_V2 : V2 ; + namisw_V : V ; + namisw_V2 : V2 ; + ncamw_V : V ; + ncamw_V2 : V2 ; + ncanyw_V : V ; + ncanyw_V2 : V2 ; + ncengw_V : V ; + ncengw_V2 : V2 ; + ncikiselw_V : V ; + ncikiselw_V2 : V2 ; + ncikisw_V : V ; + ncikisw_V2 : V2 ; + ncindisw_V : V ; + ncindisw_V2 : V2 ; + ncinzw_V : V ; + ncinzw_V2 : V2 ; + nciphanw_V : V ; + nciphanw_V2 : V2 ; + nciphelw_V : V ; + nciphelw_V2 : V2 ; + nciphiw_V : V ; + nciphiw_V2 : V2 ; + nciphw_V : V ; + nciphw_V2 : V2 ; + ncishanw_V : V ; + ncishanw_V2 : V2 ; + ncishelw_V : V ; + ncishelw_V2 : V2 ; + ncishiw_V : V ; + ncishiw_V2 : V2 ; + ncishw_V : V ; + ncishw_V2 : V2 ; + ncomw_V : V ; + ncomw_V2 : V2 ; + ncunzw_V : V ; + ncunzw_V2 : V2 ; + ndizisw_V : V ; + ndizisw_V2 : V2 ; + nekiw_V : V ; + nekiw_V2 : V2 ; + nekw_V : V ; + nekw_V2 : V2 ; + nelisiw_V : V ; + nelisiw_V2 : V2 ; + nelisw_V : V ; + nelisw_V2 : V2 ; + nelw_V : V ; + nelw_V2 : V2 ; + nengiw_V : V ; + nengiw_V2 : V2 ; + nengw_V : V ; + nengw_V2 : V2 ; + nesiw_V : V ; + nesiw_V2 : V2 ; + nethiw_V : V ; + nethiw_V2 : V2 ; + nethw_V : V ; + nethw_V2 : V2 ; + ngabaziw_V : V ; + ngabaziw_V2 : V2 ; + ngcingcizw_V : V ; + ngcingcizw_V2 : V2 ; + ngcolisiw_V : V ; + ngcolisiw_V2 : V2 ; + ngcolisw_V : V ; + ngcolisw_V2 : V2 ; + ngcwabelw_V : V ; + ngcwabelw_V2 : V2 ; + ngcwabiw_V : V ; + ngcwabiw_V2 : V2 ; + ngcwabw_V : V ; + ngcwabw_V2 : V2 ; + ngcwelisw_V : V ; + ngcwelisw_V2 : V2 ; + ngenelisiw_V : V ; + ngenelisiw_V2 : V2 ; + ngenelisw_V : V ; + ngenelisw_V2 : V2 ; + ngenelw_V : V ; + ngenelw_V2 : V2 ; + ngenisw_V : V ; + ngenisw_V2 : V2 ; + ngenw_V : V ; + ngenw_V2 : V2 ; + ngungw_V : V ; + ngungw_V2 : V2 ; + nikelw_V : V ; + nikelw_V2 : V2 ; + nikezelw_V : V ; + nikezelw_V2 : V2 ; + nikeziw_V : V ; + nikeziw_V2 : V2 ; + nikezw_V : V ; + nikezw_V2 : V2 ; + nikinelw_V : V ; + nikinelw_V2 : V2 ; + nikiw_V : V ; + nikiw_V2 : V2 ; + nikw_V : V ; + nikw_V2 : V2 ; + nindw_V : V ; + nindw_V2 : V2 ; + niselw_V : V ; + niselw_V2 : V2 ; + nisw_V : V ; + nisw_V2 : V2 ; + niw_V : V ; + niw_V2 : V2 ; + nkenkethelw_V : V ; + nkenkethelw_V2 : V2 ; + nomfelw_V : V ; + nomfelw_V2 : V2 ; + nqabelw_V : V ; + nqabelw_V2 : V2 ; + nqandw_V : V ; + nqandw_V2 : V2 ; + nqikazisw_V : V ; + nqikazisw_V2 : V2 ; + nqobiw_V : V ; + nqobiw_V2 : V2 ; + nqobw_V : V ; + nqobw_V2 : V2 ; + nqumelw_V : V ; + nqumelw_V2 : V2 ; + nqumisw_V : V ; + nqumisw_V2 : V2 ; + nqumiw_V : V ; + nqumiw_V2 : V2 ; + nqumw_V : V ; + nqumw_V2 : V2 ; + nqwambisw_V : V ; + nqwambisw_V2 : V2 ; + nsinyw_V : V ; + nsinyw_V2 : V2 ; + ntshontshw_V : V ; + ntshontshw_V2 : V2 ; + nukelw_V : V ; + nukelw_V2 : V2 ; + nukiw_V : V ; + nukiw_V2 : V2 ; + nukubeziw_V : V ; + nukubeziw_V2 : V2 ; + nukw_V : V ; + nukw_V2 : V2 ; + nw_V : V ; + nw_V2 : V2 ; + nxephezelw_V : V ; + nxephezelw_V2 : V2 ; + nxusw_V : V ; + nxusw_V2 : V2 ; + nyangw_V : V ; + nyangw_V2 : V2 ; + nyathelisw_V : V ; + nyathelisw_V2 : V2 ; + nyathelw_V : V ; + nyathelw_V2 : V2 ; + nyazw_V : V ; + nyazw_V2 : V2 ; + nyelelw_V : V ; + nyelelw_V2 : V2 ; + nyisw_V : V ; + nyisw_V2 : V2 ; + nyw_V : V ; + nyw_V2 : V2 ; + obukelw_V : V ; + obukelw_V2 : V2 ; + obukw_V : V ; + obukw_V2 : V2 ; + obulw_V : V ; + obulw_V2 : V2 ; + obuzw_V : V ; + obuzw_V2 : V2 ; + obuzwiw_V : V ; + obuzwiw_V2 : V2 ; + odekw_V : V ; + odekw_V2 : V2 ; + odw_V : V ; + odw_V2 : V2 ; + okhelw_V : V ; + okhelw_V2 : V2 ; + okhw_V : V ; + okhw_V2 : V2 ; + olulekw_V : V ; + olulekw_V2 : V2 ; + omelw_V : V ; + omelw_V2 : V2 ; + omiselw_V : V ; + omiselw_V2 : V2 ; + omisiw_V : V ; + omisiw_V2 : V2 ; + omisw_V : V ; + omisw_V2 : V2 ; + omw_V : V ; + omw_V2 : V2 ; + onakalelw_V : V ; + onakalelw_V2 : V2 ; + ondelw_V : V ; + ondelw_V2 : V2 ; + ondlw_V : V ; + ondlw_V2 : V2 ; + ondw_V : V ; + ondw_V2 : V2 ; + onelelw_V : V ; + onelelw_V2 : V2 ; + onelisiw_V : V ; + onelisiw_V2 : V2 ; + onelisw_V : V ; + onelisw_V2 : V2 ; + ongakalw_V : V ; + ongakalw_V2 : V2 ; + onganelisw_V : V ; + onganelisw_V2 : V2 ; + ongelw_V : V ; + ongelw_V2 : V2 ; + ongezw_V : V ; + ongezw_V2 : V2 ; + ongiw_V : V ; + ongiw_V2 : V2 ; + ongw_V : V ; + ongw_V2 : V2 ; + onisiw_V : V ; + onisiw_V2 : V2 ; + onisw_V : V ; + onisw_V2 : V2 ; + oniw_V : V ; + oniw_V2 : V2 ; + onw_V : V ; + onw_V2 : V2 ; + ophekelw_V : V ; + ophekelw_V2 : V2 ; + ophekw_V : V ; + ophekw_V2 : V2 ; + ophelelw_V : V ; + ophelelw_V2 : V2 ; + osanelisiw_V : V ; + osanelisiw_V2 : V2 ; + osekelw_V : V ; + osekelw_V2 : V2 ; + oselw_V : V ; + oselw_V2 : V2 ; + osisekelw_V : V ; + osisekelw_V2 : V2 ; + osiw_V : V ; + osiw_V2 : V2 ; + osw_V : V ; + osw_V2 : V2 ; + othelw_V : V ; + othelw_V2 : V2 ; + othiw_V : V ; + othiw_V2 : V2 ; + othw_V : V ; + othw_V2 : V2 ; + ozelw_V : V ; + ozelw_V2 : V2 ; + pendw_V : V ; + pendw_V2 : V2 ; + phahlw_V : V ; + phahlw_V2 : V2 ; + phakamiselw_V : V ; + phakamiselw_V2 : V2 ; + phakamisiw_V : V ; + phakamisiw_V2 : V2 ; + phakamisw_V : V ; + phakamisw_V2 : V2 ; + phakathw_V : V ; + phakathw_V2 : V2 ; + phakelw_V : V ; + phakelw_V2 : V2 ; + phakiw_V : V ; + phakiw_V2 : V2 ; + phakulelw_V : V ; + phakulelw_V2 : V2 ; + phakw_V : V ; + phakw_V2 : V2 ; + phalazw_V : V ; + phalazw_V2 : V2 ; + phambanisw_V : V ; + phambanisw_V2 : V2 ; + phandw_V : V ; + phandw_V2 : V2 ; + phangw_V : V ; + phangw_V2 : V2 ; + phanyekiw_V : V ; + phanyekiw_V2 : V2 ; + phanyekw_V : V ; + phanyekw_V2 : V2 ; + phasisiw_V : V ; + phasisiw_V2 : V2 ; + phasisw_V : V ; + phasisw_V2 : V2 ; + phathaniselw_V : V ; + phathaniselw_V2 : V2 ; + phathelw_V : V ; + phathelw_V2 : V2 ; + phathisw_V : V ; + phathisw_V2 : V2 ; + phathw_V : V ; + phathw_V2 : V2 ; + phawuliw_V : V ; + phawuliw_V2 : V2 ; + phawulw_V : V ; + phawulw_V2 : V2 ; + phazamiselw_V : V ; + phazamiselw_V2 : V2 ; + phazamisw_V : V ; + phazamisw_V2 : V2 ; + phefumulw_V : V ; + phefumulw_V2 : V2 ; + phehlelelw_V : V ; + phehlelelw_V2 : V2 ; + phehlw_V : V ; + phehlw_V2 : V2 ; + phekelw_V : V ; + phekelw_V2 : V2 ; + phekezelw_V : V ; + phekezelw_V2 : V2 ; + phekiw_V : V ; + phekiw_V2 : V2 ; + phekw_V : V ; + phekw_V2 : V2 ; + phelekezelw_V : V ; + phelekezelw_V2 : V2 ; + phelelw_V : V ; + phelelw_V2 : V2 ; + phelezelw_V : V ; + phelezelw_V2 : V2 ; + phelisw_V : V ; + phelisw_V2 : V2 ; + phendukelw_V : V ; + phendukelw_V2 : V2 ; + phendukisw_V : V ; + phendukisw_V2 : V2 ; + phendulw_V : V ; + phendulw_V2 : V2 ; + phenyisisw_V : V ; + phenyisisw_V2 : V2 ; + phenyw_V : V ; + phenyw_V2 : V2 ; + phethiw_V : V ; + phethiw_V2 : V2 ; + phethw_V : V ; + phethw_V2 : V2 ; + phicw_V : V ; + phicw_V2 : V2 ; + phihlizw_V : V ; + phihlizw_V2 : V2 ; + phikisw_V : V ; + phikisw_V2 : V2 ; + phikw_V : V ; + phikw_V2 : V2 ; + philisw_V : V ; + philisw_V2 : V2 ; + philiw_V : V ; + philiw_V2 : V2 ; + philw_V : V ; + philw_V2 : V2 ; + phimisw_V : V ; + phimisw_V2 : V2 ; + phindaphindw_V : V ; + phindaphindw_V2 : V2 ; + phindelw_V : V ; + phindelw_V2 : V2 ; + phindiselw_V : V ; + phindiselw_V2 : V2 ; + phindiw_V : V ; + phindiw_V2 : V2 ; + phindw_V : V ; + phindw_V2 : V2 ; + phithizelw_V : V ; + phithizelw_V2 : V2 ; + phiw_V : V ; + phiw_V2 : V2 ; + phokophelw_V : V ; + phokophelw_V2 : V2 ; + pholisw_V : V ; + pholisw_V2 : V2 ; + phonselw_V : V ; + phonselw_V2 : V2 ; + phonsw_V : V ; + phonsw_V2 : V2 ; + phoqelelw_V : V ; + phoqelelw_V2 : V2 ; + phoqw_V : V ; + phoqw_V2 : V2 ; + phoselw_V : V ; + phoselw_V2 : V2 ; + phothiw_V : V ; + phothiw_V2 : V2 ; + phoxw_V : V ; + phoxw_V2 : V2 ; + phuciw_V : V ; + phuciw_V2 : V2 ; + phucw_V : V ; + phucw_V2 : V2 ; + phukw_V : V ; + phukw_V2 : V2 ; + phulelw_V : V ; + phulelw_V2 : V2 ; + phulw_V : V ; + phulw_V2 : V2 ; + phumelelw_V : V ; + phumelelw_V2 : V2 ; + phumelw_V : V ; + phumelw_V2 : V2 ; + phumw_V : V ; + phumw_V2 : V2 ; + phungulw_V : V ; + phungulw_V2 : V2 ; + phunyulw_V : V ; + phunyulw_V2 : V2 ; + phunyuzw_V : V ; + phunyuzw_V2 : V2 ; + phuphw_V : V ; + phuphw_V2 : V2 ; + phushw_V : V ; + phushw_V2 : V2 ; + phuthelw_V : V ; + phuthelw_V2 : V2 ; + phuthumisw_V : V ; + phuthumisw_V2 : V2 ; + phuthumw_V : V ; + phuthumw_V2 : V2 ; + phuthw_V : V ; + phuthw_V2 : V2 ; + phuzisw_V : V ; + phuzisw_V2 : V2 ; + phuziw_V : V ; + phuziw_V2 : V2 ; + phuzw_V : V ; + phuzw_V2 : V2 ; + phw_V : V ; + phw_V2 : V2 ; + posiw_V : V ; + posiw_V2 : V2 ; + posw_V : V ; + posw_V2 : V2 ; + potozw_V : V ; + potozw_V2 : V2 ; + qagelw_V : V ; + qagelw_V2 : V2 ; + qalazw_V : V ; + qalazw_V2 : V2 ; + qalekisiw_V : V ; + qalekisiw_V2 : V2 ; + qalekisw_V : V ; + qalekisw_V2 : V2 ; + qalelw_V : V ; + qalelw_V2 : V2 ; + qaliw_V : V ; + qaliw_V2 : V2 ; + qalw_V : V ; + qalw_V2 : V2 ; + qambw_V : V ; + qambw_V2 : V2 ; + qamelw_V : V ; + qamelw_V2 : V2 ; + qandelw_V : V ; + qandelw_V2 : V2 ; + qandw_V : V ; + qandw_V2 : V2 ; + qanganisw_V : V ; + qanganisw_V2 : V2 ; + qaphelisw_V : V ; + qaphelisw_V2 : V2 ; + qaphelw_V : V ; + qaphelw_V2 : V2 ; + qaphiw_V : V ; + qaphiw_V2 : V2 ; + qaphw_V : V ; + qaphw_V2 : V2 ; + qaqw_V : V ; + qaqw_V2 : V2 ; + qashelisw_V : V ; + qashelisw_V2 : V2 ; + qashelw_V : V ; + qashelw_V2 : V2 ; + qashiw_V : V ; + qashiw_V2 : V2 ; + qashw_V : V ; + qashw_V2 : V2 ; + qedelw_V : V ; + qedelw_V2 : V2 ; + qediw_V : V ; + qediw_V2 : V2 ; + qedw_V : V ; + qedw_V2 : V2 ; + qeqeshiw_V : V ; + qeqeshiw_V2 : V2 ; + qeqeshw_V : V ; + qeqeshw_V2 : V2 ; + qhaqhazelisw_V : V ; + qhaqhazelisw_V2 : V2 ; + qhathanisw_V : V ; + qhathanisw_V2 : V2 ; + qhathw_V : V ; + qhathw_V2 : V2 ; + qhinw_V : V ; + qhinw_V2 : V2 ; + qhoboshelw_V : V ; + qhoboshelw_V2 : V2 ; + qholw_V : V ; + qholw_V2 : V2 ; + qhoshw_V : V ; + qhoshw_V2 : V2 ; + qhubekelw_V : V ; + qhubekelw_V2 : V2 ; + qhubekw_V : V ; + qhubekw_V2 : V2 ; + qhubelw_V : V ; + qhubelw_V2 : V2 ; + qhubw_V : V ; + qhubw_V2 : V2 ; + qhumw_V : V ; + qhumw_V2 : V2 ; + qhuzulw_V : V ; + qhuzulw_V2 : V2 ; + qhwandw_V : V ; + qhwandw_V2 : V2 ; + qikelelw_V : V ; + qikelelw_V2 : V2 ; + qinisekisw_V : V ; + qinisekisw_V2 : V2 ; + qinisekw_V : V ; + qinisekw_V2 : V2 ; + qinisiw_V : V ; + qinisiw_V2 : V2 ; + qinisw_V : V ; + qinisw_V2 : V2 ; + qokelelw_V : V ; + qokelelw_V2 : V2 ; + qokelw_V : V ; + qokelw_V2 : V2 ; + qokw_V : V ; + qokw_V2 : V2 ; + qomiw_V : V ; + qomiw_V2 : V2 ; + qomw_V : V ; + qomw_V2 : V2 ; + qondanisw_V : V ; + qondanisw_V2 : V2 ; + qondisw_V : V ; + qondisw_V2 : V2 ; + qondiw_V : V ; + qondiw_V2 : V2 ; + qondw_V : V ; + qondw_V2 : V2 ; + qonelw_V : V ; + qonelw_V2 : V2 ; + qongw_V : V ; + qongw_V2 : V2 ; + qophiw_V : V ; + qophiw_V2 : V2 ; + qophw_V : V ; + qophw_V2 : V2 ; + qoqelw_V : V ; + qoqelw_V2 : V2 ; + qoqw_V : V ; + qoqw_V2 : V2 ; + qoshamisiw_V : V ; + qoshamisiw_V2 : V2 ; + qothulw_V : V ; + qothulw_V2 : V2 ; + qothw_V : V ; + qothw_V2 : V2 ; + qukulw_V : V ; + qukulw_V2 : V2 ; + qulelw_V : V ; + qulelw_V2 : V2 ; + qulw_V : V ; + qulw_V2 : V2 ; + ququdw_V : V ; + ququdw_V2 : V2 ; + sabalalisw_V : V ; + sabalalisw_V2 : V2 ; + sabelw_V : V ; + sabelw_V2 : V2 ; + sabisw_V : V ; + sabisw_V2 : V2 ; + sabw_V : V ; + sabw_V2 : V2 ; + sadukelw_V : V ; + sadukelw_V2 : V2 ; + sakazw_V : V ; + sakazw_V2 : V2 ; + saliw_V : V ; + saliw_V2 : V2 ; + salw_V : V ; + salw_V2 : V2 ; + sanelisiw_V : V ; + sanelisiw_V2 : V2 ; + sanganelw_V : V ; + sanganelw_V2 : V2 ; + sanganisw_V : V ; + sanganisw_V2 : V2 ; + sasw_V : V ; + sasw_V2 : V2 ; + sayinw_V : V ; + sayinw_V2 : V2 ; + sefw_V : V ; + sefw_V2 : V2 ; + sekeliw_V : V ; + sekeliw_V2 : V2 ; + sekelw_V : V ; + sekelw_V2 : V2 ; + sekw_V : V ; + sekw_V2 : V2 ; + selw_V : V ; + selw_V2 : V2 ; + sendisw_V : V ; + sendisw_V2 : V2 ; + sengiw_V : V ; + sengiw_V2 : V2 ; + sengw_V : V ; + sengw_V2 : V2 ; + seshw_V : V ; + seshw_V2 : V2 ; + sevulelw_V : V ; + sevulelw_V2 : V2 ; + sewuzw_V : V ; + sewuzw_V2 : V2 ; + seziw_V : V ; + seziw_V2 : V2 ; + seziwisw_V : V ; + seziwisw_V2 : V2 ; + sezw_V : V ; + sezw_V2 : V2 ; + shadisw_V : V ; + shadisw_V2 : V2 ; + shadw_V : V ; + shadw_V2 : V2 ; + shayelw_V : V ; + shayelw_V2 : V2 ; + shayisw_V : V ; + shayisw_V2 : V2 ; + shayw_V : V ; + shayw_V2 : V2 ; + shazw_V : V ; + shazw_V2 : V2 ; + shelelisw_V : V ; + shelelisw_V2 : V2 ; + shelw_V : V ; + shelw_V2 : V2 ; + sheshiselw_V : V ; + sheshiselw_V2 : V2 ; + sheshisw_V : V ; + sheshisw_V2 : V2 ; + shintshelw_V : V ; + shintshelw_V2 : V2 ; + shintshw_V : V ; + shintshw_V2 : V2 ; + shiselw_V : V ; + shiselw_V2 : V2 ; + shishizelw_V : V ; + shishizelw_V2 : V2 ; + shisisw_V : V ; + shisisw_V2 : V2 ; + shisiw_V : V ; + shisiw_V2 : V2 ; + shisw_V : V ; + shisw_V2 : V2 ; + shiw_V : V ; + shiw_V2 : V2 ; + shiyelw_V : V ; + shiyelw_V2 : V2 ; + shiyisw_V : V ; + shiyisw_V2 : V2 ; + shiyw_V : V ; + shiyw_V2 : V2 ; + shonelw_V : V ; + shonelw_V2 : V2 ; + shonisw_V : V ; + shonisw_V2 : V2 ; + shoniw_V : V ; + shoniw_V2 : V2 ; + shuduzw_V : V ; + shuduzw_V2 : V2 ; + shukw_V : V ; + shukw_V2 : V2 ; + shunqisw_V : V ; + shunqisw_V2 : V2 ; + shunyayelw_V : V ; + shunyayelw_V2 : V2 ; + shuqulw_V : V ; + shuqulw_V2 : V2 ; + shushisw_V : V ; + shushisw_V2 : V2 ; + shw_V : V ; + shw_V2 : V2 ; + shwabadelw_V : V ; + shwabadelw_V2 : V2 ; + shwelezelw_V : V ; + shwelezelw_V2 : V2 ; + shwelezw_V : V ; + shwelezw_V2 : V2 ; + sibekelw_V : V ; + sibekelw_V2 : V2 ; + sihleliw_V : V ; + sihleliw_V2 : V2 ; + sihlelw_V : V ; + sihlelw_V2 : V2 ; + sihlw_V : V ; + sihlw_V2 : V2 ; + sikanisw_V : V ; + sikanisw_V2 : V2 ; + sikw_V : V ; + sikw_V2 : V2 ; + silizw_V : V ; + silizw_V2 : V2 ; + silw_V : V ; + silw_V2 : V2 ; + simamisw_V : V ; + simamisw_V2 : V2 ; + simuzw_V : V ; + simuzw_V2 : V2 ; + sindiselw_V : V ; + sindiselw_V2 : V2 ; + sindisiw_V : V ; + sindisiw_V2 : V2 ; + sindisw_V : V ; + sindisw_V2 : V2 ; + sindw_V : V ; + sindw_V2 : V2 ; + singathelw_V : V ; + singathelw_V2 : V2 ; + sinisw_V : V ; + sinisw_V2 : V2 ; + sinw_V : V ; + sinw_V2 : V2 ; + siphukw_V : V ; + siphukw_V2 : V2 ; + siphulw_V : V ; + siphulw_V2 : V2 ; + sisekelw_V : V ; + sisekelw_V2 : V2 ; + sisiw_V : V ; + sisiw_V2 : V2 ; + sisw_V : V ; + sisw_V2 : V2 ; + sithw_V : V ; + sithw_V2 : V2 ; + siw_V : V ; + siw_V2 : V2 ; + sizelw_V : V ; + sizelw_V2 : V2 ; + siziw_V : V ; + siziw_V2 : V2 ; + sizw_V : V ; + sizw_V2 : V2 ; + sizwiw_V : V ; + sizwiw_V2 : V2 ; + sobozelw_V : V ; + sobozelw_V2 : V2 ; + sohlelw_V : V ; + sohlelw_V2 : V2 ; + sokiw_V : V ; + sokiw_V2 : V2 ; + sokolisw_V : V ; + sokolisw_V2 : V2 ; + sokolw_V : V ; + sokolw_V2 : V2 ; + sokw_V : V ; + sokw_V2 : V2 ; + solisw_V : V ; + solisw_V2 : V2 ; + solw_V : V ; + solw_V2 : V2 ; + sombululw_V : V ; + sombululw_V2 : V2 ; + sondelw_V : V ; + sondelw_V2 : V2 ; + sondezw_V : V ; + sondezw_V2 : V2 ; + songelw_V : V ; + songelw_V2 : V2 ; + songw_V : V ; + songw_V2 : V2 ; + sontw_V : V ; + sontw_V2 : V2 ; + sukelw_V : V ; + sukelw_V2 : V2 ; + sukumw_V : V ; + sukumw_V2 : V2 ; + sukw_V : V ; + sukw_V2 : V2 ; + sulelw_V : V ; + sulelw_V2 : V2 ; + sulw_V : V ; + sulw_V2 : V2 ; + sungulelw_V : V ; + sungulelw_V2 : V2 ; + sungulw_V : V ; + sungulw_V2 : V2 ; + suselw_V : V ; + suselw_V2 : V2 ; + susiw_V : V ; + susiw_V2 : V2 ; + susw_V : V ; + susw_V2 : V2 ; + suthisw_V : V ; + suthisw_V2 : V2 ; + suthw_V : V ; + suthw_V2 : V2 ; + suziw_V : V ; + suziw_V2 : V2 ; + suzw_V : V ; + suzw_V2 : V2 ; + sw_V : V ; + sw_V2 : V2 ; + tatamisw_V : V ; + tatamisw_V2 : V2 ; + tatazelw_V : V ; + tatazelw_V2 : V2 ; + tetemisw_V : V ; + tetemisw_V2 : V2 ; + tetemw_V : V ; + tetemw_V2 : V2 ; + thakathw_V : V ; + thakathw_V2 : V2 ; + thakiw_V : V ; + thakiw_V2 : V2 ; + thakw_V : V ; + thakw_V2 : V2 ; + thandabuzw_V : V ; + thandabuzw_V2 : V2 ; + thandanw_V : V ; + thandanw_V2 : V2 ; + thandazw_V : V ; + thandazw_V2 : V2 ; + thandiw_V : V ; + thandiw_V2 : V2 ; + thandw_V : V ; + thandw_V2 : V2 ; + thaphuzw_V : V ; + thaphuzw_V2 : V2 ; + thasiselw_V : V ; + thasiselw_V2 : V2 ; + thathelw_V : V ; + thathelw_V2 : V2 ; + thathiw_V : V ; + thathiw_V2 : V2 ; + thathw_V : V ; + thathw_V2 : V2 ; + thekw_V : V ; + thekw_V2 : V2 ; + thelelw_V : V ; + thelelw_V2 : V2 ; + theliw_V : V ; + theliw_V2 : V2 ; + thelw_V : V ; + thelw_V2 : V2 ; + thembelw_V : V ; + thembelw_V2 : V2 ; + thembw_V : V ; + thembw_V2 : V2 ; + thengelw_V : V ; + thengelw_V2 : V2 ; + thengiselw_V : V ; + thengiselw_V2 : V2 ; + thengisiw_V : V ; + thengisiw_V2 : V2 ; + thengisw_V : V ; + thengisw_V2 : V2 ; + thengiw_V : V ; + thengiw_V2 : V2 ; + thengw_V : V ; + thengw_V2 : V2 ; + theniw_V : V ; + theniw_V2 : V2 ; + thethelelw_V : V ; + thethelelw_V2 : V2 ; + thethisw_V : V ; + thethisw_V2 : V2 ; + thethiw_V : V ; + thethiw_V2 : V2 ; + thethw_V : V ; + thethw_V2 : V2 ; + thezw_V : V ; + thezw_V2 : V2 ; + thikazisw_V : V ; + thikazisw_V2 : V2 ; + thintw_V : V ; + thintw_V2 : V2 ; + thiw_V : V ; + thiw_V2 : V2 ; + thobelw_V : V ; + thobelw_V2 : V2 ; + thobisw_V : V ; + thobisw_V2 : V2 ; + thokozelw_V : V ; + thokozelw_V2 : V2 ; + thokozisw_V : V ; + thokozisw_V2 : V2 ; + thokozw_V : V ; + thokozw_V2 : V2 ; + tholiw_V : V ; + tholiw_V2 : V2 ; + tholw_V : V ; + tholw_V2 : V2 ; + thosw_V : V ; + thosw_V2 : V2 ; + thukusw_V : V ; + thukusw_V2 : V2 ; + thukuthelisw_V : V ; + thukuthelisw_V2 : V2 ; + thukw_V : V ; + thukw_V2 : V2 ; + thulisw_V : V ; + thulisw_V2 : V2 ; + thululiw_V : V ; + thululiw_V2 : V2 ; + thululw_V : V ; + thululw_V2 : V2 ; + thulw_V : V ; + thulw_V2 : V2 ; + thumbiw_V : V ; + thumbiw_V2 : V2 ; + thumbw_V : V ; + thumbw_V2 : V2 ; + thumelw_V : V ; + thumelw_V2 : V2 ; + thumiw_V : V ; + thumiw_V2 : V2 ; + thumw_V : V ; + thumw_V2 : V2 ; + thungathw_V : V ; + thungathw_V2 : V2 ; + thungelw_V : V ; + thungelw_V2 : V2 ; + thungiw_V : V ; + thungiw_V2 : V2 ; + thungw_V : V ; + thungw_V2 : V2 ; + thusw_V : V ; + thusw_V2 : V2 ; + thuthelw_V : V ; + thuthelw_V2 : V2 ; + thuthukisiw_V : V ; + thuthukisiw_V2 : V2 ; + thuthukisw_V : V ; + thuthukisw_V2 : V2 ; + thuthw_V : V ; + thuthw_V2 : V2 ; + thw_V : V ; + thw_V2 : V2 ; + thwalisw_V : V ; + thwalisw_V2 : V2 ; + thwalw_V : V ; + thwalw_V2 : V2 ; + thwelw_V : V ; + thwelw_V2 : V2 ; + thwesiw_V : V ; + thwesiw_V2 : V2 ; + thwesw_V : V ; + thwesw_V2 : V2 ; + tinyelw_V : V ; + tinyelw_V2 : V2 ; + titinyw_V : V ; + titinyw_V2 : V2 ; + totosw_V : V ; + totosw_V2 : V2 ; + tshalw_V : V ; + tshalw_V2 : V2 ; + tshazisw_V : V ; + tshazisw_V2 : V2 ; + tshaziw_V : V ; + tshaziw_V2 : V2 ; + tshazw_V : V ; + tshazw_V2 : V2 ; + tshelekw_V : V ; + tshelekw_V2 : V2 ; + tsheliw_V : V ; + tsheliw_V2 : V2 ; + tshelw_V : V ; + tshelw_V2 : V2 ; + tshengisiw_V : V ; + tshengisiw_V2 : V2 ; + tshengisw_V : V ; + tshengisw_V2 : V2 ; + tshingw_V : V ; + tshingw_V2 : V2 ; + tshobelw_V : V ; + tshobelw_V2 : V2 ; + tulw_V : V ; + tulw_V2 : V2 ; + tuselw_V : V ; + tuselw_V2 : V2 ; + tusw_V : V ; + tusw_V2 : V2 ; + vakashelw_V : V ; + vakashelw_V2 : V2 ; + valelelw_V : V ; + valelelw_V2 : V2 ; + valelisw_V : V ; + valelisw_V2 : V2 ; + valelw_V : V ; + valelw_V2 : V2 ; + valiw_V : V ; + valiw_V2 : V2 ; + valw_V : V ; + valw_V2 : V2 ; + vamelw_V : V ; + vamelw_V2 : V2 ; + vanw_V : V ; + vanw_V2 : V2 ; + vathw_V : V ; + vathw_V2 : V2 ; + velelw_V : V ; + velelw_V2 : V2 ; + velw_V : V ; + velw_V2 : V2 ; + vevezelisw_V : V ; + vevezelisw_V2 : V2 ; + vevisw_V : V ; + vevisw_V2 : V2 ; + vezw_V : V ; + vezw_V2 : V2 ; + vikelw_V : V ; + vikelw_V2 : V2 ; + vikizw_V : V ; + vikizw_V2 : V2 ; + vimbelw_V : V ; + vimbelw_V2 : V2 ; + vimbiw_V : V ; + vimbiw_V2 : V2 ; + vimbw_V : V ; + vimbw_V2 : V2 ; + vivinyisisw_V : V ; + vivinyisisw_V2 : V2 ; + vivinyw_V : V ; + vivinyw_V2 : V2 ; + vivw_V : V ; + vivw_V2 : V2 ; + viyw_V : V ; + viyw_V2 : V2 ; + vondlw_V : V ; + vondlw_V2 : V2 ; + votelw_V : V ; + votelw_V2 : V2 ; + votw_V : V ; + votw_V2 : V2 ; + vovw_V : V ; + vovw_V2 : V2 ; + vubelw_V : V ; + vubelw_V2 : V2 ; + vubw_V : V ; + vubw_V2 : V2 ; + vukw_V : V ; + vukw_V2 : V2 ; + vulelw_V : V ; + vulelw_V2 : V2 ; + vuliw_V : V ; + vuliw_V2 : V2 ; + vulw_V : V ; + vulw_V2 : V2 ; + vumelw_V : V ; + vumelw_V2 : V2 ; + vumw_V : V ; + vumw_V2 : V2 ; + vundlw_V : V ; + vundlw_V2 : V2 ; + vungamisw_V : V ; + vungamisw_V2 : V2 ; + vuniw_V : V ; + vuniw_V2 : V2 ; + vunw_V : V ; + vunw_V2 : V2 ; + vuselelw_V : V ; + vuselelw_V2 : V2 ; + vuselw_V : V ; + vuselw_V2 : V2 ; + vusw_V : V ; + vusw_V2 : V2 ; + vuthiw_V : V ; + vuthiw_V2 : V2 ; + vuthw_V : V ; + vuthw_V2 : V2 ; + vuyisw_V : V ; + vuyisw_V2 : V2 ; + wakw_V : V ; + wakw_V2 : V2 ; + wanelisw_V : V ; + wanelisw_V2 : V2 ; + washelw_V : V ; + washelw_V2 : V2 ; + washisisw_V : V ; + washisisw_V2 : V2 ; + washisw_V : V ; + washisw_V2 : V2 ; + washiw_V : V ; + washiw_V2 : V2 ; + washw_V : V ; + washw_V2 : V2 ; + welelw_V : V ; + welelw_V2 : V2 ; + welw_V : V ; + welw_V2 : V2 ; + wezw_V : V ; + wezw_V2 : V2 ; + winw_V : V ; + winw_V2 : V2 ; + wisw_V : V ; + wisw_V2 : V2 ; + wolw_V : V ; + wolw_V2 : V2 ; + wukulw_V : V ; + wukulw_V2 : V2 ; + wukuzw_V : V ; + wukuzw_V2 : V2 ; + wuzw_V : V ; + wuzw_V2 : V2 ; + xabanisw_V : V ; + xabanisw_V2 : V2 ; + xakiw_V : V ; + xakiw_V2 : V2 ; + xakw_V : V ; + xakw_V2 : V2 ; + xaxabulw_V : V ; + xaxabulw_V2 : V2 ; + xaxw_V : V ; + xaxw_V2 : V2 ; + xazululw_V : V ; + xazululw_V2 : V2 ; + xegelw_V : V ; + xegelw_V2 : V2 ; + xegisw_V : V ; + xegisw_V2 : V2 ; + xhasw_V : V ; + xhasw_V2 : V2 ; + xhawulw_V : V ; + xhawulw_V2 : V2 ; + xhophiw_V : V ; + xhophiw_V2 : V2 ; + xhophw_V : V ; + xhophw_V2 : V2 ; + xhoxhw_V : V ; + xhoxhw_V2 : V2 ; + xhozw_V : V ; + xhozw_V2 : V2 ; + xhumanisw_V : V ; + xhumanisw_V2 : V2 ; + xhumelw_V : V ; + xhumelw_V2 : V2 ; + xhumw_V : V ; + xhumw_V2 : V2 ; + xhwaliselw_V : V ; + xhwaliselw_V2 : V2 ; + xilongw_V : V ; + xilongw_V2 : V2 ; + xinw_V : V ; + xinw_V2 : V2 ; + xokozelw_V : V ; + xokozelw_V2 : V2 ; + xolelw_V : V ; + xolelw_V2 : V2 ; + xoshelw_V : V ; + xoshelw_V2 : V2 ; + xoshisw_V : V ; + xoshisw_V2 : V2 ; + xoshiw_V : V ; + xoshiw_V2 : V2 ; + xoshw_V : V ; + xoshw_V2 : V2 ; + xovw_V : V ; + xovw_V2 : V2 ; + xoxaxoxw_V : V ; + xoxaxoxw_V2 : V2 ; + xoxelw_V : V ; + xoxelw_V2 : V2 ; + xoxisw_V : V ; + xoxisw_V2 : V2 ; + xoxw_V : V ; + xoxw_V2 : V2 ; + xubanisw_V : V ; + xubanisw_V2 : V2 ; + xubw_V : V ; + xubw_V2 : V2 ; + xukuzw_V : V ; + xukuzw_V2 : V2 ; + xwayisw_V : V ; + xwayisw_V2 : V2 ; + yabazw_V : V ; + yabazw_V2 : V2 ; + yabizw_V : V ; + yabizw_V2 : V2 ; + yabuzw_V : V ; + yabuzw_V2 : V2 ; + yakazw_V : V ; + yakazw_V2 : V2 ; + yalazw_V : V ; + yalazw_V2 : V2 ; + yaleliw_V : V ; + yaleliw_V2 : V2 ; + yalelw_V : V ; + yalelw_V2 : V2 ; + yaliw_V : V ; + yaliw_V2 : V2 ; + yaluzisw_V : V ; + yaluzisw_V2 : V2 ; + yaluzw_V : V ; + yaluzw_V2 : V2 ; + yalw_V : V ; + yalw_V2 : V2 ; + yayizw_V : V ; + yayizw_V2 : V2 ; + yekelelw_V : V ; + yekelelw_V2 : V2 ; + yekelw_V : V ; + yekelw_V2 : V2 ; + yekeziw_V : V ; + yekeziw_V2 : V2 ; + yekezw_V : V ; + yekezw_V2 : V2 ; + yekisw_V : V ; + yekisw_V2 : V2 ; + yekiw_V : V ; + yekiw_V2 : V2 ; + yekw_V : V ; + yekw_V2 : V2 ; + yelw_V : V ; + yelw_V2 : V2 ; + yengw_V : V ; + yengw_V2 : V2 ; + yethelw_V : V ; + yethelw_V2 : V2 ; + yethw_V : V ; + yethw_V2 : V2 ; + yethwelw_V : V ; + yethwelw_V2 : V2 ; + yingaziw_V : V ; + yingaziw_V2 : V2 ; + yiselw_V : V ; + yiselw_V2 : V2 ; + yisisiw_V : V ; + yisisiw_V2 : V2 ; + yisiw_V : V ; + yisiw_V2 : V2 ; + yisw_V : V ; + yisw_V2 : V2 ; + yiw_V : V ; + yiw_V2 : V2 ; + yobekw_V : V ; + yobekw_V2 : V2 ; + yobuzw_V : V ; + yobuzw_V2 : V2 ; + yoliw_V : V ; + yoliw_V2 : V2 ; + yolw_V : V ; + yolw_V2 : V2 ; + yw_V : V ; + yw_V2 : V2 ; + zabalazw_V : V ; + zabalazw_V2 : V2 ; + zabelw_V : V ; + zabelw_V2 : V2 ; + zafunw_V : V ; + zafunw_V2 : V2 ; + zalelw_V : V ; + zalelw_V2 : V2 ; + zalw_V : V ; + zalw_V2 : V2 ; + zamelw_V : V ; + zamelw_V2 : V2 ; + zamulisw_V : V ; + zamulisw_V2 : V2 ; + zamw_V : V ; + zamw_V2 : V2 ; + zavulw_V : V ; + zavulw_V2 : V2 ; + zazisw_V : V ; + zazisw_V2 : V2 ; + zaziw_V : V ; + zaziw_V2 : V2 ; + zelelw_V : V ; + zelelw_V2 : V2 ; + zelw_V : V ; + zelw_V2 : V2 ; + zethiw_V : V ; + zethiw_V2 : V2 ; + zethw_V : V ; + zethw_V2 : V2 ; + zibekelw_V : V ; + zibekelw_V2 : V2 ; + zibusisiw_V : V ; + zibusisiw_V2 : V2 ; + zilelw_V : V ; + zilelw_V2 : V2 ; + ziliw_V : V ; + ziliw_V2 : V2 ; + zilw_V : V ; + zilw_V2 : V2 ; + zindlw_V : V ; + zindlw_V2 : V2 ; + zindw_V : V ; + zindw_V2 : V2 ; + zinganekw_V : V ; + zinganekw_V2 : V2 ; + zingelw_V : V ; + zingelw_V2 : V2 ; + zingw_V : V ; + zingw_V2 : V2 ; + zinzw_V : V ; + zinzw_V2 : V2 ; + zisekelw_V : V ; + zisekelw_V2 : V2 ; + zisw_V : V ; + zisw_V2 : V2 ; + ziw_V : V ; + ziw_V2 : V2 ; + ziwisw_V : V ; + ziwisw_V2 : V2 ; + ziyisw_V : V ; + ziyisw_V2 : V2 ; + zobelw_V : V ; + zobelw_V2 : V2 ; + zocolw_V : V ; + zocolw_V2 : V2 ; + zolw_V : V ; + zolw_V2 : V2 ; + zongolozelw_V : V ; + zongolozelw_V2 : V2 ; + zothiw_V : V ; + zothiw_V2 : V2 ; + zothw_V : V ; + zothw_V2 : V2 ; + zukuzw_V : V ; + zukuzw_V2 : V2 ; + zukuzwisw_V : V ; + zukuzwisw_V2 : V2 ; + zukw_V : V ; + zukw_V2 : V2 ; + zulisw_V : V ; + zulisw_V2 : V2 ; + zumw_V : V ; + zumw_V2 : V2 ; + zungezw_V : V ; + zungezw_V2 : V2 ; + zuziw_V : V ; + zuziw_V2 : V2 ; + zuzw_V : V ; + zuzw_V2 : V2 ; + -- zw_V : V ; + -- zw_V2 : V2 ; + zwisw_V : V ; + zwisw_V2 : V2 ; + zwiw_V : V ; + zwiw_V2 : V2 ; +} diff --git a/src/zulu/lexica/MonoLexZul.gf b/src/zulu/lexica/MonoLexZul.gf new file mode 100755 index 000000000..66b6fe7a3 --- /dev/null +++ b/src/zulu/lexica/MonoLexZul.gf @@ -0,0 +1,16976 @@ +concrete MonoLexZul of MonoLex = CatZul ** open ResZul,ParadigmsZul in { + + lin + -- MANUAL ADDITIONS -- + gcwele_RelStem = { s = "gcwele" } ; + ningi_5_N = mkN "ningi" C5_6 ; + lungu_1a_2a_N = mkN "lungu" "abelungu" "elungwini" "ebelungwini" C1a_2a ; + + -- AUTOMATED ADDITIONS -- + + -- adjective stems + bana_A = mkA "bana" ; + bi_A = mkA "bi" ; + bili_A = mkA "bili" ; + dadlana_A = mkA "dadlana" ; + dala_A = mkA "dala" ; + dana_A = mkA "dana" ; + de_A = mkA "de" ; + fishane_A = mkA "fishane" ; + fuphi_A = mkA "fuphi" ; + fushane_A = mkA "fushane" ; + hlanu_A = mkA "hlanu" ; + hle_A = mkA "hle" ; + jana_A = mkA "jana" ; + khudlwana_A = mkA "khudlwana" ; + khulu_A = mkA "khulu" ; + khulukhulu_A = mkA "khulukhulu" ; + mbi_A = mkA "mbi" ; + ncane_A = mkA "ncane" ; + nci_A = mkA "nci" ; + ncinyane_A = mkA "ncinyane" ; + ne_A = mkA "ne" ; + ngaka_A = mkA "ngaka" ; + ngaki_A = mkA "ngaki" ; + ngako_A = mkA "ngako" ; + ngaphi_A = mkA "ngaphi" ; + ningana_A = mkA "ningana" ; + ningi_A = mkA "ningi" ; + nyana_A = mkA "nyana" ; + nye_A = mkA "nye" ; + sha_A = mkA "sha" ; + thathu_A = mkA "thathu" ; + thulu_A = mkA "thulu" ; + + -- noun stems + aba_8_N = mkN "aba" C7_8 ; + abelo_7_8_N = mkN "abelo" C7_8 ; + abi_1_2_N = mkN "abi" C1_2 ; + abo_3_4_N = mkN "abo" C3_4 ; + adla_7_8_N = mkN "adla" C7_8 ; + aga_7_8_N = mkN "aga" C7_8 ; + agila_7_8_N = mkN "agila" C7_8 ; + ahlukaniso_7_8_N = mkN "ahlukaniso" C7_8 ; + ahluko_3_4_N = mkN "ahluko" C3_4 ; + ahluko_7_8_N = mkN "ahluko" C7_8 ; + ahluleli_1_2_N = mkN "ahluleli" C1_2 ; + ahlulelo_7_8_N = mkN "ahlulelo" C7_8 ; + ahlulo_3_N = mkN "ahlulo" C3_4 ; + akhamizi_8_N = mkN "akhamizi" C7_8 ; + akhamuzi_7_8_N = mkN "akhamuzi" C7_8 ; + akhelwana_1_2_N = mkN "akhelwana" C1_2 ; + akhelwane_1_2_N = mkN "akhelwane" C1_2 ; + akhi_1_2_N = mkN "akhi" C1_2 ; + akhi_7_8_N = mkN "akhi" C7_8 ; + akhiwo_7_8_N = mkN "akhiwo" C7_8 ; + ala_7_8_N = mkN "ala" C7_8 ; + alakutshelwa_7_8_N = mkN "alakutshelwa" C7_8 ; + ali_1_2_N = mkN "ali" C1_2 ; + alimani_7_8_N = mkN "alimani" C7_8 ; + aliwa_7_8_N = mkN "aliwa" C7_8 ; + aliwakazi_7_8_N = mkN "aliwakazi" C7_8 ; + alukazana_7_8_N = mkN "alukazana" C7_8 ; + alukazi_7_8_N = mkN "alukazi" C7_8 ; + ama_5_6_N = mkN "ama" C5_6 ; + amba_7_8_N = mkN "amba" C7_8 ; + ambane_7_8_N = mkN "ambane" C7_8 ; + ambatho_7_8_N = mkN "ambatho" C7_8 ; + ambulo_7_8_N = mkN "ambulo" C7_8 ; + amil_7_8_N = mkN "amil" C7_8 ; + amukela_7_8_N = mkN "amukela" C7_8 ; + amuku_7_8_N = mkN "amuku" C7_8 ; + an_5_6_N = mkN "an" C5_6 ; + ancinza_7_8_N = mkN "ancinza" C7_8 ; + anda_7_8_N = mkN "anda" C7_8 ; + andiso_7_8_N = mkN "andiso" C7_8 ; + andla_6_N = mkN "andla" C5_6 ; + andla_7_8_N = mkN "andla" C7_8 ; + andlu_7_8_N = mkN "andlu" C7_8 ; + andlwana_7_8_N = mkN "andlwana" C7_8 ; + ando_7_8_N = mkN "ando" C7_8 ; + andulela_7_8_N = mkN "andulela" C7_8 ; + andulelo_7_8_N = mkN "andulelo" C7_8 ; + anga_6_N = mkN "anga" C5_6 ; + anga_9_10_N = mkN "anga" C9_10 ; + angcobe_7_8_N = mkN "angcobe" C7_8 ; + ango_7_8_N = mkN "ango" C7_8 ; + angoma_7_8_N = mkN "angoma" C7_8 ; + angquma_7_N = mkN "angquma" C7_8 ; + ankahlu_7_N = mkN "ankahlu" C7_8 ; + antu_11_10_N = mkN "antu" C11_10 ; + antungwana_7_8_N = mkN "antungwana" C7_8 ; + anusi_7_8_N = mkN "anusi" C7_8 ; + anya_7_8_N = mkN "anya" C7_8 ; + apa_5_N = mkN "apa" C5_6 ; + aphethe_7_8_N = mkN "aphethe" C7_8 ; + aphuli_1_2_N = mkN "aphuli" C1_2 ; + apula_5_6_N = mkN "apula" C5_6 ; + aqheqhe_8_N = mkN "aqheqhe" C7_8 ; + asi_5_6_N = mkN "asi" C5_6 ; + atali_5_N = mkN "atali" C5_6 ; + auteng_5_N = mkN "auteng" C5_6 ; + azela_7_8_N = mkN "azela" C7_8 ; + azelo_7_N = mkN "azelo" C7_8 ; + azi_11_10_N = mkN "azi" C11_10 ; + azi_1_2_N = mkN "azi" C1_2 ; + azi_7_8_N = mkN "azi" C7_8 ; + azisi_1_2_N = mkN "azisi" C1_2 ; + aziso_7_8_N = mkN "aziso" C7_8 ; + baba_9_10_N = mkN "baba" C9_10 ; + babala_9_10_N = mkN "babala" C9_10 ; + babe_11_N = mkN "babe" C11_10 ; + babule_7_8_N = mkN "babule" C7_8 ; + bala_11_N = mkN "bala" C11_10 ; + bala_3_4_N = mkN "bala" C3_4 ; + bala_5_6_N = mkN "bala" C5_6 ; + bala_9_N = mkN "bala" C9_10 ; + balabala_3_4_N = mkN "balabala" C3_4 ; + balo_5_6_N = mkN "balo" C5_6 ; + balo_7_8_N = mkN "balo" C7_8 ; + bamba_11_10_N = mkN "bamba" C11_10 ; + bamba_5_6_N = mkN "bamba" C5_6 ; + bamba_7_8_N = mkN "bamba" C7_8 ; + bamba_9_N = mkN "bamba" C9_10 ; + bambe_9_10_N = mkN "bambe" C9_10 ; + bambela_9_10_N = mkN "bambela" C9_10 ; + bambiso_7_8_N = mkN "bambiso" C7_8 ; + bambo_11_10_N = mkN "bambo" C11_10 ; + bambo_7_8_N = mkN "bambo" C7_8 ; + banda_5_6_N = mkN "banda" C5_6 ; + banda_9_10_N = mkN "banda" C9_10 ; + bande_11_10_N = mkN "bande" C11_10 ; + bande_5_6_N = mkN "bande" C5_6 ; + bande_7_8_N = mkN "bande" C7_8 ; + bande_9_10_N = mkN "bande" C9_10 ; + bandela_3_4_N = mkN "bandela" C3_4 ; + bandla_5_6_N = mkN "bandla" C5_6 ; + bandlululo_11_N = mkN "bandlululo" C11_10 ; + bane_11_10_N = mkN "bane" C11_10 ; + bane_7_8_N = mkN "bane" C7_8 ; + banga_5_6_N = mkN "banga" C5_6 ; + bangana_5_N = mkN "bangana" C5_6 ; + bangandlala_3_4_N = mkN "bangandlala" C3_4 ; + bangela_9_N = mkN "bangela" C9_10 ; + bangi_1_2_N = mkN "bangi" C1_2 ; + bangi_9_10_N = mkN "bangi" C9_10 ; + bango_3_4_N = mkN "bango" C3_4 ; + bani_11_10_N = mkN "bani" C11_10 ; + bani_3_4_N = mkN "bani" C3_4 ; + bani_7_8_N = mkN "bani" C7_8 ; + banibani_14_N = mkN "banibani" C14 ; + banzi_14_N = mkN "banzi" C14 ; + basa_5_6_N = mkN "basa" C5_6 ; + basa_9_10_N = mkN "basa" C9_10 ; + batha_3_4_N = mkN "batha" C3_4 ; + batha_9_6_N = mkN "batha" C9_6 ; + bawu_7_8_N = mkN "bawu" C7_8 ; + baya_7_8_N = mkN "baya" C7_8 ; + baza_5_6_N = mkN "baza" C5_6 ; + bazi_11_N = mkN "bazi" C11_10 ; + bazi_1_2_N = mkN "bazi" C1_2 ; + bazi_7_8_N = mkN "bazi" C7_8 ; + bazi_9_10_N = mkN "bazi" C9_10 ; + bazo_9_10_N = mkN "bazo" C9_10 ; + bebe_5_N = mkN "bebe" C5_6 ; + befu_11_N = mkN "befu" C11_10 ; + beka_3_N = mkN "beka" C3_4 ; + beka_5_6_N = mkN "beka" C5_6 ; + bekeli_7_8_N = mkN "bekeli" C7_8 ; + beki_1_2_N = mkN "beki" C1_2 ; + bele_14_N = mkN "bele" C14 ; + bele_3_4_N = mkN "bele" C3_4 ; + bele_5_6_N = mkN "bele" C5_6 ; + bele_7_8_N = mkN "bele" C7_8 ; + belebele_3_4_N = mkN "belebele" C3_4 ; + belejongosi_6_N = mkN "belejongosi" C5_6 ; + beleko_9_10_N = mkN "beleko" C9_10 ; + bemba_11_10_N = mkN "bemba" C11_10 ; + bemba_9_10_N = mkN "bemba" C9_10 ; + bende_11_10_N = mkN "bende" C11_10 ; + bende_14_N = mkN "bende" C14 ; + benge_9_10_N = mkN "benge" C9_10 ; + bengi_1_2_N = mkN "bengi" C1_2 ; + bengo_3_4_N = mkN "bengo" C3_4 ; + benyebenye_14_N = mkN "benyebenye" C14 ; + bethe_3_N = mkN "bethe" C3_4 ; + bethe_5_6_N = mkN "bethe" C5_6 ; + bethi_1_2_N = mkN "bethi" C1_2 ; + bha_11_N = mkN "bha" C11_10 ; + bha_14_N = mkN "bha" C14 ; + bhabhadlolo_11_10_N = mkN "bhabhadlolo" C11_10 ; + bhaca_11_10_N = mkN "bhaca" C11_10 ; + bhaca_7_8_N = mkN "bhaca" C7_8 ; + bhada_5_6_N = mkN "bhada" C5_6 ; + bhadada_9_10_N = mkN "bhadada" C9_10 ; + bhadi_5_6_N = mkN "bhadi" C5_6 ; + bhadu_7_8_N = mkN "bhadu" C7_8 ; + bhajethi_5_6_N = mkN "bhajethi" C5_6 ; + bhakabhaka_7_8_N = mkN "bhakabhaka" C7_8 ; + bhakede_5_6_N = mkN "bhakede" C5_6 ; + bhakela_7_8_N = mkN "bhakela" C7_8 ; + bhako_3_4_N = mkN "bhako" C3_4 ; + bhaku_5_6_N = mkN "bhaku" C5_6 ; + bhala_5_6_N = mkN "bhala" C5_6 ; + bhalakaxa_5_6_N = mkN "bhalakaxa" C5_6 ; + bhalakaxa_9_10_N = mkN "bhalakaxa" C9_10 ; + bhalala_7_8_N = mkN "bhalala" C7_8 ; + bhalane_5_6_N = mkN "bhalane" C5_6 ; + bhali_1_2_N = mkN "bhali" C1_2 ; + bhalo_3_4_N = mkN "bhalo" C3_4 ; + bhamba_7_8_N = mkN "bhamba" C7_8 ; + bhambalala_11_10_N = mkN "bhambalala" C11_10 ; + bhamu_7_8_N = mkN "bhamu" C7_8 ; + bhamuza_5_6_N = mkN "bhamuza" C5_6 ; + bhande_5_6_N = mkN "bhande" C5_6 ; + bhandeshi_5_6_N = mkN "bhandeshi" C5_6 ; + bhanela_5_6_N = mkN "bhanela" C5_6 ; + bhange_5_6_N = mkELocN "bhange" C5_6 ; + bhanoyi_5_6_N = mkN "bhanoyi" C5_6 ; + bhanqule_5_6_N = mkN "bhanqule" C5_6 ; + bhansi_5_6_N = mkN "bhansi" C5_6 ; + bhantshi_5_6_N = mkN "bhantshi" C5_6 ; + bhanyaza_5_6_N = mkN "bhanyaza" C5_6 ; + bhaqa_11_10_N = mkN "bhaqa" C11_10 ; + bhaqanga_3_N = mkN "bhaqanga" C3_4 ; + bhasi_5_6_N = mkN "bhasi" C5_6 ; + bhasikidi_5_6_N = mkN "bhasikidi" C5_6 ; + bhaxa_5_6_N = mkN "bhaxa" C5_6 ; + bhaxa_9_10_N = mkN "bhaxa" C9_10 ; + bhaxu_7_8_N = mkN "bhaxu" C7_8 ; + bhaxu_9_10_N = mkN "bhaxu" C9_10 ; + bhayi_5_6_N = mkN "bhayi" C5_6 ; + bhayibheli_5_6_N = mkN "bhayibheli" C5_6 ; + bhayisikili_5_6_N = mkN "bhayisikili" C5_6 ; + bhayisikobho_5_6_N = mkN "bhayisikobho" C5_6 ; + bhebhe_7_8_N = mkN "bhebhe" C7_8 ; + bhede_3_4_N = mkN "bhede" C3_4 ; + bhedlela_7_8_N = mkELocN "bhedlela" C7_8 ; + bhedo_3_4_N = mkN "bhedo" C3_4 ; + bhedu_11_10_N = mkN "bhedu" C11_10 ; + bheduka_3_4_N = mkN "bheduka" C3_4 ; + bhedumehlwana_9_N = mkN "bhedumehlwana" C9_10 ; + bheja_5_6_N = mkN "bheja" C5_6 ; + bhejazane_3_4_N = mkN "bhejazane" C3_4 ; + bheji_5_6_N = mkN "bheji" C5_6 ; + bheka_5_6_N = mkN "bheka" C5_6 ; + bheki_1_2_N = mkN "bheki" C1_2 ; + bhele_5_6_N = mkN "bhele" C5_6 ; + bhelu_7_8_N = mkN "bhelu" C7_8 ; + bhemi_1_2_N = mkN "bhemi" C1_2 ; + bhentshi_5_6_N = mkN "bhentshi" C5_6 ; + bheshu_5_6_N = mkN "bheshu" C5_6 ; + bhici_11_10_N = mkN "bhici" C11_10 ; + bhidi_1_2_N = mkN "bhidi" C1_2 ; + bhidi_8_N = mkN "bhidi" C7_8 ; + bhikili_5_6_N = mkN "bhikili" C5_6 ; + bhikisho_3_4_N = mkN "bhikisho" C3_4 ; + bhilijisi_9_10_N = mkN "bhilijisi" C9_10 ; + bhimbi_5_6_N = mkN "bhimbi" C5_6 ; + bhinca_5_6_N = mkN "bhinca" C5_6 ; + bhishi_5_6_N = mkN "bhishi" C5_6 ; + bhiza_9_10_N = mkN "bhiza" C9_10 ; + bhizinisi_5_6_N = mkN "bhizinisi" C5_6 ; + bhobe_3_4_N = mkN "bhobe" C3_4 ; + bhobho_3_4_N = mkN "bhobho" C3_4 ; + bhobhodlana_6_N = mkN "bhobhodlana" C5_6 ; + bhobo_7_8_N = mkN "bhobo" C7_8 ; + bhobo_9_10_N = mkN "bhobo" C9_10 ; + bhodi_5_6_N = mkN "bhodi" C5_6 ; + bhodla_9_10_N = mkN "bhodla" C9_10 ; + bhodlela_5_6_N = mkN "bhodlela" C5_6 ; + bhodwe_5_6_N = mkN "bhodwe" C5_6 ; + bhojongwana_5_6_N = mkN "bhojongwana" C5_6 ; + bhokisi_5_6_N = mkN "bhokisi" C5_6 ; + bhoko_11_10_N = mkN "bhoko" C11_10 ; + bhoko_9_10_N = mkN "bhoko" C9_10 ; + bhokodo_9_10_N = mkN "bhokodo" C9_10 ; + bhokodwe_9_10_N = mkN "bhokodwe" C9_10 ; + bhokodwebomvu_9_N = mkN "bhokodwebomvu" C9_10 ; + bhola_5_6_N = mkN "bhola" C5_6 ; + bhola_9_10_N = mkN "bhola" C9_10 ; + bholoho_5_6_N = mkN "bholoho" C5_6 ; + bhomu_5_6_N = mkN "bhomu" C5_6 ; + bhonga_5_6_N = mkN "bhonga" C5_6 ; + bhongolo_9_10_N = mkN "bhongolo" C9_10 ; + bhoshongo_3_4_N = mkN "bhoshongo" C3_4 ; + bhu_11_N = mkN "bhu" C11_10 ; + bhu_5_6_N = mkN "bhu" C5_6 ; + bhu_9_N = mkN "bhu" C9_10 ; + bhube_9_10_N = mkN "bhube" C9_10 ; + bhubesi_5_6_N = mkN "bhubesi" C5_6 ; + bhubhiso_9_N = mkN "bhubhiso" C9_10 ; + bhubhudlo_3_4_N = mkN "bhubhudlo" C3_4 ; + bhucu_7_8_N = mkN "bhucu" C7_8 ; + bhudane_9_10_N = mkN "bhudane" C9_10 ; + bhude_9_10_N = mkN "bhude" C9_10 ; + bhudle_5_6_N = mkN "bhudle" C5_6 ; + bhuku_11_10_N = mkN "bhuku" C11_10 ; + bhuku_5_6_N = mkN "bhuku" C5_6 ; + bhulashi_5_6_N = mkN "bhulashi" C5_6 ; + bhuleki_5_6_N = mkN "bhuleki" C5_6 ; + bhulelo_3_4_N = mkN "bhulelo" C3_4 ; + bhuli_1_2_N = mkN "bhuli" C1_2 ; + bhuloho_5_6_N = mkN "bhuloho" C5_6 ; + bhulukwe_5_6_N = mkN "bhulukwe" C5_6 ; + bhulunga_9_10_N = mkN "bhulunga" C9_10 ; + bhumbe_7_8_N = mkN "bhumbe" C7_8 ; + bhumbulu_9_N = mkN "bhumbulu" C9_10 ; + bhumbulu_9_10_N = mkN "bhumbulu" C9_10 ; + bhunga_5_6_N = mkN "bhunga" C5_6 ; + bhungane_5_6_N = mkN "bhungane" C5_6 ; + bhungezi_5_6_N = mkN "bhungezi" C5_6 ; + bhungu_5_6_N = mkN "bhungu" C5_6 ; + bhungulu_9_10_N = mkN "bhungulu" C9_10 ; + bhunu_5_6_N = mkN "bhunu" C5_6 ; + bhunu_7_N = mkN "bhunu" C7_8 ; + bhuqe_5_6_N = mkN "bhuqe" C5_6 ; + bhuqu_5_6_N = mkN "bhuqu" C5_6 ; + bhuqwa_3_N = mkN "bhuqwa" C3_4 ; + bhuthuma_9_10_N = mkN "bhuthuma" C9_10 ; + bhuzana_9_10_N = mkN "bhuzana" C9_10 ; + bhuzane_11_10_N = mkN "bhuzane" C11_10 ; + bhuzazana_7_8_N = mkN "bhuzazana" C7_8 ; + bhuzi_9_10_N = mkN "bhuzi" C9_10 ; + bhuzikazi_9_10_N = mkN "bhuzikazi" C9_10 ; + bi_11_N = mkN "bi" C11_10 ; + bi_14_N = mkN "bi" C14 ; + bi_7_8_N = mkN "bi" C7_8 ; + bi_9_N = mkN "bi" C9_10 ; + biba_7_8_N = mkN "biba" C7_8 ; + bibi_5_6_N = mkN "bibi" C5_6 ; + bibithwane_7_N = mkN "bibithwane" C7_8 ; + bika_5_6_N = mkN "bika" C5_6 ; + biki_1_2_N = mkN "biki" C1_2 ; + bikibiki_11_10_N = mkN "bikibiki" C11_10 ; + biko_3_4_N = mkN "biko" C3_4 ; + bila_9_10_N = mkN "bila" C9_10 ; + bili_14_N = mkN "bili" C14 ; + bili_7_N = mkN "bili" C7_8 ; + biliboco_8_N = mkN "biliboco" C7_8 ; + bilini_8_N = mkN "bilini" C7_8 ; + biliso_7_8_N = mkN "biliso" C7_8 ; + bilo_11_10_N = mkN "bilo" C11_10 ; + bimbi_3_4_N = mkN "bimbi" C3_4 ; + binda_7_8_N = mkN "binda" C7_8 ; + bindi_7_8_N = mkN "bindi" C7_8 ; + bingelelo_7_8_N = mkN "bingelelo" C7_8 ; + bisi_11_N = mkN "bisi" C11_10 ; + bizo_11_10_N = mkN "bizo" C11_10 ; + bizo_5_6_N = mkN "bizo" C5_6 ; + bizo_9_10_N = mkN "bizo" C9_10 ; + bizo_9_6_N = mkN "bizo" C9_6 ; + bobe_11_10_N = mkN "bobe" C11_10 ; + bobo_3_4_N = mkN "bobo" C3_4 ; + boko_3_4_N = mkN "boko" C3_4 ; + bokwane_3_4_N = mkN "bokwane" C3_4 ; + bola_3_4_N = mkN "bola" C3_4 ; + bolo_11_N = mkN "bolo" C11_10 ; + bombo_3_4_N = mkN "bombo" C3_4 ; + bombo_5_6_N = mkN "bombo" C5_6 ; + bombo_9_10_N = mkN "bombo" C9_10 ; + bomu_5_6_N = mkN "bomu" C5_6 ; + bomu_7_8_N = mkN "bomu" C7_8 ; + bomvana_14_N = mkN "bomvana" C14 ; + bomvu_11_N = mkN "bomvu" C11_10 ; + bomvu_14_N = mkN "bomvu" C14 ; + bomvu_5_6_N = mkN "bomvu" C5_6 ; + bomvu_7_8_N = mkN "bomvu" C7_8 ; + bona_5_6_N = mkN "bona" C5_6 ; + bonakaliso_7_8_N = mkN "bonakaliso" C7_8 ; + bonambi_3_4_N = mkN "bonambi" C3_4 ; + bonda_11_10_N = mkN "bonda" C11_10 ; + bonda_7_8_N = mkN "bonda" C7_8 ; + bondlo_8_N = mkN "bondlo" C7_8 ; + bonelo_7_8_N = mkN "bonelo" C7_8 ; + bonga_9_10_N = mkN "bonga" C9_10 ; + bongi_1_2_N = mkN "bongi" C1_2 ; + bongi_9_10_N = mkN "bongi" C9_10 ; + bongo_7_8_N = mkN "bongo" C7_8 ; + boni_1_2_N = mkN "boni" C1_2 ; + boni_7_8_N = mkN "boni" C7_8 ; + boni_9_6_N = mkN "boni" C9_6 ; + bonisi_1_2_N = mkN "bonisi" C1_2 ; + boniso_7_8_N = mkN "boniso" C7_8 ; + bono_3_4_N = mkN "bono" C3_4 ; + bopha_9_10_N = mkN "bopha" C9_10 ; + bopho_7_8_N = mkN "bopho" C7_8 ; + boshwa_7_8_N = mkN "boshwa" C7_8 ; + bovu_11_N = mkN "bovu" C11_10 ; + boya_11_N = mkN "boya" C11_10 ; + bozane_5_6_N = mkN "bozane" C5_6 ; + bozi_7_8_N = mkN "bozi" C7_8 ; + bubulo_3_4_N = mkN "bubulo" C3_4 ; + bubulungu_7_8_N = mkN "bubulungu" C7_8 ; + buka_11_10_N = mkN "buka" C11_10 ; + buka_5_6_N = mkN "buka" C5_6 ; + bukeli_7_8_N = mkN "bukeli" C7_8 ; + bukiso_3_4_N = mkN "bukiso" C3_4 ; + buko_7_8_N = mkN "buko" C7_8 ; + bukubuku_11_N = mkN "bukubuku" C11_10 ; + bulali_1_2_N = mkN "bulali" C1_2 ; + bululu_5_6_N = mkN "bululu" C5_6 ; + bumba_5_6_N = mkN "bumba" C5_6 ; + bumba_9_N = mkN "bumba" C9_10 ; + bumbano_11_N = mkN "bumbano" C11_10 ; + bumbi_1_2_N = mkN "bumbi" C1_2 ; + bunda_5_6_N = mkN "bunda" C5_6 ; + bundu_3_4_N = mkN "bundu" C3_4 ; + bundu_9_10_N = mkN "bundu" C9_10 ; + bungu_5_6_N = mkN "bungu" C5_6 ; + bunzi_5_6_N = mkN "bunzi" C5_6 ; + busi_1_2_N = mkN "busi" C1_2 ; + busiso_7_8_N = mkN "busiso" C7_8 ; + buso_3_4_N = mkN "buso" C3_4 ; + buso_5_6_N = mkN "buso" C5_6 ; + buthano_3_4_N = mkN "buthano" C3_4 ; + buthi_1_2_N = mkN "buthi" C1_2 ; + butho_3_4_N = mkN "butho" C3_4 ; + butho_5_6_N = mkN "butho" C5_6 ; + buthu_8_N = mkN "buthu" C7_8 ; + buya_5_6_N = mkN "buya" C5_6 ; + buya_7_8_N = mkN "buya" C7_8 ; + buya_9_10_N = mkN "buya" C9_10 ; + buzi_1_2_N = mkN "buzi" C1_2 ; + buzi_5_6_N = mkN "buzi" C5_6 ; + buzo_3_4_N = mkN "buzo" C3_4 ; + caba_3_4_N = mkN "caba" C3_4 ; + caba_7_8_N = mkN "caba" C7_8 ; + cabanga_11_N = mkN "cabanga" C11_10 ; + cabango_11_N = mkN "cabango" C11_10 ; + cabango_3_4_N = mkN "cabango" C3_4 ; + cabha_7_8_N = mkN "cabha" C7_8 ; + caca_11_N = mkN "caca" C11_10 ; + caca_5_6_N = mkN "caca" C5_6 ; + cacamezelo_3_4_N = mkN "cacamezelo" C3_4 ; + cako_3_4_N = mkN "cako" C3_4 ; + cala_5_6_N = mkN "cala" C5_6 ; + camelo_3_4_N = mkN "camelo" C3_4 ; + camu_9_10_N = mkN "camu" C9_10 ; + cansi_11_N = mkN "cansi" C11_10 ; + cansi_5_6_N = mkN "cansi" C5_6 ; + casha_5_6_N = mkN "casha" C5_6 ; + cathu_3_4_N = mkN "cathu" C3_4 ; + cathulo_7_8_N = mkN "cathulo" C7_8 ; + cayi_14_N = mkN "cayi" C14 ; + cebe_11_N = mkN "cebe" C11_10 ; + cebi_7_8_N = mkN "cebi" C7_8 ; + cebo_3_4_N = mkN "cebo" C3_4 ; + cebo_5_6_N = mkN "cebo" C5_6 ; + cece_5_6_N = mkN "cece" C5_6 ; + cefe_7_8_N = mkN "cefe" C7_8 ; + ceke_7_8_N = mkN "ceke" C7_8 ; + cele_5_6_N = mkN "cele" C5_6 ; + celo_7_8_N = mkN "celo" C7_8 ; + celu_9_10_N = mkN "celu" C9_10 ; + cengece_11_10_N = mkN "cengece" C11_10 ; + cengezi_3_4_N = mkN "cengezi" C3_4 ; + cephu_7_8_N = mkN "cephu" C7_8 ; + cezu_11_10_N = mkN "cezu" C11_10 ; + cezwana_5_6_N = mkN "cezwana" C5_6 ; + cha_11_N = mkN "cha" C11_10 ; + chachazo_3_4_N = mkN "chachazo" C3_4 ; + chaka_7_8_N = mkN "chaka" C7_8 ; + chakide_5_6_N = mkN "chakide" C5_6 ; + chalaha_5_6_N = mkN "chalaha" C5_6 ; + chamo_3_4_N = mkN "chamo" C3_4 ; + changuzo_3_4_N = mkN "changuzo" C3_4 ; + chaphazelo_5_6_N = mkN "chaphazelo" C5_6 ; + chaphazi_5_6_N = mkN "chaphazi" C5_6 ; + chasiselo_7_8_N = mkN "chasiselo" C7_8 ; + chasiso_7_8_N = mkN "chasiso" C7_8 ; + chazelo_9_10_N = mkN "chazelo" C9_10 ; + cheme_7_8_N = mkN "cheme" C7_8 ; + chenene_7_8_N = mkN "chenene" C7_8 ; + chengela_9_10_N = mkN "chengela" C9_10 ; + chi_5_6_N = mkN "chi" C5_6 ; + chibi_5_6_N = mkN "chibi" C5_6 ; + chibi_7_8_N = mkN "chibi" C7_8 ; + chide_5_6_N = mkN "chide" C5_6 ; + chilo_3_4_N = mkN "chilo" C3_4 ; + chilo_5_6_N = mkN "chilo" C5_6 ; + chitha_5_6_N = mkN "chitha" C5_6 ; + chitho_7_8_N = mkN "chitho" C7_8 ; + choba_5_6_N = mkN "choba" C5_6 ; + choko_11_N = mkN "choko" C11_10 ; + cholo_7_8_N = mkN "cholo" C7_8 ; + chopho_14_N = mkN "chopho" C14 ; + chopho_5_6_N = mkN "chopho" C5_6 ; + chuku_11_N = mkN "chuku" C11_10 ; + chungechunge_11_N = mkN "chungechunge" C11_10 ; + chuse_7_8_N = mkN "chuse" C7_8 ; + chushela_11_10_N = mkN "chushela" C11_10 ; + chushela_9_10_N = mkN "chushela" C9_10 ; + chwane_5_6_N = mkN "chwane" C5_6 ; + chwe_7_8_N = mkN "chwe" C7_8 ; + chwensi_7_8_N = mkN "chwensi" C7_8 ; + chwepheshe_14_N = mkN "chwepheshe" C14 ; + ci_7_8_N = mkN "ci" C7_8 ; + cibilindi_3_4_N = mkN "cibilindi" C3_4 ; + cibisholo_3_4_N = mkN "cibisholo" C3_4 ; + cibo_5_6_N = mkN "cibo" C5_6 ; + cici_5_6_N = mkN "cici" C5_6 ; + ciki_9_10_N = mkN "ciki" C9_10 ; + cikinciki_9_10_N = mkN "cikinciki" C9_10 ; + ciko_14_N = mkN "ciko" C14 ; + ciko_5_6_N = mkN "ciko" C5_6 ; + cilongo_5_6_N = mkN "cilongo" C5_6 ; + cimbi_3_4_N = mkN "cimbi" C3_4 ; + cime_5_6_N = mkN "cime" C5_6 ; + cindezeli_1_2_N = mkN "cindezeli" C1_2 ; + cingo_11_10_N = mkN "cingo" C11_10 ; + cipho_9_10_N = mkN "cipho" C9_10 ; + cishe_5_6_N = mkN "cishe" C5_6 ; + cobangcoba_9_10_N = mkN "cobangcoba" C9_10 ; + coco_7_8_N = mkN "coco" C7_8 ; + combo_3_4_N = mkN "combo" C3_4 ; + condo_3_4_N = mkN "condo" C3_4 ; + congco_9_10_N = mkN "congco" C9_10 ; + consi_5_6_N = mkN "consi" C5_6 ; + cosana_9_10_N = mkN "cosana" C9_10 ; + cosi_9_10_N = mkN "cosi" C9_10 ; + cozana_9_10_N = mkN "cozana" C9_10 ; + cozi_9_10_N = mkN "cozi" C9_10 ; + cu_11_N = mkN "cu" C11_10 ; + cu_3_4_N = mkN "cu" C3_4 ; + cuba_5_6_N = mkN "cuba" C5_6 ; + cubu_7_8_N = mkN "cubu" C7_8 ; + cucu_7_8_N = mkN "cucu" C7_8 ; + culi_1_2_N = mkN "culi" C1_2 ; + culo_3_N = mkN "culo" C3_4 ; + culo_5_6_N = mkN "culo" C5_6 ; + cupho_7_8_N = mkN "cupho" C7_8 ; + cwaningi_1_2_N = mkN "cwaningi" C1_2 ; + cwaningo_11_N = mkN "cwaningo" C11_10 ; + cwatha_11_N = mkN "cwatha" C11_10 ; + cwazicwazi_14_N = mkN "cwazicwazi" C14 ; + cwebe_11_10_N = mkN "cwebe" C11_10 ; + cwebecwebe_14_N = mkN "cwebecwebe" C14 ; + cwecwe_11_10_N = mkN "cwecwe" C11_10 ; + cwibi_14_N = mkN "cwibi" C14 ; + cwicwicwi_7_8_N = mkN "cwicwicwi" C7_8 ; + daba_11_10_N = mkN "daba" C11_10 ; + daba_9_10_N = mkN "daba" C9_10 ; + dabe_11_N = mkN "dabe" C11_10 ; + dabu_3_N = mkN "dabu" C3_4 ; + dabuko_9_N = mkN "dabuko" C9_10 ; + dada_3_4_N = mkN "dada" C3_4 ; + dada_5_6_N = mkN "dada" C5_6 ; + dadada_7_8_N = mkN "dadada" C7_8 ; + dadawe_11_10_N = mkN "dadawe" C11_10 ; + daka_11_10_N = mkN "daka" C11_10 ; + daka_3_4_N = mkN "daka" C3_4 ; + daka_7_8_N = mkN "daka" C7_8 ; + dakwa_7_8_N = mkN "dakwa" C7_8 ; + dala_14_N = mkN "dala" C14 ; + dala_5_6_N = mkN "dala" C5_6 ; + dala_7_N = mkN "dala" C7_8 ; + dali_3_N = mkN "dali" C3_4 ; + dali_9_10_N = mkN "dali" C9_10 ; + dalo_9_N = mkN "dalo" C9_10 ; + dalwa_7_8_N = mkN "dalwa" C7_8 ; + damu_5_6_N = mkN "damu" C5_6 ; + dandatho_9_10_N = mkN "dandatho" C9_10 ; + dangala_9_10_N = mkN "dangala" C9_10 ; + danso_3_4_N = mkN "danso" C3_4 ; + dati_3_4_N = mkN "dati" C3_4 ; + datsha_9_10_N = mkN "datsha" C9_10 ; + dayimane_5_6_N = mkN "dayimane" C5_6 ; + dayisi_1_2_N = mkN "dayisi" C1_2 ; + de_14_N = mkN "de" C14 ; + debe_11_10_N = mkN "debe" C11_10 ; + debe_9_10_N = mkN "debe" C9_10 ; + debele_7_8_N = mkN "debele" C7_8 ; + dede_5_6_N = mkN "dede" C5_6 ; + dedengu_14_N = mkN "dedengu" C14 ; + dekazi_9_10_N = mkN "dekazi" C9_10 ; + deku_7_8_N = mkN "deku" C7_8 ; + dela_5_6_N = mkN "dela" C5_6 ; + dela_6_N = mkN "dela" C5_6 ; + dela_9_10_N = mkN "dela" C9_10 ; + dele_5_6_N = mkN "dele" C5_6 ; + delelo_9_10_N = mkN "delelo" C9_10 ; + denda_11_10_N = mkN "denda" C11_10 ; + dengezi_11_10_N = mkN "dengezi" C11_10 ; + desiki_5_6_N = mkN "desiki" C5_6 ; + devu_5_6_N = mkN "devu" C5_6 ; + dibi_3_4_N = mkN "dibi" C3_4 ; + dibilishi_9_10_N = mkN "dibilishi" C9_10 ; + dida_9_10_N = mkN "dida" C9_10 ; + didi_11_N = mkN "didi" C11_10 ; + dididi_14_N = mkN "dididi" C14 ; + dididi_7_8_N = mkN "dididi" C7_8 ; + didiyeli_1_2_N = mkN "didiyeli" C1_2 ; + dikadika_7_8_N = mkN "dikadika" C7_8 ; + dikimba_9_N = mkN "dikimba" C9_10 ; + dikimba_9_10_N = mkN "dikimba" C9_10 ; + dikiselo_7_8_N = mkN "dikiselo" C7_8 ; + dikoni_5_6_N = mkN "dikoni" C5_6 ; + dili_5_6_N = mkN "dili" C5_6 ; + dilinga_9_10_N = mkN "dilinga" C9_10 ; + dina_5_6_N = mkN "dina" C5_6 ; + dina_7_8_N = mkN "dina" C7_8 ; + dinanja_3_4_N = mkN "dinanja" C3_4 ; + dinda_5_6_N = mkN "dinda" C5_6 ; + dindi_7_8_N = mkN "dindi" C7_8 ; + dingilizi_7_8_N = mkN "dingilizi" C7_8 ; + dingilizi_9_10_N = mkN "dingilizi" C9_10 ; + dingo_7_8_N = mkN "dingo" C7_8 ; + dingongqangi_7_8_N = mkN "dingongqangi" C7_8 ; + dini_11_10_N = mkN "dini" C11_10 ; + dini_3_4_N = mkN "dini" C3_4 ; + dinsi_5_6_N = mkN "dinsi" C5_6 ; + diphi_5_6_N = mkN "diphi" C5_6 ; + dishi_9_10_N = mkN "dishi" C9_10 ; + diva_9_10_N = mkN "diva" C9_10 ; + dixa_5_6_N = mkN "dixa" C5_6 ; + dla_14_N = mkN "dla" C14 ; + dla_7_8_N = mkN "dla" C7_8 ; + dladla_5_6_N = mkN "dladla" C5_6 ; + dladla_7_8_N = mkN "dladla" C7_8 ; + dlakadla_7_8_N = mkN "dlakadla" C7_8 ; + dlakadlaka_5_6_N = mkN "dlakadlaka" C5_6 ; + dlala_5_6_N = mkN "dlala" C5_6 ; + dlali_1_2_N = mkN "dlali" C1_2 ; + dlalifa_9_10_N = mkN "dlalifa" C9_10 ; + dlalo_3_4_N = mkN "dlalo" C3_4 ; + dlambedlu_11_10_N = mkN "dlambedlu" C11_10 ; + dlame_11_10_N = mkN "dlame" C11_10 ; + dlamini_9_10_N = mkN "dlamini" C9_10 ; + dlamu_9_10_N = mkN "dlamu" C9_10 ; + dlandla_3_4_N = mkN "dlandla" C3_4 ; + dlanga_5_6_N = mkN "dlanga" C5_6 ; + dlangala_5_6_N = mkN "dlangala" C5_6 ; + dlangudlangu_7_8_N = mkN "dlangudlangu" C7_8 ; + dlanzi_5_6_N = mkN "dlanzi" C5_6 ; + dlavuza_3_4_N = mkN "dlavuza" C3_4 ; + dlawu_11_10_N = mkN "dlawu" C11_10 ; + dlebe_11_N = mkN "dlebe" C11_10 ; + dlebe_3_4_N = mkN "dlebe" C3_4 ; + dlebe_5_6_N = mkN "dlebe" C5_6 ; + dlebe_9_10_N = mkN "dlebe" C9_10 ; + dledle_11_10_N = mkN "dledle" C11_10 ; + dleke_7_8_N = mkN "dleke" C7_8 ; + dlekedle_3_4_N = mkN "dlekedle" C3_4 ; + dleko_9_10_N = mkN "dleko" C9_10 ; + dlela_3_4_N = mkN "dlela" C3_4 ; + dlela_9_10_N = mkN "dlela" C9_10 ; + dlelo_5_6_N = mkN "dlelo" C5_6 ; + dlelwane_14_N = mkN "dlelwane" C14 ; + dlelwano_14_N = mkN "dlelwano" C14 ; + dlengelele_11_10_N = mkN "dlengelele" C11_10 ; + dlezane_1_2_N = mkN "dlezane" C1_2 ; + dlezane_3_4_N = mkN "dlezane" C3_4 ; + dli_11_N = mkN "dli" C11_10 ; + dli_1_2_N = mkN "dli" C1_2 ; + dli_7_8_N = mkN "dli" C7_8 ; + dlikidliki_5_6_N = mkN "dlikidliki" C5_6 ; + dlikidliki_9_10_N = mkN "dlikidliki" C9_10 ; + dlingozi_5_6_N = mkN "dlingozi" C5_6 ; + dlinza_5_6_N = mkN "dlinza" C5_6 ; + dlinzo_3_4_N = mkN "dlinzo" C3_4 ; + dliso_5_6_N = mkN "dliso" C5_6 ; + dliwa_1_2_N = mkN "dliwa" C1_2 ; + dliwa_5_6_N = mkN "dliwa" C5_6 ; + dlo_7_8_N = mkN "dlo" C7_8 ; + dlodlo_7_8_N = mkN "dlodlo" C7_8 ; + dlodlombiya_5_6_N = mkN "dlodlombiya" C5_6 ; + dlokwe_5_6_N = mkN "dlokwe" C5_6 ; + dlolo_11_10_N = mkN "dlolo" C11_10 ; + dlondlo_9_10_N = mkN "dlondlo" C9_10 ; + dlova_14_N = mkN "dlova" C14 ; + dlovu_3_4_N = mkN "dlovu" C3_4 ; + dlovu_9_10_N = mkN "dlovu" C9_10 ; + dlovukazi_9_10_N = mkN "dlovukazi" C9_10 ; + dlovuyangena_9_N = mkN "dlovuyangena" C9_10 ; + dlozi_5_6_N = mkN "dlozi" C5_6 ; + dlubu_11_10_N = mkN "dlubu" C11_10 ; + dlula_5_6_N = mkN "dlula" C5_6 ; + dlunkulu_3_4_N = mkN "dlunkulu" C3_4 ; + dluthudluthu_14_N = mkN "dluthudluthu" C14 ; + dluzele_9_10_N = mkN "dluzele" C9_10 ; + dlwangudlwangu_14_N = mkN "dlwangudlwangu" C14 ; + doda_14_N = mkN "doda" C14 ; + doda_9_6_N = mkN "doda" C9_6 ; + dodakazi_9_6_N = mkN "dodakazi" C9_6 ; + dodana_9_6_N = mkN "dodana" C9_6 ; + dojeyana_9_6_N = mkN "dojeyana" C9_6 ; + dokotela_14_N = mkN "dokotela" C14 ; + dokwe_3_N = mkN "dokwe" C3_4 ; + dokwe_5_N = mkN "dokwe" C5_6 ; + dolo_5_6_N = mkN "dolo" C5_6 ; + doloba_5_6_N = mkN "doloba" C5_6 ; + dolobha_5_6_N = mkN "dolobha" C5_6 ; + dololwane_9_10_N = mkN "dololwane" C9_10 ; + dombolo_5_6_N = mkN "dombolo" C5_6 ; + domu_7_8_N = mkN "domu" C7_8 ; + donda_11_10_N = mkN "donda" C11_10 ; + dondo_9_10_N = mkN "dondo" C9_10 ; + dondolo_11_10_N = mkN "dondolo" C11_10 ; + dondoshiya_3_4_N = mkN "dondoshiya" C3_4 ; + donga_11_10_N = mkN "donga" C11_10 ; + dongwe_11_N = mkN "dongwe" C11_10 ; + doni_9_10_N = mkN "doni" C9_10 ; + donsa_7_8_N = mkN "donsa" C7_8 ; + donsa_9_N = mkN "donsa" C9_10 ; + dosha_5_6_N = mkN "dosha" C5_6 ; + dosi_11_10_N = mkN "dosi" C11_10 ; + du_11_N = mkN "du" C11_10 ; + dube_5_6_N = mkN "dube" C5_6 ; + dubo_3_4_N = mkN "dubo" C3_4 ; + dubu_3_4_N = mkN "dubu" C3_4 ; + dude_11_10_N = mkN "dude" C11_10 ; + dudu_5_6_N = mkN "dudu" C5_6 ; + duduzi_1_2_N = mkN "duduzi" C1_2 ; + duduzo_9_10_N = mkN "duduzo" C9_10 ; + duka_5_6_N = mkN "duka" C5_6 ; + duku_11_10_N = mkN "duku" C11_10 ; + duku_5_6_N = mkN "duku" C5_6 ; + duku_9_10_N = mkN "duku" C9_10 ; + duli_7_8_N = mkN "duli" C7_8 ; + duma_11_10_N = mkN "duma" C11_10 ; + duma_5_6_N = mkN "duma" C5_6 ; + duma_7_8_N = mkN "duma" C7_8 ; + duma_9_N = mkN "duma" C9_10 ; + dumalo_9_10_N = mkN "dumalo" C9_10 ; + dumba_11_N = mkN "dumba" C11_10 ; + dumbe_5_6_N = mkN "dumbe" C5_6 ; + dumbe_7_8_N = mkN "dumbe" C7_8 ; + dumbi_7_8_N = mkN "dumbi" C7_8 ; + dumbini_7_N = mkN "dumbini" C7_8 ; + dumbu_5_6_N = mkN "dumbu" C5_6 ; + dumbu_7_8_N = mkN "dumbu" C7_8 ; + dumbu_9_10_N = mkN "dumbu" C9_10 ; + dumela_5_6_N = mkN "dumela" C5_6 ; + dumezulu_9_10_N = mkN "dumezulu" C9_10 ; + dumo_11_10_N = mkN "dumo" C11_10 ; + dumo_7_8_N = mkN "dumo" C7_8 ; + dumo_9_10_N = mkN "dumo" C9_10 ; + duna_5_6_N = mkN "duna" C5_6 ; + duna_9_10_N = mkN "duna" C9_10 ; + dundu_5_6_N = mkN "dundu" C5_6 ; + dunduma_9_10_N = mkN "dunduma" C9_10 ; + duze_14_N = mkN "duze" C14 ; + duze_3_4_N = mkN "duze" C3_4 ; + duze_5_6_N = mkN "duze" C5_6 ; + dwa_3_4_N = mkN "dwa" C3_4 ; + dwa_7_N = mkN "dwa" C7_8 ; + dwa_9_10_N = mkN "dwa" C9_10 ; + dwaba_7_8_N = mkN "dwaba" C7_8 ; + dwadwa_11_10_N = mkN "dwadwa" C11_10 ; + dwala_11_N = mkN "dwala" C11_10 ; + dwala_5_6_N = mkN "dwala" C5_6 ; + dwangu_9_10_N = mkN "dwangu" C9_10 ; + dwangubane_5_6_N = mkN "dwangubane" C5_6 ; + dwani_11_10_N = mkN "dwani" C11_10 ; + dwedwe_7_8_N = mkN "dwedwe" C7_8 ; + dwele_9_10_N = mkN "dwele" C9_10 ; + dwendwe_11_10_N = mkN "dwendwe" C11_10 ; + dweshu_11_10_N = mkN "dweshu" C11_10 ; + dweshu_5_6_N = mkN "dweshu" C5_6 ; + dwi_5_6_N = mkN "dwi" C5_6 ; + ebheru_7_8_N = mkN "ebheru" C7_8 ; + ebuzo_3_4_N = mkN "ebuzo" C3_4 ; + ehlakalo_7_8_N = mkN "ehlakalo" C7_8 ; + ehlo_3_N = mkN "ehlo" C3_4 ; + ehlo_7_8_N = mkN "ehlo" C7_8 ; + ehlukaniso_7_8_N = mkN "ehlukaniso" C7_8 ; + ehluko_3_4_N = mkN "ehluko" C3_4 ; + ehova_11_N = mkN "ehova" C11_10 ; + elamani_8_N = mkN "elamani" C7_8 ; + elegu_7_8_N = mkN "elegu" C7_8 ; + elelesi_7_8_N = mkN "elelesi" C7_8 ; + eluleko_7_8_N = mkN "eluleko" C7_8 ; + embatho_7_8_N = mkN "embatho" C7_8 ; + enabelo_7_8_N = mkN "enabelo" C7_8 ; + endo_3_4_N = mkN "endo" C3_4 ; + enge_11_N = mkN "enge" C11_10 ; + engulo_3_N = mkN "engulo" C3_4 ; + eno_3_4_N = mkN "eno" C3_4 ; + enziwa_1_2_N = mkN "enziwa" C1_2 ; + enzo_7_8_N = mkN "enzo" C7_8 ; + esheli_7_8_N = mkN "esheli" C7_8 ; + esu_11_N = mkN "esu" C11_10 ; + ethembiso_7_8_N = mkN "ethembiso" C7_8 ; + ethulo_7_8_N = mkN "ethulo" C7_8 ; + evatho_7_8_N = mkN "evatho" C7_8 ; + exwayiso_7_8_N = mkN "exwayiso" C7_8 ; + fa_11_10_N = mkN "fa" C11_10 ; + fa_5_6_N = mkN "fa" C5_6 ; + fa_9_10_N = mkN "fa" C9_10 ; + fa_9_6_N = mkN "fa" C9_6 ; + faduko_9_10_N = mkN "faduko" C9_10 ; + fahlasi_11_10_N = mkN "fahlasi" C11_10 ; + fakazi_14_N = mkN "fakazi" C14 ; + falakahla_5_6_N = mkN "falakahla" C5_6 ; + fama_9_10_N = mkN "fama" C9_10 ; + famona_7_8_N = mkN "famona" C7_8 ; + famu_5_6_N = mkN "famu" C5_6 ; + fana_14_N = mkN "fana" C14 ; + fana_1_2_N = mkN "fana" C1_2 ; + fanekiso_3_4_N = mkN "fanekiso" C3_4 ; + fanekiso_7_8_N = mkN "fanekiso" C7_8 ; + fanelo_9_10_N = mkN "fanelo" C9_10 ; + faniso_7_8_N = mkN "faniso" C7_8 ; + fantu_11_10_N = mkN "fantu" C11_10 ; + fantu_3_4_N = mkN "fantu" C3_4 ; + fanyana_1_2_N = mkN "fanyana" C1_2 ; + fasimba_11_N = mkN "fasimba" C11_10 ; + fasimbe_11_N = mkN "fasimbe" C11_10 ; + fasitela_5_6_N = mkN "fasitela" C5_6 ; + fasitele_5_6_N = mkN "fasitele" C5_6 ; + fayili_5_6_N = mkELocN "fayili" C5_6 ; + fazana_7_N = mkN "fazana" C7_8 ; + fazane_7_N = mkN "fazane" C7_8 ; + fazi_1_2_N = mkN "fazi" C1_2 ; + fe_7_8_N = mkN "fe" C7_8 ; + fe_9_N = mkN "fe" C9_10 ; + fekethiso_7_8_N = mkN "fekethiso" C7_8 ; + felandawonye_3_4_N = mkN "felandawonye" C3_4 ; + felokazi_1_2_N = mkN "felokazi" C1_2 ; + felwa_1_2_N = mkN "felwa" C1_2 ; + felwakazi_1_2_N = mkN "felwakazi" C1_2 ; + fene_9_10_N = mkN "fene" C9_10 ; + fengqo_7_8_N = mkN "fengqo" C7_8 ; + fezela_5_6_N = mkN "fezela" C5_6 ; + fezi_9_10_N = mkN "fezi" C9_10 ; + fi_1_2_N = mkN "fi" C1_2 ; + fibinga_9_10_N = mkN "fibinga" C9_10 ; + fica_7_8_N = mkN "fica" C7_8 ; + fico_7_8_N = mkN "fico" C7_8 ; + fihlakalo_9_10_N = mkN "fihlakalo" C9_10 ; + fihlo_9_10_N = mkN "fihlo" C9_10 ; + fika_9_10_N = mkN "fika" C9_10 ; + fiki_7_8_N = mkN "fiki" C7_8 ; + findo_11_10_N = mkN "findo" C11_10 ; + findo_5_6_N = mkN "findo" C5_6 ; + fino_3_4_N = mkN "fino" C3_4 ; + finyezo_7_8_N = mkN "finyezo" C7_8 ; + finyila_6_N = mkN "finyila" C5_6 ; + fipha_11_10_N = mkN "fipha" C11_10 ; + fipha_5_6_N = mkN "fipha" C5_6 ; + fiso_7_8_N = mkN "fiso" C7_8 ; + fithi_9_10_N = mkN "fithi" C9_10 ; + fiva_9_10_N = mkN "fiva" C9_10 ; + fo_1_2_N = mkN "fo" C1_2 ; + fo_7_8_N = mkN "fo" C7_8 ; + fociya_7_8_N = mkN "fociya" C7_8 ; + fohlo_11_10_N = mkN "fohlo" C11_10 ; + fohlofohlo_9_10_N = mkN "fohlofohlo" C9_10 ; + fokazana_1_2_N = mkN "fokazana" C1_2 ; + fokazi_1_2_N = mkN "fokazi" C1_2 ; + fokozi_5_6_N = mkN "fokozi" C5_6 ; + fologo_9_10_N = mkN "fologo" C9_10 ; + foloko_9_N = mkN "foloko" C9_10 ; + foloko_9_10_N = mkN "foloko" C9_10 ; + folozi_9_10_N = mkN "folozi" C9_10 ; + fomu_5_6_N = mkN "fomu" C5_6 ; + foni_5_6_N = mkN "foni" C5_6 ; + fonyo_7_8_N = mkN "fonyo" C7_8 ; + fosholo_5_6_N = mkN "fosholo" C5_6 ; + fosi_5_6_N = mkN "fosi" C5_6 ; + fothomfotho_9_10_N = mkN "fothomfotho" C9_10 ; + fothongo_7_8_N = mkN "fothongo" C7_8 ; + fowabo_1_2_N = mkN "fowabo" C1_2 ; + fowenu_1_2_N = mkN "fowenu" C1_2 ; + fowethu_1_2_N = mkN "fowethu" C1_2 ; + frika_5_N = mkN "frika" C5_6 ; + fu_11_10_N = mkN "fu" C11_10 ; + fu_5_6_N = mkN "fu" C5_6 ; + fu_7_8_N = mkN "fu" C7_8 ; + fuba_7_8_N = mkN "fuba" C7_8 ; + fucumfucu_9_10_N = mkN "fucumfucu" C9_10 ; + fucuza_9_10_N = mkN "fucuza" C9_10 ; + fudu_11_10_N = mkN "fudu" C11_10 ; + fudumezi_7_8_N = mkN "fudumezi" C7_8 ; + fuku_5_6_N = mkN "fuku" C5_6 ; + fula_3_4_N = mkN "fula" C3_4 ; + fulaha_5_6_N = mkN "fulaha" C5_6 ; + fuma_3_4_N = mkN "fuma" C3_4 ; + fumba_9_10_N = mkN "fumba" C9_10 ; + fumbe_9_10_N = mkN "fumbe" C9_10 ; + fumuka_5_6_N = mkN "fumuka" C5_6 ; + funda_3_4_N = mkN "funda" C3_4 ; + funda_7_8_N = mkN "funda" C7_8 ; + funda_9_10_N = mkN "funda" C9_10 ; + fundazwe_7_8_N = mkN "fundazwe" C7_8 ; + fundeni_3_N = mkN "fundeni" C3_4 ; + fundi_1_2_N = mkN "fundi" C1_2 ; + fundisi_14_N = mkN "fundisi" C14 ; + fundisi_1_2_N = mkN "fundisi" C1_2 ; + fundiso_9_10_N = mkN "fundiso" C9_10 ; + fundiswa_7_8_N = mkN "fundiswa" C7_8 ; + fundo_7_8_N = mkN "fundo" C7_8 ; + fundo_9_N = mkN "fundo" C9_10 ; + fungo_7_8_N = mkN "fungo" C7_8 ; + funo_10_N = mkN "funo" C9_10 ; + funzi_1_2_N = mkN "funzi" C1_2 ; + fuphi_5_6_N = mkN "fuphi" C5_6 ; + fuqulu_3_4_N = mkN "fuqulu" C3_4 ; + fusi_3_4_N = mkN "fusi" C3_4 ; + fusi_5_6_N = mkN "fusi" C5_6 ; + fusi_9_10_N = mkN "fusi" C9_10 ; + futha_11_N = mkN "futha" C11_10 ; + futha_6_N = mkN "futha" C5_6 ; + futho_11_N = mkN "futho" C11_10 ; + futho_3_4_N = mkN "futho" C3_4 ; + futho_9_10_N = mkN "futho" C9_10 ; + fuyo_9_10_N = mkN "fuyo" C9_10 ; + fuzo_11_10_N = mkN "fuzo" C11_10 ; + ga_3_4_N = mkN "ga" C3_4 ; + ga_7_8_N = mkN "ga" C7_8 ; + gaba_11_N = mkN "gaba" C11_10 ; + gaba_5_6_N = mkN "gaba" C5_6 ; + gaba_7_8_N = mkN "gaba" C7_8 ; + gaba_9_10_N = mkN "gaba" C9_10 ; + gabade_5_6_N = mkN "gabade" C5_6 ; + gabaza_5_6_N = mkN "gabaza" C5_6 ; + gabe_5_6_N = mkN "gabe" C5_6 ; + gabe_7_8_N = mkN "gabe" C7_8 ; + gabha_5_6_N = mkN "gabha" C5_6 ; + gada_11_10_N = mkN "gada" C11_10 ; + gada_9_10_N = mkN "gada" C9_10 ; + gade_5_6_N = mkN "gade" C5_6 ; + gadi_9_10_N = mkN "gadi" C9_10 ; + gadla_9_10_N = mkN "gadla" C9_10 ; + gadu_5_6_N = mkN "gadu" C5_6 ; + gaga_11_10_N = mkN "gaga" C11_10 ; + gaga_5_6_N = mkN "gaga" C5_6 ; + gaga_9_10_N = mkN "gaga" C9_10 ; + gagamela_9_10_N = mkN "gagamela" C9_10 ; + gagasi_5_6_N = mkN "gagasi" C5_6 ; + gage_11_10_N = mkN "gage" C11_10 ; + gagu_11_N = mkN "gagu" C11_10 ; + gagu_5_6_N = mkN "gagu" C5_6 ; + gagu_9_10_N = mkN "gagu" C9_10 ; + galaji_5_6_N = mkELocN "galaji" C5_6 ; + galelo_5_6_N = mkN "galelo" C5_6 ; + galo_11_10_N = mkN "galo" C11_10 ; + galo_9_10_N = mkN "galo" C9_10 ; + gama_5_6_N = mkN "gama" C5_6 ; + gamanxa_5_6_N = mkN "gamanxa" C5_6 ; + gameko_7_8_N = mkN "gameko" C7_8 ; + gamu_3_4_N = mkN "gamu" C3_4 ; + gamu_5_6_N = mkN "gamu" C5_6 ; + gamu_7_8_N = mkN "gamu" C7_8 ; + gamu_9_10_N = mkN "gamu" C9_10 ; + ganga_11_N = mkN "ganga" C11_10 ; + ganga_5_6_N = mkN "ganga" C5_6 ; + ganga_7_8_N = mkN "ganga" C7_8 ; + gange_11_N = mkN "gange" C11_10 ; + gangi_7_8_N = mkN "gangi" C7_8 ; + ganu_5_6_N = mkN "ganu" C5_6 ; + ganxa_5_6_N = mkN "ganxa" C5_6 ; + gaqa_11_10_N = mkN "gaqa" C11_10 ; + gaqa_5_6_N = mkN "gaqa" C5_6 ; + gatsha_5_6_N = mkN "gatsha" C5_6 ; + gatsha_9_10_N = mkN "gatsha" C9_10 ; + gawu_11_10_N = mkN "gawu" C11_10 ; + gaxa_7_8_N = mkN "gaxa" C7_8 ; + gazethi_5_6_N = mkN "gazethi" C5_6 ; + gazi_11_N = mkN "gazi" C11_10 ; + gazi_5_6_N = mkN "gazi" C5_6 ; + gazi_9_10_N = mkN "gazi" C9_10 ; + gcagco_3_4_N = mkN "gcagco" C3_4 ; + gcaki_5_6_N = mkN "gcaki" C5_6 ; + gcaki_7_8_N = mkN "gcaki" C7_8 ; + gcawu_7_8_N = mkN "gcawu" C7_8 ; + gceba_9_10_N = mkN "gceba" C9_10 ; + gceka_5_6_N = mkN "gceka" C5_6 ; + gceke_5_6_N = mkN "gceke" C5_6 ; + gcifiza_7_8_N = mkN "gcifiza" C7_8 ; + gcina_9_10_N = mkN "gcina" C9_10 ; + gcinisikhwama_1_2_N = mkN "gcinisikhwama" C1_2 ; + gcino_7_8_N = mkN "gcino" C7_8 ; + gciwane_5_6_N = mkN "gciwane" C5_6 ; + gcobo_5_6_N = mkN "gcobo" C5_6 ; + gcogcoma_5_6_N = mkN "gcogcoma" C5_6 ; + gcosana_9_10_N = mkN "gcosana" C9_10 ; + gcotshwa_1_2_N = mkN "gcotshwa" C1_2 ; + gcwagcwa_7_N = mkN "gcwagcwa" C7_8 ; + gcwelegcwele_14_N = mkN "gcwelegcwele" C14 ; + gcwelegcwele_7_8_N = mkN "gcwelegcwele" C7_8 ; + ge_5_6_N = mkN "ge" C5_6 ; + gebe_11_10_N = mkN "gebe" C11_10 ; + gebe_5_6_N = mkN "gebe" C5_6 ; + gebe_9_10_N = mkN "gebe" C9_10 ; + gebedu_11_10_N = mkN "gebedu" C11_10 ; + gebengu_14_N = mkN "gebengu" C14 ; + gebengu_7_8_N = mkN "gebengu" C7_8 ; + gebhe_9_N = mkN "gebhe" C9_10 ; + gebhezi_11_10_N = mkN "gebhezi" C11_10 ; + gece_7_8_N = mkN "gece" C7_8 ; + gede_3_4_N = mkN "gede" C3_4 ; + gede_7_8_N = mkN "gede" C7_8 ; + gede_9_10_N = mkN "gede" C9_10 ; + gedla_11_10_N = mkN "gedla" C11_10 ; + gedle_11_10_N = mkN "gedle" C11_10 ; + gedlela_5_6_N = mkN "gedlela" C5_6 ; + gege_7_8_N = mkN "gege" C7_8 ; + geja_5_6_N = mkN "geja" C5_6 ; + gejane_7_8_N = mkN "gejane" C7_8 ; + gekle_5_6_N = mkN "gekle" C5_6 ; + gele_9_10_N = mkN "gele" C9_10 ; + gelegele_11_10_N = mkN "gelegele" C11_10 ; + gelekeqe_11_10_N = mkN "gelekeqe" C11_10 ; + gelekeqe_7_8_N = mkN "gelekeqe" C7_8 ; + gemegeme_7_8_N = mkN "gemegeme" C7_8 ; + gengelezi_9_10_N = mkN "gengelezi" C9_10 ; + gengi_1_2_N = mkN "gengi" C1_2 ; + genqe_5_6_N = mkN "genqe" C5_6 ; + geqe_9_10_N = mkN "geqe" C9_10 ; + geqele_5_6_N = mkN "geqele" C5_6 ; + gesi_5_6_N = mkN "gesi" C5_6 ; + gevu_9_10_N = mkN "gevu" C9_10 ; + gexo_3_4_N = mkN "gexo" C3_4 ; + geza_5_6_N = mkN "geza" C5_6 ; + geza_9_10_N = mkN "geza" C9_10 ; + geze_5_6_N = mkN "geze" C5_6 ; + gezi_1_2_N = mkN "gezi" C1_2 ; + gi_7_8_N = mkN "gi" C7_8 ; + gibe_11_10_N = mkN "gibe" C11_10 ; + gibe_3_4_N = mkN "gibe" C3_4 ; + gibe_9_10_N = mkN "gibe" C9_10 ; + gibeli_1_2_N = mkN "gibeli" C1_2 ; + gide_11_10_N = mkN "gide" C11_10 ; + gidi_1_2_N = mkN "gidi" C1_2 ; + gidi_3_4_N = mkN "gidi" C3_4 ; + gidi_7_8_N = mkN "gidi" C7_8 ; + gidi_9_10_N = mkN "gidi" C9_10 ; + gidigidi_5_6_N = mkN "gidigidi" C5_6 ; + gidigidi_7_8_N = mkN "gidigidi" C7_8 ; + gidigidi_8_N = mkN "gidigidi" C7_8 ; + gidingo_3_4_N = mkN "gidingo" C3_4 ; + gidla_3_4_N = mkN "gidla" C3_4 ; + gido_3_4_N = mkN "gido" C3_4 ; + gigaba_7_8_N = mkN "gigaba" C7_8 ; + gijimi_7_8_N = mkN "gijimi" C7_8 ; + gila_9_10_N = mkN "gila" C9_10 ; + gilamkhuba_7_8_N = mkN "gilamkhuba" C7_8 ; + gilavu_5_6_N = mkN "gilavu" C5_6 ; + gilazi_9_10_N = mkN "gilazi" C9_10 ; + gilingwane_3_4_N = mkN "gilingwane" C3_4 ; + gilo_5_6_N = mkN "gilo" C5_6 ; + gingqi_5_6_N = mkN "gingqi" C5_6 ; + gingqi_9_10_N = mkN "gingqi" C9_10 ; + gingqo_3_4_N = mkN "gingqo" C3_4 ; + gini_9_10_N = mkN "gini" C9_10 ; + gintshogintsho_14_N = mkN "gintshogintsho" C14 ; + gisi_5_6_N = mkN "gisi" C5_6 ; + gisi_7_8_N = mkN "gisi" C7_8 ; + goba_11_10_N = mkN "goba" C11_10 ; + gobe_11_10_N = mkN "gobe" C11_10 ; + gobe_9_10_N = mkN "gobe" C9_10 ; + gobela_9_10_N = mkN "gobela" C9_10 ; + gobhe_7_8_N = mkN "gobhe" C7_8 ; + gobo_9_10_N = mkN "gobo" C9_10 ; + gobolondo_5_6_N = mkN "gobolondo" C5_6 ; + gobongo_5_6_N = mkN "gobongo" C5_6 ; + goda_5_6_N = mkN "goda" C5_6 ; + godi_3_4_N = mkN "godi" C3_4 ; + godi_5_6_N = mkN "godi" C5_6 ; + godi_7_8_N = mkN "godi" C7_8 ; + godi_9_10_N = mkN "godi" C9_10 ; + godla_3_4_N = mkN "godla" C3_4 ; + godla_5_6_N = mkN "godla" C5_6 ; + godlo_7_8_N = mkN "godlo" C7_8 ; + godlogodlo_14_N = mkN "godlogodlo" C14 ; + godo_11_10_N = mkN "godo" C11_10 ; + godo_7_8_N = mkN "godo" C7_8 ; + godo_9_10_N = mkN "godo" C9_10 ; + godosi_9_10_N = mkN "godosi" C9_10 ; + godoyi_3_4_N = mkN "godoyi" C3_4 ; + goduso_9_10_N = mkN "goduso" C9_10 ; + gogo_11_10_N = mkN "gogo" C11_10 ; + gogo_5_6_N = mkN "gogo" C5_6 ; + gogo_9_10_N = mkN "gogo" C9_10 ; + gogodla_3_4_N = mkN "gogodla" C3_4 ; + gogogo_5_6_N = mkN "gogogo" C5_6 ; + gola_11_10_N = mkN "gola" C11_10 ; + gola_9_10_N = mkN "gola" C9_10 ; + goli_5_N = mkN "goli" C5_6 ; + goli_5_6_N = mkN "goli" C5_6 ; + golide_5_N = mkN "golide" C5_6 ; + golokodo_5_6_N = mkN "golokodo" C5_6 ; + golokoqo_11_10_N = mkN "golokoqo" C11_10 ; + goma_11_10_N = mkN "goma" C11_10 ; + gomeni_3_4_N = mkN "gomeni" C3_4 ; + gomo_3_4_N = mkN "gomo" C3_4 ; + gona_9_N = mkN "gona" C9_10 ; + gongoni_9_10_N = mkN "gongoni" C9_10 ; + goni_9_10_N = mkN "goni" C9_10 ; + gono_9_10_N = mkN "gono" C9_10 ; + gonqo_3_4_N = mkN "gonqo" C3_4 ; + goqo_3_4_N = mkN "goqo" C3_4 ; + goqo_5_6_N = mkN "goqo" C5_6 ; + gosa_5_6_N = mkN "gosa" C5_6 ; + gosi_5_6_N = mkN "gosi" C5_6 ; + gosi_9_10_N = mkN "gosi" C9_10 ; + gotshwa_5_6_N = mkN "gotshwa" C5_6 ; + govu_14_N = mkN "govu" C14 ; + govu_3_4_N = mkN "govu" C3_4 ; + govu_5_6_N = mkN "govu" C5_6 ; + goxi_9_10_N = mkN "goxi" C9_10 ; + gqa_3_4_N = mkN "gqa" C3_4 ; + gqabho_5_6_N = mkN "gqabho" C5_6 ; + gqabo_3_4_N = mkN "gqabo" C3_4 ; + gqabo_7_8_N = mkN "gqabo" C7_8 ; + gqabu_5_6_N = mkN "gqabu" C5_6 ; + gqakazo_3_4_N = mkN "gqakazo" C3_4 ; + gqala_7_8_N = mkN "gqala" C7_8 ; + gqekezi_1_2_N = mkN "gqekezi" C1_2 ; + gqi_7_8_N = mkN "gqi" C7_8 ; + gqibelo_3_4_N = mkN "gqibelo" C3_4 ; + gqigqo_3_4_N = mkN "gqigqo" C3_4 ; + gqiki_3_4_N = mkN "gqiki" C3_4 ; + gqiki_7_8_N = mkN "gqiki" C7_8 ; + gqikolo_5_6_N = mkN "gqikolo" C5_6 ; + gqila_7_8_N = mkN "gqila" C7_8 ; + gqila_8_N = mkN "gqila" C7_8 ; + gqili_14_N = mkN "gqili" C14 ; + gqili_7_8_N = mkN "gqili" C7_8 ; + gqinsi_5_6_N = mkN "gqinsi" C5_6 ; + gqiza_5_6_N = mkN "gqiza" C5_6 ; + gqizo_7_8_N = mkN "gqizo" C7_8 ; + gqobe_9_10_N = mkN "gqobe" C9_10 ; + gqoka_5_6_N = mkN "gqoka" C5_6 ; + gqoko_11_10_N = mkN "gqoko" C11_10 ; + gqoko_7_8_N = mkN "gqoko" C7_8 ; + gqokolo_9_10_N = mkN "gqokolo" C9_10 ; + gqokwe_5_6_N = mkN "gqokwe" C5_6 ; + gqomo_3_4_N = mkN "gqomo" C3_4 ; + gqondo_9_N = mkN "gqondo" C9_10 ; + gqozi_11_N = mkN "gqozi" C11_10 ; + gqubu_5_6_N = mkN "gqubu" C5_6 ; + gqukumbane_9_10_N = mkN "gqukumbane" C9_10 ; + gquma_5_6_N = mkN "gquma" C5_6 ; + gqumo_3_4_N = mkN "gqumo" C3_4 ; + gqumu_5_6_N = mkN "gqumu" C5_6 ; + gqumunga_9_10_N = mkN "gqumunga" C9_10 ; + gqwabagqwaba_3_N = mkN "gqwabagqwaba" C3_4 ; + gqwayi_11_10_N = mkN "gqwayi" C11_10 ; + gu_11_10_N = mkN "gu" C11_10 ; + guba_11_10_N = mkN "guba" C11_10 ; + gubhela_5_6_N = mkN "gubhela" C5_6 ; + gubho_7_8_N = mkN "gubho" C7_8 ; + gubhu_11_10_N = mkN "gubhu" C11_10 ; + gubhu_7_8_N = mkN "gubhu" C7_8 ; + gubhukane_7_8_N = mkN "gubhukane" C7_8 ; + gubu_3_4_N = mkN "gubu" C3_4 ; + gubudu_7_8_N = mkN "gubudu" C7_8 ; + gubuzelo_3_4_N = mkN "gubuzelo" C3_4 ; + gude_7_8_N = mkN "gude" C7_8 ; + gudlu_9_10_N = mkN "gudlu" C9_10 ; + gudlugudlu_14_N = mkN "gudlugudlu" C14 ; + gudu_3_4_N = mkN "gudu" C3_4 ; + gudu_5_6_N = mkN "gudu" C5_6 ; + guga_7_8_N = mkN "guga" C7_8 ; + guga_9_10_N = mkN "guga" C9_10 ; + gugu_5_6_N = mkN "gugu" C5_6 ; + gugu_7_8_N = mkN "gugu" C7_8 ; + gula_5_6_N = mkN "gula" C5_6 ; + gula_9_10_N = mkN "gula" C9_10 ; + gule_11_10_N = mkN "gule" C11_10 ; + guleni_5_6_N = mkN "guleni" C5_6 ; + guli_7_8_N = mkN "guli" C7_8 ; + gulule_9_10_N = mkN "gulule" C9_10 ; + guma_5_6_N = mkN "guma" C5_6 ; + gumbi_5_6_N = mkN "gumbi" C5_6 ; + guncu_5_6_N = mkN "guncu" C5_6 ; + gundane_5_6_N = mkN "gundane" C5_6 ; + gundatshani_3_4_N = mkN "gundatshani" C3_4 ; + gundi_1_2_N = mkN "gundi" C1_2 ; + gundwane_5_6_N = mkN "gundwane" C5_6 ; + gungu_7_8_N = mkN "gungu" C7_8 ; + gungu_9_10_N = mkN "gungu" C9_10 ; + gungundlovu_3_N = mkN "gungundlovu" C3_4 ; + gunya_5_6_N = mkN "gunya" C5_6 ; + gunyathi_3_4_N = mkN "gunyathi" C3_4 ; + guqa_5_6_N = mkN "guqa" C5_6 ; + guqa_7_8_N = mkN "guqa" C7_8 ; + guqa_9_10_N = mkN "guqa" C9_10 ; + guqo_7_8_N = mkN "guqo" C7_8 ; + guquguqu_9_10_N = mkN "guquguqu" C9_10 ; + guquko_11_N = mkN "guquko" C11_10 ; + guquko_11_10_N = mkN "guquko" C11_10 ; + guquko_9_N = mkN "guquko" C9_10 ; + guquko_9_10_N = mkN "guquko" C9_10 ; + guqunguqu_9_10_N = mkN "guqunguqu" C9_10 ; + guzunga_9_10_N = mkN "guzunga" C9_10 ; + gwababa_5_6_N = mkN "gwababa" C5_6 ; + gwaca_7_8_N = mkN "gwaca" C7_8 ; + gwadla_9_10_N = mkN "gwadla" C9_10 ; + gwadule_11_10_N = mkN "gwadule" C11_10 ; + gwagwa_3_4_N = mkN "gwagwa" C3_4 ; + gwagwa_5_6_N = mkN "gwagwa" C5_6 ; + gwala_11_10_N = mkN "gwala" C11_10 ; + gwala_14_N = mkN "gwala" C14 ; + gwala_5_6_N = mkN "gwala" C5_6 ; + gwalagwala_5_6_N = mkN "gwalagwala" C5_6 ; + gwamanda_3_4_N = mkN "gwamanda" C3_4 ; + gwane_9_10_N = mkN "gwane" C9_10 ; + gwaqo_3_4_N = mkN "gwaqo" C3_4 ; + gwayi_11_N = mkN "gwayi" C11_10 ; + gwayi_5_6_N = mkN "gwayi" C5_6 ; + gwazi_9_10_N = mkN "gwazi" C9_10 ; + gwebedla_7_8_N = mkN "gwebedla" C7_8 ; + gwebo_7_8_N = mkN "gwebo" C7_8 ; + gwebu_5_6_N = mkN "gwebu" C5_6 ; + gwebu_9_N = mkN "gwebu" C9_10 ; + gwegwe_5_6_N = mkN "gwegwe" C5_6 ; + gwegwe_7_8_N = mkN "gwegwe" C7_8 ; + gwegwe_9_10_N = mkN "gwegwe" C9_10 ; + gwenya_9_10_N = mkN "gwenya" C9_10 ; + gwevu_9_10_N = mkN "gwevu" C9_10 ; + gwija_5_6_N = mkN "gwija" C5_6 ; + gwili_7_8_N = mkN "gwili" C7_8 ; + gxa_11_10_N = mkN "gxa" C11_10 ; + gxala_3_4_N = mkN "gxala" C3_4 ; + gxalaba_5_6_N = mkN "gxalaba" C5_6 ; + gxangxa_9_10_N = mkN "gxangxa" C9_10 ; + gxathu_5_6_N = mkN "gxathu" C5_6 ; + gxavula_9_10_N = mkN "gxavula" C9_10 ; + gxobo_7_8_N = mkN "gxobo" C7_8 ; + gxolo_5_6_N = mkN "gxolo" C5_6 ; + haba_5_6_N = mkN "haba" C5_6 ; + habe_11_N = mkN "habe" C11_10 ; + haca_11_N = mkN "haca" C11_10 ; + haca_14_N = mkN "haca" C14 ; + haca_5_6_N = mkN "haca" C5_6 ; + haca_7_N = mkN "haca" C7_8 ; + hala_5_6_N = mkN "hala" C5_6 ; + halakasha_11_10_N = mkN "halakasha" C11_10 ; + halavu_5_6_N = mkN "halavu" C5_6 ; + hamba_5_6_N = mkN "hamba" C5_6 ; + hamba_9_10_N = mkN "hamba" C9_10 ; + hambeli_7_8_N = mkN "hambeli" C7_8 ; + hambi_1_2_N = mkN "hambi" C1_2 ; + hambi_7_8_N = mkN "hambi" C7_8 ; + hambo_11_10_N = mkN "hambo" C11_10 ; + hambo_9_10_N = mkN "hambo" C9_10 ; + hambuma_3_4_N = mkN "hambuma" C3_4 ; + hamu_5_6_N = mkN "hamu" C5_6 ; + hanga_3_4_N = mkN "hanga" C3_4 ; + hansi_5_6_N = mkN "hansi" C5_6 ; + hawu_3_N = mkN "hawu" C3_4 ; + hawu_5_6_N = mkN "hawu" C5_6 ; + hawu_7_N = mkN "hawu" C7_8 ; + hayi_11_N = mkN "hayi" C11_10 ; + hayibheli_5_6_N = mkN "hayibheli" C5_6 ; + hayina_5_6_N = mkN "hayina" C5_6 ; + he_7_N = mkN "he" C7_8 ; + heku_5_N = mkN "heku" C5_6 ; + hekwini_5_N = mkN "hekwini" C5_6 ; + helane_3_4_N = mkN "helane" C3_4 ; + hele_11_10_N = mkN "hele" C11_10 ; + hele_5_6_N = mkN "hele" C5_6 ; + helehele_5_6_N = mkN "helehele" C5_6 ; + hembe_5_6_N = mkN "hembe" C5_6 ; + hemuhemu_5_6_N = mkN "hemuhemu" C5_6 ; + henqo_7_8_N = mkN "henqo" C7_8 ; + hewu_6_N = mkN "hewu" C5_6 ; + hhabe_11_10_N = mkN "hhabe" C11_10 ; + hhala_5_6_N = mkN "hhala" C5_6 ; + hhashi_5_6_N = mkN "hhashi" C5_6 ; + hhawu_11_N = mkN "hhawu" C11_10 ; + hhayi_11_10_N = mkN "hhayi" C11_10 ; + hhoko_5_6_N = mkN "hhoko" C5_6 ; + hholo_5_6_N = mkN "hholo" C5_6 ; + hhomfu_5_6_N = mkN "hhomfu" C5_6 ; + hhotela_5_6_N = mkN "hhotela" C5_6 ; + hhovisi_5_6_N = mkELocN "hhovisi" C5_6 ; + hibe_7_8_N = mkN "hibe" C7_8 ; + hide_11_10_N = mkN "hide" C11_10 ; + hidi_11_10_N = mkN "hidi" C11_10 ; + hiya_5_N = mkN "hiya" C5_6 ; + hla_11_10_N = mkN "hla" C11_10 ; + hla_3_4_N = mkN "hla" C3_4 ; + hlaba_3_4_N = mkN "hlaba" C3_4 ; + hlaba_5_6_N = mkN "hlaba" C5_6 ; + hlaba_9_10_N = mkN "hlaba" C9_10 ; + hlabahlangana_3_4_N = mkN "hlabahlangana" C3_4 ; + hlabani_5_6_N = mkN "hlabani" C5_6 ; + hlabathi_3_4_N = mkN "hlabathi" C3_4 ; + hlabathi_5_6_N = mkN "hlabathi" C5_6 ; + hlabathi_7_8_N = mkN "hlabathi" C7_8 ; + hlabathi_9_10_N = mkN "hlabathi" C9_10 ; + hlabathini_6_N = mkN "hlabathini" C5_6 ; + hlabi_1_2_N = mkN "hlabi" C1_2 ; + hlafuno_9_10_N = mkN "hlafuno" C9_10 ; + hlahla_5_6_N = mkN "hlahla" C5_6 ; + hlahla_7_8_N = mkN "hlahla" C7_8 ; + hlahla_9_10_N = mkN "hlahla" C9_10 ; + hlahlandlela_3_4_N = mkN "hlahlandlela" C3_4 ; + hlahlo_3_4_N = mkN "hlahlo" C3_4 ; + hlaka_11_10_N = mkN "hlaka" C11_10 ; + hlaka_5_N = mkN "hlaka" C5_6 ; + hlaka_5_6_N = mkN "hlaka" C5_6 ; + hlakahlaka_5_6_N = mkN "hlakahlaka" C5_6 ; + hlakahlaka_9_10_N = mkN "hlakahlaka" C9_10 ; + hlakala_7_8_N = mkN "hlakala" C7_8 ; + hlakalala_14_N = mkN "hlakalala" C14 ; + hlakanhlaka_9_10_N = mkN "hlakanhlaka" C9_10 ; + hlakani_14_N = mkN "hlakani" C14 ; + hlakaniphi_7_8_N = mkN "hlakaniphi" C7_8 ; + hlakanipho_9_10_N = mkN "hlakanipho" C9_10 ; + hlala_5_6_N = mkN "hlala" C5_6 ; + hlalakahle_9_10_N = mkN "hlalakahle" C9_10 ; + hlalaphansi_3_4_N = mkN "hlalaphansi" C3_4 ; + hlali_1_2_N = mkN "hlali" C1_2 ; + hlali_5_6_N = mkN "hlali" C5_6 ; + hlali_9_10_N = mkN "hlali" C9_10 ; + hlalo_7_8_N = mkN "hlalo" C7_8 ; + hlalo_9_10_N = mkN "hlalo" C9_10 ; + hlalu_11_N = mkN "hlalu" C11_10 ; + hlalu_14_N = mkN "hlalu" C14 ; + hlama_9_10_N = mkN "hlama" C9_10 ; + hlamba_3_4_N = mkN "hlamba" C3_4 ; + hlamba_9_N = mkN "hlamba" C9_10 ; + hlambi_3_4_N = mkN "hlambi" C3_4 ; + hlambi_7_8_N = mkN "hlambi" C7_8 ; + hlambi_9_10_N = mkN "hlambi" C9_10 ; + hlambo_5_6_N = mkN "hlambo" C5_6 ; + hlambo_7_8_N = mkN "hlambo" C7_8 ; + hlamvu_11_10_N = mkN "hlamvu" C11_10 ; + hlamvu_5_6_N = mkN "hlamvu" C5_6 ; + hlamvu_9_10_N = mkN "hlamvu" C9_10 ; + hlamvukazi_9_10_N = mkN "hlamvukazi" C9_10 ; + hlana_3_4_N = mkN "hlana" C3_4 ; + hlandla_3_4_N = mkN "hlandla" C3_4 ; + hlandla_7_8_N = mkN "hlandla" C7_8 ; + hlane_3_4_N = mkELocN "hlane" C3_4 ; + hlane_5_6_N = mkN "hlane" C5_6 ; + hlanekela_9_10_N = mkN "hlanekela" C9_10 ; + hlanekezela_9_10_N = mkN "hlanekezela" C9_10 ; + hlanga_11_10_N = mkN "hlanga" C11_10 ; + hlanga_14_N = mkN "hlanga" C14 ; + hlanga_3_4_N = mkN "hlanga" C3_4 ; + hlanga_5_6_N = mkN "hlanga" C5_6 ; + hlanga_9_10_N = mkN "hlanga" C9_10 ; + hlanganisela_9_10_N = mkN "hlanganisela" C9_10 ; + hlanganiso_3_4_N = mkN "hlanganiso" C3_4 ; + hlanganiso_9_10_N = mkN "hlanganiso" C9_10 ; + hlangano_3_4_N = mkN "hlangano" C3_4 ; + hlangano_9_10_N = mkN "hlangano" C9_10 ; + hlange_3_4_N = mkN "hlange" C3_4 ; + hlangothi_11_10_N = mkN "hlangothi" C11_10 ; + hlangothi_9_10_N = mkN "hlangothi" C9_10 ; + hlangu_7_8_N = mkN "hlangu" C7_8 ; + hlangu_9_10_N = mkN "hlangu" C9_10 ; + hlangwe_3_4_N = mkN "hlangwe" C3_4 ; + hlanhlatho_9_10_N = mkN "hlanhlatho" C9_10 ; + hlanjana_3_4_N = mkN "hlanjana" C3_4 ; + hlansi_9_10_N = mkN "hlansi" C9_10 ; + hlanti_3_4_N = mkN "hlanti" C3_4 ; + hlanu_7_8_N = mkN "hlanu" C7_8 ; + hlanya_11_10_N = mkN "hlanya" C11_10 ; + hlanya_14_N = mkN "hlanya" C14 ; + hlanzane_9_N = mkN "hlanzane" C9_10 ; + hlanze_5_6_N = mkN "hlanze" C5_6 ; + hlanzi_9_10_N = mkN "hlanzi" C9_10 ; + hlapho_3_4_N = mkN "hlapho" C3_4 ; + hlaseli_1_2_N = mkN "hlaseli" C1_2 ; + hlathi_14_N = mkN "hlathi" C14 ; + hlathi_3_4_N = mkN "hlathi" C3_4 ; + hlathi_5_6_N = mkN "hlathi" C5_6 ; + hlathi_7_8_N = mkN "hlathi" C7_8 ; + hlathuze_3_N = mkN "hlathuze" C3_4 ; + hlatshelo_3_4_N = mkN "hlatshelo" C3_4 ; + hlava_9_10_N = mkN "hlava" C9_10 ; + hlawe_5_6_N = mkN "hlawe" C5_6 ; + hlawulo_9_10_N = mkN "hlawulo" C9_10 ; + hlaya_5_6_N = mkN "hlaya" C5_6 ; + hlayenza_9_N = mkN "hlayenza" C9_10 ; + hlaza_11_N = mkN "hlaza" C11_10 ; + hlaza_3_4_N = mkN "hlaza" C3_4 ; + hlazane_9_N = mkN "hlazane" C9_10 ; + hlazi_7_8_N = mkN "hlazi" C7_8 ; + hlazo_5_6_N = mkN "hlazo" C5_6 ; + hlazo_9_10_N = mkN "hlazo" C9_10 ; + hle_14_N = mkN "hle" C14 ; + hle_7_8_N = mkN "hle" C7_8 ; + hlebi_9_10_N = mkN "hlebi" C9_10 ; + hlekabayeni_9_10_N = mkN "hlekabayeni" C9_10 ; + hleke_5_6_N = mkN "hleke" C5_6 ; + hleke_7_8_N = mkN "hleke" C7_8 ; + hlekehleke_7_8_N = mkN "hlekehleke" C7_8 ; + hlekelele_9_10_N = mkN "hlekelele" C9_10 ; + hlekisa_9_10_N = mkN "hlekisa" C9_10 ; + hleko_11_10_N = mkN "hleko" C11_10 ; + hleli_1_2_N = mkN "hleli" C1_2 ; + hlelo_11_10_N = mkN "hlelo" C11_10 ; + hlelo_5_6_N = mkN "hlelo" C5_6 ; + hlelo_9_10_N = mkN "hlelo" C9_10 ; + hlenga_7_8_N = mkN "hlenga" C7_8 ; + hlengethwa_5_6_N = mkN "hlengethwa" C5_6 ; + hlengezela_9_10_N = mkN "hlengezela" C9_10 ; + hlengi_1_2_N = mkN "hlengi" C1_2 ; + hlevane_11_10_N = mkN "hlevane" C11_10 ; + hleza_5_6_N = mkN "hleza" C5_6 ; + hlezi_5_6_N = mkN "hlezi" C5_6 ; + hlikwe_3_4_N = mkN "hlikwe" C3_4 ; + hlilingi_7_8_N = mkN "hlilingi" C7_8 ; + hliziyo_9_10_N = mkN "hliziyo" C9_10 ; + hlobo_11_10_N = mkN "hlobo" C11_10 ; + hlobo_14_N = mkN "hlobo" C14 ; + hlobo_1_2_N = mkN "hlobo" C1_2 ; + hlobo_3_4_N = mkN "hlobo" C3_4 ; + hlobo_5_6_N = mkELocN "hlobo" C5_6 ; + hlobo_7_8_N = mkN "hlobo" C7_8 ; + hlobo_9_10_N = mkN "hlobo" C9_10 ; + hlobonhlobo_9_10_N = mkN "hlobonhlobo" C9_10 ; + hlofu_11_10_N = mkN "hlofu" C11_10 ; + hloko_7_8_N = mkN "hloko" C7_8 ; + hloko_9_10_N = mkN "hloko" C9_10 ; + hlokohlela_9_10_N = mkN "hlokohlela" C9_10 ; + hlokohloko_5_6_N = mkN "hlokohloko" C5_6 ; + hlokomo_9_N = mkN "hlokomo" C9_10 ; + hlola_3_4_N = mkN "hlola" C3_4 ; + hlola_7_8_N = mkN "hlola" C7_8 ; + hlola_9_10_N = mkN "hlola" C9_10 ; + hloli_1_2_N = mkN "hloli" C1_2 ; + hloli_9_10_N = mkN "hloli" C9_10 ; + hlolo_3_4_N = mkN "hlolo" C3_4 ; + hlombe_5_6_N = mkELocN "hlombe" C5_6 ; + hlomo_5_6_N = mkN "hlomo" C5_6 ; + hlomunye_3_N = mkN "hlomunye" C3_4 ; + hlongandlebe_5_6_N = mkN "hlongandlebe" C5_6 ; + hlonhlo_3_4_N = mkN "hlonhlo" C3_4 ; + hloni_6_N = mkN "hloni" C5_6 ; + hlonipho_9_N = mkN "hlonipho" C9_10 ; + hlonishwa_3_4_N = mkN "hlonishwa" C3_4 ; + hlonono_7_8_N = mkN "hlonono" C7_8 ; + hlonti_7_8_N = mkN "hlonti" C7_8 ; + hlonze_11_10_N = mkN "hlonze" C11_10 ; + hlonze_9_10_N = mkN "hlonze" C9_10 ; + hlonzi_11_10_N = mkN "hlonzi" C11_10 ; + hlophe_3_4_N = mkN "hlophe" C3_4 ; + hlosa_5_6_N = mkN "hlosa" C5_6 ; + hloshazana_3_4_N = mkN "hloshazana" C3_4 ; + hloso_9_10_N = mkN "hloso" C9_10 ; + hloza_11_N = mkN "hloza" C11_10 ; + hlozi_5_6_N = mkN "hlozi" C5_6 ; + hlu_11_10_N = mkN "hlu" C11_10 ; + hlubulo_3_4_N = mkN "hlubulo" C3_4 ; + hluku_7_8_N = mkN "hluku" C7_8 ; + hlukuzo_5_6_N = mkN "hlukuzo" C5_6 ; + hlule_5_6_N = mkN "hlule" C5_6 ; + hlungu_14_N = mkN "hlungu" C14 ; + -- hlungu_14_10_N = mkN "hlungu" C14_10 ; + hlungu_5_6_N = mkN "hlungu" C5_6 ; + hlungu_7_8_N = mkN "hlungu" C7_8 ; + hlungwana_14_N = mkN "hlungwana" C14 ; + hluphe_7_8_N = mkN "hluphe" C7_8 ; + hlupheki_7_8_N = mkN "hlupheki" C7_8 ; + hlupheko_9_10_N = mkN "hlupheko" C9_10 ; + hlupho_11_10_N = mkN "hlupho" C11_10 ; + hluthu_7_8_N = mkN "hluthu" C7_8 ; + hluthulelo_7_8_N = mkN "hluthulelo" C7_8 ; + hluzi_1_2_N = mkN "hluzi" C1_2 ; + hluzi_3_N = mkN "hluzi" C3_4 ; + hluzi_7_8_N = mkN "hluzi" C7_8 ; + hluzo_5_6_N = mkN "hluzo" C5_6 ; + hluzwa_9_10_N = mkN "hluzwa" C9_10 ; + hlwa_11_10_N = mkN "hlwa" C11_10 ; + hlwa_14_N = mkN "hlwa" C14 ; + hlwa_3_4_N = mkN "hlwa" C3_4 ; + hlwa_7_8_N = mkN "hlwa" C7_8 ; + hlwa_9_N = mkN "hlwa" C9_10 ; + hlwabusi_9_10_N = mkN "hlwabusi" C9_10 ; + hlwathi_11_10_N = mkN "hlwathi" C11_10 ; + hlwathi_7_8_N = mkN "hlwathi" C7_8 ; + hlwathi_9_10_N = mkN "hlwathi" C9_10 ; + hlwayi_11_10_N = mkN "hlwayi" C11_10 ; + hlwaza_9_10_N = mkN "hlwaza" C9_10 ; + hlwazimamba_3_N = mkN "hlwazimamba" C3_4 ; + hlwele_7_8_N = mkN "hlwele" C7_8 ; + hlwempu_5_6_N = mkN "hlwempu" C5_6 ; + hlwenga_3_4_N = mkN "hlwenga" C3_4 ; + hlweza_11_10_N = mkN "hlweza" C11_10 ; + hobe_14_N = mkN "hobe" C14 ; + hobe_5_6_N = mkN "hobe" C5_6 ; + hoi_5_6_N = mkN "hoi" C5_6 ; + hole_7_8_N = mkN "hole" C7_8 ; + holi_14_N = mkN "holi" C14 ; + holi_1_2_N = mkN "holi" C1_2 ; + holide_5_6_N = mkN "holide" C5_6 ; + holo_3_4_N = mkN "holo" C3_4 ; + holo_5_6_N = mkN "holo" C5_6 ; + holobo_7_8_N = mkN "holobo" C7_8 ; + honi_7_8_N = mkN "honi" C7_8 ; + hora_5_6_N = mkN "hora" C5_6 ; + hosa_7_8_N = mkN "hosa" C7_8 ; + hosha_3_4_N = mkN "hosha" C3_4 ; + hosha_7_8_N = mkN "hosha" C7_8 ; + hoshe_3_4_N = mkN "hoshe" C3_4 ; + hoshe_7_8_N = mkN "hoshe" C7_8 ; + hosho_7_8_N = mkN "hosho" C7_8 ; + hu_11_10_N = mkN "hu" C11_10 ; + hubhe_3_4_N = mkN "hubhe" C3_4 ; + hubo_5_6_N = mkN "hubo" C5_6 ; + hudo_11_N = mkN "hudo" C11_10 ; + hudula_7_8_N = mkN "hudula" C7_8 ; + huha_5_N = mkN "huha" C5_6 ; + hule_11_10_N = mkN "hule" C11_10 ; + hume_3_4_N = mkN "hume" C3_4 ; + humusha_14_N = mkN "humusha" C14 ; + humusha_5_6_N = mkN "humusha" C5_6 ; + huntshu_11_10_N = mkN "huntshu" C11_10 ; + hunu_5_6_N = mkN "hunu" C5_6 ; + hunu_7_8_N = mkN "hunu" C7_8 ; + huqa_3_4_N = mkN "huqa" C3_4 ; + hushu_11_N = mkN "hushu" C11_10 ; + hwalahwala_5_6_N = mkN "hwalahwala" C5_6 ; + hwanqa_5_6_N = mkN "hwanqa" C5_6 ; + hwebo_11_N = mkN "hwebo" C11_10 ; + ihlo_5_6_N = mkN "ihlo" C5_6 ; + imkhulu_3_N = mkN "imkhulu" C3_4 ; + ingizimu_5_N = mkELocN "ingizimu" C5_6 ; + ingizimu_9_N = mkN "ingizimu" C9_10 ; + inselelo_9_10_N = mkN "inselelo" C9_10 ; + iso_5_N = mkN "iso" C5_6 ; + iso_5_6_N = mkN "iso" C5_6 ; + itoli_5_N = mkN "itoli" C5_6 ; + iva_5_6_N = mkN "iva" C5_6 ; + iyoni_5_6_N = mkN "iyoni" C5_6 ; + ja_5_6_N = mkN "ja" C5_6 ; + ja_7_N = mkN "ja" C7_8 ; + ja_9_10_N = mkN "ja" C9_10 ; + jabulo_9_10_N = mkN "jabulo" C9_10 ; + jadu_3_4_N = mkN "jadu" C3_4 ; + jadu_5_6_N = mkN "jadu" C5_6 ; + jaha_5_6_N = mkN "jaha" C5_6 ; + jaho_3_4_N = mkN "jaho" C3_4 ; + jaji_5_6_N = mkN "jaji" C5_6 ; + jaka_14_N = mkN "jaka" C14 ; + jalidi_5_6_N = mkN "jalidi" C5_6 ; + jalimane_5_6_N = mkN "jalimane" C5_6 ; + jalimane_7_8_N = mkN "jalimane" C7_8 ; + jati_5_6_N = mkN "jati" C5_6 ; + jazi_5_6_N = mkN "jazi" C5_6 ; + jele_5_6_N = mkELocN "jele" C5_6 ; + jenga_11_10_N = mkN "jenga" C11_10 ; + jezi_5_6_N = mkN "jezi" C5_6 ; + jeziso_7_8_N = mkN "jeziso" C7_8 ; + ji_7_8_N = mkN "ji" C7_8 ; + jiki_5_6_N = mkN "jiki" C5_6 ; + jinga_9_10_N = mkN "jinga" C9_10 ; + jingo_7_8_N = mkN "jingo" C7_8 ; + jiva_3_4_N = mkN "jiva" C3_4 ; + jobo_9_10_N = mkN "jobo" C9_10 ; + jodo_11_10_N = mkN "jodo" C11_10 ; + jojela_9_10_N = mkN "jojela" C9_10 ; + jojo_11_10_N = mkN "jojo" C11_10 ; + joka_5_6_N = mkN "joka" C5_6 ; + jokwane_3_4_N = mkN "jokwane" C3_4 ; + jolo_9_10_N = mkN "jolo" C9_10 ; + jomane_9_10_N = mkN "jomane" C9_10 ; + jongo_9_10_N = mkN "jongo" C9_10 ; + jongosi_5_6_N = mkN "jongosi" C5_6 ; + jovo_3_4_N = mkN "jovo" C3_4 ; + joyini_5_6_N = mkN "joyini" C5_6 ; + jozi_5_6_N = mkN "jozi" C5_6 ; + ju_11_N = mkN "ju" C11_10 ; + ju_7_8_N = mkN "ju" C7_8 ; + juba_5_6_N = mkN "juba" C5_6 ; + juba_9_10_N = mkN "juba" C9_10 ; + jubane_5_N = mkN "jubane" C5_6 ; + jubane_5_6_N = mkN "jubane" C5_6 ; + jubantondo_5_6_N = mkN "jubantondo" C5_6 ; + juda_5_6_N = mkN "juda" C5_6 ; + jukujuku_6_N = mkN "jukujuku" C5_6 ; + jula_7_8_N = mkN "jula" C7_8 ; + jula_9_10_N = mkN "jula" C9_10 ; + juluko_3_4_N = mkN "juluko" C3_4 ; + jumba_7_8_N = mkN "jumba" C7_8 ; + jwabu_5_6_N = mkN "jwabu" C5_6 ; + jwaphu_5_6_N = mkN "jwaphu" C5_6 ; + kade_5_N = mkN "kade" C5_6 ; + kali_7_8_N = mkN "kali" C7_8 ; + kalishi_5_6_N = mkN "kalishi" C5_6 ; + kalo_7_8_N = mkN "kalo" C7_8 ; + kamela_5_6_N = mkN "kamela" C5_6 ; + kamelo_5_6_N = mkN "kamelo" C5_6 ; + kamu_5_6_N = mkN "kamu" C5_6 ; + kandlela_5_6_N = mkN "kandlela" C5_6 ; + kani_5_6_N = mkN "kani" C5_6 ; + kaniso_7_8_N = mkN "kaniso" C7_8 ; + kantini_9_10_N = mkN "kantini" C9_10 ; + kantolo_9_10_N = mkELocN "kantolo" C9_10 ; + kati_5_6_N = mkN "kati" C5_6 ; + kebhe_5_6_N = mkN "kebhe" C5_6 ; + keke_11_10_N = mkN "keke" C11_10 ; + kele_7_8_N = mkN "kele" C7_8 ; + kelemu_7_8_N = mkN "kelemu" C7_8 ; + kesi_5_6_N = mkN "kesi" C5_6 ; + ketanga_5_6_N = mkN "ketanga" C5_6 ; + ketekete_7_8_N = mkN "ketekete" C7_8 ; + keyi_7_8_N = mkN "keyi" C7_8 ; + kha_6_N = mkN "kha" C5_6 ; + khaba_3_4_N = mkN "khaba" C3_4 ; + khaba_5_6_N = mkN "khaba" C5_6 ; + khaba_9_10_N = mkN "khaba" C9_10 ; + khabazwe_9_N = mkN "khabazwe" C9_10 ; + khabethe_5_6_N = mkN "khabethe" C5_6 ; + khabhinethi_5_6_N = mkN "khabhinethi" C5_6 ; + khadi_5_6_N = mkN "khadi" C5_6 ; + khafu_7_8_N = mkN "khafu" C7_8 ; + khafula_5_6_N = mkN "khafula" C5_6 ; + khahlamba_11_10_N = mkN "khahlamba" C11_10 ; + khakha_3_4_N = mkN "khakha" C3_4 ; + khakhasi_5_6_N = mkN "khakhasi" C5_6 ; + khakhayi_11_10_N = mkN "khakhayi" C11_10 ; + khala_5_6_N = mkN "khala" C5_6 ; + khala_7_8_N = mkN "khala" C7_8 ; + khaladi_5_6_N = mkN "khaladi" C5_6 ; + khali_14_N = mkN "khali" C14 ; + khali_7_8_N = mkN "khali" C7_8 ; + khalo_11_10_N = mkN "khalo" C11_10 ; + khalo_7_8_N = mkN "khalo" C7_8 ; + khama_9_10_N = mkN "khama" C9_10 ; + khamba_11_10_N = mkN "khamba" C11_10 ; + khamba_3_4_N = mkN "khamba" C3_4 ; + khambathi_3_4_N = mkN "khambathi" C3_4 ; + khambathini_3_N = mkN "khambathini" C3_4 ; + khambi_5_6_N = mkN "khambi" C5_6 ; + khamo_7_8_N = mkN "khamo" C7_8 ; + khanda_11_10_N = mkN "khanda" C11_10 ; + khanda_5_6_N = mkELocN "khanda" C5_6 ; + khanda_9_10_N = mkN "khanda" C9_10 ; + khandlela_5_6_N = mkN "khandlela" C5_6 ; + khandlu_3_4_N = mkN "khandlu" C3_4 ; + khangala_9_10_N = mkN "khangala" C9_10 ; + khangu_3_4_N = mkN "khangu" C3_4 ; + khanjana_5_6_N = mkN "khanjana" C5_6 ; + khanka_5_6_N = mkN "khanka" C5_6 ; + khankaso_3_4_N = mkN "khankaso" C3_4 ; + khansela_5_6_N = mkN "khansela" C5_6 ; + khanya_3_4_N = mkN "khanya" C3_4 ; + khanyiso_9_N = mkN "khanyiso" C9_10 ; + khasha_11_10_N = mkN "khasha" C11_10 ; + khashana_7_8_N = mkN "khashana" C7_8 ; + khasi_5_6_N = mkN "khasi" C5_6 ; + khasimende_5_6_N = mkN "khasimende" C5_6 ; + khatha_7_8_N = mkN "khatha" C7_8 ; + khatha_9_10_N = mkN "khatha" C9_10 ; + khathakhatha_6_N = mkN "khathakhatha" C5_6 ; + khathazo_9_10_N = mkN "khathazo" C9_10 ; + khathi_3_4_N = mkN "khathi" C3_4 ; + khathi_5_6_N = mkN "khathi" C5_6 ; + khathi_7_8_N = mkN "khathi" C7_8 ; + khathi_9_10_N = mkN "khathi" C9_10 ; + khawu_7_8_N = mkN "khawu" C7_8 ; + khawukhawu_7_8_N = mkN "khawukhawu" C7_8 ; + khawuko_3_4_N = mkN "khawuko" C3_4 ; + khawulo_3_4_N = mkN "khawulo" C3_4 ; + -- khaya_3_N = mkN "khaya" C3_4 ; + khaya_3_4_N = mkN "khaya" C3_4 ; + khaya_5_6_N = mkELocN "khaya" C5_6 ; + khaza_6_N = mkN "khaza" C5_6 ; + khazane_9_10_N = mkN "khazane" C9_10 ; + khaze_3_4_N = mkN "khaze" C3_4 ; + khazela_5_6_N = mkN "khazela" C5_6 ; + khazikhazi_14_N = mkN "khazikhazi" C14 ; + khazimulo_9_10_N = mkN "khazimulo" C9_10 ; + khebenkebe_9_10_N = mkN "khebenkebe" C9_10 ; + khedama_9_10_N = mkN "khedama" C9_10 ; + khefu_5_6_N = mkN "khefu" C5_6 ; + khehla_5_6_N = mkN "khehla" C5_6 ; + khehle_11_10_N = mkN "khehle" C11_10 ; + khehli_9_10_N = mkN "khehli" C9_10 ; + kheji_5_6_N = mkN "kheji" C5_6 ; + khekhe_5_6_N = mkN "khekhe" C5_6 ; + khelekethe_5_6_N = mkN "khelekethe" C5_6 ; + khelekethe_9_10_N = mkN "khelekethe" C9_10 ; + kheli_5_6_N = mkN "kheli" C5_6 ; + khemese_5_6_N = mkN "khemese" C5_6 ; + khemezelo_3_4_N = mkN "khemezelo" C3_4 ; + khemisi_1_2_N = mkN "khemisi" C1_2 ; + khemisi_5_6_N = mkELocN "khemisi" C5_6 ; + khencekhence_14_N = mkN "khencekhence" C14 ; + khephunkephu_9_N = mkN "khephunkephu" C9_10 ; + kheshe_11_N = mkN "kheshe" C11_10 ; + khetha_9_10_N = mkN "khetha" C9_10 ; + khethe_11_10_N = mkN "khethe" C11_10 ; + khethe_9_10_N = mkN "khethe" C9_10 ; + khethelo_5_6_N = mkN "khethelo" C5_6 ; + khethini_5_6_N = mkN "khethini" C5_6 ; + khetho_11_10_N = mkN "khetho" C11_10 ; + khetho_5_6_N = mkN "khetho" C5_6 ; + khewu_7_8_N = mkN "khewu" C7_8 ; + khexe_5_6_N = mkN "khexe" C5_6 ; + khezo_11_10_N = mkN "khezo" C11_10 ; + khezo_9_10_N = mkN "khezo" C9_10 ; + khikhi_5_6_N = mkN "khikhi" C5_6 ; + khikhizela_5_6_N = mkN "khikhizela" C5_6 ; + khindi_7_8_N = mkN "khindi" C7_8 ; + khinga_9_10_N = mkN "khinga" C9_10 ; + khiqizo_3_4_N = mkN "khiqizo" C3_4 ; + khishi_5_6_N = mkN "khishi" C5_6 ; + khithikhithi_14_N = mkN "khithikhithi" C14 ; + khiwane_5_6_N = mkN "khiwane" C5_6 ; + khiye_7_8_N = mkN "khiye" C7_8 ; + khizane_5_6_N = mkN "khizane" C5_6 ; + khizo_3_4_N = mkN "khizo" C3_4 ; + khoba_5_6_N = mkN "khoba" C5_6 ; + khobe_11_10_N = mkN "khobe" C11_10 ; + khobe_9_10_N = mkN "khobe" C9_10 ; + khofi_5_N = mkN "khofi" C5_6 ; + khohlakalo_9_10_N = mkN "khohlakalo" C9_10 ; + khohlisi_1_2_N = mkN "khohlisi" C1_2 ; + khohliso_9_10_N = mkN "khohliso" C9_10 ; + khohlo_11_10_N = mkN "khohlo" C11_10 ; + khohlo_5_6_N = mkN "khohlo" C5_6 ; + khohlwa_5_6_N = mkN "khohlwa" C5_6 ; + khohlwa_7_8_N = mkN "khohlwa" C7_8 ; + khokha_3_4_N = mkN "khokha" C3_4 ; + khokhela_5_6_N = mkN "khokhela" C5_6 ; + khokheli_1_2_N = mkN "khokheli" C1_2 ; + khokhelo_9_10_N = mkN "khokhelo" C9_10 ; + khokho_11_N = mkN "khokho" C11_10 ; + khokho_11_10_N = mkN "khokho" C11_10 ; + khokho_7_8_N = mkN "khokho" C7_8 ; + khokhothi_11_10_N = mkN "khokhothi" C11_10 ; + kholo_11_10_N = mkN "kholo" C11_10 ; + kholo_9_10_N = mkN "kholo" C9_10 ; + kholwa_14_N = mkN "kholwa" C14 ; + kholwa_5_6_N = mkN "kholwa" C5_6 ; + khomana_9_10_N = mkN "khomana" C9_10 ; + khomazi_3_4_N = mkN "khomazi" C3_4 ; + khomazi_9_10_N = mkN "khomazi" C9_10 ; + khomba_9_10_N = mkN "khomba" C9_10 ; + khombe_5_6_N = mkN "khombe" C5_6 ; + khombe_7_8_N = mkN "khombe" C7_8 ; + khombisa_7_8_N = mkN "khombisa" C7_8 ; + khomela_11_10_N = mkN "khomela" C11_10 ; + khomishani_5_6_N = mkN "khomishani" C5_6 ; + khomishini_9_6_N = mkN "khomishini" C9_6 ; + khomo_9_10_N = mkN "khomo" C9_10 ; + khomololo_7_8_N = mkN "khomololo" C7_8 ; + khompyuta_5_6_N = mkELocN "khompyuta" C5_6 ; + khona_14_N = mkN "khona" C14 ; + khonde_5_6_N = mkN "khonde" C5_6 ; + khondo_11_10_N = mkN "khondo" C11_10 ; + khondo_3_4_N = mkN "khondo" C3_4 ; + khondomu_5_6_N = mkN "khondomu" C5_6 ; + khondomu_9_6_N = mkN "khondomu" C9_6 ; + khongi_1_2_N = mkN "khongi" C1_2 ; + khonko_7_8_N = mkN "khonko" C7_8 ; + khonkwane_7_8_N = mkN "khonkwane" C7_8 ; + khono_3_4_N = mkN "khono" C3_4 ; + khono_5_6_N = mkN "khono" C5_6 ; + khonsathi_5_6_N = mkN "khonsathi" C5_6 ; + khonto_3_4_N = mkN "khonto" C3_4 ; + khonyana_9_10_N = mkN "khonyana" C9_10 ; + khonyane_7_N = mkN "khonyane" C7_8 ; + khonzi_7_8_N = mkN "khonzi" C7_8 ; + khonzo_3_4_N = mkN "khonzo" C3_4 ; + khonzo_9_10_N = mkN "khonzo" C9_10 ; + khophe_11_10_N = mkN "khophe" C11_10 ; + khophi_5_6_N = mkN "khophi" C5_6 ; + khosana_14_N = mkN "khosana" C14 ; + khosana_9_6_N = mkN "khosana" C9_6 ; + khosazana_9_6_N = mkN "khosazana" C9_6 ; + khosazane_9_6_N = mkN "khosazane" C9_6 ; + khosela_5_6_N = mkN "khosela" C5_6 ; + khosi_14_N = mkN "khosi" C14 ; + khosi_3_4_N = mkN "khosi" C3_4 ; + khosi_9_6_N = mkN "khosi" C9_6 ; + khosikazi_14_N = mkN "khosikazi" C14 ; + khosikazi_9_6_N = mkN "khosikazi" C9_6 ; + khotha_11_N = mkN "khotha" C11_10 ; + khotha_7_8_N = mkN "khotha" C7_8 ; + khothamo_5_6_N = mkN "khothamo" C5_6 ; + khothe_5_6_N = mkN "khothe" C5_6 ; + khothe_7_8_N = mkN "khothe" C7_8 ; + khova_11_N = mkN "khova" C11_10 ; + khova_7_8_N = mkN "khova" C7_8 ; + khovu_3_4_N = mkN "khovu" C3_4 ; + khovula_6_N = mkN "khovula" C5_6 ; + khowankowane_9_N = mkN "khowankowane" C9_10 ; + khowe_5_6_N = mkN "khowe" C5_6 ; + khowe_7_8_N = mkN "khowe" C7_8 ; + khoxe_7_8_N = mkN "khoxe" C7_8 ; + khoza_5_6_N = mkN "khoza" C5_6 ; + khozi_11_10_N = mkN "khozi" C11_10 ; + khuba_3_4_N = mkN "khuba" C3_4 ; + khuba_5_6_N = mkN "khuba" C5_6 ; + khuba_9_10_N = mkN "khuba" C9_10 ; + khubalo_5_6_N = mkN "khubalo" C5_6 ; + khubazekile_1_2_N = mkN "khubazekile" C1_2 ; + khubekiso_7_8_N = mkN "khubekiso" C7_8 ; + khubulo_3_4_N = mkN "khubulo" C3_4 ; + khuhlane_3_4_N = mkN "khuhlane" C3_4 ; + khukho_11_10_N = mkN "khukho" C11_10 ; + khukhu_5_6_N = mkN "khukhu" C5_6 ; + khukhu_7_8_N = mkN "khukhu" C7_8 ; + khukhula_7_8_N = mkN "khukhula" C7_8 ; + khuku_9_10_N = mkN "khuku" C9_10 ; + khula_11_10_N = mkN "khula" C11_10 ; + khuleko_3_4_N = mkN "khuleko" C3_4 ; + khulu_14_N = mkN "khulu" C14 ; + khulu_5_6_N = mkN "khulu" C5_6 ; + khulu_7_8_N = mkN "khulu" C7_8 ; + khululeko_9_10_N = mkN "khululeko" C9_10 ; + khululi_1_2_N = mkN "khululi" C1_2 ; + khulumi_1_2_N = mkN "khulumi" C1_2 ; + khulumi_7_8_N = mkN "khulumi" C7_8 ; + khulumo_9_10_N = mkN "khulumo" C9_10 ; + khulungwane_3_4_N = mkN "khulungwane" C3_4 ; + khulungwane_9_10_N = mkN "khulungwane" C9_10 ; + khumalo_5_6_N = mkN "khumalo" C5_6 ; + khumba_7_8_N = mkN "khumba" C7_8 ; + khumbi_11_10_N = mkN "khumbi" C11_10 ; + khumbi_3_4_N = mkN "khumbi" C3_4 ; + khumbi_9_10_N = mkN "khumbi" C9_10 ; + khumbulo_9_10_N = mkN "khumbulo" C9_10 ; + khumbuzi_7_8_N = mkN "khumbuzi" C7_8 ; + khumbuzo_7_8_N = mkN "khumbuzo" C7_8 ; + khumulo_7_8_N = mkN "khumulo" C7_8 ; + khundla_7_8_N = mkN "khundla" C7_8 ; + khundla_9_10_N = mkN "khundla" C9_10 ; + khungo_7_8_N = mkN "khungo" C7_8 ; + khuni_11_10_N = mkN "khuni" C11_10 ; + khuni_7_8_N = mkN "khuni" C7_8 ; + khunku_7_8_N = mkN "khunku" C7_8 ; + khunkuli_1_2_N = mkN "khunkuli" C1_2 ; + khunzana_9_10_N = mkN "khunzana" C9_10 ; + khunzi_9_10_N = mkN "khunzi" C9_10 ; + khunzimalanga_9_10_N = mkN "khunzimalanga" C9_10 ; + khupha_7_8_N = mkN "khupha" C7_8 ; + khusu_3_4_N = mkN "khusu" C3_4 ; + khutha_7_N = mkN "khutha" C7_8 ; + khuthali_7_8_N = mkN "khuthali" C7_8 ; + khuthalo_9_10_N = mkN "khuthalo" C9_10 ; + khuze_3_4_N = mkN "khuze" C3_4 ; + khwa_5_6_N = mkN "khwa" C5_6 ; + khwa_7_8_N = mkN "khwa" C7_8 ; + khwabukhwabu_7_8_N = mkN "khwabukhwabu" C7_8 ; + khwali_9_10_N = mkN "khwali" C9_10 ; + khwama_7_8_N = mkN "khwama" C7_8 ; + khwapha_5_6_N = mkN "khwapha" C5_6 ; + khwe_14_N = mkN "khwe" C14 ; + khwe_3_4_N = mkN "khwe" C3_4 ; + khwe_5_6_N = mkN "khwe" C5_6 ; + khwe_7_8_N = mkN "khwe" C7_8 ; + khwebu_7_8_N = mkN "khwebu" C7_8 ; + khwehlela_7_8_N = mkN "khwehlela" C7_8 ; + khwekazi_1_2_N = mkN "khwekazi" C1_2 ; + khwekhwe_11_10_N = mkN "khwekhwe" C11_10 ; + khwele_14_N = mkN "khwele" C14 ; + khwele_7_8_N = mkN "khwele" C7_8 ; + khwelo_5_6_N = mkN "khwelo" C5_6 ; + khwelo_7_8_N = mkN "khwelo" C7_8 ; + khwembe_11_10_N = mkN "khwembe" C11_10 ; + khwembe_5_6_N = mkN "khwembe" C5_6 ; + khwembeza_5_6_N = mkN "khwembeza" C5_6 ; + khwenyana_1_2_N = mkN "khwenyana" C1_2 ; + khwepha_7_8_N = mkN "khwepha" C7_8 ; + khweshe_11_10_N = mkN "khweshe" C11_10 ; + khwetha_1_2_N = mkN "khwetha" C1_2 ; + khwezela_5_6_N = mkN "khwezela" C5_6 ; + khwezeli_1_2_N = mkN "khwezeli" C1_2 ; + khwezi_5_6_N = mkN "khwezi" C5_6 ; + khwili_7_8_N = mkN "khwili" C7_8 ; + khwishikhwishi_7_8_N = mkN "khwishikhwishi" C7_8 ; + kilasi_5_6_N = mkN "kilasi" C5_6 ; + kithi_1_2_N = mkN "kithi" C1_2 ; + klabishi_5_6_N = mkN "klabishi" C5_6 ; + klanguklangu_11_10_N = mkN "klanguklangu" C11_10 ; + klasi_5_6_N = mkN "klasi" C5_6 ; + klebhe_7_8_N = mkN "klebhe" C7_8 ; + klele_5_6_N = mkN "klele" C5_6 ; + klele_9_10_N = mkN "klele" C9_10 ; + kloba_5_6_N = mkN "kloba" C5_6 ; + klolo_5_6_N = mkN "klolo" C5_6 ; + klolodo_5_6_N = mkN "klolodo" C5_6 ; + klomelo_3_4_N = mkN "klomelo" C3_4 ; + klwa_5_6_N = mkN "klwa" C5_6 ; + kole_7_8_N = mkN "kole" C7_8 ; + kolo_7_8_N = mkN "kolo" C7_8 ; + kolobhi_1_2_N = mkN "kolobhi" C1_2 ; + komidi_5_6_N = mkN "komidi" C5_6 ; + komiti_5_6_N = mkN "komiti" C5_6 ; + komkhulu_5_N = mkN "komkhulu" C5_6 ; + kopi_5_6_N = mkN "kopi" C5_6 ; + koti_7_8_N = mkN "koti" C7_8 ; + krestu_11_N = mkN "krestu" C11_10 ; + krestu_14_N = mkN "krestu" C14 ; + krestu_5_6_N = mkN "krestu" C5_6 ; + kubo_1_2_N = mkN "kubo" C1_2 ; + kubo_5_6_N = mkN "kubo" C5_6 ; + kukisi_5_6_N = mkN "kukisi" C5_6 ; + kula_5_6_N = mkN "kula" C5_6 ; + kulunkulu_14_N = mkN "kulunkulu" C14 ; + kumbe_5_6_N = mkN "kumbe" C5_6 ; + kusasa_5_N = mkN "kusasa" C5_6 ; + kutu_7_8_N = mkN "kutu" C7_8 ; + kwaya_5_6_N = mkN "kwaya" C5_6 ; + kwele_7_8_N = mkN "kwele" C7_8 ; + kweletu_7_8_N = mkN "kweletu" C7_8 ; + kweqekweqe_14_N = mkN "kweqekweqe" C14 ; + kwi_11_N = mkN "kwi" C11_10 ; + kwitikwiti_14_N = mkN "kwitikwiti" C14 ; + labalaba_3_4_N = mkN "labalaba" C3_4 ; + lahlane_7_8_N = mkN "lahlane" C7_8 ; + lahlankosi_3_4_N = mkN "lahlankosi" C3_4 ; + lahle_5_6_N = mkN "lahle" C5_6 ; + laka_11_N = mkN "laka" C11_10 ; + lala_11_N = mkN "lala" C11_10 ; + lala_14_N = mkN "lala" C14 ; + lala_3_4_N = mkN "lala" C3_4 ; + lala_5_6_N = mkN "lala" C5_6 ; + lala_7_N = mkN "lala" C7_8 ; + lalamvubu_3_N = mkN "lalamvubu" C3_4 ; + lalazi_3_4_N = mkN "lalazi" C3_4 ; + lalela_3_4_N = mkN "lalela" C3_4 ; + laleli_1_2_N = mkN "laleli" C1_2 ; + lambalidlile_5_6_N = mkN "lambalidlile" C5_6 ; + lambo_3_4_N = mkN "lambo" C3_4 ; + lambu_5_6_N = mkN "lambu" C5_6 ; + lamu_1_2_N = mkN "lamu" C1_2 ; + lamuli_1_2_N = mkN "lamuli" C1_2 ; + landa_14_N = mkN "landa" C14 ; + landa_5_6_N = mkN "landa" C5_6 ; + landeli_1_2_N = mkN "landeli" C1_2 ; + landelo_7_8_N = mkN "landelo" C7_8 ; + lando_3_4_N = mkN "lando" C3_4 ; + landu_3_4_N = mkN "landu" C3_4 ; + langa_5_6_N = mkN "langa" C5_6 ; + langabi_5_6_N = mkN "langabi" C5_6 ; + langulangu_14_N = mkN "langulangu" C14 ; + lantsha_3_4_N = mkN "lantsha" C3_4 ; + lasha_11_N = mkN "lasha" C11_10 ; + lathi_5_6_N = mkN "lathi" C5_6 ; + lawu_14_N = mkN "lawu" C14 ; + lawu_5_6_N = mkN "lawu" C5_6 ; + lawuli_1_2_N = mkN "lawuli" C1_2 ; + layezo_3_4_N = mkN "layezo" C3_4 ; + layisense_5_6_N = mkN "layisense" C5_6 ; + layisi_5_6_N = mkN "layisi" C5_6 ; + layo_11_10_N = mkN "layo" C11_10 ; + laza_11_N = mkN "laza" C11_10 ; + laza_3_4_N = mkN "laza" C3_4 ; + laza_7_N = mkN "laza" C7_8 ; + lazi_7_8_N = mkN "lazi" C7_8 ; + le_3_N = mkN "le" C3_4 ; + lekeleli_1_2_N = mkN "lekeleli" C1_2 ; + lele_11_10_N = mkN "lele" C11_10 ; + lele_7_8_N = mkN "lele" C7_8 ; + lembe_5_6_N = mkN "lembe" C5_6 ; + lembu_14_N = mkN "lembu" C14 ; + lenze_3_4_N = mkN "lenze" C3_4 ; + letha_5_6_N = mkN "letha" C5_6 ; + leti_7_8_N = mkN "leti" C7_8 ; + levi_5_6_N = mkN "levi" C5_6 ; + levu_7_8_N = mkN "levu" C7_8 ; + liba_5_6_N = mkN "liba" C5_6 ; + libe_3_4_N = mkN "libe" C3_4 ; + lili_14_N = mkN "lili" C14 ; + lili_7_8_N = mkN "lili" C7_8 ; + lilo_3_4_N = mkN "lilo" C3_4 ; + lilo_7_8_N = mkN "lilo" C7_8 ; + lima_14_N = mkN "lima" C14 ; + lima_5_6_N = mkN "lima" C5_6 ; + lima_7_8_N = mkN "lima" C7_8 ; + lima_9_10_N = mkN "lima" C9_10 ; + limela_3_4_N = mkN "limela" C3_4 ; + limi_11_10_N = mkN "limi" C11_10 ; + limi_1_2_N = mkN "limi" C1_2 ; + limi_6_N = mkN "limi" C5_6 ; + limo_7_8_N = mkN "limo" C7_8 ; + lindankosi_3_4_N = mkN "lindankosi" C3_4 ; + lindi_1_2_N = mkN "lindi" C1_2 ; + lindi_3_4_N = mkN "lindi" C3_4 ; + lindo_3_4_N = mkN "lindo" C3_4 ; + lingane_1_2_N = mkN "lingane" C1_2 ; + lingani_1_2_N = mkN "lingani" C1_2 ; + linganiso_7_8_N = mkN "linganiso" C7_8 ; + linganiso_9_10_N = mkN "linganiso" C9_10 ; + lingi_7_8_N = mkN "lingi" C7_8 ; + lingiswa_1_2_N = mkN "lingiswa" C1_2 ; + lingo_3_4_N = mkN "lingo" C3_4 ; + lingo_7_8_N = mkN "lingo" C7_8 ; + lisa_1_2_N = mkN "lisa" C1_2 ; + lisa_7_N = mkN "lisa" C7_8 ; + lisho_5_6_N = mkN "lisho" C5_6 ; + lo_7_8_N = mkN "lo" C7_8 ; + lobi_1_2_N = mkN "lobi" C1_2 ; + lobokazi_1_2_N = mkN "lobokazi" C1_2 ; + lobolo_5_N = mkN "lobolo" C5_6 ; + lokazane_7_8_N = mkN "lokazane" C7_8 ; + lokishi_5_6_N = mkN "lokishi" C5_6 ; + lokozane_7_N = mkN "lokozane" C7_8 ; + lokwe_5_6_N = mkN "lokwe" C5_6 ; + loli_5_6_N = mkN "loli" C5_6 ; + lolozelo_3_4_N = mkN "lolozelo" C3_4 ; + loma_5_6_N = mkN "loma" C5_6 ; + lombo_6_N = mkN "lombo" C5_6 ; + lomo_3_4_N = mkN "lomo" C3_4 ; + lomo_7_8_N = mkN "lomo" C7_8 ; + londa_7_8_N = mkN "londa" C7_8 ; + londolozi_1_2_N = mkN "londolozi" C1_2 ; + longwe_14_N = mkN "longwe" C14 ; + lotha_3_4_N = mkN "lotha" C3_4 ; + lotho_5_6_N = mkN "lotho" C5_6 ; + lovu_5_6_N = mkN "lovu" C5_6 ; + loya_11_N = mkN "loya" C11_10 ; + loyi_5_6_N = mkN "loyi" C5_6 ; + loyo_5_6_N = mkN "loyo" C5_6 ; + lozi_1_2_N = mkN "lozi" C1_2 ; + lozi_3_4_N = mkN "lozi" C3_4 ; + luba_5_N = mkN "luba" C5_6 ; + luba_7_8_N = mkN "luba" C7_8 ; + luhlaza_14_N = mkN "luhlaza" C14 ; + lukela_5_6_N = mkN "lukela" C5_6 ; + lukuluku_5_6_N = mkN "lukuluku" C5_6 ; + lula_14_N = mkN "lula" C14 ; + lula_5_6_N = mkN "lula" C5_6 ; + lulu_7_8_N = mkN "lulu" C7_8 ; + lulwane_14_N = mkN "lulwane" C14 ; + lulwane_5_6_N = mkN "lulwane" C5_6 ; + lumbi_1_2_N = mkN "lumbi" C1_2 ; + lumbo_5_6_N = mkN "lumbo" C5_6 ; + lunda_5_6_N = mkN "lunda" C5_6 ; + lunga_14_N = mkN "lunga" C14 ; + lunga_5_6_N = mkN "lunga" C5_6 ; + lunge_11_10_N = mkN "lunge" C11_10 ; + lungelo_5_6_N = mkN "lungelo" C5_6 ; + lungelunge_11_10_N = mkN "lungelunge" C11_10 ; + lungiselelo_5_6_N = mkN "lungiselelo" C5_6 ; + lungiswa_14_N = mkN "lungiswa" C14 ; + lungu_14_N = mkN "lungu" C14 ; + lungu_5_6_N = mkN "lungu" C5_6 ; + lungu_7_N = mkN "lungu" C7_8 ; + lwana_7_8_N = mkN "lwana" C7_8 ; + lwandle_11_10_N = mkN "lwandle" C11_10 ; + lwane_14_N = mkN "lwane" C14 ; + lwane_7_8_N = mkN "lwane" C7_8 ; + lwanga_11_10_N = mkN "lwanga" C11_10 ; + lwembu_11_10_N = mkN "lwembu" C11_10 ; + lwesibili_11_N = mkN "lwesibili" C11_10 ; + lwesihlanu_11_N = mkN "lwesihlanu" C11_10 ; + lwesine_11_N = mkN "lwesine" C11_10 ; + lwesithathu_11_N = mkN "lwesithathu" C11_10 ; + lwezi_11_N = mkN "lwezi" C11_10 ; + lwi_7_8_N = mkN "lwi" C7_8 ; + mabani_3_N = mkN "mabani" C3_4 ; + makade_7_8_N = mkN "makade" C7_8 ; + makethe_9_10_N = mkN "makethe" C9_10 ; + maki_5_6_N = mkN "maki" C5_6 ; + maku_7_8_N = mkN "maku" C7_8 ; + malaleveva_3_N = mkN "malaleveva" C3_4 ; + mali_9_10_N = mkN "mali" C9_10 ; + malunkambu_3_N = mkN "malunkambu" C3_4 ; + mamba_9_10_N = mkN "mamba" C9_10 ; + mame_7_N = mkN "mame" C7_8 ; + mandulo_3_N = mkN "mandulo" C3_4 ; + manga_7_8_N = mkN "manga" C7_8 ; + mangaliso_3_4_N = mkN "mangaliso" C3_4 ; + mangaliso_7_8_N = mkN "mangaliso" C7_8 ; + mango_3_4_N = mkN "mango" C3_4 ; + manje_7_N = mkN "manje" C7_8 ; + mantshi_9_10_N = mkN "mantshi" C9_10 ; + manzi_14_N = mkN "manzi" C14 ; + mawundeni_9_10_N = mkN "mawundeni" C9_10 ; + mayela_5_6_N = mkN "mayela" C5_6 ; + mayemaye_14_N = mkN "mayemaye" C14 ; + mayemaye_7_N = mkN "mayemaye" C7_8 ; + mayini_9_10_N = mkN "mayini" C9_10 ; + mayo_3_N = mkN "mayo" C3_4 ; + mazi_9_10_N = mkN "mazi" C9_10 ; + mbala_9_10_N = mkN "mbala" C9_10 ; + mbali_9_10_N = mkN "mbali" C9_10 ; + mbatha_6_N = mkN "mbatha" C5_6 ; + mbawula_9_10_N = mkN "mbawula" C9_10 ; + mbayiyana_3_N = mkN "mbayiyana" C3_4 ; + mbaza_9_10_N = mkN "mbaza" C9_10 ; + mbazu_9_10_N = mkN "mbazu" C9_10 ; + mbebe_9_10_N = mkN "mbebe" C9_10 ; + mbewu_9_10_N = mkN "mbewu" C9_10 ; + mbi_1_2_N = mkN "mbi" C1_2 ; + mbiba_9_10_N = mkN "mbiba" C9_10 ; + mbibi_9_10_N = mkN "mbibi" C9_10 ; + mbila_3_4_N = mkN "mbila" C3_4 ; + mbila_7_8_N = mkN "mbila" C7_8 ; + mbilapho_9_10_N = mkN "mbilapho" C9_10 ; + mbili_9_10_N = mkN "mbili" C9_10 ; + mbo_7_8_N = mkN "mbo" C7_8 ; + mbo_9_N = mkN "mbo" C9_10 ; + mbona_3_N = mkN "mbona" C3_4 ; + mbone_9_10_N = mkN "mbone" C9_10 ; + mbongolo_9_10_N = mkN "mbongolo" C9_10 ; + mboni_9_10_N = mkN "mboni" C9_10 ; + mboza_5_6_N = mkN "mboza" C5_6 ; + mbuka_14_N = mkN "mbuka" C14 ; + mbuka_5_6_N = mkN "mbuka" C5_6 ; + mbulu_9_10_N = mkN "mbulu" C9_10 ; + mbuthuma_9_10_N = mkN "mbuthuma" C9_10 ; + me_11_N = mkN "me" C11_10 ; + me_14_N = mkN "me" C14 ; + meleli_1_2_N = mkN "meleli" C1_2 ; + meli_1_2_N = mkN "meli" C1_2 ; + meli_9_10_N = mkN "meli" C9_10 ; + melika_14_N = mkN "melika" C14 ; + melika_9_6_N = mkN "melika" C9_6 ; + mema_11_10_N = mkN "mema" C11_10 ; + mema_3_N = mkN "mema" C3_4 ; + meme_3_4_N = mkN "meme" C3_4 ; + meme_5_N = mkN "meme" C5_6 ; + memezelo_7_8_N = mkN "memezelo" C7_8 ; + memezi_3_N = mkN "memezi" C3_4 ; + memo_7_8_N = mkN "memo" C7_8 ; + menenja_9_10_N = mkN "menenja" C9_10 ; + mentshisi_3_N = mkN "mentshisi" C3_4 ; + menywa_7_8_N = mkN "menywa" C7_8 ; + mephu_9_10_N = mkN "mephu" C9_10 ; + mese_3_4_N = mkN "mese" C3_4 ; + meya_9_10_N = mkN "meya" C9_10 ; + meyili_9_10_N = mkN "meyili" C9_10 ; + mfengwane_9_10_N = mkN "mfengwane" C9_10 ; + mfimfi_9_10_N = mkN "mfimfi" C9_10 ; + mfonyomfonyo_5_6_N = mkN "mfonyomfonyo" C5_6 ; + mhlophe_14_N = mkN "mhlophe" C14 ; + mila_7_8_N = mkN "mila" C7_8 ; + milamongo_7_8_N = mkN "milamongo" C7_8 ; + milo_7_8_N = mkN "milo" C7_8 ; + mina_11_10_N = mkN "mina" C11_10 ; + mina_14_N = mkN "mina" C14 ; + mina_3_N = mkN "mina" C3_4 ; + mini_9_10_N = mkN "mini" C9_10 ; + minithi_5_6_N = mkN "minithi" C5_6 ; + misa_5_6_N = mkN "misa" C5_6 ; + miselo_7_8_N = mkN "miselo" C7_8 ; + mishani_9_10_N = mkN "mishani" C9_10 ; + miso_3_4_N = mkN "miso" C3_4 ; + miso_7_8_N = mkN "miso" C7_8 ; + mitha_5_6_N = mkN "mitha" C5_6 ; + miyane_3_4_N = mkN "miyane" C3_4 ; + mnandi_14_N = mkN "mnandi" C14 ; + mnene_14_N = mkN "mnene" C14 ; + mnini_14_N = mkN "mnini" C14 ; + mnyama_14_N = mkN "mnyama" C14 ; + mo_14_N = mkN "mo" C14 ; + mo_3_4_N = mkN "mo" C3_4 ; + mo_7_8_N = mkN "mo" C7_8 ; + moba_3_N = mkN "moba" C3_4 ; + moba_3_4_N = mkN "moba" C3_4 ; + moba_7_8_N = mkN "moba" C7_8 ; + moliya_7_N = mkN "moliya" C7_8 ; + mome_9_N = mkN "mome" C9_10 ; + mongo_7_8_N = mkN "mongo" C7_8 ; + mongozima_3_N = mkN "mongozima" C3_4 ; + monyo_7_8_N = mkN "monyo" C7_8 ; + moto_9_10_N = mkN "moto" C9_10 ; + moya_3_4_N = mkN "moya" C3_4 ; + mpabanga_9_10_N = mkN "mpabanga" C9_10 ; + mpaka_9_10_N = mkN "mpaka" C9_10 ; + mpama_9_10_N = mkN "mpama" C9_10 ; + mpande_9_10_N = mkN "mpande" C9_10 ; + mpange_9_10_N = mkN "mpange" C9_10 ; + mpangele_9_10_N = mkN "mpangele" C9_10 ; + mpatha_9_10_N = mkN "mpatha" C9_10 ; + mpelesi_9_10_N = mkN "mpelesi" C9_10 ; + mpempe_9_10_N = mkN "mpempe" C9_10 ; + mpi_14_N = mkN "mpi" C14 ; + mpi_9_10_N = mkN "mpi" C9_10 ; + mpisi_9_10_N = mkN "mpisi" C9_10 ; + mpofu_14_N = mkN "mpofu" C14 ; + mpohlo_9_10_N = mkN "mpohlo" C9_10 ; + mpompi_7_8_N = mkN "mpompi" C7_8 ; + mpondo_14_N = mkN "mpondo" C14 ; + mpondo_5_6_N = mkN "mpondo" C5_6 ; + mpondo_9_10_N = mkN "mpondo" C9_10 ; + mpongozembe_9_10_N = mkN "mpongozembe" C9_10 ; + mpontshi_9_10_N = mkN "mpontshi" C9_10 ; + mpu_11_10_N = mkN "mpu" C11_10 ; + mpu_5_6_N = mkN "mpu" C5_6 ; + mpu_9_10_N = mkN "mpu" C9_10 ; + mpukane_9_10_N = mkN "mpukane" C9_10 ; + mpunga_14_N = mkN "mpunga" C14 ; + mpunga_9_10_N = mkN "mpunga" C9_10 ; + mpungushe_9_N = mkN "mpungushe" C9_10 ; + mpuphu_9_N = mkN "mpuphu" C9_10 ; + mtoti_14_N = mkN "mtoti" C14 ; + mukanandwendwe_7_8_N = mkN "mukanandwendwe" C7_8 ; + mukela_3_4_N = mkN "mukela" C3_4 ; + mungulu_7_8_N = mkN "mungulu" C7_8 ; + nakwabo_1_2_N = mkN "nakwabo" C1_2 ; + nakwethu_1_2_N = mkN "nakwethu" C1_2 ; + nala_9_10_N = mkN "nala" C9_10 ; + nambuzane_7_8_N = mkN "nambuzane" C7_8 ; + nani_5_6_N = mkN "nani" C5_6 ; + nanja_3_4_N = mkN "nanja" C3_4 ; + nanja_5_6_N = mkN "nanja" C5_6 ; + nansika_11_10_N = mkN "nansika" C11_10 ; + nansika_5_6_N = mkN "nansika" C5_6 ; + nansika_9_10_N = mkN "nansika" C9_10 ; + naphakade_11_N = mkN "naphakade" C11_10 ; + naphungana_7_8_N = mkN "naphungana" C7_8 ; + nawami_1_2_N = mkN "nawami" C1_2 ; + ncamu_5_6_N = mkN "ncamu" C5_6 ; + ncane_14_N = mkN "ncane" C14 ; + ncazelo_9_10_N = mkN "ncazelo" C9_10 ; + nce_11_N = mkN "nce" C11_10 ; + nceku_14_N = mkN "nceku" C14 ; + nceku_9_10_N = mkN "nceku" C9_10 ; + ncele_3_4_N = mkN "ncele" C3_4 ; + ncele_9_10_N = mkN "ncele" C9_10 ; + ncema_9_10_N = mkN "ncema" C9_10 ; + ncengela_9_10_N = mkN "ncengela" C9_10 ; + ncibijane_11_N = mkN "ncibijane" C11_10 ; + ncindo_3_4_N = mkN "ncindo" C3_4 ; + ncintiswano_3_4_N = mkN "ncintiswano" C3_4 ; + ncinyane_14_N = mkN "ncinyane" C14 ; + ncinyane_9_10_N = mkN "ncinyane" C9_10 ; + ncishi_9_10_N = mkN "ncishi" C9_10 ; + nco_9_10_N = mkN "nco" C9_10 ; + ncokazi_9_10_N = mkN "ncokazi" C9_10 ; + ncoko_6_N = mkN "ncoko" C5_6 ; + ncomo_9_10_N = mkN "ncomo" C9_10 ; + ncotho_9_10_N = mkN "ncotho" C9_10 ; + nculu_9_10_N = mkN "nculu" C9_10 ; + ncumbe_9_10_N = mkN "ncumbe" C9_10 ; + ncushuncushu_9_10_N = mkN "ncushuncushu" C9_10 ; + ncwaba_11_N = mkN "ncwaba" C11_10 ; + ncwadi_9_10_N = mkN "ncwadi" C9_10 ; + ncwazi_11_10_N = mkN "ncwazi" C11_10 ; + ndanda_11_10_N = mkN "ndanda" C11_10 ; + ndawo_9_10_N = mkN "ndawo" C9_10 ; + ndawu_5_6_N = mkN "ndawu" C5_6 ; + nde_3_4_N = mkN "nde" C3_4 ; + ndeni_3_4_N = mkN "ndeni" C3_4 ; + ndeni_9_10_N = mkN "ndeni" C9_10 ; + ndi_11_N = mkN "ndi" C11_10 ; + ndibilisha_9_10_N = mkN "ndibilisha" C9_10 ; + ndiki_5_6_N = mkN "ndiki" C5_6 ; + ndiki_9_10_N = mkN "ndiki" C9_10 ; + ndilokwe_5_6_N = mkN "ndilokwe" C5_6 ; + ndima_9_10_N = mkN "ndima" C9_10 ; + ndimbane_9_10_N = mkN "ndimbane" C9_10 ; + ndimi_8_N = mkN "ndimi" C7_8 ; + ndindi_3_4_N = mkN "ndindi" C3_4 ; + ndinganiso_9_N = mkN "ndinganiso" C9_10 ; + ndiya_5_6_N = mkN "ndiya" C5_6 ; + ndiza_9_10_N = mkN "ndiza" C9_10 ; + ndizamshini_9_10_N = mkN "ndizamshini" C9_10 ; + ndla_6_N = mkN "ndla" C5_6 ; + ndlala_9_10_N = mkN "ndlala" C9_10 ; + ndle_9_N = mkN "ndle" C9_10 ; + ndlu_9_10_N = mkN "ndlu" C9_10 ; + ndlunkulu_9_10_N = mkN "ndlunkulu" C9_10 ; + ndlwana_9_10_N = mkN "ndlwana" C9_10 ; + ndlwane_5_6_N = mkN "ndlwane" C5_6 ; + ndondo_3_N = mkN "ndondo" C3_4 ; + ndulo_5_6_N = mkN "ndulo" C5_6 ; + nduze_3_4_N = mkN "nduze" C3_4 ; + ndwandwe_9_10_N = mkN "ndwandwe" C9_10 ; + ne_14_N = mkN "ne" C14 ; + ne_7_8_N = mkN "ne" C7_8 ; + neke_7_N = mkN "neke" C7_8 ; + nembe_11_N = mkN "nembe" C11_10 ; + nembe_6_N = mkN "nembe" C5_6 ; + nembe_9_N = mkN "nembe" C9_10 ; + nembeza_11_N = mkN "nembeza" C11_10 ; + nembeza_11_10_N = mkN "nembeza" C11_10 ; + nembo_11_N = mkN "nembo" C11_10 ; + nene_14_N = mkN "nene" C14 ; + nene_17_N = mkN "nene" C17 ; + nene_5_6_N = mkN "nene" C5_6 ; + nene_7_8_N = mkN "nene" C7_8 ; + nengiso_7_8_N = mkN "nengiso" C7_8 ; + nenke_3_4_N = mkN "nenke" C3_4 ; + nesi_14_N = mkN "nesi" C14 ; + nesi_5_6_N = mkN "nesi" C5_6 ; + netha_5_6_N = mkN "netha" C5_6 ; + nethe_14_N = mkN "nethe" C14 ; + newabo_1_2_N = mkN "newabo" C1_2 ; + newenu_1_2_N = mkN "newenu" C1_2 ; + newethu_1_2_N = mkN "newethu" C1_2 ; + nga_3_4_N = mkN "nga" C3_4 ; + nga_6_N = mkN "nga" C5_6 ; + nga_7_8_N = mkN "nga" C7_8 ; + ngaka_14_N = mkN "ngaka" C14 ; + ngakanani_14_N = mkN "ngakanani" C14 ; + ngako_14_N = mkN "ngako" C14 ; + ngamanzi_5_N = mkN "ngamanzi" C5_6 ; + ngamunwe_5_6_N = mkN "ngamunwe" C5_6 ; + ngane_11_N = mkN "ngane" C11_10 ; + ngane_14_N = mkN "ngane" C14 ; + ngane_1_2_N = mkN "ngane" C1_2 ; + ngane_7_8_N = mkN "ngane" C7_8 ; + ngane_9_10_N = mkN "ngane" C9_10 ; + nganeko_9_10_N = mkN "nganeko" C9_10 ; + nganekwane_9_10_N = mkN "nganekwane" C9_10 ; + ngani_1_2_N = mkN "ngani" C1_2 ; + ngani_7_8_N = mkN "ngani" C7_8 ; + ngathekiso_7_8_N = mkN "ngathekiso" C7_8 ; + ngcebo_9_N = mkN "ngcebo" C9_10 ; + ngcele_3_4_N = mkN "ngcele" C3_4 ; + ngci_11_N = mkN "ngci" C11_10 ; + ngcobangcoba_9_10_N = mkN "ngcobangcoba" C9_10 ; + ngcono_14_N = mkN "ngcono" C14 ; + ngcuba_9_10_N = mkN "ngcuba" C9_10 ; + ngculazi_9_N = mkN "ngculazi" C9_10 ; + ngcungu_9_10_N = mkN "ngcungu" C9_10 ; + ngcwaba_5_6_N = mkN "ngcwaba" C5_6 ; + ngcwabo_3_4_N = mkN "ngcwabo" C3_4 ; + ngcwele_9_N = mkN "ngcwele" C9_10 ; + ngcweti_14_N = mkN "ngcweti" C14 ; + ngcwi_3_4_N = mkN "ngcwi" C3_4 ; + nge_3_4_N = mkN "nge" C3_4 ; + ngele_11_10_N = mkN "ngele" C11_10 ; + ngele_5_6_N = mkN "ngele" C5_6 ; + ngelosi_9_10_N = mkN "ngelosi" C9_10 ; + ngenandlini_3_N = mkN "ngenandlini" C3_4 ; + ngende_9_10_N = mkN "ngende" C9_10 ; + ngenela_3_4_N = mkN "ngenela" C3_4 ; + ngeni_3_N = mkN "ngeni" C3_4 ; + ngeniso_7_8_N = mkN "ngeniso" C7_8 ; + ngethe_6_N = mkN "ngethe" C5_6 ; + ngide_9_10_N = mkN "ngide" C9_10 ; + ngisi_5_6_N = mkN "ngisi" C5_6 ; + ngisi_7_N = mkN "ngisi" C7_8 ; + ngobe_5_6_N = mkN "ngobe" C5_6 ; + ngobese_9_10_N = mkN "ngobese" C9_10 ; + ngobo_9_10_N = mkN "ngobo" C9_10 ; + ngoma_14_N = mkN "ngoma" C14 ; + ngoma_1_2_N = mkN "ngoma" C1_2 ; + ngoma_9_10_N = mkN "ngoma" C9_10 ; + ngomuso_9_N = mkN "ngomuso" C9_10 ; + ngonyama_9_10_N = mkN "ngonyama" C9_10 ; + ngovolo_9_10_N = mkN "ngovolo" C9_10 ; + ngoye_11_N = mkN "ngoye" C11_10 ; + ngozi_14_N = mkN "ngozi" C14 ; + ngozi_9_10_N = mkN "ngozi" C9_10 ; + ngqakala_9_10_N = mkN "ngqakala" C9_10 ; + ngqanga_6_N = mkN "ngqanga" C5_6 ; + ngqangqa_5_6_N = mkN "ngqangqa" C5_6 ; + ngqangqa_9_10_N = mkN "ngqangqa" C9_10 ; + ngqayingqayi_14_N = mkN "ngqayingqayi" C14 ; + ngqayizivele_9_N = mkN "ngqayizivele" C9_10 ; + ngqephu_9_10_N = mkN "ngqephu" C9_10 ; + ngqi_11_N = mkN "ngqi" C11_10 ; + ngqikithi_9_10_N = mkN "ngqikithi" C9_10 ; + ngqinamba_9_10_N = mkN "ngqinamba" C9_10 ; + ngqofa_9_10_N = mkN "ngqofa" C9_10 ; + ngqongqo_14_N = mkN "ngqongqo" C14 ; + ngqoqwane_11_N = mkN "ngqoqwane" C11_10 ; + ngqungqulu_9_10_N = mkN "ngqungqulu" C9_10 ; + ngquphane_3_4_N = mkN "ngquphane" C3_4 ; + ngquthu_9_10_N = mkN "ngquthu" C9_10 ; + ngqwashi_9_10_N = mkN "ngqwashi" C9_10 ; + ngqwele_9_10_N = mkN "ngqwele" C9_10 ; + ngubo_9_10_N = mkN "ngubo" C9_10 ; + ngulube_9_10_N = mkN "ngulube" C9_10 ; + ngunaphakade_11_N = mkN "ngunaphakade" C11_10 ; + ngungumbane_9_10_N = mkN "ngungumbane" C9_10 ; + nguni_1_2_N = mkN "nguni" C1_2 ; + ngwazi_7_8_N = mkN "ngwazi" C7_8 ; + ngwe_6_N = mkN "ngwe" C5_6 ; + ngwe_9_10_N = mkN "ngwe" C9_10 ; + ngwevu_14_N = mkN "ngwevu" C14 ; + ngwevu_6_N = mkN "ngwevu" C5_6 ; + ngwevu_9_10_N = mkN "ngwevu" C9_10 ; + ngxabano_9_10_N = mkN "ngxabano" C9_10 ; + ngxenye_9_N = mkN "ngxenye" C9_10 ; + ngxenye_9_10_N = mkN "ngxenye" C9_10 ; + ngxoxo_9_10_N = mkN "ngxoxo" C9_10 ; + nhla_9_N = mkN "nhla" C9_10 ; + nhlanhla_9_10_N = mkN "nhlanhla" C9_10 ; + nhlendla_9_10_N = mkN "nhlendla" C9_10 ; + nikazi_14_N = mkN "nikazi" C14 ; + nikazi_1_2_N = mkN "nikazi" C1_2 ; + nikeli_1_2_N = mkN "nikeli" C1_2 ; + nikelo_3_4_N = mkN "nikelo" C3_4 ; + nikinikana_5_6_N = mkN "nikinikana" C5_6 ; + nikiniki_14_N = mkN "nikiniki" C14 ; + nikiniki_6_N = mkN "nikiniki" C5_6 ; + nina_14_N = mkN "nina" C14 ; + nina_5_6_N = mkN "nina" C5_6 ; + ninakhulu_9_N = mkN "ninakhulu" C9_10 ; + ningi_14_N = mkN "ningi" C14 ; + ningi_3_4_N = mkN "ningi" C3_4 ; + ningi_9_N = mkN "ningi" C9_10 ; + ningizimu_9_N = mkN "ningizimu" C9_10 ; + ningo_9_10_N = mkN "ningo" C9_10 ; + nini_1_2_N = mkN "nini" C1_2 ; + nini_3_4_N = mkN "nini" C3_4 ; + nini_7_8_N = mkN "nini" C7_8 ; + ninimuzi_1_2_N = mkN "ninimuzi" C1_2 ; + ninindlu_3_N = mkN "ninindlu" C3_4 ; + niningo_3_4_N = mkN "niningo" C3_4 ; + niningwane_3_4_N = mkN "niningwane" C3_4 ; + niniyo_1_2_N = mkN "niniyo" C1_2 ; + nja_14_N = mkN "nja" C14 ; + nja_9_10_N = mkN "nja" C9_10 ; + njalo_14_N = mkN "njalo" C14 ; + njalo_9_10_N = mkN "njalo" C9_10 ; + njani_14_N = mkN "njani" C14 ; + njini_9_10_N = mkN "njini" C9_10 ; + njoloba_9_10_N = mkN "njoloba" C9_10 ; + njonjo_3_4_N = mkN "njonjo" C3_4 ; + njunju_3_4_N = mkN "njunju" C3_4 ; + nkaba_9_10_N = mkN "nkaba" C9_10 ; + nkabi_9_10_N = mkN "nkabi" C9_10 ; + nkala_9_10_N = mkN "nkala" C9_10 ; + nkalankala_9_10_N = mkN "nkalankala" C9_10 ; + nkamba_9_10_N = mkN "nkamba" C9_10 ; + nkambabeyibuza_9_10_N = mkN "nkambabeyibuza" C9_10 ; + nkambiso_9_10_N = mkN "nkambiso" C9_10 ; + nkambo_9_10_N = mkN "nkambo" C9_10 ; + nkambu_9_10_N = mkN "nkambu" C9_10 ; + nkampani_9_10_N = mkN "nkampani" C9_10 ; + nkanankana_9_10_N = mkN "nkanankana" C9_10 ; + nkandla_9_N = mkN "nkandla" C9_10 ; + nkani_9_10_N = mkN "nkani" C9_10 ; + nkanka_6_N = mkN "nkanka" C5_6 ; + nkantsha_3_N = mkN "nkantsha" C3_4 ; + nkanyezi_9_10_N = mkN "nkanyezi" C9_10 ; + nkatho_9_N = mkN "nkatho" C9_10 ; + nkawu_9_10_N = mkN "nkawu" C9_10 ; + nkayiya_5_6_N = mkN "nkayiya" C5_6 ; + nkelenkele_9_10_N = mkN "nkelenkele" C9_10 ; + nkemba_7_8_N = mkN "nkemba" C7_8 ; + nkemba_9_10_N = mkN "nkemba" C9_10 ; + nkengane_5_6_N = mkN "nkengane" C5_6 ; + nkenke_3_4_N = mkN "nkenke" C3_4 ; + nkentshane_5_6_N = mkN "nkentshane" C5_6 ; + nkibaniso_9_10_N = mkN "nkibaniso" C9_10 ; + nkilikiqi_9_10_N = mkN "nkilikiqi" C9_10 ; + nkinobho_9_10_N = mkN "nkinobho" C9_10 ; + nkinsela_9_10_N = mkN "nkinsela" C9_10 ; + nkintsho_9_10_N = mkN "nkintsho" C9_10 ; + nkinyankinya_7_8_N = mkN "nkinyankinya" C7_8 ; + nkobo_9_10_N = mkN "nkobo" C9_10 ; + nkolo_9_10_N = mkN "nkolo" C9_10 ; + nkolombela_9_10_N = mkN "nkolombela" C9_10 ; + nkomishi_9_10_N = mkN "nkomishi" C9_10 ; + nkomponi_9_10_N = mkN "nkomponi" C9_10 ; + nkondlo_9_10_N = mkN "nkondlo" C9_10 ; + nkone_9_10_N = mkN "nkone" C9_10 ; + nkongolo_9_10_N = mkN "nkongolo" C9_10 ; + nkonjane_9_10_N = mkN "nkonjane" C9_10 ; + nkonkoni_9_10_N = mkN "nkonkoni" C9_10 ; + nkontileka_9_10_N = mkN "nkontileka" C9_10 ; + nkonyana_9_10_N = mkN "nkonyana" C9_10 ; + nkonyana_9_6_N = mkN "nkonyana" C9_6 ; + nkonyane_9_10_N = mkN "nkonyane" C9_10 ; + nkonyane_9_6_N = mkN "nkonyane" C9_6 ; + nkosa_9_10_N = mkN "nkosa" C9_10 ; + nkoza_9_10_N = mkN "nkoza" C9_10 ; + nkukhu_9_10_N = mkN "nkukhu" C9_10 ; + nkulungu_9_10_N = mkN "nkulungu" C9_10 ; + nkume_9_10_N = mkN "nkume" C9_10 ; + nkungu_9_10_N = mkN "nkungu" C9_10 ; + nkwa_7_8_N = mkN "nkwa" C7_8 ; + nkwali_9_N = mkN "nkwali" C9_10 ; + nkwali_9_10_N = mkN "nkwali" C9_10 ; + nkwantshu_9_10_N = mkN "nkwantshu" C9_10 ; + nkwe_7_8_N = mkN "nkwe" C7_8 ; + nofonofo_9_N = mkN "nofonofo" C9_10 ; + nokwe_7_8_N = mkN "nokwe" C7_8 ; + nombolo_9_10_N = mkN "nombolo" C9_10 ; + nomfi_9_N = mkN "nomfi" C9_10 ; + nomphela_11_N = mkN "nomphela" C11_10 ; + nomphelo_11_N = mkN "nomphelo" C11_10 ; + nongo_11_10_N = mkN "nongo" C11_10 ; + noni_5_6_N = mkN "noni" C5_6 ; + noni_9_10_N = mkN "noni" C9_10 ; + nono_14_N = mkN "nono" C14 ; + nono_5_6_N = mkN "nono" C5_6 ; + nothi_5_6_N = mkN "nothi" C5_6 ; + notho_3_N = mkN "notho" C3_4 ; + noveli_5_6_N = mkN "noveli" C5_6 ; + nqaba_9_10_N = mkN "nqaba" C9_10 ; + nqaku_6_N = mkN "nqaku" C5_6 ; + nqala_9_10_N = mkN "nqala" C9_10 ; + nqalanqala_7_8_N = mkN "nqalanqala" C7_8 ; + nqama_9_10_N = mkN "nqama" C9_10 ; + nqambothi_11_N = mkN "nqambothi" C11_10 ; + nqamu_6_N = mkN "nqamu" C5_6 ; + nqamu_7_8_N = mkN "nqamu" C7_8 ; + nqanawe_9_10_N = mkN "nqanawe" C9_10 ; + nqawe_7_8_N = mkN "nqawe" C7_8 ; + nqayi_3_4_N = mkN "nqayi" C3_4 ; + nqayi_5_6_N = mkN "nqayi" C5_6 ; + nqe_5_6_N = mkN "nqe" C5_6 ; + nqe_7_8_N = mkN "nqe" C7_8 ; + nqeni_7_8_N = mkN "nqeni" C7_8 ; + nqikanqika_6_N = mkN "nqikanqika" C5_6 ; + nqina_5_6_N = mkN "nqina" C5_6 ; + nqina_9_10_N = mkN "nqina" C9_10 ; + nqindi_7_8_N = mkN "nqindi" C7_8 ; + nqindi_9_10_N = mkN "nqindi" C9_10 ; + nqini_3_4_N = mkN "nqini" C3_4 ; + nqobo_5_6_N = mkN "nqobo" C5_6 ; + nqoboka_9_10_N = mkN "nqoboka" C9_10 ; + nqola_9_10_N = mkN "nqola" C9_10 ; + nqolobana_9_10_N = mkN "nqolobana" C9_10 ; + nqolobane_9_10_N = mkN "nqolobane" C9_10 ; + nqondo_3_4_N = mkN "nqondo" C3_4 ; + nqondo_5_6_N = mkN "nqondo" C5_6 ; + nqotho_8_N = mkN "nqotho" C7_8 ; + nqubo_9_10_N = mkN "nqubo" C9_10 ; + nqubu_9_10_N = mkN "nqubu" C9_10 ; + nqukuza_7_8_N = mkN "nqukuza" C7_8 ; + nqulu_9_10_N = mkN "nqulu" C9_10 ; + nquma_3_4_N = mkN "nquma" C3_4 ; + nquma_9_10_N = mkN "nquma" C9_10 ; + nqumo_3_4_N = mkN "nqumo" C3_4 ; + nqumo_7_8_N = mkN "nqumo" C7_8 ; + nqunu_14_N = mkN "nqunu" C14 ; + nqwaba_9_10_N = mkN "nqwaba" C9_10 ; + nsaba_9_10_N = mkN "nsaba" C9_10 ; + nsabula_9_10_N = mkN "nsabula" C9_10 ; + nsada_9_10_N = mkN "nsada" C9_10 ; + nsangu_9_N = mkN "nsangu" C9_10 ; + nsansa_8_N = mkN "nsansa" C7_8 ; + nsansa_9_10_N = mkN "nsansa" C9_10 ; + nselele_9_N = mkN "nselele" C9_10 ; + nselelo_9_10_N = mkN "nselelo" C9_10 ; + nselo_9_10_N = mkN "nselo" C9_10 ; + nsephe_9_10_N = mkN "nsephe" C9_10 ; + nsika_9_10_N = mkN "nsika" C9_10 ; + nsimango_9_10_N = mkN "nsimango" C9_10 ; + nsimba_9_N = mkN "nsimba" C9_10 ; + nsimbi_9_10_N = mkN "nsimbi" C9_10 ; + nsinde_9_N = mkN "nsinde" C9_10 ; + nsingizi_9_10_N = mkN "nsingizi" C9_10 ; + nsinsi_11_N = mkN "nsinsi" C11_10 ; + nsipho_8_N = mkN "nsipho" C7_8 ; + nsipho_9_10_N = mkN "nsipho" C9_10 ; + nsizwa_9_10_N = mkN "nsizwa" C9_10 ; + nso_9_10_N = mkN "nso" C9_10 ; + nsosha_9_10_N = mkN "nsosha" C9_10 ; + nsoyi_9_N = mkN "nsoyi" C9_10 ; + nsudu_9_10_N = mkN "nsudu" C9_10 ; + nsumansumane_9_10_N = mkN "nsumansumane" C9_10 ; + nsundu_9_10_N = mkN "nsundu" C9_10 ; + nsunguzi_9_10_N = mkN "nsunguzi" C9_10 ; + nsunsu_9_10_N = mkN "nsunsu" C9_10 ; + nsuze_9_10_N = mkN "nsuze" C9_10 ; + nta_9_10_N = mkN "nta" C9_10 ; + ntaba_9_10_N = mkN "ntaba" C9_10 ; + ntabakhe_1_2_N = mkN "ntabakhe" C1_2 ; + ntabami_1_2_N = mkN "ntabami" C1_2 ; + ntaka_9_10_N = mkN "ntaka" C9_10 ; + ntakababa_1_2_N = mkN "ntakababa" C1_2 ; + ntakwethu_1_2_N = mkN "ntakwethu" C1_2 ; + ntamo_9_10_N = mkN "ntamo" C9_10 ; + ntanakhe_1_2_N = mkN "ntanakhe" C1_2 ; + ntanakho_1_2_N = mkN "ntanakho" C1_2 ; + ntanami_1_2_N = mkN "ntanami" C1_2 ; + ntanami_3_N = mkN "ntanami" C3_4 ; + ntandane_9_10_N = mkN "ntandane" C9_10 ; + ntanegwababa_1_2_N = mkN "ntanegwababa" C1_2 ; + ntanethu_1_2_N = mkN "ntanethu" C1_2 ; + ntanga_9_10_N = mkN "ntanga" C9_10 ; + ntanomntanami_1_2_N = mkN "ntanomntanami" C1_2 ; + ntanomntanami_3_N = mkN "ntanomntanami" C3_4 ; + ntanomuntu_1_2_N = mkN "ntanomuntu" C1_2 ; + ntanta_11_10_N = mkN "ntanta" C11_10 ; + nteli_7_8_N = mkN "nteli" C7_8 ; + ntende_9_10_N = mkN "ntende" C9_10 ; + ntenesha_5_6_N = mkN "ntenesha" C5_6 ; + ntengantenga_9_10_N = mkN "ntengantenga" C9_10 ; + nti_9_N = mkN "nti" C9_10 ; + nto_11_N = mkN "nto" C11_10 ; + ntolibhantshi_9_10_N = mkN "ntolibhantshi" C9_10 ; + ntolwane_9_10_N = mkN "ntolwane" C9_10 ; + ntombazana_14_N = mkN "ntombazana" C14 ; + ntombazana_5_6_N = mkN "ntombazana" C5_6 ; + ntombazane_14_N = mkN "ntombazane" C14 ; + ntombazane_5_6_N = mkN "ntombazane" C5_6 ; + ntombi_14_N = mkN "ntombi" C14 ; + ntonga_9_10_N = mkN "ntonga" C9_10 ; + ntongela_5_6_N = mkN "ntongela" C5_6 ; + ntongomane_5_6_N = mkN "ntongomane" C5_6 ; + ntonjana_9_10_N = mkN "ntonjana" C9_10 ; + ntsha_14_N = mkN "ntsha" C14 ; + ntshakaza_9_10_N = mkN "ntshakaza" C9_10 ; + ntshe_9_10_N = mkN "ntshe" C9_10 ; + ntshebe_9_10_N = mkN "ntshebe" C9_10 ; + ntshongo_9_10_N = mkN "ntshongo" C9_10 ; + ntshontsho_5_6_N = mkN "ntshontsho" C5_6 ; + ntu_11_N = mkN "ntu" C11_10 ; + ntu_14_N = mkN "ntu" C14 ; + ntu_1_2_N = mkN "ntu" C1_2 ; + ntu_7_N = mkN "ntu" C7_8 ; + ntukazana_1_2_N = mkN "ntukazana" C1_2 ; + ntulo_9_10_N = mkN "ntulo" C9_10 ; + ntungwa_1_2_N = mkN "ntungwa" C1_2 ; + ntungwa_5_6_N = mkN "ntungwa" C5_6 ; + ntuthuko_9_10_N = mkN "ntuthuko" C9_10 ; + ntuthwane_9_10_N = mkN "ntuthwane" C9_10 ; + ntwakuntwaku_9_10_N = mkN "ntwakuntwaku" C9_10 ; + ntwala_9_10_N = mkN "ntwala" C9_10 ; + ntwana_14_N = mkN "ntwana" C14 ; + ntwana_1_2_N = mkN "ntwana" C1_2 ; + nuka_3_4_N = mkN "nuka" C3_4 ; + nuke_7_8_N = mkN "nuke" C7_8 ; + nuku_14_N = mkN "nuku" C14 ; + numzana_1_2_N = mkN "numzana" C1_2 ; + numzane_1_2_N = mkN "numzane" C1_2 ; + nungu_11_10_N = mkN "nungu" C11_10 ; + nungu_7_8_N = mkN "nungu" C7_8 ; + nungu_9_10_N = mkN "nungu" C9_10 ; + nunu_9_10_N = mkN "nunu" C9_10 ; + nwabu_11_10_N = mkN "nwabu" C11_10 ; + nwe_3_4_N = mkN "nwe" C3_4 ; + nwe_7_N = mkN "nwe" C7_8 ; + nwele_11_10_N = mkN "nwele" C11_10 ; + nxa_3_4_N = mkN "nxa" C3_4 ; + nxa_5_6_N = mkN "nxa" C5_6 ; + nxa_9_10_N = mkN "nxa" C9_10 ; + nxanxathela_9_10_N = mkN "nxanxathela" C9_10 ; + nxeba_5_6_N = mkN "nxeba" C5_6 ; + nxele_14_N = mkN "nxele" C14 ; + nxele_17_N = mkN "nxele" C17 ; + nxele_7_N = mkN "nxele" C7_8 ; + nxenye_9_N = mkN "nxenye" C9_10 ; + nxephezelo_7_8_N = mkN "nxephezelo" C7_8 ; + nxi_7_N = mkN "nxi" C7_8 ; + nxiwa_5_6_N = mkN "nxiwa" C5_6 ; + nxuluma_5_6_N = mkN "nxuluma" C5_6 ; + nxuluma_9_10_N = mkN "nxuluma" C9_10 ; + nxusa_5_6_N = mkN "nxusa" C5_6 ; + nxushunxushu_9_10_N = mkN "nxushunxushu" C9_10 ; + nya_11_N = mkN "nya" C11_10 ; + nya_3_4_N = mkN "nya" C3_4 ; + nya_5_6_N = mkN "nya" C5_6 ; + nyaba_3_4_N = mkN "nyaba" C3_4 ; + nyaka_11_N = mkN "nyaka" C11_10 ; + nyaka_3_4_N = mkN "nyaka" C3_4 ; + nyakazo_3_4_N = mkN "nyakazo" C3_4 ; + nyala_6_N = mkN "nyala" C5_6 ; + nyalinyali_5_6_N = mkN "nyalinyali" C5_6 ; + nyama_3_N = mkN "nyama" C3_4 ; + nyama_7_N = mkN "nyama" C7_8 ; + nyama_9_10_N = mkN "nyama" C9_10 ; + nyamana_9_10_N = mkN "nyamana" C9_10 ; + nyamazane_9_10_N = mkN "nyamazane" C9_10 ; + nyamu_7_8_N = mkN "nyamu" C7_8 ; + nyanda_5_6_N = mkN "nyanda" C5_6 ; + nyanda_9_10_N = mkN "nyanda" C9_10 ; + nyandezulu_9_10_N = mkN "nyandezulu" C9_10 ; + nyanga_14_N = mkN "nyanga" C14 ; + nyanga_9_10_N = mkN "nyanga" C9_10 ; + nyango_3_4_N = mkELocN "nyango" C3_4 ; + nyani_3_4_N = mkN "nyani" C3_4 ; + nyathelo_5_6_N = mkN "nyathelo" C5_6 ; + nyathelo_7_8_N = mkN "nyathelo" C7_8 ; + nyathelo_9_10_N = mkN "nyathelo" C9_10 ; + nyathi_9_10_N = mkN "nyathi" C9_10 ; + nyawo_11_10_N = mkN "nyawo" C11_10 ; + nyazi_11_N = mkN "nyazi" C11_10 ; + nye_14_N = mkN "nye" C14 ; + nye_7_8_N = mkN "nye" C7_8 ; + nyela_5_6_N = mkN "nyela" C5_6 ; + nyele_5_6_N = mkN "nyele" C5_6 ; + nyelele_11_10_N = mkN "nyelele" C11_10 ; + nyembe_9_10_N = mkN "nyembe" C9_10 ; + nyembezi_11_10_N = mkN "nyembezi" C11_10 ; + nyengelezi_9_10_N = mkN "nyengelezi" C9_10 ; + nyeza_5_6_N = mkN "nyeza" C5_6 ; + nyezane_3_4_N = mkN "nyezane" C3_4 ; + nyezi_11_N = mkN "nyezi" C11_10 ; + nyobonyobo_11_10_N = mkN "nyobonyobo" C11_10 ; + nyoka_14_N = mkN "nyoka" C14 ; + nyoka_9_10_N = mkN "nyoka" C9_10 ; + nyokotho_7_8_N = mkN "nyokotho" C7_8 ; + nyoluka_11_N = mkN "nyoluka" C11_10 ; + nyombo_3_4_N = mkN "nyombo" C3_4 ; + nyonga_5_6_N = mkN "nyonga" C5_6 ; + nyonga_9_10_N = mkN "nyonga" C9_10 ; + nyongo_9_10_N = mkN "nyongo" C9_10 ; + nyoni_9_10_N = mkN "nyoni" C9_10 ; + nyoninco_14_N = mkN "nyoninco" C14 ; + nyosi_9_10_N = mkN "nyosi" C9_10 ; + nyovu_3_4_N = mkN "nyovu" C3_4 ; + nyu_3_N = mkN "nyu" C3_4 ; + nyuluka_9_10_N = mkN "nyuluka" C9_10 ; + nyumba_9_10_N = mkN "nyumba" C9_10 ; + nyumbazana_9_10_N = mkN "nyumbazana" C9_10 ; + nyumbazane_9_N = mkN "nyumbazane" C9_10 ; + nyunyana_9_10_N = mkN "nyunyana" C9_10 ; + nyuvesi_5_6_N = mkN "nyuvesi" C5_6 ; + nyuziphepha_5_6_N = mkN "nyuziphepha" C5_6 ; + nzi_6_N = mkN "nzi" C5_6 ; + nzima_11_N = mkN "nzima" C11_10 ; + nzima_14_N = mkN "nzima" C14 ; + nzima_7_8_N = mkN "nzima" C7_8 ; + nzima_9_10_N = mkN "nzima" C9_10 ; + nzimakazi_9_10_N = mkN "nzimakazi" C9_10 ; + nzonzo_5_6_N = mkN "nzonzo" C5_6 ; + nzulu_14_N = mkN "nzulu" C14 ; + nzulu_9_10_N = mkN "nzulu" C9_10 ; + oba_3_N = mkN "oba" C3_4 ; + oli_5_N = mkN "oli" C5_6 ; + omiso_7_N = mkN "omiso" C7_8 ; + ona_3_N = mkN "ona" C3_4 ; + ona_7_8_N = mkN "ona" C7_8 ; + onakali_7_8_N = mkN "onakali" C7_8 ; + onakalo_3_N = mkN "onakalo" C3_4 ; + ondli_1_2_N = mkN "ondli" C1_2 ; + ondlo_3_4_N = mkN "ondlo" C3_4 ; + ongameli_1_2_N = mkN "ongameli" C1_2 ; + ongi_1_2_N = mkN "ongi" C1_2 ; + ongo_3_N = mkN "ongo" C3_4 ; + ongo_3_4_N = mkN "ongo" C3_4 ; + ongo_7_8_N = mkN "ongo" C7_8 ; + oni_1_2_N = mkN "oni" C1_2 ; + oni_7_8_N = mkN "oni" C7_8 ; + oni_9_10_N = mkN "oni" C9_10 ; + ono_7_8_N = mkN "ono" C7_8 ; + onto_5_N = mkN "onto" C5_6 ; + onto_5_6_N = mkN "onto" C5_6 ; + opho_3_N = mkN "opho" C3_4 ; + ova_5_6_N = mkN "ova" C5_6 ; + oya_14_N = mkN "oya" C14 ; + oya_3_N = mkN "oya" C3_4 ; + pani_5_6_N = mkN "pani" C5_6 ; + pani_7_8_N = mkN "pani" C7_8 ; + pasi_5_6_N = mkN "pasi" C5_6 ; + payipi_5_6_N = mkN "payipi" C5_6 ; + pelesi_9_10_N = mkN "pelesi" C9_10 ; + peni_5_6_N = mkN "peni" C5_6 ; + pesheli_7_8_N = mkN "pesheli" C7_8 ; + pesheni_9_10_N = mkN "pesheni" C9_10 ; + petshisi_3_4_N = mkN "petshisi" C3_4 ; + pha_3_4_N = mkN "pha" C3_4 ; + phahla_11_10_N = mkN "phahla" C11_10 ; + phahla_5_6_N = mkN "phahla" C5_6 ; + phahla_9_10_N = mkN "phahla" C9_10 ; + phakama_5_6_N = mkN "phakama" C5_6 ; + phakamiso_7_8_N = mkN "phakamiso" C7_8 ; + phakathi_3_4_N = mkN "phakathi" C3_4 ; + phakathi_5_6_N = mkN "phakathi" C5_6 ; + phakethe_5_6_N = mkN "phakethe" C5_6 ; + phako_3_4_N = mkN "phako" C3_4 ; + phalafini_11_N = mkN "phalafini" C11_10 ; + phalamende_5_6_N = mkN "phalamende" C5_6 ; + phalaphala_7_8_N = mkN "phalaphala" C7_8 ; + phalishi_5_6_N = mkN "phalishi" C5_6 ; + phamba_9_10_N = mkN "phamba" C9_10 ; + phambano_7_8_N = mkN "phambano" C7_8 ; + phambeko_7_8_N = mkN "phambeko" C7_8 ; + phambili_3_4_N = mkN "phambili" C3_4 ; + phambosi_9_10_N = mkN "phambosi" C9_10 ; + phambu_9_10_N = mkN "phambu" C9_10 ; + phande_5_6_N = mkN "phande" C5_6 ; + phandla_7_8_N = mkN "phandla" C7_8 ; + phandla_9_10_N = mkN "phandla" C9_10 ; + phandle_6_N = mkN "phandle" C5_6 ; + phandleni_9_N = mkN "phandleni" C9_10 ; + phanga_7_8_N = mkN "phanga" C7_8 ; + phangela_5_6_N = mkN "phangela" C5_6 ; + phangi_1_2_N = mkN "phangi" C1_2 ; + phango_5_N = mkN "phango" C5_6 ; + phango_9_10_N = mkN "phango" C9_10 ; + phansi_1_2_N = mkN "phansi" C1_2 ; + phapha_7_8_N = mkN "phapha" C7_8 ; + phaphasi_5_6_N = mkN "phaphasi" C5_6 ; + phaphatheka_5_6_N = mkN "phaphatheka" C5_6 ; + phaphe_11_10_N = mkN "phaphe" C11_10 ; + phaphu_5_6_N = mkN "phaphu" C5_6 ; + phaqa_5_6_N = mkN "phaqa" C5_6 ; + phasela_5_6_N = mkN "phasela" C5_6 ; + phasika_5_N = mkN "phasika" C5_6 ; + phatha_11_10_N = mkN "phatha" C11_10 ; + phatha_3_4_N = mkN "phatha" C3_4 ; + phatha_5_6_N = mkN "phatha" C5_6 ; + phathe_11_N = mkN "phathe" C11_10 ; + phathi_1_2_N = mkN "phathi" C1_2 ; + phathimandla_7_8_N = mkN "phathimandla" C7_8 ; + phathiswa_1_2_N = mkN "phathiswa" C1_2 ; + phatho_9_10_N = mkN "phatho" C9_10 ; + phawu_11_10_N = mkN "phawu" C11_10 ; + phazamiso_7_8_N = mkN "phazamiso" C7_8 ; + phe_5_6_N = mkN "phe" C5_6 ; + phe_7_8_N = mkN "phe" C7_8 ; + phefu_7_8_N = mkN "phefu" C7_8 ; + phefumulo_3_4_N = mkN "phefumulo" C3_4 ; + phehla_9_10_N = mkN "phehla" C9_10 ; + phehlwa_9_10_N = mkN "phehlwa" C9_10 ; + pheka_7_8_N = mkN "pheka" C7_8 ; + phekepha_11_10_N = mkN "phekepha" C11_10 ; + pheki_1_2_N = mkN "pheki" C1_2 ; + phela_3_4_N = mkN "phela" C3_4 ; + phela_5_6_N = mkN "phela" C5_6 ; + phela_6_N = mkN "phela" C5_6 ; + phela_9_N = mkN "phela" C9_10 ; + phelasonto_9_10_N = mkN "phelasonto" C9_10 ; + phelekezeli_1_2_N = mkN "phelekezeli" C1_2 ; + phelo_3_N = mkN "phelo" C3_4 ; + pheme_3_4_N = mkN "pheme" C3_4 ; + phenama_7_8_N = mkN "phenama" C7_8 ; + phendulo_9_10_N = mkN "phendulo" C9_10 ; + phenyane_11_N = mkN "phenyane" C11_10 ; + phenyo_11_N = mkN "phenyo" C11_10 ; + phenyo_11_10_N = mkN "phenyo" C11_10 ; + phepha_5_6_N = mkN "phepha" C5_6 ; + phephandaba_5_6_N = mkN "phephandaba" C5_6 ; + phephelezi_11_10_N = mkN "phephelezi" C11_10 ; + phephethi_1_2_N = mkN "phephethi" C1_2 ; + phepho_7_8_N = mkN "phepho" C7_8 ; + phepho_9_10_N = mkN "phepho" C9_10 ; + phesenti_5_6_N = mkN "phesenti" C5_6 ; + phethe_7_8_N = mkN "phethe" C7_8 ; + phethelo_5_6_N = mkN "phethelo" C5_6 ; + phetho_3_4_N = mkN "phetho" C3_4 ; + phetho_7_8_N = mkN "phetho" C7_8 ; + phethu_7_8_N = mkN "phethu" C7_8 ; + phethu_9_10_N = mkN "phethu" C9_10 ; + phezulu_3_4_N = mkN "phezulu" C3_4 ; + phi_1_2_N = mkN "phi" C1_2 ; + phicabadala_9_10_N = mkN "phicabadala" C9_10 ; + phicaphicwano_7_8_N = mkN "phicaphicwano" C7_8 ; + phici_11_10_N = mkN "phici" C11_10 ; + phihli_7_8_N = mkN "phihli" C7_8 ; + phika_5_6_N = mkN "phika" C5_6 ; + phika_7_8_N = mkN "phika" C7_8 ; + phike_7_8_N = mkN "phike" C7_8 ; + phikeleli_7_8_N = mkN "phikeleli" C7_8 ; + phikiswano_9_10_N = mkN "phikiswano" C9_10 ; + phiko_11_10_N = mkN "phiko" C11_10 ; + phiko_5_6_N = mkN "phiko" C5_6 ; + phiko_9_10_N = mkN "phiko" C9_10 ; + phila_9_10_N = mkN "phila" C9_10 ; + philisi_5_6_N = mkN "philisi" C5_6 ; + philo_9_10_N = mkN "philo" C9_10 ; + phimbo_3_4_N = mkN "phimbo" C3_4 ; + phimbo_5_6_N = mkN "phimbo" C5_6 ; + phinda_9_10_N = mkN "phinda" C9_10 ; + phingo_7_8_N = mkN "phingo" C7_8 ; + phini_3_4_N = mkN "phini" C3_4 ; + phini_5_6_N = mkN "phini" C5_6 ; + phinifo_5_6_N = mkN "phinifo" C5_6 ; + phisi_5_6_N = mkN "phisi" C5_6 ; + phisi_9_10_N = mkN "phisi" C9_10 ; + phiso_11_10_N = mkN "phiso" C11_10 ; + phithi_11_10_N = mkN "phithi" C11_10 ; + phithi_5_N = mkN "phithi" C5_6 ; + phithi_5_6_N = mkN "phithi" C5_6 ; + phithi_9_N = mkN "phithi" C9_10 ; + phithiphithi_7_8_N = mkN "phithiphithi" C7_8 ; + phiva_5_6_N = mkN "phiva" C5_6 ; + phiwa_1_2_N = mkN "phiwa" C1_2 ; + phiwo_7_8_N = mkN "phiwo" C7_8 ; + pho_7_8_N = mkN "pho" C7_8 ; + phofana_9_10_N = mkN "phofana" C9_10 ; + phofu_14_N = mkN "phofu" C14 ; + phofu_7_8_N = mkN "phofu" C7_8 ; + phofu_9_10_N = mkN "phofu" C9_10 ; + phohlongo_7_N = mkN "phohlongo" C7_8 ; + phoko_11_N = mkN "phoko" C11_10 ; + phokophelo_9_10_N = mkN "phokophelo" C9_10 ; + pholela_5_6_N = mkN "pholela" C5_6 ; + phondo_11_10_N = mkN "phondo" C11_10 ; + phondo_5_6_N = mkN "phondo" C5_6 ; + phongo_7_8_N = mkN "phongo" C7_8 ; + phongo_9_10_N = mkN "phongo" C9_10 ; + phongolo_3_4_N = mkN "phongolo" C3_4 ; + phophoma_9_10_N = mkN "phophoma" C9_10 ; + phoqabulungu_9_10_N = mkN "phoqabulungu" C9_10 ; + phoqo_9_N = mkN "phoqo" C9_10 ; + phosiso_7_8_N = mkN "phosiso" C7_8 ; + photho_5_N = mkN "photho" C5_6 ; + phothwe_5_6_N = mkN "phothwe" C5_6 ; + phoyinti_5_6_N = mkN "phoyinti" C5_6 ; + phoyisa_5_6_N = mkN "phoyisa" C5_6 ; + phucuko_9_N = mkN "phucuko" C9_10 ; + phucuzeko_9_10_N = mkN "phucuzeko" C9_10 ; + phuhle_5_6_N = mkN "phuhle" C5_6 ; + phuku_7_8_N = mkN "phuku" C7_8 ; + phuku_9_10_N = mkN "phuku" C9_10 ; + phukuphuku_14_N = mkN "phukuphuku" C14 ; + phukuphuku_7_8_N = mkN "phukuphuku" C7_8 ; + phukuphukwana_7_8_N = mkN "phukuphukwana" C7_8 ; + phukuthu_7_8_N = mkN "phukuthu" C7_8 ; + phulukundlu_5_6_N = mkN "phulukundlu" C5_6 ; + phuma_5_6_N = mkN "phuma" C5_6 ; + phumalanga_9_N = mkN "phumalanga" C9_10 ; + phumela_3_4_N = mkN "phumela" C3_4 ; + phumelelo_9_10_N = mkN "phumelelo" C9_10 ; + phumputhe_9_10_N = mkN "phumputhe" C9_10 ; + phumulo_6_N = mkN "phumulo" C5_6 ; + phumulo_9_10_N = mkN "phumulo" C9_10 ; + phundu_7_8_N = mkN "phundu" C7_8 ; + phundu_9_10_N = mkN "phundu" C9_10 ; + phunga_5_6_N = mkN "phunga" C5_6 ; + phunga_7_8_N = mkN "phunga" C7_8 ; + phungo_3_4_N = mkN "phungo" C3_4 ; + phunzi_7_8_N = mkN "phunzi" C7_8 ; + phunzi_9_10_N = mkN "phunzi" C9_10 ; + phuphe_3_4_N = mkN "phuphe" C3_4 ; + phuphi_1_2_N = mkN "phuphi" C1_2 ; + phupho_5_6_N = mkN "phupho" C5_6 ; + phuphu_5_6_N = mkN "phuphu" C5_6 ; + phuphuma_5_6_N = mkN "phuphuma" C5_6 ; + phuphuma_7_8_N = mkN "phuphuma" C7_8 ; + phuphusi_5_6_N = mkN "phuphusi" C5_6 ; + phushu_5_N = mkN "phushu" C5_6 ; + phutha_5_6_N = mkN "phutha" C5_6 ; + phuthe_7_8_N = mkN "phuthe" C7_8 ; + phuthu_11_N = mkN "phuthu" C11_10 ; + phuthu_5_6_N = mkN "phuthu" C5_6 ; + phuzi_5_6_N = mkN "phuzi" C5_6 ; + phuzo_11_N = mkN "phuzo" C11_10 ; + phuzo_7_8_N = mkN "phuzo" C7_8 ; + phuzu_5_6_N = mkN "phuzu" C5_6 ; + piki_5_6_N = mkN "piki" C5_6 ; + pikili_7_8_N = mkN "pikili" C7_8 ; + piliyoni_7_8_N = mkN "piliyoni" C7_8 ; + pipi_5_6_N = mkN "pipi" C5_6 ; + piyane_11_10_N = mkN "piyane" C11_10 ; + poki_7_8_N = mkN "poki" C7_8 ; + poli_7_8_N = mkN "poli" C7_8 ; + politiki_5_6_N = mkN "politiki" C5_6 ; + poliyane_7_N = mkN "poliyane" C7_8 ; + posi_5_6_N = mkN "posi" C5_6 ; + potimende_5_6_N = mkN "potimende" C5_6 ; + pristi_14_N = mkN "pristi" C14 ; + pristi_1_2_N = mkN "pristi" C1_2 ; + profethi_1_2_N = mkN "profethi" C1_2 ; + pulangwe_5_6_N = mkN "pulangwe" C5_6 ; + pulani_5_6_N = mkN "pulani" C5_6 ; + pulazi_5_6_N = mkN "pulazi" C5_6 ; + puleti_5_6_N = mkN "puleti" C5_6 ; + pulupiti_5_6_N = mkN "pulupiti" C5_6 ; + pumalanga_5_N = mkELocN "pumalanga" C5_6 ; + punu_7_8_N = mkN "punu" C7_8 ; + putukezi_5_6_N = mkN "putukezi" C5_6 ; + qa_5_6_N = mkN "qa" C5_6 ; + qaba_14_N = mkN "qaba" C14 ; + qaba_5_6_N = mkN "qaba" C5_6 ; + qaba_9_10_N = mkN "qaba" C9_10 ; + qabetho_7_8_N = mkN "qabetho" C7_8 ; + qabunga_5_6_N = mkN "qabunga" C5_6 ; + qakala_5_6_N = mkN "qakala" C5_6 ; + qakala_9_10_N = mkN "qakala" C9_10 ; + qala_3_4_N = mkN "qala" C3_4 ; + qala_9_10_N = mkN "qala" C9_10 ; + qalabutho_9_10_N = mkN "qalabutho" C9_10 ; + qalaqala_5_6_N = mkN "qalaqala" C5_6 ; + qalekiso_7_8_N = mkN "qalekiso" C7_8 ; + qali_1_2_N = mkN "qali" C1_2 ; + qalo_7_8_N = mkN "qalo" C7_8 ; + qalothi_3_4_N = mkN "qalothi" C3_4 ; + qamama_14_N = mkN "qamama" C14 ; + qambi_1_2_N = mkN "qambi" C1_2 ; + qambi_5_6_N = mkN "qambi" C5_6 ; + qambi_9_10_N = mkN "qambi" C9_10 ; + qamelo_3_4_N = mkN "qamelo" C3_4 ; + qanda_5_6_N = mkN "qanda" C5_6 ; + qanduqandu_11_10_N = mkN "qanduqandu" C11_10 ; + qangala_3_4_N = mkN "qangala" C3_4 ; + qansa_3_4_N = mkN "qansa" C3_4 ; + qapheli_9_10_N = mkN "qapheli" C9_10 ; + qaqa_5_6_N = mkN "qaqa" C5_6 ; + qashi_1_2_N = mkN "qashi" C1_2 ; + qashi_5_6_N = mkN "qashi" C5_6 ; + qatha_14_N = mkN "qatha" C14 ; + qatha_5_6_N = mkN "qatha" C5_6 ; + qatha_7_8_N = mkN "qatha" C7_8 ; + qatha_9_10_N = mkN "qatha" C9_10 ; + qathe_5_6_N = mkN "qathe" C5_6 ; + qebelengwana_5_6_N = mkN "qebelengwana" C5_6 ; + qebelengwane_5_6_N = mkN "qebelengwane" C5_6 ; + qele_5_6_N = mkN "qele" C5_6 ; + qembe_5_6_N = mkN "qembe" C5_6 ; + qembu_5_6_N = mkN "qembu" C5_6 ; + qengqe_7_8_N = mkN "qengqe" C7_8 ; + qephu_7_8_N = mkN "qephu" C7_8 ; + qephu_9_10_N = mkN "qephu" C9_10 ; + qeqeshi_1_2_N = mkN "qeqeshi" C1_2 ; + qethu_5_N = mkN "qethu" C5_6 ; + qha_5_6_N = mkN "qha" C5_6 ; + qhabanga_5_6_N = mkN "qhabanga" C5_6 ; + qhalaqhala_14_N = mkN "qhalaqhala" C14 ; + qhalaqhala_5_6_N = mkN "qhalaqhala" C5_6 ; + qhamuka_5_6_N = mkN "qhamuka" C5_6 ; + qhasha_5_6_N = mkN "qhasha" C5_6 ; + qhathi_1_2_N = mkN "qhathi" C1_2 ; + qhawe_14_N = mkN "qhawe" C14 ; + qhawe_5_6_N = mkN "qhawe" C5_6 ; + qhaza_5_6_N = mkN "qhaza" C5_6 ; + qhaza_7_8_N = mkN "qhaza" C7_8 ; + qhekeko_11_10_N = mkN "qhekeko" C11_10 ; + qhele_3_4_N = mkN "qhele" C3_4 ; + qhewu_3_4_N = mkN "qhewu" C3_4 ; + qhikiza_5_6_N = mkN "qhikiza" C5_6 ; + qhimiza_6_N = mkN "qhimiza" C5_6 ; + qhinga_5_6_N = mkN "qhinga" C5_6 ; + qhingi_7_8_N = mkN "qhingi" C7_8 ; + qhino_3_4_N = mkN "qhino" C3_4 ; + qhobosho_7_8_N = mkN "qhobosho" C7_8 ; + qholo_5_6_N = mkN "qholo" C5_6 ; + qholosha_14_N = mkN "qholosha" C14 ; + qholosha_5_6_N = mkN "qholosha" C5_6 ; + qhoqho_7_8_N = mkN "qhoqho" C7_8 ; + qhotho_11_10_N = mkN "qhotho" C11_10 ; + qhubo_9_10_N = mkN "qhubo" C9_10 ; + qhubu_5_6_N = mkN "qhubu" C5_6 ; + qhude_5_6_N = mkN "qhude" C5_6 ; + qhudelwano_3_4_N = mkN "qhudelwano" C3_4 ; + qhugwane_5_6_N = mkN "qhugwane" C5_6 ; + qhulu_5_6_N = mkN "qhulu" C5_6 ; + qhume_11_N = mkN "qhume" C11_10 ; + qhume_5_6_N = mkN "qhume" C5_6 ; + qhuqho_11_N = mkN "qhuqho" C11_10 ; + qhuqhumbelo_3_4_N = mkN "qhuqhumbelo" C3_4 ; + qhuzu_5_6_N = mkN "qhuzu" C5_6 ; + qhwa_5_N = mkN "qhwa" C5_6 ; + qhwaga_7_8_N = mkN "qhwaga" C7_8 ; + qhwagi_5_6_N = mkN "qhwagi" C5_6 ; + qikili_7_8_N = mkN "qikili" C7_8 ; + qili_14_N = mkN "qili" C14 ; + qili_5_6_N = mkN "qili" C5_6 ; + qingo_3_4_N = mkN "qingo" C3_4 ; + qinisekiso_7_8_N = mkN "qinisekiso" C7_8 ; + qiniseko_7_8_N = mkN "qiniseko" C7_8 ; + qiniso_5_6_N = mkN "qiniso" C5_6 ; + qinti_7_8_N = mkN "qinti" C7_8 ; + qiqingo_3_4_N = mkN "qiqingo" C3_4 ; + qobo_11_N = mkN "qobo" C11_10 ; + qobo_3_4_N = mkN "qobo" C3_4 ; + qobo_5_6_N = mkN "qobo" C5_6 ; + qoka_3_4_N = mkN "qoka" C3_4 ; + qola_5_6_N = mkN "qola" C5_6 ; + qolo_5_6_N = mkELocN "qolo" C5_6 ; + qoma_5_6_N = mkN "qoma" C5_6 ; + qombothi_11_10_N = mkN "qombothi" C11_10 ; + qombothi_3_N = mkN "qombothi" C3_4 ; + qomondo_11_10_N = mkN "qomondo" C11_10 ; + qondisi_1_2_N = mkN "qondisi" C1_2 ; + qondo_11_N = mkN "qondo" C11_10 ; + qondo_3_4_N = mkN "qondo" C3_4 ; + qondo_5_6_N = mkN "qondo" C5_6 ; + qondo_9_10_N = mkN "qondo" C9_10 ; + qongo_3_4_N = mkN "qongo" C3_4 ; + qongo_7_8_N = mkN "qongo" C7_8 ; + qophi_1_2_N = mkN "qophi" C1_2 ; + qoqo_5_6_N = mkN "qoqo" C5_6 ; + qotho_14_N = mkN "qotho" C14 ; + qotho_5_6_N = mkN "qotho" C5_6 ; + qotho_9_10_N = mkN "qotho" C9_10 ; + qu_7_8_N = mkN "qu" C7_8 ; + quba_3_N = mkN "quba" C3_4 ; + quba_9_10_N = mkN "quba" C9_10 ; + qubekelaphambili_9_10_N = mkN "qubekelaphambili" C9_10 ; + qubu_11_10_N = mkN "qubu" C11_10 ; + qubu_5_6_N = mkN "qubu" C5_6 ; + qubu_7_N = mkN "qubu" C7_8 ; + qubula_5_6_N = mkN "qubula" C5_6 ; + qubulo_7_N = mkN "qubulo" C7_8 ; + qubulo_7_8_N = mkN "qubulo" C7_8 ; + qukaquka_7_8_N = mkN "qukaquka" C7_8 ; + qulu_3_4_N = mkN "qulu" C3_4 ; + qumama_7_8_N = mkN "qumama" C7_8 ; + qumbe_3_4_N = mkN "qumbe" C3_4 ; + qumbe_5_6_N = mkN "qumbe" C5_6 ; + qumbi_9_10_N = mkN "qumbi" C9_10 ; + qundu_7_8_N = mkN "qundu" C7_8 ; + qunga_11_10_N = mkN "qunga" C11_10 ; + qungo_7_8_N = mkN "qungo" C7_8 ; + qupha_5_6_N = mkN "qupha" C5_6 ; + quqaba_11_N = mkN "quqaba" C11_10 ; + ququ_5_N = mkN "ququ" C5_6 ; + ququmadevu_7_8_N = mkN "ququmadevu" C7_8 ; + qwabe_11_10_N = mkN "qwabe" C11_10 ; + qwabe_5_6_N = mkN "qwabe" C5_6 ; + qwayi_7_8_N = mkN "qwayi" C7_8 ; + qwayiba_3_4_N = mkN "qwayiba" C3_4 ; + qwembe_11_10_N = mkN "qwembe" C11_10 ; + qweqwe_11_10_N = mkN "qweqwe" C11_10 ; + randi_5_6_N = mkN "randi" C5_6 ; + rayisi_5_6_N = mkN "rayisi" C5_6 ; + rekhodi_5_6_N = mkN "rekhodi" C5_6 ; + rediyo_5_6_N = mkN "rediyo" C5_6 ; + rikhi_7_8_N = mkN "rikhi" C7_8 ; + riphabhuliki_5_6_N = mkN "riphabhuliki" C5_6 ; + sa_3_N = mkN "sa" C3_4 ; + sa_7_N = mkN "sa" C7_8 ; + saba_11_10_N = mkN "saba" C11_10 ; + saba_5_6_N = mkN "saba" C5_6 ; + sabalala_11_N = mkN "sabalala" C11_10 ; + sabatha_5_6_N = mkN "sabatha" C5_6 ; + saho_3_4_N = mkN "saho" C3_4 ; + saka_5_6_N = mkN "saka" C5_6 ; + sakazi_1_2_N = mkN "sakazi" C1_2 ; + sakazo_3_4_N = mkN "sakazo" C3_4 ; + salamuzi_5_6_N = mkN "salamuzi" C5_6 ; + salela_5_6_N = mkN "salela" C5_6 ; + salela_9_10_N = mkN "salela" C9_10 ; + salelo_9_10_N = mkN "salelo" C9_10 ; + sali_1_2_N = mkN "sali" C1_2 ; + salo_9_10_N = mkN "salo" C9_10 ; + sambatheka_9_10_N = mkN "sambatheka" C9_10 ; + samo_3_N = mkELocN "samo" C3_4 ; + sana_11_N = mkN "sana" C11_10 ; + sanga_3_4_N = mkN "sanga" C3_4 ; + sango_5_6_N = mkN "sango" C5_6 ; + sapho_11_N = mkN "sapho" C11_10 ; + sasa_5_6_N = mkN "sasa" C5_6 ; + sasane_3_4_N = mkN "sasane" C3_4 ; + sasasa_5_6_N = mkN "sasasa" C5_6 ; + savuleka_9_10_N = mkN "savuleka" C9_10 ; + sawoti_11_N = mkN "sawoti" C11_10 ; + sayensi_5_6_N = mkN "sayensi" C5_6 ; + sebe_11_N = mkN "sebe" C11_10 ; + sebe_3_4_N = mkN "sebe" C3_4 ; + sebenzi_1_2_N = mkN "sebenzi" C1_2 ; + sebenzi_3_4_N = mkN "sebenzi" C3_4 ; + sebenzi_7_8_N = mkN "sebenzi" C7_8 ; + sebenzo_9_10_N = mkN "sebenzo" C9_10 ; + sefo_7_8_N = mkN "sefo" C7_8 ; + sekela_11_N = mkN "sekela" C11_10 ; + sekela_5_6_N = mkN "sekela" C5_6 ; + sekelo_7_8_N = mkN "sekelo" C7_8 ; + sekisi_5_6_N = mkN "sekisi" C5_6 ; + seko_5_6_N = mkN "seko" C5_6 ; + sela_14_N = mkN "sela" C14 ; + sela_5_6_N = mkN "sela" C5_6 ; + sele_3_4_N = mkN "sele" C3_4 ; + sele_5_6_N = mkN "sele" C5_6 ; + sele_7_8_N = mkN "sele" C7_8 ; + selesele_5_6_N = mkN "selesele" C5_6 ; + selula_5_6_N = mkN "selula" C5_6 ; + selwa_11_10_N = mkN "selwa" C11_10 ; + selwa_5_6_N = mkN "selwa" C5_6 ; + seme_5_6_N = mkN "seme" C5_6 ; + sempu_5_6_N = mkN "sempu" C5_6 ; + sende_5_6_N = mkN "sende" C5_6 ; + sendo_3_N = mkN "sendo" C3_4 ; + senga_14_N = mkN "senga" C14 ; + sengane_9_10_N = mkN "sengane" C9_10 ; + sengi_9_10_N = mkN "sengi" C9_10 ; + sengwakazi_9_10_N = mkN "sengwakazi" C9_10 ; + senti_5_6_N = mkN "senti" C5_6 ; + sentu_11_N = mkN "sentu" C11_10 ; + sephe_9_10_N = mkN "sephe" C9_10 ; + sese_5_N = mkN "sese" C5_6 ; + seshi_1_2_N = mkN "seshi" C1_2 ; + sevisi_5_6_N = mkN "sevisi" C5_6 ; + sha_14_N = mkN "sha" C14 ; + sha_1_2_N = mkN "sha" C1_2 ; + shaba_11_N = mkN "shaba" C11_10 ; + shabalala_6_N = mkN "shabalala" C5_6 ; + shada_11_N = mkN "shada" C11_10 ; + shada_5_6_N = mkN "shada" C5_6 ; + shada_7_8_N = mkN "shada" C7_8 ; + shado_3_4_N = mkN "shado" C3_4 ; + shaka_5_6_N = mkN "shaka" C5_6 ; + shalofu_5_6_N = mkN "shalofu" C5_6 ; + shana_3_4_N = mkN "shana" C3_4 ; + shanelo_3_4_N = mkN "shanelo" C3_4 ; + shangane_11_10_N = mkN "shangane" C11_10 ; + shantshi_5_6_N = mkN "shantshi" C5_6 ; + shanyelo_3_4_N = mkN "shanyelo" C3_4 ; + shaqa_11_N = mkN "shaqa" C11_10 ; + shaqa_5_6_N = mkN "shaqa" C5_6 ; + shashalazi_5_6_N = mkN "shashalazi" C5_6 ; + shayakhothe_5_6_N = mkN "shayakhothe" C5_6 ; + shayelelo_7_8_N = mkN "shayelelo" C7_8 ; + shayeli_1_2_N = mkN "shayeli" C1_2 ; + shayelo_3_4_N = mkN "shayelo" C3_4 ; + shayi_1_2_N = mkN "shayi" C1_2 ; + shayo_3_4_N = mkN "shayo" C3_4 ; + shebo_7_8_N = mkN "shebo" C7_8 ; + sheduli_5_6_N = mkN "sheduli" C5_6 ; + sheke_5_6_N = mkN "sheke" C5_6 ; + shelelezi_14_N = mkN "shelelezi" C14 ; + shelezi_14_N = mkN "shelezi" C14 ; + shengele_3_4_N = mkN "shengele" C3_4 ; + sheshe_7_8_N = mkN "sheshe" C7_8 ; + sheshelengwana_3_4_N = mkN "sheshelengwana" C3_4 ; + sheshi_14_N = mkN "sheshi" C14 ; + sheshi_5_6_N = mkN "sheshi" C5_6 ; + shevu_11_N = mkN "shevu" C11_10 ; + sheya_5_6_N = mkN "sheya" C5_6 ; + shidi_5_6_N = mkN "shidi" C5_6 ; + shikashika_3_N = mkN "shikashika" C3_4 ; + shikishi_11_10_N = mkN "shikishi" C11_10 ; + shimane_7_8_N = mkN "shimane" C7_8 ; + shinga_14_N = mkN "shinga" C14 ; + shinga_5_6_N = mkN "shinga" C5_6 ; + shini_3_4_N = mkN "shini" C3_4 ; + shintsho_11_N = mkN "shintsho" C11_10 ; + shiqa_6_N = mkN "shiqa" C5_6 ; + shisa_5_6_N = mkN "shisa" C5_6 ; + shishi_7_8_N = mkN "shishi" C7_8 ; + shiya_3_4_N = mkN "shiya" C3_4 ; + shiya_5_6_N = mkN "shiya" C5_6 ; + shiyagalolunye_7_N = mkN "shiyagalolunye" C7_8 ; + shiyagalombili_7_N = mkN "shiyagalombili" C7_8 ; + shiyi_5_6_N = mkN "shiyi" C5_6 ; + shiza_3_4_N = mkN "shiza" C3_4 ; + shizi_11_N = mkN "shizi" C11_10 ; + sho_3_4_N = mkN "sho" C3_4 ; + sho_7_8_N = mkN "sho" C7_8 ; + shoba_5_6_N = mkN "shoba" C5_6 ; + shokobezi_1_2_N = mkN "shokobezi" C1_2 ; + shokolo_7_8_N = mkN "shokolo" C7_8 ; + sholo_7_8_N = mkN "sholo" C7_8 ; + shongololo_5_6_N = mkN "shongololo" C5_6 ; + shosha_7_8_N = mkN "shosha" C7_8 ; + shoshaphansi_3_4_N = mkN "shoshaphansi" C3_4 ; + shu_3_4_N = mkN "shu" C3_4 ; + shubo_3_N = mkN "shubo" C3_4 ; + shumayeli_1_2_N = mkN "shumayeli" C1_2 ; + shumayelo_9_10_N = mkN "shumayelo" C9_10 ; + shumi_5_6_N = mkN "shumi" C5_6 ; + shungu_3_4_N = mkN "shungu" C3_4 ; + shungu_5_6_N = mkN "shungu" C5_6 ; + shuqulo_3_4_N = mkN "shuqulo" C3_4 ; + shuqulu_3_4_N = mkN "shuqulu" C3_4 ; + shuqulu_7_8_N = mkN "shuqulu" C7_8 ; + shushu_6_N = mkN "shushu" C5_6 ; + shwa_3_4_N = mkN "shwa" C3_4 ; + shwa_5_6_N = mkN "shwa" C5_6 ; + shwamu_9_10_N = mkN "shwamu" C9_10 ; + shwapha_7_8_N = mkN "shwapha" C7_8 ; + shwe_3_4_N = mkN "shwe" C3_4 ; + si_11_N = mkN "si" C11_10 ; + si_14_N = mkN "si" C14 ; + si_3_N = mkN "si" C3_4 ; + si_5_6_N = mkN "si" C5_6 ; + si_7_N = mkN "si" C7_8 ; + siba_11_10_N = mkN "siba" C11_10 ; + sibekelo_7_8_N = mkN "sibekelo" C7_8 ; + sika_14_N = mkELocN "sika" C14 ; + sikazi_9_10_N = mkN "sikazi" C9_10 ; + siki_1_2_N = mkN "siki" C1_2 ; + sikisiki_11_N = mkN "sikisiki" C11_10 ; + siko_11_10_N = mkN "siko" C11_10 ; + siko_3_4_N = mkN "siko" C3_4 ; + siko_5_6_N = mkN "siko" C5_6 ; + sila_3_4_N = mkN "sila" C3_4 ; + sila_7_8_N = mkN "sila" C7_8 ; + sila_9_10_N = mkN "sila" C9_10 ; + silaha_5_6_N = mkN "silaha" C5_6 ; + silala_9_10_N = mkN "silala" C9_10 ; + sileti_5_6_N = mkN "sileti" C5_6 ; + siliva_5_6_N = mkN "siliva" C5_6 ; + simba_5_6_N = mkN "simba" C5_6 ; + simu_9_6_N = mkN "simu" C9_6 ; + sina_7_8_N = mkN "sina" C7_8 ; + sinda_5_6_N = mkN "sinda" C5_6 ; + sinda_9_10_N = mkN "sinda" C9_10 ; + sinde_5_N = mkN "sinde" C5_6 ; + sinde_5_6_N = mkN "sinde" C5_6 ; + sinde_7_8_N = mkN "sinde" C7_8 ; + sindisi_1_2_N = mkN "sindisi" C1_2 ; + sindo_3_4_N = mkN "sindo" C3_4 ; + sindo_7_8_N = mkN "sindo" C7_8 ; + singa_11_10_N = mkN "singa" C11_10 ; + singa_3_4_N = mkN "singa" C3_4 ; + singa_7_8_N = mkN "singa" C7_8 ; + singili_9_10_N = mkN "singili" C9_10 ; + singizane_3_4_N = mkN "singizane" C3_4 ; + singo_9_10_N = mkN "singo" C9_10 ; + sini_11_N = mkN "sini" C11_10 ; + sini_1_2_N = mkN "sini" C1_2 ; + sini_7_8_N = mkN "sini" C7_8 ; + sini_9_10_N = mkN "sini" C9_10 ; + sinini_7_8_N = mkN "sinini" C7_8 ; + sinsi_3_4_N = mkN "sinsi" C3_4 ; + sipha_3_4_N = mkN "sipha" C3_4 ; + sipha_5_6_N = mkN "sipha" C5_6 ; + sipho_9_10_N = mkN "sipho" C9_10 ; + siso_5_6_N = mkN "siso" C5_6 ; + sitashi_11_N = mkN "sitashi" C11_10 ; + sitha_5_6_N = mkN "sitha" C5_6 ; + sithelo_7_8_N = mkN "sithelo" C7_8 ; + siza_10_N = mkN "siza" C9_10 ; + siza_5_6_N = mkN "siza" C5_6 ; + sizakalo_9_10_N = mkN "sizakalo" C9_10 ; + size_7_8_N = mkN "size" C7_8 ; + sizi_11_N = mkN "sizi" C11_10 ; + sizi_1_2_N = mkN "sizi" C1_2 ; + sizi_3_4_N = mkN "sizi" C3_4 ; + sizi_9_10_N = mkN "sizi" C9_10 ; + sizo_11_N = mkN "sizo" C11_10 ; + so_14_N = mkN "so" C14 ; + so_3_N = mkN "so" C3_4 ; + so_5_6_N = mkN "iso" "amehlo" "esweni" "emehlweni" C5_6 ; + sobho_5_6_N = mkN "sobho" C5_6 ; + sobo_3_4_N = mkN "sobo" C3_4 ; + soco_3_4_N = mkN "soco" C3_4 ; + soka_5_6_N = mkN "soka" C5_6 ; + sokama_3_N = mkN "sokama" C3_4 ; + sokisi_5_6_N = mkN "sokisi" C5_6 ; + solo_11_N = mkN "solo" C11_10 ; + solo_11_10_N = mkN "solo" C11_10 ; + solo_5_6_N = mkN "solo" C5_6 ; + solo_9_10_N = mkN "solo" C9_10 ; + solokohlo_6_N = mkN "solokohlo" C5_6 ; + solwa_1_2_N = mkN "solwa" C1_2 ; + sombuluko_3_N = mkN "sombuluko" C3_4 ; + somi_5_6_N = mkN "somi" C5_6 ; + sondezeli_1_2_N = mkN "sondezeli" C1_2 ; + sondo_5_6_N = mkN "sondo" C5_6 ; + songa_5_6_N = mkN "songa" C5_6 ; + songela_5_6_N = mkN "songela" C5_6 ; + songo_11_10_N = mkN "songo" C11_10 ; + songo_5_6_N = mkN "songo" C5_6 ; + sonte_9_10_N = mkN "sonte" C9_10 ; + sonto_5_6_N = mkN "sonto" C5_6 ; + sonto_9_10_N = mkN "sonto" C9_10 ; + sosha_5_6_N = mkN "sosha" C5_6 ; + sotsha_5_6_N = mkN "sotsha" C5_6 ; + soyi_5_6_N = mkN "soyi" C5_6 ; + su_5_6_N = mkN "su" C5_6 ; + su_7_8_N = mkN "su" C7_8 ; + sudi_5_6_N = mkN "sudi" C5_6 ; + suka_3_4_N = mkN "suka" C3_4 ; + suku_11_N = mkN "suku" C11_10 ; + suku_11_10_N = mkN "suku" C11_10 ; + suku_14_N = mkN "suku" C14 ; + suku_3_4_N = mkN "suku" C3_4 ; + sukwana_11_10_N = mkN "sukwana" C11_10 ; + sukwana_14_N = mkN "sukwana" C14 ; + sulu_11_N = mkN "sulu" C11_10 ; + sulubezi_5_6_N = mkN "sulubezi" C5_6 ; + sululu_3_4_N = mkN "sululu" C3_4 ; + sulwa_3_4_N = mkN "sulwa" C3_4 ; + sumpa_5_6_N = mkN "sumpa" C5_6 ; + sumpa_9_10_N = mkN "sumpa" C9_10 ; + sundu_3_4_N = mkN "sundu" C3_4 ; + sundu_5_6_N = mkN "sundu" C5_6 ; + sungulo_11_10_N = mkN "sungulo" C11_10 ; + susa_7_8_N = mkN "susa" C7_8 ; + suthu_11_N = mkN "suthu" C11_10 ; + suthu_11_10_N = mkN "suthu" C11_10 ; + suthu_7_N = mkN "suthu" C7_8 ; + suzwane_3_4_N = mkN "suzwane" C3_4 ; + swakama_3_N = mkN "swakama" C3_4 ; + swani_3_4_N = mkN "swani" C3_4 ; + swani_9_10_N = mkN "swani" C9_10 ; + swayi_5_6_N = mkN "swayi" C5_6 ; + swazi_11_10_N = mkN "swazi" C11_10 ; + swazi_3_4_N = mkN "swazi" C3_4 ; + swazi_5_6_N = mkN "swazi" C5_6 ; + swe_11_10_N = mkN "swe" C11_10 ; + swebhu_7_8_N = mkN "swebhu" C7_8 ; + swela_5_6_N = mkN "swela" C5_6 ; + swelaboya_9_10_N = mkN "swelaboya" C9_10 ; + sweli_5_6_N = mkN "sweli" C5_6 ; + swelo_9_10_N = mkN "swelo" C9_10 ; + swenya_3_4_N = mkN "swenya" C3_4 ; + swenya_7_8_N = mkN "swenya" C7_8 ; + tafula_5_6_N = mkN "tafula" C5_6 ; + taladi_7_8_N = mkN "taladi" C7_8 ; + talagu_11_10_N = mkN "talagu" C11_10 ; + tambu_7_8_N = mkN "tambu" C7_8 ; + tapo_3_4_N = mkN "tapo" C3_4 ; + tasatasa_6_N = mkN "tasatasa" C5_6 ; + tata_3_4_N = mkN "tata" C3_4 ; + tatama_1_2_N = mkN "tatama" C1_2 ; + tate_3_4_N = mkN "tate" C3_4 ; + tatimende_7_8_N = mkN "tatimende" C7_8 ; + tebe_9_10_N = mkN "tebe" C9_10 ; + tebele_7_8_N = mkN "tebele" C7_8 ; + tebhe_5_6_N = mkN "tebhe" C5_6 ; + tebhisi_7_8_N = mkN "tebhisi" C7_8 ; + tekenteke_9_10_N = mkN "tekenteke" C9_10 ; + tekenya_5_6_N = mkN "tekenya" C5_6 ; + tekisi_5_6_N = mkN "tekisi" C5_6 ; + tekisi_9_6_N = mkN "tekisi" C9_6 ; + teku_11_N = mkN "teku" C11_10 ; + teku_11_10_N = mkN "teku" C11_10 ; + teleka_7_8_N = mkN "teleka" C7_8 ; + tembu_7_8_N = mkN "tembu" C7_8 ; + tende_5_6_N = mkN "tende" C5_6 ; + tende_7_8_N = mkN "tende" C7_8 ; + teshi_7_8_N = mkN "teshi" C7_8 ; + tezi_7_8_N = mkN "tezi" C7_8 ; + tha_11_N = mkN "tha" C11_10 ; + tha_14_N = mkN "tha" C14 ; + tha_7_8_N = mkN "tha" C7_8 ; + thabatha_5_6_N = mkN "thabatha" C5_6 ; + thabathaba_7_8_N = mkN "thabathaba" C7_8 ; + thafa_5_6_N = mkN "thafa" C5_6 ; + thakathaka_14_N = mkN "thakathaka" C14 ; + thakathi_14_N = mkN "thakathi" C14 ; + thakathi_1_2_N = mkN "thakathi" C1_2 ; + thakazelo_7_8_N = mkN "thakazelo" C7_8 ; + thaki_1_2_N = mkN "thaki" C1_2 ; + thala_3_4_N = mkN "thala" C3_4 ; + thala_5_6_N = mkN "thala" C5_6 ; + thalente_5_6_N = mkN "thalente" C5_6 ; + thambama_5_6_N = mkN "thambama" C5_6 ; + thambama_9_6_N = mkN "thambama" C9_6 ; + thambeka_3_4_N = mkN "thambeka" C3_4 ; + thambo_11_10_N = mkN "thambo" C11_10 ; + thambo_3_4_N = mkN "thambo" C3_4 ; + thambo_5_6_N = mkN "thambo" C5_6 ; + thambo_9_10_N = mkN "thambo" C9_10 ; + thamo_3_4_N = mkN "thamo" C3_4 ; + thamo_5_6_N = mkN "thamo" C5_6 ; + thanda_3_4_N = mkN "thanda" C3_4 ; + thandani_8_N = mkN "thandani" C7_8 ; + thandazo_3_4_N = mkN "thandazo" C3_4 ; + thandi_1_2_N = mkN "thandi" C1_2 ; + thando_11_N = mkN "thando" C11_10 ; + thando_9_10_N = mkN "thando" C9_10 ; + thandokazi_9_10_N = mkN "thandokazi" C9_10 ; + thandwa_7_8_N = mkN "thandwa" C7_8 ; + thanga_11_10_N = mkN "thanga" C11_10 ; + thanga_5_6_N = mkN "thanga" C5_6 ; + thanga_7_8_N = mkN "thanga" C7_8 ; + thangala_3_4_N = mkN "thangala" C3_4 ; + thange_5_6_N = mkN "thange" C5_6 ; + thango_11_10_N = mkN "thango" C11_10 ; + thani_5_6_N = mkN "thani" C5_6 ; + thantala_5_6_N = mkN "thantala" C5_6 ; + thanyana_3_4_N = mkN "thanyana" C3_4 ; + thaphuthaphu_14_N = mkN "thaphuthaphu" C14 ; + thatha_14_N = mkN "thatha" C14 ; + thatha_3_N = mkN "thatha" C3_4 ; + thatha_5_6_N = mkN "thatha" C5_6 ; + thatha_7_8_N = mkN "thatha" C7_8 ; + thathe_11_10_N = mkN "thathe" C11_10 ; + thathe_3_N = mkN "thathe" C3_4 ; + thathe_7_8_N = mkN "thathe" C7_8 ; + thathu_7_8_N = mkN "thathu" C7_8 ; + thawini_5_6_N = mkN "thawini" C5_6 ; + thawula_5_6_N = mkN "thawula" C5_6 ; + thaya_5_6_N = mkN "thaya" C5_6 ; + thayi_5_6_N = mkN "thayi" C5_6 ; + the_5_6_N = mkN "the" C5_6 ; + thebe_7_8_N = mkN "thebe" C7_8 ; + thebe_9_10_N = mkN "thebe" C9_10 ; + thekeli_1_2_N = mkN "thekeli" C1_2 ; + theketheke_5_6_N = mkN "theketheke" C5_6 ; + theku_5_6_N = mkN "theku" C5_6 ; + thela_9_10_N = mkN "thela" C9_10 ; + thelela_3_4_N = mkN "thelela" C3_4 ; + thelevishini_5_6_N = mkELocN "thelevishini" C5_6 ; + thelezi_14_N = mkN "thelezi" C14 ; + thelezi_9_10_N = mkN "thelezi" C9_10 ; + thelo_7_8_N = mkN "thelo" C7_8 ; + themba_5_6_N = mkN "themba" C5_6 ; + thembiso_7_8_N = mkN "thembiso" C7_8 ; + thembu_1_2_N = mkN "thembu" C1_2 ; + thembu_5_6_N = mkN "thembu" C5_6 ; + thembu_7_8_N = mkN "thembu" C7_8 ; + thende_5_6_N = mkN "thende" C5_6 ; + thende_7_8_N = mkN "thende" C7_8 ; + thendele_5_6_N = mkN "thendele" C5_6 ; + thengi_1_2_N = mkN "thengi" C1_2 ; + thengisi_1_2_N = mkN "thengisi" C1_2 ; + thengiso_9_10_N = mkN "thengiso" C9_10 ; + thengo_9_10_N = mkN "thengo" C9_10 ; + thethe_14_N = mkN "thethe" C14 ; + thethe_5_6_N = mkN "thethe" C5_6 ; + thethe_9_10_N = mkN "thethe" C9_10 ; + thethelelo_9_10_N = mkN "thethelelo" C9_10 ; + thetho_3_4_N = mkN "thetho" C3_4 ; + thethosisekelo_3_4_N = mkN "thethosisekelo" C3_4 ; + thethosivivinywa_3_4_N = mkN "thethosivivinywa" C3_4 ; + thi_11_10_N = mkN "thi" C11_10 ; + thi_14_N = mkN "thi" C14 ; + thi_3_4_N = mkN "thi" C3_4 ; + thibhathi_5_6_N = mkN "thibhathi" C5_6 ; + thikamezo_7_N = mkN "thikamezo" C7_8 ; + thiki_9_10_N = mkN "thiki" C9_10 ; + thikithi_11_10_N = mkN "thikithi" C11_10 ; + thikithi_5_6_N = mkN "thikithi" C5_6 ; + thilomu_5_6_N = mkN "thilomu" C5_6 ; + thimba_3_4_N = mkN "thimba" C3_4 ; + thimba_5_6_N = mkN "thimba" C5_6 ; + thina_14_N = mkN "thina" C14 ; + thingo_11_10_N = mkN "thingo" C11_10 ; + thini_3_4_N = mkN "thini" C3_4 ; + thini_5_6_N = mkN "thini" C5_6 ; + thinta_5_6_N = mkN "thinta" C5_6 ; + thintane_5_6_N = mkN "thintane" C5_6 ; + thinti_5_6_N = mkN "thinti" C5_6 ; + thinti_7_8_N = mkN "thinti" C7_8 ; + thiphilizi_7_8_N = mkN "thiphilizi" C7_8 ; + thishela_14_N = mkN "thishela" C14 ; + thisipuni_5_6_N = mkN "thisipuni" C5_6 ; + thithibala_7_8_N = mkN "thithibala" C7_8 ; + thithithi_7_8_N = mkN "thithithi" C7_8 ; + thixo_7_8_N = mkN "thixo" C7_8 ; + thiyo_7_8_N = mkN "thiyo" C7_8 ; + tho_11_N = mkN "tho" C11_10 ; + tho_11_10_N = mkN "tho" C11_10 ; + tho_7_8_N = mkN "tho" C7_8 ; + tho_9_10_N = mkN "tho" C9_10 ; + thobeko_9_N = mkN "thobeko" C9_10 ; + thofontofo_9_10_N = mkN "thofontofo" C9_10 ; + thohlongwana_7_8_N = mkN "thohlongwana" C7_8 ; + thokazi_11_10_N = mkN "thokazi" C11_10 ; + thokazi_7_8_N = mkN "thokazi" C7_8 ; + thokazi_9_10_N = mkN "thokazi" C9_10 ; + thokomalo_9_10_N = mkN "thokomalo" C9_10 ; + thokozo_9_N = mkN "thokozo" C9_10 ; + thokozo_9_10_N = mkN "thokozo" C9_10 ; + thola_5_6_N = mkN "thola" C5_6 ; + thola_9_10_N = mkN "thola" C9_10 ; + tholampilo_3_4_N = mkN "tholampilo" C3_4 ; + thole_3_4_N = mkN "thole" C3_4 ; + thole_5_6_N = mkN "thole" C5_6 ; + thole_7_8_N = mkN "thole" C7_8 ; + tholi_1_2_N = mkN "tholi" C1_2 ; + tholo_3_4_N = mkN "tholo" C3_4 ; + thombe_3_4_N = mkN "thombe" C3_4 ; + thombe_7_8_N = mkN "thombe" C7_8 ; + thombi_9_10_N = mkN "thombi" C9_10 ; + thombo_3_4_N = mkN "thombo" C3_4 ; + thombo_7_8_N = mkN "thombo" C7_8 ; + thombonkala_5_N = mkN "thombonkala" C5_6 ; + thombothi_3_4_N = mkN "thombothi" C3_4 ; + thondo_3_4_N = mkN "thondo" C3_4 ; + thondolo_9_10_N = mkN "thondolo" C9_10 ; + thonga_9_10_N = mkN "thonga" C9_10 ; + thongo_14_N = mkN "thongo" C14 ; + thongo_5_6_N = mkN "thongo" C5_6 ; + thongo_7_8_N = mkN "thongo" C7_8 ; + thonjana_9_10_N = mkN "thonjana" C9_10 ; + thonsela_3_4_N = mkN "thonsela" C3_4 ; + thonsi_5_6_N = mkN "thonsi" C5_6 ; + thontela_9_10_N = mkN "thontela" C9_10 ; + thonto_7_8_N = mkN "thonto" C7_8 ; + thonya_5_N = mkN "thonya" C5_6 ; + thoshi_5_6_N = mkN "thoshi" C5_6 ; + thotho_11_10_N = mkN "thotho" C11_10 ; + thothobala_7_8_N = mkN "thothobala" C7_8 ; + thothololo_9_10_N = mkN "thothololo" C9_10 ; + thuba_5_6_N = mkN "thuba" C5_6 ; + thuba_7_8_N = mkN "thuba" C7_8 ; + thuba_9_10_N = mkN "thuba" C9_10 ; + thube_5_6_N = mkN "thube" C5_6 ; + thubi_3_N = mkN "thubi" C3_4 ; + thukela_11_N = mkN "thukela" C11_10 ; + thukuthelo_9_N = mkN "thukuthelo" C9_10 ; + thukuthuku_7_8_N = mkN "thukuthuku" C7_8 ; + thuli_11_10_N = mkN "thuli" C11_10 ; + thulu_7_8_N = mkN "thulu" C7_8 ; + thuluzi_5_6_N = mkN "thuluzi" C5_6 ; + thulwa_5_6_N = mkN "thulwa" C5_6 ; + thuma_3_4_N = mkN "thuma" C3_4 ; + thumba_5_6_N = mkN "thumba" C5_6 ; + thumbanja_7_8_N = mkN "thumbanja" C7_8 ; + thumbi_1_2_N = mkN "thumbi" C1_2 ; + thumbu_11_10_N = mkN "thumbu" C11_10 ; + thumbu_14_N = mkN "thumbu" C14 ; + thumbu_3_N = mkN "thumbu" C3_4 ; + thumbu_5_6_N = mkN "thumbu" C5_6 ; + thumela_3_4_N = mkN "thumela" C3_4 ; + thuna_5_6_N = mkN "thuna" C5_6 ; + thunga_5_6_N = mkN "thunga" C5_6 ; + thungo_11_10_N = mkN "thungo" C11_10 ; + thungo_3_4_N = mkN "thungo" C3_4 ; + thungu_7_8_N = mkN "thungu" C7_8 ; + thungulu_3_4_N = mkN "thungulu" C3_4 ; + thungwa_9_10_N = mkN "thungwa" C9_10 ; + thunjwa_1_2_N = mkN "thunjwa" C1_2 ; + thunjwa_7_8_N = mkN "thunjwa" C7_8 ; + thuntu_14_N = mkN "thuntu" C14 ; + thunywa_1_2_N = mkN "thunywa" C1_2 ; + thunywa_7_8_N = mkN "thunywa" C7_8 ; + thunzi_3_4_N = mkN "thunzi" C3_4 ; + thunzi_5_6_N = mkN "thunzi" C5_6 ; + thunzi_7_8_N = mkN "thunzi" C7_8 ; + thupha_11_10_N = mkN "thupha" C11_10 ; + thupha_6_N = mkN "thupha" C5_6 ; + thupha_7_8_N = mkN "thupha" C7_8 ; + thuqasana_11_10_N = mkN "thuqasana" C11_10 ; + thuqu_3_4_N = mkN "thuqu" C3_4 ; + thusi_5_6_N = mkN "thusi" C5_6 ; + thutha_14_N = mkN "thutha" C14 ; + thutha_7_8_N = mkN "thutha" C7_8 ; + thuthu_11_N = mkN "thuthu" C11_10 ; + thuthu_14_N = mkN "thuthu" C14 ; + thuthu_9_10_N = mkN "thuthu" C9_10 ; + thuthuva_11_10_N = mkN "thuthuva" C11_10 ; + thwa_7_8_N = mkN "thwa" C7_8 ; + thwali_1_2_N = mkN "thwali" C1_2 ; + thwalo_3_4_N = mkN "thwalo" C3_4 ; + thwalume_3_N = mkN "thwalume" C3_4 ; + thwasa_5_6_N = mkN "thwasa" C5_6 ; + thwasahlobo_9_N = mkN "thwasahlobo" C9_10 ; + thwathwa_7_N = mkN "thwathwa" C7_8 ; + thwayithwayi_11_10_N = mkN "thwayithwayi" C11_10 ; + thwazi_3_4_N = mkN "thwazi" C3_4 ; + thwishi_5_6_N = mkN "thwishi" C5_6 ; + tibili_7_8_N = mkN "tibili" C7_8 ; + tifiketi_7_8_N = mkN "tifiketi" C7_8 ; + tilobho_7_8_N = mkN "tilobho" C7_8 ; + tilogo_5_6_N = mkN "tilogo" C5_6 ; + tilongo_5_6_N = mkN "tilongo" C5_6 ; + timela_7_8_N = mkN "timela" C7_8 ; + timu_7_8_N = mkN "timu" C7_8 ; + tini_7_8_N = mkN "tini" C7_8 ; + tiye_5_6_N = mkN "tiye" C5_6 ; + tobo_7_8_N = mkN "tobo" C7_8 ; + tofe_11_N = mkN "tofe" C11_10 ; + tofu_7_8_N = mkN "tofu" C7_8 ; + toho_5_6_N = mkN "toho" C5_6 ; + tokwe_7_8_N = mkN "tokwe" C7_8 ; + tolo_7_8_N = mkELocN "tolo" C7_8 ; + tolotolo_7_8_N = mkN "tolotolo" C7_8 ; + toti_3_N = mkN "toti" C3_4 ; + tsha_3_4_N = mkN "tsha" C3_4 ; + tsha_7_8_N = mkN "tsha" C7_8 ; + tsha_9_N = mkN "tsha" C9_10 ; + tshakaza_9_10_N = mkN "tshakaza" C9_10 ; + tshali_1_2_N = mkN "tshali" C1_2 ; + tshali_5_6_N = mkN "tshali" C5_6 ; + tshalo_7_8_N = mkN "tshalo" C7_8 ; + tshalo_8_N = mkN "tshalo" C7_8 ; + tshani_14_N = mkN "tshani" C14 ; + tshe_5_6_N = mkN "tshe" C5_6 ; + tsheke_11_N = mkN "tsheke" C11_10 ; + tsheketshe_5_6_N = mkN "tsheketshe" C5_6 ; + tsheko_3_4_N = mkN "tsheko" C3_4 ; + tshensi_5_6_N = mkN "tshensi" C5_6 ; + tshezi_3_4_N = mkN "tshezi" C3_4 ; + tshiki_3_N = mkN "tshiki" C3_4 ; + tshilo_5_6_N = mkN "tshilo" C5_6 ; + tshingo_3_4_N = mkN "tshingo" C3_4 ; + tshisekelo_9_N = mkN "tshisekelo" C9_10 ; + tshitshi_5_6_N = mkN "tshitshi" C5_6 ; + tshiyo_5_6_N = mkN "tshiyo" C5_6 ; + tshobe_5_6_N = mkN "tshobe" C5_6 ; + tshoko_11_10_N = mkN "tshoko" C11_10 ; + tshonalanga_5_N = mkELocN "tshonalanga" C5_6 ; + tshudeni_7_8_N = mkN "tshudeni" C7_8 ; + tshumayelo_9_10_N = mkN "tshumayelo" C9_10 ; + tshumentshu_9_10_N = mkN "tshumentshu" C9_10 ; + tshwala_14_N = mkN "tshwala" C14 ; + tshwala_6_N = mkN "tshwala" C5_6 ; + tshwele_5_6_N = mkN "tshwele" C5_6 ; + tswayi_5_N = mkN "tswayi" C5_6 ; + tuba_11_10_N = mkN "tuba" C11_10 ; + tubesi_5_6_N = mkN "tubesi" C5_6 ; + tulo_7_8_N = mkN "tulo" C7_8 ; + tulu_7_8_N = mkN "tulu" C7_8 ; + tulwa_5_6_N = mkN "tulwa" C5_6 ; + twa_11_10_N = mkN "twa" C11_10 ; + twayi_11_N = mkN "twayi" C11_10 ; + twetwe_5_N = mkN "twetwe" C5_6 ; + -- ulu_1_6_N = mkN "ulu" C1_6 ; + ulu_5_N = mkN "ulu" C5_6 ; + ulu_7_N = mkN "ulu" C7_8 ; + ulu_7_8_N = mkN "ulu" C7_8 ; + una_5_N = mkN "una" C5_6 ; + uthu_7_8_N = mkN "uthu" C7_8 ; + va_3_4_N = mkN "va" C3_4 ; + va_5_6_N = mkN "va" C5_6 ; + vaba_9_10_N = mkN "vaba" C9_10 ; + vaka_14_N = mkN "vaka" C14 ; + vaka_5_6_N = mkN "vaka" C5_6 ; + vakashi_7_8_N = mkN "vakashi" C7_8 ; + vakazi_9_10_N = mkN "vakazi" C9_10 ; + valo_11_10_N = mkN "valo" C11_10 ; + valo_7_8_N = mkN "valo" C7_8 ; + vama_9_10_N = mkN "vama" C9_10 ; + vamisa_9_N = mkN "vamisa" C9_10 ; + vana_9_10_N = mkN "vana" C9_10 ; + vande_7_8_N = mkN "vande" C7_8 ; + vange_9_N = mkN "vange" C9_10 ; + vangeli_1_2_N = mkN "vangeli" C1_2 ; + vangeli_5_6_N = mkN "vangeli" C5_6 ; + vanzi_11_N = mkN "vanzi" C11_10 ; + vava_11_10_N = mkN "vava" C11_10 ; + ve_11_10_N = mkN "ve" C11_10 ; + velakancane_5_6_N = mkN "velakancane" C5_6 ; + velaphi_9_N = mkN "velaphi" C9_10 ; + velinqangi_1_N = mkN "velinqangi" C1_2 ; + velivelayo_1_2_N = mkN "velivelayo" C1_2 ; + velo_9_10_N = mkN "velo" C9_10 ; + vemvane_11_10_N = mkN "vemvane" C11_10 ; + vemvane_9_10_N = mkN "vemvane" C9_10 ; + vemve_3_4_N = mkN "vemve" C3_4 ; + venge_5_6_N = mkN "venge" C5_6 ; + veni_5_6_N = mkN "veni" C5_6 ; + vesi_5_6_N = mkN "vesi" C5_6 ; + veyili_5_6_N = mkN "veyili" C5_6 ; + veza_7_8_N = mkN "veza" C7_8 ; + vi_11_10_N = mkN "vi" C11_10 ; + vi_3_4_N = mkN "vi" C3_4 ; + vi_5_6_N = mkN "vi" C5_6 ; + vidiyo_5_6_N = mkN "vidiyo" C5_6 ; + vikeli_1_2_N = mkN "vikeli" C1_2 ; + viki_5_6_N = mkN "viki" C5_6 ; + viki_9_10_N = mkN "viki" C9_10 ; + vila_14_N = mkN "vila" C14 ; + vila_5_6_N = mkN "vila" C5_6 ; + vili_11_N = mkN "vili" C11_10 ; + vimba_14_N = mkN "vimba" C14 ; + vimba_9_10_N = mkN "vimba" C9_10 ; + vimbe_9_10_N = mkN "vimbe" C9_10 ; + vimbela_5_6_N = mkN "vimbela" C5_6 ; + vimbi_3_4_N = mkN "vimbi" C3_4 ; + vini_11_N = mkN "vini" C11_10 ; + vinini_7_8_N = mkN "vinini" C7_8 ; + vithi_9_10_N = mkN "vithi" C9_10 ; + vivane_7_8_N = mkN "vivane" C7_8 ; + vivi_11_N = mkN "vivi" C11_10 ; + vivi_7_N = mkN "vivi" C7_8 ; + vivinyo_7_8_N = mkN "vivinyo" C7_8 ; + viyo_3_4_N = mkN "viyo" C3_4 ; + viyo_5_6_N = mkN "viyo" C5_6 ; + vo_11_N = mkN "vo" C11_10 ; + vo_3_4_N = mkN "vo" C3_4 ; + vo_5_6_N = mkN "vo" C5_6 ; + vokwana_11_10_N = mkN "vokwana" C11_10 ; + vokwane_11_10_N = mkN "vokwane" C11_10 ; + volovolo_5_6_N = mkN "volovolo" C5_6 ; + voti_5_6_N = mkN "voti" C5_6 ; + vovo_5_6_N = mkN "vovo" C5_6 ; + vu_11_10_N = mkN "vu" C11_10 ; + vu_9_10_N = mkN "vu" C9_10 ; + vubelo_9_10_N = mkN "vubelo" C9_10 ; + vubu_9_10_N = mkN "vubu" C9_10 ; + vuka_5_6_N = mkN "vuka" C5_6 ; + vukazi_9_10_N = mkN "vukazi" C9_10 ; + vula_5_6_N = mkN "vula" C5_6 ; + vula_9_10_N = mkN "vula" C9_10 ; + vuma_3_4_N = mkN "vuma" C3_4 ; + vuma_9_10_N = mkN "vuma" C9_10 ; + vume_9_10_N = mkN "vume" C9_10 ; + vumeli_1_2_N = mkN "vumeli" C1_2 ; + vumelwana_7_8_N = mkN "vumelwana" C7_8 ; + vumelwano_7_8_N = mkN "vumelwano" C7_8 ; + vumi_1_2_N = mkN "vumi" C1_2 ; + vumi_9_10_N = mkN "vumi" C9_10 ; + vundlo_3_4_N = mkN "vundlo" C3_4 ; + vundo_9_10_N = mkN "vundo" C9_10 ; + vunga_9_N = mkN "vunga" C9_10 ; + vunge_3_4_N = mkN "vunge" C3_4 ; + vunge_9_N = mkN "vunge" C9_10 ; + vunguvungu_7_8_N = mkN "vunguvungu" C7_8 ; + vuni_1_2_N = mkN "vuni" C1_2 ; + vunulo_9_10_N = mkN "vunulo" C9_10 ; + vuselelo_9_10_N = mkN "vuselelo" C9_10 ; + vusi_1_2_N = mkN "vusi" C1_2 ; + vuso_5_6_N = mkN "vuso" C5_6 ; + vutha_5_6_N = mkN "vutha" C5_6 ; + vuthu_3_4_N = mkN "vuthu" C3_4 ; + vuthu_9_10_N = mkN "vuthu" C9_10 ; + vuthuluka_9_10_N = mkN "vuthuluka" C9_10 ; + vuthuthu_11_10_N = mkN "vuthuthu" C11_10 ; + vuthwa_5_6_N = mkN "vuthwa" C5_6 ; + vuthwamini_3_4_N = mkN "vuthwamini" C3_4 ; + vuvu_7_8_N = mkN "vuvu" C7_8 ; + vuzane_3_4_N = mkN "vuzane" C3_4 ; + vuzo_3_4_N = mkN "vuzo" C3_4 ; + wa_5_6_N = mkN "wa" C5_6 ; + wa_7_8_N = mkN "wa" C7_8 ; + waba_5_6_N = mkN "waba" C5_6 ; + waca_11_10_N = mkN "waca" C11_10 ; + wadi_5_6_N = mkN "wadi" C5_6 ; + wahlawahla_14_N = mkN "wahlawahla" C14 ; + waka_5_6_N = mkN "waka" C5_6 ; + wala_6_N = mkN "wala" C5_6 ; + wamba_11_10_N = mkN "wamba" C11_10 ; + wamba_5_6_N = mkN "wamba" C5_6 ; + wangala_11_10_N = mkN "wangala" C11_10 ; + wanqa_5_6_N = mkN "wanqa" C5_6 ; + waphu_5_6_N = mkN "waphu" C5_6 ; + washi_5_6_N = mkN "washi" C5_6 ; + wathanga_5_6_N = mkN "wathanga" C5_6 ; + wati_7_8_N = mkN "wati" C7_8 ; + wawa_5_6_N = mkN "wawa" C5_6 ; + wayini_5_6_N = mkN "wayini" C5_6 ; + wazi_5_6_N = mkN "wazi" C5_6 ; + wela_5_6_N = mkN "wela" C5_6 ; + wele_5_6_N = mkN "wele" C5_6 ; + welewele_14_N = mkN "welewele" C14 ; + weseli_14_N = mkN "weseli" C14 ; + weseli_5_6_N = mkN "weseli" C5_6 ; + wezi_5_6_N = mkN "wezi" C5_6 ; + widi_5_6_N = mkN "widi" C5_6 ; + windi_5_6_N = mkN "windi" C5_6 ; + wisa_5_6_N = mkN "wisa" C5_6 ; + wohlo_7_8_N = mkN "wohlo" C7_8 ; + woma_5_6_N = mkN "woma" C5_6 ; + wombe_5_6_N = mkN "wombe" C5_6 ; + wombe_7_8_N = mkN "wombe" C7_8 ; + wonga_5_6_N = mkN "wonga" C5_6 ; + wonke_11_N = mkN "wonke" C11_10 ; + wowane_3_4_N = mkN "wowane" C3_4 ; + wozawoza_5_6_N = mkN "wozawoza" C5_6 ; + wuba_5_6_N = mkN "wuba" C5_6 ; + wudlu_5_6_N = mkN "wudlu" C5_6 ; + wula_14_N = mkN "wula" C14 ; + wula_7_8_N = mkN "wula" C7_8 ; + wundlu_5_6_N = mkN "wundlu" C5_6 ; + xa_5_6_N = mkN "xa" C5_6 ; + xazululo_7_8_N = mkN "xazululo" C7_8 ; + xebe_7_8_N = mkN "xebe" C7_8 ; + xha_7_8_N = mkN "xha" C7_8 ; + xhafuxhafu_14_N = mkN "xhafuxhafu" C14 ; + xhaka_3_4_N = mkN "xhaka" C3_4 ; + xhala_5_6_N = mkN "xhala" C5_6 ; + xhama_5_6_N = mkN "xhama" C5_6 ; + xhanti_7_8_N = mkN "xhanti" C7_8 ; + xhaphaxhapha_5_6_N = mkN "xhaphaxhapha" C5_6 ; + xhaphozi_5_6_N = mkN "xhaphozi" C5_6 ; + xhasi_1_2_N = mkN "xhasi" C1_2 ; + xhaso_3_4_N = mkN "xhaso" C3_4 ; + xhaxha_11_N = mkN "xhaxha" C11_10 ; + xhegu_5_6_N = mkN "xhegu" C5_6 ; + xhiba_5_6_N = mkN "xhiba" C5_6 ; + xhiliba_3_4_N = mkN "xhiliba" C3_4 ; + xhobo_7_8_N = mkN "xhobo" C7_8 ; + xhokovu_5_6_N = mkN "xhokovu" C5_6 ; + xhumanisi_1_2_N = mkN "xhumanisi" C1_2 ; + xhumo_7_8_N = mkN "xhumo" C7_8 ; + xhwala_5_N = mkN "xhwala" C5_6 ; + xhwanguxhwangu_7_8_N = mkN "xhwanguxhwangu" C7_8 ; + xhwele_3_N = mkN "xhwele" C3_4 ; + xobho_5_6_N = mkN "xobho" C5_6 ; + xokoxoko_14_N = mkN "xokoxoko" C14 ; + xola_5_6_N = mkN "xola" C5_6 ; + xolo_11_N = mkN "xolo" C11_10 ; + xolo_5_6_N = mkN "xolo" C5_6 ; + xoxi_1_2_N = mkN "xoxi" C1_2 ; + xoxo_5_6_N = mkN "xoxo" C5_6 ; + xoxo_9_10_N = mkN "xoxo" C9_10 ; + xuku_7_8_N = mkN "xuku" C7_8 ; + xwexwe_7_8_N = mkN "xwexwe" C7_8 ; + ya_5_6_N = mkN "ya" C5_6 ; + yaba_11_10_N = mkN "yaba" C11_10 ; + yaca_11_N = mkN "yaca" C11_10 ; + yafu_11_N = mkN "yafu" C11_10 ; + yakatho_5_N = mkELocN "yakatho" C5_6 ; + yala_5_6_N = mkN "yala" C5_6 ; + yalelo_3_4_N = mkN "yalelo" C3_4 ; + yalelo_7_8_N = mkN "yalelo" C7_8 ; + yalezo_3_4_N = mkN "yalezo" C3_4 ; + yalo_3_4_N = mkN "yalo" C3_4 ; + yalo_7_8_N = mkN "yalo" C7_8 ; + yalu_11_10_N = mkN "yalu" C11_10 ; + yaluyalu_7_8_N = mkN "yaluyalu" C7_8 ; + yambazi_5_6_N = mkN "yambazi" C5_6 ; + ye_5_6_N = mkN "ye" C5_6 ; + yeke_7_8_N = mkN "yeke" C7_8 ; + yekelo_11_N = mkN "yekelo" C11_10 ; + yeko_3_4_N = mkN "yeko" C3_4 ; + yembe_5_6_N = mkN "yembe" C5_6 ; + yena_11_N = mkN "yena" C11_10 ; + yena_7_N = mkN "yena" C7_8 ; + yenda_5_6_N = mkN "yenda" C5_6 ; + yende_5_6_N = mkN "yende" C5_6 ; + yengo_11_10_N = mkN "yengo" C11_10 ; + yeni_1_2_N = mkN "yeni" C1_2 ; + yesi_5_6_N = mkN "yesi" C5_6 ; + yeza_5_6_N = mkN "yeza" C5_6 ; + yezane_3_4_N = mkN "yezane" C3_4 ; + yezi_5_6_N = mkN "yezi" C5_6 ; + yezi_7_8_N = mkN "yezi" C7_8 ; + yiba_11_N = mkN "yiba" C11_10 ; + yika_5_6_N = mkN "yika" C5_6 ; + yiko_5_6_N = mkN "yiko" C5_6 ; + yingelezi_7_8_N = mkN "yingelezi" C7_8 ; + yingilizi_7_8_N = mkN "yingilizi" C7_8 ; + yocu_3_4_N = mkN "yocu" C3_4 ; + yoyo_7_8_N = mkN "yoyo" C7_8 ; + yunithi_5_6_N = mkN "yunithi" C5_6 ; + yunivesithi_5_6_N = mkELocN "yunivesithi" C5_6 ; + za_11_10_N = mkN "za" C11_10 ; + za_5_6_N = mkN "za" C5_6 ; + za_7_8_N = mkN "za" C7_8 ; + zabalazo_3_4_N = mkN "zabalazo" C3_4 ; + zala_1_2_N = mkN "zala" C1_2 ; + zala_3_4_N = mkN "zala" C3_4 ; + zala_5_6_N = mkN "zala" C5_6 ; + zali_1_2_N = mkN "zali" C1_2 ; + zalo_11_N = mkN "zalo" C11_10 ; + zalo_9_10_N = mkN "zalo" C9_10 ; + zalwane_1_2_N = mkN "zalwane" C1_2 ; + zambane_5_6_N = mkN "zambane" C5_6 ; + zamo_3_4_N = mkN "zamo" C3_4 ; + zane_3_4_N = mkN "zane" C3_4 ; + zansi_1_2_N = mkN "zansi" C1_2 ; + zansi_3_N = mkN "zansi" C3_4 ; + zansi_5_6_N = mkN "zansi" C5_6 ; + zansi_9_N = mkN "zansi" C9_10 ; + zanyana_1_2_N = mkN "zanyana" C1_2 ; + zathu_7_8_N = mkN "zathu" C7_8 ; + zathula_9_10_N = mkN "zathula" C9_10 ; + zazi_14_N = mkN "zazi" C14 ; + ze_14_N = mkN "ze" C14 ; + ze_5_6_N = mkN "ze" C5_6 ; + zece_9_10_N = mkN "zece" C9_10 ; + zekeliso_3_4_N = mkN "zekeliso" C3_4 ; + zele_14_N = mkN "zele" C14 ; + zele_5_6_N = mkN "zele" C5_6 ; + zema_9_10_N = mkN "zema" C9_10 ; + zemazema_7_8_N = mkN "zemazema" C7_8 ; + zembe_5_6_N = mkN "zembe" C5_6 ; + zenze_5_6_N = mkN "zenze" C5_6 ; + zenze_7_8_N = mkN "zenze" C7_8 ; + zeze_5_6_N = mkN "zeze" C5_6 ; + zi_11_N = mkN "zi" C11_10 ; + zi_3_4_N = mkN "zi" C3_4 ; + zi_7_N = mkN "zi" C7_8 ; + ziba_7_8_N = mkN "ziba" C7_8 ; + zibe_9_10_N = mkN "zibe" C9_10 ; + zibuko_5_6_N = mkN "zibuko" C5_6 ; + zibulo_5_6_N = mkN "zibulo" C5_6 ; + ziko_5_6_N = mkELocN "ziko" C5_6 ; + ziko_7_8_N = mkN "ziko" C7_8 ; + zila_3_4_N = mkN "zila" C3_4 ; + zilo_5_6_N = mkN "zilo" C5_6 ; + zilo_9_N = mkN "zilo" C9_10 ; + zimba_3_4_N = mkN "zimba" C3_4 ; + zimba_5_6_N = mkN "zimba" C5_6 ; + zime_11_10_N = mkN "zime" C11_10 ; + zimu_5_6_N = mkN "zimu" C5_6 ; + zimuzimu_5_6_N = mkN "zimuzimu" C5_6 ; + zinda_7_8_N = mkN "zinda" C7_8 ; + zindlo_3_4_N = mkN "zindlo" C3_4 ; + zinga_5_6_N = mkN "zinga" C5_6 ; + zinga_9_10_N = mkN "zinga" C9_10 ; + zingathi_5_6_N = mkN "zingathi" C5_6 ; + zingeli_1_2_N = mkN "zingeli" C1_2 ; + zinyane_5_6_N = mkN "zinyane" C5_6 ; + zinyathi_3_N = mkN "zinyathi" C3_4 ; + zinyo_5_6_N = mkN "zinyo" C5_6 ; + zipho_11_10_N = mkN "zipho" C11_10 ; + zipho_5_6_N = mkN "zipho" C5_6 ; + ziyoni_14_N = mkN "ziyoni" C14 ; + zizi_5_6_N = mkN "zizi" C5_6 ; + zo_3_4_N = mkN "zo" C3_4 ; + zobe_7_8_N = mkN "zobe" C7_8 ; + zolo_11_N = mkN "zolo" C11_10 ; + zolo_5_6_N = mkN "zolo" C5_6 ; + zondo_3_4_N = mkN "zondo" C3_4 ; + zondo_9_10_N = mkN "zondo" C9_10 ; + zuko_3_4_N = mkN "zuko" C3_4 ; + zukulu_1_2_N = mkN "zukulu" C1_2 ; + zukulu_7_8_N = mkN "zukulu" C7_8 ; + zukulwana_7_8_N = mkN "zukulwana" C7_8 ; + zukulwane_7_8_N = mkN "zukulwane" C7_8 ; + zukuzuku_3_4_N = mkN "zukuzuku" C3_4 ; + zulu_14_N = mkN "zulu" C14 ; + zulu_3_N = mkN "zulu" C3_4 ; + zulu_5_N = mkN "zulu" C5_6 ; + zululwane_9_10_N = mkN "zululwane" C9_10 ; + zungu_11_10_N = mkN "zungu" C11_10 ; + zungu_7_N = mkN "zungu" C7_8 ; + zungulu_3_4_N = mkN "zungulu" C3_4 ; + zuzo_3_4_N = mkN "zuzo" C3_4 ; + zuzo_9_10_N = mkN "zuzo" C9_10 ; + zuzu_3_4_N = mkN "zuzu" C3_4 ; + zuzwana_3_4_N = mkN "zuzwana" C3_4 ; + zwa_11_10_N = mkN "zwa" C11_10 ; + zwa_3_4_N = mkN "zwa" C3_4 ; + zwa_9_10_N = mkN "zwa" C9_10 ; + zwabethi_9_10_N = mkN "zwabethi" C9_10 ; + zwambuzwambu_11_10_N = mkN "zwambuzwambu" C11_10 ; + zwangedwa_3_4_N = mkN "zwangedwa" C3_4 ; + zwani_11_10_N = mkN "zwani" C11_10 ; + zwani_5_6_N = mkN "zwani" C5_6 ; + zwathi_11_10_N = mkN "zwathi" C11_10 ; + zwe_14_N = mkN "zwe" C14 ; + zwe_5_6_N = mkN "zwe" C5_6 ; + zwe_7_8_N = mkN "zwe" C7_8 ; + zwekufa_5_6_N = mkN "zwekufa" C5_6 ; + zwela_11_N = mkN "zwela" C11_10 ; + zwelo_11_N = mkN "zwelo" C11_10 ; + zwelo_3_4_N = mkN "zwelo" C3_4 ; + zwelonke_5_N = mkN "zwelonke" C5_6 ; + zwi_5_6_N = mkN "zwi" C5_6 ; + zwibela_5_6_N = mkN "zwibela" C5_6 ; + zwilili_3_4_N = mkN "zwilili" C3_4 ; + + -- diminutives + agana_7_8_N = mkN "agana" C7_8 ; + agidlana_7_8_N = mkN "agidlana" C7_8 ; + alukazana_7_8_N = mkN "alukazana" C7_8 ; + andlana_7_8_N = mkN "andlana" C7_8 ; + andlwana_7_8_N = mkN "andlwana" C7_8 ; + badlana_3_4_N = mkN "badlana" C3_4 ; + balana_3_4_N = mkN "balana" C3_4 ; + bana_1a_2a_N = mkN "bana" C1a_2a ; + bangana_5_6_N = mkN "bangana" C5_6 ; + banganeni_5_6_N = mkN "banganeni" C5_6 ; + bazwana_9_10_N = mkN "bazwana" C9_10 ; + bekelana_7_8_N = mkN "bekelana" C7_8 ; + benjana_11_10_N = mkN "benjana" C11_10 ; + bhakwaneni_5_6_N = mkN "bhakwaneni" C5_6 ; + bhanjana_5_6_N = mkN "bhanjana" C5_6 ; + bhansana_5_6_N = mkN "bhansana" C5_6 ; + bhaxana_5_6_N = mkN "bhaxana" C5_6 ; + bhayana_5_6_N = mkN "bhayana" C5_6 ; + bhekana_1_2_N = mkN "bhekana" C1_2 ; + bhekana_5_6_N = mkN "bhekana" C5_6 ; + bheshwana_5_6_N = mkN "bheshwana" C5_6 ; + bhodlelana_5_6_N = mkN "bhodlelana" C5_6 ; + bhukwana_11_10_N = mkN "bhukwana" C11_10 ; + bhukwana_5_6_N = mkN "bhukwana" C5_6 ; + bhukwaneni_5_6_N = mkN "bhukwaneni" C5_6 ; + bhulohwana_5_6_N = mkN "bhulohwana" C5_6 ; + bhulukwana_5_6_N = mkN "bhulukwana" C5_6 ; + bhungwana_5_6_N = mkN "bhungwana" C5_6 ; + bhunywana_7_8_N = mkN "bhunywana" C7_8 ; + binjana_7_8_N = mkN "binjana" C7_8 ; + bizana_9_10_N = mkN "bizana" C9_10 ; + bomvana_5_6_N = mkN "bomvana" C5_6 ; + bonisana_1_2_N = mkN "bonisana" C1_2 ; + botshaneni_3_4_N = mkN "botshaneni" C3_4 ; + boyana_11_N = mkN "boyana" C11_10 ; + bukana_5_6_N = mkN "bukana" C5_6 ; + bukwana_7_8_N = mkN "bukwana" C7_8 ; + bushwana_5_6_N = mkN "bushwana" C5_6 ; + buzana_5_6_N = mkN "buzana" C5_6 ; + buzana_9_10_N = mkN "buzana" C9_10 ; + cabangwana_3_4_N = mkN "cabangwana" C3_4 ; + cajana_7_8_N = mkN "cajana" C7_8 ; + cana_7_8_N = mkN "cana" C7_8 ; + canyana_9_10_N = mkN "canyana" C9_10 ; + cathulwana_7_8_N = mkN "cathulwana" C7_8 ; + cengezana_3_4_N = mkN "cengezana" C3_4 ; + cezwana_11_10_N = mkN "cezwana" C11_10 ; + chachazwana_3_4_N = mkN "chachazwana" C3_4 ; + chakijana_1a_2a_N = mkN "chakijana" C1a_2a ; + chaphazana_5_6_N = mkN "chaphazana" C5_6 ; + chidlwana_3_4_N = mkN "chidlwana" C3_4 ; + chitshana_5_6_N = mkN "chitshana" C5_6 ; + cishana_9_10_N = mkN "cishana" C9_10 ; + conjwana_3_4_N = mkN "conjwana" C3_4 ; + cosana_9_10_N = mkN "cosana" C9_10 ; + cozana_9_10_N = mkN "cozana" C9_10 ; + cudlwana_5_6_N = mkN "cudlwana" C5_6 ; + cwana_3_4_N = mkN "cwana" C3_4 ; + dadlana_3_4_N = mkN "dadlana" C3_4 ; + dadlana_9_10_N = mkN "dadlana" C9_10 ; + dana_11_N = mkN "dana" C11_10 ; + datshana_11_10_N = mkN "datshana" C11_10 ; + datshana_9_10_N = mkN "datshana" C9_10 ; + detshana_9_10_N = mkN "detshana" C9_10 ; + dibilishana_9_10_N = mkN "dibilishana" C9_10 ; + dikiselwana_7_8_N = mkN "dikiselwana" C7_8 ; + dilingana_9_10_N = mkN "dilingana" C9_10 ; + dishana_9_10_N = mkN "dishana" C9_10 ; + dishaneni_9_10_N = mkN "dishaneni" C9_10 ; + dlakadlakana_5_6_N = mkN "dlakadlakana" C5_6 ; + dlana_11_N = mkN "dlana" C11_10 ; + dlana_7_8_N = mkN "dlana" C7_8 ; + dlanzana_5_6_N = mkN "dlanzana" C5_6 ; + dledlana_11_10_N = mkN "dledlana" C11_10 ; + dledlana_9_10_N = mkN "dledlana" C9_10 ; + dletshana_5_6_N = mkN "dletshana" C5_6 ; + dletshana_9_10_N = mkN "dletshana" C9_10 ; + dlolwana_1a_2a_N = mkN "dlolwana" C1a_2a ; + dodana_9_6_N = mkN "dodana" C9_6 ; + dodaneni_9_6_N = mkN "dodaneni" C9_6 ; + dombolwana_5_6_N = mkN "dombolwana" C5_6 ; + dongwana_11_N = mkN "dongwana" C11_10 ; + donsana_7_8_N = mkN "donsana" C7_8 ; + doshaneni_5_6_N = mkN "doshaneni" C5_6 ; + dudana_11_10_N = mkN "dudana" C11_10 ; + dukwana_11_10_N = mkN "dukwana" C11_10 ; + dukwana_9_10_N = mkN "dukwana" C9_10 ; + dunjana_7_8_N = mkN "dunjana" C7_8 ; + dunyana_5_6_N = mkN "dunyana" C5_6 ; + dunyana_9_10_N = mkN "dunyana" C9_10 ; + dutshana_3_4_N = mkN "dutshana" C3_4 ; + dwalana_5_6_N = mkN "dwalana" C5_6 ; + dwana_1a_2a_N = mkN "dwana" C1a_2a ; + dwana_5_6_N = mkN "dwana" C5_6 ; + dwana_9_10_N = mkN "dwana" C9_10 ; + ehlukwana_3_4_N = mkN "ehlukwana" C3_4 ; + fakazana_14_N = mkN "fakazana" C14 ; + fana_11_10_N = mkN "fana" C11_10 ; + fana_1_2_N = mkN "fana" C1_2 ; + fana_5_6_N = mkN "fana" C5_6 ; + fana_7_8_N = mkN "fana" C7_8 ; + fana_9_10_N = mkN "fana" C9_10 ; + fanyana_1_2_N = mkN "fanyana" C1_2 ; + fasitelana_5_6_N = mkN "fasitelana" C5_6 ; + fokazana_1_2_N = mkN "fokazana" C1_2 ; + fokozaneni_5_6_N = mkN "fokozaneni" C5_6 ; + fothongwaneni_7_8_N = mkN "fothongwaneni" C7_8 ; + fudlana_3_4_N = mkN "fudlana" C3_4 ; + fudlaneni_3_4_N = mkN "fudlaneni" C3_4 ; + funjwana_9_10_N = mkN "funjwana" C9_10 ; + funzana_1_2_N = mkN "funzana" C1_2 ; + fuqulwana_3_4_N = mkN "fuqulwana" C3_4 ; + fushana_5_6_N = mkN "fushana" C5_6 ; + futshana_7_8_N = mkN "futshana" C7_8 ; + futshaneni_7_8_N = mkN "futshaneni" C7_8 ; + gadlwana_9_10_N = mkN "gadlwana" C9_10 ; + gagana_9_10_N = mkN "gagana" C9_10 ; + gajana_9_10_N = mkN "gajana" C9_10 ; + gana_5_6_N = mkN "gana" C5_6 ; + ganyana_9_10_N = mkN "ganyana" C9_10 ; + gatshana_5_6_N = mkN "gatshana" C5_6 ; + gatshana_7_8_N = mkN "gatshana" C7_8 ; + gegana_7_8_N = mkN "gegana" C7_8 ; + geqelana_5_6_N = mkN "geqelana" C5_6 ; + gojana_7_8_N = mkN "gojana" C7_8 ; + gojwana_11_10_N = mkN "gojwana" C11_10 ; + goqwana_5_6_N = mkN "goqwana" C5_6 ; + gosana_9_10_N = mkN "gosana" C9_10 ; + gqokwana_7_8_N = mkN "gqokwana" C7_8 ; + gqunyana_5_6_N = mkN "gqunyana" C5_6 ; + gqunyaneni_5_6_N = mkN "gqunyaneni" C5_6 ; + gujana_7_8_N = mkN "gujana" C7_8 ; + gulana_7_8_N = mkN "gulana" C7_8 ; + gutshana_11_10_N = mkN "gutshana" C11_10 ; + gwagwana_3_4_N = mkN "gwagwana" C3_4 ; + gwaqwana_3_4_N = mkN "gwaqwana" C3_4 ; + gwegwana_5_6_N = mkN "gwegwana" C5_6 ; + gwetshana_5_6_N = mkN "gwetshana" C5_6 ; + hambelana_7_8_N = mkN "hambelana" C7_8 ; + hana_11_10_N = mkN "hana" C11_10 ; + hana_7_8_N = mkN "hana" C7_8 ; + hana_9_10_N = mkN "hana" C9_10 ; + helehelana_5_6_N = mkN "helehelana" C5_6 ; + hlahlana_7_8_N = mkN "hlahlana" C7_8 ; + hlamvana_11_10_N = mkN "hlamvana" C11_10 ; + hlana_11_10_N = mkN "hlana" C11_10 ; + hlana_14_N = mkN "hlana" C14 ; + hlangana_11_10_N = mkN "hlangana" C11_10 ; + hlangana_3_4_N = mkN "hlangana" C3_4 ; + hlangana_5_6_N = mkN "hlangana" C5_6 ; + hlanjana_3_4_N = mkN "hlanjana" C3_4 ; + hlansana_9_10_N = mkN "hlansana" C9_10 ; + hlanyana_3_4_N = mkN "hlanyana" C3_4 ; + hlashana_3_4_N = mkN "hlashana" C3_4 ; + hlashana_5_6_N = mkN "hlashana" C5_6 ; + hlashaneni_14_N = mkN "hlashaneni" C14 ; + hlatshaneni_3_4_N = mkN "hlatshaneni" C3_4 ; + hlayana_5_6_N = mkN "hlayana" C5_6 ; + hlazana_3_4_N = mkN "hlazana" C3_4 ; + hlokwana_9_10_N = mkN "hlokwana" C9_10 ; + hlonjana_5_6_N = mkN "hlonjana" C5_6 ; + hlonyana_5_6_N = mkN "hlonyana" C5_6 ; + hlotshana_11_10_N = mkN "hlotshana" C11_10 ; + hlulana_5_6_N = mkN "hlulana" C5_6 ; + hlungwana_14_N = mkN "hlungwana" C14 ; + hlwaneni_3_4_N = mkN "hlwaneni" C3_4 ; + hodlwana_3_4_N = mkN "hodlwana" C3_4 ; + hoshana_3_4_N = mkN "hoshana" C3_4 ; + hujana_3_4_N = mkN "hujana" C3_4 ; + hwanqana_5_6_N = mkN "hwanqana" C5_6 ; + iswana_5_6_N = mkN "iswana" C5_6 ; + jana_5_6_N = mkN "jana" C5_6 ; + jana_7_8_N = mkN "jana" C7_8 ; + jazana_5_6_N = mkN "jazana" C5_6 ; + jezana_5_6_N = mkN "jezana" C5_6 ; + jojwana_11_10_N = mkN "jojwana" C11_10 ; + jongwana_9_10_N = mkN "jongwana" C9_10 ; + julukwana_3_4_N = mkN "julukwana" C3_4 ; + junjana_7_8_N = mkN "junjana" C7_8 ; + kanyana_9_10_N = mkN "kanyana" C9_10 ; + kashana_9_10_N = mkN "kashana" C9_10 ; + kejana_5_6_N = mkN "kejana" C5_6 ; + kejaneni_5_6_N = mkN "kejaneni" C5_6 ; + kezwana_9_10_N = mkN "kezwana" C9_10 ; + khabethana_5_6_N = mkN "khabethana" C5_6 ; + khadlana_5_6_N = mkN "khadlana" C5_6 ; + khadlana_7_8_N = mkN "khadlana" C7_8 ; + khalwana_11_10_N = mkN "khalwana" C11_10 ; + khanjana_5_6_N = mkN "khanjana" C5_6 ; + khashana_5_6_N = mkN "khashana" C5_6 ; + khashana_7_8_N = mkN "khashana" C7_8 ; + khathakhathana_5_6_N = mkN "khathakhathana" C5_6 ; + khefana_5_6_N = mkN "khefana" C5_6 ; + khehlana_5_6_N = mkN "khehlana" C5_6 ; + khinjana_7_8_N = mkN "khinjana" C7_8 ; + khizwana_3_4_N = mkN "khizwana" C3_4 ; + khombisana_7_8_N = mkN "khombisana" C7_8 ; + khonkwaneni_7_8_N = mkN "khonkwaneni" C7_8 ; + khontshwana_3_4_N = mkN "khontshwana" C3_4 ; + khonyana_14_N = mkN "khonyana" C14 ; + khonywana_3_4_N = mkN "khonywana" C3_4 ; + khosana_14_N = mkN "khosana" C14 ; + khosana_9_6_N = mkN "khosana" C9_6 ; + khosanyana_9_6_N = mkN "khosanyana" C9_6 ; + khudlana_11_10_N = mkN "khudlana" C11_10 ; + khudlwana_1a_2a_N = mkN "khudlwana" C1a_2a ; + khukhwana_5_6_N = mkN "khukhwana" C5_6 ; + khumbuzana_7_8_N = mkN "khumbuzana" C7_8 ; + khutshana_3_4_N = mkN "khutshana" C3_4 ; + khwana_7_8_N = mkN "khwana" C7_8 ; + khwanyana_7_8_N = mkN "khwanyana" C7_8 ; + kodlana_7_8_N = mkN "kodlana" C7_8 ; + konyana_9_10_N = mkN "konyana" C9_10 ; + konyaneni_9_10_N = mkN "konyaneni" C9_10 ; + kosana_9_6_N = mkN "kosana" C9_6 ; + kotshana_5_6_N = mkN "kotshana" C5_6 ; + kulana_5_6_N = mkN "kulana" C5_6 ; + kunzana_9_10_N = mkN "kunzana" C9_10 ; + lana_1a_2a_N = mkN "lana" C1a_2a ; + landelana_1_2_N = mkN "landelana" C1_2 ; + lenzana_3_4_N = mkN "lenzana" C3_4 ; + lidlwana_3_4_N = mkN "lidlwana" C3_4 ; + lilwana_3_4_N = mkN "lilwana" C3_4 ; + lingana_7_8_N = mkN "lingana" C7_8 ; + lingwana_7_8_N = mkN "lingwana" C7_8 ; + lonyana_3_4_N = mkN "lonyana" C3_4 ; + loshana_3_4_N = mkN "loshana" C3_4 ; + loyana_11_N = mkN "loyana" C11_10 ; + lukulukwana_5_6_N = mkN "lukulukwana" C5_6 ; + lungana_5_6_N = mkN "lungana" C5_6 ; + lutshana_7_8_N = mkN "lutshana" C7_8 ; + lwaneni_7_8_N = mkN "lwaneni" C7_8 ; + lwanyana_7_8_N = mkN "lwanyana" C7_8 ; + madevana_1a_2a_N = mkN "madevana" C1a_2a ; + madlana_9_10_N = mkN "madlana" C9_10 ; + makwana_7_8_N = mkN "makwana" C7_8 ; + malukazana_1a_2a_N = mkN "malukazana" C1a_2a ; + mana_11_N = mkN "mana" C11_10 ; + mayelana_5_6_N = mkN "mayelana" C5_6 ; + mbana_1_2_N = mkN "mbana" C1_2 ; + mbanjana_11_10_N = mkN "mbanjana" C11_10 ; + mbazana_9_10_N = mkN "mbazana" C9_10 ; + melana_1_2_N = mkN "melana" C1_2 ; + memezana_3_4_N = mkN "memezana" C3_4 ; + mfimfana_9_10_N = mkN "mfimfana" C9_10 ; + mishana_5_6_N = mkN "mishana" C5_6 ; + mkhudlwana_1a_2a_N = mkN "mkhudlwana" C1a_2a ; + mnanjana_1a_2a_N = mkN "mnanjana" C1a_2a ; + mpana_9_10_N = mkN "mpana" C9_10 ; + mponjwana_9_10_N = mkN "mponjwana" C9_10 ; + mpushana_9_10_N = mkN "mpushana" C9_10 ; + ncanyana_5_6_N = mkN "ncanyana" C5_6 ; + ncwajana_9_10_N = mkN "ncwajana" C9_10 ; + ndana_11_N = mkN "ndana" C11_10 ; + ndawana_5_6_N = mkN "ndawana" C5_6 ; + ndawana_9_10_N = mkN "ndawana" C9_10 ; + ndawaneni_9_10_N = mkN "ndawaneni" C9_10 ; + ndinyana_7_8_N = mkN "ndinyana" C7_8 ; + ndinyana_9_10_N = mkN "ndinyana" C9_10 ; + ndlana_5_6_N = mkN "ndlana" C5_6 ; + ndledlana_1a_2a_N = mkN "ndledlana" C1a_2a ; + ndlwana_9_10_N = mkN "ndlwana" C9_10 ; + ndlwaneni_9_10_N = mkN "ndlwaneni" C9_10 ; + nenjana_5_6_N = mkN "nenjana" C5_6 ; + nganekwaneni_9_10_N = mkN "nganekwaneni" C9_10 ; + nganeni_7_8_N = mkN "nganeni" C7_8 ; + nganyana_1_2_N = mkN "nganyana" C1_2 ; + nganyana_9_10_N = mkN "nganyana" C9_10 ; + ngconywana_14_N = mkN "ngconywana" C14 ; + ngqofana_9_10_N = mkN "ngqofana" C9_10 ; + ngutshana_9_10_N = mkN "ngutshana" C9_10 ; + ngwaneni_5_6_N = mkN "ngwaneni" C5_6 ; + nhlana_9_10_N = mkN "nhlana" C9_10 ; + nikinikana_5_6_N = mkN "nikinikana" C5_6 ; + ningana_3_4_N = mkN "ningana" C3_4 ; + ningana_9_10_N = mkN "ningana" C9_10 ; + niningwaneni_3_4_N = mkN "niningwaneni" C3_4 ; + njana_9_10_N = mkN "njana" C9_10 ; + nkondlwana_9_10_N = mkN "nkondlwana" C9_10 ; + nkosana_9_10_N = mkN "nkosana" C9_10 ; + nkotshana_9_10_N = mkN "nkotshana" C9_10 ; + nkulungwaneni_9_10_N = mkN "nkulungwaneni" C9_10 ; + nkwana_7_8_N = mkN "nkwana" C7_8 ; + novelana_5_6_N = mkN "novelana" C5_6 ; + nqana_7_8_N = mkN "nqana" C7_8 ; + nqinyana_3_4_N = mkN "nqinyana" C3_4 ; + nqodlana_9_10_N = mkN "nqodlana" C9_10 ; + nqonjwaneni_5_6_N = mkN "nqonjwaneni" C5_6 ; + nqwatshana_9_10_N = mkN "nqwatshana" C9_10 ; + nsinjana_9_10_N = mkN "nsinjana" C9_10 ; + nsizwana_9_10_N = mkN "nsizwana" C9_10 ; + ntana_14_N = mkN "ntana" C14 ; + ntatshana_9_10_N = mkN "ntatshana" C9_10 ; + ntenjana_9_10_N = mkN "ntenjana" C9_10 ; + ntolibhantshana_9_10_N = mkN "ntolibhantshana" C9_10 ; + ntombazanyana_5_6_N = mkN "ntombazanyana" C5_6 ; + ntonjwana_1a_2a_N = mkN "ntonjwana" C1a_2a ; + ntshetshana_9_10_N = mkN "ntshetshana" C9_10 ; + ntuthwanyana_9_10_N = mkN "ntuthwanyana" C9_10 ; + ntwanyana_1_2_N = mkN "ntwanyana" C1_2 ; + nyakana_3_4_N = mkN "nyakana" C3_4 ; + nyamanyana_9_10_N = mkN "nyamanyana" C9_10 ; + nyana_11_N = mkN "nyana" C11_10 ; + nyana_1a_2a_N = mkN "nyana" C1a_2a ; + nyana_7_8_N = mkN "nyana" C7_8 ; + nyangana_9_10_N = mkN "nyangana" C9_10 ; + nyawana_11_10_N = mkN "nyawana" C11_10 ; + nzana_5_6_N = mkN "nzana" C5_6 ; + nzinyana_7_8_N = mkN "nzinyana" C7_8 ; + omlonyana_3_4_N = mkN "omlonyana" C3_4 ; + ongwana_7_8_N = mkN "ongwana" C7_8 ; + oyana_14_N = mkN "oyana" C14 ; + oyana_3_4_N = mkN "oyana" C3_4 ; + pahlana_9_10_N = mkN "pahlana" C9_10 ; + pandlana_9_10_N = mkN "pandlana" C9_10 ; + panjana_9_10_N = mkN "panjana" C9_10 ; + pawana_11_10_N = mkN "pawana" C11_10 ; + phalishana_5_6_N = mkN "phalishana" C5_6 ; + phana_5_6_N = mkN "phana" C5_6 ; + phandlana_7_8_N = mkN "phandlana" C7_8 ; + phangelana_5_6_N = mkN "phangelana" C5_6 ; + phaselana_5_6_N = mkN "phaselana" C5_6 ; + phefana_7_8_N = mkN "phefana" C7_8 ; + phefumudlwana_3_4_N = mkN "phefumudlwana" C3_4 ; + phelekezelana_1_2_N = mkN "phelekezelana" C1_2 ; + pheshana_5_6_N = mkN "pheshana" C5_6 ; + phithana_5_6_N = mkN "phithana" C5_6 ; + phongwana_7_8_N = mkN "phongwana" C7_8 ; + phonjwana_11_10_N = mkN "phonjwana" C11_10 ; + phothana_5_6_N = mkN "phothana" C5_6 ; + phukuphukwana_7_8_N = mkN "phukuphukwana" C7_8 ; + phukwana_7_8_N = mkN "phukwana" C7_8 ; + phunzana_7_8_N = mkN "phunzana" C7_8 ; + phushana_5_6_N = mkN "phushana" C5_6 ; + phushwana_5_6_N = mkN "phushwana" C5_6 ; + pikilana_7_8_N = mkN "pikilana" C7_8 ; + pikwana_11_10_N = mkN "pikwana" C11_10 ; + pofana_9_10_N = mkN "pofana" C9_10 ; + potimendana_5_6_N = mkN "potimendana" C5_6 ; + potimendaneni_5_6_N = mkN "potimendaneni" C5_6 ; + qana_5_6_N = mkN "qana" C5_6 ; + qandana_5_6_N = mkN "qandana" C5_6 ; + qansana_3_4_N = mkN "qansana" C3_4 ; + qashana_5_6_N = mkN "qashana" C5_6 ; + qelana_5_6_N = mkN "qelana" C5_6 ; + qenjana_5_6_N = mkN "qenjana" C5_6 ; + qeshana_7_8_N = mkN "qeshana" C7_8 ; + qeshaneni_7_8_N = mkN "qeshaneni" C7_8 ; + qhazana_7_8_N = mkN "qhazana" C7_8 ; + qhoshwana_11_10_N = mkN "qhoshwana" C11_10 ; + qhutshana_5_6_N = mkN "qhutshana" C5_6 ; + qonjwana_3_4_N = mkN "qonjwana" C3_4 ; + qoqwana_5_6_N = mkN "qoqwana" C5_6 ; + qulwana_3_4_N = mkN "qulwana" C3_4 ; + qwana_7_8_N = mkN "qwana" C7_8 ; + qwenjana_11_10_N = mkN "qwenjana" C11_10 ; + qweqwana_11_10_N = mkN "qweqwana" C11_10 ; + sakana_5_6_N = mkN "sakana" C5_6 ; + sana_11_N = mkN "sana" C11_10 ; + sana_5_6_N = mkN "sana" C5_6 ; + sebenzana_1_2_N = mkN "sebenzana" C1_2 ; + sebenzana_3_4_N = mkN "sebenzana" C3_4 ; + sedlana_3_4_N = mkN "sedlana" C3_4 ; + sentshana_5_6_N = mkN "sentshana" C5_6 ; + seyidlana_1a_2a_N = mkN "seyidlana" C1a_2a ; + shana_1_2_N = mkN "shana" C1_2 ; + shayana_1_2_N = mkN "shayana" C1_2 ; + shintshana_1a_2a_N = mkN "shintshana" C1a_2a ; + shinyana_3_4_N = mkN "shinyana" C3_4 ; + shukelana_1a_2a_N = mkN "shukelana" C1a_2a ; + shungwana_5_6_N = mkN "shungwana" C5_6 ; + shuqulwana_7_8_N = mkN "shuqulwana" C7_8 ; + sidlana_3_4_N = mkN "sidlana" C3_4 ; + sidlana_7_8_N = mkN "sidlana" C7_8 ; + sifana_1a_2a_N = mkN "sifana" C1a_2a ; + sinjana_9_10_N = mkN "sinjana" C9_10 ; + sinjwana_3_4_N = mkN "sinjwana" C3_4 ; + sizana_9_10_N = mkN "sizana" C9_10 ; + sondelana_1a_2a_N = mkN "sondelana" C1a_2a ; + songwana_5_6_N = mkN "songwana" C5_6 ; + sukwana_11_10_N = mkN "sukwana" C11_10 ; + sukwana_3_4_N = mkN "sukwana" C3_4 ; + sukwaneni_14_N = mkN "sukwaneni" C14 ; + sulubezana_5_6_N = mkN "sulubezana" C5_6 ; + sushwana_11_10_N = mkN "sushwana" C11_10 ; + swana_7_8_N = mkN "swana" C7_8 ; + tafulana_5_6_N = mkN "tafulana" C5_6 ; + tafulaneni_5_6_N = mkN "tafulaneni" C5_6 ; + tana_9_10_N = mkN "tana" C9_10 ; + tanjana_11_10_N = mkN "tanjana" C11_10 ; + tanjana_9_10_N = mkN "tanjana" C9_10 ; + tekentekana_9_10_N = mkN "tekentekana" C9_10 ; + teshana_7_8_N = mkN "teshana" C7_8 ; + teshana_9_10_N = mkN "teshana" C9_10 ; + thakashana_1_2_N = mkN "thakashana" C1_2 ; + thana_11_N = mkN "thana" C11_10 ; + thana_14_N = mkN "thana" C14 ; + thana_3_4_N = mkN "thana" C3_4 ; + thandana_1_2_N = mkN "thandana" C1_2 ; + thanjana_5_6_N = mkN "thanjana" C5_6 ; + thanyana_3_4_N = mkN "thanyana" C3_4 ; + thathana_11_10_N = mkN "thathana" C11_10 ; + thenjana_5_6_N = mkN "thenjana" C5_6 ; + theshwana_3_4_N = mkN "theshwana" C3_4 ; + thethana_5_6_N = mkN "thethana" C5_6 ; + thetshana_7_8_N = mkN "thetshana" C7_8 ; + thintana_5_6_N = mkN "thintana" C5_6 ; + thintana_7_8_N = mkN "thintana" C7_8 ; + thiphilizana_7_8_N = mkN "thiphilizana" C7_8 ; + thodlana_5_6_N = mkN "thodlana" C5_6 ; + tholana_5_6_N = mkN "tholana" C5_6 ; + thongwana_7_8_N = mkN "thongwana" C7_8 ; + thonjana_7_8_N = mkN "thonjana" C7_8 ; + thonjaneni_3_4_N = mkN "thonjaneni" C3_4 ; + thonselana_3_4_N = mkN "thonselana" C3_4 ; + thoyilethe_5_6_N = mkELocN "thoyilethe" C5_6 ; + thudlana_11_10_N = mkN "thudlana" C11_10 ; + thungana_5_6_N = mkN "thungana" C5_6 ; + thunjana_11_10_N = mkN "thunjana" C11_10 ; + thunjana_14_N = mkN "thunjana" C14 ; + thunzana_3_4_N = mkN "thunzana" C3_4 ; + thunzana_5_6_N = mkN "thunzana" C5_6 ; + thunzana_7_8_N = mkN "thunzana" C7_8 ; + thutshana_5_6_N = mkN "thutshana" C5_6 ; + thwadlana_1_2_N = mkN "thwadlana" C1_2 ; + todlwana_7_8_N = mkN "todlwana" C7_8 ; + tofana_11_N = mkN "tofana" C11_10 ; + tonjana_9_10_N = mkN "tonjana" C9_10 ; + tshana_5_6_N = mkN "tshana" C5_6 ; + tshana_7_8_N = mkN "tshana" C7_8 ; + tshana_9_10_N = mkN "tshana" C9_10 ; + tshekwana_3_4_N = mkN "tshekwana" C3_4 ; + tshitshana_5_6_N = mkN "tshitshana" C5_6 ; + tudlwana_7_8_N = mkN "tudlwana" C7_8 ; + twana_11_10_N = mkN "twana" C11_10 ; + ubhekana_1a_2a_N = mkN "ubhekana" C1a_2a ; + udlwana_7_8_N = mkN "udlwana" C7_8 ; + ufana_1a_2a_N = mkN "ufana" C1a_2a ; + vadlwana_11_10_N = mkN "vadlwana" C11_10 ; + vakana_5_6_N = mkN "vakana" C5_6 ; + valwana_11_10_N = mkN "valwana" C11_10 ; + vana_3_4_N = mkN "vana" C3_4 ; + vana_9_10_N = mkN "vana" C9_10 ; + vivaneni_7_8_N = mkN "vivaneni" C7_8 ; + vukazana_9_10_N = mkN "vukazana" C9_10 ; + vumelana_1_2_N = mkN "vumelana" C1_2 ; + vungana_9_10_N = mkN "vungana" C9_10 ; + xhaphozana_5_6_N = mkN "xhaphozana" C5_6 ; + xhokovana_5_6_N = mkN "xhokovana" C5_6 ; + xhokovaneni_5_6_N = mkN "xhokovaneni" C5_6 ; + xoxwana_5_6_N = mkN "xoxwana" C5_6 ; + yafana_11_N = mkN "yafana" C11_10 ; + yana_5_6_N = mkN "yana" C5_6 ; + yenjana_5_6_N = mkN "yenjana" C5_6 ; + yoywana_7_8_N = mkN "yoywana" C7_8 ; + zana_14_N = mkN "zana" C14 ; + zana_3_4_N = mkN "zana" C3_4 ; + zana_7_8_N = mkN "zana" C7_8 ; + zansana_5_6_N = mkN "zansana" C5_6 ; + zansana_9_10_N = mkN "zansana" C9_10 ; + zanyana_3_4_N = mkN "zanyana" C3_4 ; + zibukwana_5_6_N = mkN "zibukwana" C5_6 ; + zilana_3_4_N = mkN "zilana" C3_4 ; + zinjana_3_4_N = mkN "zinjana" C3_4 ; + zinyanyana_5_6_N = mkN "zinyanyana" C5_6 ; + zukulwaneni_7_8_N = mkN "zukulwaneni" C7_8 ; + zukwana_3_4_N = mkN "zukwana" C3_4 ; + zuzwana_3_4_N = mkN "zuzwana" C3_4 ; + zwana_11_10_N = mkN "zwana" C11_10 ; + zwana_5_6_N = mkN "zwana" C5_6 ; + zwana_7_8_N = mkN "zwana" C7_8 ; + zwaneni_11_10_N = mkN "zwaneni" C11_10 ; + zwaneni_14_N = mkN "zwaneni" C14 ; + + Bhebhe_1a_2a_N = mkN "Bhebhe" C1a_2a ; +Bhekifa_1a_2a_N = mkN "Bhekifa" C1a_2a ; +Bonginkosi_1a_2a_N = mkN "Bonginkosi" C1a_2a ; +Botha_1a_2a_N = mkN "Botha" C1a_2a ; +Buhlalu_1a_2a_N = mkN "Buhlalu" C1a_2a ; +Busisiwe_1a_2a_N = mkN "Busisiwe" C1a_2a ; +Buthelezi_1a_2a_N = mkN "Buthelezi" C1a_2a ; +Cele_1a_2a_N = mkN "Cele" C1a_2a ; +Dingane_1a_2a_N = mkN "Dingane" C1a_2a ; +Disemba_1a_2a_N = mkN "Disemba" C1a_2a ; +Dlamini_1a_2a_N = mkN "Dlamini" C1a_2a ; +Dube_1a_2a_N = mkN "Dube" C1a_2a ; +Duma_1a_2a_N = mkN "Duma" C1a_2a ; +Elizabeth_1a_2a_N = mkN "Elizabeth" C1a_2a ; +Fikile_1a_2a_N = mkN "Fikile" C1a_2a ; +Goba_1a_2a_N = mkN "Goba" C1a_2a ; +Godongwane_1a_2a_N = mkN "Godongwane" C1a_2a ; +Gumede_1a_2a_N = mkN "Gumede" C1a_2a ; +Gwala_1a_2a_N = mkN "Gwala" C1a_2a ; +Hlathi_1a_2a_N = mkN "Hlathi" C1a_2a ; +Hlela_1a_2a_N = mkN "Hlela" C1a_2a ; +Hlengiwe_1a_2a_N = mkN "Hlengiwe" C1a_2a ; +Hlengwa_1a_2a_N = mkN "Hlengwa" C1a_2a ; +Hlophe_1a_2a_N = mkN "Hlophe" C1a_2a ; +Ina_1a_2a_N = mkN "Ina" C1a_2a ; +Jabulani_1a_2a_N = mkN "Jabulani" C1a_2a ; +Jama_1a_2a_N = mkN "Jama" C1a_2a ; +Januwari_1a_2a_N = mkN "Januwari" C1a_2a ; +John_1a_2a_N = mkN "John" C1a_2a ; +Jordaan_1a_2a_N = mkN "Jordaan" C1a_2a ; +Julayi_1a_2a_N = mkN "Julayi" C1a_2a ; +Juni_1a_2a_N = mkN "Juni" C1a_2a ; +Khahlamba_1a_2a_N = mkN "Khahlamba" C1a_2a ; +Khanyile_1a_2a_N = mkN "Khanyile" C1a_2a ; +Khisimusi_1a_2a_N = mkN "Khisimusi" C1a_2a ; +Khoza_1a_2a_N = mkN "Khoza" C1a_2a ; +Khwela_1a_2a_N = mkN "Khwela" C1a_2a ; +Kubheka_1a_2a_N = mkN "Kubheka" C1a_2a ; +Kufa_1a_2a_N = mkN "Kufa" C1a_2a ; +Kunene_1a_2a_N = mkN "Kunene" C1a_2a ; +Linda_1a_2a_N = mkN "Linda" C1a_2a ; +Lindiwe_1a_2a_N = mkN "Lindiwe" C1a_2a ; +Lubambo_1a_2a_N = mkN "Lubambo" C1a_2a ; +Lungelo_1a_2a_N = mkN "Lungelo" C1a_2a ; +Luthuli_1a_2a_N = mkN "Luthuli" C1a_2a ; +Lwesibili_1a_2a_N = mkN "Lwesibili" C1a_2a ; +Lwesihlanu_1a_2a_N = mkN "Lwesihlanu" C1a_2a ; +Lwesine_1a_2a_N = mkN "Lwesine" C1a_2a ; +Lwesithathu_1a_2a_N = mkN "Lwesithathu" C1a_2a ; +Mabuza_1a_2a_N = mkN "Mabuza" C1a_2a ; +Mahlaba_1a_2a_N = mkN "Mahlaba" C1a_2a ; +Mahlangu_1a_2a_N = mkN "Mahlangu" C1a_2a ; +Malandela_1a_2a_N = mkN "Malandela" C1a_2a ; +Malinga_1a_2a_N = mkN "Malinga" C1a_2a ; +Malungu_1a_2a_N = mkN "Malungu" C1a_2a ; +Manyosi_1a_2a_N = mkN "Manyosi" C1a_2a ; +Manzini_1a_2a_N = mkN "Manzini" C1a_2a ; +Maseko_1a_2a_N = mkN "Maseko" C1a_2a ; +Masondo_1a_2a_N = mkN "Masondo" C1a_2a ; +Masuku_1a_2a_N = mkN "Masuku" C1a_2a ; +Mavimbela_1a_2a_N = mkN "Mavimbela" C1a_2a ; +Mazibuko_1a_2a_N = mkN "Mazibuko" C1a_2a ; +Mbatha_1a_2a_N = mkN "Mbatha" C1a_2a ; +Mbeki_1a_2a_N = mkN "Mbeki" C1a_2a ; +Mbethe_1a_2a_N = mkN "Mbethe" C1a_2a ; +Mbonambi_1a_2a_N = mkN "Mbonambi" C1a_2a ; +Mdletshe_1a_2a_N = mkN "Mdletshe" C1a_2a ; +Mduduzi_1a_2a_N = mkN "Mduduzi" C1a_2a ; +Menzi_1a_2a_N = mkN "Menzi" C1a_2a ; +Meyi_1a_2a_N = mkN "Meyi" C1a_2a ; +Mgidi_1a_2a_N = mkN "Mgidi" C1a_2a ; +Mgungundlovu_1a_2a_N = mkN "Mgungundlovu" C1a_2a ; +Mhlanga_1a_2a_N = mkN "Mhlanga" C1a_2a ; +Mike_1a_2a_N = mkN "Mike" C1a_2a ; +Mlambo_1a_2a_N = mkN "Mlambo" C1a_2a ; +Mndeni_1a_2a_N = mkN "Mndeni" C1a_2a ; +Mngoma_1a_2a_N = mkN "Mngoma" C1a_2a ; +Mpendulo_1a_2a_N = mkN "Mpendulo" C1a_2a ; +Mpilo_1a_2a_N = mkN "Mpilo" C1a_2a ; +Mpofu_1a_2a_N = mkN "Mpofu" C1a_2a ; +Mpucuko_1a_2a_N = mkN "Mpucuko" C1a_2a ; +Mpumelelo_1a_2a_N = mkN "Mpumelelo" C1a_2a ; +Mqondisi_1a_2a_N = mkN "Mqondisi" C1a_2a ; +Mshumayeli_1a_2a_N = mkN "Mshumayeli" C1a_2a ; +Msombuluko_1a_2a_N = mkN "Msombuluko" C1a_2a ; +Msomi_1a_2a_N = mkN "Msomi" C1a_2a ; +Mtshali_1a_2a_N = mkN "Mtshali" C1a_2a ; +Myeza_1a_2a_N = mkN "Myeza" C1a_2a ; +Mzobe_1a_2a_N = mkN "Mzobe" C1a_2a ; +Nandi_1a_2a_N = mkN "Nandi" C1a_2a ; +Ndaba_1a_2a_N = mkN "Ndaba" C1a_2a ; +Ndlela_1a_2a_N = mkN "Ndlela" C1a_2a ; +Ndlovu_1a_2a_N = mkN "Ndlovu" C1a_2a ; +Ndunankulu_1a_2a_N = mkN "Ndunankulu" C1a_2a ; +Ngoma_1a_2a_N = mkN "Ngoma" C1a_2a ; +Ngwenya_1a_2a_N = mkN "Ngwenya" C1a_2a ; +Nhlabathi_1a_2a_N = mkN "Nhlabathi" C1a_2a ; +Njabulo_1a_2a_N = mkN "Njabulo" C1a_2a ; +Nkanyezi_1a_2a_N = mkN "Nkanyezi" C1a_2a ; +Nkomo_1a_2a_N = mkN "Nkomo" C1a_2a ; +Nkosazana_1a_2a_N = mkN "Nkosazana" C1a_2a ; +Nkulunkulu_1a_2a_N = mkN "Nkulunkulu" C1a_2a ; +Nokubonga_1a_2a_N = mkN "Nokubonga" C1a_2a ; +Nokukhanya_1a_2a_N = mkN "Nokukhanya" C1a_2a ; +Nokulunga_1a_2a_N = mkN "Nokulunga" C1a_2a ; +Nokuthokoza_1a_2a_N = mkN "Nokuthokoza" C1a_2a ; +Nombuso_1a_2a_N = mkN "Nombuso" C1a_2a ; +Nomcebo_1a_2a_N = mkN "Nomcebo" C1a_2a ; +Nomthandazo_1a_2a_N = mkN "Nomthandazo" C1a_2a ; +Nomusa_1a_2a_N = mkN "Nomusa" C1a_2a ; +Novemba_1a_2a_N = mkN "Novemba" C1a_2a ; +Ntokozo_1a_2a_N = mkN "Ntokozo" C1a_2a ; +Ntombenhle_1a_2a_N = mkN "Ntombenhle" C1a_2a ; +Ntuli_1a_2a_N = mkN "Ntuli" C1a_2a ; +Peter_1a_2a_N = mkN "Peter" C1a_2a ; +Phakama_1a_2a_N = mkN "Phakama" C1a_2a ; +Phakathi_1a_2a_N = mkN "Phakathi" C1a_2a ; +Phapha_1a_2a_N = mkN "Phapha" C1a_2a ; +Phumelela_1a_2a_N = mkN "Phumelela" C1a_2a ; +Sangweni_1a_2a_N = mkN "Sangweni" C1a_2a ; +Sathane_1a_2a_N = mkN "Sathane" C1a_2a ; +Senzangakhona_1a_2a_N = mkN "Senzangakhona" C1a_2a ; +Septemba_1a_2a_N = mkN "Septemba" C1a_2a ; +Septhemba_1a_2a_N = mkN "Septhemba" C1a_2a ; +Shaka_1a_2a_N = mkN "Shaka" C1a_2a ; +Sibaya_1a_2a_N = mkN "Sibaya" C1a_2a ; +Sibongile_1a_2a_N = mkN "Sibongile" C1a_2a ; +Sibusiso_1a_2a_N = mkN "Sibusiso" C1a_2a ; +Sifiso_1a_2a_N = mkN "Sifiso" C1a_2a ; +Sihle_1a_2a_N = mkN "Sihle" C1a_2a ; +Sililo_1a_2a_N = mkN "Sililo" C1a_2a ; +Silwane_1a_2a_N = mkN "Silwane" C1a_2a ; +Simakade_1a_2a_N = mkN "Simakade" C1a_2a ; +Sindisiwe_1a_2a_N = mkN "Sindisiwe" C1a_2a ; +Siphiwe_1a_2a_N = mkN "Siphiwe" C1a_2a ; +Sipho_1a_2a_N = mkN "Sipho" C1a_2a ; +Sithole_1a_2a_N = mkN "Sithole" C1a_2a ; +Siwela_1a_2a_N = mkN "Siwela" C1a_2a ; +Siyabonga_1a_2a_N = mkN "Siyabonga" C1a_2a ; +Sizamile_1a_2a_N = mkN "Sizamile" C1a_2a ; +Sokhulu_1a_2a_N = mkN "Sokhulu" C1a_2a ; +Somandla_1a_2a_N = mkN "Somandla" C1a_2a ; +Sono_1a_2a_N = mkN "Sono" C1a_2a ; +Steve_1a_2a_N = mkN "Steve" C1a_2a ; +Thandiwe_1a_2a_N = mkN "Thandiwe" C1a_2a ; +Themba_1a_2a_N = mkN "Themba" C1a_2a ; +Thembekile_1a_2a_N = mkN "Thembekile" C1a_2a ; +Thokozile_1a_2a_N = mkN "Thokozile" C1a_2a ; +Thulani_1a_2a_N = mkN "Thulani" C1a_2a ; +Vezi_1a_2a_N = mkN "Vezi" C1a_2a ; +Vilakazi_1a_2a_N = mkN "Vilakazi" C1a_2a ; +Zama_1a_2a_N = mkN "Zama" C1a_2a ; +Zanele_1a_2a_N = mkN "Zanele" C1a_2a ; +Zondo_1a_2a_N = mkN "Zondo" C1a_2a ; +Zonke_1a_2a_N = mkN "Zonke" C1a_2a ; +Zulu_1a_2a_N = mkN "Zulu" C1a_2a ; +Zuma_1a_2a_N = mkN "Zuma" C1a_2a ; +Zwane_1a_2a_N = mkN "Zwane" C1a_2a ; +Zwide_1a_2a_N = mkN "Zwide" C1a_2a ; +akhelwana_1a_2a_N = mkN "akhelwana" C1a_2a ; +akhelwane_1a_2a_N = mkN "akhelwane" C1a_2a ; +alusi_1a_2a_N = mkN "alusi" C1a_2a ; +anga_1a_2a_N = mkN "anga" C1a_2a ; +asi_1a_2a_N = mkN "asi" C1a_2a ; +azi_1a_2a_N = mkN "azi" C1a_2a ; +ba_1a_2a_N = mkN "ba" C1a_2a ; +baba_1a_2a_N = mkN "baba" C1a_2a ; +babamkhulu_1a_2a_N = mkN "babamkhulu" C1a_2a ; +babe_1a_2a_N = mkN "babe" C1a_2a ; +babekazi_1a_2a_N = mkN "babekazi" C1a_2a ; +babezala_1a_2a_N = mkN "babezala" C1a_2a ; +bambo_1a_2a_N = mkN "bambo" C1a_2a ; +bani_1a_2a_N = mkN "bani" C1a_2a ; +banibani_1a_2a_N = mkN "banibani" C1a_2a ; +basi_1a_2a_N = mkN "basi" C1a_2a ; +batha_1a_2a_N = mkN "batha" C1a_2a ; +bathini_1a_2a_N = mkN "bathini" C1a_2a ; +baya_1a_2a_N = mkN "baya" C1a_2a ; +bebe_1a_2a_N = mkN "bebe" C1a_2a ; +bebebe_1a_2a_N = mkN "bebebe" C1a_2a ; +beki_1a_2a_N = mkN "beki" C1a_2a ; +belejongosi_1a_2a_N = mkN "belejongosi" C1a_2a ; +bendle_1a_2a_N = mkN "bendle" C1a_2a ; +bethe_1a_2a_N = mkN "bethe" C1a_2a ; +bhadi_1a_2a_N = mkN "bhadi" C1a_2a ; +bhalane_1a_2a_N = mkN "bhalane" C1a_2a ; +bhanana_1a_2a_N = mkN "bhanana" C1a_2a ; +bhasikidi_1a_2a_N = mkN "bhasikidi" C1a_2a ; +bhatata_1a_2a_N = mkN "bhatata" C1a_2a ; +bhebhenene_1a_2a_N = mkN "bhebhenene" C1a_2a ; +bhejane_1a_2a_N = mkN "bhejane" C1a_2a ; +bheka_1a_2a_N = mkN "bheka" C1a_2a ; +bhekeni_1a_2a_N = mkN "bhekeni" C1a_2a ; +bheseni_1a_2a_N = mkN "bheseni" C1a_2a ; +bhici_1a_2a_N = mkN "bhici" C1a_2a ; +bhisi_1a_2a_N = mkN "bhisi" C1a_2a ; +bhontshisi_1a_2a_N = mkN "bhontshisi" C1a_2a ; +bhova_1a_2a_N = mkN "bhova" C1a_2a ; +bhulube_1a_2a_N = mkN "bhulube" C1a_2a ; +bhuti_1a_2a_N = mkN "bhuti" C1a_2a ; +bhuzana_1a_2a_N = mkN "bhuzana" C1a_2a ; +bhuzi_1a_2a_N = mkN "bhuzi" C1a_2a ; +bikibiki_1a_2a_N = mkN "bikibiki" C1a_2a ; +bili_1a_2a_N = mkN "bili" C1a_2a ; +bizo_1a_2a_N = mkN "bizo" C1a_2a ; +bombo_1a_2a_N = mkN "bombo" C1a_2a ; +bonambi_1a_2a_N = mkN "bonambi" C1a_2a ; +bopha_1a_2a_N = mkN "bopha" C1a_2a ; +busiso_1a_2a_N = mkN "busiso" C1a_2a ; +buso_1a_2a_N = mkN "buso" C1a_2a ; +buzi_1a_2a_N = mkN "buzi" C1a_2a ; +caca_1a_2a_N = mkN "caca" C1a_2a ; +cambalala_1a_2a_N = mkN "cambalala" C1a_2a ; +cebo_1a_2a_N = mkN "cebo" C1a_2a ; +celemba_1a_2a_N = mkN "celemba" C1a_2a ; +cetshwayo_1a_2a_N = mkN "cetshwayo" C1a_2a ; +chakide_1a_2a_N = mkN "chakide" C1a_2a ; +chakijana_1a_2a_N = mkN "chakijana" C1a_2a ; +chithi_1a_2a_N = mkN "chithi" C1a_2a ; +chwepheshe_1a_2a_N = mkN "chwepheshe" C1a_2a ; +ciki_1a_2a_N = mkN "ciki" C1a_2a ; +cikicane_1a_2a_N = mkN "cikicane" C1a_2a ; +cilo_1a_2a_N = mkN "cilo" C1a_2a ; +daba_1a_2a_N = mkN "daba" C1a_2a ; +dade_1a_2a_N = mkN "dade" C1a_2a ; +dadewabo_1a_2a_N = mkN "dadewabo" C1a_2a ; +dadewenu_1a_2a_N = mkN "dadewenu" C1a_2a ; +dadewethu_1a_2a_N = mkN "dadewethu" C1a_2a ; +dedangendlale_1a_2a_N = mkN "dedangendlale" C1a_2a ; +dingiswayo_1a_2a_N = mkN "dingiswayo" C1a_2a ; +dlamini_1a_2a_N = mkN "dlamini" C1a_2a ; +dlela_1a_2a_N = mkN "dlela" C1a_2a ; +dlolo_1a_2a_N = mkN "dlolo" C1a_2a ; +dlovu_1a_2a_N = mkN "dlovu" C1a_2a ; +dlovukazi_1a_2a_N = mkN "dlovukazi" C1a_2a ; +dokotela_1a_2a_N = mkN "dokotela" C1a_2a ; +doli_1a_2a_N = mkN "doli" C1a_2a ; +doti_1a_2a_N = mkN "doti" C1a_2a ; +dube_1a_2a_N = mkN "dube" C1a_2a ; +duduzi_1a_2a_N = mkN "duduzi" C1a_2a ; +dukathole_1a_2a_N = mkN "dukathole" C1a_2a ; +duma_1a_2a_N = mkN "duma" C1a_2a ; +dwi_1a_2a_N = mkN "dwi" C1a_2a ; +enzi_1a_2a_N = mkN "enzi" C1a_2a ; +fa_1a_2a_N = mkN "fa" C1a_2a ; +fagolweni_1a_2a_N = mkN "fagolweni" C1a_2a ; +fakazi_1a_2a_N = mkN "fakazi" C1a_2a ; +faku_1a_2a_N = mkN "faku" C1a_2a ; +fe_1a_2a_N = mkN "fe" C1a_2a ; +feleba_1a_2a_N = mkN "feleba" C1a_2a ; +fezela_1a_2a_N = mkN "fezela" C1a_2a ; +fo_1a_2a_N = mkN "fo" C1a_2a ; +fu_1a_2a_N = mkN "fu" C1a_2a ; +fulawa_1a_2a_N = mkN "fulawa" C1a_2a ; +fumba_1a_2a_N = mkN "fumba" C1a_2a ; +gabigabi_1a_2a_N = mkN "gabigabi" C1a_2a ; +gada_1a_2a_N = mkN "gada" C1a_2a ; +gadi_1a_2a_N = mkN "gadi" C1a_2a ; +galo_1a_2a_N = mkN "galo" C1a_2a ; +gandaganda_1a_2a_N = mkN "gandaganda" C1a_2a ; +gazi_1a_2a_N = mkN "gazi" C1a_2a ; +gelegele_1a_2a_N = mkN "gelegele" C1a_2a ; +gesi_1a_2a_N = mkN "gesi" C1a_2a ; +gidi_1a_2a_N = mkN "gidi" C1a_2a ; +goba_1a_2a_N = mkN "goba" C1a_2a ; +gogo_1a_2a_N = mkN "gogo" C1a_2a ; +gologo_1a_2a_N = mkN "gologo" C1a_2a ; +gqayinyanga_1a_2a_N = mkN "gqayinyanga" C1a_2a ; +guga_1a_2a_N = mkN "guga" C1a_2a ; +gumbeqe_1a_2a_N = mkN "gumbeqe" C1a_2a ; +gungundlovu_1a_2a_N = mkN "gungundlovu" C1a_2a ; +guqabadele_1a_2a_N = mkN "guqabadele" C1a_2a ; +guqu_1a_2a_N = mkN "guqu" C1a_2a ; +gwala_1a_2a_N = mkN "gwala" C1a_2a ; +gweva_1a_2a_N = mkN "gweva" C1a_2a ; +gxila_1a_2a_N = mkN "gxila" C1a_2a ; +hala_1a_2a_N = mkN "hala" C1a_2a ; +hamba_1a_2a_N = mkN "hamba" C1a_2a ; +hhafu_1a_2a_N = mkN "hhafu" C1a_2a ; +hlaba_1a_2a_N = mkN "hlaba" C1a_2a ; +hlabathi_1a_2a_N = mkN "hlabathi" C1a_2a ; +hlalu_1a_2a_N = mkN "hlalu" C1a_2a ; +hlanga_1a_2a_N = mkN "hlanga" C1a_2a ; +hlange_1a_2a_N = mkN "hlange" C1a_2a ; +hlangothi_1a_2a_N = mkN "hlangothi" C1a_2a ; +hlathi_1a_2a_N = mkN "hlathi" C1a_2a ; +hle_1a_2a_N = mkN "hle" C1a_2a ; +hodoba_1a_2a_N = mkN "hodoba" C1a_2a ; +hulumende_1a_2a_N = mkN "hulumende" C1a_2a ; +hulumeni_1a_2a_N = mkN "hulumeni" C1a_2a ; +ihlo_1a_2a_N = mkN "ihlo" C1a_2a ; +jabulo_1a_2a_N = mkN "jabulo" C1a_2a ; +jamu_1a_2a_N = mkN "jamu" C1a_2a ; +jantshi_1a_2a_N = mkN "jantshi" C1a_2a ; +jazi_1a_2a_N = mkN "jazi" C1a_2a ; +jele_1a_2a_N = mkN "jele" C1a_2a ; +jenga_1a_2a_N = mkN "jenga" C1a_2a ; +jeqe_1a_2a_N = mkN "jeqe" C1a_2a ; +jiba_1a_2a_N = mkN "jiba" C1a_2a ; +jobe_1a_2a_N = mkN "jobe" C1a_2a ; +jodo_1a_2a_N = mkN "jodo" C1a_2a ; +jojo_1a_2a_N = mkN "jojo" C1a_2a ; +josaka_1a_2a_N = mkN "josaka" C1a_2a ; +jubingqwanga_1a_2a_N = mkN "jubingqwanga" C1a_2a ; +juqu_1a_2a_N = mkN "juqu" C1a_2a ; +kandlela_1a_2a_N = mkN "kandlela" C1a_2a ; +kanina_1a_2a_N = mkN "kanina" C1a_2a ; +khahlamba_1a_2a_N = mkN "khahlamba" C1a_2a ; +khala_1a_2a_N = mkN "khala" C1a_2a ; +khali_1a_2a_N = mkN "khali" C1a_2a ; +khambi_1a_2a_N = mkN "khambi" C1a_2a ; +khanda_1a_2a_N = mkN "khanda" C1a_2a ; +khangela_1a_2a_N = mkN "khangela" C1a_2a ; +khanjana_1a_2a_N = mkN "khanjana" C1a_2a ; +khanyikhanyi_1a_2a_N = mkN "khanyikhanyi" C1a_2a ; +khehle_1a_2a_N = mkN "khehle" C1a_2a ; +kheshi_1a_2a_N = mkN "kheshi" C1a_2a ; +khisimusi_1a_2a_N = mkN "khisimusi" C1a_2a ; +khiye_1a_2a_N = mkN "khiye" C1a_2a ; +khokho_1a_2a_N = mkN "khokho" C1a_2a ; +kholo_1a_2a_N = mkN "kholo" C1a_2a ; +khololo_1a_2a_N = mkN "khololo" C1a_2a ; +kholwe_1a_2a_N = mkN "kholwe" C1a_2a ; +khomo_1a_2a_N = mkN "khomo" C1a_2a ; +khonkolo_1a_2a_N = mkN "khonkolo" C1a_2a ; +khosazana_1a_2a_N = mkN "khosazana" C1a_2a ; +khosi_1a_2a_N = mkN "khosi" C1a_2a ; +khosikazi_1a_2a_N = mkN "khosikazi" C1a_2a ; +khothi_1a_2a_N = mkN "khothi" C1a_2a ; +khoza_1a_2a_N = mkN "khoza" C1a_2a ; +khulu_1a_2a_N = mkN "khulu" C1a_2a ; +khuni_1a_2a_N = mkN "khuni" C1a_2a ; +khwahla_1a_2a_N = mkN "khwahla" C1a_2a ; +khweshe_1a_2a_N = mkN "khweshe" C1a_2a ; +klebe_1a_2a_N = mkN "klebe" C1a_2a ; +komkhulu_1a_2a_N = mkN "komkhulu" C1a_2a ; +kopolo_1a_2a_N = mkN "kopolo" C1a_2a ; +kotshi_1a_2a_N = mkN "kotshi" C1a_2a ; +kuka_1a_2a_N = mkN "kuka" C1a_2a ; +kula_1a_2a_N = mkN "kula" C1a_2a ; +kuwela_1a_2a_N = mkN "kuwela" C1a_2a ; +la_1a_2a_N = mkN "la" C1a_2a ; +lambo_1a_2a_N = mkN "lambo" C1a_2a ; +lamula_1a_2a_N = mkN "lamula" C1a_2a ; +landapense_1a_2a_N = mkN "landapense" C1a_2a ; +lilo_1a_2a_N = mkN "lilo" C1a_2a ; +lisho_1a_2a_N = mkN "lisho" C1a_2a ; +lola_1a_2a_N = mkN "lola" C1a_2a ; +lomo_1a_2a_N = mkN "lomo" C1a_2a ; +lova_1a_2a_N = mkN "lova" C1a_2a ; +lunda_1a_2a_N = mkN "lunda" C1a_2a ; +lungelo_1a_2a_N = mkN "lungelo" C1a_2a ; +-- lungu_1a_2a_N = mkN "lungu" C1a_2a ; +luthuli_1a_2a_N = mkN "luthuli" C1a_2a ; +lwandle_1a_2a_N = mkN "lwandle" C1a_2a ; +lwane_1a_2a_N = mkN "lwane" C1a_2a ; +lwesibili_1a_2a_N = mkN "lwesibili" C1a_2a ; +lwesihlanu_1a_2a_N = mkN "lwesihlanu" C1a_2a ; +lwesine_1a_2a_N = mkN "lwesine" C1a_2a ; +lwesithathu_1a_2a_N = mkN "lwesithathu" C1a_2a ; +lwezi_1a_2a_N = mkN "lwezi" C1a_2a ; +mabani_1a_2a_N = mkN "mabani" C1a_2a ; +mabelejongosi_1a_2a_N = mkN "mabelejongosi" C1a_2a ; +mabhalane_1a_2a_N = mkN "mabhalane" C1a_2a ; +mabonwa_1a_2a_N = mkN "mabonwa" C1a_2a ; +mabonwabulawe_1a_2a_N = mkN "mabonwabulawe" C1a_2a ; +mabuyaze_1a_2a_N = mkN "mabuyaze" C1a_2a ; +madevana_1a_2a_N = mkN "madevana" C1a_2a ; +madevu_1a_2a_N = mkN "madevu" C1a_2a ; +mafavuke_1a_2a_N = mkN "mafavuke" C1a_2a ; +mafungwase_1a_2a_N = mkN "mafungwase" C1a_2a ; +mahamba_1a_2a_N = mkN "mahamba" C1a_2a ; +mahlekehlathini_1a_2a_N = mkN "mahlekehlathini" C1a_2a ; +makade_1a_2a_N = mkN "makade" C1a_2a ; +makhanjana_1a_2a_N = mkN "makhanjana" C1a_2a ; +makhelwana_1a_2a_N = mkN "makhelwana" C1a_2a ; +makhelwane_1a_2a_N = mkN "makhelwane" C1a_2a ; +makhukhumesana_1a_2a_N = mkN "makhukhumesana" C1a_2a ; +makhulu_1a_2a_N = mkN "makhulu" C1a_2a ; +makhweyana_1a_2a_N = mkN "makhweyana" C1a_2a ; +makoti_1a_2a_N = mkN "makoti" C1a_2a ; +malokazana_1a_2a_N = mkN "malokazana" C1a_2a ; +malukazi_1a_2a_N = mkN "malukazi" C1a_2a ; +malume_1a_2a_N = mkN "malume" C1a_2a ; +malunda_1a_2a_N = mkN "malunda" C1a_2a ; +malusi_1a_2a_N = mkN "malusi" C1a_2a ; +mama_1a_2a_N = mkN "mama" C1a_2a ; +mamatheka_1a_2a_N = mkN "mamatheka" C1a_2a ; +mame_1a_2a_N = mkN "mame" C1a_2a ; +mamezala_1a_2a_N = mkN "mamezala" C1a_2a ; +mana_1a_2a_N = mkN "mana" C1a_2a ; +mananga_1a_2a_N = mkN "mananga" C1a_2a ; +mancintshana_1a_2a_N = mkN "mancintshana" C1a_2a ; +mancishana_1a_2a_N = mkN "mancishana" C1a_2a ; +mancishane_1a_2a_N = mkN "mancishane" C1a_2a ; +manga_1a_2a_N = mkN "manga" C1a_2a ; +mantindane_1a_2a_N = mkN "mantindane" C1a_2a ; +manzini_1a_2a_N = mkN "manzini" C1a_2a ; +maqanda_1a_2a_N = mkN "maqanda" C1a_2a ; +maqinase_1a_2a_N = mkN "maqinase" C1a_2a ; +maqondana_1a_2a_N = mkN "maqondana" C1a_2a ; +mashiyakukhalwa_1a_2a_N = mkN "mashiyakukhalwa" C1a_2a ; +masipala_1a_2a_N = mkN "masipala" C1a_2a ; +masithela_1a_2a_N = mkN "masithela" C1a_2a ; +mathebethebeni_1a_2a_N = mkN "mathebethebeni" C1a_2a ; +mathunzi_1a_2a_N = mkN "mathunzi" C1a_2a ; +matilasi_1a_2a_N = mkN "matilasi" C1a_2a ; +matiwane_1a_2a_N = mkN "matiwane" C1a_2a ; +mbalane_1a_2a_N = mkN "mbalane" C1a_2a ; +mbombo_1a_2a_N = mkN "mbombo" C1a_2a ; +mbonambi_1a_2a_N = mkN "mbonambi" C1a_2a ; +mbopha_1a_2a_N = mkN "mbopha" C1a_2a ; +mbuzana_1a_2a_N = mkN "mbuzana" C1a_2a ; +me_1a_2a_N = mkN "me" C1a_2a ; +mesisi_1a_2a_N = mkN "mesisi" C1a_2a ; +miyane_1a_2a_N = mkN "miyane" C1a_2a ; +mkabo_1a_2a_N = mkN "mkabo" C1a_2a ; +mkakhe_1a_2a_N = mkN "mkakhe" C1a_2a ; +mkakho_1a_2a_N = mkN "mkakho" C1a_2a ; +mkami_1a_2a_N = mkN "mkami" C1a_2a ; +mkethu_1a_2a_N = mkN "mkethu" C1a_2a ; +mkhulu_1a_2a_N = mkN "mkhulu" C1a_2a ; +mnakile_1a_2a_N = mkN "mnakile" C1a_2a ; +mnakwabo_1a_2a_N = mkN "mnakwabo" C1a_2a ; +mnakwethu_1a_2a_N = mkN "mnakwethu" C1a_2a ; +mnandi_1a_2a_N = mkN "mnandi" C1a_2a ; +mnawami_1a_2a_N = mkN "mnawami" C1a_2a ; +mongameli_1a_2a_N = mkN "mongameli" C1a_2a ; +mpetha_1a_2a_N = mkN "mpetha" C1a_2a ; +mpingizane_1a_2a_N = mkN "mpingizane" C1a_2a ; +mpisimpisi_1a_2a_N = mkN "mpisimpisi" C1a_2a ; +mpofu_1a_2a_N = mkN "mpofu" C1a_2a ; +mpompi_1a_2a_N = mkN "mpompi" C1a_2a ; +mpukane_1a_2a_N = mkN "mpukane" C1a_2a ; +muhle_1a_2a_N = mkN "muhle" C1a_2a ; +nakwabo_1a_2a_N = mkN "nakwabo" C1a_2a ; +nakwethu_1a_2a_N = mkN "nakwethu" C1a_2a ; +nanja_1a_2a_N = mkN "nanja" C1a_2a ; +nansika_1a_2a_N = mkN "nansika" C1a_2a ; +nawami_1a_2a_N = mkN "nawami" C1a_2a ; +ndaba_1a_2a_N = mkN "ndaba" C1a_2a ; +ndabazabantu_1a_2a_N = mkN "ndabazabantu" C1a_2a ; +ndabezitha_1a_2a_N = mkN "ndabezitha" C1a_2a ; +ndasa_1a_2a_N = mkN "ndasa" C1a_2a ; +ndeni_1a_2a_N = mkN "ndeni" C1a_2a ; +ndle_1a_2a_N = mkN "ndle" C1a_2a ; +ndlele_1a_2a_N = mkN "ndlele" C1a_2a ; +ndunankulu_1a_2a_N = mkN "ndunankulu" C1a_2a ; +ndwandwe_1a_2a_N = mkN "ndwandwe" C1a_2a ; +ne_1a_2a_N = mkN "ne" C1a_2a ; +nembe_1a_2a_N = mkN "nembe" C1a_2a ; +nene_1a_2a_N = mkN "nene" C1a_2a ; +nesi_1a_2a_N = mkN "nesi" C1a_2a ; +nga_1a_2a_N = mkN "nga" C1a_2a ; +ngazi_1a_2a_N = mkN "ngazi" C1a_2a ; +ngazini_1a_2a_N = mkN "ngazini" C1a_2a ; +ngcede_1a_2a_N = mkN "ngcede" C1a_2a ; +ngcingci_1a_2a_N = mkN "ngcingci" C1a_2a ; +ngcwecwe_1a_2a_N = mkN "ngcwecwe" C1a_2a ; +nginakile_1a_2a_N = mkN "nginakile" C1a_2a ; +ngiyane_1a_2a_N = mkN "ngiyane" C1a_2a ; +ngoma_1a_2a_N = mkN "ngoma" C1a_2a ; +ngoti_1a_2a_N = mkN "ngoti" C1a_2a ; +ngqo_1a_2a_N = mkN "ngqo" C1a_2a ; +ngqongqoshe_1a_2a_N = mkN "ngqongqoshe" C1a_2a ; +ngubo_1a_2a_N = mkN "ngubo" C1a_2a ; +nguboziyeweni_1a_2a_N = mkN "nguboziyeweni" C1a_2a ; +nguqunguqu_1a_2a_N = mkN "nguqunguqu" C1a_2a ; +ngwaqa_1a_2a_N = mkN "ngwaqa" C1a_2a ; +nhlangothi_1a_2a_N = mkN "nhlangothi" C1a_2a ; +nina_1a_2a_N = mkN "nina" C1a_2a ; +ninalume_1a_2a_N = mkN "ninalume" C1a_2a ; +ninazala_1a_2a_N = mkN "ninazala" C1a_2a ; +nkabi_1a_2a_N = mkN "nkabi" C1a_2a ; +nkamisa_1a_2a_N = mkN "nkamisa" C1a_2a ; +nkombose_1a_2a_N = mkN "nkombose" C1a_2a ; +nkonka_1a_2a_N = mkN "nkonka" C1a_2a ; +nkosikazi_1a_2a_N = mkN "nkosikazi" C1a_2a ; +nobhala_1a_2a_N = mkN "nobhala" C1a_2a ; +nobhutshuzwayo_1a_2a_N = mkN "nobhutshuzwayo" C1a_2a ; +nogada_1a_2a_N = mkN "nogada" C1a_2a ; +nogwaja_1a_2a_N = mkN "nogwaja" C1a_2a ; +nolwandle_1a_2a_N = mkN "nolwandle" C1a_2a ; +nomaweni_1a_2a_N = mkN "nomaweni" C1a_2a ; +nomphumela_1a_2a_N = mkN "nomphumela" C1a_2a ; +nomuntu_1a_2a_N = mkN "nomuntu" C1a_2a ; +nondlini_1a_2a_N = mkN "nondlini" C1a_2a ; +nondwayiza_1a_2a_N = mkN "nondwayiza" C1a_2a ; +nongxi_1a_2a_N = mkN "nongxi" C1a_2a ; +nonina_1a_2a_N = mkN "nonina" C1a_2a ; +notha_1a_2a_N = mkN "notha" C1a_2a ; +nowamba_1a_2a_N = mkN "nowamba" C1a_2a ; +noxhaka_1a_2a_N = mkN "noxhaka" C1a_2a ; +noxhongo_1a_2a_N = mkN "noxhongo" C1a_2a ; +noyi_1a_2a_N = mkN "noyi" C1a_2a ; +nozalizingwenya_1a_2a_N = mkN "nozalizingwenya" C1a_2a ; +nozinti_1a_2a_N = mkN "nozinti" C1a_2a ; +nozondi_1a_2a_N = mkN "nozondi" C1a_2a ; +nswinswinswi_1a_2a_N = mkN "nswinswinswi" C1a_2a ; +ntanga_1a_2a_N = mkN "ntanga" C1a_2a ; +ntembuzane_1a_2a_N = mkN "ntembuzane" C1a_2a ; +ntondo_1a_2a_N = mkN "ntondo" C1a_2a ; +ntu_1a_2a_N = mkN "ntu" C1a_2a ; +nukani_1a_2a_N = mkN "nukani" C1a_2a ; +nxazonke_1a_2a_N = mkN "nxazonke" C1a_2a ; +nyamanambana_1a_2a_N = mkN "nyamanambana" C1a_2a ; +nyanya_1a_2a_N = mkN "nyanya" C1a_2a ; +nyazi_1a_2a_N = mkN "nyazi" C1a_2a ; +nyoko_1a_2a_N = mkN "nyoko" C1a_2a ; +nyokokazi_1a_2a_N = mkN "nyokokazi" C1a_2a ; +nyokolume_1a_2a_N = mkN "nyokolume" C1a_2a ; +nyokozala_1a_2a_N = mkN "nyokozala" C1a_2a ; +nyovane_1a_2a_N = mkN "nyovane" C1a_2a ; +nyube_1a_2a_N = mkN "nyube" C1a_2a ; +ongameli_1a_2a_N = mkN "ongameli" C1a_2a ; +ono_1a_2a_N = mkN "ono" C1a_2a ; +pelepele_1a_2a_N = mkN "pelepele" C1a_2a ; +pewula_1a_2a_N = mkN "pewula" C1a_2a ; +phakama_1a_2a_N = mkN "phakama" C1a_2a ; +phakathi_1a_2a_N = mkN "phakathi" C1a_2a ; +phapha_1a_2a_N = mkN "phapha" C1a_2a ; +phefeni_1a_2a_N = mkN "phefeni" C1a_2a ; +phempethwane_1a_2a_N = mkN "phempethwane" C1a_2a ; +phendulo_1a_2a_N = mkN "phendulo" C1a_2a ; +phethe_1a_2a_N = mkN "phethe" C1a_2a ; +philo_1a_2a_N = mkN "philo" C1a_2a ; +pho_1a_2a_N = mkN "pho" C1a_2a ; +phofu_1a_2a_N = mkN "phofu" C1a_2a ; +pholi_1a_2a_N = mkN "pholi" C1a_2a ; +pholile_1a_2a_N = mkN "pholile" C1a_2a ; +phumela_1a_2a_N = mkN "phumela" C1a_2a ; +phumelelo_1a_2a_N = mkN "phumelelo" C1a_2a ; +pondo_1a_2a_N = mkN "pondo" C1a_2a ; +popo_1a_2a_N = mkN "popo" C1a_2a ; +qanda_1a_2a_N = mkN "qanda" C1a_2a ; +qethu_1a_2a_N = mkN "qethu" C1a_2a ; +qhotho_1a_2a_N = mkN "qhotho" C1a_2a ; +qondisi_1a_2a_N = mkN "qondisi" C1a_2a ; +qondo_1a_2a_N = mkN "qondo" C1a_2a ; +qukula_1a_2a_N = mkN "qukula" C1a_2a ; +qwabe_1a_2a_N = mkN "qwabe" C1a_2a ; +sa_1a_2a_N = mkN "sa" C1a_2a ; +sakazana_1a_2a_N = mkN "sakazana" C1a_2a ; +sayitsheni_1a_2a_N = mkN "sayitsheni" C1a_2a ; +saziwayo_1a_2a_N = mkN "saziwayo" C1a_2a ; +seko_1a_2a_N = mkN "seko" C1a_2a ; +sende_1a_2a_N = mkN "sende" C1a_2a ; +seyili_1a_2a_N = mkN "seyili" C1a_2a ; +shaka_1a_2a_N = mkN "shaka" C1a_2a ; +shangane_1a_2a_N = mkN "shangane" C1a_2a ; +shavu_1a_2a_N = mkN "shavu" C1a_2a ; +sheleni_1a_2a_N = mkN "sheleni" C1a_2a ; +shibedabe_1a_2a_N = mkN "shibedabe" C1a_2a ; +shintshi_1a_2a_N = mkN "shintshi" C1a_2a ; +shintsho_1a_2a_N = mkN "shintsho" C1a_2a ; +shisa_1a_2a_N = mkN "shisa" C1a_2a ; +shukela_1a_2a_N = mkN "shukela" C1a_2a ; +shumayeli_1a_2a_N = mkN "shumayeli" C1a_2a ; +shuwa_1a_2a_N = mkN "shuwa" C1a_2a ; +shwele_1a_2a_N = mkN "shwele" C1a_2a ; +si_1a_2a_N = mkN "si" C1a_2a ; +sibali_1a_2a_N = mkN "sibali" C1a_2a ; +sibanibani_1a_2a_N = mkN "sibanibani" C1a_2a ; +sifa_1a_2a_N = mkN "sifa" C1a_2a ; +sihlalo_1a_2a_N = mkN "sihlalo" C1a_2a ; +sikilidi_1a_2a_N = mkN "sikilidi" C1a_2a ; +silandelana_1a_2a_N = mkN "silandelana" C1a_2a ; +sina_1a_2a_N = mkN "sina" C1a_2a ; +sipho_1a_2a_N = mkN "sipho" C1a_2a ; +sisi_1a_2a_N = mkN "sisi" C1a_2a ; +sista_1a_2a_N = mkN "sista" C1a_2a ; +sizwile_1a_2a_N = mkN "sizwile" C1a_2a ; +sobanibani_1a_2a_N = mkN "sobanibani" C1a_2a ; +sobantu_1a_2a_N = mkN "sobantu" C1a_2a ; +sofa_1a_2a_N = mkN "sofa" C1a_2a ; +sokhaya_1a_2a_N = mkN "sokhaya" C1a_2a ; +sokhuni_1a_2a_N = mkN "sokhuni" C1a_2a ; +sokulunga_1a_2a_N = mkN "sokulunga" C1a_2a ; +solwazi_1a_2a_N = mkN "solwazi" C1a_2a ; +somabhizinisi_1a_2a_N = mkN "somabhizinisi" C1a_2a ; +somandla_1a_2a_N = mkN "somandla" C1a_2a ; +sombuluko_1a_2a_N = mkN "sombuluko" C1a_2a ; +somlomo_1a_2a_N = mkN "somlomo" C1a_2a ; +sondela_1a_2a_N = mkN "sondela" C1a_2a ; +sondo_1a_2a_N = mkN "sondo" C1a_2a ; +soshangane_1a_2a_N = mkN "soshangane" C1a_2a ; +swidi_1a_2a_N = mkN "swidi" C1a_2a ; +tamatisi_1a_2a_N = mkN "tamatisi" C1a_2a ; +tana_1a_2a_N = mkN "tana" C1a_2a ; +tate_1a_2a_N = mkN "tate" C1a_2a ; +tebhu_1a_2a_N = mkN "tebhu" C1a_2a ; +tha_1a_2a_N = mkN "tha" C1a_2a ; +thandazo_1a_2a_N = mkN "thandazo" C1a_2a ; +thasi_1a_2a_N = mkN "thasi" C1a_2a ; +thathu_1a_2a_N = mkN "thathu" C1a_2a ; +thayela_1a_2a_N = mkN "thayela" C1a_2a ; +thayi_1a_2a_N = mkN "thayi" C1a_2a ; +thekwane_1a_2a_N = mkN "thekwane" C1a_2a ; +thelezi_1a_2a_N = mkN "thelezi" C1a_2a ; +themba_1a_2a_N = mkN "themba" C1a_2a ; +thisha_1a_2a_N = mkN "thisha" C1a_2a ; +thishela_1a_2a_N = mkN "thishela" C1a_2a ; +thishomkhulu_1a_2a_N = mkN "thishomkhulu" C1a_2a ; +thokozo_1a_2a_N = mkN "thokozo" C1a_2a ; +thole_1a_2a_N = mkN "thole" C1a_2a ; +thulasizwe_1a_2a_N = mkN "thulasizwe" C1a_2a ; +thuli_1a_2a_N = mkN "thuli" C1a_2a ; +thumbu_1a_2a_N = mkN "thumbu" C1a_2a ; +thunjana_1a_2a_N = mkN "thunjana" C1a_2a ; +thupha_1a_2a_N = mkN "thupha" C1a_2a ; +thuthu_1a_2a_N = mkN "thuthu" C1a_2a ; +tiki_1a_2a_N = mkN "tiki" C1a_2a ; +tokoloshe_1a_2a_N = mkN "tokoloshe" C1a_2a ; +tshali_1a_2a_N = mkN "tshali" C1a_2a ; +tshana_1a_2a_N = mkN "tshana" C1a_2a ; +velabahleke_1a_2a_N = mkN "velabahleke" C1a_2a ; +vele_1a_2a_N = mkN "vele" C1a_2a ; +vete_1a_2a_N = mkN "vete" C1a_2a ; +vila_1a_2a_N = mkN "vila" C1a_2a ; +vokwane_1a_2a_N = mkN "vokwane" C1a_2a ; +volo_1a_2a_N = mkN "volo" C1a_2a ; +vulande_1a_2a_N = mkN "vulande" C1a_2a ; +vumazonke_1a_2a_N = mkN "vumazonke" C1a_2a ; +wabo_1a_2a_N = mkN "wabo" C1a_2a ; +waka_1a_2a_N = mkN "waka" C1a_2a ; +wamba_1a_2a_N = mkN "wamba" C1a_2a ; +watela_1a_2a_N = mkN "watela" C1a_2a ; +wawa_1a_2a_N = mkN "wawa" C1a_2a ; +wela_1a_2a_N = mkN "wela" C1a_2a ; +wenu_1a_2a_N = mkN "wenu" C1a_2a ; +weta_1a_2a_N = mkN "weta" C1a_2a ; +wethu_1a_2a_N = mkN "wethu" C1a_2a ; +wula_1a_2a_N = mkN "wula" C1a_2a ; +xamu_1a_2a_N = mkN "xamu" C1a_2a ; +xhaphozi_1a_2a_N = mkN "xhaphozi" C1a_2a ; +yihlo_1a_2a_N = mkN "yihlo" C1a_2a ; +yihlomkhulu_1a_2a_N = mkN "yihlomkhulu" C1a_2a ; +yihlozala_1a_2a_N = mkN "yihlozala" C1a_2a ; +yise_1a_2a_N = mkN "yise" C1a_2a ; +yisemkhulu_1a_2a_N = mkN "yisemkhulu" C1a_2a ; +yisezala_1a_2a_N = mkN "yisezala" C1a_2a ; +zagiga_1a_2a_N = mkN "zagiga" C1a_2a ; +zakwabo_1a_2a_N = mkN "zakwabo" C1a_2a ; +zakwenu_1a_2a_N = mkN "zakwenu" C1a_2a ; +zakwethu_1a_2a_N = mkN "zakwethu" C1a_2a ; +zamcolo_1a_2a_N = mkN "zamcolo" C1a_2a ; +zamlandela_1a_2a_N = mkN "zamlandela" C1a_2a ; +zankosi_1a_2a_N = mkN "zankosi" C1a_2a ; +zavolo_1a_2a_N = mkN "zavolo" C1a_2a ; +zenzele_1a_2a_N = mkN "zenzele" C1a_2a ; +zibuko_1a_2a_N = mkN "zibuko" C1a_2a ; +zibuse_1a_2a_N = mkN "zibuse" C1a_2a ; +zilile_1a_2a_N = mkN "zilile" C1a_2a ; +zozo_1a_2a_N = mkN "zozo" C1a_2a ; +zuka_1a_2a_N = mkN "zuka" C1a_2a ; +zulu_1a_2a_N = mkN "zulu" C1a_2a ; +zwa_1a_2a_N = mkN "zwa" C1a_2a ; +zwelonke_1a_2a_N = mkN "zwelonke" C1a_2a ; + + -- verb roots + ab_V = mkV "ab" ; + ab_V2 = mkV2 "ab" ; + aban_V = mkV "aban" ; + aban_V2 = mkV2 "aban" ; + abanelis_V = mkV "abanelis" ; + abanelis_V2 = mkV2 "abanelis" ; + abek_V = mkV "abek" ; + abek_V2 = mkV2 "abek" ; + abekel_V = mkV "abekel" ; + abekel_V2 = mkV2 "abekel" ; + abekelan_V = mkV "abekelan" ; + abekelan_V2 = mkV2 "abekelan" ; + abekelel_V = mkV "abekelel" ; + abekelel_V2 = mkV2 "abekelel" ; + abel_V = mkV "abel" ; + abel_V2 = mkV2 "abel" ; + abelan_V = mkV "abelan" ; + abelan_V2 = mkV2 "abelan" ; + abelek_V = mkV "abelek" ; + abelek_V2 = mkV2 "abelek" ; + abelel_V = mkV "abelel" ; + abelel_V2 = mkV2 "abelel" ; + abuk_V = mkV "abuk" ; + abuk_V2 = mkV2 "abuk" ; + abukan_V = mkV "abukan" ; + abukan_V2 = mkV2 "abukan" ; + abukek_V = mkV "abukek" ; + abukek_V2 = mkV2 "abukek" ; + abukel_V = mkV "abukel" ; + abukel_V2 = mkV2 "abukel" ; + abukis_V = mkV "abukis" ; + abukis_V2 = mkV2 "abukis" ; + abul_V = mkV "abul" ; + abul_V2 = mkV2 "abul" ; + abulel_V = mkV "abulel" ; + abulel_V2 = mkV2 "abulel" ; + abulis_V = mkV "abulis" ; + abulis_V2 = mkV2 "abulis" ; + abuz_V = mkV "abuz" ; + abuz_V2 = mkV2 "abuz" ; + abuzan_V = mkV "abuzan" ; + abuzan_V2 = mkV2 "abuzan" ; + abuzisan_V = mkV "abuzisan" ; + abuzisan_V2 = mkV2 "abuzisan" ; + abuzisis_V = mkV "abuzisis" ; + abuzisis_V2 = mkV2 "abuzisis" ; + ahluk_V = mkV "ahluk" ; + ahluk_V2 = mkV2 "ahluk" ; + ahlukan_V = mkV "ahlukan" ; + ahlukan_V2 = mkV2 "ahlukan" ; + ahlukanis_V = mkV "ahlukanis" ; + ahlukanis_V2 = mkV2 "ahlukanis" ; + ahlukanisel_V = mkV "ahlukanisel" ; + ahlukanisel_V2 = mkV2 "ahlukanisel" ; + ahlukel_V = mkV "ahlukel" ; + ahlukel_V2 = mkV2 "ahlukel" ; + ahlul_V = mkV "ahlul" ; + ahlul_V2 = mkV2 "ahlul" ; + ahlulan_V = mkV "ahlulan" ; + ahlulan_V2 = mkV2 "ahlulan" ; + ahlulek_V = mkV "ahlulek" ; + ahlulek_V2 = mkV2 "ahlulek" ; + ahlulel_V = mkV "ahlulel" ; + ahlulel_V2 = mkV2 "ahlulel" ; + akh_V = mkV "akh" ; + akh_V2 = mkV2 "akh" ; + akhan_V = mkV "akhan" ; + akhan_V2 = mkV2 "akhan" ; + akhek_V = mkV "akhek" ; + akhek_V2 = mkV2 "akhek" ; + akhel_V = mkV "akhel" ; + akhel_V2 = mkV2 "akhel" ; + akhelan_V = mkV "akhelan" ; + akhelan_V2 = mkV2 "akhelan" ; + akhis_V = mkV "akhis" ; + akhis_V2 = mkV2 "akhis" ; + al_V = mkV "al" ; + al_V2 = mkV2 "al" ; + alan_V = mkV "alan" ; + alan_V2 = mkV2 "alan" ; + alanel_V = mkV "alanel" ; + alanel_V2 = mkV2 "alanel" ; + alek_V = mkV "alek" ; + alek_V2 = mkV2 "alek" ; + alekel_V = mkV "alekel" ; + alekel_V2 = mkV2 "alekel" ; + alekelek_V = mkV "alekelek" ; + alekelek_V2 = mkV2 "alekelek" ; + alekelel_V = mkV "alekelel" ; + alekelel_V2 = mkV2 "alekelel" ; + alekis_V = mkV "alekis" ; + alekis_V2 = mkV2 "alekis" ; + alel_V = mkV "alel" ; + alel_V2 = mkV2 "alel" ; + alelis_V = mkV "alelis" ; + alelis_V2 = mkV2 "alelis" ; + alelisis_V = mkV "alelisis" ; + alelisis_V2 = mkV2 "alelisis" ; + alis_V = mkV "alis" ; + alis_V2 = mkV2 "alis" ; + alisan_V = mkV "alisan" ; + alisan_V2 = mkV2 "alisan" ; + alisel_V = mkV "alisel" ; + alisel_V2 = mkV2 "alisel" ; + aluk_V = mkV "aluk" ; + aluk_V2 = mkV2 "aluk" ; + alus_V = mkV "alus" ; + alus_V2 = mkV2 "alus" ; + amb_V = mkV "amb" ; + amb_V2 = mkV2 "amb" ; + amban_V = mkV "amban" ; + amban_V2 = mkV2 "amban" ; + ambanis_V = mkV "ambanis" ; + ambanis_V2 = mkV2 "ambanis" ; + ambath_V = mkV "ambath" ; + ambath_V2 = mkV2 "ambath" ; + ambathek_V = mkV "ambathek" ; + ambathek_V2 = mkV2 "ambathek" ; + ambek_V = mkV "ambek" ; + ambek_V2 = mkV2 "ambek" ; + ambekel_V = mkV "ambekel" ; + ambekel_V2 = mkV2 "ambekel" ; + ambel_V = mkV "ambel" ; + ambel_V2 = mkV2 "ambel" ; + ambelan_V = mkV "ambelan" ; + ambelan_V2 = mkV2 "ambelan" ; + ambelel_V = mkV "ambelel" ; + ambelel_V2 = mkV2 "ambelel" ; + ambis_V = mkV "ambis" ; + ambis_V2 = mkV2 "ambis" ; + ambisan_V = mkV "ambisan" ; + ambisan_V2 = mkV2 "ambisan" ; + ambuk_V = mkV "ambuk" ; + ambuk_V2 = mkV2 "ambuk" ; + ambukel_V = mkV "ambukel" ; + ambukel_V2 = mkV2 "ambukel" ; + ambul_V = mkV "ambul" ; + ambul_V2 = mkV2 "ambul" ; + ambulel_V = mkV "ambulel" ; + ambulel_V2 = mkV2 "ambulel" ; + amuk_V = mkV "amuk" ; + amuk_V2 = mkV2 "amuk" ; + amukel_V = mkV "amukel" ; + amukel_V2 = mkV2 "amukel" ; + amukelek_V = mkV "amukelek" ; + amukelek_V2 = mkV2 "amukelek" ; + amukis_V = mkV "amukis" ; + amukis_V2 = mkV2 "amukis" ; + amul_V = mkV "amul" ; + amul_V2 = mkV2 "amul" ; + amulel_V = mkV "amulel" ; + amulel_V2 = mkV2 "amulel" ; + amulis_V = mkV "amulis" ; + amulis_V2 = mkV2 "amulis" ; + and_V = mkV "and" ; + and_V2 = mkV2 "and" ; + andel_V = mkV "andel" ; + andel_V2 = mkV2 "andel" ; + andelan_V = mkV "andelan" ; + andelan_V2 = mkV2 "andelan" ; + andelis_V = mkV "andelis" ; + andelis_V2 = mkV2 "andelis" ; + andis_V = mkV "andis" ; + andis_V2 = mkV2 "andis" ; + andul_V = mkV "andul" ; + andul_V2 = mkV2 "andul" ; + andulel_V = mkV "andulel" ; + andulel_V2 = mkV2 "andulel" ; + anel_V = mkV "anel" ; + anel_V2 = mkV2 "anel" ; + anelekelel_V = mkV "anelekelel" ; + anelekelel_V2 = mkV2 "anelekelel" ; + anelis_V = mkV "anelis" ; + anelis_V2 = mkV2 "anelis" ; + anelisek_V = mkV "anelisek" ; + anelisek_V2 = mkV2 "anelisek" ; + anezel_V = mkV "anezel" ; + anezel_V2 = mkV2 "anezel" ; + anezezel_V = mkV "anezezel" ; + anezezel_V2 = mkV2 "anezezel" ; + ang_V = mkV "ang" ; + ang_V2 = mkV2 "ang" ; + angam_V = mkV "angam" ; + angam_V2 = mkV2 "angam" ; + angaman_V = mkV "angaman" ; + angaman_V2 = mkV2 "angaman" ; + angamel_V = mkV "angamel" ; + angamel_V2 = mkV2 "angamel" ; + angamelan_V = mkV "angamelan" ; + angamelan_V2 = mkV2 "angamelan" ; + angan_V = mkV "angan" ; + angan_V2 = mkV2 "angan" ; + anganel_V = mkV "anganel" ; + anganel_V2 = mkV2 "anganel" ; + anganis_V = mkV "anganis" ; + anganis_V2 = mkV2 "anganis" ; + angek_V = mkV "angek" ; + angek_V2 = mkV2 "angek" ; + angel_V = mkV "angel" ; + angel_V2 = mkV2 "angel" ; + angelekelel_V = mkV "angelekelel" ; + angelekelel_V2 = mkV2 "angelekelel" ; + angis_V = mkV "angis" ; + angis_V2 = mkV2 "angis" ; + angisan_V = mkV "angisan" ; + angisan_V2 = mkV2 "angisan" ; + any_V = mkV "any" ; + any_V2 = mkV2 "any" ; + anyan_V = mkV "anyan" ; + anyan_V2 = mkV2 "anyan" ; + anyelel_V = mkV "anyelel" ; + anyelel_V2 = mkV2 "anyelel" ; + anyuk_V = mkV "anyuk" ; + anyuk_V2 = mkV2 "anyuk" ; + anyul_V = mkV "anyul" ; + anyul_V2 = mkV2 "anyul" ; + aphuc_V = mkV "aphuc" ; + aphuc_V2 = mkV2 "aphuc" ; + aphuk_V = mkV "aphuk" ; + aphuk_V2 = mkV2 "aphuk" ; + aphul_V = mkV "aphul" ; + aphul_V2 = mkV2 "aphul" ; + ath_V = mkV "ath" ; + ath_V2 = mkV2 "ath" ; + athan_V = mkV "athan" ; + athan_V2 = mkV2 "athan" ; + athek_V = mkV "athek" ; + athek_V2 = mkV2 "athek" ; + athekel_V = mkV "athekel" ; + athekel_V2 = mkV2 "athekel" ; + athekis_V = mkV "athekis" ; + athekis_V2 = mkV2 "athekis" ; + athel_V = mkV "athel" ; + athel_V2 = mkV2 "athel" ; + athelek_V = mkV "athelek" ; + athelek_V2 = mkV2 "athelek" ; + athelel_V = mkV "athelel" ; + athelel_V2 = mkV2 "athelel" ; + athelelan_V = mkV "athelelan" ; + athelelan_V2 = mkV2 "athelelan" ; + az_V = mkV "az" ; + az_V2 = mkV2 "az" ; + azan_V = mkV "azan" ; + azan_V2 = mkV2 "azan" ; + azek_V = mkV "azek" ; + azek_V2 = mkV2 "azek" ; + azel_V = mkV "azel" ; + azel_V2 = mkV2 "azel" ; + azis_V = mkV "azis" ; + azis_V2 = mkV2 "azis" ; + b_V = mkV "b" ; + b_V2 = mkV2 "b" ; + bab_V = mkV "bab" ; + bab_V2 = mkV2 "bab" ; + babal_V = mkV "babal" ; + babal_V2 = mkV2 "babal" ; + babalek_V = mkV "babalek" ; + babalek_V2 = mkV2 "babalek" ; + babalekel_V = mkV "babalekel" ; + babalekel_V2 = mkV2 "babalekel" ; + babalis_V = mkV "babalis" ; + babalis_V2 = mkV2 "babalis" ; + babaz_V = mkV "babaz" ; + babaz_V2 = mkV2 "babaz" ; + babazek_V = mkV "babazek" ; + babazek_V2 = mkV2 "babazek" ; + babek_V = mkV "babek" ; + babek_V2 = mkV2 "babek" ; + babekelel_V = mkV "babekelel" ; + babekelel_V2 = mkV2 "babekelel" ; + babel_V = mkV "babel" ; + babel_V2 = mkV2 "babel" ; + babelel_V = mkV "babelel" ; + babelel_V2 = mkV2 "babelel" ; + babuk_V = mkV "babuk" ; + babuk_V2 = mkV2 "babuk" ; + babukan_V = mkV "babukan" ; + babukan_V2 = mkV2 "babukan" ; + babukek_V = mkV "babukek" ; + babukek_V2 = mkV2 "babukek" ; + babukel_V = mkV "babukel" ; + babukel_V2 = mkV2 "babukel" ; + babul_V = mkV "babul" ; + babul_V2 = mkV2 "babul" ; + babulel_V = mkV "babulel" ; + babulel_V2 = mkV2 "babulel" ; + bakaz_V = mkV "bakaz" ; + bakaz_V2 = mkV2 "bakaz" ; + bal_V = mkV "bal" ; + bal_V2 = mkV2 "bal" ; + balabal_V = mkV "balabal" ; + balabal_V2 = mkV2 "balabal" ; + balan_V = mkV "balan" ; + balan_V2 = mkV2 "balan" ; + balek_V = mkV "balek" ; + balek_V2 = mkV2 "balek" ; + balekel_V = mkV "balekel" ; + balekel_V2 = mkV2 "balekel" ; + balekelek_V = mkV "balekelek" ; + balekelek_V2 = mkV2 "balekelek" ; + balekelel_V = mkV "balekelel" ; + balekelel_V2 = mkV2 "balekelel" ; + balekis_V = mkV "balekis" ; + balekis_V2 = mkV2 "balekis" ; + balel_V = mkV "balel" ; + balel_V2 = mkV2 "balel" ; + balis_V = mkV "balis" ; + balis_V2 = mkV2 "balis" ; + balisan_V = mkV "balisan" ; + balisan_V2 = mkV2 "balisan" ; + balisel_V = mkV "balisel" ; + balisel_V2 = mkV2 "balisel" ; + balul_V = mkV "balul" ; + balul_V2 = mkV2 "balul" ; + balulek_V = mkV "balulek" ; + balulek_V2 = mkV2 "balulek" ; + bamb_V = mkV "bamb" ; + bamb_V2 = mkV2 "bamb" ; + bamban_V = mkV "bamban" ; + bamban_V2 = mkV2 "bamban" ; + bambanis_V = mkV "bambanis" ; + bambanis_V2 = mkV2 "bambanis" ; + bambek_V = mkV "bambek" ; + bambek_V2 = mkV2 "bambek" ; + bambekel_V = mkV "bambekel" ; + bambekel_V2 = mkV2 "bambekel" ; + bambel_V = mkV "bambel" ; + bambel_V2 = mkV2 "bambel" ; + bambelan_V = mkV "bambelan" ; + bambelan_V2 = mkV2 "bambelan" ; + bambelel_V = mkV "bambelel" ; + bambelel_V2 = mkV2 "bambelel" ; + bambezel_V = mkV "bambezel" ; + bambezel_V2 = mkV2 "bambezel" ; + bambezelek_V = mkV "bambezelek" ; + bambezelek_V2 = mkV2 "bambezelek" ; + bambis_V = mkV "bambis" ; + bambis_V2 = mkV2 "bambis" ; + bambisan_V = mkV "bambisan" ; + bambisan_V2 = mkV2 "bambisan" ; + bambisis_V = mkV "bambisis" ; + bambisis_V2 = mkV2 "bambisis" ; + ban_V = mkV "ban" ; + ban_V2 = mkV2 "ban" ; + band_V = mkV "band" ; + band_V2 = mkV2 "band" ; + bandakany_V = mkV "bandakany" ; + bandakany_V2 = mkV2 "bandakany" ; + bandel_V = mkV "bandel" ; + bandel_V2 = mkV2 "bandel" ; + bandis_V = mkV "bandis" ; + bandis_V2 = mkV2 "bandis" ; + bandl_V = mkV "bandl" ; + bandl_V2 = mkV2 "bandl" ; + bandlulul_V = mkV "bandlulul" ; + bandlulul_V2 = mkV2 "bandlulul" ; + banek_V = mkV "banek" ; + banek_V2 = mkV2 "banek" ; + banelis_V = mkV "banelis" ; + banelis_V2 = mkV2 "banelis" ; + bang_V = mkV "bang" ; + bang_V2 = mkV2 "bang" ; + bangalal_V = mkV "bangalal" ; + bangalal_V2 = mkV2 "bangalal" ; + bangan_V = mkV "bangan" ; + bangan_V2 = mkV2 "bangan" ; + bangek_V = mkV "bangek" ; + bangek_V2 = mkV2 "bangek" ; + bangel_V = mkV "bangel" ; + bangel_V2 = mkV2 "bangel" ; + bangis_V = mkV "bangis" ; + bangis_V2 = mkV2 "bangis" ; + bangisan_V = mkV "bangisan" ; + bangisan_V2 = mkV2 "bangisan" ; + bangul_V = mkV "bangul" ; + bangul_V2 = mkV2 "bangul" ; + baniz_V = mkV "baniz" ; + baniz_V2 = mkV2 "baniz" ; + bas_V = mkV "bas" ; + bas_V2 = mkV2 "bas" ; + basekel_V = mkV "basekel" ; + basekel_V2 = mkV2 "basekel" ; + basel_V = mkV "basel" ; + basel_V2 = mkV2 "basel" ; + bathaz_V = mkV "bathaz" ; + bathaz_V2 = mkV2 "bathaz" ; + bathazel_V = mkV "bathazel" ; + bathazel_V2 = mkV2 "bathazel" ; + bawel_V = mkV "bawel" ; + bawel_V2 = mkV2 "bawel" ; + bawelel_V = mkV "bawelel" ; + bawelel_V2 = mkV2 "bawelel" ; + bawelis_V = mkV "bawelis" ; + bawelis_V2 = mkV2 "bawelis" ; + bawelisel_V = mkV "bawelisel" ; + bawelisel_V2 = mkV2 "bawelisel" ; + baz_V = mkV "baz" ; + baz_V2 = mkV2 "baz" ; + bazek_V = mkV "bazek" ; + bazek_V2 = mkV2 "bazek" ; + bazekel_V = mkV "bazekel" ; + bazekel_V2 = mkV2 "bazekel" ; + bazis_V = mkV "bazis" ; + bazis_V2 = mkV2 "bazis" ; + bazisek_V = mkV "bazisek" ; + bazisek_V2 = mkV2 "bazisek" ; + beb_V = mkV "beb" ; + beb_V2 = mkV2 "beb" ; + beban_V = mkV "beban" ; + beban_V2 = mkV2 "beban" ; + bebek_V = mkV "bebek" ; + bebek_V2 = mkV2 "bebek" ; + bebelel_V = mkV "bebelel" ; + bebelel_V2 = mkV2 "bebelel" ; + bebeth_V = mkV "bebeth" ; + bebeth_V2 = mkV2 "bebeth" ; + bebez_V = mkV "bebez" ; + bebez_V2 = mkV2 "bebez" ; + befuzel_V = mkV "befuzel" ; + befuzel_V2 = mkV2 "befuzel" ; + behlek_V = mkV "behlek" ; + behlek_V2 = mkV2 "behlek" ; + bek_V = mkV "bek" ; + bek_V2 = mkV2 "bek" ; + bekan_V = mkV "bekan" ; + bekan_V2 = mkV2 "bekan" ; + bekel_V = mkV "bekel" ; + bekel_V2 = mkV2 "bekel" ; + bekelan_V = mkV "bekelan" ; + bekelan_V2 = mkV2 "bekelan" ; + bekelel_V = mkV "bekelel" ; + bekelel_V2 = mkV2 "bekelel" ; + bekezel_V = mkV "bekezel" ; + bekezel_V2 = mkV2 "bekezel" ; + bekezelel_V = mkV "bekezelel" ; + bekezelel_V2 = mkV2 "bekezelel" ; + bekis_V = mkV "bekis" ; + bekis_V2 = mkV2 "bekis" ; + bel_V = mkV "bel" ; + bel_V2 = mkV2 "bel" ; + belan_V = mkV "belan" ; + belan_V2 = mkV2 "belan" ; + belek_V = mkV "belek" ; + belek_V2 = mkV2 "belek" ; + belekelel_V = mkV "belekelel" ; + belekelel_V2 = mkV2 "belekelel" ; + belel_V = mkV "belel" ; + belel_V2 = mkV2 "belel" ; + belesel_V = mkV "belesel" ; + belesel_V2 = mkV2 "belesel" ; + beleth_V = mkV "beleth" ; + beleth_V2 = mkV2 "beleth" ; + belethan_V = mkV "belethan" ; + belethan_V2 = mkV2 "belethan" ; + belethel_V = mkV "belethel" ; + belethel_V2 = mkV2 "belethel" ; + belethis_V = mkV "belethis" ; + belethis_V2 = mkV2 "belethis" ; + bendl_V = mkV "bendl" ; + bendl_V2 = mkV2 "bendl" ; + bendlel_V = mkV "bendlel" ; + bendlel_V2 = mkV2 "bendlel" ; + beng_V = mkV "beng" ; + beng_V2 = mkV2 "beng" ; + bengek_V = mkV "bengek" ; + bengek_V2 = mkV2 "bengek" ; + bengez_V = mkV "bengez" ; + bengez_V2 = mkV2 "bengez" ; + benyezel_V = mkV "benyezel" ; + benyezel_V2 = mkV2 "benyezel" ; + beth_V = mkV "beth" ; + beth_V2 = mkV2 "beth" ; + bethan_V = mkV "bethan" ; + bethan_V2 = mkV2 "bethan" ; + bethel_V = mkV "bethel" ; + bethel_V2 = mkV2 "bethel" ; + bethelekel_V = mkV "bethelekel" ; + bethelekel_V2 = mkV2 "bethelekel" ; + bethelel_V = mkV "bethelel" ; + bethelel_V2 = mkV2 "bethelel" ; + bez_V = mkV "bez" ; + bez_V2 = mkV2 "bez" ; + bezel_V = mkV "bezel" ; + bezel_V2 = mkV2 "bezel" ; + bezis_V = mkV "bezis" ; + bezis_V2 = mkV2 "bezis" ; + bhabhalal_V = mkV "bhabhalal" ; + bhabhalal_V2 = mkV2 "bhabhalal" ; + bhac_V = mkV "bhac" ; + bhac_V2 = mkV2 "bhac" ; + bhad_V = mkV "bhad" ; + bhad_V2 = mkV2 "bhad" ; + bhadam_V = mkV "bhadam" ; + bhadam_V2 = mkV2 "bhadam" ; + bhadazel_V = mkV "bhadazel" ; + bhadazel_V2 = mkV2 "bhadazel" ; + bhadl_V = mkV "bhadl" ; + bhadl_V2 = mkV2 "bhadl" ; + bhak_V = mkV "bhak" ; + bhak_V2 = mkV2 "bhak" ; + bhakabhak_V = mkV "bhakabhak" ; + bhakabhak_V2 = mkV2 "bhakabhak" ; + bhakaz_V = mkV "bhakaz" ; + bhakaz_V2 = mkV2 "bhakaz" ; + bhakel_V = mkV "bhakel" ; + bhakel_V2 = mkV2 "bhakel" ; + bhaklazek_V = mkV "bhaklazek" ; + bhaklazek_V2 = mkV2 "bhaklazek" ; + bhakuz_V = mkV "bhakuz" ; + bhakuz_V2 = mkV2 "bhakuz" ; + bhakuzel_V = mkV "bhakuzel" ; + bhakuzel_V2 = mkV2 "bhakuzel" ; + bhakuzis_V = mkV "bhakuzis" ; + bhakuzis_V2 = mkV2 "bhakuzis" ; + bhal_V = mkV "bhal" ; + bhal_V2 = mkV2 "bhal" ; + bhalakax_V = mkV "bhalakax" ; + bhalakax_V2 = mkV2 "bhalakax" ; + bhalek_V = mkV "bhalek" ; + bhalek_V2 = mkV2 "bhalek" ; + bhalel_V = mkV "bhalel" ; + bhalel_V2 = mkV2 "bhalel" ; + bhalelan_V = mkV "bhalelan" ; + bhalelan_V2 = mkV2 "bhalelan" ; + bhalis_V = mkV "bhalis" ; + bhalis_V2 = mkV2 "bhalis" ; + bhalisel_V = mkV "bhalisel" ; + bhalisel_V2 = mkV2 "bhalisel" ; + bhamb_V = mkV "bhamb" ; + bhamb_V2 = mkV2 "bhamb" ; + bhambabul_V = mkV "bhambabul" ; + bhambabul_V2 = mkV2 "bhambabul" ; + bhambath_V = mkV "bhambath" ; + bhambath_V2 = mkV2 "bhambath" ; + bhamuz_V = mkV "bhamuz" ; + bhamuz_V2 = mkV2 "bhamuz" ; + bhand_V = mkV "bhand" ; + bhand_V2 = mkV2 "bhand" ; + bhangq_V = mkV "bhangq" ; + bhangq_V2 = mkV2 "bhangq" ; + bhansan_V = mkV "bhansan" ; + bhansan_V2 = mkV2 "bhansan" ; + bhansel_V = mkV "bhansel" ; + bhansel_V2 = mkV2 "bhansel" ; + bhaq_V = mkV "bhaq" ; + bhaq_V2 = mkV2 "bhaq" ; + bhash_V = mkV "bhash" ; + bhash_V2 = mkV2 "bhash" ; + bhavumul_V = mkV "bhavumul" ; + bhavumul_V2 = mkV2 "bhavumul" ; + bhaxabul_V = mkV "bhaxabul" ; + bhaxabul_V2 = mkV2 "bhaxabul" ; + bhaxan_V = mkV "bhaxan" ; + bhaxan_V2 = mkV2 "bhaxan" ; + bhayiz_V = mkV "bhayiz" ; + bhayiz_V2 = mkV2 "bhayiz" ; + bhebh_V = mkV "bhebh" ; + bhebh_V2 = mkV2 "bhebh" ; + bhebhethek_V = mkV "bhebhethek" ; + bhebhethek_V2 = mkV2 "bhebhethek" ; + bhebhezel_V = mkV "bhebhezel" ; + bhebhezel_V2 = mkV2 "bhebhezel" ; + bhec_V = mkV "bhec" ; + bhec_V2 = mkV2 "bhec" ; + bhed_V = mkV "bhed" ; + bhed_V2 = mkV2 "bhed" ; + bhedel_V = mkV "bhedel" ; + bhedel_V2 = mkV2 "bhedel" ; + bhedezan_V = mkV "bhedezan" ; + bhedezan_V2 = mkV2 "bhedezan" ; + bhedl_V = mkV "bhedl" ; + bhedl_V2 = mkV2 "bhedl" ; + bhedlel_V = mkV "bhedlel" ; + bhedlel_V2 = mkV2 "bhedlel" ; + bheduk_V = mkV "bheduk" ; + bheduk_V2 = mkV2 "bheduk" ; + bhedul_V = mkV "bhedul" ; + bhedul_V2 = mkV2 "bhedul" ; + bhej_V = mkV "bhej" ; + bhej_V2 = mkV2 "bhej" ; + bhejan_V = mkV "bhejan" ; + bhejan_V2 = mkV2 "bhejan" ; + bhek_V = mkV "bhek" ; + bhek_V2 = mkV2 "bhek" ; + bhekabhek_V = mkV "bhekabhek" ; + bhekabhek_V2 = mkV2 "bhekabhek" ; + bhekan_V = mkV "bhekan" ; + bhekan_V2 = mkV2 "bhekan" ; + bhekek_V = mkV "bhekek" ; + bhekek_V2 = mkV2 "bhekek" ; + bhekel_V = mkV "bhekel" ; + bhekel_V2 = mkV2 "bhekel" ; + bhekelek_V = mkV "bhekelek" ; + bhekelek_V2 = mkV2 "bhekelek" ; + bhekelel_V = mkV "bhekelel" ; + bhekelel_V2 = mkV2 "bhekelel" ; + bhekis_V = mkV "bhekis" ; + bhekis_V2 = mkV2 "bhekis" ; + bhekisis_V = mkV "bhekisis" ; + bhekisis_V2 = mkV2 "bhekisis" ; + bheluz_V = mkV "bheluz" ; + bheluz_V2 = mkV2 "bheluz" ; + bhem_V = mkV "bhem" ; + bhem_V2 = mkV2 "bhem" ; + bhemis_V = mkV "bhemis" ; + bhemis_V2 = mkV2 "bhemis" ; + bhen_V = mkV "bhen" ; + bhen_V2 = mkV2 "bhen" ; + bhenguz_V = mkV "bhenguz" ; + bhenguz_V2 = mkV2 "bhenguz" ; + bhens_V = mkV "bhens" ; + bhens_V2 = mkV2 "bhens" ; + bhibh_V = mkV "bhibh" ; + bhibh_V2 = mkV2 "bhibh" ; + bhibhidl_V = mkV "bhibhidl" ; + bhibhidl_V2 = mkV2 "bhibhidl" ; + bhibhis_V = mkV "bhibhis" ; + bhibhis_V2 = mkV2 "bhibhis" ; + bhidlang_V = mkV "bhidlang" ; + bhidlang_V2 = mkV2 "bhidlang" ; + bhidlik_V = mkV "bhidlik" ; + bhidlik_V2 = mkV2 "bhidlik" ; + bhidlikel_V = mkV "bhidlikel" ; + bhidlikel_V2 = mkV2 "bhidlikel" ; + bhidliz_V = mkV "bhidliz" ; + bhidliz_V2 = mkV2 "bhidliz" ; + bhij_V = mkV "bhij" ; + bhij_V2 = mkV2 "bhij" ; + bhil_V = mkV "bhil" ; + bhil_V2 = mkV2 "bhil" ; + bhinc_V = mkV "bhinc" ; + bhinc_V2 = mkV2 "bhinc" ; + bhincel_V = mkV "bhincel" ; + bhincel_V2 = mkV2 "bhincel" ; + bhincis_V = mkV "bhincis" ; + bhincis_V2 = mkV2 "bhincis" ; + bhinq_V = mkV "bhinq" ; + bhinq_V2 = mkV2 "bhinq" ; + bhizel_V = mkV "bhizel" ; + bhizel_V2 = mkV2 "bhizel" ; + bhobhodlan_V = mkV "bhobhodlan" ; + bhobhodlan_V2 = mkV2 "bhobhodlan" ; + bhobok_V = mkV "bhobok" ; + bhobok_V2 = mkV2 "bhobok" ; + bhobokel_V = mkV "bhobokel" ; + bhobokel_V2 = mkV2 "bhobokel" ; + bhobos_V = mkV "bhobos" ; + bhobos_V2 = mkV2 "bhobos" ; + bhoboz_V = mkV "bhoboz" ; + bhoboz_V2 = mkV2 "bhoboz" ; + bhobozel_V = mkV "bhobozel" ; + bhobozel_V2 = mkV2 "bhobozel" ; + bhocobal_V = mkV "bhocobal" ; + bhocobal_V2 = mkV2 "bhocobal" ; + bhodl_V = mkV "bhodl" ; + bhodl_V2 = mkV2 "bhodl" ; + bhodlel_V = mkV "bhodlel" ; + bhodlel_V2 = mkV2 "bhodlel" ; + bhodlelan_V = mkV "bhodlelan" ; + bhodlelan_V2 = mkV2 "bhodlelan" ; + bhodloz_V = mkV "bhodloz" ; + bhodloz_V2 = mkV2 "bhodloz" ; + bhok_V = mkV "bhok" ; + bhok_V2 = mkV2 "bhok" ; + bhokel_V = mkV "bhokel" ; + bhokel_V2 = mkV2 "bhokel" ; + bhokod_V = mkV "bhokod" ; + bhokod_V2 = mkV2 "bhokod" ; + bhol_V = mkV "bhol" ; + bhol_V2 = mkV2 "bhol" ; + bhong_V = mkV "bhong" ; + bhong_V2 = mkV2 "bhong" ; + bhongel_V = mkV "bhongel" ; + bhongel_V2 = mkV2 "bhongel" ; + bhongis_V = mkV "bhongis" ; + bhongis_V2 = mkV2 "bhongis" ; + bhongoz_V = mkV "bhongoz" ; + bhongoz_V2 = mkV2 "bhongoz" ; + bhonq_V = mkV "bhonq" ; + bhonq_V2 = mkV2 "bhonq" ; + bhonqabhonq_V = mkV "bhonqabhonq" ; + bhonqabhonq_V2 = mkV2 "bhonqabhonq" ; + bhons_V = mkV "bhons" ; + bhons_V2 = mkV2 "bhons" ; + bhonxul_V = mkV "bhonxul" ; + bhonxul_V2 = mkV2 "bhonxul" ; + bhony_V = mkV "bhony" ; + bhony_V2 = mkV2 "bhony" ; + bhov_V = mkV "bhov" ; + bhov_V2 = mkV2 "bhov" ; + bhox_V = mkV "bhox" ; + bhox_V2 = mkV2 "bhox" ; + bhozomel_V = mkV "bhozomel" ; + bhozomel_V2 = mkV2 "bhozomel" ; + bhubh_V = mkV "bhubh" ; + bhubh_V2 = mkV2 "bhubh" ; + bhubhis_V = mkV "bhubhis" ; + bhubhis_V2 = mkV2 "bhubhis" ; + bhubhudl_V = mkV "bhubhudl" ; + bhubhudl_V2 = mkV2 "bhubhudl" ; + bhubhuz_V = mkV "bhubhuz" ; + bhubhuz_V2 = mkV2 "bhubhuz" ; + bhubhuzel_V = mkV "bhubhuzel" ; + bhubhuzel_V2 = mkV2 "bhubhuzel" ; + bhucuk_V = mkV "bhucuk" ; + bhucuk_V2 = mkV2 "bhucuk" ; + bhudl_V = mkV "bhudl" ; + bhudl_V2 = mkV2 "bhudl" ; + bhuduzel_V = mkV "bhuduzel" ; + bhuduzel_V2 = mkV2 "bhuduzel" ; + bhukud_V = mkV "bhukud" ; + bhukud_V2 = mkV2 "bhukud" ; + bhukul_V = mkV "bhukul" ; + bhukul_V2 = mkV2 "bhukul" ; + bhul_V = mkV "bhul" ; + bhul_V2 = mkV2 "bhul" ; + bhulel_V = mkV "bhulel" ; + bhulel_V2 = mkV2 "bhulel" ; + bhulub_V = mkV "bhulub" ; + bhulub_V2 = mkV2 "bhulub" ; + bhumb_V = mkV "bhumb" ; + bhumb_V2 = mkV2 "bhumb" ; + bhumbuluz_V = mkV "bhumbuluz" ; + bhumbuluz_V2 = mkV2 "bhumbuluz" ; + bhung_V = mkV "bhung" ; + bhung_V2 = mkV2 "bhung" ; + bhungan_V = mkV "bhungan" ; + bhungan_V2 = mkV2 "bhungan" ; + bhunguk_V = mkV "bhunguk" ; + bhunguk_V2 = mkV2 "bhunguk" ; + bhungukel_V = mkV "bhungukel" ; + bhungukel_V2 = mkV2 "bhungukel" ; + bhunkul_V = mkV "bhunkul" ; + bhunkul_V2 = mkV2 "bhunkul" ; + bhuntsh_V = mkV "bhuntsh" ; + bhuntsh_V2 = mkV2 "bhuntsh" ; + bhuq_V = mkV "bhuq" ; + bhuq_V2 = mkV2 "bhuq" ; + bhuqabhuqek_V = mkV "bhuqabhuqek" ; + bhuqabhuqek_V2 = mkV2 "bhuqabhuqek" ; + bhuqan_V = mkV "bhuqan" ; + bhuqan_V2 = mkV2 "bhuqan" ; + bhuqek_V = mkV "bhuqek" ; + bhuqek_V2 = mkV2 "bhuqek" ; + bhuquz_V = mkV "bhuquz" ; + bhuquz_V2 = mkV2 "bhuquz" ; + bhuquzis_V = mkV "bhuquzis" ; + bhuquzis_V2 = mkV2 "bhuquzis" ; + bhushuzel_V = mkV "bhushuzel" ; + bhushuzel_V2 = mkV2 "bhushuzel" ; + bhuxek_V = mkV "bhuxek" ; + bhuxek_V2 = mkV2 "bhuxek" ; + bhuz_V = mkV "bhuz" ; + bhuz_V2 = mkV2 "bhuz" ; + bhuzan_V = mkV "bhuzan" ; + bhuzan_V2 = mkV2 "bhuzan" ; + bibithek_V = mkV "bibithek" ; + bibithek_V2 = mkV2 "bibithek" ; + bihlik_V = mkV "bihlik" ; + bihlik_V2 = mkV2 "bihlik" ; + bik_V = mkV "bik" ; + bik_V2 = mkV2 "bik" ; + bikel_V = mkV "bikel" ; + bikel_V2 = mkV2 "bikel" ; + bikelan_V = mkV "bikelan" ; + bikelan_V2 = mkV2 "bikelan" ; + bikezel_V = mkV "bikezel" ; + bikezel_V2 = mkV2 "bikezel" ; + bikizel_V = mkV "bikizel" ; + bikizel_V2 = mkV2 "bikizel" ; + bil_V = mkV "bil" ; + bil_V2 = mkV2 "bil" ; + bilel_V = mkV "bilel" ; + bilel_V2 = mkV2 "bilel" ; + bilis_V = mkV "bilis" ; + bilis_V2 = mkV2 "bilis" ; + bind_V = mkV "bind" ; + bind_V2 = mkV2 "bind" ; + bingelel_V = mkV "bingelel" ; + bingelel_V2 = mkV2 "bingelel" ; + bingelelan_V = mkV "bingelelan" ; + bingelelan_V2 = mkV2 "bingelelan" ; + biny_V = mkV "biny" ; + biny_V2 = mkV2 "biny" ; + binyek_V = mkV "binyek" ; + binyek_V2 = mkV2 "binyek" ; + biph_V = mkV "biph" ; + biph_V2 = mkV2 "biph" ; + bis_V = mkV "bis" ; + bis_V2 = mkV2 "bis" ; + bisan_V = mkV "bisan" ; + bisan_V2 = mkV2 "bisan" ; + bish_V = mkV "bish" ; + bish_V2 = mkV2 "bish" ; + bishan_V = mkV "bishan" ; + bishan_V2 = mkV2 "bishan" ; + bisis_V = mkV "bisis" ; + bisis_V2 = mkV2 "bisis" ; + biy_V = mkV "biy" ; + biy_V2 = mkV2 "biy" ; + biyel_V = mkV "biyel" ; + biyel_V2 = mkV2 "biyel" ; + biz_V = mkV "biz" ; + biz_V2 = mkV2 "biz" ; + bizan_V = mkV "bizan" ; + bizan_V2 = mkV2 "bizan" ; + bizek_V = mkV "bizek" ; + bizek_V2 = mkV2 "bizek" ; + bizel_V = mkV "bizel" ; + bizel_V2 = mkV2 "bizel" ; + bohl_V = mkV "bohl" ; + bohl_V2 = mkV2 "bohl" ; + bol_V = mkV "bol" ; + bol_V2 = mkV2 "bol" ; + bolek_V = mkV "bolek" ; + bolek_V2 = mkV2 "bolek" ; + bolekis_V = mkV "bolekis" ; + bolekis_V2 = mkV2 "bolekis" ; + bon_V = mkV "bon" ; + bon_V2 = mkV2 "bon" ; + bonakal_V = mkV "bonakal" ; + bonakal_V2 = mkV2 "bonakal" ; + bonakalis_V = mkV "bonakalis" ; + bonakalis_V2 = mkV2 "bonakalis" ; + bonan_V = mkV "bonan" ; + bonan_V2 = mkV2 "bonan" ; + bond_V = mkV "bond" ; + bond_V2 = mkV2 "bond" ; + bondabond_V = mkV "bondabond" ; + bondabond_V2 = mkV2 "bondabond" ; + bondel_V = mkV "bondel" ; + bondel_V2 = mkV2 "bondel" ; + bondelan_V = mkV "bondelan" ; + bondelan_V2 = mkV2 "bondelan" ; + bonel_V = mkV "bonel" ; + bonel_V2 = mkV2 "bonel" ; + bonelel_V = mkV "bonelel" ; + bonelel_V2 = mkV2 "bonelel" ; + bong_V = mkV "bong" ; + bong_V2 = mkV2 "bong" ; + bongel_V = mkV "bongel" ; + bongel_V2 = mkV2 "bongel" ; + bongoz_V = mkV "bongoz" ; + bongoz_V2 = mkV2 "bongoz" ; + bonis_V = mkV "bonis" ; + bonis_V2 = mkV2 "bonis" ; + bonisan_V = mkV "bonisan" ; + bonisan_V2 = mkV2 "bonisan" ; + bonisis_V = mkV "bonisis" ; + bonisis_V2 = mkV2 "bonisis" ; + boph_V = mkV "boph" ; + boph_V2 = mkV2 "boph" ; + bophan_V = mkV "bophan" ; + bophan_V2 = mkV2 "bophan" ; + bophel_V = mkV "bophel" ; + bophel_V2 = mkV2 "bophel" ; + bophelan_V = mkV "bophelan" ; + bophelan_V2 = mkV2 "bophelan" ; + bophezel_V = mkV "bophezel" ; + bophezel_V2 = mkV2 "bophezel" ; + bophis_V = mkV "bophis" ; + bophis_V2 = mkV2 "bophis" ; + both_V = mkV "both" ; + both_V2 = mkV2 "both" ; + bovul_V = mkV "bovul" ; + bovul_V2 = mkV2 "bovul" ; + bub_V = mkV "bub" ; + bub_V2 = mkV2 "bub" ; + bubek_V = mkV "bubek" ; + bubek_V2 = mkV2 "bubek" ; + bubul_V = mkV "bubul" ; + bubul_V2 = mkV2 "bubul" ; + buhluz_V = mkV "buhluz" ; + buhluz_V2 = mkV2 "buhluz" ; + buk_V = mkV "buk" ; + buk_V2 = mkV2 "buk" ; + bukabuk_V = mkV "bukabuk" ; + bukabuk_V2 = mkV2 "bukabuk" ; + bukan_V = mkV "bukan" ; + bukan_V2 = mkV2 "bukan" ; + bukek_V = mkV "bukek" ; + bukek_V2 = mkV2 "bukek" ; + bukel_V = mkV "bukel" ; + bukel_V2 = mkV2 "bukel" ; + bukelan_V = mkV "bukelan" ; + bukelan_V2 = mkV2 "bukelan" ; + bukelek_V = mkV "bukelek" ; + bukelek_V2 = mkV2 "bukelek" ; + bukelel_V = mkV "bukelel" ; + bukelel_V2 = mkV2 "bukelel" ; + bukez_V = mkV "bukez" ; + bukez_V2 = mkV2 "bukez" ; + bukezel_V = mkV "bukezel" ; + bukezel_V2 = mkV2 "bukezel" ; + bukis_V = mkV "bukis" ; + bukis_V2 = mkV2 "bukis" ; + bukisis_V = mkV "bukisis" ; + bukisis_V2 = mkV2 "bukisis" ; + bulal_V = mkV "bulal" ; + bulal_V2 = mkV2 "bulal" ; + bulalan_V = mkV "bulalan" ; + bulalan_V2 = mkV2 "bulalan" ; + bulalel_V = mkV "bulalel" ; + bulalel_V2 = mkV2 "bulalel" ; + bulalis_V = mkV "bulalis" ; + bulalis_V2 = mkV2 "bulalis" ; + bulis_V = mkV "bulis" ; + bulis_V2 = mkV2 "bulis" ; + bulisan_V = mkV "bulisan" ; + bulisan_V2 = mkV2 "bulisan" ; + bulung_V = mkV "bulung" ; + bulung_V2 = mkV2 "bulung" ; + bulungis_V = mkV "bulungis" ; + bulungis_V2 = mkV2 "bulungis" ; + bumb_V = mkV "bumb" ; + bumb_V2 = mkV2 "bumb" ; + bumban_V = mkV "bumban" ; + bumban_V2 = mkV2 "bumban" ; + bumbek_V = mkV "bumbek" ; + bumbek_V2 = mkV2 "bumbek" ; + bumbel_V = mkV "bumbel" ; + bumbel_V2 = mkV2 "bumbel" ; + bumbisis_V = mkV "bumbisis" ; + bumbisis_V2 = mkV2 "bumbisis" ; + bun_V = mkV "bun" ; + bun_V2 = mkV2 "bun" ; + bund_V = mkV "bund" ; + bund_V2 = mkV2 "bund" ; + bundis_V = mkV "bundis" ; + bundis_V2 = mkV2 "bundis" ; + bunek_V = mkV "bunek" ; + bunek_V2 = mkV2 "bunek" ; + bung_V = mkV "bung" ; + bung_V2 = mkV2 "bung" ; + bungan_V = mkV "bungan" ; + bungan_V2 = mkV2 "bungan" ; + bunganyel_V = mkV "bunganyel" ; + bunganyel_V2 = mkV2 "bunganyel" ; + bungaz_V = mkV "bungaz" ; + bungaz_V2 = mkV2 "bungaz" ; + bungazis_V = mkV "bungazis" ; + bungazis_V2 = mkV2 "bungazis" ; + bungek_V = mkV "bungek" ; + bungek_V2 = mkV2 "bungek" ; + bungel_V = mkV "bungel" ; + bungel_V2 = mkV2 "bungel" ; + bunis_V = mkV "bunis" ; + bunis_V2 = mkV2 "bunis" ; + buny_V = mkV "buny" ; + buny_V2 = mkV2 "buny" ; + bus_V = mkV "bus" ; + bus_V2 = mkV2 "bus" ; + busel_V = mkV "busel" ; + busel_V2 = mkV2 "busel" ; + busis_V = mkV "busis" ; + busis_V2 = mkV2 "busis" ; + busisek_V = mkV "busisek" ; + busisek_V2 = mkV2 "busisek" ; + buth_V = mkV "buth" ; + buth_V2 = mkV2 "buth" ; + buthan_V = mkV "buthan" ; + buthan_V2 = mkV2 "buthan" ; + buthanel_V = mkV "buthanel" ; + buthanel_V2 = mkV2 "buthanel" ; + buthel_V = mkV "buthel" ; + buthel_V2 = mkV2 "buthel" ; + buthis_V = mkV "buthis" ; + buthis_V2 = mkV2 "buthis" ; + buy_V = mkV "buy" ; + buy_V2 = mkV2 "buy" ; + buyek_V = mkV "buyek" ; + buyek_V2 = mkV2 "buyek" ; + buyekez_V = mkV "buyekez" ; + buyekez_V2 = mkV2 "buyekez" ; + buyel_V = mkV "buyel" ; + buyel_V2 = mkV2 "buyel" ; + buyelan_V = mkV "buyelan" ; + buyelan_V2 = mkV2 "buyelan" ; + buyis_V = mkV "buyis" ; + buyis_V2 = mkV2 "buyis" ; + buyisan_V = mkV "buyisan" ; + buyisan_V2 = mkV2 "buyisan" ; + buyisel_V = mkV "buyisel" ; + buyisel_V2 = mkV2 "buyisel" ; + buyiselel_V = mkV "buyiselel" ; + buyiselel_V2 = mkV2 "buyiselel" ; + buz_V = mkV "buz" ; + buz_V2 = mkV2 "buz" ; + buzabuz_V = mkV "buzabuz" ; + buzabuz_V2 = mkV2 "buzabuz" ; + buzan_V = mkV "buzan" ; + buzan_V2 = mkV2 "buzan" ; + buzel_V = mkV "buzel" ; + buzel_V2 = mkV2 "buzel" ; + buzis_V = mkV "buzis" ; + buzis_V2 = mkV2 "buzis" ; + buzisan_V = mkV "buzisan" ; + buzisan_V2 = mkV2 "buzisan" ; + buzisis_V = mkV "buzisis" ; + buzisis_V2 = mkV2 "buzisis" ; + cab_V = mkV "cab" ; + cab_V2 = mkV2 "cab" ; + cabang_V = mkV "cabang" ; + cabang_V2 = mkV2 "cabang" ; + cabangan_V = mkV "cabangan" ; + cabangan_V2 = mkV2 "cabangan" ; + cabangel_V = mkV "cabangel" ; + cabangel_V2 = mkV2 "cabangel" ; + cabangis_V = mkV "cabangis" ; + cabangis_V2 = mkV2 "cabangis" ; + cabangisis_V = mkV "cabangisis" ; + cabangisis_V2 = mkV2 "cabangisis" ; + cac_V = mkV "cac" ; + cac_V2 = mkV2 "cac" ; + cacamezel_V = mkV "cacamezel" ; + cacamezel_V2 = mkV2 "cacamezel" ; + cacamezelel_V = mkV "cacamezelel" ; + cacamezelel_V2 = mkV2 "cacamezelel" ; + cacel_V = mkV "cacel" ; + cacel_V2 = mkV2 "cacel" ; + cacis_V = mkV "cacis" ; + cacis_V2 = mkV2 "cacis" ; + cacisel_V = mkV "cacisel" ; + cacisel_V2 = mkV2 "cacisel" ; + cambalal_V = mkV "cambalal" ; + cambalal_V2 = mkV2 "cambalal" ; + cambalalel_V = mkV "cambalalel" ; + cambalalel_V2 = mkV2 "cambalalel" ; + camel_V = mkV "camel" ; + camel_V2 = mkV2 "camel" ; + can_V = mkV "can" ; + can_V2 = mkV2 "can" ; + cangcath_V = mkV "cangcath" ; + cangcath_V2 = mkV2 "cangcath" ; + caphun_V = mkV "caphun" ; + caphun_V2 = mkV2 "caphun" ; + caphunek_V = mkV "caphunek" ; + caphunek_V2 = mkV2 "caphunek" ; + caphunel_V = mkV "caphunel" ; + caphunel_V2 = mkV2 "caphunel" ; + cas_V = mkV "cas" ; + cas_V2 = mkV2 "cas" ; + cash_V = mkV "cash" ; + cash_V2 = mkV2 "cash" ; + cashek_V = mkV "cashek" ; + cashek_V2 = mkV2 "cashek" ; + cashel_V = mkV "cashel" ; + cashel_V2 = mkV2 "cashel" ; + cashelan_V = mkV "cashelan" ; + cashelan_V2 = mkV2 "cashelan" ; + cashis_V = mkV "cashis" ; + cashis_V2 = mkV2 "cashis" ; + casuk_V = mkV "casuk" ; + casuk_V2 = mkV2 "casuk" ; + casukel_V = mkV "casukel" ; + casukel_V2 = mkV2 "casukel" ; + casul_V = mkV "casul" ; + casul_V2 = mkV2 "casul" ; + casuzelis_V = mkV "casuzelis" ; + casuzelis_V2 = mkV2 "casuzelis" ; + catham_V = mkV "catham" ; + catham_V2 = mkV2 "catham" ; + cathamel_V = mkV "cathamel" ; + cathamel_V2 = mkV2 "cathamel" ; + cathul_V = mkV "cathul" ; + cathul_V2 = mkV2 "cathul" ; + cazis_V = mkV "cazis" ; + cazis_V2 = mkV2 "cazis" ; + ceb_V = mkV "ceb" ; + ceb_V2 = mkV2 "ceb" ; + cebek_V = mkV "cebek" ; + cebek_V2 = mkV2 "cebek" ; + cebis_V = mkV "cebis" ; + cebis_V2 = mkV2 "cebis" ; + cebisan_V = mkV "cebisan" ; + cebisan_V2 = mkV2 "cebisan" ; + cek_V = mkV "cek" ; + cek_V2 = mkV2 "cek" ; + cekel_V = mkV "cekel" ; + cekel_V2 = mkV2 "cekel" ; + cel_V = mkV "cel" ; + cel_V2 = mkV2 "cel" ; + celan_V = mkV "celan" ; + celan_V2 = mkV2 "celan" ; + celel_V = mkV "celel" ; + celel_V2 = mkV2 "celel" ; + centel_V = mkV "centel" ; + centel_V2 = mkV2 "centel" ; + chach_V = mkV "chach" ; + chach_V2 = mkV2 "chach" ; + chachamb_V = mkV "chachamb" ; + chachamb_V2 = mkV2 "chachamb" ; + chachaz_V = mkV "chachaz" ; + chachaz_V2 = mkV2 "chachaz" ; + chachazel_V = mkV "chachazel" ; + chachazel_V2 = mkV2 "chachazel" ; + chachis_V = mkV "chachis" ; + chachis_V2 = mkV2 "chachis" ; + chak_V = mkV "chak" ; + chak_V2 = mkV2 "chak" ; + cham_V = mkV "cham" ; + cham_V2 = mkV2 "cham" ; + chamusel_V = mkV "chamusel" ; + chamusel_V2 = mkV2 "chamusel" ; + chanas_V = mkV "chanas" ; + chanas_V2 = mkV2 "chanas" ; + chanasel_V = mkV "chanasel" ; + chanasel_V2 = mkV2 "chanasel" ; + changuz_V = mkV "changuz" ; + changuz_V2 = mkV2 "changuz" ; + chaph_V = mkV "chaph" ; + chaph_V2 = mkV2 "chaph" ; + chaphazel_V = mkV "chaphazel" ; + chaphazel_V2 = mkV2 "chaphazel" ; + chaphazelek_V = mkV "chaphazelek" ; + chaphazelek_V2 = mkV2 "chaphazelek" ; + chasis_V = mkV "chasis" ; + chasis_V2 = mkV2 "chasis" ; + chasisel_V = mkV "chasisel" ; + chasisel_V2 = mkV2 "chasisel" ; + chathazel_V = mkV "chathazel" ; + chathazel_V2 = mkV2 "chathazel" ; + chathek_V = mkV "chathek" ; + chathek_V2 = mkV2 "chathek" ; + chay_V = mkV "chay" ; + chay_V2 = mkV2 "chay" ; + chaz_V = mkV "chaz" ; + chaz_V2 = mkV2 "chaz" ; + chazan_V = mkV "chazan" ; + chazan_V2 = mkV2 "chazan" ; + chazek_V = mkV "chazek" ; + chazek_V2 = mkV2 "chazek" ; + chazel_V = mkV "chazel" ; + chazel_V2 = mkV2 "chazel" ; + chazelan_V = mkV "chazelan" ; + chazelan_V2 = mkV2 "chazelan" ; + chel_V = mkV "chel" ; + chel_V2 = mkV2 "chel" ; + chelel_V = mkV "chelel" ; + chelel_V2 = mkV2 "chelel" ; + chezuk_V = mkV "chezuk" ; + chezuk_V2 = mkV2 "chezuk" ; + chibel_V = mkV "chibel" ; + chibel_V2 = mkV2 "chibel" ; + chibelel_V = mkV "chibelel" ; + chibelel_V2 = mkV2 "chibelel" ; + chich_V = mkV "chich" ; + chich_V2 = mkV2 "chich" ; + chichim_V = mkV "chichim" ; + chichim_V2 = mkV2 "chichim" ; + chiliz_V = mkV "chiliz" ; + chiliz_V2 = mkV2 "chiliz" ; + chilizel_V = mkV "chilizel" ; + chilizel_V2 = mkV2 "chilizel" ; + chins_V = mkV "chins" ; + chins_V2 = mkV2 "chins" ; + chinsel_V = mkV "chinsel" ; + chinsel_V2 = mkV2 "chinsel" ; + chiphiz_V = mkV "chiphiz" ; + chiphiz_V2 = mkV2 "chiphiz" ; + chiphizan_V = mkV "chiphizan" ; + chiphizan_V2 = mkV2 "chiphizan" ; + chith_V = mkV "chith" ; + chith_V2 = mkV2 "chith" ; + chithek_V = mkV "chithek" ; + chithek_V2 = mkV2 "chithek" ; + chithekel_V = mkV "chithekel" ; + chithekel_V2 = mkV2 "chithekel" ; + chithel_V = mkV "chithel" ; + chithel_V2 = mkV2 "chithel" ; + chithelan_V = mkV "chithelan" ; + chithelan_V2 = mkV2 "chithelan" ; + chithis_V = mkV "chithis" ; + chithis_V2 = mkV2 "chithis" ; + chiz_V = mkV "chiz" ; + chiz_V2 = mkV2 "chiz" ; + chizel_V = mkV "chizel" ; + chizel_V2 = mkV2 "chizel" ; + choban_V = mkV "choban" ; + choban_V2 = mkV2 "choban" ; + choboz_V = mkV "choboz" ; + choboz_V2 = mkV2 "choboz" ; + chobozel_V = mkV "chobozel" ; + chobozel_V2 = mkV2 "chobozel" ; + choch_V = mkV "choch" ; + choch_V2 = mkV2 "choch" ; + chochis_V = mkV "chochis" ; + chochis_V2 = mkV2 "chochis" ; + chom_V = mkV "chom" ; + chom_V2 = mkV2 "chom" ; + choph_V = mkV "choph" ; + choph_V2 = mkV2 "choph" ; + chum_V = mkV "chum" ; + chum_V2 = mkV2 "chum" ; + chumis_V = mkV "chumis" ; + chumis_V2 = mkV2 "chumis" ; + chush_V = mkV "chush" ; + chush_V2 = mkV2 "chush" ; + chushachush_V = mkV "chushachush" ; + chushachush_V2 = mkV2 "chushachush" ; + chushis_V = mkV "chushis" ; + chushis_V2 = mkV2 "chushis" ; + chushisan_V = mkV "chushisan" ; + chushisan_V2 = mkV2 "chushisan" ; + chwabazis_V = mkV "chwabazis" ; + chwabazis_V2 = mkV2 "chwabazis" ; + chwanek_V = mkV "chwanek" ; + chwanek_V2 = mkV2 "chwanek" ; + chwashaz_V = mkV "chwashaz" ; + chwashaz_V2 = mkV2 "chwashaz" ; + chway_V = mkV "chway" ; + chway_V2 = mkV2 "chway" ; + chwaz_V = mkV "chwaz" ; + chwaz_V2 = mkV2 "chwaz" ; + chwazel_V = mkV "chwazel" ; + chwazel_V2 = mkV2 "chwazel" ; + chwens_V = mkV "chwens" ; + chwens_V2 = mkV2 "chwens" ; + chwephesh_V = mkV "chwephesh" ; + chwephesh_V2 = mkV2 "chwephesh" ; + cib_V = mkV "cib" ; + cib_V2 = mkV2 "cib" ; + ciban_V = mkV "ciban" ; + ciban_V2 = mkV2 "ciban" ; + cibek_V = mkV "cibek" ; + cibek_V2 = mkV2 "cibek" ; + cibel_V = mkV "cibel" ; + cibel_V2 = mkV2 "cibel" ; + ciciyel_V = mkV "ciciyel" ; + ciciyel_V2 = mkV2 "ciciyel" ; + ciciyelek_V = mkV "ciciyelek" ; + ciciyelek_V2 = mkV2 "ciciyelek" ; + cifelan_V = mkV "cifelan" ; + cifelan_V2 = mkV2 "cifelan" ; + cij_V = mkV "cij" ; + cij_V2 = mkV2 "cij" ; + cijis_V = mkV "cijis" ; + cijis_V2 = mkV2 "cijis" ; + cik_V = mkV "cik" ; + cik_V2 = mkV2 "cik" ; + cikic_V = mkV "cikic" ; + cikic_V2 = mkV2 "cikic" ; + cikican_V = mkV "cikican" ; + cikican_V2 = mkV2 "cikican" ; + cikoz_V = mkV "cikoz" ; + cikoz_V2 = mkV2 "cikoz" ; + cim_V = mkV "cim" ; + cim_V2 = mkV2 "cim" ; + cimel_V = mkV "cimel" ; + cimel_V2 = mkV2 "cimel" ; + cimez_V = mkV "cimez" ; + cimez_V2 = mkV2 "cimez" ; + cin_V = mkV "cin" ; + cin_V2 = mkV2 "cin" ; + cinan_V = mkV "cinan" ; + cinan_V2 = mkV2 "cinan" ; + cinanis_V = mkV "cinanis" ; + cinanis_V2 = mkV2 "cinanis" ; + cindezel_V = mkV "cindezel" ; + cindezel_V2 = mkV2 "cindezel" ; + cindezelek_V = mkV "cindezelek" ; + cindezelek_V2 = mkV2 "cindezelek" ; + cinelel_V = mkV "cinelel" ; + cinelel_V2 = mkV2 "cinelel" ; + cing_V = mkV "cing" ; + cing_V2 = mkV2 "cing" ; + cingel_V = mkV "cingel" ; + cingel_V2 = mkV2 "cingel" ; + cingisis_V = mkV "cingisis" ; + cingisis_V2 = mkV2 "cingisis" ; + cish_V = mkV "cish" ; + cish_V2 = mkV2 "cish" ; + cishel_V = mkV "cishel" ; + cishel_V2 = mkV2 "cishel" ; + cob_V = mkV "cob" ; + cob_V2 = mkV2 "cob" ; + cobek_V = mkV "cobek" ; + cobek_V2 = mkV2 "cobek" ; + cobel_V = mkV "cobel" ; + cobel_V2 = mkV2 "cobel" ; + cobelelan_V = mkV "cobelelan" ; + cobelelan_V2 = mkV2 "cobelelan" ; + coboshis_V = mkV "coboshis" ; + coboshis_V2 = mkV2 "coboshis" ; + cofiy_V = mkV "cofiy" ; + cofiy_V2 = mkV2 "cofiy" ; + cogis_V = mkV "cogis" ; + cogis_V2 = mkV2 "cogis" ; + cokosh_V = mkV "cokosh" ; + cokosh_V2 = mkV2 "cokosh" ; + col_V = mkV "col" ; + col_V2 = mkV2 "col" ; + colek_V = mkV "colek" ; + colek_V2 = mkV2 "colek" ; + colisek_V = mkV "colisek" ; + colisek_V2 = mkV2 "colisek" ; + colisis_V = mkV "colisis" ; + colisis_V2 = mkV2 "colisis" ; + cons_V = mkV "cons" ; + cons_V2 = mkV2 "cons" ; + consis_V = mkV "consis" ; + consis_V2 = mkV2 "consis" ; + cophelel_V = mkV "cophelel" ; + cophelel_V2 = mkV2 "cophelel" ; + cosh_V = mkV "cosh" ; + cosh_V2 = mkV2 "cosh" ; + coshacosh_V = mkV "coshacosh" ; + coshacosh_V2 = mkV2 "coshacosh" ; + coshel_V = mkV "coshel" ; + coshel_V2 = mkV2 "coshel" ; + cosulelan_V = mkV "cosulelan" ; + cosulelan_V2 = mkV2 "cosulelan" ; + cothoz_V = mkV "cothoz" ; + cothoz_V2 = mkV2 "cothoz" ; + cothozel_V = mkV "cothozel" ; + cothozel_V2 = mkV2 "cothozel" ; + cub_V = mkV "cub" ; + cub_V2 = mkV2 "cub" ; + cubungul_V = mkV "cubungul" ; + cubungul_V2 = mkV2 "cubungul" ; + cubungulisis_V = mkV "cubungulisis" ; + cubungulisis_V2 = mkV2 "cubungulisis" ; + cucuz_V = mkV "cucuz" ; + cucuz_V2 = mkV2 "cucuz" ; + cucuzan_V = mkV "cucuzan" ; + cucuzan_V2 = mkV2 "cucuzan" ; + cul_V = mkV "cul" ; + cul_V2 = mkV2 "cul" ; + culel_V = mkV "culel" ; + culel_V2 = mkV2 "culel" ; + cunul_V = mkV "cunul" ; + cunul_V2 = mkV2 "cunul" ; + cuph_V = mkV "cuph" ; + cuph_V2 = mkV2 "cuph" ; + cuphelis_V = mkV "cuphelis" ; + cuphelis_V2 = mkV2 "cuphelis" ; + cusukel_V = mkV "cusukel" ; + cusukel_V2 = mkV2 "cusukel" ; + cuth_V = mkV "cuth" ; + cuth_V2 = mkV2 "cuth" ; + cuthel_V = mkV "cuthel" ; + cuthel_V2 = mkV2 "cuthel" ; + cuthis_V = mkV "cuthis" ; + cuthis_V2 = mkV2 "cuthis" ; + cwal_V = mkV "cwal" ; + cwal_V2 = mkV2 "cwal" ; + cwalek_V = mkV "cwalek" ; + cwalek_V2 = mkV2 "cwalek" ; + cwalis_V = mkV "cwalis" ; + cwalis_V2 = mkV2 "cwalis" ; + cwaning_V = mkV "cwaning" ; + cwaning_V2 = mkV2 "cwaning" ; + cwaningel_V = mkV "cwaningel" ; + cwaningel_V2 = mkV2 "cwaningel" ; + cwaningisis_V = mkV "cwaningisis" ; + cwaningisis_V2 = mkV2 "cwaningisis" ; + cwas_V = mkV "cwas" ; + cwas_V2 = mkV2 "cwas" ; + cwath_V = mkV "cwath" ; + cwath_V2 = mkV2 "cwath" ; + cwayiz_V = mkV "cwayiz" ; + cwayiz_V2 = mkV2 "cwayiz" ; + cwazimul_V = mkV "cwazimul" ; + cwazimul_V2 = mkV2 "cwazimul" ; + cweb_V = mkV "cweb" ; + cweb_V2 = mkV2 "cweb" ; + cwebezel_V = mkV "cwebezel" ; + cwebezel_V2 = mkV2 "cwebezel" ; + cwebezelis_V = mkV "cwebezelis" ; + cwebezelis_V2 = mkV2 "cwebezelis" ; + cwecw_V = mkV "cwecw" ; + cwecw_V2 = mkV2 "cwecw" ; + cweng_V = mkV "cweng" ; + cweng_V2 = mkV2 "cweng" ; + cwengek_V = mkV "cwengek" ; + cwengek_V2 = mkV2 "cwengek" ; + cwethul_V = mkV "cwethul" ; + cwethul_V2 = mkV2 "cwethul" ; + cwil_V = mkV "cwil" ; + cwil_V2 = mkV2 "cwil" ; + cwilis_V = mkV "cwilis" ; + cwilis_V2 = mkV2 "cwilis" ; + dabudabul_V = mkV "dabudabul" ; + dabudabul_V2 = mkV2 "dabudabul" ; + dabuk_V = mkV "dabuk" ; + dabuk_V2 = mkV2 "dabuk" ; + dabukel_V = mkV "dabukel" ; + dabukel_V2 = mkV2 "dabukel" ; + dabukis_V = mkV "dabukis" ; + dabukis_V2 = mkV2 "dabukis" ; + dabul_V = mkV "dabul" ; + dabul_V2 = mkV2 "dabul" ; + dad_V = mkV "dad" ; + dad_V2 = mkV2 "dad" ; + dadlazel_V = mkV "dadlazel" ; + dadlazel_V2 = mkV2 "dadlazel" ; + dak_V = mkV "dak" ; + dak_V2 = mkV2 "dak" ; + dakis_V = mkV "dakis" ; + dakis_V2 = mkV2 "dakis" ; + dal_V = mkV "dal" ; + dal_V2 = mkV2 "dal" ; + dalek_V = mkV "dalek" ; + dalek_V2 = mkV2 "dalek" ; + dalel_V = mkV "dalel" ; + dalel_V2 = mkV2 "dalel" ; + damb_V = mkV "damb" ; + damb_V2 = mkV2 "damb" ; + dambis_V = mkV "dambis" ; + dambis_V2 = mkV2 "dambis" ; + dambuz_V = mkV "dambuz" ; + dambuz_V2 = mkV2 "dambuz" ; + damuk_V = mkV "damuk" ; + damuk_V2 = mkV2 "damuk" ; + dan_V = mkV "dan" ; + dan_V2 = mkV2 "dan" ; + dangal_V = mkV "dangal" ; + dangal_V2 = mkV2 "dangal" ; + dangalel_V = mkV "dangalel" ; + dangalel_V2 = mkV2 "dangalel" ; + danis_V = mkV "danis" ; + danis_V2 = mkV2 "danis" ; + dans_V = mkV "dans" ; + dans_V2 = mkV2 "dans" ; + davuz_V = mkV "davuz" ; + davuz_V2 = mkV2 "davuz" ; + davuzel_V = mkV "davuzel" ; + davuzel_V2 = mkV2 "davuzel" ; + dayis_V = mkV "dayis" ; + dayis_V2 = mkV2 "dayis" ; + dayisel_V = mkV "dayisel" ; + dayisel_V2 = mkV2 "dayisel" ; + daz_V = mkV "daz" ; + daz_V2 = mkV2 "daz" ; + dazan_V = mkV "dazan" ; + dazan_V2 = mkV2 "dazan" ; + dazuluk_V = mkV "dazuluk" ; + dazuluk_V2 = mkV2 "dazuluk" ; + debez_V = mkV "debez" ; + debez_V2 = mkV2 "debez" ; + ded_V = mkV "ded" ; + ded_V2 = mkV2 "ded" ; + dedel_V = mkV "dedel" ; + dedel_V2 = mkV2 "dedel" ; + dedelan_V = mkV "dedelan" ; + dedelan_V2 = mkV2 "dedelan" ; + dek_V = mkV "dek" ; + dek_V2 = mkV2 "dek" ; + del_V = mkV "del" ; + del_V2 = mkV2 "del" ; + delel_V = mkV "delel" ; + delel_V2 = mkV2 "delel" ; + delis_V = mkV "delis" ; + delis_V2 = mkV2 "delis" ; + delisan_V = mkV "delisan" ; + delisan_V2 = mkV2 "delisan" ; + dend_V = mkV "dend" ; + dend_V2 = mkV2 "dend" ; + deph_V = mkV "deph" ; + deph_V2 = mkV2 "deph" ; + dephisis_V = mkV "dephisis" ; + dephisis_V2 = mkV2 "dephisis" ; + diban_V = mkV "diban" ; + diban_V2 = mkV2 "diban" ; + dibanis_V = mkV "dibanis" ; + dibanis_V2 = mkV2 "dibanis" ; + dic_V = mkV "dic" ; + dic_V2 = mkV2 "dic" ; + did_V = mkV "did" ; + did_V2 = mkV2 "did" ; + didek_V = mkV "didek" ; + didek_V2 = mkV2 "didek" ; + didiyel_V = mkV "didiyel" ; + didiyel_V2 = mkV2 "didiyel" ; + didizel_V = mkV "didizel" ; + didizel_V2 = mkV2 "didizel" ; + dikadik_V = mkV "dikadik" ; + dikadik_V2 = mkV2 "dikadik" ; + dikibal_V = mkV "dikibal" ; + dikibal_V2 = mkV2 "dikibal" ; + dikiz_V = mkV "dikiz" ; + dikiz_V2 = mkV2 "dikiz" ; + dilik_V = mkV "dilik" ; + dilik_V2 = mkV2 "dilik" ; + diliz_V = mkV "diliz" ; + diliz_V2 = mkV2 "diliz" ; + din_V = mkV "din" ; + din_V2 = mkV2 "din" ; + dind_V = mkV "dind" ; + dind_V2 = mkV2 "dind" ; + dindiliz_V = mkV "dindiliz" ; + dindiliz_V2 = mkV2 "dindiliz" ; + dinek_V = mkV "dinek" ; + dinek_V2 = mkV2 "dinek" ; + ding_V = mkV "ding" ; + ding_V2 = mkV2 "ding" ; + dingakal_V = mkV "dingakal" ; + dingakal_V2 = mkV2 "dingakal" ; + dingan_V = mkV "dingan" ; + dingan_V2 = mkV2 "dingan" ; + dingek_V = mkV "dingek" ; + dingek_V2 = mkV2 "dingek" ; + dingekel_V = mkV "dingekel" ; + dingekel_V2 = mkV2 "dingekel" ; + dingel_V = mkV "dingel" ; + dingel_V2 = mkV2 "dingel" ; + dingid_V = mkV "dingid" ; + dingid_V2 = mkV2 "dingid" ; + dingis_V = mkV "dingis" ; + dingis_V2 = mkV2 "dingis" ; + diph_V = mkV "diph" ; + diph_V2 = mkV2 "diph" ; + dish_V = mkV "dish" ; + dish_V2 = mkV2 "dish" ; + dishizel_V = mkV "dishizel" ; + dishizel_V2 = mkV2 "dishizel" ; + dl_V = mkV "dl" ; + dl_V2 = mkV2 "dl" ; + dlal_V = mkV "dlal" ; + dlal_V2 = mkV2 "dlal" ; + dlaladlal_V = mkV "dlaladlal" ; + dlaladlal_V2 = mkV2 "dlaladlal" ; + dlalel_V = mkV "dlalel" ; + dlalel_V2 = mkV2 "dlalel" ; + dlalis_V = mkV "dlalis" ; + dlalis_V2 = mkV2 "dlalis" ; + dlalisel_V = mkV "dlalisel" ; + dlalisel_V2 = mkV2 "dlalisel" ; + dlan_V = mkV "dlan" ; + dlan_V2 = mkV2 "dlan" ; + dlang_V = mkV "dlang" ; + dlang_V2 = mkV2 "dlang" ; + dlavuz_V = mkV "dlavuz" ; + dlavuz_V2 = mkV2 "dlavuz" ; + dlebelekis_V = mkV "dlebelekis" ; + dlebelekis_V2 = mkV2 "dlebelekis" ; + dlek_V = mkV "dlek" ; + dlek_V2 = mkV2 "dlek" ; + dlekezel_V = mkV "dlekezel" ; + dlekezel_V2 = mkV2 "dlekezel" ; + dlel_V = mkV "dlel" ; + dlel_V2 = mkV2 "dlel" ; + dlelan_V = mkV "dlelan" ; + dlelan_V2 = mkV2 "dlelan" ; + dlelesel_V = mkV "dlelesel" ; + dlelesel_V2 = mkV2 "dlelesel" ; + dlinz_V = mkV "dlinz" ; + dlinz_V2 = mkV2 "dlinz" ; + dlis_V = mkV "dlis" ; + dlis_V2 = mkV2 "dlis" ; + dlisel_V = mkV "dlisel" ; + dlisel_V2 = mkV2 "dlisel" ; + dlob_V = mkV "dlob" ; + dlob_V2 = mkV2 "dlob" ; + dlokovul_V = mkV "dlokovul" ; + dlokovul_V2 = mkV2 "dlokovul" ; + dlondlobal_V = mkV "dlondlobal" ; + dlondlobal_V2 = mkV2 "dlondlobal" ; + dlov_V = mkV "dlov" ; + dlov_V2 = mkV2 "dlov" ; + dlubulund_V = mkV "dlubulund" ; + dlubulund_V2 = mkV2 "dlubulund" ; + dlubulundel_V = mkV "dlubulundel" ; + dlubulundel_V2 = mkV2 "dlubulundel" ; + dlukuz_V = mkV "dlukuz" ; + dlukuz_V2 = mkV2 "dlukuz" ; + dlul_V = mkV "dlul" ; + dlul_V2 = mkV2 "dlul" ; + dlulel_V = mkV "dlulel" ; + dlulel_V2 = mkV2 "dlulel" ; + dlulis_V = mkV "dlulis" ; + dlulis_V2 = mkV2 "dlulis" ; + dlulisel_V = mkV "dlulisel" ; + dlulisel_V2 = mkV2 "dlulisel" ; + dlung_V = mkV "dlung" ; + dlung_V2 = mkV2 "dlung" ; + dluthul_V = mkV "dluthul" ; + dluthul_V2 = mkV2 "dluthul" ; + dluthuzel_V = mkV "dluthuzel" ; + dluthuzel_V2 = mkV2 "dluthuzel" ; + dlwengul_V = mkV "dlwengul" ; + dlwengul_V2 = mkV2 "dlwengul" ; + dob_V = mkV "dob" ; + dob_V2 = mkV2 "dob" ; + doban_V = mkV "doban" ; + doban_V2 = mkV2 "doban" ; + dobel_V = mkV "dobel" ; + dobel_V2 = mkV2 "dobel" ; + dod_V = mkV "dod" ; + dod_V2 = mkV2 "dod" ; + dombolozan_V = mkV "dombolozan" ; + dombolozan_V2 = mkV2 "dombolozan" ; + dond_V = mkV "dond" ; + dond_V2 = mkV2 "dond" ; + dondis_V = mkV "dondis" ; + dondis_V2 = mkV2 "dondis" ; + dondolozel_V = mkV "dondolozel" ; + dondolozel_V2 = mkV2 "dondolozel" ; + dons_V = mkV "dons" ; + dons_V2 = mkV2 "dons" ; + donsan_V = mkV "donsan" ; + donsan_V2 = mkV2 "donsan" ; + donsel_V = mkV "donsel" ; + donsel_V2 = mkV2 "donsel" ; + donsis_V = mkV "donsis" ; + donsis_V2 = mkV2 "donsis" ; + dovadov_V = mkV "dovadov" ; + dovadov_V2 = mkV2 "dovadov" ; + dub_V = mkV "dub" ; + dub_V2 = mkV2 "dub" ; + dubukal_V = mkV "dubukal" ; + dubukal_V2 = mkV2 "dubukal" ; + dubukel_V = mkV "dubukel" ; + dubukel_V2 = mkV2 "dubukel" ; + dubul_V = mkV "dubul" ; + dubul_V2 = mkV2 "dubul" ; + dubulan_V = mkV "dubulan" ; + dubulan_V2 = mkV2 "dubulan" ; + dubuz_V = mkV "dubuz" ; + dubuz_V2 = mkV2 "dubuz" ; + dud_V = mkV "dud" ; + dud_V2 = mkV2 "dud" ; + dudan_V = mkV "dudan" ; + dudan_V2 = mkV2 "dudan" ; + dudanel_V = mkV "dudanel" ; + dudanel_V2 = mkV2 "dudanel" ; + dudl_V = mkV "dudl" ; + dudl_V2 = mkV2 "dudl" ; + dudul_V = mkV "dudul" ; + dudul_V2 = mkV2 "dudul" ; + dudulan_V = mkV "dudulan" ; + dudulan_V2 = mkV2 "dudulan" ; + dudulek_V = mkV "dudulek" ; + dudulek_V2 = mkV2 "dudulek" ; + dudulel_V = mkV "dudulel" ; + dudulel_V2 = mkV2 "dudulel" ; + duduz_V = mkV "duduz" ; + duduz_V2 = mkV2 "duduz" ; + duduzan_V = mkV "duduzan" ; + duduzan_V2 = mkV2 "duduzan" ; + duduzek_V = mkV "duduzek" ; + duduzek_V2 = mkV2 "duduzek" ; + duk_V = mkV "duk" ; + duk_V2 = mkV2 "duk" ; + dukel_V = mkV "dukel" ; + dukel_V2 = mkV2 "dukel" ; + dukelan_V = mkV "dukelan" ; + dukelan_V2 = mkV2 "dukelan" ; + dukis_V = mkV "dukis" ; + dukis_V2 = mkV2 "dukis" ; + dukluz_V = mkV "dukluz" ; + dukluz_V2 = mkV2 "dukluz" ; + dukuz_V = mkV "dukuz" ; + dukuz_V2 = mkV2 "dukuz" ; + dul_V = mkV "dul" ; + dul_V2 = mkV2 "dul" ; + dulel_V = mkV "dulel" ; + dulel_V2 = mkV2 "dulel" ; + dum_V = mkV "dum" ; + dum_V2 = mkV2 "dum" ; + dumal_V = mkV "dumal" ; + dumal_V2 = mkV2 "dumal" ; + dumaz_V = mkV "dumaz" ; + dumaz_V2 = mkV2 "dumaz" ; + dumazek_V = mkV "dumazek" ; + dumazek_V2 = mkV2 "dumazek" ; + dumazel_V = mkV "dumazel" ; + dumazel_V2 = mkV2 "dumazel" ; + dumb_V = mkV "dumb" ; + dumb_V2 = mkV2 "dumb" ; + dumel_V = mkV "dumel" ; + dumel_V2 = mkV2 "dumel" ; + dumelan_V = mkV "dumelan" ; + dumelan_V2 = mkV2 "dumelan" ; + dumelis_V = mkV "dumelis" ; + dumelis_V2 = mkV2 "dumelis" ; + dumis_V = mkV "dumis" ; + dumis_V2 = mkV2 "dumis" ; + dundubal_V = mkV "dundubal" ; + dundubal_V2 = mkV2 "dundubal" ; + dung_V = mkV "dung" ; + dung_V2 = mkV2 "dung" ; + dungek_V = mkV "dungek" ; + dungek_V2 = mkV2 "dungek" ; + dunguzel_V = mkV "dunguzel" ; + dunguzel_V2 = mkV2 "dunguzel" ; + dunsuzan_V = mkV "dunsuzan" ; + dunsuzan_V2 = mkV2 "dunsuzan" ; + dush_V = mkV "dush" ; + dush_V2 = mkV2 "dush" ; + dushuz_V = mkV "dushuz" ; + dushuz_V2 = mkV2 "dushuz" ; + duz_V = mkV "duz" ; + duz_V2 = mkV2 "duz" ; + duzan_V = mkV "duzan" ; + duzan_V2 = mkV2 "duzan" ; + dwal_V = mkV "dwal" ; + dwal_V2 = mkV2 "dwal" ; + dwanguz_V = mkV "dwanguz" ; + dwanguz_V2 = mkV2 "dwanguz" ; + dweb_V = mkV "dweb" ; + dweb_V2 = mkV2 "dweb" ; + dwebek_V = mkV "dwebek" ; + dwebek_V2 = mkV2 "dwebek" ; + dwebel_V = mkV "dwebel" ; + dwebel_V2 = mkV2 "dwebel" ; + eb_V = mkV "eb" ; + eb_V2 = mkV2 "eb" ; + eban_V = mkV "eban" ; + eban_V2 = mkV2 "eban" ; + eband_V = mkV "eband" ; + eband_V2 = mkV2 "eband" ; + ebek_V = mkV "ebek" ; + ebek_V2 = mkV2 "ebek" ; + ebekis_V = mkV "ebekis" ; + ebekis_V2 = mkV2 "ebekis" ; + ebel_V = mkV "ebel" ; + ebel_V2 = mkV2 "ebel" ; + ebelekelelan_V = mkV "ebelekelelan" ; + ebelekelelan_V2 = mkV2 "ebelekelelan" ; + ebelel_V = mkV "ebelel" ; + ebelel_V2 = mkV2 "ebelel" ; + ebuk_V = mkV "ebuk" ; + ebuk_V2 = mkV2 "ebuk" ; + ebukan_V = mkV "ebukan" ; + ebukan_V2 = mkV2 "ebukan" ; + ebukek_V = mkV "ebukek" ; + ebukek_V2 = mkV2 "ebukek" ; + ebukel_V = mkV "ebukel" ; + ebukel_V2 = mkV2 "ebukel" ; + ebul_V = mkV "ebul" ; + ebul_V2 = mkV2 "ebul" ; + ebulisan_V = mkV "ebulisan" ; + ebulisan_V2 = mkV2 "ebulisan" ; + ebuz_V = mkV "ebuz" ; + ebuz_V2 = mkV2 "ebuz" ; + ebuzan_V = mkV "ebuzan" ; + ebuzan_V2 = mkV2 "ebuzan" ; + ebuzel_V = mkV "ebuzel" ; + ebuzel_V2 = mkV2 "ebuzel" ; + ebuzisis_V = mkV "ebuzisis" ; + ebuzisis_V2 = mkV2 "ebuzisis" ; + ecek_V = mkV "ecek" ; + ecek_V2 = mkV2 "ecek" ; + edlul_V = mkV "edlul" ; + edlul_V2 = mkV2 "edlul" ; + edlulel_V = mkV "edlulel" ; + edlulel_V2 = mkV2 "edlulel" ; + edlulis_V = mkV "edlulis" ; + edlulis_V2 = mkV2 "edlulis" ; + edlulisel_V = mkV "edlulisel" ; + edlulisel_V2 = mkV2 "edlulisel" ; + eduk_V = mkV "eduk" ; + eduk_V2 = mkV2 "eduk" ; + edukel_V = mkV "edukel" ; + edukel_V2 = mkV2 "edukel" ; + edukelan_V = mkV "edukelan" ; + edukelan_V2 = mkV2 "edukelan" ; + edukis_V = mkV "edukis" ; + edukis_V2 = mkV2 "edukis" ; + edus_V = mkV "edus" ; + edus_V2 = mkV2 "edus" ; + efund_V = mkV "efund" ; + efund_V2 = mkV2 "efund" ; + efundel_V = mkV "efundel" ; + efundel_V2 = mkV2 "efundel" ; + efundis_V = mkV "efundis" ; + efundis_V2 = mkV2 "efundis" ; + efundisel_V = mkV "efundisel" ; + efundisel_V2 = mkV2 "efundisel" ; + efuz_V = mkV "efuz" ; + efuz_V2 = mkV2 "efuz" ; + efuzel_V = mkV "efuzel" ; + efuzel_V2 = mkV2 "efuzel" ; + eg_V = mkV "eg" ; + eg_V2 = mkV2 "eg" ; + egan_V = mkV "egan" ; + egan_V2 = mkV2 "egan" ; + egcwal_V = mkV "egcwal" ; + egcwal_V2 = mkV2 "egcwal" ; + egcwalis_V = mkV "egcwalis" ; + egcwalis_V2 = mkV2 "egcwalis" ; + egej_V = mkV "egej" ; + egej_V2 = mkV2 "egej" ; + ehl_V = mkV "ehl" ; + ehl_V2 = mkV2 "ehl" ; + ehlakal_V = mkV "ehlakal" ; + ehlakal_V2 = mkV2 "ehlakal" ; + ehlan_V = mkV "ehlan" ; + ehlan_V2 = mkV2 "ehlan" ; + ehlek_V = mkV "ehlek" ; + ehlek_V2 = mkV2 "ehlek" ; + ehlekel_V = mkV "ehlekel" ; + ehlekel_V2 = mkV2 "ehlekel" ; + ehlekis_V = mkV "ehlekis" ; + ehlekis_V2 = mkV2 "ehlekis" ; + ehlel_V = mkV "ehlel" ; + ehlel_V2 = mkV2 "ehlel" ; + ehlelek_V = mkV "ehlelek" ; + ehlelek_V2 = mkV2 "ehlelek" ; + ehlelel_V = mkV "ehlelel" ; + ehlelel_V2 = mkV2 "ehlelel" ; + ehlik_V = mkV "ehlik" ; + ehlik_V2 = mkV2 "ehlik" ; + ehlikel_V = mkV "ehlikel" ; + ehlikel_V2 = mkV2 "ehlikel" ; + ehlis_V = mkV "ehlis" ; + ehlis_V2 = mkV2 "ehlis" ; + ehlisan_V = mkV "ehlisan" ; + ehlisan_V2 = mkV2 "ehlisan" ; + ehlisel_V = mkV "ehlisel" ; + ehlisel_V2 = mkV2 "ehlisel" ; + ehlisis_V = mkV "ehlisis" ; + ehlisis_V2 = mkV2 "ehlisis" ; + ehluk_V = mkV "ehluk" ; + ehluk_V2 = mkV2 "ehluk" ; + ehlukan_V = mkV "ehlukan" ; + ehlukan_V2 = mkV2 "ehlukan" ; + ehlukanis_V = mkV "ehlukanis" ; + ehlukanis_V2 = mkV2 "ehlukanis" ; + ehlukaniselan_V = mkV "ehlukaniselan" ; + ehlukaniselan_V2 = mkV2 "ehlukaniselan" ; + ehlukekan_V = mkV "ehlukekan" ; + ehlukekan_V2 = mkV2 "ehlukekan" ; + ehlul_V = mkV "ehlul" ; + ehlul_V2 = mkV2 "ehlul" ; + ehlulan_V = mkV "ehlulan" ; + ehlulan_V2 = mkV2 "ehlulan" ; + ehlulek_V = mkV "ehlulek" ; + ehlulek_V2 = mkV2 "ehlulek" ; + ehlulekel_V = mkV "ehlulekel" ; + ehlulekel_V2 = mkV2 "ehlulekel" ; + ehlulel_V = mkV "ehlulel" ; + ehlulel_V2 = mkV2 "ehlulel" ; + ejwayel_V = mkV "ejwayel" ; + ejwayel_V2 = mkV2 "ejwayel" ; + ejwayelan_V = mkV "ejwayelan" ; + ejwayelan_V2 = mkV2 "ejwayelan" ; + ejwayelek_V = mkV "ejwayelek" ; + ejwayelek_V2 = mkV2 "ejwayelek" ; + ejwayez_V = mkV "ejwayez" ; + ejwayez_V2 = mkV2 "ejwayez" ; + ekham_V = mkV "ekham" ; + ekham_V2 = mkV2 "ekham" ; + ekhamis_V = mkV "ekhamis" ; + ekhamis_V2 = mkV2 "ekhamis" ; + ekhathel_V = mkV "ekhathel" ; + ekhathel_V2 = mkV2 "ekhathel" ; + el_V = mkV "el" ; + el_V2 = mkV2 "el" ; + elakanyan_V = mkV "elakanyan" ; + elakanyan_V2 = mkV2 "elakanyan" ; + elakanyis_V = mkV "elakanyis" ; + elakanyis_V2 = mkV2 "elakanyis" ; + elam_V = mkV "elam" ; + elam_V2 = mkV2 "elam" ; + elaman_V = mkV "elaman" ; + elaman_V2 = mkV2 "elaman" ; + elamanis_V = mkV "elamanis" ; + elamanis_V2 = mkV2 "elamanis" ; + elamel_V = mkV "elamel" ; + elamel_V2 = mkV2 "elamel" ; + elan_V = mkV "elan" ; + elan_V2 = mkV2 "elan" ; + elanel_V = mkV "elanel" ; + elanel_V2 = mkV2 "elanel" ; + elaph_V = mkV "elaph" ; + elaph_V2 = mkV2 "elaph" ; + elaphan_V = mkV "elaphan" ; + elaphan_V2 = mkV2 "elaphan" ; + elaphek_V = mkV "elaphek" ; + elaphek_V2 = mkV2 "elaphek" ; + elaphel_V = mkV "elaphel" ; + elaphel_V2 = mkV2 "elaphel" ; + elek_V = mkV "elek" ; + elek_V2 = mkV2 "elek" ; + elekan_V = mkV "elekan" ; + elekan_V2 = mkV2 "elekan" ; + elekelel_V = mkV "elekelel" ; + elekelel_V2 = mkV2 "elekelel" ; + elekelelan_V = mkV "elekelelan" ; + elekelelan_V2 = mkV2 "elekelelan" ; + elel_V = mkV "elel" ; + elel_V2 = mkV2 "elel" ; + elelek_V = mkV "elelek" ; + elelek_V2 = mkV2 "elelek" ; + elelelek_V = mkV "elelelek" ; + elelelek_V2 = mkV2 "elelelek" ; + elis_V = mkV "elis" ; + elis_V2 = mkV2 "elis" ; + elisek_V = mkV "elisek" ; + elisek_V2 = mkV2 "elisek" ; + elisel_V = mkV "elisel" ; + elisel_V2 = mkV2 "elisel" ; + eluk_V = mkV "eluk" ; + eluk_V2 = mkV2 "eluk" ; + elukel_V = mkV "elukel" ; + elukel_V2 = mkV2 "elukel" ; + elul_V = mkV "elul" ; + elul_V2 = mkV2 "elul" ; + elulalul_V = mkV "elulalul" ; + elulalul_V2 = mkV2 "elulalul" ; + elulek_V = mkV "elulek" ; + elulek_V2 = mkV2 "elulek" ; + elulekel_V = mkV "elulekel" ; + elulekel_V2 = mkV2 "elulekel" ; + elus_V = mkV "elus" ; + elus_V2 = mkV2 "elus" ; + elusel_V = mkV "elusel" ; + elusel_V2 = mkV2 "elusel" ; + eman_V = mkV "eman" ; + eman_V2 = mkV2 "eman" ; + embath_V = mkV "embath" ; + embath_V2 = mkV2 "embath" ; + embathis_V = mkV "embathis" ; + embathis_V2 = mkV2 "embathis" ; + embes_V = mkV "embes" ; + embes_V2 = mkV2 "embes" ; + embuk_V = mkV "embuk" ; + embuk_V2 = mkV2 "embuk" ; + embukel_V = mkV "embukel" ; + embukel_V2 = mkV2 "embukel" ; + embul_V = mkV "embul" ; + embul_V2 = mkV2 "embul" ; + embulek_V = mkV "embulek" ; + embulek_V2 = mkV2 "embulek" ; + embulel_V = mkV "embulel" ; + embulel_V2 = mkV2 "embulel" ; + emith_V = mkV "emith" ; + emith_V2 = mkV2 "emith" ; + emithan_V = mkV "emithan" ; + emithan_V2 = mkV2 "emithan" ; + emithelel_V = mkV "emithelel" ; + emithelel_V2 = mkV2 "emithelel" ; + emuk_V = mkV "emuk" ; + emuk_V2 = mkV2 "emuk" ; + emukel_V = mkV "emukel" ; + emukel_V2 = mkV2 "emukel" ; + emukelek_V = mkV "emukelek" ; + emukelek_V2 = mkV2 "emukelek" ; + emukis_V = mkV "emukis" ; + emukis_V2 = mkV2 "emukis" ; + en_V = mkV "en" ; + en_V2 = mkV2 "en" ; + enab_V = mkV "enab" ; + enab_V2 = mkV2 "enab" ; + enabel_V = mkV "enabel" ; + enabel_V2 = mkV2 "enabel" ; + enam_V = mkV "enam" ; + enam_V2 = mkV2 "enam" ; + enamel_V = mkV "enamel" ; + enamel_V2 = mkV2 "enamel" ; + enamis_V = mkV "enamis" ; + enamis_V2 = mkV2 "enamis" ; + enan_V = mkV "enan" ; + enan_V2 = mkV2 "enan" ; + enanan_V = mkV "enanan" ; + enanan_V2 = mkV2 "enanan" ; + enanel_V = mkV "enanel" ; + enanel_V2 = mkV2 "enanel" ; + encik_V = mkV "encik" ; + encik_V2 = mkV2 "encik" ; + encikan_V = mkV "encikan" ; + encikan_V2 = mkV2 "encikan" ; + end_V = mkV "end" ; + end_V2 = mkV2 "end" ; + endel_V = mkV "endel" ; + endel_V2 = mkV2 "endel" ; + endis_V = mkV "endis" ; + endis_V2 = mkV2 "endis" ; + endisel_V = mkV "endisel" ; + endisel_V2 = mkV2 "endisel" ; + endiselan_V = mkV "endiselan" ; + endiselan_V2 = mkV2 "endiselan" ; + endlal_V = mkV "endlal" ; + endlal_V2 = mkV2 "endlal" ; + endlalek_V = mkV "endlalek" ; + endlalek_V2 = mkV2 "endlalek" ; + endlalel_V = mkV "endlalel" ; + endlalel_V2 = mkV2 "endlalel" ; + endlul_V = mkV "endlul" ; + endlul_V2 = mkV2 "endlul" ; + enek_V = mkV "enek" ; + enek_V2 = mkV2 "enek" ; + enekek_V = mkV "enekek" ; + enekek_V2 = mkV2 "enekek" ; + enekel_V = mkV "enekel" ; + enekel_V2 = mkV2 "enekel" ; + enel_V = mkV "enel" ; + enel_V2 = mkV2 "enel" ; + enelis_V = mkV "enelis" ; + enelis_V2 = mkV2 "enelis" ; + enelisek_V = mkV "enelisek" ; + enelisek_V2 = mkV2 "enelisek" ; + enezezel_V = mkV "enezezel" ; + enezezel_V2 = mkV2 "enezezel" ; + engam_V = mkV "engam" ; + engam_V2 = mkV2 "engam" ; + engaman_V = mkV "engaman" ; + engaman_V2 = mkV2 "engaman" ; + engamel_V = mkV "engamel" ; + engamel_V2 = mkV2 "engamel" ; + engamelan_V = mkV "engamelan" ; + engamelan_V2 = mkV2 "engamelan" ; + engez_V = mkV "engez" ; + engez_V2 = mkV2 "engez" ; + engul_V = mkV "engul" ; + engul_V2 = mkV2 "engul" ; + enis_V = mkV "enis" ; + enis_V2 = mkV2 "enis" ; + enisan_V = mkV "enisan" ; + enisan_V2 = mkV2 "enisan" ; + enqab_V = mkV "enqab" ; + enqab_V2 = mkV2 "enqab" ; + enqabel_V = mkV "enqabel" ; + enqabel_V2 = mkV2 "enqabel" ; + enqak_V = mkV "enqak" ; + enqak_V2 = mkV2 "enqak" ; + enqakisan_V = mkV "enqakisan" ; + enqakisan_V2 = mkV2 "enqakisan" ; + enqen_V = mkV "enqen" ; + enqen_V2 = mkV2 "enqen" ; + enway_V = mkV "enway" ; + enway_V2 = mkV2 "enway" ; + enyany_V = mkV "enyany" ; + enyany_V2 = mkV2 "enyany" ; + enyanyek_V = mkV "enyanyek" ; + enyanyek_V2 = mkV2 "enyanyek" ; + enyel_V = mkV "enyel" ; + enyel_V2 = mkV2 "enyel" ; + enyis_V = mkV "enyis" ; + enyis_V2 = mkV2 "enyis" ; + enyuk_V = mkV "enyuk" ; + enyuk_V2 = mkV2 "enyuk" ; + enyukel_V = mkV "enyukel" ; + enyukel_V2 = mkV2 "enyukel" ; + enyus_V = mkV "enyus" ; + enyus_V2 = mkV2 "enyus" ; + enyusel_V = mkV "enyusel" ; + enyusel_V2 = mkV2 "enyusel" ; + enz_V = mkV "enz" ; + enz_V2 = mkV2 "enz" ; + enzakal_V = mkV "enzakal" ; + enzakal_V2 = mkV2 "enzakal" ; + enzakalel_V = mkV "enzakalel" ; + enzakalel_V2 = mkV2 "enzakalel" ; + enzakalis_V = mkV "enzakalis" ; + enzakalis_V2 = mkV2 "enzakalis" ; + enzan_V = mkV "enzan" ; + enzan_V2 = mkV2 "enzan" ; + enzek_V = mkV "enzek" ; + enzek_V2 = mkV2 "enzek" ; + enzekan_V = mkV "enzekan" ; + enzekan_V2 = mkV2 "enzekan" ; + enzekel_V = mkV "enzekel" ; + enzekel_V2 = mkV2 "enzekel" ; + enzel_V = mkV "enzel" ; + enzel_V2 = mkV2 "enzel" ; + enzelan_V = mkV "enzelan" ; + enzelan_V2 = mkV2 "enzelan" ; + enzis_V = mkV "enzis" ; + enzis_V2 = mkV2 "enzis" ; + enzisan_V = mkV "enzisan" ; + enzisan_V2 = mkV2 "enzisan" ; + eph_V = mkV "eph" ; + eph_V2 = mkV2 "eph" ; + ephan_V = mkV "ephan" ; + ephan_V2 = mkV2 "ephan" ; + ephek_V = mkV "ephek" ; + ephek_V2 = mkV2 "ephek" ; + ephel_V = mkV "ephel" ; + ephel_V2 = mkV2 "ephel" ; + ephelel_V = mkV "ephelel" ; + ephelel_V2 = mkV2 "ephelel" ; + epheph_V = mkV "epheph" ; + epheph_V2 = mkV2 "epheph" ; + ephephel_V = mkV "ephephel" ; + ephephel_V2 = mkV2 "ephephel" ; + ephuc_V = mkV "ephuc" ; + ephuc_V2 = mkV2 "ephuc" ; + ephuk_V = mkV "ephuk" ; + ephuk_V2 = mkV2 "ephuk" ; + ephukel_V = mkV "ephukel" ; + ephukel_V2 = mkV2 "ephukel" ; + ephul_V = mkV "ephul" ; + ephul_V2 = mkV2 "ephul" ; + ephulel_V = mkV "ephulel" ; + ephulel_V2 = mkV2 "ephulel" ; + ephus_V = mkV "ephus" ; + ephus_V2 = mkV2 "ephus" ; + ephuz_V = mkV "ephuz" ; + ephuz_V2 = mkV2 "ephuz" ; + ephuzis_V = mkV "ephuzis" ; + ephuzis_V2 = mkV2 "ephuzis" ; + eq_V = mkV "eq" ; + eq_V2 = mkV2 "eq" ; + eqan_V = mkV "eqan" ; + eqan_V2 = mkV2 "eqan" ; + eqek_V = mkV "eqek" ; + eqek_V2 = mkV2 "eqek" ; + eqel_V = mkV "eqel" ; + eqel_V2 = mkV2 "eqel" ; + eqis_V = mkV "eqis" ; + eqis_V2 = mkV2 "eqis" ; + es_V = mkV "es" ; + es_V2 = mkV2 "es" ; + esab_V = mkV "esab" ; + esab_V2 = mkV2 "esab" ; + esaban_V = mkV "esaban" ; + esaban_V2 = mkV2 "esaban" ; + esabek_V = mkV "esabek" ; + esabek_V2 = mkV2 "esabek" ; + esabel_V = mkV "esabel" ; + esabel_V2 = mkV2 "esabel" ; + esabis_V = mkV "esabis" ; + esabis_V2 = mkV2 "esabis" ; + esanel_V = mkV "esanel" ; + esanel_V2 = mkV2 "esanel" ; + esanisan_V = mkV "esanisan" ; + esanisan_V2 = mkV2 "esanisan" ; + esas_V = mkV "esas" ; + esas_V2 = mkV2 "esas" ; + esasel_V = mkV "esasel" ; + esasel_V2 = mkV2 "esasel" ; + esek_V = mkV "esek" ; + esek_V2 = mkV2 "esek" ; + esekan_V = mkV "esekan" ; + esekan_V2 = mkV2 "esekan" ; + esekel_V = mkV "esekel" ; + esekel_V2 = mkV2 "esekel" ; + esel_V = mkV "esel" ; + esel_V2 = mkV2 "esel" ; + eselel_V = mkV "eselel" ; + eselel_V2 = mkV2 "eselel" ; + eshel_V = mkV "eshel" ; + eshel_V2 = mkV2 "eshel" ; + eshelel_V = mkV "eshelel" ; + eshelel_V2 = mkV2 "eshelel" ; + eshwam_V = mkV "eshwam" ; + eshwam_V2 = mkV2 "eshwam" ; + esis_V = mkV "esis" ; + esis_V2 = mkV2 "esis" ; + esisel_V = mkV "esisel" ; + esisel_V2 = mkV2 "esisel" ; + esong_V = mkV "esong" ; + esong_V2 = mkV2 "esong" ; + esongan_V = mkV "esongan" ; + esongan_V2 = mkV2 "esongan" ; + esongel_V = mkV "esongel" ; + esongel_V2 = mkV2 "esongel" ; + esuk_V = mkV "esuk" ; + esuk_V2 = mkV2 "esuk" ; + esukasukel_V = mkV "esukasukel" ; + esukasukel_V2 = mkV2 "esukasukel" ; + esukel_V = mkV "esukel" ; + esukel_V2 = mkV2 "esukel" ; + esul_V = mkV "esul" ; + esul_V2 = mkV2 "esul" ; + esulel_V = mkV "esulel" ; + esulel_V2 = mkV2 "esulel" ; + esus_V = mkV "esus" ; + esus_V2 = mkV2 "esus" ; + esusel_V = mkV "esusel" ; + esusel_V2 = mkV2 "esusel" ; + esuth_V = mkV "esuth" ; + esuth_V2 = mkV2 "esuth" ; + esuthis_V = mkV "esuthis" ; + esuthis_V2 = mkV2 "esuthis" ; + eth_V = mkV "eth" ; + eth_V2 = mkV2 "eth" ; + ethab_V = mkV "ethab" ; + ethab_V2 = mkV2 "ethab" ; + ethamel_V = mkV "ethamel" ; + ethamel_V2 = mkV2 "ethamel" ; + ethan_V = mkV "ethan" ; + ethan_V2 = mkV2 "ethan" ; + ethekel_V = mkV "ethekel" ; + ethekel_V2 = mkV2 "ethekel" ; + ethel_V = mkV "ethel" ; + ethel_V2 = mkV2 "ethel" ; + ethelek_V = mkV "ethelek" ; + ethelek_V2 = mkV2 "ethelek" ; + ethelekel_V = mkV "ethelekel" ; + ethelekel_V2 = mkV2 "ethelekel" ; + ethelel_V = mkV "ethelel" ; + ethelel_V2 = mkV2 "ethelel" ; + ethemb_V = mkV "ethemb" ; + ethemb_V2 = mkV2 "ethemb" ; + ethemban_V = mkV "ethemban" ; + ethemban_V2 = mkV2 "ethemban" ; + ethembek_V = mkV "ethembek" ; + ethembek_V2 = mkV2 "ethembek" ; + ethembel_V = mkV "ethembel" ; + ethembel_V2 = mkV2 "ethembel" ; + ethembis_V = mkV "ethembis" ; + ethembis_V2 = mkV2 "ethembis" ; + ethembisan_V = mkV "ethembisan" ; + ethembisan_V2 = mkV2 "ethembisan" ; + ethimul_V = mkV "ethimul" ; + ethimul_V2 = mkV2 "ethimul" ; + ethuk_V = mkV "ethuk" ; + ethuk_V2 = mkV2 "ethuk" ; + ethukel_V = mkV "ethukel" ; + ethukel_V2 = mkV2 "ethukel" ; + ethukis_V = mkV "ethukis" ; + ethukis_V2 = mkV2 "ethukis" ; + ethul_V = mkV "ethul" ; + ethul_V2 = mkV2 "ethul" ; + ethulek_V = mkV "ethulek" ; + ethulek_V2 = mkV2 "ethulek" ; + ethulel_V = mkV "ethulel" ; + ethulel_V2 = mkV2 "ethulel" ; + ethus_V = mkV "ethus" ; + ethus_V2 = mkV2 "ethus" ; + ethusel_V = mkV "ethusel" ; + ethusel_V2 = mkV2 "ethusel" ; + ethuselan_V = mkV "ethuselan" ; + ethuselan_V2 = mkV2 "ethuselan" ; + ethwal_V = mkV "ethwal" ; + ethwal_V2 = mkV2 "ethwal" ; + ethwas_V = mkV "ethwas" ; + ethwas_V2 = mkV2 "ethwas" ; + ethwasel_V = mkV "ethwasel" ; + ethwasel_V2 = mkV2 "ethwasel" ; + ethwes_V = mkV "ethwes" ; + ethwes_V2 = mkV2 "ethwes" ; + etshath_V = mkV "etshath" ; + etshath_V2 = mkV2 "etshath" ; + etshis_V = mkV "etshis" ; + etshis_V2 = mkV2 "etshis" ; + ev_V = mkV "ev" ; + ev_V2 = mkV2 "ev" ; + evan_V = mkV "evan" ; + evan_V2 = mkV2 "evan" ; + evath_V = mkV "evath" ; + evath_V2 = mkV2 "evath" ; + evel_V = mkV "evel" ; + evel_V2 = mkV2 "evel" ; + evelel_V = mkV "evelel" ; + evelel_V2 = mkV2 "evelel" ; + ewuk_V = mkV "ewuk" ; + ewuk_V2 = mkV2 "ewuk" ; + ewukel_V = mkV "ewukel" ; + ewukel_V2 = mkV2 "ewukel" ; + ewus_V = mkV "ewus" ; + ewus_V2 = mkV2 "ewus" ; + ewusan_V = mkV "ewusan" ; + ewusan_V2 = mkV2 "ewusan" ; + ewusel_V = mkV "ewusel" ; + ewusel_V2 = mkV2 "ewusel" ; + exaban_V = mkV "exaban" ; + exaban_V2 = mkV2 "exaban" ; + exway_V = mkV "exway" ; + exway_V2 = mkV2 "exway" ; + exwayis_V = mkV "exwayis" ; + exwayis_V2 = mkV2 "exwayis" ; + ey_V = mkV "ey" ; + ey_V2 = mkV2 "ey" ; + eyam_V = mkV "eyam" ; + eyam_V2 = mkV2 "eyam" ; + eyaman_V = mkV "eyaman" ; + eyaman_V2 = mkV2 "eyaman" ; + eyan_V = mkV "eyan" ; + eyan_V2 = mkV2 "eyan" ; + eyanel_V = mkV "eyanel" ; + eyanel_V2 = mkV2 "eyanel" ; + eyek_V = mkV "eyek" ; + eyek_V2 = mkV2 "eyek" ; + eyis_V = mkV "eyis" ; + eyis_V2 = mkV2 "eyis" ; + eyisekel_V = mkV "eyisekel" ; + eyisekel_V2 = mkV2 "eyisekel" ; + eyisel_V = mkV "eyisel" ; + eyisel_V2 = mkV2 "eyisel" ; + ezel_V = mkV "ezel" ; + ezel_V2 = mkV2 "ezel" ; + ezelel_V = mkV "ezelel" ; + ezelel_V2 = mkV2 "ezelel" ; + f_V = mkV "f" ; + f_V2 = mkV2 "f" ; + facaz_V = mkV "facaz" ; + facaz_V2 = mkV2 "facaz" ; + fadalal_V = mkV "fadalal" ; + fadalal_V2 = mkV2 "fadalal" ; + fadalel_V = mkV "fadalel" ; + fadalel_V2 = mkV2 "fadalel" ; + fafaz_V = mkV "fafaz" ; + fafaz_V2 = mkV2 "fafaz" ; + fahl_V = mkV "fahl" ; + fahl_V2 = mkV2 "fahl" ; + fahlaz_V = mkV "fahlaz" ; + fahlaz_V2 = mkV2 "fahlaz" ; + fahlazel_V = mkV "fahlazel" ; + fahlazel_V2 = mkV2 "fahlazel" ; + fak_V = mkV "fak" ; + fak_V2 = mkV2 "fak" ; + fakan_V = mkV "fakan" ; + fakan_V2 = mkV2 "fakan" ; + fakaz_V = mkV "fakaz" ; + fakaz_V2 = mkV2 "fakaz" ; + fakazan_V = mkV "fakazan" ; + fakazan_V2 = mkV2 "fakazan" ; + fakazel_V = mkV "fakazel" ; + fakazel_V2 = mkV2 "fakazel" ; + fakazis_V = mkV "fakazis" ; + fakazis_V2 = mkV2 "fakazis" ; + fakel_V = mkV "fakel" ; + fakel_V2 = mkV2 "fakel" ; + falakahl_V = mkV "falakahl" ; + falakahl_V2 = mkV2 "falakahl" ; + falakahlan_V = mkV "falakahlan" ; + falakahlan_V2 = mkV2 "falakahlan" ; + fan_V = mkV "fan" ; + fan_V2 = mkV2 "fan" ; + fanek_V = mkV "fanek" ; + fanek_V2 = mkV2 "fanek" ; + fanekis_V = mkV "fanekis" ; + fanekis_V2 = mkV2 "fanekis" ; + fanel_V = mkV "fanel" ; + fanel_V2 = mkV2 "fanel" ; + fanelan_V = mkV "fanelan" ; + fanelan_V2 = mkV2 "fanelan" ; + fanelek_V = mkV "fanelek" ; + fanelek_V2 = mkV2 "fanelek" ; + fanis_V = mkV "fanis" ; + fanis_V2 = mkV2 "fanis" ; + faniselan_V = mkV "faniselan" ; + faniselan_V2 = mkV2 "faniselan" ; + fas_V = mkV "fas" ; + fas_V2 = mkV2 "fas" ; + fay_V = mkV "fay" ; + fay_V2 = mkV2 "fay" ; + faz_V = mkV "faz" ; + faz_V2 = mkV2 "faz" ; + fazan_V = mkV "fazan" ; + fazan_V2 = mkV2 "fazan" ; + fekel_V = mkV "fekel" ; + fekel_V2 = mkV2 "fekel" ; + fel_V = mkV "fel" ; + fel_V2 = mkV2 "fel" ; + felel_V = mkV "felel" ; + felel_V2 = mkV2 "felel" ; + fenyis_V = mkV "fenyis" ; + fenyis_V2 = mkV2 "fenyis" ; + feyil_V = mkV "feyil" ; + feyil_V2 = mkV2 "feyil" ; + fez_V = mkV "fez" ; + fez_V2 = mkV2 "fez" ; + fezek_V = mkV "fezek" ; + fezek_V2 = mkV2 "fezek" ; + fezekis_V = mkV "fezekis" ; + fezekis_V2 = mkV2 "fezekis" ; + fezel_V = mkV "fezel" ; + fezel_V2 = mkV2 "fezel" ; + fic_V = mkV "fic" ; + fic_V2 = mkV2 "fic" ; + fican_V = mkV "fican" ; + fican_V2 = mkV2 "fican" ; + ficel_V = mkV "ficel" ; + ficel_V2 = mkV2 "ficel" ; + ficezel_V = mkV "ficezel" ; + ficezel_V2 = mkV2 "ficezel" ; + fif_V = mkV "fif" ; + fif_V2 = mkV2 "fif" ; + fifan_V = mkV "fifan" ; + fifan_V2 = mkV2 "fifan" ; + fifiyel_V = mkV "fifiyel" ; + fifiyel_V2 = mkV2 "fifiyel" ; + fihl_V = mkV "fihl" ; + fihl_V2 = mkV2 "fihl" ; + fihlel_V = mkV "fihlel" ; + fihlel_V2 = mkV2 "fihlel" ; + fihliz_V = mkV "fihliz" ; + fihliz_V2 = mkV2 "fihliz" ; + fik_V = mkV "fik" ; + fik_V2 = mkV2 "fik" ; + fikek_V = mkV "fikek" ; + fikek_V2 = mkV2 "fikek" ; + fikel_V = mkV "fikel" ; + fikel_V2 = mkV2 "fikel" ; + fikis_V = mkV "fikis" ; + fikis_V2 = mkV2 "fikis" ; + fikisan_V = mkV "fikisan" ; + fikisan_V2 = mkV2 "fikisan" ; + fikisel_V = mkV "fikisel" ; + fikisel_V2 = mkV2 "fikisel" ; + findis_V = mkV "findis" ; + findis_V2 = mkV2 "findis" ; + fingq_V = mkV "fingq" ; + fingq_V2 = mkV2 "fingq" ; + fingqan_V = mkV "fingqan" ; + fingqan_V2 = mkV2 "fingqan" ; + fininek_V = mkV "fininek" ; + fininek_V2 = mkV2 "fininek" ; + finy_V = mkV "finy" ; + finy_V2 = mkV2 "finy" ; + finyanisek_V = mkV "finyanisek" ; + finyanisek_V2 = mkV2 "finyanisek" ; + finyel_V = mkV "finyel" ; + finyel_V2 = mkV2 "finyel" ; + finyelel_V = mkV "finyelel" ; + finyelel_V2 = mkV2 "finyelel" ; + finyelelek_V = mkV "finyelelek" ; + finyelelek_V2 = mkV2 "finyelelek" ; + finyez_V = mkV "finyez" ; + finyez_V2 = mkV2 "finyez" ; + fiphal_V = mkV "fiphal" ; + fiphal_V2 = mkV2 "fiphal" ; + fiphaz_V = mkV "fiphaz" ; + fiphaz_V2 = mkV2 "fiphaz" ; + fis_V = mkV "fis" ; + fis_V2 = mkV2 "fis" ; + fisel_V = mkV "fisel" ; + fisel_V2 = mkV2 "fisel" ; + fiselan_V = mkV "fiselan" ; + fiselan_V2 = mkV2 "fiselan" ; + fofobal_V = mkV "fofobal" ; + fofobal_V2 = mkV2 "fofobal" ; + fohl_V = mkV "fohl" ; + fohl_V2 = mkV2 "fohl" ; + fohlofohloz_V = mkV "fohlofohloz" ; + fohlofohloz_V2 = mkV2 "fohlofohloz" ; + fohlok_V = mkV "fohlok" ; + fohlok_V2 = mkV2 "fohlok" ; + fokozan_V = mkV "fokozan" ; + fokozan_V2 = mkV2 "fokozan" ; + fol_V = mkV "fol" ; + fol_V2 = mkV2 "fol" ; + folis_V = mkV "folis" ; + folis_V2 = mkV2 "folis" ; + fucuz_V = mkV "fucuz" ; + fucuz_V2 = mkV2 "fucuz" ; + fudumal_V = mkV "fudumal" ; + fudumal_V2 = mkV2 "fudumal" ; + fudumez_V = mkV "fudumez" ; + fudumez_V2 = mkV2 "fudumez" ; + fuhlelek_V = mkV "fuhlelek" ; + fuhlelek_V2 = mkV2 "fuhlelek" ; + fukamel_V = mkV "fukamel" ; + fukamel_V2 = mkV2 "fukamel" ; + fukul_V = mkV "fukul" ; + fukul_V2 = mkV2 "fukul" ; + fukulan_V = mkV "fukulan" ; + fukulan_V2 = mkV2 "fukulan" ; + fukuz_V = mkV "fukuz" ; + fukuz_V2 = mkV2 "fukuz" ; + ful_V = mkV "ful" ; + ful_V2 = mkV2 "ful" ; + fulathel_V = mkV "fulathel" ; + fulathel_V2 = mkV2 "fulathel" ; + fulel_V = mkV "fulel" ; + fulel_V2 = mkV2 "fulel" ; + fum_V = mkV "fum" ; + fum_V2 = mkV2 "fum" ; + fuman_V = mkV "fuman" ; + fuman_V2 = mkV2 "fuman" ; + fumanis_V = mkV "fumanis" ; + fumanis_V2 = mkV2 "fumanis" ; + fumanisek_V = mkV "fumanisek" ; + fumanisek_V2 = mkV2 "fumanisek" ; + fumb_V = mkV "fumb" ; + fumb_V2 = mkV2 "fumb" ; + fumbath_V = mkV "fumbath" ; + fumbath_V2 = mkV2 "fumbath" ; + fumbathis_V = mkV "fumbathis" ; + fumbathis_V2 = mkV2 "fumbathis" ; + fumbek_V = mkV "fumbek" ; + fumbek_V2 = mkV2 "fumbek" ; + fumfus_V = mkV "fumfus" ; + fumfus_V2 = mkV2 "fumfus" ; + fun_V = mkV "fun" ; + fun_V2 = mkV2 "fun" ; + funafun_V = mkV "funafun" ; + funafun_V2 = mkV2 "funafun" ; + funakal_V = mkV "funakal" ; + funakal_V2 = mkV2 "funakal" ; + funan_V = mkV "funan" ; + funan_V2 = mkV2 "funan" ; + fund_V = mkV "fund" ; + fund_V2 = mkV2 "fund" ; + fundam_V = mkV "fundam" ; + fundam_V2 = mkV2 "fundam" ; + fundek_V = mkV "fundek" ; + fundek_V2 = mkV2 "fundek" ; + fundekel_V = mkV "fundekel" ; + fundekel_V2 = mkV2 "fundekel" ; + fundel_V = mkV "fundel" ; + fundel_V2 = mkV2 "fundel" ; + fundis_V = mkV "fundis" ; + fundis_V2 = mkV2 "fundis" ; + fundisan_V = mkV "fundisan" ; + fundisan_V2 = mkV2 "fundisan" ; + fundisel_V = mkV "fundisel" ; + fundisel_V2 = mkV2 "fundisel" ; + fundisis_V = mkV "fundisis" ; + fundisis_V2 = mkV2 "fundisis" ; + funek_V = mkV "funek" ; + funek_V2 = mkV2 "funek" ; + funel_V = mkV "funel" ; + funel_V2 = mkV2 "funel" ; + fung_V = mkV "fung" ; + fung_V2 = mkV2 "fung" ; + fungel_V = mkV "fungel" ; + fungel_V2 = mkV2 "fungel" ; + fungisis_V = mkV "fungisis" ; + fungisis_V2 = mkV2 "fungisis" ; + funis_V = mkV "funis" ; + funis_V2 = mkV2 "funis" ; + funisel_V = mkV "funisel" ; + funisel_V2 = mkV2 "funisel" ; + funisis_V = mkV "funisis" ; + funisis_V2 = mkV2 "funisis" ; + funyanis_V = mkV "funyanis" ; + funyanis_V2 = mkV2 "funyanis" ; + funyanisek_V = mkV "funyanisek" ; + funyanisek_V2 = mkV2 "funyanisek" ; + funz_V = mkV "funz" ; + funz_V2 = mkV2 "funz" ; + funzan_V = mkV "funzan" ; + funzan_V2 = mkV2 "funzan" ; + funzel_V = mkV "funzel" ; + funzel_V2 = mkV2 "funzel" ; + fuqel_V = mkV "fuqel" ; + fuqel_V2 = mkV2 "fuqel" ; + fuquk_V = mkV "fuquk" ; + fuquk_V2 = mkV2 "fuquk" ; + fuquz_V = mkV "fuquz" ; + fuquz_V2 = mkV2 "fuquz" ; + fus_V = mkV "fus" ; + fus_V2 = mkV2 "fus" ; + futh_V = mkV "futh" ; + futh_V2 = mkV2 "futh" ; + futhanisel_V = mkV "futhanisel" ; + futhanisel_V2 = mkV2 "futhanisel" ; + futhek_V = mkV "futhek" ; + futhek_V2 = mkV2 "futhek" ; + futhel_V = mkV "futhel" ; + futhel_V2 = mkV2 "futhel" ; + futhelan_V = mkV "futhelan" ; + futhelan_V2 = mkV2 "futhelan" ; + fuy_V = mkV "fuy" ; + fuy_V2 = mkV2 "fuy" ; + fuz_V = mkV "fuz" ; + fuz_V2 = mkV2 "fuz" ; + fuzis_V = mkV "fuzis" ; + fuzis_V2 = mkV2 "fuzis" ; + gab_V = mkV "gab" ; + gab_V2 = mkV2 "gab" ; + gabavul_V = mkV "gabavul" ; + gabavul_V2 = mkV2 "gabavul" ; + gabaz_V = mkV "gabaz" ; + gabaz_V2 = mkV2 "gabaz" ; + gabh_V = mkV "gabh" ; + gabh_V2 = mkV2 "gabh" ; + gabhis_V = mkV "gabhis" ; + gabhis_V2 = mkV2 "gabhis" ; + gabis_V = mkV "gabis" ; + gabis_V2 = mkV2 "gabis" ; + gabisel_V = mkV "gabisel" ; + gabisel_V2 = mkV2 "gabisel" ; + gad_V = mkV "gad" ; + gad_V2 = mkV2 "gad" ; + gadel_V = mkV "gadel" ; + gadel_V2 = mkV2 "gadel" ; + gadl_V = mkV "gadl" ; + gadl_V2 = mkV2 "gadl" ; + gadlel_V = mkV "gadlel" ; + gadlel_V2 = mkV2 "gadlel" ; + gadlis_V = mkV "gadlis" ; + gadlis_V2 = mkV2 "gadlis" ; + gadul_V = mkV "gadul" ; + gadul_V2 = mkV2 "gadul" ; + gagamel_V = mkV "gagamel" ; + gagamel_V2 = mkV2 "gagamel" ; + gagul_V = mkV "gagul" ; + gagul_V2 = mkV2 "gagul" ; + gaklaz_V = mkV "gaklaz" ; + gaklaz_V2 = mkV2 "gaklaz" ; + galaz_V = mkV "galaz" ; + galaz_V2 = mkV2 "galaz" ; + galel_V = mkV "galel" ; + galel_V2 = mkV2 "galel" ; + galelek_V = mkV "galelek" ; + galelek_V2 = mkV2 "galelek" ; + gamanx_V = mkV "gamanx" ; + gamanx_V2 = mkV2 "gamanx" ; + gambaqel_V = mkV "gambaqel" ; + gambaqel_V2 = mkV2 "gambaqel" ; + gamel_V = mkV "gamel" ; + gamel_V2 = mkV2 "gamel" ; + gan_V = mkV "gan" ; + gan_V2 = mkV2 "gan" ; + ganan_V = mkV "ganan" ; + ganan_V2 = mkV2 "ganan" ; + gandagand_V = mkV "gandagand" ; + gandagand_V2 = mkV2 "gandagand" ; + ganday_V = mkV "ganday" ; + ganday_V2 = mkV2 "ganday" ; + ganel_V = mkV "ganel" ; + ganel_V2 = mkV2 "ganel" ; + gang_V = mkV "gang" ; + gang_V2 = mkV2 "gang" ; + gangel_V = mkV "gangel" ; + gangel_V2 = mkV2 "gangel" ; + gangis_V = mkV "gangis" ; + gangis_V2 = mkV2 "gangis" ; + gaq_V = mkV "gaq" ; + gaq_V2 = mkV2 "gaq" ; + gaqan_V = mkV "gaqan" ; + gaqan_V2 = mkV2 "gaqan" ; + gaqazel_V = mkV "gaqazel" ; + gaqazel_V2 = mkV2 "gaqazel" ; + gasel_V = mkV "gasel" ; + gasel_V2 = mkV2 "gasel" ; + gawul_V = mkV "gawul" ; + gawul_V2 = mkV2 "gawul" ; + gax_V = mkV "gax" ; + gax_V2 = mkV2 "gax" ; + gaxek_V = mkV "gaxek" ; + gaxek_V2 = mkV2 "gaxek" ; + gaxel_V = mkV "gaxel" ; + gaxel_V2 = mkV2 "gaxel" ; + gay_V = mkV "gay" ; + gay_V2 = mkV2 "gay" ; + gazing_V = mkV "gazing" ; + gazing_V2 = mkV2 "gazing" ; + gcab_V = mkV "gcab" ; + gcab_V2 = mkV2 "gcab" ; + gcagc_V = mkV "gcagc" ; + gcagc_V2 = mkV2 "gcagc" ; + gcagcel_V = mkV "gcagcel" ; + gcagcel_V2 = mkV2 "gcagcel" ; + gcakagc_V = mkV "gcakagc" ; + gcakagc_V2 = mkV2 "gcakagc" ; + gcakel_V = mkV "gcakel" ; + gcakel_V2 = mkV2 "gcakel" ; + gcansel_V = mkV "gcansel" ; + gcansel_V2 = mkV2 "gcansel" ; + gcifiz_V = mkV "gcifiz" ; + gcifiz_V2 = mkV2 "gcifiz" ; + gcik_V = mkV "gcik" ; + gcik_V2 = mkV2 "gcik" ; + gcin_V = mkV "gcin" ; + gcin_V2 = mkV2 "gcin" ; + gcinan_V = mkV "gcinan" ; + gcinan_V2 = mkV2 "gcinan" ; + gcinek_V = mkV "gcinek" ; + gcinek_V2 = mkV2 "gcinek" ; + gcinel_V = mkV "gcinel" ; + gcinel_V2 = mkV2 "gcinel" ; + gcizelel_V = mkV "gcizelel" ; + gcizelel_V2 = mkV2 "gcizelel" ; + gcizelelek_V = mkV "gcizelelek" ; + gcizelelek_V2 = mkV2 "gcizelelek" ; + gcob_V = mkV "gcob" ; + gcob_V2 = mkV2 "gcob" ; + gcobel_V = mkV "gcobel" ; + gcobel_V2 = mkV2 "gcobel" ; + gcobh_V = mkV "gcobh" ; + gcobh_V2 = mkV2 "gcobh" ; + gcogcom_V = mkV "gcogcom" ; + gcogcom_V2 = mkV2 "gcogcom" ; + gcon_V = mkV "gcon" ; + gcon_V2 = mkV2 "gcon" ; + gconan_V = mkV "gconan" ; + gconan_V2 = mkV2 "gconan" ; + gculis_V = mkV "gculis" ; + gculis_V2 = mkV2 "gculis" ; + gculisek_V = mkV "gculisek" ; + gculisek_V2 = mkV2 "gculisek" ; + gcwal_V = mkV "gcwal" ; + gcwal_V2 = mkV2 "gcwal" ; + gcwalis_V = mkV "gcwalis" ; + gcwalis_V2 = mkV2 "gcwalis" ; + gcwalisek_V = mkV "gcwalisek" ; + gcwalisek_V2 = mkV2 "gcwalisek" ; + gcwalisel_V = mkV "gcwalisel" ; + gcwalisel_V2 = mkV2 "gcwalisel" ; + gcwanek_V = mkV "gcwanek" ; + gcwanek_V2 = mkV2 "gcwanek" ; + gcwelez_V = mkV "gcwelez" ; + gcwelez_V2 = mkV2 "gcwelez" ; + geb_V = mkV "geb" ; + geb_V2 = mkV2 "geb" ; + gebel_V = mkV "gebel" ; + gebel_V2 = mkV2 "gebel" ; + gebeng_V = mkV "gebeng" ; + gebeng_V2 = mkV2 "gebeng" ; + gebhul_V = mkV "gebhul" ; + gebhul_V2 = mkV2 "gebhul" ; + gebis_V = mkV "gebis" ; + gebis_V2 = mkV2 "gebis" ; + gebisel_V = mkV "gebisel" ; + gebisel_V2 = mkV2 "gebisel" ; + gedez_V = mkV "gedez" ; + gedez_V2 = mkV2 "gedez" ; + gedezel_V = mkV "gedezel" ; + gedezel_V2 = mkV2 "gedezel" ; + gedl_V = mkV "gedl" ; + gedl_V2 = mkV2 "gedl" ; + gedlezel_V = mkV "gedlezel" ; + gedlezel_V2 = mkV2 "gedlezel" ; + geg_V = mkV "geg" ; + geg_V2 = mkV2 "geg" ; + gegan_V = mkV "gegan" ; + gegan_V2 = mkV2 "gegan" ; + gegel_V = mkV "gegel" ; + gegel_V2 = mkV2 "gegel" ; + gegethek_V = mkV "gegethek" ; + gegethek_V2 = mkV2 "gegethek" ; + gej_V = mkV "gej" ; + gej_V2 = mkV2 "gej" ; + gejan_V = mkV "gejan" ; + gejan_V2 = mkV2 "gejan" ; + gelekeq_V = mkV "gelekeq" ; + gelekeq_V2 = mkV2 "gelekeq" ; + gelekeqek_V = mkV "gelekeqek" ; + gelekeqek_V2 = mkV2 "gelekeqek" ; + gelez_V = mkV "gelez" ; + gelez_V2 = mkV2 "gelez" ; + gelezel_V = mkV "gelezel" ; + gelezel_V2 = mkV2 "gelezel" ; + gem_V = mkV "gem" ; + gem_V2 = mkV2 "gem" ; + genc_V = mkV "genc" ; + genc_V2 = mkV2 "genc" ; + gencek_V = mkV "gencek" ; + gencek_V2 = mkV2 "gencek" ; + gend_V = mkV "gend" ; + gend_V2 = mkV2 "gend" ; + gengelez_V = mkV "gengelez" ; + gengelez_V2 = mkV2 "gengelez" ; + genqez_V = mkV "genqez" ; + genqez_V2 = mkV2 "genqez" ; + geq_V = mkV "geq" ; + geq_V2 = mkV2 "geq" ; + geqek_V = mkV "geqek" ; + geqek_V2 = mkV2 "geqek" ; + geqel_V = mkV "geqel" ; + geqel_V2 = mkV2 "geqel" ; + geqelan_V = mkV "geqelan" ; + geqelan_V2 = mkV2 "geqelan" ; + gevuz_V = mkV "gevuz" ; + gevuz_V2 = mkV2 "gevuz" ; + gex_V = mkV "gex" ; + gex_V2 = mkV2 "gex" ; + gez_V = mkV "gez" ; + gez_V2 = mkV2 "gez" ; + gezan_V = mkV "gezan" ; + gezan_V2 = mkV2 "gezan" ; + gezel_V = mkV "gezel" ; + gezel_V2 = mkV2 "gezel" ; + gib_V = mkV "gib" ; + gib_V2 = mkV2 "gib" ; + gibanis_V = mkV "gibanis" ; + gibanis_V2 = mkV2 "gibanis" ; + gibel_V = mkV "gibel" ; + gibel_V2 = mkV2 "gibel" ; + gibelan_V = mkV "gibelan" ; + gibelan_V2 = mkV2 "gibelan" ; + gibelis_V = mkV "gibelis" ; + gibelis_V2 = mkV2 "gibelis" ; + gid_V = mkV "gid" ; + gid_V2 = mkV2 "gid" ; + gidek_V = mkV "gidek" ; + gidek_V2 = mkV2 "gidek" ; + gidis_V = mkV "gidis" ; + gidis_V2 = mkV2 "gidis" ; + gidl_V = mkV "gidl" ; + gidl_V2 = mkV2 "gidl" ; + gidlan_V = mkV "gidlan" ; + gidlan_V2 = mkV2 "gidlan" ; + gigithek_V = mkV "gigithek" ; + gigithek_V2 = mkV2 "gigithek" ; + gigiyel_V = mkV "gigiyel" ; + gigiyel_V2 = mkV2 "gigiyel" ; + gigizel_V = mkV "gigizel" ; + gigizel_V2 = mkV2 "gigizel" ; + gijigijim_V = mkV "gijigijim" ; + gijigijim_V2 = mkV2 "gijigijim" ; + gijim_V = mkV "gijim" ; + gijim_V2 = mkV2 "gijim" ; + gijimel_V = mkV "gijimel" ; + gijimel_V2 = mkV2 "gijimel" ; + gijimis_V = mkV "gijimis" ; + gijimis_V2 = mkV2 "gijimis" ; + gil_V = mkV "gil" ; + gil_V2 = mkV2 "gil" ; + gilel_V = mkV "gilel" ; + gilel_V2 = mkV2 "gilel" ; + gilikidel_V = mkV "gilikidel" ; + gilikidel_V2 = mkV2 "gilikidel" ; + gin_V = mkV "gin" ; + gin_V2 = mkV2 "gin" ; + ging_V = mkV "ging" ; + ging_V2 = mkV2 "ging" ; + gingq_V = mkV "gingq" ; + gingq_V2 = mkV2 "gingq" ; + gingqik_V = mkV "gingqik" ; + gingqik_V2 = mkV2 "gingqik" ; + gingqikel_V = mkV "gingqikel" ; + gingqikel_V2 = mkV2 "gingqikel" ; + ginq_V = mkV "ginq" ; + ginq_V2 = mkV2 "ginq" ; + gintshoz_V = mkV "gintshoz" ; + gintshoz_V2 = mkV2 "gintshoz" ; + gintshozis_V = mkV "gintshozis" ; + gintshozis_V2 = mkV2 "gintshozis" ; + giy_V = mkV "giy" ; + giy_V2 = mkV2 "giy" ; + gob_V = mkV "gob" ; + gob_V2 = mkV2 "gob" ; + gobh_V = mkV "gobh" ; + gobh_V2 = mkV2 "gobh" ; + gobhoz_V = mkV "gobhoz" ; + gobhoz_V2 = mkV2 "gobhoz" ; + gobodis_V = mkV "gobodis" ; + gobodis_V2 = mkV2 "gobodis" ; + god_V = mkV "god" ; + god_V2 = mkV2 "god" ; + godl_V = mkV "godl" ; + godl_V2 = mkV2 "godl" ; + godloz_V = mkV "godloz" ; + godloz_V2 = mkV2 "godloz" ; + godlozel_V = mkV "godlozel" ; + godlozel_V2 = mkV2 "godlozel" ; + godol_V = mkV "godol" ; + godol_V2 = mkV2 "godol" ; + godolel_V = mkV "godolel" ; + godolel_V2 = mkV2 "godolel" ; + godolis_V = mkV "godolis" ; + godolis_V2 = mkV2 "godolis" ; + goduk_V = mkV "goduk" ; + goduk_V2 = mkV2 "goduk" ; + godukel_V = mkV "godukel" ; + godukel_V2 = mkV2 "godukel" ; + gog_V = mkV "gog" ; + gog_V2 = mkV2 "gog" ; + gogek_V = mkV "gogek" ; + gogek_V2 = mkV2 "gogek" ; + gogobal_V = mkV "gogobal" ; + gogobal_V2 = mkV2 "gogobal" ; + gogod_V = mkV "gogod" ; + gogod_V2 = mkV2 "gogod" ; + gojan_V = mkV "gojan" ; + gojan_V2 = mkV2 "gojan" ; + gojel_V = mkV "gojel" ; + gojel_V2 = mkV2 "gojel" ; + gol_V = mkV "gol" ; + gol_V2 = mkV2 "gol" ; + golel_V = mkV "golel" ; + golel_V2 = mkV2 "golel" ; + goloz_V = mkV "goloz" ; + goloz_V2 = mkV2 "goloz" ; + golozel_V = mkV "golozel" ; + golozel_V2 = mkV2 "golozel" ; + gom_V = mkV "gom" ; + gom_V2 = mkV2 "gom" ; + gomel_V = mkV "gomel" ; + gomel_V2 = mkV2 "gomel" ; + gomothelan_V = mkV "gomothelan" ; + gomothelan_V2 = mkV2 "gomothelan" ; + gon_V = mkV "gon" ; + gon_V2 = mkV2 "gon" ; + gonan_V = mkV "gonan" ; + gonan_V2 = mkV2 "gonan" ; + gonel_V = mkV "gonel" ; + gonel_V2 = mkV2 "gonel" ; + gongobal_V = mkV "gongobal" ; + gongobal_V2 = mkV2 "gongobal" ; + gonq_V = mkV "gonq" ; + gonq_V2 = mkV2 "gonq" ; + goq_V = mkV "goq" ; + goq_V2 = mkV2 "goq" ; + goqan_V = mkV "goqan" ; + goqan_V2 = mkV2 "goqan" ; + goqanan_V = mkV "goqanan" ; + goqanan_V2 = mkV2 "goqanan" ; + goqongan_V = mkV "goqongan" ; + goqongan_V2 = mkV2 "goqongan" ; + goqoz_V = mkV "goqoz" ; + goqoz_V2 = mkV2 "goqoz" ; + gqab_V = mkV "gqab" ; + gqab_V2 = mkV2 "gqab" ; + gqabel_V = mkV "gqabel" ; + gqabel_V2 = mkV2 "gqabel" ; + gqabuk_V = mkV "gqabuk" ; + gqabuk_V2 = mkV2 "gqabuk" ; + gqabukel_V = mkV "gqabukel" ; + gqabukel_V2 = mkV2 "gqabukel" ; + gqabul_V = mkV "gqabul" ; + gqabul_V2 = mkV2 "gqabul" ; + gqagqan_V = mkV "gqagqan" ; + gqagqan_V2 = mkV2 "gqagqan" ; + gqagqel_V = mkV "gqagqel" ; + gqagqel_V2 = mkV2 "gqagqel" ; + gqaj_V = mkV "gqaj" ; + gqaj_V2 = mkV2 "gqaj" ; + gqam_V = mkV "gqam" ; + gqam_V2 = mkV2 "gqam" ; + gqamis_V = mkV "gqamis" ; + gqamis_V2 = mkV2 "gqamis" ; + gqamuk_V = mkV "gqamuk" ; + gqamuk_V2 = mkV2 "gqamuk" ; + gqashuk_V = mkV "gqashuk" ; + gqashuk_V2 = mkV2 "gqashuk" ; + gqashul_V = mkV "gqashul" ; + gqashul_V2 = mkV2 "gqashul" ; + gqekez_V = mkV "gqekez" ; + gqekez_V2 = mkV2 "gqekez" ; + gqib_V = mkV "gqib" ; + gqib_V2 = mkV2 "gqib" ; + gqiban_V = mkV "gqiban" ; + gqiban_V2 = mkV2 "gqiban" ; + gqibek_V = mkV "gqibek" ; + gqibek_V2 = mkV2 "gqibek" ; + gqibel_V = mkV "gqibel" ; + gqibel_V2 = mkV2 "gqibel" ; + gqibuk_V = mkV "gqibuk" ; + gqibuk_V2 = mkV2 "gqibuk" ; + gqigq_V = mkV "gqigq" ; + gqigq_V2 = mkV2 "gqigq" ; + gqigqizel_V = mkV "gqigqizel" ; + gqigqizel_V2 = mkV2 "gqigqizel" ; + gqih_V = mkV "gqih" ; + gqih_V2 = mkV2 "gqih" ; + gqihis_V = mkV "gqihis" ; + gqihis_V2 = mkV2 "gqihis" ; + gqilaz_V = mkV "gqilaz" ; + gqilaz_V2 = mkV2 "gqilaz" ; + gqilazek_V = mkV "gqilazek" ; + gqilazek_V2 = mkV2 "gqilazek" ; + gqinsil_V = mkV "gqinsil" ; + gqinsil_V2 = mkV2 "gqinsil" ; + gqish_V = mkV "gqish" ; + gqish_V2 = mkV2 "gqish" ; + gqishan_V = mkV "gqishan" ; + gqishan_V2 = mkV2 "gqishan" ; + gqishazel_V = mkV "gqishazel" ; + gqishazel_V2 = mkV2 "gqishazel" ; + gqishek_V = mkV "gqishek" ; + gqishek_V2 = mkV2 "gqishek" ; + gqiz_V = mkV "gqiz" ; + gqiz_V2 = mkV2 "gqiz" ; + gqobhelan_V = mkV "gqobhelan" ; + gqobhelan_V2 = mkV2 "gqobhelan" ; + gqobhok_V = mkV "gqobhok" ; + gqobhok_V2 = mkV2 "gqobhok" ; + gqobhoz_V = mkV "gqobhoz" ; + gqobhoz_V2 = mkV2 "gqobhoz" ; + gqogq_V = mkV "gqogq" ; + gqogq_V2 = mkV2 "gqogq" ; + gqok_V = mkV "gqok" ; + gqok_V2 = mkV2 "gqok" ; + gqokan_V = mkV "gqokan" ; + gqokan_V2 = mkV2 "gqokan" ; + gqokis_V = mkV "gqokis" ; + gqokis_V2 = mkV2 "gqokis" ; + gqoloz_V = mkV "gqoloz" ; + gqoloz_V2 = mkV2 "gqoloz" ; + gqolozel_V = mkV "gqolozel" ; + gqolozel_V2 = mkV2 "gqolozel" ; + gqolozelan_V = mkV "gqolozelan" ; + gqolozelan_V2 = mkV2 "gqolozelan" ; + gqoz_V = mkV "gqoz" ; + gqoz_V2 = mkV2 "gqoz" ; + gqozek_V = mkV "gqozek" ; + gqozek_V2 = mkV2 "gqozek" ; + gqub_V = mkV "gqub" ; + gqub_V2 = mkV2 "gqub" ; + gqugqumez_V = mkV "gqugqumez" ; + gqugqumez_V2 = mkV2 "gqugqumez" ; + gqugquzel_V = mkV "gqugquzel" ; + gqugquzel_V2 = mkV2 "gqugquzel" ; + gqul_V = mkV "gqul" ; + gqul_V2 = mkV2 "gqul" ; + gqum_V = mkV "gqum" ; + gqum_V2 = mkV2 "gqum" ; + gqumbuz_V = mkV "gqumbuz" ; + gqumbuz_V2 = mkV2 "gqumbuz" ; + gqumis_V = mkV "gqumis" ; + gqumis_V2 = mkV2 "gqumis" ; + gqumuz_V = mkV "gqumuz" ; + gqumuz_V2 = mkV2 "gqumuz" ; + gqwabagqwab_V = mkV "gqwabagqwab" ; + gqwabagqwab_V2 = mkV2 "gqwabagqwab" ; + gqwal_V = mkV "gqwal" ; + gqwal_V2 = mkV2 "gqwal" ; + gqwayizelis_V = mkV "gqwayizelis" ; + gqwayizelis_V2 = mkV2 "gqwayizelis" ; + gubaz_V = mkV "gubaz" ; + gubaz_V2 = mkV2 "gubaz" ; + gubelan_V = mkV "gubelan" ; + gubelan_V2 = mkV2 "gubelan" ; + gubh_V = mkV "gubh" ; + gubh_V2 = mkV2 "gubh" ; + gubhazel_V = mkV "gubhazel" ; + gubhazel_V2 = mkV2 "gubhazel" ; + gubhel_V = mkV "gubhel" ; + gubhel_V2 = mkV2 "gubhel" ; + gubhis_V = mkV "gubhis" ; + gubhis_V2 = mkV2 "gubhis" ; + gubhuk_V = mkV "gubhuk" ; + gubhuk_V2 = mkV2 "gubhuk" ; + gubuzel_V = mkV "gubuzel" ; + gubuzel_V2 = mkV2 "gubuzel" ; + gud_V = mkV "gud" ; + gud_V2 = mkV2 "gud" ; + gudl_V = mkV "gudl" ; + gudl_V2 = mkV2 "gudl" ; + gudlan_V = mkV "gudlan" ; + gudlan_V2 = mkV2 "gudlan" ; + gudlel_V = mkV "gudlel" ; + gudlel_V2 = mkV2 "gudlel" ; + gudlis_V = mkV "gudlis" ; + gudlis_V2 = mkV2 "gudlis" ; + gudluk_V = mkV "gudluk" ; + gudluk_V2 = mkV2 "gudluk" ; + gudlul_V = mkV "gudlul" ; + gudlul_V2 = mkV2 "gudlul" ; + gudlumez_V = mkV "gudlumez" ; + gudlumez_V2 = mkV2 "gudlumez" ; + gudlumezel_V = mkV "gudlumezel" ; + gudlumezel_V2 = mkV2 "gudlumezel" ; + gudluz_V = mkV "gudluz" ; + gudluz_V2 = mkV2 "gudluz" ; + gudluzel_V = mkV "gudluzel" ; + gudluzel_V2 = mkV2 "gudluzel" ; + guduz_V = mkV "guduz" ; + guduz_V2 = mkV2 "guduz" ; + guduzan_V = mkV "guduzan" ; + guduzan_V2 = mkV2 "guduzan" ; + gug_V = mkV "gug" ; + gug_V2 = mkV2 "gug" ; + gugel_V = mkV "gugel" ; + gugel_V2 = mkV2 "gugel" ; + gugis_V = mkV "gugis" ; + gugis_V2 = mkV2 "gugis" ; + gugisel_V = mkV "gugisel" ; + gugisel_V2 = mkV2 "gugisel" ; + gul_V = mkV "gul" ; + gul_V2 = mkV2 "gul" ; + gulan_V = mkV "gulan" ; + gulan_V2 = mkV2 "gulan" ; + gulel_V = mkV "gulel" ; + gulel_V2 = mkV2 "gulel" ; + gulis_V = mkV "gulis" ; + gulis_V2 = mkV2 "gulis" ; + gulukudel_V = mkV "gulukudel" ; + gulukudel_V2 = mkV2 "gulukudel" ; + gulul_V = mkV "gulul" ; + gulul_V2 = mkV2 "gulul" ; + gumb_V = mkV "gumb" ; + gumb_V2 = mkV2 "gumb" ; + gund_V = mkV "gund" ; + gund_V2 = mkV2 "gund" ; + gundan_V = mkV "gundan" ; + gundan_V2 = mkV2 "gundan" ; + gunquz_V = mkV "gunquz" ; + gunquz_V2 = mkV2 "gunquz" ; + gunquzis_V = mkV "gunquzis" ; + gunquzis_V2 = mkV2 "gunquzis" ; + guny_V = mkV "guny" ; + guny_V2 = mkV2 "guny" ; + gunyaz_V = mkV "gunyaz" ; + gunyaz_V2 = mkV2 "gunyaz" ; + gunyel_V = mkV "gunyel" ; + gunyel_V2 = mkV2 "gunyel" ; + guq_V = mkV "guq" ; + guq_V2 = mkV2 "guq" ; + guqel_V = mkV "guqel" ; + guqel_V2 = mkV2 "guqel" ; + guqis_V = mkV "guqis" ; + guqis_V2 = mkV2 "guqis" ; + guqubal_V = mkV "guqubal" ; + guqubal_V2 = mkV2 "guqubal" ; + guqubalis_V = mkV "guqubalis" ; + guqubalis_V2 = mkV2 "guqubalis" ; + guquk_V = mkV "guquk" ; + guquk_V2 = mkV2 "guquk" ; + guqukel_V = mkV "guqukel" ; + guqukel_V2 = mkV2 "guqukel" ; + guqul_V = mkV "guqul" ; + guqul_V2 = mkV2 "guqul" ; + guqulan_V = mkV "guqulan" ; + guqulan_V2 = mkV2 "guqulan" ; + guqulel_V = mkV "guqulel" ; + guqulel_V2 = mkV2 "guqulel" ; + gush_V = mkV "gush" ; + gush_V2 = mkV2 "gush" ; + gwab_V = mkV "gwab" ; + gwab_V2 = mkV2 "gwab" ; + gwac_V = mkV "gwac" ; + gwac_V2 = mkV2 "gwac" ; + gwajaz_V = mkV "gwajaz" ; + gwajaz_V2 = mkV2 "gwajaz" ; + gwal_V = mkV "gwal" ; + gwal_V2 = mkV2 "gwal" ; + gwaliz_V = mkV "gwaliz" ; + gwaliz_V2 = mkV2 "gwaliz" ; + gwaq_V = mkV "gwaq" ; + gwaq_V2 = mkV2 "gwaq" ; + gwaqan_V = mkV "gwaqan" ; + gwaqan_V2 = mkV2 "gwaqan" ; + gwaqaz_V = mkV "gwaqaz" ; + gwaqaz_V2 = mkV2 "gwaqaz" ; + gwaqazel_V = mkV "gwaqazel" ; + gwaqazel_V2 = mkV2 "gwaqazel" ; + gwaqazis_V = mkV "gwaqazis" ; + gwaqazis_V2 = mkV2 "gwaqazis" ; + gwaqazisan_V = mkV "gwaqazisan" ; + gwaqazisan_V2 = mkV2 "gwaqazisan" ; + gwavum_V = mkV "gwavum" ; + gwavum_V2 = mkV2 "gwavum" ; + gwavumel_V = mkV "gwavumel" ; + gwavumel_V2 = mkV2 "gwavumel" ; + gwaz_V = mkV "gwaz" ; + gwaz_V2 = mkV2 "gwaz" ; + gwazan_V = mkV "gwazan" ; + gwazan_V2 = mkV2 "gwazan" ; + gwazek_V = mkV "gwazek" ; + gwazek_V2 = mkV2 "gwazek" ; + gwazel_V = mkV "gwazel" ; + gwazel_V2 = mkV2 "gwazel" ; + gweb_V = mkV "gweb" ; + gweb_V2 = mkV2 "gweb" ; + gwegw_V = mkV "gwegw" ; + gwegw_V2 = mkV2 "gwegw" ; + gwegwes_V = mkV "gwegwes" ; + gwegwes_V2 = mkV2 "gwegwes" ; + gwem_V = mkV "gwem" ; + gwem_V2 = mkV2 "gwem" ; + gwemel_V = mkV "gwemel" ; + gwemel_V2 = mkV2 "gwemel" ; + gwev_V = mkV "gwev" ; + gwev_V2 = mkV2 "gwev" ; + gwij_V = mkV "gwij" ; + gwij_V2 = mkV2 "gwij" ; + gwiliz_V = mkV "gwiliz" ; + gwiliz_V2 = mkV2 "gwiliz" ; + gwilizis_V = mkV "gwilizis" ; + gwilizis_V2 = mkV2 "gwilizis" ; + gwinsizis_V = mkV "gwinsizis" ; + gwinsizis_V2 = mkV2 "gwinsizis" ; + gwiny_V = mkV "gwiny" ; + gwiny_V2 = mkV2 "gwiny" ; + gxadazel_V = mkV "gxadazel" ; + gxadazel_V2 = mkV2 "gxadazel" ; + gxamalaz_V = mkV "gxamalaz" ; + gxamalaz_V2 = mkV2 "gxamalaz" ; + gxamalazel_V = mkV "gxamalazel" ; + gxamalazel_V2 = mkV2 "gxamalazel" ; + gxambukel_V = mkV "gxambukel" ; + gxambukel_V2 = mkV2 "gxambukel" ; + gxavul_V = mkV "gxavul" ; + gxavul_V2 = mkV2 "gxavul" ; + gxaz_V = mkV "gxaz" ; + gxaz_V2 = mkV2 "gxaz" ; + gxek_V = mkV "gxek" ; + gxek_V2 = mkV2 "gxek" ; + gxil_V = mkV "gxil" ; + gxil_V2 = mkV2 "gxil" ; + gxilis_V = mkV "gxilis" ; + gxilis_V2 = mkV2 "gxilis" ; + gxish_V = mkV "gxish" ; + gxish_V2 = mkV2 "gxish" ; + gxiviz_V = mkV "gxiviz" ; + gxiviz_V2 = mkV2 "gxiviz" ; + gxob_V = mkV "gxob" ; + gxob_V2 = mkV2 "gxob" ; + gxobagxob_V = mkV "gxobagxob" ; + gxobagxob_V2 = mkV2 "gxobagxob" ; + gxum_V = mkV "gxum" ; + gxum_V2 = mkV2 "gxum" ; + gxumagxum_V = mkV "gxumagxum" ; + gxumagxum_V2 = mkV2 "gxumagxum" ; + gxumagxumis_V = mkV "gxumagxumis" ; + gxumagxumis_V2 = mkV2 "gxumagxumis" ; + gxumek_V = mkV "gxumek" ; + gxumek_V2 = mkV2 "gxumek" ; + gxumel_V = mkV "gxumel" ; + gxumel_V2 = mkV2 "gxumel" ; + gxumis_V = mkV "gxumis" ; + gxumis_V2 = mkV2 "gxumis" ; + gxushekek_V = mkV "gxushekek" ; + gxushekek_V2 = mkV2 "gxushekek" ; + habul_V = mkV "habul" ; + habul_V2 = mkV2 "habul" ; + hahel_V = mkV "hahel" ; + hahel_V2 = mkV2 "hahel" ; + hahisel_V = mkV "hahisel" ; + hahisel_V2 = mkV2 "hahisel" ; + hal_V = mkV "hal" ; + hal_V2 = mkV2 "hal" ; + halakashel_V = mkV "halakashel" ; + halakashel_V2 = mkV2 "halakashel" ; + halalis_V = mkV "halalis" ; + halalis_V2 = mkV2 "halalis" ; + halalisel_V = mkV "halalisel" ; + halalisel_V2 = mkV2 "halalisel" ; + halel_V = mkV "halel" ; + halel_V2 = mkV2 "halel" ; + hamb_V = mkV "hamb" ; + hamb_V2 = mkV2 "hamb" ; + hambahamb_V = mkV "hambahamb" ; + hambahamb_V2 = mkV2 "hambahamb" ; + hambahambel_V = mkV "hambahambel" ; + hambahambel_V2 = mkV2 "hambahambel" ; + hambek_V = mkV "hambek" ; + hambek_V2 = mkV2 "hambek" ; + hambel_V = mkV "hambel" ; + hambel_V2 = mkV2 "hambel" ; + hambelan_V = mkV "hambelan" ; + hambelan_V2 = mkV2 "hambelan" ; + hambis_V = mkV "hambis" ; + hambis_V2 = mkV2 "hambis" ; + hambisan_V = mkV "hambisan" ; + hambisan_V2 = mkV2 "hambisan" ; + hambisel_V = mkV "hambisel" ; + hambisel_V2 = mkV2 "hambisel" ; + hamuk_V = mkV "hamuk" ; + hamuk_V2 = mkV2 "hamuk" ; + hangul_V = mkV "hangul" ; + hangul_V2 = mkV2 "hangul" ; + haq_V = mkV "haq" ; + haq_V2 = mkV2 "haq" ; + hawuk_V = mkV "hawuk" ; + hawuk_V2 = mkV2 "hawuk" ; + hawukel_V = mkV "hawukel" ; + hawukel_V2 = mkV2 "hawukel" ; + hay_V = mkV "hay" ; + hay_V2 = mkV2 "hay" ; + hayek_V = mkV "hayek" ; + hayek_V2 = mkV2 "hayek" ; + hayis_V = mkV "hayis" ; + hayis_V2 = mkV2 "hayis" ; + hayiz_V = mkV "hayiz" ; + hayiz_V2 = mkV2 "hayiz" ; + haz_V = mkV "haz" ; + haz_V2 = mkV2 "haz" ; + hebez_V = mkV "hebez" ; + hebez_V2 = mkV2 "hebez" ; + hefuzel_V = mkV "hefuzel" ; + hefuzel_V2 = mkV2 "hefuzel" ; + heh_V = mkV "heh" ; + heh_V2 = mkV2 "heh" ; + hel_V = mkV "hel" ; + hel_V2 = mkV2 "hel" ; + helez_V = mkV "helez" ; + helez_V2 = mkV2 "helez" ; + hem_V = mkV "hem" ; + hem_V2 = mkV2 "hem" ; + hemel_V = mkV "hemel" ; + hemel_V2 = mkV2 "hemel" ; + henq_V = mkV "henq" ; + henq_V2 = mkV2 "henq" ; + henqel_V = mkV "henqel" ; + henqel_V2 = mkV2 "henqel" ; + hhehh_V = mkV "hhehh" ; + hhehh_V2 = mkV2 "hhehh" ; + hhem_V = mkV "hhem" ; + hhem_V2 = mkV2 "hhem" ; + hhewul_V = mkV "hhewul" ; + hhewul_V2 = mkV2 "hhewul" ; + hhul_V = mkV "hhul" ; + hhul_V2 = mkV2 "hhul" ; + hhum_V = mkV "hhum" ; + hhum_V2 = mkV2 "hhum" ; + hhumuzel_V = mkV "hhumuzel" ; + hhumuzel_V2 = mkV2 "hhumuzel" ; + hib_V = mkV "hib" ; + hib_V2 = mkV2 "hib" ; + hid_V = mkV "hid" ; + hid_V2 = mkV2 "hid" ; + hil_V = mkV "hil" ; + hil_V2 = mkV2 "hil" ; + hilan_V = mkV "hilan" ; + hilan_V2 = mkV2 "hilan" ; + hilel_V = mkV "hilel" ; + hilel_V2 = mkV2 "hilel" ; + hlab_V = mkV "hlab" ; + hlab_V2 = mkV2 "hlab" ; + hlaban_V = mkV "hlaban" ; + hlaban_V2 = mkV2 "hlaban" ; + hlabanis_V = mkV "hlabanis" ; + hlabanis_V2 = mkV2 "hlabanis" ; + hlabek_V = mkV "hlabek" ; + hlabek_V2 = mkV2 "hlabek" ; + hlabekis_V = mkV "hlabekis" ; + hlabekis_V2 = mkV2 "hlabekis" ; + hlabel_V = mkV "hlabel" ; + hlabel_V2 = mkV2 "hlabel" ; + hlabelel_V = mkV "hlabelel" ; + hlabelel_V2 = mkV2 "hlabelel" ; + hlabelelis_V = mkV "hlabelelis" ; + hlabelelis_V2 = mkV2 "hlabelelis" ; + hlabis_V = mkV "hlabis" ; + hlabis_V2 = mkV2 "hlabis" ; + hlafun_V = mkV "hlafun" ; + hlafun_V2 = mkV2 "hlafun" ; + hlahl_V = mkV "hlahl" ; + hlahl_V2 = mkV2 "hlahl" ; + hlahlanan_V = mkV "hlahlanan" ; + hlahlanan_V2 = mkV2 "hlahlanan" ; + hlahlel_V = mkV "hlahlel" ; + hlahlel_V2 = mkV2 "hlahlel" ; + hlahlelek_V = mkV "hlahlelek" ; + hlahlelek_V2 = mkV2 "hlahlelek" ; + hlakaniph_V = mkV "hlakaniph" ; + hlakaniph_V2 = mkV2 "hlakaniph" ; + hlakaniphel_V = mkV "hlakaniphel" ; + hlakaniphel_V2 = mkV2 "hlakaniphel" ; + hlakaniphis_V = mkV "hlakaniphis" ; + hlakaniphis_V2 = mkV2 "hlakaniphis" ; + hlakaz_V = mkV "hlakaz" ; + hlakaz_V2 = mkV2 "hlakaz" ; + hlakazek_V = mkV "hlakazek" ; + hlakazek_V2 = mkV2 "hlakazek" ; + hlakazel_V = mkV "hlakazel" ; + hlakazel_V2 = mkV2 "hlakazel" ; + hlakul_V = mkV "hlakul" ; + hlakul_V2 = mkV2 "hlakul" ; + hlakulel_V = mkV "hlakulel" ; + hlakulel_V2 = mkV2 "hlakulel" ; + hlal_V = mkV "hlal" ; + hlal_V2 = mkV2 "hlal" ; + hlalahlal_V = mkV "hlalahlal" ; + hlalahlal_V2 = mkV2 "hlalahlal" ; + hlalek_V = mkV "hlalek" ; + hlalek_V2 = mkV2 "hlalek" ; + hlalel_V = mkV "hlalel" ; + hlalel_V2 = mkV2 "hlalel" ; + hlalis_V = mkV "hlalis" ; + hlalis_V2 = mkV2 "hlalis" ; + hlalisan_V = mkV "hlalisan" ; + hlalisan_V2 = mkV2 "hlalisan" ; + hlaluk_V = mkV "hlaluk" ; + hlaluk_V2 = mkV2 "hlaluk" ; + hlamb_V = mkV "hlamb" ; + hlamb_V2 = mkV2 "hlamb" ; + hlambalaz_V = mkV "hlambalaz" ; + hlambalaz_V2 = mkV2 "hlambalaz" ; + hlambuluk_V = mkV "hlambuluk" ; + hlambuluk_V2 = mkV2 "hlambuluk" ; + hlambulul_V = mkV "hlambulul" ; + hlambulul_V2 = mkV2 "hlambulul" ; + hlamuk_V = mkV "hlamuk" ; + hlamuk_V2 = mkV2 "hlamuk" ; + hlandl_V = mkV "hlandl" ; + hlandl_V2 = mkV2 "hlandl" ; + hlanekezel_V = mkV "hlanekezel" ; + hlanekezel_V2 = mkV2 "hlanekezel" ; + hlanekezelek_V = mkV "hlanekezelek" ; + hlanekezelek_V2 = mkV2 "hlanekezelek" ; + hlangabez_V = mkV "hlangabez" ; + hlangabez_V2 = mkV2 "hlangabez" ; + hlangabezan_V = mkV "hlangabezan" ; + hlangabezan_V2 = mkV2 "hlangabezan" ; + hlangan_V = mkV "hlangan" ; + hlangan_V2 = mkV2 "hlangan" ; + hlanganel_V = mkV "hlanganel" ; + hlanganel_V2 = mkV2 "hlanganel" ; + hlanganis_V = mkV "hlanganis" ; + hlanganis_V2 = mkV2 "hlanganis" ; + hlanganisel_V = mkV "hlanganisel" ; + hlanganisel_V2 = mkV2 "hlanganisel" ; + hlanganyel_V = mkV "hlanganyel" ; + hlanganyel_V2 = mkV2 "hlanganyel" ; + hlany_V = mkV "hlany" ; + hlany_V2 = mkV2 "hlany" ; + hlanyan_V = mkV "hlanyan" ; + hlanyan_V2 = mkV2 "hlanyan" ; + hlanyis_V = mkV "hlanyis" ; + hlanyis_V2 = mkV2 "hlanyis" ; + hlanz_V = mkV "hlanz" ; + hlanz_V2 = mkV2 "hlanz" ; + hlanzek_V = mkV "hlanzek" ; + hlanzek_V2 = mkV2 "hlanzek" ; + hlaphaz_V = mkV "hlaphaz" ; + hlaphaz_V2 = mkV2 "hlaphaz" ; + hlasel_V = mkV "hlasel" ; + hlasel_V2 = mkV2 "hlasel" ; + hlasimul_V = mkV "hlasimul" ; + hlasimul_V2 = mkV2 "hlasimul" ; + hlasimulis_V = mkV "hlasimulis" ; + hlasimulis_V2 = mkV2 "hlasimulis" ; + hlawul_V = mkV "hlawul" ; + hlawul_V2 = mkV2 "hlawul" ; + hlawulel_V = mkV "hlawulel" ; + hlawulel_V2 = mkV2 "hlawulel" ; + hlawulis_V = mkV "hlawulis" ; + hlawulis_V2 = mkV2 "hlawulis" ; + hlaz_V = mkV "hlaz" ; + hlaz_V2 = mkV2 "hlaz" ; + hlazan_V = mkV "hlazan" ; + hlazan_V2 = mkV2 "hlazan" ; + hlazek_V = mkV "hlazek" ; + hlazek_V2 = mkV2 "hlazek" ; + hlazis_V = mkV "hlazis" ; + hlazis_V2 = mkV2 "hlazis" ; + hlaziy_V = mkV "hlaziy" ; + hlaziy_V2 = mkV2 "hlaziy" ; + hlaziyek_V = mkV "hlaziyek" ; + hlaziyek_V2 = mkV2 "hlaziyek" ; + hleb_V = mkV "hleb" ; + hleb_V2 = mkV2 "hleb" ; + hleban_V = mkV "hleban" ; + hleban_V2 = mkV2 "hleban" ; + hlebek_V = mkV "hlebek" ; + hlebek_V2 = mkV2 "hlebek" ; + hlebel_V = mkV "hlebel" ; + hlebel_V2 = mkV2 "hlebel" ; + hlebez_V = mkV "hlebez" ; + hlebez_V2 = mkV2 "hlebez" ; + hlehl_V = mkV "hlehl" ; + hlehl_V2 = mkV2 "hlehl" ; + hlehlel_V = mkV "hlehlel" ; + hlehlel_V2 = mkV2 "hlehlel" ; + hlehlis_V = mkV "hlehlis" ; + hlehlis_V2 = mkV2 "hlehlis" ; + hlehlisel_V = mkV "hlehlisel" ; + hlehlisel_V2 = mkV2 "hlehlisel" ; + hlek_V = mkV "hlek" ; + hlek_V2 = mkV2 "hlek" ; + hlekel_V = mkV "hlekel" ; + hlekel_V2 = mkV2 "hlekel" ; + hlekis_V = mkV "hlekis" ; + hlekis_V2 = mkV2 "hlekis" ; + hlekisan_V = mkV "hlekisan" ; + hlekisan_V2 = mkV2 "hlekisan" ; + hlel_V = mkV "hlel" ; + hlel_V2 = mkV2 "hlel" ; + hlelek_V = mkV "hlelek" ; + hlelek_V2 = mkV2 "hlelek" ; + hlelel_V = mkV "hlelel" ; + hlelel_V2 = mkV2 "hlelel" ; + hlelemb_V = mkV "hlelemb" ; + hlelemb_V2 = mkV2 "hlelemb" ; + hlelembek_V = mkV "hlelembek" ; + hlelembek_V2 = mkV2 "hlelembek" ; + hlelembel_V = mkV "hlelembel" ; + hlelembel_V2 = mkV2 "hlelembel" ; + hleng_V = mkV "hleng" ; + hleng_V2 = mkV2 "hleng" ; + hlengezel_V = mkV "hlengezel" ; + hlengezel_V2 = mkV2 "hlengezel" ; + hlephul_V = mkV "hlephul" ; + hlephul_V2 = mkV2 "hlephul" ; + hlibik_V = mkV "hlibik" ; + hlibik_V2 = mkV2 "hlibik" ; + hlihliz_V = mkV "hlihliz" ; + hlihliz_V2 = mkV2 "hlihliz" ; + hlihlizel_V = mkV "hlihlizel" ; + hlihlizel_V2 = mkV2 "hlihlizel" ; + hlikihl_V = mkV "hlikihl" ; + hlikihl_V2 = mkV2 "hlikihl" ; + hlikiz_V = mkV "hlikiz" ; + hlikiz_V2 = mkV2 "hlikiz" ; + hlin_V = mkV "hlin" ; + hlin_V2 = mkV2 "hlin" ; + hlinz_V = mkV "hlinz" ; + hlinz_V2 = mkV2 "hlinz" ; + hlinzek_V = mkV "hlinzek" ; + hlinzek_V2 = mkV2 "hlinzek" ; + hlinzekel_V = mkV "hlinzekel" ; + hlinzekel_V2 = mkV2 "hlinzekel" ; + hlinzel_V = mkV "hlinzel" ; + hlinzel_V2 = mkV2 "hlinzel" ; + hlob_V = mkV "hlob" ; + hlob_V2 = mkV2 "hlob" ; + hloban_V = mkV "hloban" ; + hloban_V2 = mkV2 "hloban" ; + hlobis_V = mkV "hlobis" ; + hlobis_V2 = mkV2 "hlobis" ; + hlobong_V = mkV "hlobong" ; + hlobong_V2 = mkV2 "hlobong" ; + hlohl_V = mkV "hlohl" ; + hlohl_V2 = mkV2 "hlohl" ; + hlohlel_V = mkV "hlohlel" ; + hlohlel_V2 = mkV2 "hlohlel" ; + hlohlolozel_V = mkV "hlohlolozel" ; + hlohlolozel_V2 = mkV2 "hlohlolozel" ; + hlokom_V = mkV "hlokom" ; + hlokom_V2 = mkV2 "hlokom" ; + hlokoz_V = mkV "hlokoz" ; + hlokoz_V2 = mkV2 "hlokoz" ; + hlol_V = mkV "hlol" ; + hlol_V2 = mkV2 "hlol" ; + hlolahlol_V = mkV "hlolahlol" ; + hlolahlol_V2 = mkV2 "hlolahlol" ; + hlolek_V = mkV "hlolek" ; + hlolek_V2 = mkV2 "hlolek" ; + hlolel_V = mkV "hlolel" ; + hlolel_V2 = mkV2 "hlolel" ; + hlolisis_V = mkV "hlolisis" ; + hlolisis_V2 = mkV2 "hlolisis" ; + hlom_V = mkV "hlom" ; + hlom_V2 = mkV2 "hlom" ; + hlomel_V = mkV "hlomel" ; + hlomel_V2 = mkV2 "hlomel" ; + hlomis_V = mkV "hlomis" ; + hlomis_V2 = mkV2 "hlomis" ; + hlomul_V = mkV "hlomul" ; + hlomul_V2 = mkV2 "hlomul" ; + hlomulis_V = mkV "hlomulis" ; + hlomulis_V2 = mkV2 "hlomulis" ; + hlongoz_V = mkV "hlongoz" ; + hlongoz_V2 = mkV2 "hlongoz" ; + hloniph_V = mkV "hloniph" ; + hloniph_V2 = mkV2 "hloniph" ; + hloniphan_V = mkV "hloniphan" ; + hloniphan_V2 = mkV2 "hloniphan" ; + hloniphek_V = mkV "hloniphek" ; + hloniphek_V2 = mkV2 "hloniphek" ; + hlonz_V = mkV "hlonz" ; + hlonz_V2 = mkV2 "hlonz" ; + hlos_V = mkV "hlos" ; + hlos_V2 = mkV2 "hlos" ; + hlub_V = mkV "hlub" ; + hlub_V2 = mkV2 "hlub" ; + hlubuk_V = mkV "hlubuk" ; + hlubuk_V2 = mkV2 "hlubuk" ; + hlubukis_V = mkV "hlubukis" ; + hlubukis_V2 = mkV2 "hlubukis" ; + hlubul_V = mkV "hlubul" ; + hlubul_V2 = mkV2 "hlubul" ; + hluk_V = mkV "hluk" ; + hluk_V2 = mkV2 "hluk" ; + hlukan_V = mkV "hlukan" ; + hlukan_V2 = mkV2 "hlukan" ; + hlukanis_V = mkV "hlukanis" ; + hlukanis_V2 = mkV2 "hlukanis" ; + hlukanisel_V = mkV "hlukanisel" ; + hlukanisel_V2 = mkV2 "hlukanisel" ; + hlukaniselan_V = mkV "hlukaniselan" ; + hlukaniselan_V2 = mkV2 "hlukaniselan" ; + hlukel_V = mkV "hlukel" ; + hlukel_V2 = mkV2 "hlukel" ; + hlukumez_V = mkV "hlukumez" ; + hlukumez_V2 = mkV2 "hlukumez" ; + hlul_V = mkV "hlul" ; + hlul_V2 = mkV2 "hlul" ; + hlulan_V = mkV "hlulan" ; + hlulan_V2 = mkV2 "hlulan" ; + hlulek_V = mkV "hlulek" ; + hlulek_V2 = mkV2 "hlulek" ; + hlulel_V = mkV "hlulel" ; + hlulel_V2 = mkV2 "hlulel" ; + hlum_V = mkV "hlum" ; + hlum_V2 = mkV2 "hlum" ; + hlumis_V = mkV "hlumis" ; + hlumis_V2 = mkV2 "hlumis" ; + hlunam_V = mkV "hlunam" ; + hlunam_V2 = mkV2 "hlunam" ; + hlung_V = mkV "hlung" ; + hlung_V2 = mkV2 "hlung" ; + hluph_V = mkV "hluph" ; + hluph_V2 = mkV2 "hluph" ; + hluphahluph_V = mkV "hluphahluph" ; + hluphahluph_V2 = mkV2 "hluphahluph" ; + hluphek_V = mkV "hluphek" ; + hluphek_V2 = mkV2 "hluphek" ; + hluphekel_V = mkV "hluphekel" ; + hluphekel_V2 = mkV2 "hluphekel" ; + hluphel_V = mkV "hluphel" ; + hluphel_V2 = mkV2 "hluphel" ; + hluphelan_V = mkV "hluphelan" ; + hluphelan_V2 = mkV2 "hluphelan" ; + hluthuk_V = mkV "hluthuk" ; + hluthuk_V2 = mkV2 "hluthuk" ; + hluthul_V = mkV "hluthul" ; + hluthul_V2 = mkV2 "hluthul" ; + hluthulel_V = mkV "hluthulel" ; + hluthulel_V2 = mkV2 "hluthulel" ; + hluz_V = mkV "hluz" ; + hluz_V2 = mkV2 "hluz" ; + hluzek_V = mkV "hluzek" ; + hluzek_V2 = mkV2 "hluzek" ; + hlw_V = mkV "hlw" ; + hlw_V2 = mkV2 "hlw" ; + hlwabus_V = mkV "hlwabus" ; + hlwabus_V2 = mkV2 "hlwabus" ; + hlwanyel_V = mkV "hlwanyel" ; + hlwanyel_V2 = mkV2 "hlwanyel" ; + hlwathiz_V = mkV "hlwathiz" ; + hlwathiz_V2 = mkV2 "hlwathiz" ; + hlway_V = mkV "hlway" ; + hlway_V2 = mkV2 "hlway" ; + hlwayel_V = mkV "hlwayel" ; + hlwayel_V2 = mkV2 "hlwayel" ; + hlwel_V = mkV "hlwel" ; + hlwel_V2 = mkV2 "hlwel" ; + hlweng_V = mkV "hlweng" ; + hlweng_V2 = mkV2 "hlweng" ; + hlwengis_V = mkV "hlwengis" ; + hlwengis_V2 = mkV2 "hlwengis" ; + hlwis_V = mkV "hlwis" ; + hlwis_V2 = mkV2 "hlwis" ; + hlwith_V = mkV "hlwith" ; + hlwith_V2 = mkV2 "hlwith" ; + hob_V = mkV "hob" ; + hob_V2 = mkV2 "hob" ; + hobis_V = mkV "hobis" ; + hobis_V2 = mkV2 "hobis" ; + hogel_V = mkV "hogel" ; + hogel_V2 = mkV2 "hogel" ; + hogelis_V = mkV "hogelis" ; + hogelis_V2 = mkV2 "hogelis" ; + hol_V = mkV "hol" ; + hol_V2 = mkV2 "hol" ; + holan_V = mkV "holan" ; + holan_V2 = mkV2 "holan" ; + holel_V = mkV "holel" ; + holel_V2 = mkV2 "holel" ; + hon_V = mkV "hon" ; + hon_V2 = mkV2 "hon" ; + honq_V = mkV "honq" ; + honq_V2 = mkV2 "honq" ; + hosh_V = mkV "hosh" ; + hosh_V2 = mkV2 "hosh" ; + hoshek_V = mkV "hoshek" ; + hoshek_V2 = mkV2 "hoshek" ; + hoshelan_V = mkV "hoshelan" ; + hoshelan_V2 = mkV2 "hoshelan" ; + hoshobal_V = mkV "hoshobal" ; + hoshobal_V2 = mkV2 "hoshobal" ; + hoshoz_V = mkV "hoshoz" ; + hoshoz_V2 = mkV2 "hoshoz" ; + hoshuk_V = mkV "hoshuk" ; + hoshuk_V2 = mkV2 "hoshuk" ; + hox_V = mkV "hox" ; + hox_V2 = mkV2 "hox" ; + hoxelek_V = mkV "hoxelek" ; + hoxelek_V2 = mkV2 "hoxelek" ; + hoxis_V = mkV "hoxis" ; + hoxis_V2 = mkV2 "hoxis" ; + hoz_V = mkV "hoz" ; + hoz_V2 = mkV2 "hoz" ; + hub_V = mkV "hub" ; + hub_V2 = mkV2 "hub" ; + hubel_V = mkV "hubel" ; + hubel_V2 = mkV2 "hubel" ; + hubh_V = mkV "hubh" ; + hubh_V2 = mkV2 "hubh" ; + hubhan_V = mkV "hubhan" ; + hubhan_V2 = mkV2 "hubhan" ; + hudul_V = mkV "hudul" ; + hudul_V2 = mkV2 "hudul" ; + hudulan_V = mkV "hudulan" ; + hudulan_V2 = mkV2 "hudulan" ; + huh_V = mkV "huh" ; + huh_V2 = mkV2 "huh" ; + huhek_V = mkV "huhek" ; + huhek_V2 = mkV2 "huhek" ; + huhuluz_V = mkV "huhuluz" ; + huhuluz_V2 = mkV2 "huhuluz" ; + hul_V = mkV "hul" ; + hul_V2 = mkV2 "hul" ; + hulul_V = mkV "hulul" ; + hulul_V2 = mkV2 "hulul" ; + humush_V = mkV "humush" ; + humush_V2 = mkV2 "humush" ; + humushek_V = mkV "humushek" ; + humushek_V2 = mkV2 "humushek" ; + humushel_V = mkV "humushel" ; + humushel_V2 = mkV2 "humushel" ; + hung_V = mkV "hung" ; + hung_V2 = mkV2 "hung" ; + huq_V = mkV "huq" ; + huq_V2 = mkV2 "huq" ; + hush_V = mkV "hush" ; + hush_V2 = mkV2 "hush" ; + hushuz_V = mkV "hushuz" ; + hushuz_V2 = mkV2 "hushuz" ; + huzuk_V = mkV "huzuk" ; + huzuk_V2 = mkV2 "huzuk" ; + hwabhek_V = mkV "hwabhek" ; + hwabhek_V2 = mkV2 "hwabhek" ; + hwalal_V = mkV "hwalal" ; + hwalal_V2 = mkV2 "hwalal" ; + hwamuk_V = mkV "hwamuk" ; + hwamuk_V2 = mkV2 "hwamuk" ; + hwaphuluz_V = mkV "hwaphuluz" ; + hwaphuluz_V2 = mkV2 "hwaphuluz" ; + hwaqabal_V = mkV "hwaqabal" ; + hwaqabal_V2 = mkV2 "hwaqabal" ; + hwathuzel_V = mkV "hwathuzel" ; + hwathuzel_V2 = mkV2 "hwathuzel" ; + hwathuzis_V = mkV "hwathuzis" ; + hwathuzis_V2 = mkV2 "hwathuzis" ; + hweb_V = mkV "hweb" ; + hweb_V2 = mkV2 "hweb" ; + hwelel_V = mkV "hwelel" ; + hwelel_V2 = mkV2 "hwelel" ; + hwith_V = mkV "hwith" ; + hwith_V2 = mkV2 "hwith" ; + indla_V = mkV "indla" ; + indla_V2 = mkV2 "indla" ; + jabh_V = mkV "jabh" ; + jabh_V2 = mkV2 "jabh" ; + jabhis_V = mkV "jabhis" ; + jabhis_V2 = mkV2 "jabhis" ; + jabul_V = mkV "jabul" ; + jabul_V2 = mkV2 "jabul" ; + jabulel_V = mkV "jabulel" ; + jabulel_V2 = mkV2 "jabulel" ; + jabulis_V = mkV "jabulis" ; + jabulis_V2 = mkV2 "jabulis" ; + jabulisan_V = mkV "jabulisan" ; + jabulisan_V2 = mkV2 "jabulisan" ; + jah_V = mkV "jah" ; + jah_V2 = mkV2 "jah" ; + jahek_V = mkV "jahek" ; + jahek_V2 = mkV2 "jahek" ; + jahel_V = mkV "jahel" ; + jahel_V2 = mkV2 "jahel" ; + jaj_V = mkV "jaj" ; + jaj_V2 = mkV2 "jaj" ; + jak_V = mkV "jak" ; + jak_V2 = mkV2 "jak" ; + jakaj_V = mkV "jakaj" ; + jakaj_V2 = mkV2 "jakaj" ; + jam_V = mkV "jam" ; + jam_V2 = mkV2 "jam" ; + jamel_V = mkV "jamel" ; + jamel_V2 = mkV2 "jamel" ; + jamelan_V = mkV "jamelan" ; + jamelan_V2 = mkV2 "jamelan" ; + jeng_V = mkV "jeng" ; + jeng_V2 = mkV2 "jeng" ; + jeqez_V = mkV "jeqez" ; + jeqez_V2 = mkV2 "jeqez" ; + jez_V = mkV "jez" ; + jez_V2 = mkV2 "jez" ; + jezan_V = mkV "jezan" ; + jezan_V2 = mkV2 "jezan" ; + jezis_V = mkV "jezis" ; + jezis_V2 = mkV2 "jezis" ; + jib_V = mkV "jib" ; + jib_V2 = mkV2 "jib" ; + jijan_V = mkV "jijan" ; + jijan_V2 = mkV2 "jijan" ; + jijimez_V = mkV "jijimez" ; + jijimez_V2 = mkV2 "jijimez" ; + jik_V = mkV "jik" ; + jik_V2 = mkV2 "jik" ; + jikajik_V = mkV "jikajik" ; + jikajik_V2 = mkV2 "jikajik" ; + jikel_V = mkV "jikel" ; + jikel_V2 = mkV2 "jikel" ; + jikelel_V = mkV "jikelel" ; + jikelel_V2 = mkV2 "jikelel" ; + jikelez_V = mkV "jikelez" ; + jikelez_V2 = mkV2 "jikelez" ; + jikijel_V = mkV "jikijel" ; + jikijel_V2 = mkV2 "jikijel" ; + jikijelek_V = mkV "jikijelek" ; + jikijelek_V2 = mkV2 "jikijelek" ; + jikis_V = mkV "jikis" ; + jikis_V2 = mkV2 "jikis" ; + jikiz_V = mkV "jikiz" ; + jikiz_V2 = mkV2 "jikiz" ; + jikizis_V = mkV "jikizis" ; + jikizis_V2 = mkV2 "jikizis" ; + jing_V = mkV "jing" ; + jing_V2 = mkV2 "jing" ; + jivaz_V = mkV "jivaz" ; + jivaz_V2 = mkV2 "jivaz" ; + jiy_V = mkV "jiy" ; + jiy_V2 = mkV2 "jiy" ; + jiyez_V = mkV "jiyez" ; + jiyez_V2 = mkV2 "jiyez" ; + job_V = mkV "job" ; + job_V2 = mkV2 "job" ; + jobelel_V = mkV "jobelel" ; + jobelel_V2 = mkV2 "jobelel" ; + joj_V = mkV "joj" ; + joj_V2 = mkV2 "joj" ; + jok_V = mkV "jok" ; + jok_V2 = mkV2 "jok" ; + jokol_V = mkV "jokol" ; + jokol_V2 = mkV2 "jokol" ; + jolozel_V = mkV "jolozel" ; + jolozel_V2 = mkV2 "jolozel" ; + jomb_V = mkV "jomb" ; + jomb_V2 = mkV2 "jomb" ; + jong_V = mkV "jong" ; + jong_V2 = mkV2 "jong" ; + joqel_V = mkV "joqel" ; + joqel_V2 = mkV2 "joqel" ; + joyin_V = mkV "joyin" ; + joyin_V2 = mkV2 "joyin" ; + jub_V = mkV "jub" ; + jub_V2 = mkV2 "jub" ; + jubalal_V = mkV "jubalal" ; + jubalal_V2 = mkV2 "jubalal" ; + juban_V = mkV "juban" ; + juban_V2 = mkV2 "juban" ; + jubek_V = mkV "jubek" ; + jubek_V2 = mkV2 "jubek" ; + jubel_V = mkV "jubel" ; + jubel_V2 = mkV2 "jubel" ; + jukujel_V = mkV "jukujel" ; + jukujel_V2 = mkV2 "jukujel" ; + jul_V = mkV "jul" ; + jul_V2 = mkV2 "jul" ; + julis_V = mkV "julis" ; + julis_V2 = mkV2 "julis" ; + juluk_V = mkV "juluk" ; + juluk_V2 = mkV2 "juluk" ; + julukel_V = mkV "julukel" ; + julukel_V2 = mkV2 "julukel" ; + julukis_V = mkV "julukis" ; + julukis_V2 = mkV2 "julukis" ; + jum_V = mkV "jum" ; + jum_V2 = mkV2 "jum" ; + jumek_V = mkV "jumek" ; + jumek_V2 = mkV2 "jumek" ; + juq_V = mkV "juq" ; + juq_V2 = mkV2 "juq" ; + juquk_V = mkV "juquk" ; + juquk_V2 = mkV2 "juquk" ; + juzis_V = mkV "juzis" ; + juzis_V2 = mkV2 "juzis" ; + jwaphun_V = mkV "jwaphun" ; + jwaphun_V2 = mkV2 "jwaphun" ; + jwayel_V = mkV "jwayel" ; + jwayel_V2 = mkV2 "jwayel" ; + jwayelan_V = mkV "jwayelan" ; + jwayelan_V2 = mkV2 "jwayelan" ; + jwayelek_V = mkV "jwayelek" ; + jwayelek_V2 = mkV2 "jwayelek" ; + jwayez_V = mkV "jwayez" ; + jwayez_V2 = mkV2 "jwayez" ; + kab_V = mkV "kab" ; + kab_V2 = mkV2 "kab" ; + kaban_V = mkV "kaban" ; + kaban_V2 = mkV2 "kaban" ; + kabek_V = mkV "kabek" ; + kabek_V2 = mkV2 "kabek" ; + kabhanan_V = mkV "kabhanan" ; + kabhanan_V2 = mkV2 "kabhanan" ; + kabhek_V = mkV "kabhek" ; + kabhek_V2 = mkV2 "kabhek" ; + kak_V = mkV "kak" ; + kak_V2 = mkV2 "kak" ; + kal_V = mkV "kal" ; + kal_V2 = mkV2 "kal" ; + kalel_V = mkV "kalel" ; + kalel_V2 = mkV2 "kalel" ; + kam_V = mkV "kam" ; + kam_V2 = mkV2 "kam" ; + kamel_V = mkV "kamel" ; + kamel_V2 = mkV2 "kamel" ; + kamelek_V = mkV "kamelek" ; + kamelek_V2 = mkV2 "kamelek" ; + kanis_V = mkV "kanis" ; + kanis_V2 = mkV2 "kanis" ; + kap_V = mkV "kap" ; + kap_V2 = mkV2 "kap" ; + kapak_V = mkV "kapak" ; + kapak_V2 = mkV2 "kapak" ; + kekel_V = mkV "kekel" ; + kekel_V2 = mkV2 "kekel" ; + kekelel_V = mkV "kekelel" ; + kekelel_V2 = mkV2 "kekelel" ; + kel_V = mkV "kel" ; + kel_V2 = mkV2 "kel" ; + kelan_V = mkV "kelan" ; + kelan_V2 = mkV2 "kelan" ; + kelek_V = mkV "kelek" ; + kelek_V2 = mkV2 "kelek" ; + kelel_V = mkV "kelel" ; + kelel_V2 = mkV2 "kelel" ; + ketshez_V = mkV "ketshez" ; + ketshez_V2 = mkV2 "ketshez" ; + ketul_V = mkV "ketul" ; + ketul_V2 = mkV2 "ketul" ; + kh_V = mkV "kh" ; + kh_V2 = mkV2 "kh" ; + khab_V = mkV "khab" ; + khab_V2 = mkV2 "khab" ; + khabel_V = mkV "khabel" ; + khabel_V2 = mkV2 "khabel" ; + khabuzel_V = mkV "khabuzel" ; + khabuzel_V2 = mkV2 "khabuzel" ; + khac_V = mkV "khac" ; + khac_V2 = mkV2 "khac" ; + khaful_V = mkV "khaful" ; + khaful_V2 = mkV2 "khaful" ; + khafulel_V = mkV "khafulel" ; + khafulel_V2 = mkV2 "khafulel" ; + khahl_V = mkV "khahl" ; + khahl_V2 = mkV2 "khahl" ; + khahlel_V = mkV "khahlel" ; + khahlel_V2 = mkV2 "khahlel" ; + khahlelek_V = mkV "khahlelek" ; + khahlelek_V2 = mkV2 "khahlelek" ; + khakh_V = mkV "khakh" ; + khakh_V2 = mkV2 "khakh" ; + khakhabis_V = mkV "khakhabis" ; + khakhabis_V2 = mkV2 "khakhabis" ; + khakhabisel_V = mkV "khakhabisel" ; + khakhabisel_V2 = mkV2 "khakhabisel" ; + khakhan_V = mkV "khakhan" ; + khakhan_V2 = mkV2 "khakhan" ; + khal_V = mkV "khal" ; + khal_V2 = mkV2 "khal" ; + khalakathel_V = mkV "khalakathel" ; + khalakathel_V2 = mkV2 "khalakathel" ; + khalek_V = mkV "khalek" ; + khalek_V2 = mkV2 "khalek" ; + khalel_V = mkV "khalel" ; + khalel_V2 = mkV2 "khalel" ; + khalelis_V = mkV "khalelis" ; + khalelis_V2 = mkV2 "khalelis" ; + khalim_V = mkV "khalim" ; + khalim_V2 = mkV2 "khalim" ; + khaliph_V = mkV "khaliph" ; + khaliph_V2 = mkV2 "khaliph" ; + khaliphel_V = mkV "khaliphel" ; + khaliphel_V2 = mkV2 "khaliphel" ; + khaliphis_V = mkV "khaliphis" ; + khaliphis_V2 = mkV2 "khaliphis" ; + khalis_V = mkV "khalis" ; + khalis_V2 = mkV2 "khalis" ; + kham_V = mkV "kham" ; + kham_V2 = mkV2 "kham" ; + khamelel_V = mkV "khamelel" ; + khamelel_V2 = mkV2 "khamelel" ; + khamis_V = mkV "khamis" ; + khamis_V2 = mkV2 "khamis" ; + khan_V = mkV "khan" ; + khan_V2 = mkV2 "khan" ; + khand_V = mkV "khand" ; + khand_V2 = mkV2 "khand" ; + khandan_V = mkV "khandan" ; + khandan_V2 = mkV2 "khandan" ; + khandanis_V = mkV "khandanis" ; + khandanis_V2 = mkV2 "khandanis" ; + khandel_V = mkV "khandel" ; + khandel_V2 = mkV2 "khandel" ; + khandl_V = mkV "khandl" ; + khandl_V2 = mkV2 "khandl" ; + khandlek_V = mkV "khandlek" ; + khandlek_V2 = mkV2 "khandlek" ; + khandlel_V = mkV "khandlel" ; + khandlel_V2 = mkV2 "khandlel" ; + khang_V = mkV "khang" ; + khang_V2 = mkV2 "khang" ; + khangel_V = mkV "khangel" ; + khangel_V2 = mkV2 "khangel" ; + khangelan_V = mkV "khangelan" ; + khangelan_V2 = mkV2 "khangelan" ; + khangez_V = mkV "khangez" ; + khangez_V2 = mkV2 "khangez" ; + khangis_V = mkV "khangis" ; + khangis_V2 = mkV2 "khangis" ; + khankas_V = mkV "khankas" ; + khankas_V2 = mkV2 "khankas" ; + khankasel_V = mkV "khankasel" ; + khankasel_V2 = mkV2 "khankasel" ; + khanulel_V = mkV "khanulel" ; + khanulel_V2 = mkV2 "khanulel" ; + khany_V = mkV "khany" ; + khany_V2 = mkV2 "khany" ; + khanyel_V = mkV "khanyel" ; + khanyel_V2 = mkV2 "khanyel" ; + khanyis_V = mkV "khanyis" ; + khanyis_V2 = mkV2 "khanyis" ; + khanyisel_V = mkV "khanyisel" ; + khanyisel_V2 = mkV2 "khanyisel" ; + khaph_V = mkV "khaph" ; + khaph_V2 = mkV2 "khaph" ; + khaphez_V = mkV "khaphez" ; + khaphez_V2 = mkV2 "khaphez" ; + khaphezan_V = mkV "khaphezan" ; + khaphezan_V2 = mkV2 "khaphezan" ; + khas_V = mkV "khas" ; + khas_V2 = mkV2 "khas" ; + khasel_V = mkV "khasel" ; + khasel_V2 = mkV2 "khasel" ; + khath_V = mkV "khath" ; + khath_V2 = mkV2 "khath" ; + khathal_V = mkV "khathal" ; + khathal_V2 = mkV2 "khathal" ; + khathalek_V = mkV "khathalek" ; + khathalek_V2 = mkV2 "khathalek" ; + khathalel_V = mkV "khathalel" ; + khathalel_V2 = mkV2 "khathalel" ; + khathaz_V = mkV "khathaz" ; + khathaz_V2 = mkV2 "khathaz" ; + khathazek_V = mkV "khathazek" ; + khathazek_V2 = mkV2 "khathazek" ; + khathel_V = mkV "khathel" ; + khathel_V2 = mkV2 "khathel" ; + khawul_V = mkV "khawul" ; + khawul_V2 = mkV2 "khawul" ; + khazimul_V = mkV "khazimul" ; + khazimul_V2 = mkV2 "khazimul" ; + khedamis_V = mkV "khedamis" ; + khedamis_V2 = mkV2 "khedamis" ; + khefuzel_V = mkV "khefuzel" ; + khefuzel_V2 = mkV2 "khefuzel" ; + khehl_V = mkV "khehl" ; + khehl_V2 = mkV2 "khehl" ; + khehlek_V = mkV "khehlek" ; + khehlek_V2 = mkV2 "khehlek" ; + khehlezis_V = mkV "khehlezis" ; + khehlezis_V2 = mkV2 "khehlezis" ; + khek_V = mkV "khek" ; + khek_V2 = mkV2 "khek" ; + khel_V = mkV "khel" ; + khel_V2 = mkV2 "khel" ; + khelan_V = mkV "khelan" ; + khelan_V2 = mkV2 "khelan" ; + khelek_V = mkV "khelek" ; + khelek_V2 = mkV2 "khelek" ; + khelel_V = mkV "khelel" ; + khelel_V2 = mkV2 "khelel" ; + khemezelis_V = mkV "khemezelis" ; + khemezelis_V2 = mkV2 "khemezelis" ; + khencez_V = mkV "khencez" ; + khencez_V2 = mkV2 "khencez" ; + khendlel_V = mkV "khendlel" ; + khendlel_V2 = mkV2 "khendlel" ; + khes_V = mkV "khes" ; + khes_V2 = mkV2 "khes" ; + kheth_V = mkV "kheth" ; + kheth_V2 = mkV2 "kheth" ; + khethek_V = mkV "khethek" ; + khethek_V2 = mkV2 "khethek" ; + khethel_V = mkV "khethel" ; + khethel_V2 = mkV2 "khethel" ; + khex_V = mkV "khex" ; + khex_V2 = mkV2 "khex" ; + khexel_V = mkV "khexel" ; + khexel_V2 = mkV2 "khexel" ; + khihl_V = mkV "khihl" ; + khihl_V2 = mkV2 "khihl" ; + khihlel_V = mkV "khihlel" ; + khihlel_V2 = mkV2 "khihlel" ; + khihlik_V = mkV "khihlik" ; + khihlik_V2 = mkV2 "khihlik" ; + khihliz_V = mkV "khihliz" ; + khihliz_V2 = mkV2 "khihliz" ; + khilikithel_V = mkV "khilikithel" ; + khilikithel_V2 = mkV2 "khilikithel" ; + khind_V = mkV "khind" ; + khind_V2 = mkV2 "khind" ; + khinindel_V = mkV "khinindel" ; + khinindel_V2 = mkV2 "khinindel" ; + khinyabezek_V = mkV "khinyabezek" ; + khinyabezek_V2 = mkV2 "khinyabezek" ; + khiph_V = mkV "khiph" ; + khiph_V2 = mkV2 "khiph" ; + khiphel_V = mkV "khiphel" ; + khiphel_V2 = mkV2 "khiphel" ; + khiphis_V = mkV "khiphis" ; + khiphis_V2 = mkV2 "khiphis" ; + khiqiz_V = mkV "khiqiz" ; + khiqiz_V2 = mkV2 "khiqiz" ; + khiqizel_V = mkV "khiqizel" ; + khiqizel_V2 = mkV2 "khiqizel" ; + khithizel_V = mkV "khithizel" ; + khithizel_V2 = mkV2 "khithizel" ; + khiy_V = mkV "khiy" ; + khiy_V2 = mkV2 "khiy" ; + khiz_V = mkV "khiz" ; + khiz_V2 = mkV2 "khiz" ; + khohlakal_V = mkV "khohlakal" ; + khohlakal_V2 = mkV2 "khohlakal" ; + khohlakalek_V = mkV "khohlakalek" ; + khohlakalek_V2 = mkV2 "khohlakalek" ; + khohlan_V = mkV "khohlan" ; + khohlan_V2 = mkV2 "khohlan" ; + khohlek_V = mkV "khohlek" ; + khohlek_V2 = mkV2 "khohlek" ; + khohlis_V = mkV "khohlis" ; + khohlis_V2 = mkV2 "khohlis" ; + khohlisan_V = mkV "khohlisan" ; + khohlisan_V2 = mkV2 "khohlisan" ; + khohlisek_V = mkV "khohlisek" ; + khohlisek_V2 = mkV2 "khohlisek" ; + khohlisel_V = mkV "khohlisel" ; + khohlisel_V2 = mkV2 "khohlisel" ; + khokh_V = mkV "khokh" ; + khokh_V2 = mkV2 "khokh" ; + khokhel_V = mkV "khokhel" ; + khokhel_V2 = mkV2 "khokhel" ; + khokhis_V = mkV "khokhis" ; + khokhis_V2 = mkV2 "khokhis" ; + khokhisel_V = mkV "khokhisel" ; + khokhisel_V2 = mkV2 "khokhisel" ; + khokhob_V = mkV "khokhob" ; + khokhob_V2 = mkV2 "khokhob" ; + khokhobel_V = mkV "khokhobel" ; + khokhobel_V2 = mkV2 "khokhobel" ; + kholek_V = mkV "kholek" ; + kholek_V2 = mkV2 "kholek" ; + kholis_V = mkV "kholis" ; + kholis_V2 = mkV2 "kholis" ; + kholisek_V = mkV "kholisek" ; + kholisek_V2 = mkV2 "kholisek" ; + -- kholw_V = mkV "kholw" ; + -- kholw_V2 = mkV2 "kholw" ; + khomb_V = mkV "khomb" ; + khomb_V2 = mkV2 "khomb" ; + khomban_V = mkV "khomban" ; + khomban_V2 = mkV2 "khomban" ; + khombel_V = mkV "khombel" ; + khombel_V2 = mkV2 "khombel" ; + khombis_V = mkV "khombis" ; + khombis_V2 = mkV2 "khombis" ; + khombisan_V = mkV "khombisan" ; + khombisan_V2 = mkV2 "khombisan" ; + khombisis_V = mkV "khombisis" ; + khombisis_V2 = mkV2 "khombisis" ; + khonel_V = mkV "khonel" ; + khonel_V2 = mkV2 "khonel" ; + khong_V = mkV "khong" ; + khong_V2 = mkV2 "khong" ; + khonkel_V = mkV "khonkel" ; + khonkel_V2 = mkV2 "khonkel" ; + khonkobal_V = mkV "khonkobal" ; + khonkobal_V2 = mkV2 "khonkobal" ; + khonkoth_V = mkV "khonkoth" ; + khonkoth_V2 = mkV2 "khonkoth" ; + khonkothis_V = mkV "khonkothis" ; + khonkothis_V2 = mkV2 "khonkothis" ; + khonon_V = mkV "khonon" ; + khonon_V2 = mkV2 "khonon" ; + khonond_V = mkV "khonond" ; + khonond_V2 = mkV2 "khonond" ; + khony_V = mkV "khony" ; + khony_V2 = mkV2 "khony" ; + khonyan_V = mkV "khonyan" ; + khonyan_V2 = mkV2 "khonyan" ; + khonz_V = mkV "khonz" ; + khonz_V2 = mkV2 "khonz" ; + khonzan_V = mkV "khonzan" ; + khonzan_V2 = mkV2 "khonzan" ; + khonzel_V = mkV "khonzel" ; + khonzel_V2 = mkV2 "khonzel" ; + khonzisel_V = mkV "khonzisel" ; + khonzisel_V2 = mkV2 "khonzisel" ; + khophoz_V = mkV "khophoz" ; + khophoz_V2 = mkV2 "khophoz" ; + khophozel_V = mkV "khophozel" ; + khophozel_V2 = mkV2 "khophozel" ; + khosel_V = mkV "khosel" ; + khosel_V2 = mkV2 "khosel" ; + khoselek_V = mkV "khoselek" ; + khoselek_V2 = mkV2 "khoselek" ; + khoselis_V = mkV "khoselis" ; + khoselis_V2 = mkV2 "khoselis" ; + khoth_V = mkV "khoth" ; + khoth_V2 = mkV2 "khoth" ; + khotham_V = mkV "khotham" ; + khotham_V2 = mkV2 "khotham" ; + khothamel_V = mkV "khothamel" ; + khothamel_V2 = mkV2 "khothamel" ; + khothamis_V = mkV "khothamis" ; + khothamis_V2 = mkV2 "khothamis" ; + khothis_V = mkV "khothis" ; + khothis_V2 = mkV2 "khothis" ; + khothisis_V = mkV "khothisis" ; + khothisis_V2 = mkV2 "khothisis" ; + khothuluz_V = mkV "khothuluz" ; + khothuluz_V2 = mkV2 "khothuluz" ; + khov_V = mkV "khov" ; + khov_V2 = mkV2 "khov" ; + khox_V = mkV "khox" ; + khox_V2 = mkV2 "khox" ; + khoxan_V = mkV "khoxan" ; + khoxan_V2 = mkV2 "khoxan" ; + khoz_V = mkV "khoz" ; + khoz_V2 = mkV2 "khoz" ; + khub_V = mkV "khub" ; + khub_V2 = mkV2 "khub" ; + khubaz_V = mkV "khubaz" ; + khubaz_V2 = mkV2 "khubaz" ; + khubazek_V = mkV "khubazek" ; + khubazek_V2 = mkV2 "khubazek" ; + khubek_V = mkV "khubek" ; + khubek_V2 = mkV2 "khubek" ; + khubekis_V = mkV "khubekis" ; + khubekis_V2 = mkV2 "khubekis" ; + khuculul_V = mkV "khuculul" ; + khuculul_V2 = mkV2 "khuculul" ; + khuhl_V = mkV "khuhl" ; + khuhl_V2 = mkV2 "khuhl" ; + khuhlan_V = mkV "khuhlan" ; + khuhlan_V2 = mkV2 "khuhlan" ; + khukhul_V = mkV "khukhul" ; + khukhul_V2 = mkV2 "khukhul" ; + khukhumal_V = mkV "khukhumal" ; + khukhumal_V2 = mkV2 "khukhumal" ; + khukhumalis_V = mkV "khukhumalis" ; + khukhumalis_V2 = mkV2 "khukhumalis" ; + khukhumez_V = mkV "khukhumez" ; + khukhumez_V2 = mkV2 "khukhumez" ; + khul_V = mkV "khul" ; + khul_V2 = mkV2 "khul" ; + khulakhul_V = mkV "khulakhul" ; + khulakhul_V2 = mkV2 "khulakhul" ; + khulek_V = mkV "khulek" ; + khulek_V2 = mkV2 "khulek" ; + khulekel_V = mkV "khulekel" ; + khulekel_V2 = mkV2 "khulekel" ; + khulekis_V = mkV "khulekis" ; + khulekis_V2 = mkV2 "khulekis" ; + khulel_V = mkV "khulel" ; + khulel_V2 = mkV2 "khulel" ; + khulis_V = mkV "khulis" ; + khulis_V2 = mkV2 "khulis" ; + khulisek_V = mkV "khulisek" ; + khulisek_V2 = mkV2 "khulisek" ; + khulisel_V = mkV "khulisel" ; + khulisel_V2 = mkV2 "khulisel" ; + khulukhulum_V = mkV "khulukhulum" ; + khulukhulum_V2 = mkV2 "khulukhulum" ; + khulul_V = mkV "khulul" ; + khulul_V2 = mkV2 "khulul" ; + khululek_V = mkV "khululek" ; + khululek_V2 = mkV2 "khululek" ; + khululel_V = mkV "khululel" ; + khululel_V2 = mkV2 "khululel" ; + khulum_V = mkV "khulum" ; + khulum_V2 = mkV2 "khulum" ; + khulumel_V = mkV "khulumel" ; + khulumel_V2 = mkV2 "khulumel" ; + khulumis_V = mkV "khulumis" ; + khulumis_V2 = mkV2 "khulumis" ; + khulumisan_V = mkV "khulumisan" ; + khulumisan_V2 = mkV2 "khulumisan" ; + khuluphal_V = mkV "khuluphal" ; + khuluphal_V2 = mkV2 "khuluphal" ; + khumbul_V = mkV "khumbul" ; + khumbul_V2 = mkV2 "khumbul" ; + khumbulek_V = mkV "khumbulek" ; + khumbulek_V2 = mkV2 "khumbulek" ; + khumbuz_V = mkV "khumbuz" ; + khumbuz_V2 = mkV2 "khumbuz" ; + khumbuzan_V = mkV "khumbuzan" ; + khumbuzan_V2 = mkV2 "khumbuzan" ; + khumuk_V = mkV "khumuk" ; + khumuk_V2 = mkV2 "khumuk" ; + khumukan_V = mkV "khumukan" ; + khumukan_V2 = mkV2 "khumukan" ; + khumul_V = mkV "khumul" ; + khumul_V2 = mkV2 "khumul" ; + khumulel_V = mkV "khumulel" ; + khumulel_V2 = mkV2 "khumulel" ; + khumulis_V = mkV "khumulis" ; + khumulis_V2 = mkV2 "khumulis" ; + khumuzek_V = mkV "khumuzek" ; + khumuzek_V2 = mkV2 "khumuzek" ; + khun_V = mkV "khun" ; + khun_V2 = mkV2 "khun" ; + khung_V = mkV "khung" ; + khung_V2 = mkV2 "khung" ; + khungath_V = mkV "khungath" ; + khungath_V2 = mkV2 "khungath" ; + khungathek_V = mkV "khungathek" ; + khungathek_V2 = mkV2 "khungathek" ; + khunkul_V = mkV "khunkul" ; + khunkul_V2 = mkV2 "khunkul" ; + khunt_V = mkV "khunt" ; + khunt_V2 = mkV2 "khunt" ; + khuphuk_V = mkV "khuphuk" ; + khuphuk_V2 = mkV2 "khuphuk" ; + khuphukel_V = mkV "khuphukel" ; + khuphukel_V2 = mkV2 "khuphukel" ; + khuphul_V = mkV "khuphul" ; + khuphul_V2 = mkV2 "khuphul" ; + khuphulel_V = mkV "khuphulel" ; + khuphulel_V2 = mkV2 "khuphulel" ; + khushuz_V = mkV "khushuz" ; + khushuz_V2 = mkV2 "khushuz" ; + khuth_V = mkV "khuth" ; + khuth_V2 = mkV2 "khuth" ; + khuthal_V = mkV "khuthal" ; + khuthal_V2 = mkV2 "khuthal" ; + khuthalel_V = mkV "khuthalel" ; + khuthalel_V2 = mkV2 "khuthalel" ; + khuthaz_V = mkV "khuthaz" ; + khuthaz_V2 = mkV2 "khuthaz" ; + khuthazek_V = mkV "khuthazek" ; + khuthazek_V2 = mkV2 "khuthazek" ; + khuthel_V = mkV "khuthel" ; + khuthel_V2 = mkV2 "khuthel" ; + khuthuz_V = mkV "khuthuz" ; + khuthuz_V2 = mkV2 "khuthuz" ; + khuxuzek_V = mkV "khuxuzek" ; + khuxuzek_V2 = mkV2 "khuxuzek" ; + khuz_V = mkV "khuz" ; + khuz_V2 = mkV2 "khuz" ; + khuzel_V = mkV "khuzel" ; + khuzel_V2 = mkV2 "khuzel" ; + khwabanisel_V = mkV "khwabanisel" ; + khwabanisel_V2 = mkV2 "khwabanisel" ; + khwahl_V = mkV "khwahl" ; + khwahl_V2 = mkV2 "khwahl" ; + khwanyan_V = mkV "khwanyan" ; + khwanyan_V2 = mkV2 "khwanyan" ; + khwashaz_V = mkV "khwashaz" ; + khwashaz_V2 = mkV2 "khwashaz" ; + khwashazel_V = mkV "khwashazel" ; + khwashazel_V2 = mkV2 "khwashazel" ; + khwathaz_V = mkV "khwathaz" ; + khwathaz_V2 = mkV2 "khwathaz" ; + khwebezan_V = mkV "khwebezan" ; + khwebezan_V2 = mkV2 "khwebezan" ; + khwebul_V = mkV "khwebul" ; + khwebul_V2 = mkV2 "khwebul" ; + khwec_V = mkV "khwec" ; + khwec_V2 = mkV2 "khwec" ; + khwecel_V = mkV "khwecel" ; + khwecel_V2 = mkV2 "khwecel" ; + khwehlel_V = mkV "khwehlel" ; + khwehlel_V2 = mkV2 "khwehlel" ; + khwehlelis_V = mkV "khwehlelis" ; + khwehlelis_V2 = mkV2 "khwehlelis" ; + khwel_V = mkV "khwel" ; + khwel_V2 = mkV2 "khwel" ; + khwelek_V = mkV "khwelek" ; + khwelek_V2 = mkV2 "khwelek" ; + khwelel_V = mkV "khwelel" ; + khwelel_V2 = mkV2 "khwelel" ; + khwelez_V = mkV "khwelez" ; + khwelez_V2 = mkV2 "khwelez" ; + khwemb_V = mkV "khwemb" ; + khwemb_V2 = mkV2 "khwemb" ; + khwesh_V = mkV "khwesh" ; + khwesh_V2 = mkV2 "khwesh" ; + khwez_V = mkV "khwez" ; + khwez_V2 = mkV2 "khwez" ; + khwezel_V = mkV "khwezel" ; + khwezel_V2 = mkV2 "khwezel" ; + khwibiz_V = mkV "khwibiz" ; + khwibiz_V2 = mkV2 "khwibiz" ; + khwif_V = mkV "khwif" ; + khwif_V2 = mkV2 "khwif" ; + khwishiz_V = mkV "khwishiz" ; + khwishiz_V2 = mkV2 "khwishiz" ; + khwix_V = mkV "khwix" ; + khwix_V2 = mkV2 "khwix" ; + kikilig_V = mkV "kikilig" ; + kikilig_V2 = mkV2 "kikilig" ; + kikiliz_V = mkV "kikiliz" ; + kikiliz_V2 = mkV2 "kikiliz" ; + kikiz_V = mkV "kikiz" ; + kikiz_V2 = mkV2 "kikiz" ; + kikizel_V = mkV "kikizel" ; + kikizel_V2 = mkV2 "kikizel" ; + kipit_V = mkV "kipit" ; + kipit_V2 = mkV2 "kipit" ; + kitaz_V = mkV "kitaz" ; + kitaz_V2 = mkV2 "kitaz" ; + kitazek_V = mkV "kitazek" ; + kitazek_V2 = mkV2 "kitazek" ; + klab_V = mkV "klab" ; + klab_V2 = mkV2 "klab" ; + klabalas_V = mkV "klabalas" ; + klabalas_V2 = mkV2 "klabalas" ; + klabel_V = mkV "klabel" ; + klabel_V2 = mkV2 "klabel" ; + klabh_V = mkV "klabh" ; + klabh_V2 = mkV2 "klabh" ; + kladulis_V = mkV "kladulis" ; + kladulis_V2 = mkV2 "kladulis" ; + klas_V = mkV "klas" ; + klas_V2 = mkV2 "klas" ; + klebhul_V = mkV "klebhul" ; + klebhul_V2 = mkV2 "klebhul" ; + klekl_V = mkV "klekl" ; + klekl_V2 = mkV2 "klekl" ; + klel_V = mkV "klel" ; + klel_V2 = mkV2 "klel" ; + kliny_V = mkV "kliny" ; + kliny_V2 = mkV2 "kliny" ; + klolod_V = mkV "klolod" ; + klolod_V2 = mkV2 "klolod" ; + klolodel_V = mkV "klolodel" ; + klolodel_V2 = mkV2 "klolodel" ; + kloz_V = mkV "kloz" ; + kloz_V2 = mkV2 "kloz" ; + kluny_V = mkV "kluny" ; + kluny_V2 = mkV2 "kluny" ; + klwebh_V = mkV "klwebh" ; + klwebh_V2 = mkV2 "klwebh" ; + klwebhel_V = mkV "klwebhel" ; + klwebhel_V2 = mkV2 "klwebhel" ; + klwel_V = mkV "klwel" ; + klwel_V2 = mkV2 "klwel" ; + kok_V = mkV "kok" ; + kok_V2 = mkV2 "kok" ; + kokel_V = mkV "kokel" ; + kokel_V2 = mkV2 "kokel" ; + kolobh_V = mkV "kolobh" ; + kolobh_V2 = mkV2 "kolobh" ; + kopel_V = mkV "kopel" ; + kopel_V2 = mkV2 "kopel" ; + kotiz_V = mkV "kotiz" ; + kotiz_V2 = mkV2 "kotiz" ; + kotoz_V = mkV "kotoz" ; + kotoz_V2 = mkV2 "kotoz" ; + kukufanis_V = mkV "kukufanis" ; + kukufanis_V2 = mkV2 "kukufanis" ; + kukuzekel_V = mkV "kukuzekel" ; + kukuzekel_V2 = mkV2 "kukuzekel" ; + kwapun_V = mkV "kwapun" ; + kwapun_V2 = mkV2 "kwapun" ; + kweletel_V = mkV "kweletel" ; + kweletel_V2 = mkV2 "kweletel" ; + kweletis_V = mkV "kweletis" ; + kweletis_V2 = mkV2 "kweletis" ; + kweq_V = mkV "kweq" ; + kweq_V2 = mkV2 "kweq" ; + kweqel_V = mkV "kweqel" ; + kweqel_V2 = mkV2 "kweqel" ; + kweqis_V = mkV "kweqis" ; + kweqis_V2 = mkV2 "kweqis" ; + kwitiz_V = mkV "kwitiz" ; + kwitiz_V2 = mkV2 "kwitiz" ; + labalab_V = mkV "labalab" ; + labalab_V2 = mkV2 "labalab" ; + labalabel_V = mkV "labalabel" ; + labalabel_V2 = mkV2 "labalabel" ; + labathek_V = mkV "labathek" ; + labathek_V2 = mkV2 "labathek" ; + lahl_V = mkV "lahl" ; + lahl_V2 = mkV2 "lahl" ; + lahlan_V = mkV "lahlan" ; + lahlan_V2 = mkV2 "lahlan" ; + lahlek_V = mkV "lahlek" ; + lahlek_V2 = mkV2 "lahlek" ; + lahlekel_V = mkV "lahlekel" ; + lahlekel_V2 = mkV2 "lahlekel" ; + lahlekis_V = mkV "lahlekis" ; + lahlekis_V2 = mkV2 "lahlekis" ; + lahlekisel_V = mkV "lahlekisel" ; + lahlekisel_V2 = mkV2 "lahlekisel" ; + lahlel_V = mkV "lahlel" ; + lahlel_V2 = mkV2 "lahlel" ; + lal_V = mkV "lal" ; + lal_V2 = mkV2 "lal" ; + lalan_V = mkV "lalan" ; + lalan_V2 = mkV2 "lalan" ; + lalel_V = mkV "lalel" ; + lalel_V2 = mkV2 "lalel" ; + lalelis_V = mkV "lalelis" ; + lalelis_V2 = mkV2 "lalelis" ; + lalelisis_V = mkV "lalelisis" ; + lalelisis_V2 = mkV2 "lalelisis" ; + lalis_V = mkV "lalis" ; + lalis_V2 = mkV2 "lalis" ; + lamb_V = mkV "lamb" ; + lamb_V2 = mkV2 "lamb" ; + lambath_V = mkV "lambath" ; + lambath_V2 = mkV2 "lambath" ; + lambek_V = mkV "lambek" ; + lambek_V2 = mkV2 "lambek" ; + lambel_V = mkV "lambel" ; + lambel_V2 = mkV2 "lambel" ; + lambis_V = mkV "lambis" ; + lambis_V2 = mkV2 "lambis" ; + lambiz_V = mkV "lambiz" ; + lambiz_V2 = mkV2 "lambiz" ; + lamul_V = mkV "lamul" ; + lamul_V2 = mkV2 "lamul" ; + lamulel_V = mkV "lamulel" ; + lamulel_V2 = mkV2 "lamulel" ; + land_V = mkV "land" ; + land_V2 = mkV2 "land" ; + landaland_V = mkV "landaland" ; + landaland_V2 = mkV2 "landaland" ; + landel_V = mkV "landel" ; + landel_V2 = mkV2 "landel" ; + landelan_V = mkV "landelan" ; + landelan_V2 = mkV2 "landelan" ; + landelandel_V = mkV "landelandel" ; + landelandel_V2 = mkV2 "landelandel" ; + landelel_V = mkV "landelel" ; + landelel_V2 = mkV2 "landelel" ; + landelis_V = mkV "landelis" ; + landelis_V2 = mkV2 "landelis" ; + landelisis_V = mkV "landelisis" ; + landelisis_V2 = mkV2 "landelisis" ; + landis_V = mkV "landis" ; + landis_V2 = mkV2 "landis" ; + landul_V = mkV "landul" ; + landul_V2 = mkV2 "landul" ; + landulel_V = mkV "landulel" ; + landulel_V2 = mkV2 "landulel" ; + langazel_V = mkV "langazel" ; + langazel_V2 = mkV2 "langazel" ; + langazelel_V = mkV "langazelel" ; + langazelel_V2 = mkV2 "langazelel" ; + languk_V = mkV "languk" ; + languk_V2 = mkV2 "languk" ; + lanq_V = mkV "lanq" ; + lanq_V2 = mkV2 "lanq" ; + lawul_V = mkV "lawul" ; + lawul_V2 = mkV2 "lawul" ; + lay_V = mkV "lay" ; + lay_V2 = mkV2 "lay" ; + layek_V = mkV "layek" ; + layek_V2 = mkV2 "layek" ; + layel_V = mkV "layel" ; + layel_V2 = mkV2 "layel" ; + layez_V = mkV "layez" ; + layez_V2 = mkV2 "layez" ; + layezel_V = mkV "layezel" ; + layezel_V2 = mkV2 "layezel" ; + layish_V = mkV "layish" ; + layish_V2 = mkV2 "layish" ; + layishis_V = mkV "layishis" ; + layishis_V2 = mkV2 "layishis" ; + layisis_V = mkV "layisis" ; + layisis_V2 = mkV2 "layisis" ; + laz_V = mkV "laz" ; + laz_V2 = mkV2 "laz" ; + lazis_V = mkV "lazis" ; + lazis_V2 = mkV2 "lazis" ; + leb_V = mkV "leb" ; + leb_V2 = mkV2 "leb" ; + lekelel_V = mkV "lekelel" ; + lekelel_V2 = mkV2 "lekelel" ; + lekelelan_V = mkV "lekelelan" ; + lekelelan_V2 = mkV2 "lekelelan" ; + leles_V = mkV "leles" ; + leles_V2 = mkV2 "leles" ; + lemb_V = mkV "lemb" ; + lemb_V2 = mkV2 "lemb" ; + lembulul_V = mkV "lembulul" ; + lembulul_V2 = mkV2 "lembulul" ; + lendlel_V = mkV "lendlel" ; + lendlel_V2 = mkV2 "lendlel" ; + leng_V = mkV "leng" ; + leng_V2 = mkV2 "leng" ; + lengan_V = mkV "lengan" ; + lengan_V2 = mkV2 "lengan" ; + lengel_V = mkV "lengel" ; + lengel_V2 = mkV2 "lengel" ; + lengis_V = mkV "lengis" ; + lengis_V2 = mkV2 "lengis" ; + lephukel_V = mkV "lephukel" ; + lephukel_V2 = mkV2 "lephukel" ; + lephul_V = mkV "lephul" ; + lephul_V2 = mkV2 "lephul" ; + leth_V = mkV "leth" ; + leth_V2 = mkV2 "leth" ; + lethel_V = mkV "lethel" ; + lethel_V2 = mkV2 "lethel" ; + levuz_V = mkV "levuz" ; + levuz_V2 = mkV2 "levuz" ; + lez_V = mkV "lez" ; + lez_V2 = mkV2 "lez" ; + lezek_V = mkV "lezek" ; + lezek_V2 = mkV2 "lezek" ; + libal_V = mkV "libal" ; + libal_V2 = mkV2 "libal" ; + libalek_V = mkV "libalek" ; + libalek_V2 = mkV2 "libalek" ; + libalekel_V = mkV "libalekel" ; + libalekel_V2 = mkV2 "libalekel" ; + libazis_V = mkV "libazis" ; + libazis_V2 = mkV2 "libazis" ; + libazisek_V = mkV "libazisek" ; + libazisek_V2 = mkV2 "libazisek" ; + lil_V = mkV "lil" ; + lil_V2 = mkV2 "lil" ; + lilel_V = mkV "lilel" ; + lilel_V2 = mkV2 "lilel" ; + lilizel_V = mkV "lilizel" ; + lilizel_V2 = mkV2 "lilizel" ; + lim_V = mkV "lim" ; + lim_V2 = mkV2 "lim" ; + limal_V = mkV "limal" ; + limal_V2 = mkV2 "limal" ; + limaz_V = mkV "limaz" ; + limaz_V2 = mkV2 "limaz" ; + limazan_V = mkV "limazan" ; + limazan_V2 = mkV2 "limazan" ; + limel_V = mkV "limel" ; + limel_V2 = mkV2 "limel" ; + limis_V = mkV "limis" ; + limis_V2 = mkV2 "limis" ; + lind_V = mkV "lind" ; + lind_V2 = mkV2 "lind" ; + lindalind_V = mkV "lindalind" ; + lindalind_V2 = mkV2 "lindalind" ; + lindel_V = mkV "lindel" ; + lindel_V2 = mkV2 "lindel" ; + lindelek_V = mkV "lindelek" ; + lindelek_V2 = mkV2 "lindelek" ; + lindelekan_V = mkV "lindelekan" ; + lindelekan_V2 = mkV2 "lindelekan" ; + lindelel_V = mkV "lindelel" ; + lindelel_V2 = mkV2 "lindelel" ; + lindis_V = mkV "lindis" ; + lindis_V2 = mkV2 "lindis" ; + ling_V = mkV "ling" ; + ling_V2 = mkV2 "ling" ; + lingan_V = mkV "lingan" ; + lingan_V2 = mkV2 "lingan" ; + linganan_V = mkV "linganan" ; + linganan_V2 = mkV2 "linganan" ; + linganis_V = mkV "linganis" ; + linganis_V2 = mkV2 "linganis" ; + linganisan_V = mkV "linganisan" ; + linganisan_V2 = mkV2 "linganisan" ; + linganisek_V = mkV "linganisek" ; + linganisek_V2 = mkV2 "linganisek" ; + lingek_V = mkV "lingek" ; + lingek_V2 = mkV2 "lingek" ; + lingis_V = mkV "lingis" ; + lingis_V2 = mkV2 "lingis" ; + lingisel_V = mkV "lingisel" ; + lingisel_V2 = mkV2 "lingisel" ; + lisel_V = mkV "lisel" ; + lisel_V2 = mkV2 "lisel" ; + lob_V = mkV "lob" ; + lob_V2 = mkV2 "lob" ; + lobel_V = mkV "lobel" ; + lobel_V2 = mkV2 "lobel" ; + lobiz_V = mkV "lobiz" ; + lobiz_V2 = mkV2 "lobiz" ; + lobizel_V = mkV "lobizel" ; + lobizel_V2 = mkV2 "lobizel" ; + lobol_V = mkV "lobol" ; + lobol_V2 = mkV2 "lobol" ; + lobolel_V = mkV "lobolel" ; + lobolel_V2 = mkV2 "lobolel" ; + lobolis_V = mkV "lobolis" ; + lobolis_V2 = mkV2 "lobolis" ; + lokoth_V = mkV "lokoth" ; + lokoth_V2 = mkV2 "lokoth" ; + lokoz_V = mkV "lokoz" ; + lokoz_V2 = mkV2 "lokoz" ; + lol_V = mkV "lol" ; + lol_V2 = mkV2 "lol" ; + lolek_V = mkV "lolek" ; + lolek_V2 = mkV2 "lolek" ; + lolel_V = mkV "lolel" ; + lolel_V2 = mkV2 "lolel" ; + lolisis_V = mkV "lolisis" ; + lolisis_V2 = mkV2 "lolisis" ; + lolong_V = mkV "lolong" ; + lolong_V2 = mkV2 "lolong" ; + lolongan_V = mkV "lolongan" ; + lolongan_V2 = mkV2 "lolongan" ; + lolongek_V = mkV "lolongek" ; + lolongek_V2 = mkV2 "lolongek" ; + lolongel_V = mkV "lolongel" ; + lolongel_V2 = mkV2 "lolongel" ; + lolozel_V = mkV "lolozel" ; + lolozel_V2 = mkV2 "lolozel" ; + lolozelek_V = mkV "lolozelek" ; + lolozelek_V2 = mkV2 "lolozelek" ; + lond_V = mkV "lond" ; + lond_V2 = mkV2 "lond" ; + londek_V = mkV "londek" ; + londek_V2 = mkV2 "londek" ; + londoloz_V = mkV "londoloz" ; + londoloz_V2 = mkV2 "londoloz" ; + loth_V = mkV "loth" ; + loth_V2 = mkV2 "loth" ; + loy_V = mkV "loy" ; + loy_V2 = mkV2 "loy" ; + loyan_V = mkV "loyan" ; + loyan_V2 = mkV2 "loyan" ; + loz_V = mkV "loz" ; + loz_V2 = mkV2 "loz" ; + lub_V = mkV "lub" ; + lub_V2 = mkV2 "lub" ; + lubanek_V = mkV "lubanek" ; + lubanek_V2 = mkV2 "lubanek" ; + lubek_V = mkV "lubek" ; + lubek_V2 = mkV2 "lubek" ; + lubel_V = mkV "lubel" ; + lubel_V2 = mkV2 "lubel" ; + luk_V = mkV "luk" ; + luk_V2 = mkV2 "luk" ; + lukaluk_V = mkV "lukaluk" ; + lukaluk_V2 = mkV2 "lukaluk" ; + lulam_V = mkV "lulam" ; + lulam_V2 = mkV2 "lulam" ; + lulaz_V = mkV "lulaz" ; + lulaz_V2 = mkV2 "lulaz" ; + lulek_V = mkV "lulek" ; + lulek_V2 = mkV2 "lulek" ; + lum_V = mkV "lum" ; + lum_V2 = mkV2 "lum" ; + luman_V = mkV "luman" ; + luman_V2 = mkV2 "luman" ; + lumb_V = mkV "lumb" ; + lumb_V2 = mkV2 "lumb" ; + lumek_V = mkV "lumek" ; + lumek_V2 = mkV2 "lumek" ; + lumel_V = mkV "lumel" ; + lumel_V2 = mkV2 "lumel" ; + lumuk_V = mkV "lumuk" ; + lumuk_V2 = mkV2 "lumuk" ; + lumukis_V = mkV "lumukis" ; + lumukis_V2 = mkV2 "lumukis" ; + lung_V = mkV "lung" ; + lung_V2 = mkV2 "lung" ; + lungel_V = mkV "lungel" ; + lungel_V2 = mkV2 "lungel" ; + lungelan_V = mkV "lungelan" ; + lungelan_V2 = mkV2 "lungelan" ; + lungis_V = mkV "lungis" ; + lungis_V2 = mkV2 "lungis" ; + lungisel_V = mkV "lungisel" ; + lungisel_V2 = mkV2 "lungisel" ; + lungiselel_V = mkV "lungiselel" ; + lungiselel_V2 = mkV2 "lungiselel" ; + lunguz_V = mkV "lunguz" ; + lunguz_V2 = mkV2 "lunguz" ; + lunguzel_V = mkV "lunguzel" ; + lunguzel_V2 = mkV2 "lunguzel" ; + luphal_V = mkV "luphal" ; + luphal_V2 = mkV2 "luphal" ; + luth_V = mkV "luth" ; + luth_V2 = mkV2 "luth" ; + luthek_V = mkV "luthek" ; + luthek_V2 = mkV2 "luthek" ; + luthel_V = mkV "luthel" ; + luthel_V2 = mkV2 "luthel" ; + lw_V = mkV "lw" ; + lw_V2 = mkV2 "lw" ; + lwan_V = mkV "lwan" ; + lwan_V2 = mkV2 "lwan" ; + lwanel_V = mkV "lwanel" ; + lwanel_V2 = mkV2 "lwanel" ; + lwel_V = mkV "lwel" ; + lwel_V2 = mkV2 "lwel" ; + lwis_V = mkV "lwis" ; + lwis_V2 = mkV2 "lwis" ; + m_V = mkV "m" ; + m_V2 = mkV2 "m" ; + makal_V = mkV "makal" ; + makal_V2 = mkV2 "makal" ; + mamathek_V = mkV "mamathek" ; + mamathek_V2 = mkV2 "mamathek" ; + mamathekel_V = mkV "mamathekel" ; + mamathekel_V2 = mkV2 "mamathekel" ; + man_V = mkV "man" ; + man_V2 = mkV2 "man" ; + manel_V = mkV "manel" ; + manel_V2 = mkV2 "manel" ; + mangal_V = mkV "mangal" ; + mangal_V2 = mkV2 "mangal" ; + mangalek_V = mkV "mangalek" ; + mangalek_V2 = mkV2 "mangalek" ; + mangalel_V = mkV "mangalel" ; + mangalel_V2 = mkV2 "mangalel" ; + mangalis_V = mkV "mangalis" ; + mangalis_V2 = mkV2 "mangalis" ; + manyazel_V = mkV "manyazel" ; + manyazel_V2 = mkV2 "manyazel" ; + manz_V = mkV "manz" ; + manz_V2 = mkV2 "manz" ; + manzan_V = mkV "manzan" ; + manzan_V2 = mkV2 "manzan" ; + mat_V = mkV "mat" ; + mat_V2 = mkV2 "mat" ; + mayim_V = mkV "mayim" ; + mayim_V2 = mkV2 "mayim" ; + mb_V = mkV "mb" ; + mb_V2 = mkV2 "mb" ; + mbambath_V = mkV "mbambath" ; + mbambath_V2 = mkV2 "mbambath" ; + mbambathan_V = mkV "mbambathan" ; + mbambathan_V2 = mkV2 "mbambathan" ; + mban_V = mkV "mban" ; + mban_V2 = mkV2 "mban" ; + mbandaz_V = mkV "mbandaz" ; + mbandaz_V2 = mkV2 "mbandaz" ; + mbath_V = mkV "mbath" ; + mbath_V2 = mkV2 "mbath" ; + mbathek_V = mkV "mbathek" ; + mbathek_V2 = mkV2 "mbathek" ; + mbek_V = mkV "mbek" ; + mbek_V2 = mkV2 "mbek" ; + mbekel_V = mkV "mbekel" ; + mbekel_V2 = mkV2 "mbekel" ; + mbel_V = mkV "mbel" ; + mbel_V2 = mkV2 "mbel" ; + mbembethel_V = mkV "mbembethel" ; + mbembethel_V2 = mkV2 "mbembethel" ; + mbisis_V = mkV "mbisis" ; + mbisis_V2 = mkV2 "mbisis" ; + mbongoz_V = mkV "mbongoz" ; + mbongoz_V2 = mkV2 "mbongoz" ; + mboz_V = mkV "mboz" ; + mboz_V2 = mkV2 "mboz" ; + mbozan_V = mkV "mbozan" ; + mbozan_V2 = mkV2 "mbozan" ; + mbumbuzel_V = mkV "mbumbuzel" ; + mbumbuzel_V2 = mkV2 "mbumbuzel" ; + mbungqanis_V = mkV "mbungqanis" ; + mbungqanis_V2 = mkV2 "mbungqanis" ; + mek_V = mkV "mek" ; + mek_V2 = mkV2 "mek" ; + mel_V = mkV "mel" ; + mel_V2 = mkV2 "mel" ; + melamel_V = mkV "melamel" ; + melamel_V2 = mkV2 "melamel" ; + melan_V = mkV "melan" ; + melan_V2 = mkV2 "melan" ; + melek_V = mkV "melek" ; + melek_V2 = mkV2 "melek" ; + melekelel_V = mkV "melekelel" ; + melekelel_V2 = mkV2 "melekelel" ; + melel_V = mkV "melel" ; + melel_V2 = mkV2 "melel" ; + melelek_V = mkV "melelek" ; + melelek_V2 = mkV2 "melelek" ; + melelelek_V = mkV "melelelek" ; + melelelek_V2 = mkV2 "melelelek" ; + mem_V = mkV "mem" ; + mem_V2 = mkV2 "mem" ; + memel_V = mkV "memel" ; + memel_V2 = mkV2 "memel" ; + memez_V = mkV "memez" ; + memez_V2 = mkV2 "memez" ; + memezan_V = mkV "memezan" ; + memezan_V2 = mkV2 "memezan" ; + memezel_V = mkV "memezel" ; + memezel_V2 = mkV2 "memezel" ; + memezelel_V = mkV "memezelel" ; + memezelel_V2 = mkV2 "memezelel" ; + memezis_V = mkV "memezis" ; + memezis_V2 = mkV2 "memezis" ; + memfuk_V = mkV "memfuk" ; + memfuk_V2 = mkV2 "memfuk" ; + mfimf_V = mkV "mfimf" ; + mfimf_V2 = mkV2 "mfimf" ; + mfimfel_V = mkV "mfimfel" ; + mfimfel_V2 = mkV2 "mfimfel" ; + mfininek_V = mkV "mfininek" ; + mfininek_V2 = mkV2 "mfininek" ; + mfom_V = mkV "mfom" ; + mfom_V2 = mkV2 "mfom" ; + mil_V = mkV "mil" ; + mil_V2 = mkV2 "mil" ; + milel_V = mkV "milel" ; + milel_V2 = mkV2 "milel" ; + miny_V = mkV "miny" ; + miny_V2 = mkV2 "miny" ; + minyan_V = mkV "minyan" ; + minyan_V2 = mkV2 "minyan" ; + minz_V = mkV "minz" ; + minz_V2 = mkV2 "minz" ; + minzis_V = mkV "minzis" ; + minzis_V2 = mkV2 "minzis" ; + mis_V = mkV "mis" ; + mis_V2 = mkV2 "mis" ; + misel_V = mkV "misel" ; + misel_V2 = mkV2 "misel" ; + mith_V = mkV "mith" ; + mith_V2 = mkV2 "mith" ; + momothek_V = mkV "momothek" ; + momothek_V2 = mkV2 "momothek" ; + mony_V = mkV "mony" ; + mony_V2 = mkV2 "mony" ; + monyozel_V = mkV "monyozel" ; + monyozel_V2 = mkV2 "monyozel" ; + monyuk_V = mkV "monyuk" ; + monyuk_V2 = mkV2 "monyuk" ; + mos_V = mkV "mos" ; + mos_V2 = mkV2 "mos" ; + mosek_V = mkV "mosek" ; + mosek_V2 = mkV2 "mosek" ; + mosel_V = mkV "mosel" ; + mosel_V2 = mkV2 "mosel" ; + moyizel_V = mkV "moyizel" ; + moyizel_V2 = mkV2 "moyizel" ; + mpamp_V = mkV "mpamp" ; + mpamp_V2 = mkV2 "mpamp" ; + mpintsh_V = mkV "mpintsh" ; + mpintsh_V2 = mkV2 "mpintsh" ; + mpintshan_V = mkV "mpintshan" ; + mpintshan_V2 = mkV2 "mpintshan" ; + mpintshek_V = mkV "mpintshek" ; + mpintshek_V2 = mkV2 "mpintshek" ; + mpomp_V = mkV "mpomp" ; + mpomp_V2 = mkV2 "mpomp" ; + mpompoloz_V = mkV "mpompoloz" ; + mpompoloz_V2 = mkV2 "mpompoloz" ; + mpompoz_V = mkV "mpompoz" ; + mpompoz_V2 = mkV2 "mpompoz" ; + muk_V = mkV "muk" ; + muk_V2 = mkV2 "muk" ; + mukel_V = mkV "mukel" ; + mukel_V2 = mkV2 "mukel" ; + mukelek_V = mkV "mukelek" ; + mukelek_V2 = mkV2 "mukelek" ; + mukis_V = mkV "mukis" ; + mukis_V2 = mkV2 "mukis" ; + mul_V = mkV "mul" ; + mul_V2 = mkV2 "mul" ; + mumath_V = mkV "mumath" ; + mumath_V2 = mkV2 "mumath" ; + munc_V = mkV "munc" ; + munc_V2 = mkV2 "munc" ; + muny_V = mkV "muny" ; + muny_V2 = mkV2 "muny" ; + munyung_V = mkV "munyung" ; + munyung_V2 = mkV2 "munyung" ; + mus_V = mkV "mus" ; + mus_V2 = mkV2 "mus" ; + musel_V = mkV "musel" ; + musel_V2 = mkV2 "musel" ; + n_V = mkV "n" ; + n_V2 = mkV2 "n" ; + nafun_V = mkV "nafun" ; + nafun_V2 = mkV2 "nafun" ; + nak_V = mkV "nak" ; + nak_V2 = mkV2 "nak" ; + nakal_V = mkV "nakal" ; + nakal_V2 = mkV2 "nakal" ; + nakan_V = mkV "nakan" ; + nakan_V2 = mkV2 "nakan" ; + nakek_V = mkV "nakek" ; + nakek_V2 = mkV2 "nakek" ; + nakekel_V = mkV "nakekel" ; + nakekel_V2 = mkV2 "nakekel" ; + nakisis_V = mkV "nakisis" ; + nakisis_V2 = mkV2 "nakisis" ; + nam_V = mkV "nam" ; + nam_V2 = mkV2 "nam" ; + naman_V = mkV "naman" ; + naman_V2 = mkV2 "naman" ; + namath_V = mkV "namath" ; + namath_V2 = mkV2 "namath" ; + namathel_V = mkV "namathel" ; + namathel_V2 = mkV2 "namathel" ; + namathelan_V = mkV "namathelan" ; + namathelan_V2 = mkV2 "namathelan" ; + namathisel_V = mkV "namathisel" ; + namathisel_V2 = mkV2 "namathisel" ; + nambith_V = mkV "nambith" ; + nambith_V2 = mkV2 "nambith" ; + nambithek_V = mkV "nambithek" ; + nambithek_V2 = mkV2 "nambithek" ; + nambithisis_V = mkV "nambithisis" ; + nambithisis_V2 = mkV2 "nambithisis" ; + nambuz_V = mkV "nambuz" ; + nambuz_V2 = mkV2 "nambuz" ; + nambuzan_V = mkV "nambuzan" ; + nambuzan_V2 = mkV2 "nambuzan" ; + namek_V = mkV "namek" ; + namek_V2 = mkV2 "namek" ; + namuz_V = mkV "namuz" ; + namuz_V2 = mkV2 "namuz" ; + nan_V = mkV "nan" ; + nan_V2 = mkV2 "nan" ; + nanaz_V = mkV "nanaz" ; + nanaz_V2 = mkV2 "nanaz" ; + nanazel_V = mkV "nanazel" ; + nanazel_V2 = mkV2 "nanazel" ; + nanazis_V = mkV "nanazis" ; + nanazis_V2 = mkV2 "nanazis" ; + nandis_V = mkV "nandis" ; + nandis_V2 = mkV2 "nandis" ; + nanel_V = mkV "nanel" ; + nanel_V2 = mkV2 "nanel" ; + nansik_V = mkV "nansik" ; + nansik_V2 = mkV2 "nansik" ; + ncam_V = mkV "ncam" ; + ncam_V2 = mkV2 "ncam" ; + ncamel_V = mkV "ncamel" ; + ncamel_V2 = mkV2 "ncamel" ; + ncanyan_V = mkV "ncanyan" ; + ncanyan_V2 = mkV2 "ncanyan" ; + ncel_V = mkV "ncel" ; + ncel_V2 = mkV2 "ncel" ; + ncelis_V = mkV "ncelis" ; + ncelis_V2 = mkV2 "ncelis" ; + ncenceth_V = mkV "ncenceth" ; + ncenceth_V2 = mkV2 "ncenceth" ; + nceng_V = mkV "nceng" ; + nceng_V2 = mkV2 "nceng" ; + ncengan_V = mkV "ncengan" ; + ncengan_V2 = mkV2 "ncengan" ; + ncengek_V = mkV "ncengek" ; + ncengek_V2 = mkV2 "ncengek" ; + ncengel_V = mkV "ncengel" ; + ncengel_V2 = mkV2 "ncengel" ; + ncibilik_V = mkV "ncibilik" ; + ncibilik_V2 = mkV2 "ncibilik" ; + ncibilikis_V = mkV "ncibilikis" ; + ncibilikis_V2 = mkV2 "ncibilikis" ; + ncik_V = mkV "ncik" ; + ncik_V2 = mkV2 "ncik" ; + ncikel_V = mkV "ncikel" ; + ncikel_V2 = mkV2 "ncikel" ; + ncikis_V = mkV "ncikis" ; + ncikis_V2 = mkV2 "ncikis" ; + ncinc_V = mkV "ncinc" ; + ncinc_V2 = mkV2 "ncinc" ; + ncinciz_V = mkV "ncinciz" ; + ncinciz_V2 = mkV2 "ncinciz" ; + ncint_V = mkV "ncint" ; + ncint_V2 = mkV2 "ncint" ; + ncintisan_V = mkV "ncintisan" ; + ncintisan_V2 = mkV2 "ncintisan" ; + ncinz_V = mkV "ncinz" ; + ncinz_V2 = mkV2 "ncinz" ; + ncinzek_V = mkV "ncinzek" ; + ncinzek_V2 = mkV2 "ncinzek" ; + nciph_V = mkV "nciph" ; + nciph_V2 = mkV2 "nciph" ; + nciphis_V = mkV "nciphis" ; + nciphis_V2 = mkV2 "nciphis" ; + ncish_V = mkV "ncish" ; + ncish_V2 = mkV2 "ncish" ; + ncishan_V = mkV "ncishan" ; + ncishan_V2 = mkV2 "ncishan" ; + ncokol_V = mkV "ncokol" ; + ncokol_V2 = mkV2 "ncokol" ; + ncokolel_V = mkV "ncokolel" ; + ncokolel_V2 = mkV2 "ncokolel" ; + ncokolis_V = mkV "ncokolis" ; + ncokolis_V2 = mkV2 "ncokolis" ; + ncol_V = mkV "ncol" ; + ncol_V2 = mkV2 "ncol" ; + ncom_V = mkV "ncom" ; + ncom_V2 = mkV2 "ncom" ; + ncomek_V = mkV "ncomek" ; + ncomek_V2 = mkV2 "ncomek" ; + nconcoz_V = mkV "nconcoz" ; + nconcoz_V2 = mkV2 "nconcoz" ; + ncweb_V = mkV "ncweb" ; + ncweb_V2 = mkV2 "ncweb" ; + ncwel_V = mkV "ncwel" ; + ncwel_V2 = mkV2 "ncwel" ; + ncwelek_V = mkV "ncwelek" ; + ncwelek_V2 = mkV2 "ncwelek" ; + ndand_V = mkV "ndand" ; + ndand_V2 = mkV2 "ndand" ; + ndandanis_V = mkV "ndandanis" ; + ndandanis_V2 = mkV2 "ndandanis" ; + ndas_V = mkV "ndas" ; + ndas_V2 = mkV2 "ndas" ; + ndinyan_V = mkV "ndinyan" ; + ndinyan_V2 = mkV2 "ndinyan" ; + ndiyaz_V = mkV "ndiyaz" ; + ndiyaz_V2 = mkV2 "ndiyaz" ; + ndiz_V = mkV "ndiz" ; + ndiz_V2 = mkV2 "ndiz" ; + ndizandiz_V = mkV "ndizandiz" ; + ndizandiz_V2 = mkV2 "ndizandiz" ; + ndizel_V = mkV "ndizel" ; + ndizel_V2 = mkV2 "ndizel" ; + ndizis_V = mkV "ndizis" ; + ndizis_V2 = mkV2 "ndizis" ; + ndlal_V = mkV "ndlal" ; + ndlal_V2 = mkV2 "ndlal" ; + ndlalek_V = mkV "ndlalek" ; + ndlalek_V2 = mkV2 "ndlalek" ; + ndlalel_V = mkV "ndlalel" ; + ndlalel_V2 = mkV2 "ndlalel" ; + ndond_V = mkV "ndond" ; + ndond_V2 = mkV2 "ndond" ; + ndondony_V = mkV "ndondony" ; + ndondony_V2 = mkV2 "ndondony" ; + ndunyan_V = mkV "ndunyan" ; + ndunyan_V2 = mkV2 "ndunyan" ; + nek_V = mkV "nek" ; + nek_V2 = mkV2 "nek" ; + nekis_V = mkV "nekis" ; + nekis_V2 = mkV2 "nekis" ; + nel_V = mkV "nel" ; + nel_V2 = mkV2 "nel" ; + nelan_V = mkV "nelan" ; + nelan_V2 = mkV2 "nelan" ; + nelek_V = mkV "nelek" ; + nelek_V2 = mkV2 "nelek" ; + nelis_V = mkV "nelis" ; + nelis_V2 = mkV2 "nelis" ; + nelisek_V = mkV "nelisek" ; + nelisek_V2 = mkV2 "nelisek" ; + nemb_V = mkV "nemb" ; + nemb_V2 = mkV2 "nemb" ; + nembez_V = mkV "nembez" ; + nembez_V2 = mkV2 "nembez" ; + neng_V = mkV "neng" ; + neng_V2 = mkV2 "neng" ; + nengan_V = mkV "nengan" ; + nengan_V2 = mkV2 "nengan" ; + nengek_V = mkV "nengek" ; + nengek_V2 = mkV2 "nengek" ; + nenk_V = mkV "nenk" ; + nenk_V2 = mkV2 "nenk" ; + nens_V = mkV "nens" ; + nens_V2 = mkV2 "nens" ; + nenselel_V = mkV "nenselel" ; + nenselel_V2 = mkV2 "nenselel" ; + nes_V = mkV "nes" ; + nes_V2 = mkV2 "nes" ; + nesanisan_V = mkV "nesanisan" ; + nesanisan_V2 = mkV2 "nesanisan" ; + nesekel_V = mkV "nesekel" ; + nesekel_V2 = mkV2 "nesekel" ; + nesel_V = mkV "nesel" ; + nesel_V2 = mkV2 "nesel" ; + neth_V = mkV "neth" ; + neth_V2 = mkV2 "neth" ; + nethezek_V = mkV "nethezek" ; + nethezek_V2 = mkV2 "nethezek" ; + nev_V = mkV "nev" ; + nev_V2 = mkV2 "nev" ; + nezezel_V = mkV "nezezel" ; + nezezel_V2 = mkV2 "nezezel" ; + ngabaz_V = mkV "ngabaz" ; + ngabaz_V2 = mkV2 "ngabaz" ; + ngabazek_V = mkV "ngabazek" ; + ngabazek_V2 = mkV2 "ngabazek" ; + ngabazis_V = mkV "ngabazis" ; + ngabazis_V2 = mkV2 "ngabazis" ; + ngambuz_V = mkV "ngambuz" ; + ngambuz_V2 = mkV2 "ngambuz" ; + ngcingciz_V = mkV "ngcingciz" ; + ngcingciz_V2 = mkV2 "ngcingciz" ; + ngcof_V = mkV "ngcof" ; + ngcof_V2 = mkV2 "ngcof" ; + ngcol_V = mkV "ngcol" ; + ngcol_V2 = mkV2 "ngcol" ; + ngcolis_V = mkV "ngcolis" ; + ngcolis_V2 = mkV2 "ngcolis" ; + ngcolisek_V = mkV "ngcolisek" ; + ngcolisek_V2 = mkV2 "ngcolisek" ; + ngcwab_V = mkV "ngcwab" ; + ngcwab_V2 = mkV2 "ngcwab" ; + ngcwek_V = mkV "ngcwek" ; + ngcwek_V2 = mkV2 "ngcwek" ; + ngcwelis_V = mkV "ngcwelis" ; + ngcwelis_V2 = mkV2 "ngcwelis" ; + ngcwelisel_V = mkV "ngcwelisel" ; + ngcwelisel_V2 = mkV2 "ngcwelisel" ; + ngen_V = mkV "ngen" ; + ngen_V2 = mkV2 "ngen" ; + ngenan_V = mkV "ngenan" ; + ngenan_V2 = mkV2 "ngenan" ; + ngenanel_V = mkV "ngenanel" ; + ngenanel_V2 = mkV2 "ngenanel" ; + ngenek_V = mkV "ngenek" ; + ngenek_V2 = mkV2 "ngenek" ; + ngenel_V = mkV "ngenel" ; + ngenel_V2 = mkV2 "ngenel" ; + ngenelis_V = mkV "ngenelis" ; + ngenelis_V2 = mkV2 "ngenelis" ; + ngenelisek_V = mkV "ngenelisek" ; + ngenelisek_V2 = mkV2 "ngenelisek" ; + ngenis_V = mkV "ngenis" ; + ngenis_V2 = mkV2 "ngenis" ; + ngenisan_V = mkV "ngenisan" ; + ngenisan_V2 = mkV2 "ngenisan" ; + ngenisel_V = mkV "ngenisel" ; + ngenisel_V2 = mkV2 "ngenisel" ; + ngingiz_V = mkV "ngingiz" ; + ngingiz_V2 = mkV2 "ngingiz" ; + ngom_V = mkV "ngom" ; + ngom_V2 = mkV2 "ngom" ; + ngoman_V = mkV "ngoman" ; + ngoman_V2 = mkV2 "ngoman" ; + ngqabashiy_V = mkV "ngqabashiy" ; + ngqabashiy_V2 = mkV2 "ngqabashiy" ; + ngqabith_V = mkV "ngqabith" ; + ngqabith_V2 = mkV2 "ngqabith" ; + ngqangq_V = mkV "ngqangq" ; + ngqangq_V2 = mkV2 "ngqangq" ; + ngqangqel_V = mkV "ngqangqel" ; + ngqangqel_V2 = mkV2 "ngqangqel" ; + ngqangqisan_V = mkV "ngqangqisan" ; + ngqangqisan_V2 = mkV2 "ngqangqisan" ; + ngqayiz_V = mkV "ngqayiz" ; + ngqayiz_V2 = mkV2 "ngqayiz" ; + ngqengq_V = mkV "ngqengq" ; + ngqengq_V2 = mkV2 "ngqengq" ; + ngqibithek_V = mkV "ngqibithek" ; + ngqibithek_V2 = mkV2 "ngqibithek" ; + ngqof_V = mkV "ngqof" ; + ngqof_V2 = mkV2 "ngqof" ; + ngqofan_V = mkV "ngqofan" ; + ngqofan_V2 = mkV2 "ngqofan" ; + ngqongq_V = mkV "ngqongq" ; + ngqongq_V2 = mkV2 "ngqongq" ; + ngqongqoth_V = mkV "ngqongqoth" ; + ngqongqoth_V2 = mkV2 "ngqongqoth" ; + ngqongqoz_V = mkV "ngqongqoz" ; + ngqongqoz_V2 = mkV2 "ngqongqoz" ; + ngqothul_V = mkV "ngqothul" ; + ngqothul_V2 = mkV2 "ngqothul" ; + ngqubuzan_V = mkV "ngqubuzan" ; + ngqubuzan_V2 = mkV2 "ngqubuzan" ; + ngqubuzek_V = mkV "ngqubuzek" ; + ngqubuzek_V2 = mkV2 "ngqubuzek" ; + ngqumuz_V = mkV "ngqumuz" ; + ngqumuz_V2 = mkV2 "ngqumuz" ; + ngquzul_V = mkV "ngquzul" ; + ngquzul_V2 = mkV2 "ngquzul" ; + ngul_V = mkV "ngul" ; + ngul_V2 = mkV2 "ngul" ; + ngung_V = mkV "ngung" ; + ngung_V2 = mkV2 "ngung" ; + ngxam_V = mkV "ngxam" ; + ngxam_V2 = mkV2 "ngxam" ; + nhlanhlath_V = mkV "nhlanhlath" ; + nhlanhlath_V2 = mkV2 "nhlanhlath" ; + nik_V = mkV "nik" ; + nik_V2 = mkV2 "nik" ; + nikel_V = mkV "nikel" ; + nikel_V2 = mkV2 "nikel" ; + nikelel_V = mkV "nikelel" ; + nikelel_V2 = mkV2 "nikelel" ; + nikez_V = mkV "nikez" ; + nikez_V2 = mkV2 "nikez" ; + nikezan_V = mkV "nikezan" ; + nikezan_V2 = mkV2 "nikezan" ; + nikezel_V = mkV "nikezel" ; + nikezel_V2 = mkV2 "nikezel" ; + nikezelan_V = mkV "nikezelan" ; + nikezelan_V2 = mkV2 "nikezelan" ; + nikin_V = mkV "nikin" ; + nikin_V2 = mkV2 "nikin" ; + nikinek_V = mkV "nikinek" ; + nikinek_V2 = mkV2 "nikinek" ; + nikinel_V = mkV "nikinel" ; + nikinel_V2 = mkV2 "nikinel" ; + nikiz_V = mkV "nikiz" ; + nikiz_V2 = mkV2 "nikiz" ; + nin_V = mkV "nin" ; + nin_V2 = mkV2 "nin" ; + nind_V = mkV "nind" ; + nind_V2 = mkV2 "nind" ; + nis_V = mkV "nis" ; + nis_V2 = mkV2 "nis" ; + nisan_V = mkV "nisan" ; + nisan_V2 = mkV2 "nisan" ; + nisel_V = mkV "nisel" ; + nisel_V2 = mkV2 "nisel" ; + nithel_V = mkV "nithel" ; + nithel_V2 = mkV2 "nithel" ; + niyam_V = mkV "niyam" ; + niyam_V2 = mkV2 "niyam" ; + niz_V = mkV "niz" ; + niz_V2 = mkV2 "niz" ; + nkankazelel_V = mkV "nkankazelel" ; + nkankazelel_V2 = mkV2 "nkankazelel" ; + nkem_V = mkV "nkem" ; + nkem_V2 = mkV2 "nkem" ; + nkeman_V = mkV "nkeman" ; + nkeman_V2 = mkV2 "nkeman" ; + nkenez_V = mkV "nkenez" ; + nkenez_V2 = mkV2 "nkenez" ; + nkenketh_V = mkV "nkenketh" ; + nkenketh_V2 = mkV2 "nkenketh" ; + nkentez_V = mkV "nkentez" ; + nkentez_V2 = mkV2 "nkentez" ; + nkinsel_V = mkV "nkinsel" ; + nkinsel_V2 = mkV2 "nkinsel" ; + nkinyan_V = mkV "nkinyan" ; + nkinyan_V2 = mkV2 "nkinyan" ; + nkonkomis_V = mkV "nkonkomis" ; + nkonkomis_V2 = mkV2 "nkonkomis" ; + nkontshel_V = mkV "nkontshel" ; + nkontshel_V2 = mkV2 "nkontshel" ; + nkwankwaz_V = mkV "nkwankwaz" ; + nkwankwaz_V2 = mkV2 "nkwankwaz" ; + nkwanyan_V = mkV "nkwanyan" ; + nkwanyan_V2 = mkV2 "nkwanyan" ; + nombel_V = mkV "nombel" ; + nombel_V2 = mkV2 "nombel" ; + nomfan_V = mkV "nomfan" ; + nomfan_V2 = mkV2 "nomfan" ; + non_V = mkV "non" ; + non_V2 = mkV2 "non" ; + nonel_V = mkV "nonel" ; + nonel_V2 = mkV2 "nonel" ; + nongoz_V = mkV "nongoz" ; + nongoz_V2 = mkV2 "nongoz" ; + nonoph_V = mkV "nonoph" ; + nonoph_V2 = mkV2 "nonoph" ; + nonophal_V = mkV "nonophal" ; + nonophal_V2 = mkV2 "nonophal" ; + nonophalis_V = mkV "nonophalis" ; + nonophalis_V2 = mkV2 "nonophalis" ; + nonophel_V = mkV "nonophel" ; + nonophel_V2 = mkV2 "nonophel" ; + nonsul_V = mkV "nonsul" ; + nonsul_V2 = mkV2 "nonsul" ; + noth_V = mkV "noth" ; + noth_V2 = mkV2 "noth" ; + novelan_V = mkV "novelan" ; + novelan_V2 = mkV2 "novelan" ; + nqab_V = mkV "nqab" ; + nqab_V2 = mkV2 "nqab" ; + nqabel_V = mkV "nqabel" ; + nqabel_V2 = mkV2 "nqabel" ; + nqak_V = mkV "nqak" ; + nqak_V2 = mkV2 "nqak" ; + nqakisan_V = mkV "nqakisan" ; + nqakisan_V2 = mkV2 "nqakisan" ; + nqakul_V = mkV "nqakul" ; + nqakul_V2 = mkV2 "nqakul" ; + nqal_V = mkV "nqal" ; + nqal_V2 = mkV2 "nqal" ; + nqamuk_V = mkV "nqamuk" ; + nqamuk_V2 = mkV2 "nqamuk" ; + nqamul_V = mkV "nqamul" ; + nqamul_V2 = mkV2 "nqamul" ; + nqamulel_V = mkV "nqamulel" ; + nqamulel_V2 = mkV2 "nqamulel" ; + nqand_V = mkV "nqand" ; + nqand_V2 = mkV2 "nqand" ; + nqandek_V = mkV "nqandek" ; + nqandek_V2 = mkV2 "nqandek" ; + nqathuz_V = mkV "nqathuz" ; + nqathuz_V2 = mkV2 "nqathuz" ; + nqekuz_V = mkV "nqekuz" ; + nqekuz_V2 = mkV2 "nqekuz" ; + nqekuzel_V = mkV "nqekuzel" ; + nqekuzel_V2 = mkV2 "nqekuzel" ; + nqekuzis_V = mkV "nqekuzis" ; + nqekuzis_V2 = mkV2 "nqekuzis" ; + nqen_V = mkV "nqen" ; + nqen_V2 = mkV2 "nqen" ; + nqib_V = mkV "nqib" ; + nqib_V2 = mkV2 "nqib" ; + nqikaz_V = mkV "nqikaz" ; + nqikaz_V2 = mkV2 "nqikaz" ; + nqikazis_V = mkV "nqikazis" ; + nqikazis_V2 = mkV2 "nqikazis" ; + nqin_V = mkV "nqin" ; + nqin_V2 = mkV2 "nqin" ; + nqinis_V = mkV "nqinis" ; + nqinis_V2 = mkV2 "nqinis" ; + nqob_V = mkV "nqob" ; + nqob_V2 = mkV2 "nqob" ; + nqobek_V = mkV "nqobek" ; + nqobek_V2 = mkV2 "nqobek" ; + nqoh_V = mkV "nqoh" ; + nqoh_V2 = mkV2 "nqoh" ; + nqong_V = mkV "nqong" ; + nqong_V2 = mkV2 "nqong" ; + nqonqoth_V = mkV "nqonqoth" ; + nqonqoth_V2 = mkV2 "nqonqoth" ; + nqonqoz_V = mkV "nqonqoz" ; + nqonqoz_V2 = mkV2 "nqonqoz" ; + nqukul_V = mkV "nqukul" ; + nqukul_V2 = mkV2 "nqukul" ; + nqukuz_V = mkV "nqukuz" ; + nqukuz_V2 = mkV2 "nqukuz" ; + nqum_V = mkV "nqum" ; + nqum_V2 = mkV2 "nqum" ; + nqumel_V = mkV "nqumel" ; + nqumel_V2 = mkV2 "nqumel" ; + nqumelan_V = mkV "nqumelan" ; + nqumelan_V2 = mkV2 "nqumelan" ; + nqumis_V = mkV "nqumis" ; + nqumis_V2 = mkV2 "nqumis" ; + nqund_V = mkV "nqund" ; + nqund_V2 = mkV2 "nqund" ; + nqundek_V = mkV "nqundek" ; + nqundek_V2 = mkV2 "nqundek" ; + nqunt_V = mkV "nqunt" ; + nqunt_V2 = mkV2 "nqunt" ; + nqwabel_V = mkV "nqwabel" ; + nqwabel_V2 = mkV2 "nqwabel" ; + nqwabelan_V = mkV "nqwabelan" ; + nqwabelan_V2 = mkV2 "nqwabelan" ; + nqwah_V = mkV "nqwah" ; + nqwah_V2 = mkV2 "nqwah" ; + nqwaman_V = mkV "nqwaman" ; + nqwaman_V2 = mkV2 "nqwaman" ; + nqwamb_V = mkV "nqwamb" ; + nqwamb_V2 = mkV2 "nqwamb" ; + nsiny_V = mkV "nsiny" ; + nsiny_V2 = mkV2 "nsiny" ; + nsinyan_V = mkV "nsinyan" ; + nsinyan_V2 = mkV2 "nsinyan" ; + nswininiz_V = mkV "nswininiz" ; + nswininiz_V2 = mkV2 "nswininiz" ; + ntant_V = mkV "ntant" ; + ntant_V2 = mkV2 "ntant" ; + ntantathek_V = mkV "ntantathek" ; + ntantathek_V2 = mkV2 "ntantathek" ; + ntany_V = mkV "ntany" ; + ntany_V2 = mkV2 "ntany" ; + ntaz_V = mkV "ntaz" ; + ntaz_V2 = mkV2 "ntaz" ; + ntel_V = mkV "ntel" ; + ntel_V2 = mkV2 "ntel" ; + ntelel_V = mkV "ntelel" ; + ntelel_V2 = mkV2 "ntelel" ; + ntenganteng_V = mkV "ntenganteng" ; + ntenganteng_V2 = mkV2 "ntenganteng" ; + ntengemul_V = mkV "ntengemul" ; + ntengemul_V2 = mkV2 "ntengemul" ; + ntez_V = mkV "ntez" ; + ntez_V2 = mkV2 "ntez" ; + ntininiz_V = mkV "ntininiz" ; + ntininiz_V2 = mkV2 "ntininiz" ; + ntinyel_V = mkV "ntinyel" ; + ntinyel_V2 = mkV2 "ntinyel" ; + ntongel_V = mkV "ntongel" ; + ntongel_V2 = mkV2 "ntongel" ; + ntontel_V = mkV "ntontel" ; + ntontel_V2 = mkV2 "ntontel" ; + ntshentsheth_V = mkV "ntshentsheth" ; + ntshentsheth_V2 = mkV2 "ntshentsheth" ; + ntshing_V = mkV "ntshing" ; + ntshing_V2 = mkV2 "ntshing" ; + ntshontsh_V = mkV "ntshontsh" ; + ntshontsh_V2 = mkV2 "ntshontsh" ; + ntshontshan_V = mkV "ntshontshan" ; + ntshontshan_V2 = mkV2 "ntshontshan" ; + ntshontshel_V = mkV "ntshontshel" ; + ntshontshel_V2 = mkV2 "ntshontshel" ; + ntul_V = mkV "ntul" ; + ntul_V2 = mkV2 "ntul" ; + ntulek_V = mkV "ntulek" ; + ntulek_V2 = mkV2 "ntulek" ; + ntwayizel_V = mkV "ntwayizel" ; + ntwayizel_V2 = mkV2 "ntwayizel" ; + ntwel_V = mkV "ntwel" ; + ntwel_V2 = mkV2 "ntwel" ; + ntwez_V = mkV "ntwez" ; + ntwez_V2 = mkV2 "ntwez" ; + nuk_V = mkV "nuk" ; + nuk_V2 = mkV2 "nuk" ; + nukek_V = mkV "nukek" ; + nukek_V2 = mkV2 "nukek" ; + nukel_V = mkV "nukel" ; + nukel_V2 = mkV2 "nukel" ; + nukubez_V = mkV "nukubez" ; + nukubez_V2 = mkV2 "nukubez" ; + nukubezek_V = mkV "nukubezek" ; + nukubezek_V2 = mkV2 "nukubezek" ; + nunusel_V = mkV "nunusel" ; + nunusel_V2 = mkV2 "nunusel" ; + nwabuzel_V = mkV "nwabuzel" ; + nwabuzel_V2 = mkV2 "nwabuzel" ; + nwampel_V = mkV "nwampel" ; + nwampel_V2 = mkV2 "nwampel" ; + nway_V = mkV "nway" ; + nway_V2 = mkV2 "nway" ; + nwayiz_V = mkV "nwayiz" ; + nwayiz_V2 = mkV2 "nwayiz" ; + nweb_V = mkV "nweb" ; + nweb_V2 = mkV2 "nweb" ; + nwebek_V = mkV "nwebek" ; + nwebek_V2 = mkV2 "nwebek" ; + nwebul_V = mkV "nwebul" ; + nwebul_V2 = mkV2 "nwebul" ; + nxanel_V = mkV "nxanel" ; + nxanel_V2 = mkV2 "nxanel" ; + nxaph_V = mkV "nxaph" ; + nxaph_V2 = mkV2 "nxaph" ; + nxaphel_V = mkV "nxaphel" ; + nxaphel_V2 = mkV2 "nxaphel" ; + nxephez_V = mkV "nxephez" ; + nxephez_V2 = mkV2 "nxephez" ; + nxephezis_V = mkV "nxephezis" ; + nxephezis_V2 = mkV2 "nxephezis" ; + nxib_V = mkV "nxib" ; + nxib_V2 = mkV2 "nxib" ; + nximf_V = mkV "nximf" ; + nximf_V2 = mkV2 "nximf" ; + nxus_V = mkV "nxus" ; + nxus_V2 = mkV2 "nxus" ; + nxusel_V = mkV "nxusel" ; + nxusel_V2 = mkV2 "nxusel" ; + nxusisis_V = mkV "nxusisis" ; + nxusisis_V2 = mkV2 "nxusisis" ; + ny_V = mkV "ny" ; + ny_V2 = mkV2 "ny" ; + nyab_V = mkV "nyab" ; + nyab_V2 = mkV2 "nyab" ; + nyakanyakaz_V = mkV "nyakanyakaz" ; + nyakanyakaz_V2 = mkV2 "nyakanyakaz" ; + nyakanyakazis_V = mkV "nyakanyakazis" ; + nyakanyakazis_V2 = mkV2 "nyakanyakazis" ; + nyakaz_V = mkV "nyakaz" ; + nyakaz_V2 = mkV2 "nyakaz" ; + nyakazel_V = mkV "nyakazel" ; + nyakazel_V2 = mkV2 "nyakazel" ; + nyakazis_V = mkV "nyakazis" ; + nyakazis_V2 = mkV2 "nyakazis" ; + nyaliz_V = mkV "nyaliz" ; + nyaliz_V2 = mkV2 "nyaliz" ; + nyamalal_V = mkV "nyamalal" ; + nyamalal_V2 = mkV2 "nyamalal" ; + nyamalalel_V = mkV "nyamalalel" ; + nyamalalel_V2 = mkV2 "nyamalalel" ; + nyamezel_V = mkV "nyamezel" ; + nyamezel_V2 = mkV2 "nyamezel" ; + nyan_V = mkV "nyan" ; + nyan_V2 = mkV2 "nyan" ; + nyang_V = mkV "nyang" ; + nyang_V2 = mkV2 "nyang" ; + nyangan_V = mkV "nyangan" ; + nyangan_V2 = mkV2 "nyangan" ; + nyany_V = mkV "nyany" ; + nyany_V2 = mkV2 "nyany" ; + nyanyalat_V = mkV "nyanyalat" ; + nyanyalat_V2 = mkV2 "nyanyalat" ; + nyanyan_V = mkV "nyanyan" ; + nyanyan_V2 = mkV2 "nyanyan" ; + nyathel_V = mkV "nyathel" ; + nyathel_V2 = mkV2 "nyathel" ; + nyathelan_V = mkV "nyathelan" ; + nyathelan_V2 = mkV2 "nyathelan" ; + nyathelek_V = mkV "nyathelek" ; + nyathelek_V2 = mkV2 "nyathelek" ; + nyathelel_V = mkV "nyathelel" ; + nyathelel_V2 = mkV2 "nyathelel" ; + nyathuzel_V = mkV "nyathuzel" ; + nyathuzel_V2 = mkV2 "nyathuzel" ; + nyek_V = mkV "nyek" ; + nyek_V2 = mkV2 "nyek" ; + nyel_V = mkV "nyel" ; + nyel_V2 = mkV2 "nyel" ; + nyelel_V = mkV "nyelel" ; + nyelel_V2 = mkV2 "nyelel" ; + nyemb_V = mkV "nyemb" ; + nyemb_V2 = mkV2 "nyemb" ; + nyeny_V = mkV "nyeny" ; + nyeny_V2 = mkV2 "nyeny" ; + nyenyez_V = mkV "nyenyez" ; + nyenyez_V2 = mkV2 "nyenyez" ; + nyenyezel_V = mkV "nyenyezel" ; + nyenyezel_V2 = mkV2 "nyenyezel" ; + nyenyezelan_V = mkV "nyenyezelan" ; + nyenyezelan_V2 = mkV2 "nyenyezelan" ; + nyewuk_V = mkV "nyewuk" ; + nyewuk_V2 = mkV2 "nyewuk" ; + nyez_V = mkV "nyez" ; + nyez_V2 = mkV2 "nyez" ; + nyezel_V = mkV "nyezel" ; + nyezel_V2 = mkV2 "nyezel" ; + nyibilik_V = mkV "nyibilik" ; + nyibilik_V2 = mkV2 "nyibilik" ; + nyikanyik_V = mkV "nyikanyik" ; + nyikanyik_V2 = mkV2 "nyikanyik" ; + nyikiny_V = mkV "nyikiny" ; + nyikiny_V2 = mkV2 "nyikiny" ; + nyikizis_V = mkV "nyikizis" ; + nyikizis_V2 = mkV2 "nyikizis" ; + nyinyithek_V = mkV "nyinyithek" ; + nyinyithek_V2 = mkV2 "nyinyithek" ; + nyiph_V = mkV "nyiph" ; + nyiph_V2 = mkV2 "nyiph" ; + nyis_V = mkV "nyis" ; + nyis_V2 = mkV2 "nyis" ; + nyobozel_V = mkV "nyobozel" ; + nyobozel_V2 = mkV2 "nyobozel" ; + nyolozel_V = mkV "nyolozel" ; + nyolozel_V2 = mkV2 "nyolozel" ; + nyombuluk_V = mkV "nyombuluk" ; + nyombuluk_V2 = mkV2 "nyombuluk" ; + nyonkoloz_V = mkV "nyonkoloz" ; + nyonkoloz_V2 = mkV2 "nyonkoloz" ; + nyony_V = mkV "nyony" ; + nyony_V2 = mkV2 "nyony" ; + nyonyob_V = mkV "nyonyob" ; + nyonyob_V2 = mkV2 "nyonyob" ; + nyonyobel_V = mkV "nyonyobel" ; + nyonyobel_V2 = mkV2 "nyonyobel" ; + nyonyobis_V = mkV "nyonyobis" ; + nyonyobis_V2 = mkV2 "nyonyobis" ; + nyov_V = mkV "nyov" ; + nyov_V2 = mkV2 "nyov" ; + nyovan_V = mkV "nyovan" ; + nyovan_V2 = mkV2 "nyovan" ; + nyukubal_V = mkV "nyukubal" ; + nyukubal_V2 = mkV2 "nyukubal" ; + nyukuny_V = mkV "nyukuny" ; + nyukuny_V2 = mkV2 "nyukuny" ; + nyukunyek_V = mkV "nyukunyek" ; + nyukunyek_V2 = mkV2 "nyukunyek" ; + nyumb_V = mkV "nyumb" ; + nyumb_V2 = mkV2 "nyumb" ; + obuk_V = mkV "obuk" ; + obuk_V2 = mkV2 "obuk" ; + obukan_V = mkV "obukan" ; + obukan_V2 = mkV2 "obukan" ; + obukek_V = mkV "obukek" ; + obukek_V2 = mkV2 "obukek" ; + obukel_V = mkV "obukel" ; + obukel_V2 = mkV2 "obukel" ; + obul_V = mkV "obul" ; + obul_V2 = mkV2 "obul" ; + obulis_V = mkV "obulis" ; + obulis_V2 = mkV2 "obulis" ; + obuz_V = mkV "obuz" ; + obuz_V2 = mkV2 "obuz" ; + obuzan_V = mkV "obuzan" ; + obuzan_V2 = mkV2 "obuzan" ; + od_V = mkV "od" ; + od_V2 = mkV2 "od" ; + odan_V = mkV "odan" ; + odan_V2 = mkV2 "odan" ; + odel_V = mkV "odel" ; + odel_V2 = mkV2 "odel" ; + odelel_V = mkV "odelel" ; + odelel_V2 = mkV2 "odelel" ; + odelis_V = mkV "odelis" ; + odelis_V2 = mkV2 "odelis" ; + ojwayel_V = mkV "ojwayel" ; + ojwayel_V2 = mkV2 "ojwayel" ; + ojwayelek_V = mkV "ojwayelek" ; + ojwayelek_V2 = mkV2 "ojwayelek" ; + okh_V = mkV "okh" ; + okh_V2 = mkV2 "okh" ; + okhan_V = mkV "okhan" ; + okhan_V2 = mkV2 "okhan" ; + okhel_V = mkV "okhel" ; + okhel_V2 = mkV2 "okhel" ; + okhelek_V = mkV "okhelek" ; + okhelek_V2 = mkV2 "okhelek" ; + olul_V = mkV "olul" ; + olul_V2 = mkV2 "olul" ; + olulek_V = mkV "olulek" ; + olulek_V2 = mkV2 "olulek" ; + om_V = mkV "om" ; + om_V2 = mkV2 "om" ; + oman_V = mkV "oman" ; + oman_V2 = mkV2 "oman" ; + omel_V = mkV "omel" ; + omel_V2 = mkV2 "omel" ; + omelan_V = mkV "omelan" ; + omelan_V2 = mkV2 "omelan" ; + omelek_V = mkV "omelek" ; + omelek_V2 = mkV2 "omelek" ; + omelekelel_V = mkV "omelekelel" ; + omelekelel_V2 = mkV2 "omelekelel" ; + omelel_V = mkV "omelel" ; + omelel_V2 = mkV2 "omelel" ; + omis_V = mkV "omis" ; + omis_V2 = mkV2 "omis" ; + omisel_V = mkV "omisel" ; + omisel_V2 = mkV2 "omisel" ; + on_V = mkV "on" ; + on_V2 = mkV2 "on" ; + onakal_V = mkV "onakal" ; + onakal_V2 = mkV2 "onakal" ; + onakalis_V = mkV "onakalis" ; + onakalis_V2 = mkV2 "onakalis" ; + onan_V = mkV "onan" ; + onan_V2 = mkV2 "onan" ; + onanel_V = mkV "onanel" ; + onanel_V2 = mkV2 "onanel" ; + ond_V = mkV "ond" ; + ond_V2 = mkV2 "ond" ; + ondan_V = mkV "ondan" ; + ondan_V2 = mkV2 "ondan" ; + ondek_V = mkV "ondek" ; + ondek_V2 = mkV2 "ondek" ; + ondel_V = mkV "ondel" ; + ondel_V2 = mkV2 "ondel" ; + ondelan_V = mkV "ondelan" ; + ondelan_V2 = mkV2 "ondelan" ; + ondis_V = mkV "ondis" ; + ondis_V2 = mkV2 "ondis" ; + ondl_V = mkV "ondl" ; + ondl_V2 = mkV2 "ondl" ; + ondlek_V = mkV "ondlek" ; + ondlek_V2 = mkV2 "ondlek" ; + ondlel_V = mkV "ondlel" ; + ondlel_V2 = mkV2 "ondlel" ; + onek_V = mkV "onek" ; + onek_V2 = mkV2 "onek" ; + onel_V = mkV "onel" ; + onel_V2 = mkV2 "onel" ; + onelel_V = mkV "onelel" ; + onelel_V2 = mkV2 "onelel" ; + onelisek_V = mkV "onelisek" ; + onelisek_V2 = mkV2 "onelisek" ; + ong_V = mkV "ong" ; + ong_V2 = mkV2 "ong" ; + ongam_V = mkV "ongam" ; + ongam_V2 = mkV2 "ongam" ; + ongamel_V = mkV "ongamel" ; + ongamel_V2 = mkV2 "ongamel" ; + ongamelan_V = mkV "ongamelan" ; + ongamelan_V2 = mkV2 "ongamelan" ; + ongan_V = mkV "ongan" ; + ongan_V2 = mkV2 "ongan" ; + onganelekelel_V = mkV "onganelekelel" ; + onganelekelel_V2 = mkV2 "onganelekelel" ; + ongek_V = mkV "ongek" ; + ongek_V2 = mkV2 "ongek" ; + ongel_V = mkV "ongel" ; + ongel_V2 = mkV2 "ongel" ; + ongez_V = mkV "ongez" ; + ongez_V2 = mkV2 "ongez" ; + ongisis_V = mkV "ongisis" ; + ongisis_V2 = mkV2 "ongisis" ; + onis_V = mkV "onis" ; + onis_V2 = mkV2 "onis" ; + onisan_V = mkV "onisan" ; + onisan_V2 = mkV2 "onisan" ; + onisis_V = mkV "onisis" ; + onisis_V2 = mkV2 "onisis" ; + oph_V = mkV "oph" ; + oph_V2 = mkV2 "oph" ; + ophan_V = mkV "ophan" ; + ophan_V2 = mkV2 "ophan" ; + ophek_V = mkV "ophek" ; + ophek_V2 = mkV2 "ophek" ; + ophekel_V = mkV "ophekel" ; + ophekel_V2 = mkV2 "ophekel" ; + ophel_V = mkV "ophel" ; + ophel_V2 = mkV2 "ophel" ; + ophelan_V = mkV "ophelan" ; + ophelan_V2 = mkV2 "ophelan" ; + ophelel_V = mkV "ophelel" ; + ophelel_V2 = mkV2 "ophelel" ; + ophis_V = mkV "ophis" ; + ophis_V2 = mkV2 "ophis" ; + ophul_V = mkV "ophul" ; + ophul_V2 = mkV2 "ophul" ; + os_V = mkV "os" ; + os_V2 = mkV2 "os" ; + osanel_V = mkV "osanel" ; + osanel_V2 = mkV2 "osanel" ; + osek_V = mkV "osek" ; + osek_V2 = mkV2 "osek" ; + osekel_V = mkV "osekel" ; + osekel_V2 = mkV2 "osekel" ; + osel_V = mkV "osel" ; + osel_V2 = mkV2 "osel" ; + oselel_V = mkV "oselel" ; + oselel_V2 = mkV2 "oselel" ; + osisel_V = mkV "osisel" ; + osisel_V2 = mkV2 "osisel" ; + osul_V = mkV "osul" ; + osul_V2 = mkV2 "osul" ; + oth_V = mkV "oth" ; + oth_V2 = mkV2 "oth" ; + othan_V = mkV "othan" ; + othan_V2 = mkV2 "othan" ; + othel_V = mkV "othel" ; + othel_V2 = mkV2 "othel" ; + othelan_V = mkV "othelan" ; + othelan_V2 = mkV2 "othelan" ; + othelek_V = mkV "othelek" ; + othelek_V2 = mkV2 "othelek" ; + othelel_V = mkV "othelel" ; + othelel_V2 = mkV2 "othelel" ; + othis_V = mkV "othis" ; + othis_V2 = mkV2 "othis" ; + othul_V = mkV "othul" ; + othul_V2 = mkV2 "othul" ; + ozel_V = mkV "ozel" ; + ozel_V2 = mkV2 "ozel" ; + paquz_V = mkV "paquz" ; + paquz_V2 = mkV2 "paquz" ; + patsh_V = mkV "patsh" ; + patsh_V2 = mkV2 "patsh" ; + pend_V = mkV "pend" ; + pend_V2 = mkV2 "pend" ; + pensul_V = mkV "pensul" ; + pensul_V2 = mkV2 "pensul" ; + petezel_V = mkV "petezel" ; + petezel_V2 = mkV2 "petezel" ; + ph_V = mkV "ph" ; + ph_V2 = mkV2 "ph" ; + phafuz_V = mkV "phafuz" ; + phafuz_V2 = mkV2 "phafuz" ; + phafuzan_V = mkV "phafuzan" ; + phafuzan_V2 = mkV2 "phafuzan" ; + phafuzek_V = mkV "phafuzek" ; + phafuzek_V2 = mkV2 "phafuzek" ; + phahl_V = mkV "phahl" ; + phahl_V2 = mkV2 "phahl" ; + phahlan_V = mkV "phahlan" ; + phahlan_V2 = mkV2 "phahlan" ; + phahlazek_V = mkV "phahlazek" ; + phahlazek_V2 = mkV2 "phahlazek" ; + phahlek_V = mkV "phahlek" ; + phahlek_V2 = mkV2 "phahlek" ; + phahluk_V = mkV "phahluk" ; + phahluk_V2 = mkV2 "phahluk" ; + phak_V = mkV "phak" ; + phak_V2 = mkV2 "phak" ; + phakam_V = mkV "phakam" ; + phakam_V2 = mkV2 "phakam" ; + phakamel_V = mkV "phakamel" ; + phakamel_V2 = mkV2 "phakamel" ; + phakamis_V = mkV "phakamis" ; + phakamis_V2 = mkV2 "phakamis" ; + phakamisel_V = mkV "phakamisel" ; + phakamisel_V2 = mkV2 "phakamisel" ; + phakath_V = mkV "phakath" ; + phakath_V2 = mkV2 "phakath" ; + phakel_V = mkV "phakel" ; + phakel_V2 = mkV2 "phakel" ; + phal_V = mkV "phal" ; + phal_V2 = mkV2 "phal" ; + phalal_V = mkV "phalal" ; + phalal_V2 = mkV2 "phalal" ; + phalaz_V = mkV "phalaz" ; + phalaz_V2 = mkV2 "phalaz" ; + phalazel_V = mkV "phalazel" ; + phalazel_V2 = mkV2 "phalazel" ; + phalazis_V = mkV "phalazis" ; + phalazis_V2 = mkV2 "phalazis" ; + phamb_V = mkV "phamb" ; + phamb_V2 = mkV2 "phamb" ; + phamban_V = mkV "phamban" ; + phamban_V2 = mkV2 "phamban" ; + phambanis_V = mkV "phambanis" ; + phambanis_V2 = mkV2 "phambanis" ; + phambanisel_V = mkV "phambanisel" ; + phambanisel_V2 = mkV2 "phambanisel" ; + phambek_V = mkV "phambek" ; + phambek_V2 = mkV2 "phambek" ; + phambel_V = mkV "phambel" ; + phambel_V2 = mkV2 "phambel" ; + phambuk_V = mkV "phambuk" ; + phambuk_V2 = mkV2 "phambuk" ; + phambukel_V = mkV "phambukel" ; + phambukel_V2 = mkV2 "phambukel" ; + phambukis_V = mkV "phambukis" ; + phambukis_V2 = mkV2 "phambukis" ; + phan_V = mkV "phan" ; + phan_V2 = mkV2 "phan" ; + phand_V = mkV "phand" ; + phand_V2 = mkV2 "phand" ; + phandel_V = mkV "phandel" ; + phandel_V2 = mkV2 "phandel" ; + phandl_V = mkV "phandl" ; + phandl_V2 = mkV2 "phandl" ; + phang_V = mkV "phang" ; + phang_V2 = mkV2 "phang" ; + phangalal_V = mkV "phangalal" ; + phangalal_V2 = mkV2 "phangalal" ; + phangazel_V = mkV "phangazel" ; + phangazel_V2 = mkV2 "phangazel" ; + phangel_V = mkV "phangel" ; + phangel_V2 = mkV2 "phangel" ; + phangelan_V = mkV "phangelan" ; + phangelan_V2 = mkV2 "phangelan" ; + phangis_V = mkV "phangis" ; + phangis_V2 = mkV2 "phangis" ; + phanyek_V = mkV "phanyek" ; + phanyek_V2 = mkV2 "phanyek" ; + phaph_V = mkV "phaph" ; + phaph_V2 = mkV2 "phaph" ; + phaphalaz_V = mkV "phaphalaz" ; + phaphalaz_V2 = mkV2 "phaphalaz" ; + phapham_V = mkV "phapham" ; + phapham_V2 = mkV2 "phapham" ; + phaphamis_V = mkV "phaphamis" ; + phaphamis_V2 = mkV2 "phaphamis" ; + phaphathek_V = mkV "phaphathek" ; + phaphathek_V2 = mkV2 "phaphathek" ; + phaq_V = mkV "phaq" ; + phaq_V2 = mkV2 "phaq" ; + phaqul_V = mkV "phaqul" ; + phaqul_V2 = mkV2 "phaqul" ; + phas_V = mkV "phas" ; + phas_V2 = mkV2 "phas" ; + phasel_V = mkV "phasel" ; + phasel_V2 = mkV2 "phasel" ; + phaselan_V = mkV "phaselan" ; + phaselan_V2 = mkV2 "phaselan" ; + phasis_V = mkV "phasis" ; + phasis_V2 = mkV2 "phasis" ; + phath_V = mkV "phath" ; + phath_V2 = mkV2 "phath" ; + phathan_V = mkV "phathan" ; + phathan_V2 = mkV2 "phathan" ; + phathanisel_V = mkV "phathanisel" ; + phathanisel_V2 = mkV2 "phathanisel" ; + phathaphath_V = mkV "phathaphath" ; + phathaphath_V2 = mkV2 "phathaphath" ; + phathek_V = mkV "phathek" ; + phathek_V2 = mkV2 "phathek" ; + phathel_V = mkV "phathel" ; + phathel_V2 = mkV2 "phathel" ; + phathelan_V = mkV "phathelan" ; + phathelan_V2 = mkV2 "phathelan" ; + phathis_V = mkV "phathis" ; + phathis_V2 = mkV2 "phathis" ; + phathisel_V = mkV "phathisel" ; + phathisel_V2 = mkV2 "phathisel" ; + phawul_V = mkV "phawul" ; + phawul_V2 = mkV2 "phawul" ; + phawulek_V = mkV "phawulek" ; + phawulek_V2 = mkV2 "phawulek" ; + phayiz_V = mkV "phayiz" ; + phayiz_V2 = mkV2 "phayiz" ; + phayizel_V = mkV "phayizel" ; + phayizel_V2 = mkV2 "phayizel" ; + phazamis_V = mkV "phazamis" ; + phazamis_V2 = mkV2 "phazamis" ; + phazamisek_V = mkV "phazamisek" ; + phazamisek_V2 = mkV2 "phazamisek" ; + phazim_V = mkV "phazim" ; + phazim_V2 = mkV2 "phazim" ; + phefumul_V = mkV "phefumul" ; + phefumul_V2 = mkV2 "phefumul" ; + phefumulel_V = mkV "phefumulel" ; + phefumulel_V2 = mkV2 "phefumulel" ; + phefumulelan_V = mkV "phefumulelan" ; + phefumulelan_V2 = mkV2 "phefumulelan" ; + phefumulis_V = mkV "phefumulis" ; + phefumulis_V2 = mkV2 "phefumulis" ; + phehl_V = mkV "phehl" ; + phehl_V2 = mkV2 "phehl" ; + phek_V = mkV "phek" ; + phek_V2 = mkV2 "phek" ; + phekel_V = mkV "phekel" ; + phekel_V2 = mkV2 "phekel" ; + phel_V = mkV "phel" ; + phel_V2 = mkV2 "phel" ; + phelan_V = mkV "phelan" ; + phelan_V2 = mkV2 "phelan" ; + phelekezel_V = mkV "phelekezel" ; + phelekezel_V2 = mkV2 "phelekezel" ; + phelekezelan_V = mkV "phelekezelan" ; + phelekezelan_V2 = mkV2 "phelekezelan" ; + phelel_V = mkV "phelel" ; + phelel_V2 = mkV2 "phelel" ; + phelelis_V = mkV "phelelis" ; + phelelis_V2 = mkV2 "phelelis" ; + phelezel_V = mkV "phelezel" ; + phelezel_V2 = mkV2 "phelezel" ; + phelis_V = mkV "phelis" ; + phelis_V2 = mkV2 "phelis" ; + phemb_V = mkV "phemb" ; + phemb_V2 = mkV2 "phemb" ; + phembek_V = mkV "phembek" ; + phembek_V2 = mkV2 "phembek" ; + phembel_V = mkV "phembel" ; + phembel_V2 = mkV2 "phembel" ; + phenduk_V = mkV "phenduk" ; + phenduk_V2 = mkV2 "phenduk" ; + phendukel_V = mkV "phendukel" ; + phendukel_V2 = mkV2 "phendukel" ; + phendukezel_V = mkV "phendukezel" ; + phendukezel_V2 = mkV2 "phendukezel" ; + phendul_V = mkV "phendul" ; + phendul_V2 = mkV2 "phendul" ; + phendulan_V = mkV "phendulan" ; + phendulan_V2 = mkV2 "phendulan" ; + phendulek_V = mkV "phendulek" ; + phendulek_V2 = mkV2 "phendulek" ; + phendulel_V = mkV "phendulel" ; + phendulel_V2 = mkV2 "phendulel" ; + phenduphenduk_V = mkV "phenduphenduk" ; + phenduphenduk_V2 = mkV2 "phenduphenduk" ; + phenduphendul_V = mkV "phenduphendul" ; + phenduphendul_V2 = mkV2 "phenduphendul" ; + phengul_V = mkV "phengul" ; + phengul_V2 = mkV2 "phengul" ; + phenq_V = mkV "phenq" ; + phenq_V2 = mkV2 "phenq" ; + phenqul_V = mkV "phenqul" ; + phenqul_V2 = mkV2 "phenqul" ; + pheny_V = mkV "pheny" ; + pheny_V2 = mkV2 "pheny" ; + phenyan_V = mkV "phenyan" ; + phenyan_V2 = mkV2 "phenyan" ; + phenyapheny_V = mkV "phenyapheny" ; + phenyapheny_V2 = mkV2 "phenyapheny" ; + phenyel_V = mkV "phenyel" ; + phenyel_V2 = mkV2 "phenyel" ; + phenyisis_V = mkV "phenyisis" ; + phenyisis_V2 = mkV2 "phenyisis" ; + pheph_V = mkV "pheph" ; + pheph_V2 = mkV2 "pheph" ; + phephel_V = mkV "phephel" ; + phephel_V2 = mkV2 "phephel" ; + phepheth_V = mkV "phepheth" ; + phepheth_V2 = mkV2 "phepheth" ; + phephethek_V = mkV "phephethek" ; + phephethek_V2 = mkV2 "phephethek" ; + phephezel_V = mkV "phephezel" ; + phephezel_V2 = mkV2 "phephezel" ; + phephis_V = mkV "phephis" ; + phephis_V2 = mkV2 "phephis" ; + phephuk_V = mkV "phephuk" ; + phephuk_V2 = mkV2 "phephuk" ; + phephul_V = mkV "phephul" ; + phephul_V2 = mkV2 "phephul" ; + pheq_V = mkV "pheq" ; + pheq_V2 = mkV2 "pheq" ; + pheqel_V = mkV "pheqel" ; + pheqel_V2 = mkV2 "pheqel" ; + pheqez_V = mkV "pheqez" ; + pheqez_V2 = mkV2 "pheqez" ; + phequlul_V = mkV "phequlul" ; + phequlul_V2 = mkV2 "phequlul" ; + pheth_V = mkV "pheth" ; + pheth_V2 = mkV2 "pheth" ; + phethek_V = mkV "phethek" ; + phethek_V2 = mkV2 "phethek" ; + phethel_V = mkV "phethel" ; + phethel_V2 = mkV2 "phethel" ; + phethuk_V = mkV "phethuk" ; + phethuk_V2 = mkV2 "phethuk" ; + phethuz_V = mkV "phethuz" ; + phethuz_V2 = mkV2 "phethuz" ; + phez_V = mkV "phez" ; + phez_V2 = mkV2 "phez" ; + phic_V = mkV "phic" ; + phic_V2 = mkV2 "phic" ; + phihlik_V = mkV "phihlik" ; + phihlik_V2 = mkV2 "phihlik" ; + phihlikel_V = mkV "phihlikel" ; + phihlikel_V2 = mkV2 "phihlikel" ; + phihliz_V = mkV "phihliz" ; + phihliz_V2 = mkV2 "phihliz" ; + phihlizek_V = mkV "phihlizek" ; + phihlizek_V2 = mkV2 "phihlizek" ; + phik_V = mkV "phik" ; + phik_V2 = mkV2 "phik" ; + phikel_V = mkV "phikel" ; + phikel_V2 = mkV2 "phikel" ; + phikelel_V = mkV "phikelel" ; + phikelel_V2 = mkV2 "phikelel" ; + phikis_V = mkV "phikis" ; + phikis_V2 = mkV2 "phikis" ; + phikisan_V = mkV "phikisan" ; + phikisan_V2 = mkV2 "phikisan" ; + phil_V = mkV "phil" ; + phil_V2 = mkV2 "phil" ; + philek_V = mkV "philek" ; + philek_V2 = mkV2 "philek" ; + philel_V = mkV "philel" ; + philel_V2 = mkV2 "philel" ; + philis_V = mkV "philis" ; + philis_V2 = mkV2 "philis" ; + philisan_V = mkV "philisan" ; + philisan_V2 = mkV2 "philisan" ; + phimis_V = mkV "phimis" ; + phimis_V2 = mkV2 "phimis" ; + phimisel_V = mkV "phimisel" ; + phimisel_V2 = mkV2 "phimisel" ; + phimiselek_V = mkV "phimiselek" ; + phimiselek_V2 = mkV2 "phimiselek" ; + phind_V = mkV "phind" ; + phind_V2 = mkV2 "phind" ; + phindan_V = mkV "phindan" ; + phindan_V2 = mkV2 "phindan" ; + phindaphind_V = mkV "phindaphind" ; + phindaphind_V2 = mkV2 "phindaphind" ; + phindaphindek_V = mkV "phindaphindek" ; + phindaphindek_V2 = mkV2 "phindaphindek" ; + phindel_V = mkV "phindel" ; + phindel_V2 = mkV2 "phindel" ; + phindelel_V = mkV "phindelel" ; + phindelel_V2 = mkV2 "phindelel" ; + phindelisel_V = mkV "phindelisel" ; + phindelisel_V2 = mkV2 "phindelisel" ; + phindis_V = mkV "phindis" ; + phindis_V2 = mkV2 "phindis" ; + phindisel_V = mkV "phindisel" ; + phindisel_V2 = mkV2 "phindisel" ; + phindiselel_V = mkV "phindiselel" ; + phindiselel_V2 = mkV2 "phindiselel" ; + phing_V = mkV "phing" ; + phing_V2 = mkV2 "phing" ; + phinqilik_V = mkV "phinqilik" ; + phinqilik_V2 = mkV2 "phinqilik" ; + phiqik_V = mkV "phiqik" ; + phiqik_V2 = mkV2 "phiqik" ; + phisel_V = mkV "phisel" ; + phisel_V2 = mkV2 "phisel" ; + phithan_V = mkV "phithan" ; + phithan_V2 = mkV2 "phithan" ; + phithiz_V = mkV "phithiz" ; + phithiz_V2 = mkV2 "phithiz" ; + phithizel_V = mkV "phithizel" ; + phithizel_V2 = mkV2 "phithizel" ; + phofis_V = mkV "phofis" ; + phofis_V2 = mkV2 "phofis" ; + phohloz_V = mkV "phohloz" ; + phohloz_V2 = mkV2 "phohloz" ; + phokophel_V = mkV "phokophel" ; + phokophel_V2 = mkV2 "phokophel" ; + phokophelel_V = mkV "phokophelel" ; + phokophelel_V2 = mkV2 "phokophelel" ; + phol_V = mkV "phol" ; + phol_V2 = mkV2 "phol" ; + pholel_V = mkV "pholel" ; + pholel_V2 = mkV2 "pholel" ; + pholis_V = mkV "pholis" ; + pholis_V2 = mkV2 "pholis" ; + phons_V = mkV "phons" ; + phons_V2 = mkV2 "phons" ; + phonsek_V = mkV "phonsek" ; + phonsek_V2 = mkV2 "phonsek" ; + phonsel_V = mkV "phonsel" ; + phonsel_V2 = mkV2 "phonsel" ; + phophoth_V = mkV "phophoth" ; + phophoth_V2 = mkV2 "phophoth" ; + phophoz_V = mkV "phophoz" ; + phophoz_V2 = mkV2 "phophoz" ; + phoq_V = mkV "phoq" ; + phoq_V2 = mkV2 "phoq" ; + phoqek_V = mkV "phoqek" ; + phoqek_V2 = mkV2 "phoqek" ; + phoqelek_V = mkV "phoqelek" ; + phoqelek_V2 = mkV2 "phoqelek" ; + phoqelel_V = mkV "phoqelel" ; + phoqelel_V2 = mkV2 "phoqelel" ; + phoqok_V = mkV "phoqok" ; + phoqok_V2 = mkV2 "phoqok" ; + phoqoz_V = mkV "phoqoz" ; + phoqoz_V2 = mkV2 "phoqoz" ; + phos_V = mkV "phos" ; + phos_V2 = mkV2 "phos" ; + phosek_V = mkV "phosek" ; + phosek_V2 = mkV2 "phosek" ; + phosis_V = mkV "phosis" ; + phosis_V2 = mkV2 "phosis" ; + photh_V = mkV "photh" ; + photh_V2 = mkV2 "photh" ; + phothan_V = mkV "phothan" ; + phothan_V2 = mkV2 "phothan" ; + phothel_V = mkV "phothel" ; + phothel_V2 = mkV2 "phothel" ; + phothul_V = mkV "phothul" ; + phothul_V2 = mkV2 "phothul" ; + phox_V = mkV "phox" ; + phox_V2 = mkV2 "phox" ; + phoxan_V = mkV "phoxan" ; + phoxan_V2 = mkV2 "phoxan" ; + phoxek_V = mkV "phoxek" ; + phoxek_V2 = mkV2 "phoxek" ; + phoyis_V = mkV "phoyis" ; + phoyis_V2 = mkV2 "phoyis" ; + phoz_V = mkV "phoz" ; + phoz_V2 = mkV2 "phoz" ; + phozis_V = mkV "phozis" ; + phozis_V2 = mkV2 "phozis" ; + phuc_V = mkV "phuc" ; + phuc_V2 = mkV2 "phuc" ; + phucan_V = mkV "phucan" ; + phucan_V2 = mkV2 "phucan" ; + phucuk_V = mkV "phucuk" ; + phucuk_V2 = mkV2 "phucuk" ; + phucul_V = mkV "phucul" ; + phucul_V2 = mkV2 "phucul" ; + phucuzek_V = mkV "phucuzek" ; + phucuzek_V2 = mkV2 "phucuzek" ; + phuk_V = mkV "phuk" ; + phuk_V2 = mkV2 "phuk" ; + phukul_V = mkV "phukul" ; + phukul_V2 = mkV2 "phukul" ; + phukulel_V = mkV "phukulel" ; + phukulel_V2 = mkV2 "phukulel" ; + phul_V = mkV "phul" ; + phul_V2 = mkV2 "phul" ; + phulukundlel_V = mkV "phulukundlel" ; + phulukundlel_V2 = mkV2 "phulukundlel" ; + phulul_V = mkV "phulul" ; + phulul_V2 = mkV2 "phulul" ; + phuluz_V = mkV "phuluz" ; + phuluz_V2 = mkV2 "phuluz" ; + phum_V = mkV "phum" ; + phum_V2 = mkV2 "phum" ; + phumel_V = mkV "phumel" ; + phumel_V2 = mkV2 "phumel" ; + phumelel_V = mkV "phumelel" ; + phumelel_V2 = mkV2 "phumelel" ; + phumelelis_V = mkV "phumelelis" ; + phumelelis_V2 = mkV2 "phumelelis" ; + phumes_V = mkV "phumes" ; + phumes_V2 = mkV2 "phumes" ; + phumisan_V = mkV "phumisan" ; + phumisan_V2 = mkV2 "phumisan" ; + phumisel_V = mkV "phumisel" ; + phumisel_V2 = mkV2 "phumisel" ; + phumputh_V = mkV "phumputh" ; + phumputh_V2 = mkV2 "phumputh" ; + phumul_V = mkV "phumul" ; + phumul_V2 = mkV2 "phumul" ; + phumulel_V = mkV "phumulel" ; + phumulel_V2 = mkV2 "phumulel" ; + phumuz_V = mkV "phumuz" ; + phumuz_V2 = mkV2 "phumuz" ; + phung_V = mkV "phung" ; + phung_V2 = mkV2 "phung" ; + phungaphung_V = mkV "phungaphung" ; + phungaphung_V2 = mkV2 "phungaphung" ; + phungel_V = mkV "phungel" ; + phungel_V2 = mkV2 "phungel" ; + phunguk_V = mkV "phunguk" ; + phunguk_V2 = mkV2 "phunguk" ; + phungul_V = mkV "phungul" ; + phungul_V2 = mkV2 "phungul" ; + phungulel_V = mkV "phungulel" ; + phungulel_V2 = mkV2 "phungulel" ; + phunyuk_V = mkV "phunyuk" ; + phunyuk_V2 = mkV2 "phunyuk" ; + phunyul_V = mkV "phunyul" ; + phunyul_V2 = mkV2 "phunyul" ; + phunyulek_V = mkV "phunyulek" ; + phunyulek_V2 = mkV2 "phunyulek" ; + phunzan_V = mkV "phunzan" ; + phunzan_V2 = mkV2 "phunzan" ; + phuph_V = mkV "phuph" ; + phuph_V2 = mkV2 "phuph" ; + phuphum_V = mkV "phuphum" ; + phuphum_V2 = mkV2 "phuphum" ; + phuphuthek_V = mkV "phuphuthek" ; + phuphuthek_V2 = mkV2 "phuphuthek" ; + phuquk_V = mkV "phuquk" ; + phuquk_V2 = mkV2 "phuquk" ; + phus_V = mkV "phus" ; + phus_V2 = mkV2 "phus" ; + phush_V = mkV "phush" ; + phush_V2 = mkV2 "phush" ; + phuth_V = mkV "phuth" ; + phuth_V2 = mkV2 "phuth" ; + phuthaphuthaz_V = mkV "phuthaphuthaz" ; + phuthaphuthaz_V2 = mkV2 "phuthaphuthaz" ; + phuthaz_V = mkV "phuthaz" ; + phuthaz_V2 = mkV2 "phuthaz" ; + phuthazan_V = mkV "phuthazan" ; + phuthazan_V2 = mkV2 "phuthazan" ; + phuthisel_V = mkV "phuthisel" ; + phuthisel_V2 = mkV2 "phuthisel" ; + phuthum_V = mkV "phuthum" ; + phuthum_V2 = mkV2 "phuthum" ; + phuthumis_V = mkV "phuthumis" ; + phuthumis_V2 = mkV2 "phuthumis" ; + phuthuzel_V = mkV "phuthuzel" ; + phuthuzel_V2 = mkV2 "phuthuzel" ; + phuz_V = mkV "phuz" ; + phuz_V2 = mkV2 "phuz" ; + phuzaphuz_V = mkV "phuzaphuz" ; + phuzaphuz_V2 = mkV2 "phuzaphuz" ; + phuzel_V = mkV "phuzel" ; + phuzel_V2 = mkV2 "phuzel" ; + phuzelis_V = mkV "phuzelis" ; + phuzelis_V2 = mkV2 "phuzelis" ; + phuzis_V = mkV "phuzis" ; + phuzis_V2 = mkV2 "phuzis" ; + pikl_V = mkV "pikl" ; + pikl_V2 = mkV2 "pikl" ; + piklel_V = mkV "piklel" ; + piklel_V2 = mkV2 "piklel" ; + pok_V = mkV "pok" ; + pok_V2 = mkV2 "pok" ; + pos_V = mkV "pos" ; + pos_V2 = mkV2 "pos" ; + posel_V = mkV "posel" ; + posel_V2 = mkV2 "posel" ; + profeth_V = mkV "profeth" ; + profeth_V2 = mkV2 "profeth" ; + putshuk_V = mkV "putshuk" ; + putshuk_V2 = mkV2 "putshuk" ; + qabuk_V = mkV "qabuk" ; + qabuk_V2 = mkV2 "qabuk" ; + qabukek_V = mkV "qabukek" ; + qabukek_V2 = mkV2 "qabukek" ; + qabul_V = mkV "qabul" ; + qabul_V2 = mkV2 "qabul" ; + qagel_V = mkV "qagel" ; + qagel_V2 = mkV2 "qagel" ; + qagelis_V = mkV "qagelis" ; + qagelis_V2 = mkV2 "qagelis" ; + qagelisan_V = mkV "qagelisan" ; + qagelisan_V2 = mkV2 "qagelisan" ; + qagulisan_V = mkV "qagulisan" ; + qagulisan_V2 = mkV2 "qagulisan" ; + qak_V = mkV "qak" ; + qak_V2 = mkV2 "qak" ; + qakal_V = mkV "qakal" ; + qakal_V2 = mkV2 "qakal" ; + qal_V = mkV "qal" ; + qal_V2 = mkV2 "qal" ; + qalang_V = mkV "qalang" ; + qalang_V2 = mkV2 "qalang" ; + qalaqalaz_V = mkV "qalaqalaz" ; + qalaqalaz_V2 = mkV2 "qalaqalaz" ; + qalaz_V = mkV "qalaz" ; + qalaz_V2 = mkV2 "qalaz" ; + qalekis_V = mkV "qalekis" ; + qalekis_V2 = mkV2 "qalekis" ; + qalekisel_V = mkV "qalekisel" ; + qalekisel_V2 = mkV2 "qalekisel" ; + qalel_V = mkV "qalel" ; + qalel_V2 = mkV2 "qalel" ; + qalis_V = mkV "qalis" ; + qalis_V2 = mkV2 "qalis" ; + qamb_V = mkV "qamb" ; + qamb_V2 = mkV2 "qamb" ; + qambel_V = mkV "qambel" ; + qambel_V2 = mkV2 "qambel" ; + qamel_V = mkV "qamel" ; + qamel_V2 = mkV2 "qamel" ; + qand_V = mkV "qand" ; + qand_V2 = mkV2 "qand" ; + qandul_V = mkV "qandul" ; + qandul_V2 = mkV2 "qandul" ; + qandulek_V = mkV "qandulek" ; + qandulek_V2 = mkV2 "qandulek" ; + qang_V = mkV "qang" ; + qang_V2 = mkV2 "qang" ; + qanganis_V = mkV "qanganis" ; + qanganis_V2 = mkV2 "qanganis" ; + qanganisel_V = mkV "qanganisel" ; + qanganisel_V2 = mkV2 "qanganisel" ; + qangqathek_V = mkV "qangqathek" ; + qangqathek_V2 = mkV2 "qangqathek" ; + qans_V = mkV "qans" ; + qans_V2 = mkV2 "qans" ; + qanul_V = mkV "qanul" ; + qanul_V2 = mkV2 "qanul" ; + qaph_V = mkV "qaph" ; + qaph_V2 = mkV2 "qaph" ; + qaphaz_V = mkV "qaphaz" ; + qaphaz_V2 = mkV2 "qaphaz" ; + qaphel_V = mkV "qaphel" ; + qaphel_V2 = mkV2 "qaphel" ; + qaphelis_V = mkV "qaphelis" ; + qaphelis_V2 = mkV2 "qaphelis" ; + qaphelisis_V = mkV "qaphelisis" ; + qaphelisis_V2 = mkV2 "qaphelisis" ; + qaq_V = mkV "qaq" ; + qaq_V2 = mkV2 "qaq" ; + qaqamb_V = mkV "qaqamb" ; + qaqamb_V2 = mkV2 "qaqamb" ; + qaqek_V = mkV "qaqek" ; + qaqek_V2 = mkV2 "qaqek" ; + qaqel_V = mkV "qaqel" ; + qaqel_V2 = mkV2 "qaqel" ; + qaqelis_V = mkV "qaqelis" ; + qaqelis_V2 = mkV2 "qaqelis" ; + qaqulul_V = mkV "qaqulul" ; + qaqulul_V2 = mkV2 "qaqulul" ; + qash_V = mkV "qash" ; + qash_V2 = mkV2 "qash" ; + qashan_V = mkV "qashan" ; + qashan_V2 = mkV2 "qashan" ; + qashel_V = mkV "qashel" ; + qashel_V2 = mkV2 "qashel" ; + qashis_V = mkV "qashis" ; + qashis_V2 = mkV2 "qashis" ; + qashisel_V = mkV "qashisel" ; + qashisel_V2 = mkV2 "qashisel" ; + qath_V = mkV "qath" ; + qath_V2 = mkV2 "qath" ; + qathak_V = mkV "qathak" ; + qathak_V2 = mkV2 "qathak" ; + qathakel_V = mkV "qathakel" ; + qathakel_V2 = mkV2 "qathakel" ; + qathanis_V = mkV "qathanis" ; + qathanis_V2 = mkV2 "qathanis" ; + qathaz_V = mkV "qathaz" ; + qathaz_V2 = mkV2 "qathaz" ; + qav_V = mkV "qav" ; + qav_V2 = mkV2 "qav" ; + qed_V = mkV "qed" ; + qed_V2 = mkV2 "qed" ; + qedan_V = mkV "qedan" ; + qedan_V2 = mkV2 "qedan" ; + qedel_V = mkV "qedel" ; + qedel_V2 = mkV2 "qedel" ; + qedelel_V = mkV "qedelel" ; + qedelel_V2 = mkV2 "qedelel" ; + qekelelan_V = mkV "qekelelan" ; + qekelelan_V2 = mkV2 "qekelelan" ; + qeketh_V = mkV "qeketh" ; + qeketh_V2 = mkV2 "qeketh" ; + qembuk_V = mkV "qembuk" ; + qembuk_V2 = mkV2 "qembuk" ; + qengq_V = mkV "qengq" ; + qengq_V2 = mkV2 "qengq" ; + qephuz_V = mkV "qephuz" ; + qephuz_V2 = mkV2 "qephuz" ; + qephuzan_V = mkV "qephuzan" ; + qephuzan_V2 = mkV2 "qephuzan" ; + qeqebul_V = mkV "qeqebul" ; + qeqebul_V2 = mkV2 "qeqebul" ; + qeqesh_V = mkV "qeqesh" ; + qeqesh_V2 = mkV2 "qeqesh" ; + qeqeshel_V = mkV "qeqeshel" ; + qeqeshel_V2 = mkV2 "qeqeshel" ; + qethul_V = mkV "qethul" ; + qethul_V2 = mkV2 "qethul" ; + qhabaz_V = mkV "qhabaz" ; + qhabaz_V2 = mkV2 "qhabaz" ; + qhakaz_V = mkV "qhakaz" ; + qhakaz_V2 = mkV2 "qhakaz" ; + qham_V = mkV "qham" ; + qham_V2 = mkV2 "qham" ; + qhamuk_V = mkV "qhamuk" ; + qhamuk_V2 = mkV2 "qhamuk" ; + qhamukel_V = mkV "qhamukel" ; + qhamukel_V2 = mkV2 "qhamukel" ; + qhamukis_V = mkV "qhamukis" ; + qhamukis_V2 = mkV2 "qhamukis" ; + qhantsh_V = mkV "qhantsh" ; + qhantsh_V2 = mkV2 "qhantsh" ; + qhaqh_V = mkV "qhaqh" ; + qhaqh_V2 = mkV2 "qhaqh" ; + qhaqhazel_V = mkV "qhaqhazel" ; + qhaqhazel_V2 = mkV2 "qhaqhazel" ; + qhaqhek_V = mkV "qhaqhek" ; + qhaqhek_V2 = mkV2 "qhaqhek" ; + qhash_V = mkV "qhash" ; + qhash_V2 = mkV2 "qhash" ; + qhashaqhash_V = mkV "qhashaqhash" ; + qhashaqhash_V2 = mkV2 "qhashaqhash" ; + qhashis_V = mkV "qhashis" ; + qhashis_V2 = mkV2 "qhashis" ; + qhath_V = mkV "qhath" ; + qhath_V2 = mkV2 "qhath" ; + qhathanis_V = mkV "qhathanis" ; + qhathanis_V2 = mkV2 "qhathanis" ; + qhathek_V = mkV "qhathek" ; + qhathek_V2 = mkV2 "qhathek" ; + qhayis_V = mkV "qhayis" ; + qhayis_V2 = mkV2 "qhayis" ; + qhaz_V = mkV "qhaz" ; + qhaz_V2 = mkV2 "qhaz" ; + qhazan_V = mkV "qhazan" ; + qhazan_V2 = mkV2 "qhazan" ; + qhekez_V = mkV "qhekez" ; + qhekez_V2 = mkV2 "qhekez" ; + qhekezek_V = mkV "qhekezek" ; + qhekezek_V2 = mkV2 "qhekezek" ; + qhel_V = mkV "qhel" ; + qhel_V2 = mkV2 "qhel" ; + qhelel_V = mkV "qhelel" ; + qhelel_V2 = mkV2 "qhelel" ; + qhelelan_V = mkV "qhelelan" ; + qhelelan_V2 = mkV2 "qhelelan" ; + qheluk_V = mkV "qheluk" ; + qheluk_V2 = mkV2 "qheluk" ; + qhelukel_V = mkV "qhelukel" ; + qhelukel_V2 = mkV2 "qhelukel" ; + qhelukis_V = mkV "qhelukis" ; + qhelukis_V2 = mkV2 "qhelukis" ; + qheny_V = mkV "qheny" ; + qheny_V2 = mkV2 "qheny" ; + qhenyel_V = mkV "qhenyel" ; + qhenyel_V2 = mkV2 "qhenyel" ; + qhephuk_V = mkV "qhephuk" ; + qhephuk_V2 = mkV2 "qhephuk" ; + qheth_V = mkV "qheth" ; + qheth_V2 = mkV2 "qheth" ; + qhezuk_V = mkV "qhezuk" ; + qhezuk_V2 = mkV2 "qhezuk" ; + qhibuk_V = mkV "qhibuk" ; + qhibuk_V2 = mkV2 "qhibuk" ; + qhibul_V = mkV "qhibul" ; + qhibul_V2 = mkV2 "qhibul" ; + qhikiz_V = mkV "qhikiz" ; + qhikiz_V2 = mkV2 "qhikiz" ; + qhilik_V = mkV "qhilik" ; + qhilik_V2 = mkV2 "qhilik" ; + qhin_V = mkV "qhin" ; + qhin_V2 = mkV2 "qhin" ; + qhing_V = mkV "qhing" ; + qhing_V2 = mkV2 "qhing" ; + qhiyam_V = mkV "qhiyam" ; + qhiyam_V2 = mkV2 "qhiyam" ; + qhobozel_V = mkV "qhobozel" ; + qhobozel_V2 = mkV2 "qhobozel" ; + qhofoqhofoz_V = mkV "qhofoqhofoz" ; + qhofoqhofoz_V2 = mkV2 "qhofoqhofoz" ; + qhofoz_V = mkV "qhofoz" ; + qhofoz_V2 = mkV2 "qhofoz" ; + qhol_V = mkV "qhol" ; + qhol_V2 = mkV2 "qhol" ; + qholosh_V = mkV "qholosh" ; + qholosh_V2 = mkV2 "qholosh" ; + qholoshel_V = mkV "qholoshel" ; + qholoshel_V2 = mkV2 "qholoshel" ; + qhomoloz_V = mkV "qhomoloz" ; + qhomoloz_V2 = mkV2 "qhomoloz" ; + qhosh_V = mkV "qhosh" ; + qhosh_V2 = mkV2 "qhosh" ; + qhoshel_V = mkV "qhoshel" ; + qhoshel_V2 = mkV2 "qhoshel" ; + qhub_V = mkV "qhub" ; + qhub_V2 = mkV2 "qhub" ; + qhubek_V = mkV "qhubek" ; + qhubek_V2 = mkV2 "qhubek" ; + qhubekel_V = mkV "qhubekel" ; + qhubekel_V2 = mkV2 "qhubekel" ; + qhubel_V = mkV "qhubel" ; + qhubel_V2 = mkV2 "qhubel" ; + qhubukush_V = mkV "qhubukush" ; + qhubukush_V2 = mkV2 "qhubukush" ; + qhud_V = mkV "qhud" ; + qhud_V2 = mkV2 "qhud" ; + qhudelan_V = mkV "qhudelan" ; + qhudelan_V2 = mkV2 "qhudelan" ; + qhudul_V = mkV "qhudul" ; + qhudul_V2 = mkV2 "qhudul" ; + qhug_V = mkV "qhug" ; + qhug_V2 = mkV2 "qhug" ; + qhukuluz_V = mkV "qhukuluz" ; + qhukuluz_V2 = mkV2 "qhukuluz" ; + qhukuqhukuz_V = mkV "qhukuqhukuz" ; + qhukuqhukuz_V2 = mkV2 "qhukuqhukuz" ; + qhukuzan_V = mkV "qhukuzan" ; + qhukuzan_V2 = mkV2 "qhukuzan" ; + qhululel_V = mkV "qhululel" ; + qhululel_V2 = mkV2 "qhululel" ; + qhum_V = mkV "qhum" ; + qhum_V2 = mkV2 "qhum" ; + qhumbuk_V = mkV "qhumbuk" ; + qhumbuk_V2 = mkV2 "qhumbuk" ; + qhumis_V = mkV "qhumis" ; + qhumis_V2 = mkV2 "qhumis" ; + qhumuk_V = mkV "qhumuk" ; + qhumuk_V2 = mkV2 "qhumuk" ; + qhumuz_V = mkV "qhumuz" ; + qhumuz_V2 = mkV2 "qhumuz" ; + qhunsul_V = mkV "qhunsul" ; + qhunsul_V2 = mkV2 "qhunsul" ; + qhunsulek_V = mkV "qhunsulek" ; + qhunsulek_V2 = mkV2 "qhunsulek" ; + qhunsulel_V = mkV "qhunsulel" ; + qhunsulel_V2 = mkV2 "qhunsulel" ; + qhunsulelan_V = mkV "qhunsulelan" ; + qhunsulelan_V2 = mkV2 "qhunsulelan" ; + qhuqh_V = mkV "qhuqh" ; + qhuqh_V2 = mkV2 "qhuqh" ; + qhuqhumbel_V = mkV "qhuqhumbel" ; + qhuqhumbel_V2 = mkV2 "qhuqhumbel" ; + qhuth_V = mkV "qhuth" ; + qhuth_V2 = mkV2 "qhuth" ; + qhuzuk_V = mkV "qhuzuk" ; + qhuzuk_V2 = mkV2 "qhuzuk" ; + qhwabaz_V = mkV "qhwabaz" ; + qhwabaz_V2 = mkV2 "qhwabaz" ; + qhwag_V = mkV "qhwag" ; + qhwag_V2 = mkV2 "qhwag" ; + qhwakel_V = mkV "qhwakel" ; + qhwakel_V2 = mkV2 "qhwakel" ; + qhwand_V = mkV "qhwand" ; + qhwand_V2 = mkV2 "qhwand" ; + qhwandel_V = mkV "qhwandel" ; + qhwandel_V2 = mkV2 "qhwandel" ; + qhweb_V = mkV "qhweb" ; + qhweb_V2 = mkV2 "qhweb" ; + qhweban_V = mkV "qhweban" ; + qhweban_V2 = mkV2 "qhweban" ; + qhwish_V = mkV "qhwish" ; + qhwish_V2 = mkV2 "qhwish" ; + qikelel_V = mkV "qikelel" ; + qikelel_V2 = mkV2 "qikelel" ; + qikilek_V = mkV "qikilek" ; + qikilek_V2 = mkV2 "qikilek" ; + qin_V = mkV "qin" ; + qin_V2 = mkV2 "qin" ; + qinel_V = mkV "qinel" ; + qinel_V2 = mkV2 "qinel" ; + qinis_V = mkV "qinis" ; + qinis_V2 = mkV2 "qinis" ; + qinisek_V = mkV "qinisek" ; + qinisek_V2 = mkV2 "qinisek" ; + qinisekis_V = mkV "qinisekis" ; + qinisekis_V2 = mkV2 "qinisekis" ; + qinisel_V = mkV "qinisel" ; + qinisel_V2 = mkV2 "qinisel" ; + qiqing_V = mkV "qiqing" ; + qiqing_V2 = mkV2 "qiqing" ; + qob_V = mkV "qob" ; + qob_V2 = mkV2 "qob" ; + qobol_V = mkV "qobol" ; + qobol_V2 = mkV2 "qobol" ; + qojam_V = mkV "qojam" ; + qojam_V2 = mkV2 "qojam" ; + qok_V = mkV "qok" ; + qok_V2 = mkV2 "qok" ; + qokelel_V = mkV "qokelel" ; + qokelel_V2 = mkV2 "qokelel" ; + qom_V = mkV "qom" ; + qom_V2 = mkV2 "qom" ; + qombol_V = mkV "qombol" ; + qombol_V2 = mkV2 "qombol" ; + qomel_V = mkV "qomel" ; + qomel_V2 = mkV2 "qomel" ; + qomis_V = mkV "qomis" ; + qomis_V2 = mkV2 "qomis" ; + qomisek_V = mkV "qomisek" ; + qomisek_V2 = mkV2 "qomisek" ; + qond_V = mkV "qond" ; + qond_V2 = mkV2 "qond" ; + qondakal_V = mkV "qondakal" ; + qondakal_V2 = mkV2 "qondakal" ; + qondan_V = mkV "qondan" ; + qondan_V2 = mkV2 "qondan" ; + qondis_V = mkV "qondis" ; + qondis_V2 = mkV2 "qondis" ; + qondisis_V = mkV "qondisis" ; + qondisis_V2 = mkV2 "qondisis" ; + qonel_V = mkV "qonel" ; + qonel_V2 = mkV2 "qonel" ; + qong_V = mkV "qong" ; + qong_V2 = mkV2 "qong" ; + qongelel_V = mkV "qongelel" ; + qongelel_V2 = mkV2 "qongelel" ; + qongqoth_V = mkV "qongqoth" ; + qongqoth_V2 = mkV2 "qongqoth" ; + qoph_V = mkV "qoph" ; + qoph_V2 = mkV2 "qoph" ; + qophisan_V = mkV "qophisan" ; + qophisan_V2 = mkV2 "qophisan" ; + qoq_V = mkV "qoq" ; + qoq_V2 = mkV2 "qoq" ; + qoqan_V = mkV "qoqan" ; + qoqan_V2 = mkV2 "qoqan" ; + qoqaqoq_V = mkV "qoqaqoq" ; + qoqaqoq_V2 = mkV2 "qoqaqoq" ; + qoqek_V = mkV "qoqek" ; + qoqek_V2 = mkV2 "qoqek" ; + qoqekel_V = mkV "qoqekel" ; + qoqekel_V2 = mkV2 "qoqekel" ; + qoqel_V = mkV "qoqel" ; + qoqel_V2 = mkV2 "qoqel" ; + qosham_V = mkV "qosham" ; + qosham_V2 = mkV2 "qosham" ; + qoth_V = mkV "qoth" ; + qoth_V2 = mkV2 "qoth" ; + qothel_V = mkV "qothel" ; + qothel_V2 = mkV2 "qothel" ; + qothuk_V = mkV "qothuk" ; + qothuk_V2 = mkV2 "qothuk" ; + qothukel_V = mkV "qothukel" ; + qothukel_V2 = mkV2 "qothukel" ; + qothul_V = mkV "qothul" ; + qothul_V2 = mkV2 "qothul" ; + qub_V = mkV "qub" ; + qub_V2 = mkV2 "qub" ; + qubek_V = mkV "qubek" ; + qubek_V2 = mkV2 "qubek" ; + qubuk_V = mkV "qubuk" ; + qubuk_V2 = mkV2 "qubuk" ; + qubul_V = mkV "qubul" ; + qubul_V2 = mkV2 "qubul" ; + qukath_V = mkV "qukath" ; + qukath_V2 = mkV2 "qukath" ; + qukul_V = mkV "qukul" ; + qukul_V2 = mkV2 "qukul" ; + qukulan_V = mkV "qukulan" ; + qukulan_V2 = mkV2 "qukulan" ; + qul_V = mkV "qul" ; + qul_V2 = mkV2 "qul" ; + qulek_V = mkV "qulek" ; + qulek_V2 = mkV2 "qulek" ; + qulel_V = mkV "qulel" ; + qulel_V2 = mkV2 "qulel" ; + qulus_V = mkV "qulus" ; + qulus_V2 = mkV2 "qulus" ; + qumb_V = mkV "qumb" ; + qumb_V2 = mkV2 "qumb" ; + qumbek_V = mkV "qumbek" ; + qumbek_V2 = mkV2 "qumbek" ; + qumbelan_V = mkV "qumbelan" ; + qumbelan_V2 = mkV2 "qumbelan" ; + qundek_V = mkV "qundek" ; + qundek_V2 = mkV2 "qundek" ; + qung_V = mkV "qung" ; + qung_V2 = mkV2 "qung" ; + quny_V = mkV "quny" ; + quny_V2 = mkV2 "quny" ; + quph_V = mkV "quph" ; + quph_V2 = mkV2 "quph" ; + ququbal_V = mkV "ququbal" ; + ququbal_V2 = mkV2 "ququbal" ; + ququd_V = mkV "ququd" ; + ququd_V2 = mkV2 "ququd" ; + qwash_V = mkV "qwash" ; + qwash_V2 = mkV2 "qwash" ; + qwashis_V = mkV "qwashis" ; + qwashis_V2 = mkV2 "qwashis" ; + s_V = mkV "s" ; + s_V2 = mkV2 "s" ; + sab_V = mkV "sab" ; + sab_V2 = mkV2 "sab" ; + sabalal_V = mkV "sabalal" ; + sabalal_V2 = mkV2 "sabalal" ; + sabalalis_V = mkV "sabalalis" ; + sabalalis_V2 = mkV2 "sabalalis" ; + sabek_V = mkV "sabek" ; + sabek_V2 = mkV2 "sabek" ; + sabel_V = mkV "sabel" ; + sabel_V2 = mkV2 "sabel" ; + sadukelan_V = mkV "sadukelan" ; + sadukelan_V2 = mkV2 "sadukelan" ; + safun_V = mkV "safun" ; + safun_V2 = mkV2 "safun" ; + safunan_V = mkV "safunan" ; + safunan_V2 = mkV2 "safunan" ; + safunek_V = mkV "safunek" ; + safunek_V2 = mkV2 "safunek" ; + safunisel_V = mkV "safunisel" ; + safunisel_V2 = mkV2 "safunisel" ; + sah_V = mkV "sah" ; + sah_V2 = mkV2 "sah" ; + sakaz_V = mkV "sakaz" ; + sakaz_V2 = mkV2 "sakaz" ; + sakazan_V = mkV "sakazan" ; + sakazan_V2 = mkV2 "sakazan" ; + sakazek_V = mkV "sakazek" ; + sakazek_V2 = mkV2 "sakazek" ; + sakazel_V = mkV "sakazel" ; + sakazel_V2 = mkV2 "sakazel" ; + sal_V = mkV "sal" ; + sal_V2 = mkV2 "sal" ; + salel_V = mkV "salel" ; + salel_V2 = mkV2 "salel" ; + sambathek_V = mkV "sambathek" ; + sambathek_V2 = mkV2 "sambathek" ; + san_V = mkV "san" ; + san_V2 = mkV2 "san" ; + sanel_V = mkV "sanel" ; + sanel_V2 = mkV2 "sanel" ; + sangan_V = mkV "sangan" ; + sangan_V2 = mkV2 "sangan" ; + sanganis_V = mkV "sanganis" ; + sanganis_V2 = mkV2 "sanganis" ; + sanguluk_V = mkV "sanguluk" ; + sanguluk_V2 = mkV2 "sanguluk" ; + sangulukel_V = mkV "sangulukel" ; + sangulukel_V2 = mkV2 "sangulukel" ; + saphaz_V = mkV "saphaz" ; + saphaz_V2 = mkV2 "saphaz" ; + sas_V = mkV "sas" ; + sas_V2 = mkV2 "sas" ; + sasel_V = mkV "sasel" ; + sasel_V2 = mkV2 "sasel" ; + sath_V = mkV "sath" ; + sath_V2 = mkV2 "sath" ; + sathan_V = mkV "sathan" ; + sathan_V2 = mkV2 "sathan" ; + sathelek_V = mkV "sathelek" ; + sathelek_V2 = mkV2 "sathelek" ; + sathelelan_V = mkV "sathelelan" ; + sathelelan_V2 = mkV2 "sathelelan" ; + savun_V = mkV "savun" ; + savun_V2 = mkV2 "savun" ; + savunel_V = mkV "savunel" ; + savunel_V2 = mkV2 "savunel" ; + sayin_V = mkV "sayin" ; + sayin_V2 = mkV2 "sayin" ; + sayinel_V = mkV "sayinel" ; + sayinel_V2 = mkV2 "sayinel" ; + sebenz_V = mkV "sebenz" ; + sebenz_V2 = mkV2 "sebenz" ; + sebenzan_V = mkV "sebenzan" ; + sebenzan_V2 = mkV2 "sebenzan" ; + sebenzek_V = mkV "sebenzek" ; + sebenzek_V2 = mkV2 "sebenzek" ; + sebenzel_V = mkV "sebenzel" ; + sebenzel_V2 = mkV2 "sebenzel" ; + sebenzelan_V = mkV "sebenzelan" ; + sebenzelan_V2 = mkV2 "sebenzelan" ; + sebenzis_V = mkV "sebenzis" ; + sebenzis_V2 = mkV2 "sebenzis" ; + sebenzisan_V = mkV "sebenzisan" ; + sebenzisan_V2 = mkV2 "sebenzisan" ; + sebenzisek_V = mkV "sebenzisek" ; + sebenzisek_V2 = mkV2 "sebenzisek" ; + sebenzisel_V = mkV "sebenzisel" ; + sebenzisel_V2 = mkV2 "sebenzisel" ; + sebesebenz_V = mkV "sebesebenz" ; + sebesebenz_V2 = mkV2 "sebesebenz" ; + sef_V = mkV "sef" ; + sef_V2 = mkV2 "sef" ; + sefan_V = mkV "sefan" ; + sefan_V2 = mkV2 "sefan" ; + sefanel_V = mkV "sefanel" ; + sefanel_V2 = mkV2 "sefanel" ; + sefis_V = mkV "sefis" ; + sefis_V2 = mkV2 "sefis" ; + sek_V = mkV "sek" ; + sek_V2 = mkV2 "sek" ; + sekel_V = mkV "sekel" ; + sekel_V2 = mkV2 "sekel" ; + sel_V = mkV "sel" ; + sel_V2 = mkV2 "sel" ; + selekelel_V = mkV "selekelel" ; + selekelel_V2 = mkV2 "selekelel" ; + selel_V = mkV "selel" ; + selel_V2 = mkV2 "selel" ; + send_V = mkV "send" ; + send_V2 = mkV2 "send" ; + sendel_V = mkV "sendel" ; + sendel_V2 = mkV2 "sendel" ; + seng_V = mkV "seng" ; + seng_V2 = mkV2 "seng" ; + sengan_V = mkV "sengan" ; + sengan_V2 = mkV2 "sengan" ; + senganek_V = mkV "senganek" ; + senganek_V2 = mkV2 "senganek" ; + sesh_V = mkV "sesh" ; + sesh_V2 = mkV2 "sesh" ; + seshis_V = mkV "seshis" ; + seshis_V2 = mkV2 "seshis" ; + seshisek_V = mkV "seshisek" ; + seshisek_V2 = mkV2 "seshisek" ; + sev_V = mkV "sev" ; + sev_V2 = mkV2 "sev" ; + sevel_V = mkV "sevel" ; + sevel_V2 = mkV2 "sevel" ; + sevul_V = mkV "sevul" ; + sevul_V2 = mkV2 "sevul" ; + sevulek_V = mkV "sevulek" ; + sevulek_V2 = mkV2 "sevulek" ; + sevuzel_V = mkV "sevuzel" ; + sevuzel_V2 = mkV2 "sevuzel" ; + sewuz_V = mkV "sewuz" ; + sewuz_V2 = mkV2 "sewuz" ; + sez_V = mkV "sez" ; + sez_V2 = mkV2 "sez" ; + sh_V = mkV "sh" ; + sh_V2 = mkV2 "sh" ; + shab_V = mkV "shab" ; + shab_V2 = mkV2 "shab" ; + shabalal_V = mkV "shabalal" ; + shabalal_V2 = mkV2 "shabalal" ; + shabashek_V = mkV "shabashek" ; + shabashek_V2 = mkV2 "shabashek" ; + shad_V = mkV "shad" ; + shad_V2 = mkV2 "shad" ; + shadel_V = mkV "shadel" ; + shadel_V2 = mkV2 "shadel" ; + shadis_V = mkV "shadis" ; + shadis_V2 = mkV2 "shadis" ; + shalaz_V = mkV "shalaz" ; + shalaz_V2 = mkV2 "shalaz" ; + shalazel_V = mkV "shalazel" ; + shalazel_V2 = mkV2 "shalazel" ; + shalushaluz_V = mkV "shalushaluz" ; + shalushaluz_V2 = mkV2 "shalushaluz" ; + shaluz_V = mkV "shaluz" ; + shaluz_V2 = mkV2 "shaluz" ; + shaluzis_V = mkV "shaluzis" ; + shaluzis_V2 = mkV2 "shaluzis" ; + shan_V = mkV "shan" ; + shan_V2 = mkV2 "shan" ; + shanel_V = mkV "shanel" ; + shanel_V2 = mkV2 "shanel" ; + shaq_V = mkV "shaq" ; + shaq_V2 = mkV2 "shaq" ; + shaqan_V = mkV "shaqan" ; + shaqan_V2 = mkV2 "shaqan" ; + shaqek_V = mkV "shaqek" ; + shaqek_V2 = mkV2 "shaqek" ; + shaqis_V = mkV "shaqis" ; + shaqis_V2 = mkV2 "shaqis" ; + shawul_V = mkV "shawul" ; + shawul_V2 = mkV2 "shawul" ; + shawulel_V = mkV "shawulel" ; + shawulel_V2 = mkV2 "shawulel" ; + shay_V = mkV "shay" ; + shay_V2 = mkV2 "shay" ; + shayan_V = mkV "shayan" ; + shayan_V2 = mkV2 "shayan" ; + shayanis_V = mkV "shayanis" ; + shayanis_V2 = mkV2 "shayanis" ; + shayek_V = mkV "shayek" ; + shayek_V2 = mkV2 "shayek" ; + shayel_V = mkV "shayel" ; + shayel_V2 = mkV2 "shayel" ; + shayelek_V = mkV "shayelek" ; + shayelek_V2 = mkV2 "shayelek" ; + shayelel_V = mkV "shayelel" ; + shayelel_V2 = mkV2 "shayelel" ; + shayis_V = mkV "shayis" ; + shayis_V2 = mkV2 "shayis" ; + shayisan_V = mkV "shayisan" ; + shayisan_V2 = mkV2 "shayisan" ; + shayisek_V = mkV "shayisek" ; + shayisek_V2 = mkV2 "shayisek" ; + sheb_V = mkV "sheb" ; + sheb_V2 = mkV2 "sheb" ; + shebelez_V = mkV "shebelez" ; + shebelez_V2 = mkV2 "shebelez" ; + shekelel_V = mkV "shekelel" ; + shekelel_V2 = mkV2 "shekelel" ; + shel_V = mkV "shel" ; + shel_V2 = mkV2 "shel" ; + shelel_V = mkV "shelel" ; + shelel_V2 = mkV2 "shelel" ; + shelelekis_V = mkV "shelelekis" ; + shelelekis_V2 = mkV2 "shelelekis" ; + shendel_V = mkV "shendel" ; + shendel_V2 = mkV2 "shendel" ; + shesh_V = mkV "shesh" ; + shesh_V2 = mkV2 "shesh" ; + sheshek_V = mkV "sheshek" ; + sheshek_V2 = mkV2 "sheshek" ; + sheshel_V = mkV "sheshel" ; + sheshel_V2 = mkV2 "sheshel" ; + sheshis_V = mkV "sheshis" ; + sheshis_V2 = mkV2 "sheshis" ; + shibh_V = mkV "shibh" ; + shibh_V2 = mkV2 "shibh" ; + shibhis_V = mkV "shibhis" ; + shibhis_V2 = mkV2 "shibhis" ; + shibilik_V = mkV "shibilik" ; + shibilik_V2 = mkV2 "shibilik" ; + shikashik_V = mkV "shikashik" ; + shikashik_V2 = mkV2 "shikashik" ; + shikashikek_V = mkV "shikashikek" ; + shikashikek_V2 = mkV2 "shikashikek" ; + shikil_V = mkV "shikil" ; + shikil_V2 = mkV2 "shikil" ; + shikilis_V = mkV "shikilis" ; + shikilis_V2 = mkV2 "shikilis" ; + shikilisan_V = mkV "shikilisan" ; + shikilisan_V2 = mkV2 "shikilisan" ; + shikizel_V = mkV "shikizel" ; + shikizel_V2 = mkV2 "shikizel" ; + shikizelel_V = mkV "shikizelel" ; + shikizelel_V2 = mkV2 "shikizelel" ; + shing_V = mkV "shing" ; + shing_V2 = mkV2 "shing" ; + shingan_V = mkV "shingan" ; + shingan_V2 = mkV2 "shingan" ; + shingil_V = mkV "shingil" ; + shingil_V2 = mkV2 "shingil" ; + shintsh_V = mkV "shintsh" ; + shintsh_V2 = mkV2 "shintsh" ; + shintshan_V = mkV "shintshan" ; + shintshan_V2 = mkV2 "shintshan" ; + shintshashintsh_V = mkV "shintshashintsh" ; + shintshashintsh_V2 = mkV2 "shintshashintsh" ; + shintshel_V = mkV "shintshel" ; + shintshel_V2 = mkV2 "shintshel" ; + shiphizel_V = mkV "shiphizel" ; + shiphizel_V2 = mkV2 "shiphizel" ; + shiqelek_V = mkV "shiqelek" ; + shiqelek_V2 = mkV2 "shiqelek" ; + shis_V = mkV "shis" ; + shis_V2 = mkV2 "shis" ; + shisek_V = mkV "shisek" ; + shisek_V2 = mkV2 "shisek" ; + shisekel_V = mkV "shisekel" ; + shisekel_V2 = mkV2 "shisekel" ; + shisel_V = mkV "shisel" ; + shisel_V2 = mkV2 "shisel" ; + shiselan_V = mkV "shiselan" ; + shiselan_V2 = mkV2 "shiselan" ; + shishiliz_V = mkV "shishiliz" ; + shishiliz_V2 = mkV2 "shishiliz" ; + shishizel_V = mkV "shishizel" ; + shishizel_V2 = mkV2 "shishizel" ; + shisis_V = mkV "shisis" ; + shisis_V2 = mkV2 "shisis" ; + shiy_V = mkV "shiy" ; + shiy_V2 = mkV2 "shiy" ; + shiyek_V = mkV "shiyek" ; + shiyek_V2 = mkV2 "shiyek" ; + shiyel_V = mkV "shiyel" ; + shiyel_V2 = mkV2 "shiyel" ; + shiyis_V = mkV "shiyis" ; + shiyis_V2 = mkV2 "shiyis" ; + shob_V = mkV "shob" ; + shob_V2 = mkV2 "shob" ; + shoban_V = mkV "shoban" ; + shoban_V2 = mkV2 "shoban" ; + shok_V = mkV "shok" ; + shok_V2 = mkV2 "shok" ; + shokek_V = mkV "shokek" ; + shokek_V2 = mkV2 "shokek" ; + shokel_V = mkV "shokel" ; + shokel_V2 = mkV2 "shokel" ; + shokobez_V = mkV "shokobez" ; + shokobez_V2 = mkV2 "shokobez" ; + shol_V = mkV "shol" ; + shol_V2 = mkV2 "shol" ; + shoman_V = mkV "shoman" ; + shoman_V2 = mkV2 "shoman" ; + shon_V = mkV "shon" ; + shon_V2 = mkV2 "shon" ; + shonel_V = mkV "shonel" ; + shonel_V2 = mkV2 "shonel" ; + shonis_V = mkV "shonis" ; + shonis_V2 = mkV2 "shonis" ; + shosh_V = mkV "shosh" ; + shosh_V2 = mkV2 "shosh" ; + shoshel_V = mkV "shoshel" ; + shoshel_V2 = mkV2 "shoshel" ; + shoshozel_V = mkV "shoshozel" ; + shoshozel_V2 = mkV2 "shoshozel" ; + shov_V = mkV "shov" ; + shov_V2 = mkV2 "shov" ; + shub_V = mkV "shub" ; + shub_V2 = mkV2 "shub" ; + shubis_V = mkV "shubis" ; + shubis_V2 = mkV2 "shubis" ; + shud_V = mkV "shud" ; + shud_V2 = mkV2 "shud" ; + shudul_V = mkV "shudul" ; + shudul_V2 = mkV2 "shudul" ; + shudulisan_V = mkV "shudulisan" ; + shudulisan_V2 = mkV2 "shudulisan" ; + shuk_V = mkV "shuk" ; + shuk_V2 = mkV2 "shuk" ; + shukel_V = mkV "shukel" ; + shukel_V2 = mkV2 "shukel" ; + shukelan_V = mkV "shukelan" ; + shukelan_V2 = mkV2 "shukelan" ; + shukum_V = mkV "shukum" ; + shukum_V2 = mkV2 "shukum" ; + shukumis_V = mkV "shukumis" ; + shukumis_V2 = mkV2 "shukumis" ; + shum_V = mkV "shum" ; + shum_V2 = mkV2 "shum" ; + shumayel_V = mkV "shumayel" ; + shumayel_V2 = mkV2 "shumayel" ; + shumayez_V = mkV "shumayez" ; + shumayez_V2 = mkV2 "shumayez" ; + shumek_V = mkV "shumek" ; + shumek_V2 = mkV2 "shumek" ; + shumpul_V = mkV "shumpul" ; + shumpul_V2 = mkV2 "shumpul" ; + shumpulel_V = mkV "shumpulel" ; + shumpulel_V2 = mkV2 "shumpulel" ; + shunq_V = mkV "shunq" ; + shunq_V2 = mkV2 "shunq" ; + shunqis_V = mkV "shunqis" ; + shunqis_V2 = mkV2 "shunqis" ; + shunqisel_V = mkV "shunqisel" ; + shunqisel_V2 = mkV2 "shunqisel" ; + shuqelan_V = mkV "shuqelan" ; + shuqelan_V2 = mkV2 "shuqelan" ; + shuqis_V = mkV "shuqis" ; + shuqis_V2 = mkV2 "shuqis" ; + shuqul_V = mkV "shuqul" ; + shuqul_V2 = mkV2 "shuqul" ; + shuqungan_V = mkV "shuqungan" ; + shuqungan_V2 = mkV2 "shuqungan" ; + shushuluz_V = mkV "shushuluz" ; + shushuluz_V2 = mkV2 "shushuluz" ; + shushumb_V = mkV "shushumb" ; + shushumb_V2 = mkV2 "shushumb" ; + shushumbis_V = mkV "shushumbis" ; + shushumbis_V2 = mkV2 "shushumbis" ; + shuthek_V = mkV "shuthek" ; + shuthek_V2 = mkV2 "shuthek" ; + shwabadel_V = mkV "shwabadel" ; + shwabadel_V2 = mkV2 "shwabadel" ; + shwaban_V = mkV "shwaban" ; + shwaban_V2 = mkV2 "shwaban" ; + shwaph_V = mkV "shwaph" ; + shwaph_V2 = mkV2 "shwaph" ; + shwaphuluz_V = mkV "shwaphuluz" ; + shwaphuluz_V2 = mkV2 "shwaphuluz" ; + shwaq_V = mkV "shwaq" ; + shwaq_V2 = mkV2 "shwaq" ; + shwathiz_V = mkV "shwathiz" ; + shwathiz_V2 = mkV2 "shwathiz" ; + shwelez_V = mkV "shwelez" ; + shwelez_V2 = mkV2 "shwelez" ; + shwez_V = mkV "shwez" ; + shwez_V2 = mkV2 "shwez" ; + shwib_V = mkV "shwib" ; + shwib_V2 = mkV2 "shwib" ; + shwibek_V = mkV "shwibek" ; + shwibek_V2 = mkV2 "shwibek" ; + shwiliz_V = mkV "shwiliz" ; + shwiliz_V2 = mkV2 "shwiliz" ; + sibekel_V = mkV "sibekel" ; + sibekel_V2 = mkV2 "sibekel" ; + sibekelan_V = mkV "sibekelan" ; + sibekelan_V2 = mkV2 "sibekelan" ; + sihl_V = mkV "sihl" ; + sihl_V2 = mkV2 "sihl" ; + sihlakal_V = mkV "sihlakal" ; + sihlakal_V2 = mkV2 "sihlakal" ; + sihlek_V = mkV "sihlek" ; + sihlek_V2 = mkV2 "sihlek" ; + sihlekis_V = mkV "sihlekis" ; + sihlekis_V2 = mkV2 "sihlekis" ; + sihlel_V = mkV "sihlel" ; + sihlel_V2 = mkV2 "sihlel" ; + sihlelek_V = mkV "sihlelek" ; + sihlelek_V2 = mkV2 "sihlelek" ; + sihlis_V = mkV "sihlis" ; + sihlis_V2 = mkV2 "sihlis" ; + sik_V = mkV "sik" ; + sik_V2 = mkV2 "sik" ; + sikan_V = mkV "sikan" ; + sikan_V2 = mkV2 "sikan" ; + sikaz_V = mkV "sikaz" ; + sikaz_V2 = mkV2 "sikaz" ; + sikek_V = mkV "sikek" ; + sikek_V2 = mkV2 "sikek" ; + sikel_V = mkV "sikel" ; + sikel_V2 = mkV2 "sikel" ; + sil_V = mkV "sil" ; + sil_V2 = mkV2 "sil" ; + silal_V = mkV "silal" ; + silal_V2 = mkV2 "silal" ; + silalel_V = mkV "silalel" ; + silalel_V2 = mkV2 "silalel" ; + silaz_V = mkV "silaz" ; + silaz_V2 = mkV2 "silaz" ; + silekelel_V = mkV "silekelel" ; + silekelel_V2 = mkV2 "silekelel" ; + silel_V = mkV "silel" ; + silel_V2 = mkV2 "silel" ; + silis_V = mkV "silis" ; + silis_V2 = mkV2 "silis" ; + simam_V = mkV "simam" ; + simam_V2 = mkV2 "simam" ; + simamis_V = mkV "simamis" ; + simamis_V2 = mkV2 "simamis" ; + simbuk_V = mkV "simbuk" ; + simbuk_V2 = mkV2 "simbuk" ; + sin_V = mkV "sin" ; + sin_V2 = mkV2 "sin" ; + sinan_V = mkV "sinan" ; + sinan_V2 = mkV2 "sinan" ; + sind_V = mkV "sind" ; + sind_V2 = mkV2 "sind" ; + sindan_V = mkV "sindan" ; + sindan_V2 = mkV2 "sindan" ; + sindel_V = mkV "sindel" ; + sindel_V2 = mkV2 "sindel" ; + sindis_V = mkV "sindis" ; + sindis_V2 = mkV2 "sindis" ; + sinek_V = mkV "sinek" ; + sinek_V2 = mkV2 "sinek" ; + sinekis_V = mkV "sinekis" ; + sinekis_V2 = mkV2 "sinekis" ; + sinel_V = mkV "sinel" ; + sinel_V2 = mkV2 "sinel" ; + sinelan_V = mkV "sinelan" ; + sinelan_V2 = mkV2 "sinelan" ; + sinelek_V = mkV "sinelek" ; + sinelek_V2 = mkV2 "sinelek" ; + sing_V = mkV "sing" ; + sing_V2 = mkV2 "sing" ; + singan_V = mkV "singan" ; + singan_V2 = mkV2 "singan" ; + singath_V = mkV "singath" ; + singath_V2 = mkV2 "singath" ; + singek_V = mkV "singek" ; + singek_V2 = mkV2 "singek" ; + sinis_V = mkV "sinis" ; + sinis_V2 = mkV2 "sinis" ; + siny_V = mkV "siny" ; + siny_V2 = mkV2 "siny" ; + siphuk_V = mkV "siphuk" ; + siphuk_V2 = mkV2 "siphuk" ; + siphul_V = mkV "siphul" ; + siphul_V2 = mkV2 "siphul" ; + siphuz_V = mkV "siphuz" ; + siphuz_V2 = mkV2 "siphuz" ; + siphuzelis_V = mkV "siphuzelis" ; + siphuzelis_V2 = mkV2 "siphuzelis" ; + sis_V = mkV "sis" ; + sis_V2 = mkV2 "sis" ; + sisek_V = mkV "sisek" ; + sisek_V2 = mkV2 "sisek" ; + sisel_V = mkV "sisel" ; + sisel_V2 = mkV2 "sisel" ; + sising_V = mkV "sising" ; + sising_V2 = mkV2 "sising" ; + sisithek_V = mkV "sisithek" ; + sisithek_V2 = mkV2 "sisithek" ; + sith_V = mkV "sith" ; + sith_V2 = mkV2 "sith" ; + sithek_V = mkV "sithek" ; + sithek_V2 = mkV2 "sithek" ; + sithel_V = mkV "sithel" ; + sithel_V2 = mkV2 "sithel" ; + sithelekel_V = mkV "sithelekel" ; + sithelekel_V2 = mkV2 "sithelekel" ; + sithelel_V = mkV "sithelel" ; + sithelel_V2 = mkV2 "sithelel" ; + sithelis_V = mkV "sithelis" ; + sithelis_V2 = mkV2 "sithelis" ; + sithibez_V = mkV "sithibez" ; + sithibez_V2 = mkV2 "sithibez" ; + siz_V = mkV "siz" ; + siz_V2 = mkV2 "siz" ; + sizakal_V = mkV "sizakal" ; + sizakal_V2 = mkV2 "sizakal" ; + sizan_V = mkV "sizan" ; + sizan_V2 = mkV2 "sizan" ; + sizanelis_V = mkV "sizanelis" ; + sizanelis_V2 = mkV2 "sizanelis" ; + sizekel_V = mkV "sizekel" ; + sizekel_V2 = mkV2 "sizekel" ; + sizil_V = mkV "sizil" ; + sizil_V2 = mkV2 "sizil" ; + sizis_V = mkV "sizis" ; + sizis_V2 = mkV2 "sizis" ; + sobozel_V = mkV "sobozel" ; + sobozel_V2 = mkV2 "sobozel" ; + sobozelis_V = mkV "sobozelis" ; + sobozelis_V2 = mkV2 "sobozelis" ; + sok_V = mkV "sok" ; + sok_V2 = mkV2 "sok" ; + sokel_V = mkV "sokel" ; + sokel_V2 = mkV2 "sokel" ; + sokol_V = mkV "sokol" ; + sokol_V2 = mkV2 "sokol" ; + sol_V = mkV "sol" ; + sol_V2 = mkV2 "sol" ; + solasol_V = mkV "solasol" ; + solasol_V2 = mkV2 "solasol" ; + solasolek_V = mkV "solasolek" ; + solasolek_V2 = mkV2 "solasolek" ; + solek_V = mkV "solek" ; + solek_V2 = mkV2 "solek" ; + solel_V = mkV "solel" ; + solel_V2 = mkV2 "solel" ; + solis_V = mkV "solis" ; + solis_V2 = mkV2 "solis" ; + som_V = mkV "som" ; + som_V2 = mkV2 "som" ; + sombuluk_V = mkV "sombuluk" ; + sombuluk_V2 = mkV2 "sombuluk" ; + sombulul_V = mkV "sombulul" ; + sombulul_V2 = mkV2 "sombulul" ; + sombululek_V = mkV "sombululek" ; + sombululek_V2 = mkV2 "sombululek" ; + sondel_V = mkV "sondel" ; + sondel_V2 = mkV2 "sondel" ; + sondelan_V = mkV "sondelan" ; + sondelan_V2 = mkV2 "sondelan" ; + sondelanis_V = mkV "sondelanis" ; + sondelanis_V2 = mkV2 "sondelanis" ; + sondez_V = mkV "sondez" ; + sondez_V2 = mkV2 "sondez" ; + sondezel_V = mkV "sondezel" ; + sondezel_V2 = mkV2 "sondezel" ; + song_V = mkV "song" ; + song_V2 = mkV2 "song" ; + songan_V = mkV "songan" ; + songan_V2 = mkV2 "songan" ; + songasong_V = mkV "songasong" ; + songasong_V2 = mkV2 "songasong" ; + songel_V = mkV "songel" ; + songel_V2 = mkV2 "songel" ; + sont_V = mkV "sont" ; + sont_V2 = mkV2 "sont" ; + sontan_V = mkV "sontan" ; + sontan_V2 = mkV2 "sontan" ; + sontasont_V = mkV "sontasont" ; + sontasont_V2 = mkV2 "sontasont" ; + sontis_V = mkV "sontis" ; + sontis_V2 = mkV2 "sontis" ; + soph_V = mkV "soph" ; + soph_V2 = mkV2 "soph" ; + sub_V = mkV "sub" ; + sub_V2 = mkV2 "sub" ; + subath_V = mkV "subath" ; + subath_V2 = mkV2 "subath" ; + suduk_V = mkV "suduk" ; + suduk_V2 = mkV2 "suduk" ; + suk_V = mkV "suk" ; + suk_V2 = mkV2 "suk" ; + sukek_V = mkV "sukek" ; + sukek_V2 = mkV2 "sukek" ; + sukel_V = mkV "sukel" ; + sukel_V2 = mkV2 "sukel" ; + sukis_V = mkV "sukis" ; + sukis_V2 = mkV2 "sukis" ; + sukum_V = mkV "sukum" ; + sukum_V2 = mkV2 "sukum" ; + sukumel_V = mkV "sukumel" ; + sukumel_V2 = mkV2 "sukumel" ; + sul_V = mkV "sul" ; + sul_V2 = mkV2 "sul" ; + sulazel_V = mkV "sulazel" ; + sulazel_V2 = mkV2 "sulazel" ; + sulel_V = mkV "sulel" ; + sulel_V2 = mkV2 "sulel" ; + sulisis_V = mkV "sulisis" ; + sulisis_V2 = mkV2 "sulisis" ; + sulubezan_V = mkV "sulubezan" ; + sulubezan_V2 = mkV2 "sulubezan" ; + sunduz_V = mkV "sunduz" ; + sunduz_V2 = mkV2 "sunduz" ; + sungul_V = mkV "sungul" ; + sungul_V2 = mkV2 "sungul" ; + sungulel_V = mkV "sungulel" ; + sungulel_V2 = mkV2 "sungulel" ; + sus_V = mkV "sus" ; + sus_V2 = mkV2 "sus" ; + susel_V = mkV "susel" ; + susel_V2 = mkV2 "susel" ; + suth_V = mkV "suth" ; + suth_V2 = mkV2 "suth" ; + suthek_V = mkV "suthek" ; + suthek_V2 = mkV2 "suthek" ; + suthelek_V = mkV "suthelek" ; + suthelek_V2 = mkV2 "suthelek" ; + suthis_V = mkV "suthis" ; + suthis_V2 = mkV2 "suthis" ; + suz_V = mkV "suz" ; + suz_V2 = mkV2 "suz" ; + swabuluk_V = mkV "swabuluk" ; + swabuluk_V2 = mkV2 "swabuluk" ; + swac_V = mkV "swac" ; + swac_V2 = mkV2 "swac" ; + swakam_V = mkV "swakam" ; + swakam_V2 = mkV2 "swakam" ; + swakamel_V = mkV "swakamel" ; + swakamel_V2 = mkV2 "swakamel" ; + swanguluk_V = mkV "swanguluk" ; + swanguluk_V2 = mkV2 "swanguluk" ; + swel_V = mkV "swel" ; + swel_V2 = mkV2 "swel" ; + swelakal_V = mkV "swelakal" ; + swelakal_V2 = mkV2 "swelakal" ; + swelek_V = mkV "swelek" ; + swelek_V2 = mkV2 "swelek" ; + swelis_V = mkV "swelis" ; + swelis_V2 = mkV2 "swelis" ; + tak_V = mkV "tak" ; + tak_V2 = mkV2 "tak" ; + takelan_V = mkV "takelan" ; + takelan_V2 = mkV2 "takelan" ; + tan_V = mkV "tan" ; + tan_V2 = mkV2 "tan" ; + tanan_V = mkV "tanan" ; + tanan_V2 = mkV2 "tanan" ; + tanas_V = mkV "tanas" ; + tanas_V2 = mkV2 "tanas" ; + tap_V = mkV "tap" ; + tap_V2 = mkV2 "tap" ; + tapel_V = mkV "tapel" ; + tapel_V2 = mkV2 "tapel" ; + tat_V = mkV "tat" ; + tat_V2 = mkV2 "tat" ; + tatabuk_V = mkV "tatabuk" ; + tatabuk_V2 = mkV2 "tatabuk" ; + tatam_V = mkV "tatam" ; + tatam_V2 = mkV2 "tatam" ; + tatamis_V = mkV "tatamis" ; + tatamis_V2 = mkV2 "tatamis" ; + tatazel_V = mkV "tatazel" ; + tatazel_V2 = mkV2 "tatazel" ; + tatulul_V = mkV "tatulul" ; + tatulul_V2 = mkV2 "tatulul" ; + tebel_V = mkV "tebel" ; + tebel_V2 = mkV2 "tebel" ; + tekul_V = mkV "tekul" ; + tekul_V2 = mkV2 "tekul" ; + telebhel_V = mkV "telebhel" ; + telebhel_V2 = mkV2 "telebhel" ; + tet_V = mkV "tet" ; + tet_V2 = mkV2 "tet" ; + tetem_V = mkV "tetem" ; + tetem_V2 = mkV2 "tetem" ; + th_V = mkV "th" ; + th_V2 = mkV2 "th" ; + thab_V = mkV "thab" ; + thab_V2 = mkV2 "thab" ; + thabath_V = mkV "thabath" ; + thabath_V2 = mkV2 "thabath" ; + thabathel_V = mkV "thabathel" ; + thabathel_V2 = mkV2 "thabathel" ; + thak_V = mkV "thak" ; + thak_V2 = mkV2 "thak" ; + thakath_V = mkV "thakath" ; + thakath_V2 = mkV2 "thakath" ; + thakathan_V = mkV "thakathan" ; + thakathan_V2 = mkV2 "thakathan" ; + thakathel_V = mkV "thakathel" ; + thakathel_V2 = mkV2 "thakathel" ; + thakazel_V = mkV "thakazel" ; + thakazel_V2 = mkV2 "thakazel" ; + thakel_V = mkV "thakel" ; + thakel_V2 = mkV2 "thakel" ; + thakis_V = mkV "thakis" ; + thakis_V2 = mkV2 "thakis" ; + thalalis_V = mkV "thalalis" ; + thalalis_V2 = mkV2 "thalalis" ; + thalaz_V = mkV "thalaz" ; + thalaz_V2 = mkV2 "thalaz" ; + thamb_V = mkV "thamb" ; + thamb_V2 = mkV2 "thamb" ; + thambalal_V = mkV "thambalal" ; + thambalal_V2 = mkV2 "thambalal" ; + thambam_V = mkV "thambam" ; + thambam_V2 = mkV2 "thambam" ; + thambek_V = mkV "thambek" ; + thambek_V2 = mkV2 "thambek" ; + thambekek_V = mkV "thambekek" ; + thambekek_V2 = mkV2 "thambekek" ; + thambekel_V = mkV "thambekel" ; + thambekel_V2 = mkV2 "thambekel" ; + thambis_V = mkV "thambis" ; + thambis_V2 = mkV2 "thambis" ; + thamel_V = mkV "thamel" ; + thamel_V2 = mkV2 "thamel" ; + thamund_V = mkV "thamund" ; + thamund_V2 = mkV2 "thamund" ; + than_V = mkV "than" ; + than_V2 = mkV2 "than" ; + thand_V = mkV "thand" ; + thand_V2 = mkV2 "thand" ; + thandabuz_V = mkV "thandabuz" ; + thandabuz_V2 = mkV2 "thandabuz" ; + thandan_V = mkV "thandan" ; + thandan_V2 = mkV2 "thandan" ; + thandanel_V = mkV "thandanel" ; + thandanel_V2 = mkV2 "thandanel" ; + thandanis_V = mkV "thandanis" ; + thandanis_V2 = mkV2 "thandanis" ; + thandaz_V = mkV "thandaz" ; + thandaz_V2 = mkV2 "thandaz" ; + thandazel_V = mkV "thandazel" ; + thandazel_V2 = mkV2 "thandazel" ; + thandek_V = mkV "thandek" ; + thandek_V2 = mkV2 "thandek" ; + thandel_V = mkV "thandel" ; + thandel_V2 = mkV2 "thandel" ; + thandisis_V = mkV "thandisis" ; + thandisis_V2 = mkV2 "thandisis" ; + thanel_V = mkV "thanel" ; + thanel_V2 = mkV2 "thanel" ; + thanqaz_V = mkV "thanqaz" ; + thanqaz_V2 = mkV2 "thanqaz" ; + thaph_V = mkV "thaph" ; + thaph_V2 = mkV2 "thaph" ; + thaphuk_V = mkV "thaphuk" ; + thaphuk_V2 = mkV2 "thaphuk" ; + thath_V = mkV "thath" ; + thath_V2 = mkV2 "thath" ; + thathan_V = mkV "thathan" ; + thathan_V2 = mkV2 "thathan" ; + thathathek_V = mkV "thathathek" ; + thathathek_V2 = mkV2 "thathathek" ; + thathazelan_V = mkV "thathazelan" ; + thathazelan_V2 = mkV2 "thathazelan" ; + thathek_V = mkV "thathek" ; + thathek_V2 = mkV2 "thathek" ; + thathel_V = mkV "thathel" ; + thathel_V2 = mkV2 "thathel" ; + thathelan_V = mkV "thathelan" ; + thathelan_V2 = mkV2 "thathelan" ; + thathelel_V = mkV "thathelel" ; + thathelel_V2 = mkV2 "thathelel" ; + thathis_V = mkV "thathis" ; + thathis_V2 = mkV2 "thathis" ; + thayiz_V = mkV "thayiz" ; + thayiz_V2 = mkV2 "thayiz" ; + thek_V = mkV "thek" ; + thek_V2 = mkV2 "thek" ; + thekel_V = mkV "thekel" ; + thekel_V2 = mkV2 "thekel" ; + thel_V = mkV "thel" ; + thel_V2 = mkV2 "thel" ; + thelan_V = mkV "thelan" ; + thelan_V2 = mkV2 "thelan" ; + thelek_V = mkV "thelek" ; + thelek_V2 = mkV2 "thelek" ; + thelekel_V = mkV "thelekel" ; + thelekel_V2 = mkV2 "thelekel" ; + thelel_V = mkV "thelel" ; + thelel_V2 = mkV2 "thelel" ; + thelelan_V = mkV "thelelan" ; + thelelan_V2 = mkV2 "thelelan" ; + thelez_V = mkV "thelez" ; + thelez_V2 = mkV2 "thelez" ; + themb_V = mkV "themb" ; + themb_V2 = mkV2 "themb" ; + thembek_V = mkV "thembek" ; + thembek_V2 = mkV2 "thembek" ; + thembel_V = mkV "thembel" ; + thembel_V2 = mkV2 "thembel" ; + thembis_V = mkV "thembis" ; + thembis_V2 = mkV2 "thembis" ; + thembisan_V = mkV "thembisan" ; + thembisan_V2 = mkV2 "thembisan" ; + then_V = mkV "then" ; + then_V2 = mkV2 "then" ; + thend_V = mkV "thend" ; + thend_V2 = mkV2 "thend" ; + thendel_V = mkV "thendel" ; + thendel_V2 = mkV2 "thendel" ; + thenek_V = mkV "thenek" ; + thenek_V2 = mkV2 "thenek" ; + theng_V = mkV "theng" ; + theng_V2 = mkV2 "theng" ; + thengatheng_V = mkV "thengatheng" ; + thengatheng_V2 = mkV2 "thengatheng" ; + thengek_V = mkV "thengek" ; + thengek_V2 = mkV2 "thengek" ; + thengel_V = mkV "thengel" ; + thengel_V2 = mkV2 "thengel" ; + thengis_V = mkV "thengis" ; + thengis_V2 = mkV2 "thengis" ; + thengisel_V = mkV "thengisel" ; + thengisel_V2 = mkV2 "thengisel" ; + theth_V = mkV "theth" ; + theth_V2 = mkV2 "theth" ; + thethan_V = mkV "thethan" ; + thethan_V2 = mkV2 "thethan" ; + thethelel_V = mkV "thethelel" ; + thethelel_V2 = mkV2 "thethelel" ; + thethis_V = mkV "thethis" ; + thethis_V2 = mkV2 "thethis" ; + thethisan_V = mkV "thethisan" ; + thethisan_V2 = mkV2 "thethisan" ; + thethisel_V = mkV "thethisel" ; + thethisel_V2 = mkV2 "thethisel" ; + thez_V = mkV "thez" ; + thez_V2 = mkV2 "thez" ; + thezel_V = mkV "thezel" ; + thezel_V2 = mkV2 "thezel" ; + thib_V = mkV "thib" ; + thib_V2 = mkV2 "thib" ; + thibis_V = mkV "thibis" ; + thibis_V2 = mkV2 "thibis" ; + thikamez_V = mkV "thikamez" ; + thikamez_V2 = mkV2 "thikamez" ; + thikamezek_V = mkV "thikamezek" ; + thikamezek_V2 = mkV2 "thikamezek" ; + thimb_V = mkV "thimb" ; + thimb_V2 = mkV2 "thimb" ; + thimul_V = mkV "thimul" ; + thimul_V2 = mkV2 "thimul" ; + thint_V = mkV "thint" ; + thint_V2 = mkV2 "thint" ; + thintan_V = mkV "thintan" ; + thintan_V2 = mkV2 "thintan" ; + thintathint_V = mkV "thintathint" ; + thintathint_V2 = mkV2 "thintathint" ; + thintek_V = mkV "thintek" ; + thintek_V2 = mkV2 "thintek" ; + thintel_V = mkV "thintel" ; + thintel_V2 = mkV2 "thintel" ; + thintith_V = mkV "thintith" ; + thintith_V2 = mkV2 "thintith" ; + thiphilizan_V = mkV "thiphilizan" ; + thiphilizan_V2 = mkV2 "thiphilizan" ; + this_V = mkV "this" ; + this_V2 = mkV2 "this" ; + thithibal_V = mkV "thithibal" ; + thithibal_V2 = mkV2 "thithibal" ; + thithiz_V = mkV "thithiz" ; + thithiz_V2 = mkV2 "thithiz" ; + thiy_V = mkV "thiy" ; + thiy_V2 = mkV2 "thiy" ; + thiyan_V = mkV "thiyan" ; + thiyan_V2 = mkV2 "thiyan" ; + thob_V = mkV "thob" ; + thob_V2 = mkV2 "thob" ; + thobathob_V = mkV "thobathob" ; + thobathob_V2 = mkV2 "thobathob" ; + thobek_V = mkV "thobek" ; + thobek_V2 = mkV2 "thobek" ; + thobel_V = mkV "thobel" ; + thobel_V2 = mkV2 "thobel" ; + thobis_V = mkV "thobis" ; + thobis_V2 = mkV2 "thobis" ; + thokomal_V = mkV "thokomal" ; + thokomal_V2 = mkV2 "thokomal" ; + thokoz_V = mkV "thokoz" ; + thokoz_V2 = mkV2 "thokoz" ; + thokozel_V = mkV "thokozel" ; + thokozel_V2 = mkV2 "thokozel" ; + thokozis_V = mkV "thokozis" ; + thokozis_V2 = mkV2 "thokozis" ; + thol_V = mkV "thol" ; + thol_V2 = mkV2 "thol" ; + tholakal_V = mkV "tholakal" ; + tholakal_V2 = mkV2 "tholakal" ; + tholan_V = mkV "tholan" ; + tholan_V2 = mkV2 "tholan" ; + tholel_V = mkV "tholel" ; + tholel_V2 = mkV2 "tholel" ; + tholis_V = mkV "tholis" ; + tholis_V2 = mkV2 "tholis" ; + tholoz_V = mkV "tholoz" ; + tholoz_V2 = mkV2 "tholoz" ; + thomb_V = mkV "thomb" ; + thomb_V2 = mkV2 "thomb" ; + thombuluk_V = mkV "thombuluk" ; + thombuluk_V2 = mkV2 "thombuluk" ; + thombulul_V = mkV "thombulul" ; + thombulul_V2 = mkV2 "thombulul" ; + thontel_V = mkV "thontel" ; + thontel_V2 = mkV2 "thontel" ; + thony_V = mkV "thony" ; + thony_V2 = mkV2 "thony" ; + thoph_V = mkV "thoph" ; + thoph_V2 = mkV2 "thoph" ; + thos_V = mkV "thos" ; + thos_V2 = mkV2 "thos" ; + thosel_V = mkV "thosel" ; + thosel_V2 = mkV2 "thosel" ; + thothan_V = mkV "thothan" ; + thothan_V2 = mkV2 "thothan" ; + thothobal_V = mkV "thothobal" ; + thothobal_V2 = mkV2 "thothobal" ; + thothongan_V = mkV "thothongan" ; + thothongan_V2 = mkV2 "thothongan" ; + thub_V = mkV "thub" ; + thub_V2 = mkV2 "thub" ; + thubelez_V = mkV "thubelez" ; + thubelez_V2 = mkV2 "thubelez" ; + thufel_V = mkV "thufel" ; + thufel_V2 = mkV2 "thufel" ; + thufelel_V = mkV "thufelel" ; + thufelel_V2 = mkV2 "thufelel" ; + thuk_V = mkV "thuk" ; + thuk_V2 = mkV2 "thuk" ; + thukel_V = mkV "thukel" ; + thukel_V2 = mkV2 "thukel" ; + thukulul_V = mkV "thukulul" ; + thukulul_V2 = mkV2 "thukulul" ; + thukus_V = mkV "thukus" ; + thukus_V2 = mkV2 "thukus" ; + thukuthel_V = mkV "thukuthel" ; + thukuthel_V2 = mkV2 "thukuthel" ; + thukuthelel_V = mkV "thukuthelel" ; + thukuthelel_V2 = mkV2 "thukuthelel" ; + thukuthelis_V = mkV "thukuthelis" ; + thukuthelis_V2 = mkV2 "thukuthelis" ; + thul_V = mkV "thul" ; + thul_V2 = mkV2 "thul" ; + thulathul_V = mkV "thulathul" ; + thulathul_V2 = mkV2 "thulathul" ; + thulek_V = mkV "thulek" ; + thulek_V2 = mkV2 "thulek" ; + thulel_V = mkV "thulel" ; + thulel_V2 = mkV2 "thulel" ; + thulis_V = mkV "thulis" ; + thulis_V2 = mkV2 "thulis" ; + thulul_V = mkV "thulul" ; + thulul_V2 = mkV2 "thulul" ; + thululek_V = mkV "thululek" ; + thululek_V2 = mkV2 "thululek" ; + thululel_V = mkV "thululel" ; + thululel_V2 = mkV2 "thululel" ; + thum_V = mkV "thum" ; + thum_V2 = mkV2 "thum" ; + thumathum_V = mkV "thumathum" ; + thumathum_V2 = mkV2 "thumathum" ; + thumb_V = mkV "thumb" ; + thumb_V2 = mkV2 "thumb" ; + thumek_V = mkV "thumek" ; + thumek_V2 = mkV2 "thumek" ; + thumel_V = mkV "thumel" ; + thumel_V2 = mkV2 "thumel" ; + thumelel_V = mkV "thumelel" ; + thumelel_V2 = mkV2 "thumelel" ; + thun_V = mkV "thun" ; + thun_V2 = mkV2 "thun" ; + thunakal_V = mkV "thunakal" ; + thunakal_V2 = mkV2 "thunakal" ; + thunaz_V = mkV "thunaz" ; + thunaz_V2 = mkV2 "thunaz" ; + thunazek_V = mkV "thunazek" ; + thunazek_V2 = mkV2 "thunazek" ; + thunduzel_V = mkV "thunduzel" ; + thunduzel_V2 = mkV2 "thunduzel" ; + thung_V = mkV "thung" ; + thung_V2 = mkV2 "thung" ; + thungan_V = mkV "thungan" ; + thungan_V2 = mkV2 "thungan" ; + thungath_V = mkV "thungath" ; + thungath_V2 = mkV2 "thungath" ; + thungathan_V = mkV "thungathan" ; + thungathan_V2 = mkV2 "thungathan" ; + thungathel_V = mkV "thungathel" ; + thungathel_V2 = mkV2 "thungathel" ; + thungathung_V = mkV "thungathung" ; + thungathung_V2 = mkV2 "thungathung" ; + thungel_V = mkV "thungel" ; + thungel_V2 = mkV2 "thungel" ; + thungelek_V = mkV "thungelek" ; + thungelek_V2 = mkV2 "thungelek" ; + thungis_V = mkV "thungis" ; + thungis_V2 = mkV2 "thungis" ; + thunq_V = mkV "thunq" ; + thunq_V2 = mkV2 "thunq" ; + thunqis_V = mkV "thunqis" ; + thunqis_V2 = mkV2 "thunqis" ; + thunqisel_V = mkV "thunqisel" ; + thunqisel_V2 = mkV2 "thunqisel" ; + thuntubez_V = mkV "thuntubez" ; + thuntubez_V2 = mkV2 "thuntubez" ; + thuntuth_V = mkV "thuntuth" ; + thuntuth_V2 = mkV2 "thuntuth" ; + thunuk_V = mkV "thunuk" ; + thunuk_V2 = mkV2 "thunuk" ; + thunukal_V = mkV "thunukal" ; + thunukal_V2 = mkV2 "thunukal" ; + thunukel_V = mkV "thunukel" ; + thunukel_V2 = mkV2 "thunukel" ; + thuquk_V = mkV "thuquk" ; + thuquk_V2 = mkV2 "thuquk" ; + thus_V = mkV "thus" ; + thus_V2 = mkV2 "thus" ; + thusel_V = mkV "thusel" ; + thusel_V2 = mkV2 "thusel" ; + thushuk_V = mkV "thushuk" ; + thushuk_V2 = mkV2 "thushuk" ; + thuth_V = mkV "thuth" ; + thuth_V2 = mkV2 "thuth" ; + thuthan_V = mkV "thuthan" ; + thuthan_V2 = mkV2 "thuthan" ; + thuthel_V = mkV "thuthel" ; + thuthel_V2 = mkV2 "thuthel" ; + thuthelek_V = mkV "thuthelek" ; + thuthelek_V2 = mkV2 "thuthelek" ; + thuthuk_V = mkV "thuthuk" ; + thuthuk_V2 = mkV2 "thuthuk" ; + thuthukis_V = mkV "thuthukis" ; + thuthukis_V2 = mkV2 "thuthukis" ; + thuthumb_V = mkV "thuthumb" ; + thuthumb_V2 = mkV2 "thuthumb" ; + thuthumel_V = mkV "thuthumel" ; + thuthumel_V2 = mkV2 "thuthumel" ; + thuthumelis_V = mkV "thuthumelis" ; + thuthumelis_V2 = mkV2 "thuthumelis" ; + thuthuzel_V = mkV "thuthuzel" ; + thuthuzel_V2 = mkV2 "thuthuzel" ; + thwabaz_V = mkV "thwabaz" ; + thwabaz_V2 = mkV2 "thwabaz" ; + thwal_V = mkV "thwal" ; + thwal_V2 = mkV2 "thwal" ; + thwalel_V = mkV "thwalel" ; + thwalel_V2 = mkV2 "thwalel" ; + thwalis_V = mkV "thwalis" ; + thwalis_V2 = mkV2 "thwalis" ; + thwas_V = mkV "thwas" ; + thwas_V2 = mkV2 "thwas" ; + thwebul_V = mkV "thwebul" ; + thwebul_V2 = mkV2 "thwebul" ; + thwes_V = mkV "thwes" ; + thwes_V2 = mkV2 "thwes" ; + thwish_V = mkV "thwish" ; + thwish_V2 = mkV2 "thwish" ; + thwishil_V = mkV "thwishil" ; + thwishil_V2 = mkV2 "thwishil" ; + tibil_V = mkV "tibil" ; + tibil_V2 = mkV2 "tibil" ; + tik_V = mkV "tik" ; + tik_V2 = mkV2 "tik" ; + tikek_V = mkV "tikek" ; + tikek_V2 = mkV2 "tikek" ; + tikit_V = mkV "tikit" ; + tikit_V2 = mkV2 "tikit" ; + tikitel_V = mkV "tikitel" ; + tikitel_V2 = mkV2 "tikitel" ; + titiny_V = mkV "titiny" ; + titiny_V2 = mkV2 "titiny" ; + totob_V = mkV "totob" ; + totob_V2 = mkV2 "totob" ; + totobel_V = mkV "totobel" ; + totobel_V2 = mkV2 "totobel" ; + tshak_V = mkV "tshak" ; + tshak_V2 = mkV2 "tshak" ; + tshakadul_V = mkV "tshakadul" ; + tshakadul_V2 = mkV2 "tshakadul" ; + tshal_V = mkV "tshal" ; + tshal_V2 = mkV2 "tshal" ; + tshalel_V = mkV "tshalel" ; + tshalel_V2 = mkV2 "tshalel" ; + tshaz_V = mkV "tshaz" ; + tshaz_V2 = mkV2 "tshaz" ; + tshek_V = mkV "tshek" ; + tshek_V2 = mkV2 "tshek" ; + tshekel_V = mkV "tshekel" ; + tshekel_V2 = mkV2 "tshekel" ; + tshekis_V = mkV "tshekis" ; + tshekis_V2 = mkV2 "tshekis" ; + tshekul_V = mkV "tshekul" ; + tshekul_V2 = mkV2 "tshekul" ; + tshel_V = mkV "tshel" ; + tshel_V2 = mkV2 "tshel" ; + tshelan_V = mkV "tshelan" ; + tshelan_V2 = mkV2 "tshelan" ; + tshelek_V = mkV "tshelek" ; + tshelek_V2 = mkV2 "tshelek" ; + tshelel_V = mkV "tshelel" ; + tshelel_V2 = mkV2 "tshelel" ; + tshenel_V = mkV "tshenel" ; + tshenel_V2 = mkV2 "tshenel" ; + tshengis_V = mkV "tshengis" ; + tshengis_V2 = mkV2 "tshengis" ; + tshikiz_V = mkV "tshikiz" ; + tshikiz_V2 = mkV2 "tshikiz" ; + tshiloz_V = mkV "tshiloz" ; + tshiloz_V2 = mkV2 "tshiloz" ; + tshing_V = mkV "tshing" ; + tshing_V2 = mkV2 "tshing" ; + tshiyoz_V = mkV "tshiyoz" ; + tshiyoz_V2 = mkV2 "tshiyoz" ; + tshod_V = mkV "tshod" ; + tshod_V2 = mkV2 "tshod" ; + tshud_V = mkV "tshud" ; + tshud_V2 = mkV2 "tshud" ; + tshuman_V = mkV "tshuman" ; + tshuman_V2 = mkV2 "tshuman" ; + tshutshumb_V = mkV "tshutshumb" ; + tshutshumb_V2 = mkV2 "tshutshumb" ; + tshuz_V = mkV "tshuz" ; + tshuz_V2 = mkV2 "tshuz" ; + tshwek_V = mkV "tshwek" ; + tshwek_V2 = mkV2 "tshwek" ; + tub_V = mkV "tub" ; + tub_V2 = mkV2 "tub" ; + tubek_V = mkV "tubek" ; + tubek_V2 = mkV2 "tubek" ; + tus_V = mkV "tus" ; + tus_V2 = mkV2 "tus" ; + tusan_V = mkV "tusan" ; + tusan_V2 = mkV2 "tusan" ; + tusel_V = mkV "tusel" ; + tusel_V2 = mkV2 "tusel" ; + v_V = mkV "v" ; + v_V2 = mkV2 "v" ; + vakash_V = mkV "vakash" ; + vakash_V2 = mkV2 "vakash" ; + vakashel_V = mkV "vakashel" ; + vakashel_V2 = mkV2 "vakashel" ; + vakashelan_V = mkV "vakashelan" ; + vakashelan_V2 = mkV2 "vakashelan" ; + vakashelel_V = mkV "vakashelel" ; + vakashelel_V2 = mkV2 "vakashelel" ; + vakashis_V = mkV "vakashis" ; + vakashis_V2 = mkV2 "vakashis" ; + val_V = mkV "val" ; + val_V2 = mkV2 "val" ; + valek_V = mkV "valek" ; + valek_V2 = mkV2 "valek" ; + valel_V = mkV "valel" ; + valel_V2 = mkV2 "valel" ; + valelek_V = mkV "valelek" ; + valelek_V2 = mkV2 "valelek" ; + valelis_V = mkV "valelis" ; + valelis_V2 = mkV2 "valelis" ; + valelisan_V = mkV "valelisan" ; + valelisan_V2 = mkV2 "valelisan" ; + valelisel_V = mkV "valelisel" ; + valelisel_V2 = mkV2 "valelisel" ; + valisis_V = mkV "valisis" ; + valisis_V2 = mkV2 "valisis" ; + vam_V = mkV "vam" ; + vam_V2 = mkV2 "vam" ; + vamel_V = mkV "vamel" ; + vamel_V2 = mkV2 "vamel" ; + vamelan_V = mkV "vamelan" ; + vamelan_V2 = mkV2 "vamelan" ; + vamis_V = mkV "vamis" ; + vamis_V2 = mkV2 "vamis" ; + vath_V = mkV "vath" ; + vath_V2 = mkV2 "vath" ; + vathazel_V = mkV "vathazel" ; + vathazel_V2 = mkV2 "vathazel" ; + vathis_V = mkV "vathis" ; + vathis_V2 = mkV2 "vathis" ; + vav_V = mkV "vav" ; + vav_V2 = mkV2 "vav" ; + vel_V = mkV "vel" ; + vel_V2 = mkV2 "vel" ; + velel_V = mkV "velel" ; + velel_V2 = mkV2 "velel" ; + velelis_V = mkV "velelis" ; + velelis_V2 = mkV2 "velelis" ; + vev_V = mkV "vev" ; + vev_V2 = mkV2 "vev" ; + vevezel_V = mkV "vevezel" ; + vevezel_V2 = mkV2 "vevezel" ; + vevis_V = mkV "vevis" ; + vevis_V2 = mkV2 "vevis" ; + vez_V = mkV "vez" ; + vez_V2 = mkV2 "vez" ; + vezel_V = mkV "vezel" ; + vezel_V2 = mkV2 "vezel" ; + vezelan_V = mkV "vezelan" ; + vezelan_V2 = mkV2 "vezelan" ; + vik_V = mkV "vik" ; + vik_V2 = mkV2 "vik" ; + vikel_V = mkV "vikel" ; + vikel_V2 = mkV2 "vikel" ; + vikelek_V = mkV "vikelek" ; + vikelek_V2 = mkV2 "vikelek" ; + vilaph_V = mkV "vilaph" ; + vilaph_V2 = mkV2 "vilaph" ; + vimb_V = mkV "vimb" ; + vimb_V2 = mkV2 "vimb" ; + vimban_V = mkV "vimban" ; + vimban_V2 = mkV2 "vimban" ; + vimbanis_V = mkV "vimbanis" ; + vimbanis_V2 = mkV2 "vimbanis" ; + vimbek_V = mkV "vimbek" ; + vimbek_V2 = mkV2 "vimbek" ; + vimbel_V = mkV "vimbel" ; + vimbel_V2 = mkV2 "vimbel" ; + vimbelek_V = mkV "vimbelek" ; + vimbelek_V2 = mkV2 "vimbelek" ; + vimbezel_V = mkV "vimbezel" ; + vimbezel_V2 = mkV2 "vimbezel" ; + vith_V = mkV "vith" ; + vith_V2 = mkV2 "vith" ; + vithiz_V = mkV "vithiz" ; + vithiz_V2 = mkV2 "vithiz" ; + viv_V = mkV "viv" ; + viv_V2 = mkV2 "viv" ; + vivan_V = mkV "vivan" ; + vivan_V2 = mkV2 "vivan" ; + vivel_V = mkV "vivel" ; + vivel_V2 = mkV2 "vivel" ; + viviny_V = mkV "viviny" ; + viviny_V2 = mkV2 "viviny" ; + vivinyisis_V = mkV "vivinyisis" ; + vivinyisis_V2 = mkV2 "vivinyisis" ; + viyoz_V = mkV "viyoz" ; + viyoz_V2 = mkV2 "viyoz" ; + vondozel_V = mkV "vondozel" ; + vondozel_V2 = mkV2 "vondozel" ; + vonx_V = mkV "vonx" ; + vonx_V2 = mkV2 "vonx" ; + vot_V = mkV "vot" ; + vot_V2 = mkV2 "vot" ; + votel_V = mkV "votel" ; + votel_V2 = mkV2 "votel" ; + vov_V = mkV "vov" ; + vov_V2 = mkV2 "vov" ; + vovek_V = mkV "vovek" ; + vovek_V2 = mkV2 "vovek" ; + vub_V = mkV "vub" ; + vub_V2 = mkV2 "vub" ; + vubel_V = mkV "vubel" ; + vubel_V2 = mkV2 "vubel" ; + vuk_V = mkV "vuk" ; + vuk_V2 = mkV2 "vuk" ; + vukel_V = mkV "vukel" ; + vukel_V2 = mkV2 "vukel" ; + vul_V = mkV "vul" ; + vul_V2 = mkV2 "vul" ; + vulan_V = mkV "vulan" ; + vulan_V2 = mkV2 "vulan" ; + vulek_V = mkV "vulek" ; + vulek_V2 = mkV2 "vulek" ; + vulekel_V = mkV "vulekel" ; + vulekel_V2 = mkV2 "vulekel" ; + vulel_V = mkV "vulel" ; + vulel_V2 = mkV2 "vulel" ; + vulelan_V = mkV "vulelan" ; + vulelan_V2 = mkV2 "vulelan" ; + vulelek_V = mkV "vulelek" ; + vulelek_V2 = mkV2 "vulelek" ; + vum_V = mkV "vum" ; + vum_V2 = mkV2 "vum" ; + vumavuman_V = mkV "vumavuman" ; + vumavuman_V2 = mkV2 "vumavuman" ; + vumbuk_V = mkV "vumbuk" ; + vumbuk_V2 = mkV2 "vumbuk" ; + vumbulul_V = mkV "vumbulul" ; + vumbulul_V2 = mkV2 "vumbulul" ; + vumel_V = mkV "vumel" ; + vumel_V2 = mkV2 "vumel" ; + vumelan_V = mkV "vumelan" ; + vumelan_V2 = mkV2 "vumelan" ; + vumelek_V = mkV "vumelek" ; + vumelek_V2 = mkV2 "vumelek" ; + vumelel_V = mkV "vumelel" ; + vumelel_V2 = mkV2 "vumelel" ; + vumis_V = mkV "vumis" ; + vumis_V2 = mkV2 "vumis" ; + vun_V = mkV "vun" ; + vun_V2 = mkV2 "vun" ; + vund_V = mkV "vund" ; + vund_V2 = mkV2 "vund" ; + vundis_V = mkV "vundis" ; + vundis_V2 = mkV2 "vundis" ; + vundl_V = mkV "vundl" ; + vundl_V2 = mkV2 "vundl" ; + vunel_V = mkV "vunel" ; + vunel_V2 = mkV2 "vunel" ; + vung_V = mkV "vung" ; + vung_V2 = mkV2 "vung" ; + vungam_V = mkV "vungam" ; + vungam_V2 = mkV2 "vungam" ; + vungan_V = mkV "vungan" ; + vungan_V2 = mkV2 "vungan" ; + vungul_V = mkV "vungul" ; + vungul_V2 = mkV2 "vungul" ; + vunguz_V = mkV "vunguz" ; + vunguz_V2 = mkV2 "vunguz" ; + vunkul_V = mkV "vunkul" ; + vunkul_V2 = mkV2 "vunkul" ; + vunul_V = mkV "vunul" ; + vunul_V2 = mkV2 "vunul" ; + vunulel_V = mkV "vunulel" ; + vunulel_V2 = mkV2 "vunulel" ; + vus_V = mkV "vus" ; + vus_V2 = mkV2 "vus" ; + vusan_V = mkV "vusan" ; + vusan_V2 = mkV2 "vusan" ; + vusel_V = mkV "vusel" ; + vusel_V2 = mkV2 "vusel" ; + vuselel_V = mkV "vuselel" ; + vuselel_V2 = mkV2 "vuselel" ; + vuth_V = mkV "vuth" ; + vuth_V2 = mkV2 "vuth" ; + vuthel_V = mkV "vuthel" ; + vuthel_V2 = mkV2 "vuthel" ; + vuthelel_V = mkV "vuthelel" ; + vuthelel_V2 = mkV2 "vuthelel" ; + vuthuluk_V = mkV "vuthuluk" ; + vuthuluk_V2 = mkV2 "vuthuluk" ; + vuthulul_V = mkV "vuthulul" ; + vuthulul_V2 = mkV2 "vuthulul" ; + -- vuthw_V = mkV "vuthw" ; + -- vuthw_V2 = mkV2 "vuthw" ; + vuvukal_V = mkV "vuvukal" ; + vuvukal_V2 = mkV2 "vuvukal" ; + vuvukel_V = mkV "vuvukel" ; + vuvukel_V2 = mkV2 "vuvukel" ; + vuvuzel_V = mkV "vuvuzel" ; + vuvuzel_V2 = mkV2 "vuvuzel" ; + vuy_V = mkV "vuy" ; + vuy_V2 = mkV2 "vuy" ; + vuz_V = mkV "vuz" ; + vuz_V2 = mkV2 "vuz" ; + vuzan_V = mkV "vuzan" ; + vuzan_V2 = mkV2 "vuzan" ; + vuzel_V = mkV "vuzel" ; + vuzel_V2 = mkV2 "vuzel" ; + w_V = mkV "w" ; + w_V2 = mkV2 "w" ; + wahlel_V = mkV "wahlel" ; + wahlel_V2 = mkV2 "wahlel" ; + wahlelel_V = mkV "wahlelel" ; + wahlelel_V2 = mkV2 "wahlelel" ; + wak_V = mkV "wak" ; + wak_V2 = mkV2 "wak" ; + wanek_V = mkV "wanek" ; + wanek_V2 = mkV2 "wanek" ; + wanel_V = mkV "wanel" ; + wanel_V2 = mkV2 "wanel" ; + wanelis_V = mkV "wanelis" ; + wanelis_V2 = mkV2 "wanelis" ; + wanis_V = mkV "wanis" ; + wanis_V2 = mkV2 "wanis" ; + wanq_V = mkV "wanq" ; + wanq_V2 = mkV2 "wanq" ; + wash_V = mkV "wash" ; + wash_V2 = mkV2 "wash" ; + washel_V = mkV "washel" ; + washel_V2 = mkV2 "washel" ; + washelel_V = mkV "washelel" ; + washelel_V2 = mkV2 "washelel" ; + washis_V = mkV "washis" ; + washis_V2 = mkV2 "washis" ; + washisek_V = mkV "washisek" ; + washisek_V2 = mkV2 "washisek" ; + weduk_V = mkV "weduk" ; + weduk_V2 = mkV2 "weduk" ; + wel_V = mkV "wel" ; + wel_V2 = mkV2 "wel" ; + welek_V = mkV "welek" ; + welek_V2 = mkV2 "welek" ; + welel_V = mkV "welel" ; + welel_V2 = mkV2 "welel" ; + welis_V = mkV "welis" ; + welis_V2 = mkV2 "welis" ; + welisel_V = mkV "welisel" ; + welisel_V2 = mkV2 "welisel" ; + wez_V = mkV "wez" ; + wez_V2 = mkV2 "wez" ; + wezel_V = mkV "wezel" ; + wezel_V2 = mkV2 "wezel" ; + win_V = mkV "win" ; + win_V2 = mkV2 "win" ; + winel_V = mkV "winel" ; + winel_V2 = mkV2 "winel" ; + wis_V = mkV "wis" ; + wis_V2 = mkV2 "wis" ; + wisel_V = mkV "wisel" ; + wisel_V2 = mkV2 "wisel" ; + wohlok_V = mkV "wohlok" ; + wohlok_V2 = mkV2 "wohlok" ; + wohlokis_V = mkV "wohlokis" ; + wohlokis_V2 = mkV2 "wohlokis" ; + wohloz_V = mkV "wohloz" ; + wohloz_V2 = mkV2 "wohloz" ; + wol_V = mkV "wol" ; + wol_V2 = mkV2 "wol" ; + wong_V = mkV "wong" ; + wong_V2 = mkV2 "wong" ; + woth_V = mkV "woth" ; + woth_V2 = mkV2 "woth" ; + wul_V = mkV "wul" ; + wul_V2 = mkV2 "wul" ; + wulukuhlek_V = mkV "wulukuhlek" ; + wulukuhlek_V2 = mkV2 "wulukuhlek" ; + wulul_V = mkV "wulul" ; + wulul_V2 = mkV2 "wulul" ; + wumis_V = mkV "wumis" ; + wumis_V2 = mkV2 "wumis" ; + wungan_V = mkV "wungan" ; + wungan_V2 = mkV2 "wungan" ; + wungawung_V = mkV "wungawung" ; + wungawung_V2 = mkV2 "wungawung" ; + wungek_V = mkV "wungek" ; + wungek_V2 = mkV2 "wungek" ; + wush_V = mkV "wush" ; + wush_V2 = mkV2 "wush" ; + wushis_V = mkV "wushis" ; + wushis_V2 = mkV2 "wushis" ; + wuz_V = mkV "wuz" ; + wuz_V2 = mkV2 "wuz" ; + wuzel_V = mkV "wuzel" ; + wuzel_V2 = mkV2 "wuzel" ; + xab_V = mkV "xab" ; + xab_V2 = mkV2 "xab" ; + xabalaz_V = mkV "xabalaz" ; + xabalaz_V2 = mkV2 "xabalaz" ; + xaban_V = mkV "xaban" ; + xaban_V2 = mkV2 "xaban" ; + xabanel_V = mkV "xabanel" ; + xabanel_V2 = mkV2 "xabanel" ; + xabanis_V = mkV "xabanis" ; + xabanis_V2 = mkV2 "xabanis" ; + xak_V = mkV "xak" ; + xak_V2 = mkV2 "xak" ; + xakazisan_V = mkV "xakazisan" ; + xakazisan_V2 = mkV2 "xakazisan" ; + xakek_V = mkV "xakek" ; + xakek_V2 = mkV2 "xakek" ; + xax_V = mkV "xax" ; + xax_V2 = mkV2 "xax" ; + xazulul_V = mkV "xazulul" ; + xazulul_V2 = mkV2 "xazulul" ; + xazululek_V = mkV "xazululek" ; + xazululek_V2 = mkV2 "xazululek" ; + xazululel_V = mkV "xazululel" ; + xazululel_V2 = mkV2 "xazululel" ; + xebul_V = mkV "xebul" ; + xebul_V2 = mkV2 "xebul" ; + xeg_V = mkV "xeg" ; + xeg_V2 = mkV2 "xeg" ; + xegaxeg_V = mkV "xegaxeg" ; + xegaxeg_V2 = mkV2 "xegaxeg" ; + xegis_V = mkV "xegis" ; + xegis_V2 = mkV2 "xegis" ; + xephul_V = mkV "xephul" ; + xephul_V2 = mkV2 "xephul" ; + xhak_V = mkV "xhak" ; + xhak_V2 = mkV2 "xhak" ; + xhakan_V = mkV "xhakan" ; + xhakan_V2 = mkV2 "xhakan" ; + xhakazis_V = mkV "xhakazis" ; + xhakazis_V2 = mkV2 "xhakazis" ; + xhamazel_V = mkV "xhamazel" ; + xhamazel_V2 = mkV2 "xhamazel" ; + xhantel_V = mkV "xhantel" ; + xhantel_V2 = mkV2 "xhantel" ; + xhaphak_V = mkV "xhaphak" ; + xhaphak_V2 = mkV2 "xhaphak" ; + xhaphaxhaph_V = mkV "xhaphaxhaph" ; + xhaphaxhaph_V2 = mkV2 "xhaphaxhaph" ; + xhaphazel_V = mkV "xhaphazel" ; + xhaphazel_V2 = mkV2 "xhaphazel" ; + xhaphel_V = mkV "xhaphel" ; + xhaphel_V2 = mkV2 "xhaphel" ; + xhas_V = mkV "xhas" ; + xhas_V2 = mkV2 "xhas" ; + xhawul_V = mkV "xhawul" ; + xhawul_V2 = mkV2 "xhawul" ; + xhawulan_V = mkV "xhawulan" ; + xhawulan_V2 = mkV2 "xhawulan" ; + xhaz_V = mkV "xhaz" ; + xhaz_V2 = mkV2 "xhaz" ; + xhokovan_V = mkV "xhokovan" ; + xhokovan_V2 = mkV2 "xhokovan" ; + xhokoxh_V = mkV "xhokoxh" ; + xhokoxh_V2 = mkV2 "xhokoxh" ; + xhom_V = mkV "xhom" ; + xhom_V2 = mkV2 "xhom" ; + xhoph_V = mkV "xhoph" ; + xhoph_V2 = mkV2 "xhoph" ; + xhoxhan_V = mkV "xhoxhan" ; + xhoxhan_V2 = mkV2 "xhoxhan" ; + xhoz_V = mkV "xhoz" ; + xhoz_V2 = mkV2 "xhoz" ; + xhukul_V = mkV "xhukul" ; + xhukul_V2 = mkV2 "xhukul" ; + xhum_V = mkV "xhum" ; + xhum_V2 = mkV2 "xhum" ; + xhuman_V = mkV "xhuman" ; + xhuman_V2 = mkV2 "xhuman" ; + xhumanis_V = mkV "xhumanis" ; + xhumanis_V2 = mkV2 "xhumanis" ; + xhumel_V = mkV "xhumel" ; + xhumel_V2 = mkV2 "xhumel" ; + xhumelel_V = mkV "xhumelel" ; + xhumelel_V2 = mkV2 "xhumelel" ; + xhuth_V = mkV "xhuth" ; + xhuth_V2 = mkV2 "xhuth" ; + xhuxhuzelis_V = mkV "xhuxhuzelis" ; + xhuxhuzelis_V2 = mkV2 "xhuxhuzelis" ; + xhwal_V = mkV "xhwal" ; + xhwal_V2 = mkV2 "xhwal" ; + xhwath_V = mkV "xhwath" ; + xhwath_V2 = mkV2 "xhwath" ; + xin_V = mkV "xin" ; + xin_V2 = mkV2 "xin" ; + xinek_V = mkV "xinek" ; + xinek_V2 = mkV2 "xinek" ; + xing_V = mkV "xing" ; + xing_V2 = mkV2 "xing" ; + xingel_V = mkV "xingel" ; + xingel_V2 = mkV2 "xingel" ; + xobis_V = mkV "xobis" ; + xobis_V2 = mkV2 "xobis" ; + xokozel_V = mkV "xokozel" ; + xokozel_V2 = mkV2 "xokozel" ; + xol_V = mkV "xol" ; + xol_V2 = mkV2 "xol" ; + xolel_V = mkV "xolel" ; + xolel_V2 = mkV2 "xolel" ; + xolis_V = mkV "xolis" ; + xolis_V2 = mkV2 "xolis" ; + xolisel_V = mkV "xolisel" ; + xolisel_V2 = mkV2 "xolisel" ; + xosh_V = mkV "xosh" ; + xosh_V2 = mkV2 "xosh" ; + xoshan_V = mkV "xoshan" ; + xoshan_V2 = mkV2 "xoshan" ; + xoshel_V = mkV "xoshel" ; + xoshel_V2 = mkV2 "xoshel" ; + xoshis_V = mkV "xoshis" ; + xoshis_V2 = mkV2 "xoshis" ; + xov_V = mkV "xov" ; + xov_V2 = mkV2 "xov" ; + xovek_V = mkV "xovek" ; + xovek_V2 = mkV2 "xovek" ; + xovel_V = mkV "xovel" ; + xovel_V2 = mkV2 "xovel" ; + xox_V = mkV "xox" ; + xox_V2 = mkV2 "xox" ; + xoxaxox_V = mkV "xoxaxox" ; + xoxaxox_V2 = mkV2 "xoxaxox" ; + xoxek_V = mkV "xoxek" ; + xoxek_V2 = mkV2 "xoxek" ; + xoxel_V = mkV "xoxel" ; + xoxel_V2 = mkV2 "xoxel" ; + xoxelan_V = mkV "xoxelan" ; + xoxelan_V2 = mkV2 "xoxelan" ; + xoxis_V = mkV "xoxis" ; + xoxis_V2 = mkV2 "xoxis" ; + xoxisan_V = mkV "xoxisan" ; + xoxisan_V2 = mkV2 "xoxisan" ; + xoxom_V = mkV "xoxom" ; + xoxom_V2 = mkV2 "xoxom" ; + xub_V = mkV "xub" ; + xub_V2 = mkV2 "xub" ; + xuban_V = mkV "xuban" ; + xuban_V2 = mkV2 "xuban" ; + xubanis_V = mkV "xubanis" ; + xubanis_V2 = mkV2 "xubanis" ; + xubh_V = mkV "xubh" ; + xubh_V2 = mkV2 "xubh" ; + xukuz_V = mkV "xukuz" ; + xukuz_V2 = mkV2 "xukuz" ; + xukuzis_V = mkV "xukuzis" ; + xukuzis_V2 = mkV2 "xukuzis" ; + xway_V = mkV "xway" ; + xway_V2 = mkV2 "xway" ; + xwayis_V = mkV "xwayis" ; + xwayis_V2 = mkV2 "xwayis" ; + y_V = mkV "y" ; + y_V2 = mkV2 "y" ; + yabathek_V = mkV "yabathek" ; + yabathek_V2 = mkV2 "yabathek" ; + yabazis_V = mkV "yabazis" ; + yabazis_V2 = mkV2 "yabazis" ; + yabiz_V = mkV "yabiz" ; + yabiz_V2 = mkV2 "yabiz" ; + yabizan_V = mkV "yabizan" ; + yabizan_V2 = mkV2 "yabizan" ; + yabul_V = mkV "yabul" ; + yabul_V2 = mkV2 "yabul" ; + yabuz_V = mkV "yabuz" ; + yabuz_V2 = mkV2 "yabuz" ; + yabuzisan_V = mkV "yabuzisan" ; + yabuzisan_V2 = mkV2 "yabuzisan" ; + yacaz_V = mkV "yacaz" ; + yacaz_V2 = mkV2 "yacaz" ; + yacazis_V = mkV "yacazis" ; + yacazis_V2 = mkV2 "yacazis" ; + yakaz_V = mkV "yakaz" ; + yakaz_V2 = mkV2 "yakaz" ; + yal_V = mkV "yal" ; + yal_V2 = mkV2 "yal" ; + yalaz_V = mkV "yalaz" ; + yalaz_V2 = mkV2 "yalaz" ; + yalazis_V = mkV "yalazis" ; + yalazis_V2 = mkV2 "yalazis" ; + yalekelel_V = mkV "yalekelel" ; + yalekelel_V2 = mkV2 "yalekelel" ; + yalel_V = mkV "yalel" ; + yalel_V2 = mkV2 "yalel" ; + yalez_V = mkV "yalez" ; + yalez_V2 = mkV2 "yalez" ; + yalezel_V = mkV "yalezel" ; + yalezel_V2 = mkV2 "yalezel" ; + yaluz_V = mkV "yaluz" ; + yaluz_V2 = mkV2 "yaluz" ; + yaluzis_V = mkV "yaluzis" ; + yaluzis_V2 = mkV2 "yaluzis" ; + yan_V = mkV "yan" ; + yan_V2 = mkV2 "yan" ; + yanel_V = mkV "yanel" ; + yanel_V2 = mkV2 "yanel" ; + yanquz_V = mkV "yanquz" ; + yanquz_V2 = mkV2 "yanquz" ; + yavuz_V = mkV "yavuz" ; + yavuz_V2 = mkV2 "yavuz" ; + yayiz_V = mkV "yayiz" ; + yayiz_V2 = mkV2 "yayiz" ; + yek_V = mkV "yek" ; + yek_V2 = mkV2 "yek" ; + yekel_V = mkV "yekel" ; + yekel_V2 = mkV2 "yekel" ; + yekelan_V = mkV "yekelan" ; + yekelan_V2 = mkV2 "yekelan" ; + yekelel_V = mkV "yekelel" ; + yekelel_V2 = mkV2 "yekelel" ; + yekez_V = mkV "yekez" ; + yekez_V2 = mkV2 "yekez" ; + yekis_V = mkV "yekis" ; + yekis_V2 = mkV2 "yekis" ; + yel_V = mkV "yel" ; + yel_V2 = mkV2 "yel" ; + yelan_V = mkV "yelan" ; + yelan_V2 = mkV2 "yelan" ; + yelekelel_V = mkV "yelekelel" ; + yelekelel_V2 = mkV2 "yelekelel" ; + yelel_V = mkV "yelel" ; + yelel_V2 = mkV2 "yelel" ; + yend_V = mkV "yend" ; + yend_V2 = mkV2 "yend" ; + yendel_V = mkV "yendel" ; + yendel_V2 = mkV2 "yendel" ; + yendis_V = mkV "yendis" ; + yendis_V2 = mkV2 "yendis" ; + yendlel_V = mkV "yendlel" ; + yendlel_V2 = mkV2 "yendlel" ; + yeng_V = mkV "yeng" ; + yeng_V2 = mkV2 "yeng" ; + yengan_V = mkV "yengan" ; + yengan_V2 = mkV2 "yengan" ; + yengek_V = mkV "yengek" ; + yengek_V2 = mkV2 "yengek" ; + yengel_V = mkV "yengel" ; + yengel_V2 = mkV2 "yengel" ; + yephuk_V = mkV "yephuk" ; + yephuk_V2 = mkV2 "yephuk" ; + yeth_V = mkV "yeth" ; + yeth_V2 = mkV2 "yeth" ; + yikaz_V = mkV "yikaz" ; + yikaz_V2 = mkV2 "yikaz" ; + ying_V = mkV "ying" ; + ying_V2 = mkV2 "ying" ; + yingan_V = mkV "yingan" ; + yingan_V2 = mkV2 "yingan" ; + yingaz_V = mkV "yingaz" ; + yingaz_V2 = mkV2 "yingaz" ; + yingek_V = mkV "yingek" ; + yingek_V2 = mkV2 "yingek" ; + yis_V = mkV "yis" ; + yis_V2 = mkV2 "yis" ; + yisan_V = mkV "yisan" ; + yisan_V2 = mkV2 "yisan" ; + yisanel_V = mkV "yisanel" ; + yisanel_V2 = mkV2 "yisanel" ; + yisel_V = mkV "yisel" ; + yisel_V2 = mkV2 "yisel" ; + yiyiz_V = mkV "yiyiz" ; + yiyiz_V2 = mkV2 "yiyiz" ; + yobayob_V = mkV "yobayob" ; + yobayob_V2 = mkV2 "yobayob" ; + yobayobek_V = mkV "yobayobek" ; + yobayobek_V2 = mkV2 "yobayobek" ; + yobek_V = mkV "yobek" ; + yobek_V2 = mkV2 "yobek" ; + yobekel_V = mkV "yobekel" ; + yobekel_V2 = mkV2 "yobekel" ; + yobelekelel_V = mkV "yobelekelel" ; + yobelekelel_V2 = mkV2 "yobelekelel" ; + yobukel_V = mkV "yobukel" ; + yobukel_V2 = mkV2 "yobukel" ; + yobul_V = mkV "yobul" ; + yobul_V2 = mkV2 "yobul" ; + yobuz_V = mkV "yobuz" ; + yobuz_V2 = mkV2 "yobuz" ; + yocel_V = mkV "yocel" ; + yocel_V2 = mkV2 "yocel" ; + yocelel_V = mkV "yocelel" ; + yocelel_V2 = mkV2 "yocelel" ; + yokoz_V = mkV "yokoz" ; + yokoz_V2 = mkV2 "yokoz" ; + yolekelel_V = mkV "yolekelel" ; + yolekelel_V2 = mkV2 "yolekelel" ; + yosuk_V = mkV "yosuk" ; + yosuk_V2 = mkV2 "yosuk" ; + yosul_V = mkV "yosul" ; + yosul_V2 = mkV2 "yosul" ; + yothul_V = mkV "yothul" ; + yothul_V2 = mkV2 "yothul" ; + yovuk_V = mkV "yovuk" ; + yovuk_V2 = mkV2 "yovuk" ; + yovul_V = mkV "yovul" ; + yovul_V2 = mkV2 "yovul" ; + yovulel_V = mkV "yovulel" ; + yovulel_V2 = mkV2 "yovulel" ; + yoyosis_V = mkV "yoyosis" ; + yoyosis_V2 = mkV2 "yoyosis" ; + z_V = mkV "z" ; + z_V2 = mkV2 "z" ; + zab_V = mkV "zab" ; + zab_V2 = mkV2 "zab" ; + zabalaz_V = mkV "zabalaz" ; + zabalaz_V2 = mkV2 "zabalaz" ; + zaban_V = mkV "zaban" ; + zaban_V2 = mkV2 "zaban" ; + zabanelis_V = mkV "zabanelis" ; + zabanelis_V2 = mkV2 "zabanelis" ; + zac_V = mkV "zac" ; + zac_V2 = mkV2 "zac" ; + zakal_V = mkV "zakal" ; + zakal_V2 = mkV2 "zakal" ; + zal_V = mkV "zal" ; + zal_V2 = mkV2 "zal" ; + zalan_V = mkV "zalan" ; + zalan_V2 = mkV2 "zalan" ; + zalel_V = mkV "zalel" ; + zalel_V2 = mkV2 "zalel" ; + zam_V = mkV "zam" ; + zam_V2 = mkV2 "zam" ; + zaman_V = mkV "zaman" ; + zaman_V2 = mkV2 "zaman" ; + zamazam_V = mkV "zamazam" ; + zamazam_V2 = mkV2 "zamazam" ; + zamek_V = mkV "zamek" ; + zamek_V2 = mkV2 "zamek" ; + zamel_V = mkV "zamel" ; + zamel_V2 = mkV2 "zamel" ; + zamul_V = mkV "zamul" ; + zamul_V2 = mkV2 "zamul" ; + zan_V = mkV "zan" ; + zan_V2 = mkV2 "zan" ; + zanel_V = mkV "zanel" ; + zanel_V2 = mkV2 "zanel" ; + zanelis_V = mkV "zanelis" ; + zanelis_V2 = mkV2 "zanelis" ; + zang_V = mkV "zang" ; + zang_V2 = mkV2 "zang" ; + zangaz_V = mkV "zangaz" ; + zangaz_V2 = mkV2 "zangaz" ; + zathul_V = mkV "zathul" ; + zathul_V2 = mkV2 "zathul" ; + zaz_V = mkV "zaz" ; + zaz_V2 = mkV2 "zaz" ; + zazel_V = mkV "zazel" ; + zazel_V2 = mkV2 "zazel" ; + zazis_V = mkV "zazis" ; + zazis_V2 = mkV2 "zazis" ; + zek_V = mkV "zek" ; + zek_V2 = mkV2 "zek" ; + zekek_V = mkV "zekek" ; + zekek_V2 = mkV2 "zekek" ; + zekel_V = mkV "zekel" ; + zekel_V2 = mkV2 "zekel" ; + zel_V = mkV "zel" ; + zel_V2 = mkV2 "zel" ; + zelekelel_V = mkV "zelekelel" ; + zelekelel_V2 = mkV2 "zelekelel" ; + zib_V = mkV "zib" ; + zib_V2 = mkV2 "zib" ; + ziban_V = mkV "ziban" ; + ziban_V2 = mkV2 "ziban" ; + zibek_V = mkV "zibek" ; + zibek_V2 = mkV2 "zibek" ; + zibekan_V = mkV "zibekan" ; + zibekan_V2 = mkV2 "zibekan" ; + zibekel_V = mkV "zibekel" ; + zibekel_V2 = mkV2 "zibekel" ; + zibel_V = mkV "zibel" ; + zibel_V2 = mkV2 "zibel" ; + zibul_V = mkV "zibul" ; + zibul_V2 = mkV2 "zibul" ; + zibulel_V = mkV "zibulel" ; + zibulel_V2 = mkV2 "zibulel" ; + zibus_V = mkV "zibus" ; + zibus_V2 = mkV2 "zibus" ; + zibusel_V = mkV "zibusel" ; + zibusel_V2 = mkV2 "zibusel" ; + zik_V = mkV "zik" ; + zik_V2 = mkV2 "zik" ; + zil_V = mkV "zil" ; + zil_V2 = mkV2 "zil" ; + zilan_V = mkV "zilan" ; + zilan_V2 = mkV2 "zilan" ; + zilekelel_V = mkV "zilekelel" ; + zilekelel_V2 = mkV2 "zilekelel" ; + zilel_V = mkV "zilel" ; + zilel_V2 = mkV2 "zilel" ; + zilis_V = mkV "zilis" ; + zilis_V2 = mkV2 "zilis" ; + zimazis_V = mkV "zimazis" ; + zimazis_V2 = mkV2 "zimazis" ; + zimelel_V = mkV "zimelel" ; + zimelel_V2 = mkV2 "zimelel" ; + zimuk_V = mkV "zimuk" ; + zimuk_V2 = mkV2 "zimuk" ; + zind_V = mkV "zind" ; + zind_V2 = mkV2 "zind" ; + zindel_V = mkV "zindel" ; + zindel_V2 = mkV2 "zindel" ; + zindl_V = mkV "zindl" ; + zindl_V2 = mkV2 "zindl" ; + zindlel_V = mkV "zindlel" ; + zindlel_V2 = mkV2 "zindlel" ; + zing_V = mkV "zing" ; + zing_V2 = mkV2 "zing" ; + zingan_V = mkV "zingan" ; + zingan_V2 = mkV2 "zingan" ; + zinganel_V = mkV "zinganel" ; + zinganel_V2 = mkV2 "zinganel" ; + zingek_V = mkV "zingek" ; + zingek_V2 = mkV2 "zingek" ; + zingel_V = mkV "zingel" ; + zingel_V2 = mkV2 "zingel" ; + zinz_V = mkV "zinz" ; + zinz_V2 = mkV2 "zinz" ; + zis_V = mkV "zis" ; + zis_V2 = mkV2 "zis" ; + zisan_V = mkV "zisan" ; + zisan_V2 = mkV2 "zisan" ; + zisekel_V = mkV "zisekel" ; + zisekel_V2 = mkV2 "zisekel" ; + zisel_V = mkV "zisel" ; + zisel_V2 = mkV2 "zisel" ; + zisis_V = mkV "zisis" ; + zisis_V2 = mkV2 "zisis" ; + ziy_V = mkV "ziy" ; + ziy_V2 = mkV2 "ziy" ; + ziyek_V = mkV "ziyek" ; + ziyek_V2 = mkV2 "ziyek" ; + ziyekel_V = mkV "ziyekel" ; + ziyekel_V2 = mkV2 "ziyekel" ; + ziyel_V = mkV "ziyel" ; + ziyel_V2 = mkV2 "ziyel" ; + ziyis_V = mkV "ziyis" ; + ziyis_V2 = mkV2 "ziyis" ; + zob_V = mkV "zob" ; + zob_V2 = mkV2 "zob" ; + zobek_V = mkV "zobek" ; + zobek_V2 = mkV2 "zobek" ; + zol_V = mkV "zol" ; + zol_V2 = mkV2 "zol" ; + zolekelel_V = mkV "zolekelel" ; + zolekelel_V2 = mkV2 "zolekelel" ; + zolis_V = mkV "zolis" ; + zolis_V2 = mkV2 "zolis" ; + zombekel_V = mkV "zombekel" ; + zombekel_V2 = mkV2 "zombekel" ; + zombiz_V = mkV "zombiz" ; + zombiz_V2 = mkV2 "zombiz" ; + zond_V = mkV "zond" ; + zond_V2 = mkV2 "zond" ; + zondan_V = mkV "zondan" ; + zondan_V2 = mkV2 "zondan" ; + zondel_V = mkV "zondel" ; + zondel_V2 = mkV2 "zondel" ; + zoth_V = mkV "zoth" ; + zoth_V2 = mkV2 "zoth" ; + zothel_V = mkV "zothel" ; + zothel_V2 = mkV2 "zothel" ; + zothelel_V = mkV "zothelel" ; + zothelel_V2 = mkV2 "zothelel" ; + zothis_V = mkV "zothis" ; + zothis_V2 = mkV2 "zothis" ; + zoyiz_V = mkV "zoyiz" ; + zoyiz_V2 = mkV2 "zoyiz" ; + zub_V = mkV "zub" ; + zub_V2 = mkV2 "zub" ; + zuk_V = mkV "zuk" ; + zuk_V2 = mkV2 "zuk" ; + zukan_V = mkV "zukan" ; + zukan_V2 = mkV2 "zukan" ; + zukek_V = mkV "zukek" ; + zukek_V2 = mkV2 "zukek" ; + zukuz_V = mkV "zukuz" ; + zukuz_V2 = mkV2 "zukuz" ; + zukuzis_V = mkV "zukuzis" ; + zukuzis_V2 = mkV2 "zukuzis" ; + zul_V = mkV "zul" ; + zul_V2 = mkV2 "zul" ; + zulazul_V = mkV "zulazul" ; + zulazul_V2 = mkV2 "zulazul" ; + zulel_V = mkV "zulel" ; + zulel_V2 = mkV2 "zulel" ; + zulis_V = mkV "zulis" ; + zulis_V2 = mkV2 "zulis" ; + zum_V = mkV "zum" ; + zum_V2 = mkV2 "zum" ; + zumek_V = mkV "zumek" ; + zumek_V2 = mkV2 "zumek" ; + zumekel_V = mkV "zumekel" ; + zumekel_V2 = mkV2 "zumekel" ; + zumis_V = mkV "zumis" ; + zumis_V2 = mkV2 "zumis" ; + zungez_V = mkV "zungez" ; + zungez_V2 = mkV2 "zungez" ; + zuz_V = mkV "zuz" ; + zuz_V2 = mkV2 "zuz" ; + zuzel_V = mkV "zuzel" ; + zuzel_V2 = mkV2 "zuzel" ; + zw_V = mkV "zw" ; + zw_V2 = mkV2 "zw" ; + zwakal_V = mkV "zwakal" ; + zwakal_V2 = mkV2 "zwakal" ; + zwan_V = mkV "zwan" ; + zwan_V2 = mkV2 "zwan" ; + zwel_V = mkV "zwel" ; + zwel_V2 = mkV2 "zwel" ; + zwelan_V = mkV "zwelan" ; + zwelan_V2 = mkV2 "zwelan" ; + zwib_V = mkV "zwib" ; + zwib_V2 = mkV2 "zwib" ; + zwis_V = mkV "zwis" ; + zwis_V2 = mkV2 "zwis" ; + zwisis_V = mkV "zwisis" ; + zwisis_V2 = mkV2 "zwisis" ; + + -- passive verb roots + abekelw_V = passV "abekelw" ; + abekelw_V2 = passV2 "abekelw" ; + abekiw_V = passV "abekiw" ; + abekiw_V2 = passV2 "abekiw" ; + abekw_V = passV "abekw" ; + abekw_V2 = passV2 "abekw" ; + abelw_V = passV "abelw" ; + abelw_V2 = passV2 "abelw" ; + abiw_V = passV "abiw" ; + abiw_V2 = passV2 "abiw" ; + abukelw_V = passV "abukelw" ; + abukelw_V2 = passV2 "abukelw" ; + abukw_V = passV "abukw" ; + abukw_V2 = passV2 "abukw" ; + abuzw_V = passV "abuzw" ; + abuzw_V2 = passV2 "abuzw" ; + ahlukaniselw_V = passV "ahlukaniselw" ; + ahlukaniselw_V2 = passV2 "ahlukaniselw" ; + ahlukanisw_V = passV "ahlukanisw" ; + ahlukanisw_V2 = passV2 "ahlukanisw" ; + ahlukw_V = passV "ahlukw" ; + ahlukw_V2 = passV2 "ahlukw" ; + ahlulelw_V = passV "ahlulelw" ; + ahlulelw_V2 = passV2 "ahlulelw" ; + ahlulw_V = passV "ahlulw" ; + ahlulw_V2 = passV2 "ahlulw" ; + akhelw_V = passV "akhelw" ; + akhelw_V2 = passV2 "akhelw" ; + akhisw_V = passV "akhisw" ; + akhisw_V2 = passV2 "akhisw" ; + akhiw_V = passV "akhiw" ; + akhiw_V2 = passV2 "akhiw" ; + akhw_V = passV "akhw" ; + akhw_V2 = passV2 "akhw" ; + akhwelw_V = passV "akhwelw" ; + akhwelw_V2 = passV2 "akhwelw" ; + alekelelw_V = passV "alekelelw" ; + alekelelw_V2 = passV2 "alekelelw" ; + alekelw_V = passV "alekelw" ; + alekelw_V2 = passV2 "alekelw" ; + alekw_V = passV "alekw" ; + alekw_V2 = passV2 "alekw" ; + aleliw_V = passV "aleliw" ; + aleliw_V2 = passV2 "aleliw" ; + alelw_V = passV "alelw" ; + alelw_V2 = passV2 "alelw" ; + alisw_V = passV "alisw" ; + alisw_V2 = passV2 "alisw" ; + aliw_V = passV "aliw" ; + aliw_V2 = passV2 "aliw" ; + alukiw_V = passV "alukiw" ; + alukiw_V2 = passV2 "alukiw" ; + alukw_V = passV "alukw" ; + alukw_V2 = passV2 "alukw" ; + alw_V = passV "alw" ; + alw_V2 = passV2 "alw" ; + ambelw_V = passV "ambelw" ; + ambelw_V2 = passV2 "ambelw" ; + ambiw_V = passV "ambiw" ; + ambiw_V2 = passV2 "ambiw" ; + amukelw_V = passV "amukelw" ; + amukelw_V2 = passV2 "amukelw" ; + amukisw_V = passV "amukisw" ; + amukisw_V2 = passV2 "amukisw" ; + amulisw_V = passV "amulisw" ; + amulisw_V2 = passV2 "amulisw" ; + andelelw_V = passV "andelelw" ; + andelelw_V2 = passV2 "andelelw" ; + andelw_V = passV "andelw" ; + andelw_V2 = passV2 "andelw" ; + andisw_V = passV "andisw" ; + andisw_V2 = passV2 "andisw" ; + andiw_V = passV "andiw" ; + andiw_V2 = passV2 "andiw" ; + andulw_V = passV "andulw" ; + andulw_V2 = passV2 "andulw" ; + andw_V = passV "andw" ; + andw_V2 = passV2 "andw" ; + anelisiw_V = passV "anelisiw" ; + anelisiw_V2 = passV2 "anelisiw" ; + anelisw_V = passV "anelisw" ; + anelisw_V2 = passV2 "anelisw" ; + anelw_V = passV "anelw" ; + anelw_V2 = passV2 "anelw" ; + angamisw_V = passV "angamisw" ; + angamisw_V2 = passV2 "angamisw" ; + anganelisiw_V = passV "anganelisiw" ; + anganelisiw_V2 = passV2 "anganelisiw" ; + anganelw_V = passV "anganelw" ; + anganelw_V2 = passV2 "anganelw" ; + anganisw_V = passV "anganisw" ; + anganisw_V2 = passV2 "anganisw" ; + angelw_V = passV "angelw" ; + angelw_V2 = passV2 "angelw" ; + angisw_V = passV "angisw" ; + angisw_V2 = passV2 "angisw" ; + angiw_V = passV "angiw" ; + angiw_V2 = passV2 "angiw" ; + angw_V = passV "angw" ; + angw_V2 = passV2 "angw" ; + anyelelw_V = passV "anyelelw" ; + anyelelw_V2 = passV2 "anyelelw" ; + anyelw_V = passV "anyelw" ; + anyelw_V2 = passV2 "anyelw" ; + anyisw_V = passV "anyisw" ; + anyisw_V2 = passV2 "anyisw" ; + anyulelw_V = passV "anyulelw" ; + anyulelw_V2 = passV2 "anyulelw" ; + anyulw_V = passV "anyulw" ; + anyulw_V2 = passV2 "anyulw" ; + anyusw_V = passV "anyusw" ; + anyusw_V2 = passV2 "anyusw" ; + anyw_V = passV "anyw" ; + anyw_V2 = passV2 "anyw" ; + aphucw_V = passV "aphucw" ; + aphucw_V2 = passV2 "aphucw" ; + aphulelw_V = passV "aphulelw" ; + aphulelw_V2 = passV2 "aphulelw" ; + athekw_V = passV "athekw" ; + athekw_V2 = passV2 "athekw" ; + athelelw_V = passV "athelelw" ; + athelelw_V2 = passV2 "athelelw" ; + atheliw_V = passV "atheliw" ; + atheliw_V2 = passV2 "atheliw" ; + athelw_V = passV "athelw" ; + athelw_V2 = passV2 "athelw" ; + athiw_V = passV "athiw" ; + athiw_V2 = passV2 "athiw" ; + athw_V = passV "athw" ; + athw_V2 = passV2 "athw" ; + athwelw_V = passV "athwelw" ; + athwelw_V2 = passV2 "athwelw" ; + aziw_V = passV "aziw" ; + aziw_V2 = passV2 "aziw" ; + babalekelw_V = passV "babalekelw" ; + babalekelw_V2 = passV2 "babalekelw" ; + babalw_V = passV "babalw" ; + babalw_V2 = passV2 "babalw" ; + babaziw_V = passV "babaziw" ; + babaziw_V2 = passV2 "babaziw" ; + babelw_V = passV "babelw" ; + babelw_V2 = passV2 "babelw" ; + bakazw_V = passV "bakazw" ; + bakazw_V2 = passV2 "bakazw" ; + bakuzw_V = passV "bakuzw" ; + bakuzw_V2 = passV2 "bakuzw" ; + balekelw_V = passV "balekelw" ; + balekelw_V2 = passV2 "balekelw" ; + balekw_V = passV "balekw" ; + balekw_V2 = passV2 "balekw" ; + balelw_V = passV "balelw" ; + balelw_V2 = passV2 "balelw" ; + baliw_V = passV "baliw" ; + baliw_V2 = passV2 "baliw" ; + balulw_V = passV "balulw" ; + balulw_V2 = passV2 "balulw" ; + balw_V = passV "balw" ; + balw_V2 = passV2 "balw" ; + bambelw_V = passV "bambelw" ; + bambelw_V2 = passV2 "bambelw" ; + bambisw_V = passV "bambisw" ; + bambisw_V2 = passV2 "bambisw" ; + bambiw_V = passV "bambiw" ; + bambiw_V2 = passV2 "bambiw" ; + bambw_V = passV "bambw" ; + bambw_V2 = passV2 "bambw" ; + bandakanyw_V = passV "bandakanyw" ; + bandakanyw_V2 = passV2 "bandakanyw" ; + bandelw_V = passV "bandelw" ; + bandelw_V2 = passV2 "bandelw" ; + bandlululw_V = passV "bandlululw" ; + bandlululw_V2 = passV2 "bandlululw" ; + bangelw_V = passV "bangelw" ; + bangelw_V2 = passV2 "bangelw" ; + bangisw_V = passV "bangisw" ; + bangisw_V2 = passV2 "bangisw" ; + bangw_V = passV "bangw" ; + bangw_V2 = passV2 "bangw" ; + baselw_V = passV "baselw" ; + baselw_V2 = passV2 "baselw" ; + basiw_V = passV "basiw" ; + basiw_V2 = passV2 "basiw" ; + bazisw_V = passV "bazisw" ; + bazisw_V2 = passV2 "bazisw" ; + baziw_V = passV "baziw" ; + baziw_V2 = passV2 "baziw" ; + bazw_V = passV "bazw" ; + bazw_V2 = passV2 "bazw" ; + bebelw_V = passV "bebelw" ; + bebelw_V2 = passV2 "bebelw" ; + bebethw_V = passV "bebethw" ; + bebethw_V2 = passV2 "bebethw" ; + bebw_V = passV "bebw" ; + bebw_V2 = passV2 "bebw" ; + behlekisw_V = passV "behlekisw" ; + behlekisw_V2 = passV2 "behlekisw" ; + bekelelw_V = passV "bekelelw" ; + bekelelw_V2 = passV2 "bekelelw" ; + bekelw_V = passV "bekelw" ; + bekelw_V2 = passV2 "bekelw" ; + bekisw_V = passV "bekisw" ; + bekisw_V2 = passV2 "bekisw" ; + bekiw_V = passV "bekiw" ; + bekiw_V2 = passV2 "bekiw" ; + bekw_V = passV "bekw" ; + bekw_V2 = passV2 "bekw" ; + belekw_V = passV "belekw" ; + belekw_V2 = passV2 "belekw" ; + beleselw_V = passV "beleselw" ; + beleselw_V2 = passV2 "beleselw" ; + belethw_V = passV "belethw" ; + belethw_V2 = passV2 "belethw" ; + belw_V = passV "belw" ; + belw_V2 = passV2 "belw" ; + bengw_V = passV "bengw" ; + bengw_V2 = passV2 "bengw" ; + bethelw_V = passV "bethelw" ; + bethelw_V2 = passV2 "bethelw" ; + bethw_V = passV "bethw" ; + bethw_V2 = passV2 "bethw" ; + bezelw_V = passV "bezelw" ; + bezelw_V2 = passV2 "bezelw" ; + bezw_V = passV "bezw" ; + bezw_V2 = passV2 "bezw" ; + bhabhathizw_V = passV "bhabhathizw" ; + bhabhathizw_V2 = passV2 "bhabhathizw" ; + bhabhiw_V = passV "bhabhiw" ; + bhabhiw_V2 = passV2 "bhabhiw" ; + bhabhw_V = passV "bhabhw" ; + bhabhw_V2 = passV2 "bhabhw" ; + bhajiw_V = passV "bhajiw" ; + bhajiw_V2 = passV2 "bhajiw" ; + bhajw_V = passV "bhajw" ; + bhajw_V2 = passV2 "bhajw" ; + bhakw_V = passV "bhakw" ; + bhakw_V2 = passV2 "bhakw" ; + bhalelw_V = passV "bhalelw" ; + bhalelw_V2 = passV2 "bhalelw" ; + bhaliselw_V = passV "bhaliselw" ; + bhaliselw_V2 = passV2 "bhaliselw" ; + bhalisiw_V = passV "bhalisiw" ; + bhalisiw_V2 = passV2 "bhalisiw" ; + bhalisw_V = passV "bhalisw" ; + bhalisw_V2 = passV2 "bhalisw" ; + bhaliw_V = passV "bhaliw" ; + bhaliw_V2 = passV2 "bhaliw" ; + bhalw_V = passV "bhalw" ; + bhalw_V2 = passV2 "bhalw" ; + bhaxabulw_V = passV "bhaxabulw" ; + bhaxabulw_V2 = passV2 "bhaxabulw" ; + bhecw_V = passV "bhecw" ; + bhecw_V2 = passV2 "bhecw" ; + bhedisw_V = passV "bhedisw" ; + bhedisw_V2 = passV2 "bhedisw" ; + bhekelw_V = passV "bhekelw" ; + bhekelw_V2 = passV2 "bhekelw" ; + bhekisisw_V = passV "bhekisisw" ; + bhekisisw_V2 = passV2 "bhekisisw" ; + bhekisw_V = passV "bhekisw" ; + bhekisw_V2 = passV2 "bhekisw" ; + bhekiw_V = passV "bhekiw" ; + bhekiw_V2 = passV2 "bhekiw" ; + bhekw_V = passV "bhekw" ; + bhekw_V2 = passV2 "bhekw" ; + bhidliziw_V = passV "bhidliziw" ; + bhidliziw_V2 = passV2 "bhidliziw" ; + bhokelw_V = passV "bhokelw" ; + bhokelw_V2 = passV2 "bhokelw" ; + bhokodw_V = passV "bhokodw" ; + bhokodw_V2 = passV2 "bhokodw" ; + bhonyw_V = passV "bhonyw" ; + bhonyw_V2 = passV2 "bhonyw" ; + bhubhelw_V = passV "bhubhelw" ; + bhubhelw_V2 = passV2 "bhubhelw" ; + bhubhw_V = passV "bhubhw" ; + bhubhw_V2 = passV2 "bhubhw" ; + bhudlw_V = passV "bhudlw" ; + bhudlw_V2 = passV2 "bhudlw" ; + bhudukezw_V = passV "bhudukezw" ; + bhudukezw_V2 = passV2 "bhudukezw" ; + bhujelw_V = passV "bhujelw" ; + bhujelw_V2 = passV2 "bhujelw" ; + bhujw_V = passV "bhujw" ; + bhujw_V2 = passV2 "bhujw" ; + bhuliw_V = passV "bhuliw" ; + bhuliw_V2 = passV2 "bhuliw" ; + bhulukw_V = passV "bhulukw" ; + bhulukw_V2 = passV2 "bhulukw" ; + bhulw_V = passV "bhulw" ; + bhulw_V2 = passV2 "bhulw" ; + bhungw_V = passV "bhungw" ; + bhungw_V2 = passV2 "bhungw" ; + bhunyelw_V = passV "bhunyelw" ; + bhunyelw_V2 = passV2 "bhunyelw" ; + bhunyw_V = passV "bhunyw" ; + bhunyw_V2 = passV2 "bhunyw" ; + bhuquzisw_V = passV "bhuquzisw" ; + bhuquzisw_V2 = passV2 "bhuquzisw" ; + bhuqw_V = passV "bhuqw" ; + bhuqw_V2 = passV2 "bhuqw" ; + bihlekisw_V = passV "bihlekisw" ; + bihlekisw_V2 = passV2 "bihlekisw" ; + bikelw_V = passV "bikelw" ; + bikelw_V2 = passV2 "bikelw" ; + bikw_V = passV "bikw" ; + bikw_V2 = passV2 "bikw" ; + bilozisw_V = passV "bilozisw" ; + bilozisw_V2 = passV2 "bilozisw" ; + bindw_V = passV "bindw" ; + bindw_V2 = passV2 "bindw" ; + bingelelw_V = passV "bingelelw" ; + bingelelw_V2 = passV2 "bingelelw" ; + biw_V = passV "biw" ; + biw_V2 = passV2 "biw" ; + biyelw_V = passV "biyelw" ; + biyelw_V2 = passV2 "biyelw" ; + bizelw_V = passV "bizelw" ; + bizelw_V2 = passV2 "bizelw" ; + biziw_V = passV "biziw" ; + biziw_V2 = passV2 "biziw" ; + bizw_V = passV "bizw" ; + bizw_V2 = passV2 "bizw" ; + bolekw_V = passV "bolekw" ; + bolekw_V2 = passV2 "bolekw" ; + bondw_V = passV "bondw" ; + bondw_V2 = passV2 "bondw" ; + bonelelw_V = passV "bonelelw" ; + bonelelw_V2 = passV2 "bonelelw" ; + bongelw_V = passV "bongelw" ; + bongelw_V2 = passV2 "bongelw" ; + bongw_V = passV "bongw" ; + bongw_V2 = passV2 "bongw" ; + bonisiw_V = passV "bonisiw" ; + bonisiw_V2 = passV2 "bonisiw" ; + bonisw_V = passV "bonisw" ; + bonisw_V2 = passV2 "bonisw" ; + boniw_V = passV "boniw" ; + boniw_V2 = passV2 "boniw" ; + bonw_V = passV "bonw" ; + bonw_V2 = passV2 "bonw" ; + bophelw_V = passV "bophelw" ; + bophelw_V2 = passV2 "bophelw" ; + bophiw_V = passV "bophiw" ; + bophiw_V2 = passV2 "bophiw" ; + bophw_V = passV "bophw" ; + bophw_V2 = passV2 "bophw" ; + bukelw_V = passV "bukelw" ; + bukelw_V2 = passV2 "bukelw" ; + bukeziw_V = passV "bukeziw" ; + bukeziw_V2 = passV2 "bukeziw" ; + bukezw_V = passV "bukezw" ; + bukezw_V2 = passV2 "bukezw" ; + bukisw_V = passV "bukisw" ; + bukisw_V2 = passV2 "bukisw" ; + bukw_V = passV "bukw" ; + bukw_V2 = passV2 "bukw" ; + bulungisw_V = passV "bulungisw" ; + bulungisw_V2 = passV2 "bulungisw" ; + bumbw_V = passV "bumbw" ; + bumbw_V2 = passV2 "bumbw" ; + bundisw_V = passV "bundisw" ; + bundisw_V2 = passV2 "bundisw" ; + bundw_V = passV "bundw" ; + bundw_V2 = passV2 "bundw" ; + bunganyelw_V = passV "bunganyelw" ; + bunganyelw_V2 = passV2 "bunganyelw" ; + bungaziw_V = passV "bungaziw" ; + bungaziw_V2 = passV2 "bungaziw" ; + bunyw_V = passV "bunyw" ; + bunyw_V2 = passV2 "bunyw" ; + busisiw_V = passV "busisiw" ; + busisiw_V2 = passV2 "busisiw" ; + busw_V = passV "busw" ; + busw_V2 = passV2 "busw" ; + buthanw_V = passV "buthanw" ; + buthanw_V2 = passV2 "buthanw" ; + buthelw_V = passV "buthelw" ; + buthelw_V2 = passV2 "buthelw" ; + buthiw_V = passV "buthiw" ; + buthiw_V2 = passV2 "buthiw" ; + buthw_V = passV "buthw" ; + buthw_V2 = passV2 "buthw" ; + buyekeziw_V = passV "buyekeziw" ; + buyekeziw_V2 = passV2 "buyekeziw" ; + buyekezw_V = passV "buyekezw" ; + buyekezw_V2 = passV2 "buyekezw" ; + buyelw_V = passV "buyelw" ; + buyelw_V2 = passV2 "buyelw" ; + buyiselw_V = passV "buyiselw" ; + buyiselw_V2 = passV2 "buyiselw" ; + buyisw_V = passV "buyisw" ; + buyisw_V2 = passV2 "buyisw" ; + buyw_V = passV "buyw" ; + buyw_V2 = passV2 "buyw" ; + buzisw_V = passV "buzisw" ; + buzisw_V2 = passV2 "buzisw" ; + buziw_V = passV "buziw" ; + buziw_V2 = passV2 "buziw" ; + buzw_V = passV "buzw" ; + buzw_V2 = passV2 "buzw" ; + buzwiw_V = passV "buzwiw" ; + buzwiw_V2 = passV2 "buzwiw" ; + cabangw_V = passV "cabangw" ; + cabangw_V2 = passV2 "cabangw" ; + cacisw_V = passV "cacisw" ; + cacisw_V2 = passV2 "cacisw" ; + cakiw_V = passV "cakiw" ; + cakiw_V2 = passV2 "cakiw" ; + cangcathw_V = passV "cangcathw" ; + cangcathw_V2 = passV2 "cangcathw" ; + cashw_V = passV "cashw" ; + cashw_V2 = passV2 "cashw" ; + casulw_V = passV "casulw" ; + casulw_V2 = passV2 "casulw" ; + cathulw_V = passV "cathulw" ; + cathulw_V2 = passV2 "cathulw" ; + cebw_V = passV "cebw" ; + cebw_V2 = passV2 "cebw" ; + cekw_V = passV "cekw" ; + cekw_V2 = passV2 "cekw" ; + celiw_V = passV "celiw" ; + celiw_V2 = passV2 "celiw" ; + celw_V = passV "celw" ; + celw_V2 = passV2 "celw" ; + centelw_V = passV "centelw" ; + centelw_V2 = passV2 "centelw" ; + centw_V = passV "centw" ; + centw_V2 = passV2 "centw" ; + cezw_V = passV "cezw" ; + cezw_V2 = passV2 "cezw" ; + chachazw_V = passV "chachazw" ; + chachazw_V2 = passV2 "chachazw" ; + chachelw_V = passV "chachelw" ; + chachelw_V2 = passV2 "chachelw" ; + chambuzw_V = passV "chambuzw" ; + chambuzw_V2 = passV2 "chambuzw" ; + chamiselw_V = passV "chamiselw" ; + chamiselw_V2 = passV2 "chamiselw" ; + chaphw_V = passV "chaphw" ; + chaphw_V2 = passV2 "chaphw" ; + chasiselw_V = passV "chasiselw" ; + chasiselw_V2 = passV2 "chasiselw" ; + chathazw_V = passV "chathazw" ; + chathazw_V2 = passV2 "chathazw" ; + chayw_V = passV "chayw" ; + chayw_V2 = passV2 "chayw" ; + chazelw_V = passV "chazelw" ; + chazelw_V2 = passV2 "chazelw" ; + chaziw_V = passV "chaziw" ; + chaziw_V2 = passV2 "chaziw" ; + chazw_V = passV "chazw" ; + chazw_V2 = passV2 "chazw" ; + chelelw_V = passV "chelelw" ; + chelelw_V2 = passV2 "chelelw" ; + chelw_V = passV "chelw" ; + chelw_V2 = passV2 "chelw" ; + chiphizw_V = passV "chiphizw" ; + chiphizw_V2 = passV2 "chiphizw" ; + chithelw_V = passV "chithelw" ; + chithelw_V2 = passV2 "chithelw" ; + chithw_V = passV "chithw" ; + chithw_V2 = passV2 "chithw" ; + chobisw_V = passV "chobisw" ; + chobisw_V2 = passV2 "chobisw" ; + chomw_V = passV "chomw" ; + chomw_V2 = passV2 "chomw" ; + chumisw_V = passV "chumisw" ; + chumisw_V2 = passV2 "chumisw" ; + chushw_V = passV "chushw" ; + chushw_V2 = passV2 "chushw" ; + chwenselw_V = passV "chwenselw" ; + chwenselw_V2 = passV2 "chwenselw" ; + chwensw_V = passV "chwensw" ; + chwensw_V2 = passV2 "chwensw" ; + cibw_V = passV "cibw" ; + cibw_V2 = passV2 "cibw" ; + ciciyelw_V = passV "ciciyelw" ; + ciciyelw_V2 = passV2 "ciciyelw" ; + cikelw_V = passV "cikelw" ; + cikelw_V2 = passV2 "cikelw" ; + cimelisw_V = passV "cimelisw" ; + cimelisw_V2 = passV2 "cimelisw" ; + cimw_V = passV "cimw" ; + cimw_V2 = passV2 "cimw" ; + cindezelw_V = passV "cindezelw" ; + cindezelw_V2 = passV2 "cindezelw" ; + cinelelw_V = passV "cinelelw" ; + cinelelw_V2 = passV2 "cinelelw" ; + cingw_V = passV "cingw" ; + cingw_V2 = passV2 "cingw" ; + cishw_V = passV "cishw" ; + cishw_V2 = passV2 "cishw" ; + cobelw_V = passV "cobelw" ; + cobelw_V2 = passV2 "cobelw" ; + cobw_V = passV "cobw" ; + cobw_V2 = passV2 "cobw" ; + colw_V = passV "colw" ; + colw_V2 = passV2 "colw" ; + consiselw_V = passV "consiselw" ; + consiselw_V2 = passV2 "consiselw" ; + coshw_V = passV "coshw" ; + coshw_V2 = passV2 "coshw" ; + culw_V = passV "culw" ; + culw_V2 = passV2 "culw" ; + cuphw_V = passV "cuphw" ; + cuphw_V2 = passV2 "cuphw" ; + cushw_V = passV "cushw" ; + cushw_V2 = passV2 "cushw" ; + cwaningw_V = passV "cwaningw" ; + cwaningw_V2 = passV2 "cwaningw" ; + cwasiw_V = passV "cwasiw" ; + cwasiw_V2 = passV2 "cwasiw" ; + cwasw_V = passV "cwasw" ; + cwasw_V2 = passV2 "cwasw" ; + cwengw_V = passV "cwengw" ; + cwengw_V2 = passV2 "cwengw" ; + cwilisw_V = passV "cwilisw" ; + cwilisw_V2 = passV2 "cwilisw" ; + dakelw_V = passV "dakelw" ; + dakelw_V2 = passV2 "dakelw" ; + dakiw_V = passV "dakiw" ; + dakiw_V2 = passV2 "dakiw" ; + dakw_V = passV "dakw" ; + dakw_V2 = passV2 "dakw" ; + dalakaxw_V = passV "dalakaxw" ; + dalakaxw_V2 = passV2 "dalakaxw" ; + dalelw_V = passV "dalelw" ; + dalelw_V2 = passV2 "dalelw" ; + daliw_V = passV "daliw" ; + daliw_V2 = passV2 "daliw" ; + dalw_V = passV "dalw" ; + dalw_V2 = passV2 "dalw" ; + dambisw_V = passV "dambisw" ; + dambisw_V2 = passV2 "dambisw" ; + dangalisw_V = passV "dangalisw" ; + dangalisw_V2 = passV2 "dangalisw" ; + dayiselw_V = passV "dayiselw" ; + dayiselw_V2 = passV2 "dayiselw" ; + dayisiw_V = passV "dayisiw" ; + dayisiw_V2 = passV2 "dayisiw" ; + dayisw_V = passV "dayisw" ; + dayisw_V2 = passV2 "dayisw" ; + dazw_V = passV "dazw" ; + dazw_V2 = passV2 "dazw" ; + dedelw_V = passV "dedelw" ; + dedelw_V2 = passV2 "dedelw" ; + dekiw_V = passV "dekiw" ; + dekiw_V2 = passV2 "dekiw" ; + deklezekiw_V = passV "deklezekiw" ; + deklezekiw_V2 = passV2 "deklezekiw" ; + dekw_V = passV "dekw" ; + dekw_V2 = passV2 "dekw" ; + delelw_V = passV "delelw" ; + delelw_V2 = passV2 "delelw" ; + delw_V = passV "delw" ; + delw_V2 = passV2 "delw" ; + dengw_V = passV "dengw" ; + dengw_V2 = passV2 "dengw" ; + didiyelw_V = passV "didiyelw" ; + didiyelw_V2 = passV2 "didiyelw" ; + didizelw_V = passV "didizelw" ; + didizelw_V2 = passV2 "didizelw" ; + didw_V = passV "didw" ; + didw_V2 = passV2 "didw" ; + dikadikw_V = passV "dikadikw" ; + dikadikw_V2 = passV2 "dikadikw" ; + dikiselw_V = passV "dikiselw" ; + dikiselw_V2 = passV2 "dikiselw" ; + dilikelw_V = passV "dilikelw" ; + dilikelw_V2 = passV2 "dilikelw" ; + dilizelw_V = passV "dilizelw" ; + dilizelw_V2 = passV2 "dilizelw" ; + dilizw_V = passV "dilizw" ; + dilizw_V2 = passV2 "dilizw" ; + dindw_V = passV "dindw" ; + dindw_V2 = passV2 "dindw" ; + dingidiw_V = passV "dingidiw" ; + dingidiw_V2 = passV2 "dingidiw" ; + dingidw_V = passV "dingidw" ; + dingidw_V2 = passV2 "dingidw" ; + dingisiw_V = passV "dingisiw" ; + dingisiw_V2 = passV2 "dingisiw" ; + dingisw_V = passV "dingisw" ; + dingisw_V2 = passV2 "dingisw" ; + dingw_V = passV "dingw" ; + dingw_V2 = passV2 "dingw" ; + diniw_V = passV "diniw" ; + diniw_V2 = passV2 "diniw" ; + dinw_V = passV "dinw" ; + dinw_V2 = passV2 "dinw" ; + dlalelw_V = passV "dlalelw" ; + dlalelw_V2 = passV2 "dlalelw" ; + dlalisw_V = passV "dlalisw" ; + dlalisw_V2 = passV2 "dlalisw" ; + dlalw_V = passV "dlalw" ; + dlalw_V2 = passV2 "dlalw" ; + dleleselw_V = passV "dleleselw" ; + dleleselw_V2 = passV2 "dleleselw" ; + dlelw_V = passV "dlelw" ; + dlelw_V2 = passV2 "dlelw" ; + dlisiw_V = passV "dlisiw" ; + dlisiw_V2 = passV2 "dlisiw" ; + dlisw_V = passV "dlisw" ; + dlisw_V2 = passV2 "dlisw" ; + dliw_V = passV "dliw" ; + dliw_V2 = passV2 "dliw" ; + dluliselw_V = passV "dluliselw" ; + dluliselw_V2 = passV2 "dluliselw" ; + dlulisw_V = passV "dlulisw" ; + dlulisw_V2 = passV2 "dlulisw" ; + dlulw_V = passV "dlulw" ; + dlulw_V2 = passV2 "dlulw" ; + dlungw_V = passV "dlungw" ; + dlungw_V2 = passV2 "dlungw" ; + dlw_V = passV "dlw" ; + dlw_V2 = passV2 "dlw" ; + dlwengulw_V = passV "dlwengulw" ; + dlwengulw_V2 = passV2 "dlwengulw" ; + dodw_V = passV "dodw" ; + dodw_V2 = passV2 "dodw" ; + donselw_V = passV "donselw" ; + donselw_V2 = passV2 "donselw" ; + donsw_V = passV "donsw" ; + donsw_V2 = passV2 "donsw" ; + dudulw_V = passV "dudulw" ; + dudulw_V2 = passV2 "dudulw" ; + duduzelw_V = passV "duduzelw" ; + duduzelw_V2 = passV2 "duduzelw" ; + duduzw_V = passV "duduzw" ; + duduzw_V2 = passV2 "duduzw" ; + dudw_V = passV "dudw" ; + dudw_V2 = passV2 "dudw" ; + dukelw_V = passV "dukelw" ; + dukelw_V2 = passV2 "dukelw" ; + dukisw_V = passV "dukisw" ; + dukisw_V2 = passV2 "dukisw" ; + dumbw_V = passV "dumbw" ; + dumbw_V2 = passV2 "dumbw" ; + dumelw_V = passV "dumelw" ; + dumelw_V2 = passV2 "dumelw" ; + dwebelw_V = passV "dwebelw" ; + dwebelw_V2 = passV2 "dwebelw" ; + dwebiw_V = passV "dwebiw" ; + dwebiw_V2 = passV2 "dwebiw" ; + dwebw_V = passV "dwebw" ; + dwebw_V2 = passV2 "dwebw" ; + ebekelw_V = passV "ebekelw" ; + ebekelw_V2 = passV2 "ebekelw" ; + ebekiw_V = passV "ebekiw" ; + ebekiw_V2 = passV2 "ebekiw" ; + ebekw_V = passV "ebekw" ; + ebekw_V2 = passV2 "ebekw" ; + ebelw_V = passV "ebelw" ; + ebelw_V2 = passV2 "ebelw" ; + ebiw_V = passV "ebiw" ; + ebiw_V2 = passV2 "ebiw" ; + ebukelw_V = passV "ebukelw" ; + ebukelw_V2 = passV2 "ebukelw" ; + ebukw_V = passV "ebukw" ; + ebukw_V2 = passV2 "ebukw" ; + ebuzw_V = passV "ebuzw" ; + ebuzw_V2 = passV2 "ebuzw" ; + ecekw_V = passV "ecekw" ; + ecekw_V2 = passV2 "ecekw" ; + edluliselw_V = passV "edluliselw" ; + edluliselw_V2 = passV2 "edluliselw" ; + edlulisw_V = passV "edlulisw" ; + edlulisw_V2 = passV2 "edlulisw" ; + edlulw_V = passV "edlulw" ; + edlulw_V2 = passV2 "edlulw" ; + efundelw_V = passV "efundelw" ; + efundelw_V2 = passV2 "efundelw" ; + efundisiw_V = passV "efundisiw" ; + efundisiw_V2 = passV2 "efundisiw" ; + efundisw_V = passV "efundisw" ; + efundisw_V2 = passV2 "efundisw" ; + efundw_V = passV "efundw" ; + efundw_V2 = passV2 "efundw" ; + eganiw_V = passV "eganiw" ; + eganiw_V2 = passV2 "eganiw" ; + eganw_V = passV "eganw" ; + eganw_V2 = passV2 "eganw" ; + ehlekisw_V = passV "ehlekisw" ; + ehlekisw_V2 = passV2 "ehlekisw" ; + ehlelelw_V = passV "ehlelelw" ; + ehlelelw_V2 = passV2 "ehlelelw" ; + ehlelw_V = passV "ehlelw" ; + ehlelw_V2 = passV2 "ehlelw" ; + ehlisw_V = passV "ehlisw" ; + ehlisw_V2 = passV2 "ehlisw" ; + ehliw_V = passV "ehliw" ; + ehliw_V2 = passV2 "ehliw" ; + ehlukaniselw_V = passV "ehlukaniselw" ; + ehlukaniselw_V2 = passV2 "ehlukaniselw" ; + ehlukanisiw_V = passV "ehlukanisiw" ; + ehlukanisiw_V2 = passV2 "ehlukanisiw" ; + ehlukanisw_V = passV "ehlukanisw" ; + ehlukanisw_V2 = passV2 "ehlukanisw" ; + ehlukw_V = passV "ehlukw" ; + ehlukw_V2 = passV2 "ehlukw" ; + ehlulelw_V = passV "ehlulelw" ; + ehlulelw_V2 = passV2 "ehlulelw" ; + ehluliw_V = passV "ehluliw" ; + ehluliw_V2 = passV2 "ehluliw" ; + ehlulw_V = passV "ehlulw" ; + ehlulw_V2 = passV2 "ehlulw" ; + ehlw_V = passV "ehlw" ; + ehlw_V2 = passV2 "ehlw" ; + ejwayezw_V = passV "ejwayezw" ; + ejwayezw_V2 = passV2 "ejwayezw" ; + ekhamisw_V = passV "ekhamisw" ; + ekhamisw_V2 = passV2 "ekhamisw" ; + elamelw_V = passV "elamelw" ; + elamelw_V2 = passV2 "elamelw" ; + elamw_V = passV "elamw" ; + elamw_V2 = passV2 "elamw" ; + elaphiw_V = passV "elaphiw" ; + elaphiw_V2 = passV2 "elaphiw" ; + elaphw_V = passV "elaphw" ; + elaphw_V2 = passV2 "elaphw" ; + elekelelw_V = passV "elekelelw" ; + elekelelw_V2 = passV2 "elekelelw" ; + elelelw_V = passV "elelelw" ; + elelelw_V2 = passV2 "elelelw" ; + elelw_V = passV "elelw" ; + elelw_V2 = passV2 "elelw" ; + elisiw_V = passV "elisiw" ; + elisiw_V2 = passV2 "elisiw" ; + elisw_V = passV "elisw" ; + elisw_V2 = passV2 "elisw" ; + eliw_V = passV "eliw" ; + eliw_V2 = passV2 "eliw" ; + elukiw_V = passV "elukiw" ; + elukiw_V2 = passV2 "elukiw" ; + elukw_V = passV "elukw" ; + elukw_V2 = passV2 "elukw" ; + elulekw_V = passV "elulekw" ; + elulekw_V2 = passV2 "elulekw" ; + elulelw_V = passV "elulelw" ; + elulelw_V2 = passV2 "elulelw" ; + eluliw_V = passV "eluliw" ; + eluliw_V2 = passV2 "eluliw" ; + elulw_V = passV "elulw" ; + elulw_V2 = passV2 "elulw" ; + elusw_V = passV "elusw" ; + elusw_V2 = passV2 "elusw" ; + elw_V = passV "elw" ; + elw_V2 = passV2 "elw" ; + embathisw_V = passV "embathisw" ; + embathisw_V2 = passV2 "embathisw" ; + embesw_V = passV "embesw" ; + embesw_V2 = passV2 "embesw" ; + embulelw_V = passV "embulelw" ; + embulelw_V2 = passV2 "embulelw" ; + emukelw_V = passV "emukelw" ; + emukelw_V2 = passV2 "emukelw" ; + emukw_V = passV "emukw" ; + emukw_V2 = passV2 "emukw" ; + enamisw_V = passV "enamisw" ; + enamisw_V2 = passV2 "enamisw" ; + enanelw_V = passV "enanelw" ; + enanelw_V2 = passV2 "enanelw" ; + encikiselw_V = passV "encikiselw" ; + encikiselw_V2 = passV2 "encikiselw" ; + endelw_V = passV "endelw" ; + endelw_V2 = passV2 "endelw" ; + endiselw_V = passV "endiselw" ; + endiselw_V2 = passV2 "endiselw" ; + endisw_V = passV "endisw" ; + endisw_V2 = passV2 "endisw" ; + endlalelw_V = passV "endlalelw" ; + endlalelw_V2 = passV2 "endlalelw" ; + endlalw_V = passV "endlalw" ; + endlalw_V2 = passV2 "endlalw" ; + endw_V = passV "endw" ; + endw_V2 = passV2 "endw" ; + enekelw_V = passV "enekelw" ; + enekelw_V2 = passV2 "enekelw" ; + enekw_V = passV "enekw" ; + enekw_V2 = passV2 "enekw" ; + enelisiw_V = passV "enelisiw" ; + enelisiw_V2 = passV2 "enelisiw" ; + enelisw_V = passV "enelisw" ; + enelisw_V2 = passV2 "enelisw" ; + enelw_V = passV "enelw" ; + enelw_V2 = passV2 "enelw" ; + engamelw_V = passV "engamelw" ; + engamelw_V2 = passV2 "engamelw" ; + engamw_V = passV "engamw" ; + engamw_V2 = passV2 "engamw" ; + engeziw_V = passV "engeziw" ; + engeziw_V2 = passV2 "engeziw" ; + engezw_V = passV "engezw" ; + engezw_V2 = passV2 "engezw" ; + enisw_V = passV "enisw" ; + enisw_V2 = passV2 "enisw" ; + enqabelw_V = passV "enqabelw" ; + enqabelw_V2 = passV2 "enqabelw" ; + enqabisw_V = passV "enqabisw" ; + enqabisw_V2 = passV2 "enqabisw" ; + enqabiw_V = passV "enqabiw" ; + enqabiw_V2 = passV2 "enqabiw" ; + enqabw_V = passV "enqabw" ; + enqabw_V2 = passV2 "enqabw" ; + enw_V = passV "enw" ; + enw_V2 = passV2 "enw" ; + enwayw_V = passV "enwayw" ; + enwayw_V2 = passV2 "enwayw" ; + enyanyw_V = passV "enyanyw" ; + enyanyw_V2 = passV2 "enyanyw" ; + enyelw_V = passV "enyelw" ; + enyelw_V2 = passV2 "enyelw" ; + enyukelw_V = passV "enyukelw" ; + enyukelw_V2 = passV2 "enyukelw" ; + enyusw_V = passV "enyusw" ; + enyusw_V2 = passV2 "enyusw" ; + enzakalisw_V = passV "enzakalisw" ; + enzakalisw_V2 = passV2 "enzakalisw" ; + enzelw_V = passV "enzelw" ; + enzelw_V2 = passV2 "enzelw" ; + enzisw_V = passV "enzisw" ; + enzisw_V2 = passV2 "enzisw" ; + enziw_V = passV "enziw" ; + enziw_V2 = passV2 "enziw" ; + enzw_V = passV "enzw" ; + enzw_V2 = passV2 "enzw" ; + ephekw_V = passV "ephekw" ; + ephekw_V2 = passV2 "ephekw" ; + ephelelw_V = passV "ephelelw" ; + ephelelw_V2 = passV2 "ephelelw" ; + ephiw_V = passV "ephiw" ; + ephiw_V2 = passV2 "ephiw" ; + ephucw_V = passV "ephucw" ; + ephucw_V2 = passV2 "ephucw" ; + ephukelw_V = passV "ephukelw" ; + ephukelw_V2 = passV2 "ephukelw" ; + ephulw_V = passV "ephulw" ; + ephulw_V2 = passV2 "ephulw" ; + ephuzw_V = passV "ephuzw" ; + ephuzw_V2 = passV2 "ephuzw" ; + eqelw_V = passV "eqelw" ; + eqelw_V2 = passV2 "eqelw" ; + eqisw_V = passV "eqisw" ; + eqisw_V2 = passV2 "eqisw" ; + eqiw_V = passV "eqiw" ; + eqiw_V2 = passV2 "eqiw" ; + esabisw_V = passV "esabisw" ; + esabisw_V2 = passV2 "esabisw" ; + esabw_V = passV "esabw" ; + esabw_V2 = passV2 "esabw" ; + esanelisiw_V = passV "esanelisiw" ; + esanelisiw_V2 = passV2 "esanelisiw" ; + esasw_V = passV "esasw" ; + esasw_V2 = passV2 "esasw" ; + esekelw_V = passV "esekelw" ; + esekelw_V2 = passV2 "esekelw" ; + esekw_V = passV "esekw" ; + esekw_V2 = passV2 "esekw" ; + eselw_V = passV "eselw" ; + eselw_V2 = passV2 "eselw" ; + eshelelisw_V = passV "eshelelisw" ; + eshelelisw_V2 = passV2 "eshelelisw" ; + eshelw_V = passV "eshelw" ; + eshelw_V2 = passV2 "eshelw" ; + esisekelw_V = passV "esisekelw" ; + esisekelw_V2 = passV2 "esisekelw" ; + esisiw_V = passV "esisiw" ; + esisiw_V2 = passV2 "esisiw" ; + esisw_V = passV "esisw" ; + esisw_V2 = passV2 "esisw" ; + esiw_V = passV "esiw" ; + esiw_V2 = passV2 "esiw" ; + esongw_V = passV "esongw" ; + esongw_V2 = passV2 "esongw" ; + esukelw_V = passV "esukelw" ; + esukelw_V2 = passV2 "esukelw" ; + esulw_V = passV "esulw" ; + esulw_V2 = passV2 "esulw" ; + esuselw_V = passV "esuselw" ; + esuselw_V2 = passV2 "esuselw" ; + esusw_V = passV "esusw" ; + esusw_V2 = passV2 "esusw" ; + esw_V = passV "esw" ; + esw_V2 = passV2 "esw" ; + ethekelisw_V = passV "ethekelisw" ; + ethekelisw_V2 = passV2 "ethekelisw" ; + ethekelw_V = passV "ethekelw" ; + ethekelw_V2 = passV2 "ethekelw" ; + ethelw_V = passV "ethelw" ; + ethelw_V2 = passV2 "ethelw" ; + ethembelw_V = passV "ethembelw" ; + ethembelw_V2 = passV2 "ethembelw" ; + ethembisiw_V = passV "ethembisiw" ; + ethembisiw_V2 = passV2 "ethembisiw" ; + ethembisw_V = passV "ethembisw" ; + ethembisw_V2 = passV2 "ethembisw" ; + ethembiw_V = passV "ethembiw" ; + ethembiw_V2 = passV2 "ethembiw" ; + ethembw_V = passV "ethembw" ; + ethembw_V2 = passV2 "ethembw" ; + ethiw_V = passV "ethiw" ; + ethiw_V2 = passV2 "ethiw" ; + ethukw_V = passV "ethukw" ; + ethukw_V2 = passV2 "ethukw" ; + ethulelw_V = passV "ethulelw" ; + ethulelw_V2 = passV2 "ethulelw" ; + ethulw_V = passV "ethulw" ; + ethulw_V2 = passV2 "ethulw" ; + ethusw_V = passV "ethusw" ; + ethusw_V2 = passV2 "ethusw" ; + ethw_V = passV "ethw" ; + ethw_V2 = passV2 "ethw" ; + ethwasisw_V = passV "ethwasisw" ; + ethwasisw_V2 = passV2 "ethwasisw" ; + ethwelw_V = passV "ethwelw" ; + ethwelw_V2 = passV2 "ethwelw" ; + ethwesw_V = passV "ethwesw" ; + ethwesw_V2 = passV2 "ethwesw" ; + evelelw_V = passV "evelelw" ; + evelelw_V2 = passV2 "evelelw" ; + exwayisw_V = passV "exwayisw" ; + exwayisw_V2 = passV2 "exwayisw" ; + eyisw_V = passV "eyisw" ; + eyisw_V2 = passV2 "eyisw" ; + eyiw_V = passV "eyiw" ; + eyiw_V2 = passV2 "eyiw" ; + ezeleliw_V = passV "ezeleliw" ; + ezeleliw_V2 = passV2 "ezeleliw" ; + ezelelw_V = passV "ezelelw" ; + ezelelw_V2 = passV2 "ezelelw" ; + ezelw_V = passV "ezelw" ; + ezelw_V2 = passV2 "ezelw" ; + fakazelw_V = passV "fakazelw" ; + fakazelw_V2 = passV2 "fakazelw" ; + fakazw_V = passV "fakazw" ; + fakazw_V2 = passV2 "fakazw" ; + fakelw_V = passV "fakelw" ; + fakelw_V2 = passV2 "fakelw" ; + fakw_V = passV "fakw" ; + fakw_V2 = passV2 "fakw" ; + fanelw_V = passV "fanelw" ; + fanelw_V2 = passV2 "fanelw" ; + fanisw_V = passV "fanisw" ; + fanisw_V2 = passV2 "fanisw" ; + fasw_V = passV "fasw" ; + fasw_V2 = passV2 "fasw" ; + fayw_V = passV "fayw" ; + fayw_V2 = passV2 "fayw" ; + fekethisiw_V = passV "fekethisiw" ; + fekethisiw_V2 = passV2 "fekethisiw" ; + fekethisw_V = passV "fekethisw" ; + fekethisw_V2 = passV2 "fekethisw" ; + felw_V = passV "felw" ; + felw_V2 = passV2 "felw" ; + fezw_V = passV "fezw" ; + fezw_V2 = passV2 "fezw" ; + ficw_V = passV "ficw" ; + ficw_V2 = passV2 "ficw" ; + fihlelw_V = passV "fihlelw" ; + fihlelw_V2 = passV2 "fihlelw" ; + fihliw_V = passV "fihliw" ; + fihliw_V2 = passV2 "fihliw" ; + fihlw_V = passV "fihlw" ; + fihlw_V2 = passV2 "fihlw" ; + fikelw_V = passV "fikelw" ; + fikelw_V2 = passV2 "fikelw" ; + fikisw_V = passV "fikisw" ; + fikisw_V2 = passV2 "fikisw" ; + fikw_V = passV "fikw" ; + fikw_V2 = passV2 "fikw" ; + finyelelw_V = passV "finyelelw" ; + finyelelw_V2 = passV2 "finyelelw" ; + finyeziw_V = passV "finyeziw" ; + finyeziw_V2 = passV2 "finyeziw" ; + finyw_V = passV "finyw" ; + finyw_V2 = passV2 "finyw" ; + fiphazw_V = passV "fiphazw" ; + fiphazw_V2 = passV2 "fiphazw" ; + fisw_V = passV "fisw" ; + fisw_V2 = passV2 "fisw" ; + fiw_V = passV "fiw" ; + fiw_V2 = passV2 "fiw" ; + folisw_V = passV "folisw" ; + folisw_V2 = passV2 "folisw" ; + fuhlelw_V = passV "fuhlelw" ; + fuhlelw_V2 = passV2 "fuhlelw" ; + fulathelw_V = passV "fulathelw" ; + fulathelw_V2 = passV2 "fulathelw" ; + fulelw_V = passV "fulelw" ; + fulelw_V2 = passV2 "fulelw" ; + fumanisw_V = passV "fumanisw" ; + fumanisw_V2 = passV2 "fumanisw" ; + fumanw_V = passV "fumanw" ; + fumanw_V2 = passV2 "fumanw" ; + fumbw_V = passV "fumbw" ; + fumbw_V2 = passV2 "fumbw" ; + fundelw_V = passV "fundelw" ; + fundelw_V2 = passV2 "fundelw" ; + fundiselw_V = passV "fundiselw" ; + fundiselw_V2 = passV2 "fundiselw" ; + fundisiw_V = passV "fundisiw" ; + fundisiw_V2 = passV2 "fundisiw" ; + fundisw_V = passV "fundisw" ; + fundisw_V2 = passV2 "fundisw" ; + fundiw_V = passV "fundiw" ; + fundiw_V2 = passV2 "fundiw" ; + fundw_V = passV "fundw" ; + fundw_V2 = passV2 "fundw" ; + fungw_V = passV "fungw" ; + fungw_V2 = passV2 "fungw" ; + funw_V = passV "funw" ; + funw_V2 = passV2 "funw" ; + funyanisw_V = passV "funyanisw" ; + funyanisw_V2 = passV2 "funyanisw" ; + funyanw_V = passV "funyanw" ; + funyanw_V2 = passV2 "funyanw" ; + funzw_V = passV "funzw" ; + funzw_V2 = passV2 "funzw" ; + fuqw_V = passV "fuqw" ; + fuqw_V2 = passV2 "fuqw" ; + fushanisw_V = passV "fushanisw" ; + fushanisw_V2 = passV2 "fushanisw" ; + futhw_V = passV "futhw" ; + futhw_V2 = passV2 "futhw" ; + fuyiw_V = passV "fuyiw" ; + fuyiw_V2 = passV2 "fuyiw" ; + fuyw_V = passV "fuyw" ; + fuyw_V2 = passV2 "fuyw" ; + fw_V = passV "fw" ; + fw_V2 = passV2 "fw" ; + gabhelw_V = passV "gabhelw" ; + gabhelw_V2 = passV2 "gabhelw" ; + gabhisw_V = passV "gabhisw" ; + gabhisw_V2 = passV2 "gabhisw" ; + gabhw_V = passV "gabhw" ; + gabhw_V2 = passV2 "gabhw" ; + gadiw_V = passV "gadiw" ; + gadiw_V2 = passV2 "gadiw" ; + gadw_V = passV "gadw" ; + gadw_V2 = passV2 "gadw" ; + gandayw_V = passV "gandayw" ; + gandayw_V2 = passV2 "gandayw" ; + ganelw_V = passV "ganelw" ; + ganelw_V2 = passV2 "ganelw" ; + gangelw_V = passV "gangelw" ; + gangelw_V2 = passV2 "gangelw" ; + gangw_V = passV "gangw" ; + gangw_V2 = passV2 "gangw" ; + ganiselw_V = passV "ganiselw" ; + ganiselw_V2 = passV2 "ganiselw" ; + ganiw_V = passV "ganiw" ; + ganiw_V2 = passV2 "ganiw" ; + ganw_V = passV "ganw" ; + ganw_V2 = passV2 "ganw" ; + gaqelw_V = passV "gaqelw" ; + gaqelw_V2 = passV2 "gaqelw" ; + gawuliw_V = passV "gawuliw" ; + gawuliw_V2 = passV2 "gawuliw" ; + gawulw_V = passV "gawulw" ; + gawulw_V2 = passV2 "gawulw" ; + gaxekw_V = passV "gaxekw" ; + gaxekw_V2 = passV2 "gaxekw" ; + gaxw_V = passV "gaxw" ; + gaxw_V2 = passV2 "gaxw" ; + gayelw_V = passV "gayelw" ; + gayelw_V2 = passV2 "gayelw" ; + gayiw_V = passV "gayiw" ; + gayiw_V2 = passV2 "gayiw" ; + gayw_V = passV "gayw" ; + gayw_V2 = passV2 "gayw" ; + gazingiw_V = passV "gazingiw" ; + gazingiw_V2 = passV2 "gazingiw" ; + gcabw_V = passV "gcabw" ; + gcabw_V2 = passV2 "gcabw" ; + gcagcelw_V = passV "gcagcelw" ; + gcagcelw_V2 = passV2 "gcagcelw" ; + gcagcw_V = passV "gcagcw" ; + gcagcw_V2 = passV2 "gcagcw" ; + gcinelw_V = passV "gcinelw" ; + gcinelw_V2 = passV2 "gcinelw" ; + gcinw_V = passV "gcinw" ; + gcinw_V2 = passV2 "gcinw" ; + gcizelelw_V = passV "gcizelelw" ; + gcizelelw_V2 = passV2 "gcizelelw" ; + gcobelw_V = passV "gcobelw" ; + gcobelw_V2 = passV2 "gcobelw" ; + gcobiw_V = passV "gcobiw" ; + gcobiw_V2 = passV2 "gcobiw" ; + gcobw_V = passV "gcobw" ; + gcobw_V2 = passV2 "gcobw" ; + gculisiw_V = passV "gculisiw" ; + gculisiw_V2 = passV2 "gculisiw" ; + gculisw_V = passV "gculisw" ; + gculisw_V2 = passV2 "gculisw" ; + gcwalisw_V = passV "gcwalisw" ; + gcwalisw_V2 = passV2 "gcwalisw" ; + gelekeqekw_V = passV "gelekeqekw" ; + gelekeqekw_V2 = passV2 "gelekeqekw" ; + gencw_V = passV "gencw" ; + gencw_V2 = passV2 "gencw" ; + gexw_V = passV "gexw" ; + gexw_V2 = passV2 "gexw" ; + gezelw_V = passV "gezelw" ; + gezelw_V2 = passV2 "gezelw" ; + gezw_V = passV "gezw" ; + gezw_V2 = passV2 "gezw" ; + gibelisw_V = passV "gibelisw" ; + gibelisw_V2 = passV2 "gibelisw" ; + gibelw_V = passV "gibelw" ; + gibelw_V2 = passV2 "gibelw" ; + gidw_V = passV "gidw" ; + gidw_V2 = passV2 "gidw" ; + gijimelw_V = passV "gijimelw" ; + gijimelw_V2 = passV2 "gijimelw" ; + gijimisw_V = passV "gijimisw" ; + gijimisw_V2 = passV2 "gijimisw" ; + giklizw_V = passV "giklizw" ; + giklizw_V2 = passV2 "giklizw" ; + gilw_V = passV "gilw" ; + gilw_V2 = passV2 "gilw" ; + gobhw_V = passV "gobhw" ; + gobhw_V2 = passV2 "gobhw" ; + gobw_V = passV "gobw" ; + gobw_V2 = passV2 "gobw" ; + godlw_V = passV "godlw" ; + godlw_V2 = passV2 "godlw" ; + godolisw_V = passV "godolisw" ; + godolisw_V2 = passV2 "godolisw" ; + godongw_V = passV "godongw" ; + godongw_V2 = passV2 "godongw" ; + godukw_V = passV "godukw" ; + godukw_V2 = passV2 "godukw" ; + gojw_V = passV "gojw" ; + gojw_V2 = passV2 "gojw" ; + gomw_V = passV "gomw" ; + gomw_V2 = passV2 "gomw" ; + goniw_V = passV "goniw" ; + goniw_V2 = passV2 "goniw" ; + gonqw_V = passV "gonqw" ; + gonqw_V2 = passV2 "gonqw" ; + gonw_V = passV "gonw" ; + gonw_V2 = passV2 "gonw" ; + goqiw_V = passV "goqiw" ; + goqiw_V2 = passV2 "goqiw" ; + goqw_V = passV "goqw" ; + goqw_V2 = passV2 "goqw" ; + gotshw_V = passV "gotshw" ; + gotshw_V2 = passV2 "gotshw" ; + gqamisw_V = passV "gqamisw" ; + gqamisw_V2 = passV2 "gqamisw" ; + gqamw_V = passV "gqamw" ; + gqamw_V2 = passV2 "gqamw" ; + gqekezw_V = passV "gqekezw" ; + gqekezw_V2 = passV2 "gqekezw" ; + gqibw_V = passV "gqibw" ; + gqibw_V2 = passV2 "gqibw" ; + gqigqw_V = passV "gqigqw" ; + gqigqw_V2 = passV2 "gqigqw" ; + gqilazw_V = passV "gqilazw" ; + gqilazw_V2 = passV2 "gqilazw" ; + gqizw_V = passV "gqizw" ; + gqizw_V2 = passV2 "gqizw" ; + gqobhw_V = passV "gqobhw" ; + gqobhw_V2 = passV2 "gqobhw" ; + gqokisw_V = passV "gqokisw" ; + gqokisw_V2 = passV2 "gqokisw" ; + gqokw_V = passV "gqokw" ; + gqokw_V2 = passV2 "gqokw" ; + gqubw_V = passV "gqubw" ; + gqubw_V2 = passV2 "gqubw" ; + gqugquzelw_V = passV "gqugquzelw" ; + gqugquzelw_V2 = passV2 "gqugquzelw" ; + gubhiw_V = passV "gubhiw" ; + gubhiw_V2 = passV2 "gubhiw" ; + gubhw_V = passV "gubhw" ; + gubhw_V2 = passV2 "gubhw" ; + gudluzelw_V = passV "gudluzelw" ; + gudluzelw_V2 = passV2 "gudluzelw" ; + gudluzw_V = passV "gudluzw" ; + gudluzw_V2 = passV2 "gudluzw" ; + gugelw_V = passV "gugelw" ; + gugelw_V2 = passV2 "gugelw" ; + gulelw_V = passV "gulelw" ; + gulelw_V2 = passV2 "gulelw" ; + gulisw_V = passV "gulisw" ; + gulisw_V2 = passV2 "gulisw" ; + gulw_V = passV "gulw" ; + gulw_V2 = passV2 "gulw" ; + gundw_V = passV "gundw" ; + gundw_V2 = passV2 "gundw" ; + gunyazelw_V = passV "gunyazelw" ; + gunyazelw_V2 = passV2 "gunyazelw" ; + gunyaziw_V = passV "gunyaziw" ; + gunyaziw_V2 = passV2 "gunyaziw" ; + gunyazw_V = passV "gunyazw" ; + gunyazw_V2 = passV2 "gunyazw" ; + gunyw_V = passV "gunyw" ; + gunyw_V2 = passV2 "gunyw" ; + guqukelw_V = passV "guqukelw" ; + guqukelw_V2 = passV2 "guqukelw" ; + guqulw_V = passV "guqulw" ; + guqulw_V2 = passV2 "guqulw" ; + guqw_V = passV "guqw" ; + guqw_V2 = passV2 "guqw" ; + gwaqw_V = passV "gwaqw" ; + gwaqw_V2 = passV2 "gwaqw" ; + gwaziw_V = passV "gwaziw" ; + gwaziw_V2 = passV2 "gwaziw" ; + gwazw_V = passV "gwazw" ; + gwazw_V2 = passV2 "gwazw" ; + gwebw_V = passV "gwebw" ; + gwebw_V2 = passV2 "gwebw" ; + gwemw_V = passV "gwemw" ; + gwemw_V2 = passV2 "gwemw" ; + gwinyw_V = passV "gwinyw" ; + gwinyw_V2 = passV2 "gwinyw" ; + gxekw_V = passV "gxekw" ; + gxekw_V2 = passV2 "gxekw" ; + gxilw_V = passV "gxilw" ; + gxilw_V2 = passV2 "gxilw" ; + gxivizw_V = passV "gxivizw" ; + gxivizw_V2 = passV2 "gxivizw" ; + gxobelw_V = passV "gxobelw" ; + gxobelw_V2 = passV2 "gxobelw" ; + gxobw_V = passV "gxobw" ; + gxobw_V2 = passV2 "gxobw" ; + halalisw_V = passV "halalisw" ; + halalisw_V2 = passV2 "halalisw" ; + hambelw_V = passV "hambelw" ; + hambelw_V2 = passV2 "hambelw" ; + hambisw_V = passV "hambisw" ; + hambisw_V2 = passV2 "hambisw" ; + hambiw_V = passV "hambiw" ; + hambiw_V2 = passV2 "hambiw" ; + hambw_V = passV "hambw" ; + hambw_V2 = passV2 "hambw" ; + hawukelw_V = passV "hawukelw" ; + hawukelw_V2 = passV2 "hawukelw" ; + hayelw_V = passV "hayelw" ; + hayelw_V2 = passV2 "hayelw" ; + hayw_V = passV "hayw" ; + hayw_V2 = passV2 "hayw" ; + hazulw_V = passV "hazulw" ; + hazulw_V2 = passV2 "hazulw" ; + helw_V = passV "helw" ; + helw_V2 = passV2 "helw" ; + henqelw_V = passV "henqelw" ; + henqelw_V2 = passV2 "henqelw" ; + hhalaliselw_V = passV "hhalaliselw" ; + hhalaliselw_V2 = passV2 "hhalaliselw" ; + hilw_V = passV "hilw" ; + hilw_V2 = passV2 "hilw" ; + hlabelelisw_V = passV "hlabelelisw" ; + hlabelelisw_V2 = passV2 "hlabelelisw" ; + hlabelelw_V = passV "hlabelelw" ; + hlabelelw_V2 = passV2 "hlabelelw" ; + hlabelw_V = passV "hlabelw" ; + hlabelw_V2 = passV2 "hlabelw" ; + hlabisw_V = passV "hlabisw" ; + hlabisw_V2 = passV2 "hlabisw" ; + hlabiw_V = passV "hlabiw" ; + hlabiw_V2 = passV2 "hlabiw" ; + hlabw_V = passV "hlabw" ; + hlabw_V2 = passV2 "hlabw" ; + hlafunw_V = passV "hlafunw" ; + hlafunw_V2 = passV2 "hlafunw" ; + hlahlelw_V = passV "hlahlelw" ; + hlahlelw_V2 = passV2 "hlahlelw" ; + hlahlw_V = passV "hlahlw" ; + hlahlw_V2 = passV2 "hlahlw" ; + hlakazekw_V = passV "hlakazekw" ; + hlakazekw_V2 = passV2 "hlakazekw" ; + hlakazw_V = passV "hlakazw" ; + hlakazw_V2 = passV2 "hlakazw" ; + hlakulw_V = passV "hlakulw" ; + hlakulw_V2 = passV2 "hlakulw" ; + hlalelw_V = passV "hlalelw" ; + hlalelw_V2 = passV2 "hlalelw" ; + hlalisw_V = passV "hlalisw" ; + hlalisw_V2 = passV2 "hlalisw" ; + hlaliw_V = passV "hlaliw" ; + hlaliw_V2 = passV2 "hlaliw" ; + hlalw_V = passV "hlalw" ; + hlalw_V2 = passV2 "hlalw" ; + hlambelw_V = passV "hlambelw" ; + hlambelw_V2 = passV2 "hlambelw" ; + hlanekezelw_V = passV "hlanekezelw" ; + hlanekezelw_V2 = passV2 "hlanekezelw" ; + hlanganelw_V = passV "hlanganelw" ; + hlanganelw_V2 = passV2 "hlanganelw" ; + hlanganiselw_V = passV "hlanganiselw" ; + hlanganiselw_V2 = passV2 "hlanganiselw" ; + hlanganisiw_V = passV "hlanganisiw" ; + hlanganisiw_V2 = passV2 "hlanganisiw" ; + hlanganisw_V = passV "hlanganisw" ; + hlanganisw_V2 = passV2 "hlanganisw" ; + hlanganw_V = passV "hlanganw" ; + hlanganw_V2 = passV2 "hlanganw" ; + hlanganyelw_V = passV "hlanganyelw" ; + hlanganyelw_V2 = passV2 "hlanganyelw" ; + hlanzisw_V = passV "hlanzisw" ; + hlanzisw_V2 = passV2 "hlanzisw" ; + hlanzw_V = passV "hlanzw" ; + hlanzw_V2 = passV2 "hlanzw" ; + hlaselw_V = passV "hlaselw" ; + hlaselw_V2 = passV2 "hlaselw" ; + hlawulisw_V = passV "hlawulisw" ; + hlawulisw_V2 = passV2 "hlawulisw" ; + hlaziyw_V = passV "hlaziyw" ; + hlaziyw_V2 = passV2 "hlaziyw" ; + hlazw_V = passV "hlazw" ; + hlazw_V2 = passV2 "hlazw" ; + hlebw_V = passV "hlebw" ; + hlebw_V2 = passV2 "hlebw" ; + hlehliselw_V = passV "hlehliselw" ; + hlehliselw_V2 = passV2 "hlehliselw" ; + hlehlisw_V = passV "hlehlisw" ; + hlehlisw_V2 = passV2 "hlehlisw" ; + hlekelw_V = passV "hlekelw" ; + hlekelw_V2 = passV2 "hlekelw" ; + hlekisw_V = passV "hlekisw" ; + hlekisw_V2 = passV2 "hlekisw" ; + hlekw_V = passV "hlekw" ; + hlekw_V2 = passV2 "hlekw" ; + hlelelw_V = passV "hlelelw" ; + hlelelw_V2 = passV2 "hlelelw" ; + hleliw_V = passV "hleliw" ; + hleliw_V2 = passV2 "hleliw" ; + hlelw_V = passV "hlelw" ; + hlelw_V2 = passV2 "hlelw" ; + hlengiw_V = passV "hlengiw" ; + hlengiw_V2 = passV2 "hlengiw" ; + hlengw_V = passV "hlengw" ; + hlengw_V2 = passV2 "hlengw" ; + hlikizw_V = passV "hlikizw" ; + hlikizw_V2 = passV2 "hlikizw" ; + hlinzekw_V = passV "hlinzekw" ; + hlinzekw_V2 = passV2 "hlinzekw" ; + hlinzelw_V = passV "hlinzelw" ; + hlinzelw_V2 = passV2 "hlinzelw" ; + hlinzw_V = passV "hlinzw" ; + hlinzw_V2 = passV2 "hlinzw" ; + hlobisw_V = passV "hlobisw" ; + hlobisw_V2 = passV2 "hlobisw" ; + hlohlolozw_V = passV "hlohlolozw" ; + hlohlolozw_V2 = passV2 "hlohlolozw" ; + hlohlw_V = passV "hlohlw" ; + hlohlw_V2 = passV2 "hlohlw" ; + hlolelw_V = passV "hlolelw" ; + hlolelw_V2 = passV2 "hlolelw" ; + hlolisisiw_V = passV "hlolisisiw" ; + hlolisisiw_V2 = passV2 "hlolisisiw" ; + hlolisisw_V = passV "hlolisisw" ; + hlolisisw_V2 = passV2 "hlolisisw" ; + hloliw_V = passV "hloliw" ; + hloliw_V2 = passV2 "hloliw" ; + hlolw_V = passV "hlolw" ; + hlolw_V2 = passV2 "hlolw" ; + hlomisw_V = passV "hlomisw" ; + hlomisw_V2 = passV2 "hlomisw" ; + hlomw_V = passV "hlomw" ; + hlomw_V2 = passV2 "hlomw" ; + hlongozw_V = passV "hlongozw" ; + hlongozw_V2 = passV2 "hlongozw" ; + hlongw_V = passV "hlongw" ; + hlongw_V2 = passV2 "hlongw" ; + hloniphisw_V = passV "hloniphisw" ; + hloniphisw_V2 = passV2 "hloniphisw" ; + hloniphw_V = passV "hloniphw" ; + hloniphw_V2 = passV2 "hloniphw" ; + hlosiw_V = passV "hlosiw" ; + hlosiw_V2 = passV2 "hlosiw" ; + hlosw_V = passV "hlosw" ; + hlosw_V2 = passV2 "hlosw" ; + hlukaniselw_V = passV "hlukaniselw" ; + hlukaniselw_V2 = passV2 "hlukaniselw" ; + hlukanisw_V = passV "hlukanisw" ; + hlukanisw_V2 = passV2 "hlukanisw" ; + hlukw_V = passV "hlukw" ; + hlukw_V2 = passV2 "hlukw" ; + hlulelw_V = passV "hlulelw" ; + hlulelw_V2 = passV2 "hlulelw" ; + hluliw_V = passV "hluliw" ; + hluliw_V2 = passV2 "hluliw" ; + hlulw_V = passV "hlulw" ; + hlulw_V2 = passV2 "hlulw" ; + hlungw_V = passV "hlungw" ; + hlungw_V2 = passV2 "hlungw" ; + hluphekiw_V = passV "hluphekiw" ; + hluphekiw_V2 = passV2 "hluphekiw" ; + hluphekw_V = passV "hluphekw" ; + hluphekw_V2 = passV2 "hluphekw" ; + hluphelw_V = passV "hluphelw" ; + hluphelw_V2 = passV2 "hluphelw" ; + hluphw_V = passV "hluphw" ; + hluphw_V2 = passV2 "hluphw" ; + hluzw_V = passV "hluzw" ; + hluzw_V2 = passV2 "hluzw" ; + hlwanyelw_V = passV "hlwanyelw" ; + hlwanyelw_V2 = passV2 "hlwanyelw" ; + hlwelw_V = passV "hlwelw" ; + hlwelw_V2 = passV2 "hlwelw" ; + hlwithw_V = passV "hlwithw" ; + hlwithw_V2 = passV2 "hlwithw" ; + hogelw_V = passV "hogelw" ; + hogelw_V2 = passV2 "hogelw" ; + holelw_V = passV "holelw" ; + holelw_V2 = passV2 "holelw" ; + holw_V = passV "holw" ; + holw_V2 = passV2 "holw" ; + hoshw_V = passV "hoshw" ; + hoshw_V2 = passV2 "hoshw" ; + hoxisw_V = passV "hoxisw" ; + hoxisw_V2 = passV2 "hoxisw" ; + hubhw_V = passV "hubhw" ; + hubhw_V2 = passV2 "hubhw" ; + hubw_V = passV "hubw" ; + hubw_V2 = passV2 "hubw" ; + hudulelw_V = passV "hudulelw" ; + hudulelw_V2 = passV2 "hudulelw" ; + hungw_V = passV "hungw" ; + hungw_V2 = passV2 "hungw" ; + huqw_V = passV "huqw" ; + huqw_V2 = passV2 "huqw" ; + huzukw_V = passV "huzukw" ; + huzukw_V2 = passV2 "huzukw" ; + jahiw_V = passV "jahiw" ; + jahiw_V2 = passV2 "jahiw" ; + jahw_V = passV "jahw" ; + jahw_V2 = passV2 "jahw" ; + jamelw_V = passV "jamelw" ; + jamelw_V2 = passV2 "jamelw" ; + jeziselw_V = passV "jeziselw" ; + jeziselw_V2 = passV2 "jeziselw" ; + jezisw_V = passV "jezisw" ; + jezisw_V2 = passV2 "jezisw" ; + jikelw_V = passV "jikelw" ; + jikelw_V2 = passV2 "jikelw" ; + jikw_V = passV "jikw" ; + jikw_V2 = passV2 "jikw" ; + jiyelw_V = passV "jiyelw" ; + jiyelw_V2 = passV2 "jiyelw" ; + jobelelw_V = passV "jobelelw" ; + jobelelw_V2 = passV2 "jobelelw" ; + jojw_V = passV "jojw" ; + jojw_V2 = passV2 "jojw" ; + jokw_V = passV "jokw" ; + jokw_V2 = passV2 "jokw" ; + jubiw_V = passV "jubiw" ; + jubiw_V2 = passV2 "jubiw" ; + jubw_V = passV "jubw" ; + jubw_V2 = passV2 "jubw" ; + julukelw_V = passV "julukelw" ; + julukelw_V2 = passV2 "julukelw" ; + julukisw_V = passV "julukisw" ; + julukisw_V2 = passV2 "julukisw" ; + julukw_V = passV "julukw" ; + julukw_V2 = passV2 "julukw" ; + julw_V = passV "julw" ; + julw_V2 = passV2 "julw" ; + juqw_V = passV "juqw" ; + juqw_V2 = passV2 "juqw" ; + jwayelw_V = passV "jwayelw" ; + jwayelw_V2 = passV2 "jwayelw" ; + jwayezw_V = passV "jwayezw" ; + jwayezw_V2 = passV2 "jwayezw" ; + kakw_V = passV "kakw" ; + kakw_V2 = passV2 "kakw" ; + kalw_V = passV "kalw" ; + kalw_V2 = passV2 "kalw" ; + kamw_V = passV "kamw" ; + kamw_V2 = passV2 "kamw" ; + kanisw_V = passV "kanisw" ; + kanisw_V2 = passV2 "kanisw" ; + kekelezelw_V = passV "kekelezelw" ; + kekelezelw_V2 = passV2 "kekelezelw" ; + kelisw_V = passV "kelisw" ; + kelisw_V2 = passV2 "kelisw" ; + kelw_V = passV "kelw" ; + kelw_V2 = passV2 "kelw" ; + khabw_V = passV "khabw" ; + khabw_V2 = passV2 "khabw" ; + khahlw_V = passV "khahlw" ; + khahlw_V2 = passV2 "khahlw" ; + khalelw_V = passV "khalelw" ; + khalelw_V2 = passV2 "khalelw" ; + khalisw_V = passV "khalisw" ; + khalisw_V2 = passV2 "khalisw" ; + khalw_V = passV "khalw" ; + khalw_V2 = passV2 "khalw" ; + khamelw_V = passV "khamelw" ; + khamelw_V2 = passV2 "khamelw" ; + khamisiw_V = passV "khamisiw" ; + khamisiw_V2 = passV2 "khamisiw" ; + khamisw_V = passV "khamisw" ; + khamisw_V2 = passV2 "khamisw" ; + khandiw_V = passV "khandiw" ; + khandiw_V2 = passV2 "khandiw" ; + khangezw_V = passV "khangezw" ; + khangezw_V2 = passV2 "khangezw" ; + khangisw_V = passV "khangisw" ; + khangisw_V2 = passV2 "khangisw" ; + khangw_V = passV "khangw" ; + khangw_V2 = passV2 "khangw" ; + khanyelw_V = passV "khanyelw" ; + khanyelw_V2 = passV2 "khanyelw" ; + khanyisiw_V = passV "khanyisiw" ; + khanyisiw_V2 = passV2 "khanyisiw" ; + khanyisw_V = passV "khanyisw" ; + khanyisw_V2 = passV2 "khanyisw" ; + khaphw_V = passV "khaphw" ; + khaphw_V2 = passV2 "khaphw" ; + khathazw_V = passV "khathazw" ; + khathazw_V2 = passV2 "khathazw" ; + khawulw_V = passV "khawulw" ; + khawulw_V2 = passV2 "khawulw" ; + khehlw_V = passV "khehlw" ; + khehlw_V2 = passV2 "khehlw" ; + khelw_V = passV "khelw" ; + khelw_V2 = passV2 "khelw" ; + khesw_V = passV "khesw" ; + khesw_V2 = passV2 "khesw" ; + khethelw_V = passV "khethelw" ; + khethelw_V2 = passV2 "khethelw" ; + khethiw_V = passV "khethiw" ; + khethiw_V2 = passV2 "khethiw" ; + khethw_V = passV "khethw" ; + khethw_V2 = passV2 "khethw" ; + khinyabezw_V = passV "khinyabezw" ; + khinyabezw_V2 = passV2 "khinyabezw" ; + khiphelw_V = passV "khiphelw" ; + khiphelw_V2 = passV2 "khiphelw" ; + khiphisw_V = passV "khiphisw" ; + khiphisw_V2 = passV2 "khiphisw" ; + khiphiw_V = passV "khiphiw" ; + khiphiw_V2 = passV2 "khiphiw" ; + khiphw_V = passV "khiphw" ; + khiphw_V2 = passV2 "khiphw" ; + khiphwelw_V = passV "khiphwelw" ; + khiphwelw_V2 = passV2 "khiphwelw" ; + khiqiziw_V = passV "khiqiziw" ; + khiqiziw_V2 = passV2 "khiqiziw" ; + khiqizw_V = passV "khiqizw" ; + khiqizw_V2 = passV2 "khiqizw" ; + khisw_V = passV "khisw" ; + khisw_V2 = passV2 "khisw" ; + khiw_V = passV "khiw" ; + khiw_V2 = passV2 "khiw" ; + khiyiw_V = passV "khiyiw" ; + khiyiw_V2 = passV2 "khiyiw" ; + khiyw_V = passV "khiyw" ; + khiyw_V2 = passV2 "khiyw" ; + khizw_V = passV "khizw" ; + khizw_V2 = passV2 "khizw" ; + khohlisw_V = passV "khohlisw" ; + khohlisw_V2 = passV2 "khohlisw" ; + khohliw_V = passV "khohliw" ; + khohliw_V2 = passV2 "khohliw" ; + khohlw_V = passV "khohlw" ; + khohlw_V2 = passV2 "khohlw" ; + khokhelw_V = passV "khokhelw" ; + khokhelw_V2 = passV2 "khokhelw" ; + khokhisw_V = passV "khokhisw" ; + khokhisw_V2 = passV2 "khokhisw" ; + khokhw_V = passV "khokhw" ; + khokhw_V2 = passV2 "khokhw" ; + kholelw_V = passV "kholelw" ; + kholelw_V2 = passV2 "kholelw" ; + kholiw_V = passV "kholiw" ; + kholiw_V2 = passV2 "kholiw" ; + kholongw_V = passV "kholongw" ; + kholongw_V2 = passV2 "kholongw" ; + kholw_V = passV "kholw" ; + kholw_V2 = passV2 "kholw" ; + khombisiw_V = passV "khombisiw" ; + khombisiw_V2 = passV2 "khombisiw" ; + khombisw_V = passV "khombisw" ; + khombisw_V2 = passV2 "khombisw" ; + khombw_V = passV "khombw" ; + khombw_V2 = passV2 "khombw" ; + khongw_V = passV "khongw" ; + khongw_V2 = passV2 "khongw" ; + khonkiw_V = passV "khonkiw" ; + khonkiw_V2 = passV2 "khonkiw" ; + khonkw_V = passV "khonkw" ; + khonkw_V2 = passV2 "khonkw" ; + khonondisw_V = passV "khonondisw" ; + khonondisw_V2 = passV2 "khonondisw" ; + khonzelw_V = passV "khonzelw" ; + khonzelw_V2 = passV2 "khonzelw" ; + khonzw_V = passV "khonzw" ; + khonzw_V2 = passV2 "khonzw" ; + khothw_V = passV "khothw" ; + khothw_V2 = passV2 "khothw" ; + khubw_V = passV "khubw" ; + khubw_V2 = passV2 "khubw" ; + khukhulw_V = passV "khukhulw" ; + khukhulw_V2 = passV2 "khukhulw" ; + khulekiw_V = passV "khulekiw" ; + khulekiw_V2 = passV2 "khulekiw" ; + khulekw_V = passV "khulekw" ; + khulekw_V2 = passV2 "khulekw" ; + khulelisw_V = passV "khulelisw" ; + khulelisw_V2 = passV2 "khulelisw" ; + khulelw_V = passV "khulelw" ; + khulelw_V2 = passV2 "khulelw" ; + khulisw_V = passV "khulisw" ; + khulisw_V2 = passV2 "khulisw" ; + khululw_V = passV "khululw" ; + khululw_V2 = passV2 "khululw" ; + khulumelw_V = passV "khulumelw" ; + khulumelw_V2 = passV2 "khulumelw" ; + khulumisw_V = passV "khulumisw" ; + khulumisw_V2 = passV2 "khulumisw" ; + khulumiw_V = passV "khulumiw" ; + khulumiw_V2 = passV2 "khulumiw" ; + khulumw_V = passV "khulumw" ; + khulumw_V2 = passV2 "khulumw" ; + khuluphalisw_V = passV "khuluphalisw" ; + khuluphalisw_V2 = passV2 "khuluphalisw" ; + khumulw_V = passV "khumulw" ; + khumulw_V2 = passV2 "khumulw" ; + khungw_V = passV "khungw" ; + khungw_V2 = passV2 "khungw" ; + khushukelw_V = passV "khushukelw" ; + khushukelw_V2 = passV2 "khushukelw" ; + khushukw_V = passV "khushukw" ; + khushukw_V2 = passV2 "khushukw" ; + khuthazw_V = passV "khuthazw" ; + khuthazw_V2 = passV2 "khuthazw" ; + khuzw_V = passV "khuzw" ; + khuzw_V2 = passV2 "khuzw" ; + khw_V = passV "khw" ; + khw_V2 = passV2 "khw" ; + khwelw_V = passV "khwelw" ; + khwelw_V2 = passV2 "khwelw" ; + khwezelw_V = passV "khwezelw" ; + khwezelw_V2 = passV2 "khwezelw" ; + khwezw_V = passV "khwezw" ; + khwezw_V2 = passV2 "khwezw" ; + kitazw_V = passV "kitazw" ; + kitazw_V2 = passV2 "kitazw" ; + klabelw_V = passV "klabelw" ; + klabelw_V2 = passV2 "klabelw" ; + klelisw_V = passV "klelisw" ; + klelisw_V2 = passV2 "klelisw" ; + klezisw_V = passV "klezisw" ; + klezisw_V2 = passV2 "klezisw" ; + klinyw_V = passV "klinyw" ; + klinyw_V2 = passV2 "klinyw" ; + kokw_V = passV "kokw" ; + kokw_V2 = passV2 "kokw" ; + kopishw_V = passV "kopishw" ; + kopishw_V2 = passV2 "kopishw" ; + kukuzw_V = passV "kukuzw" ; + kukuzw_V2 = passV2 "kukuzw" ; + kweletw_V = passV "kweletw" ; + kweletw_V2 = passV2 "kweletw" ; + kweqisw_V = passV "kweqisw" ; + kweqisw_V2 = passV2 "kweqisw" ; + kweqiw_V = passV "kweqiw" ; + kweqiw_V2 = passV2 "kweqiw" ; + lahlekelw_V = passV "lahlekelw" ; + lahlekelw_V2 = passV2 "lahlekelw" ; + lahliw_V = passV "lahliw" ; + lahliw_V2 = passV2 "lahliw" ; + lahlw_V = passV "lahlw" ; + lahlw_V2 = passV2 "lahlw" ; + lalelw_V = passV "lalelw" ; + lalelw_V2 = passV2 "lalelw" ; + lalisw_V = passV "lalisw" ; + lalisw_V2 = passV2 "lalisw" ; + lalukiw_V = passV "lalukiw" ; + lalukiw_V2 = passV2 "lalukiw" ; + lalw_V = passV "lalw" ; + lalw_V2 = passV2 "lalw" ; + lambw_V = passV "lambw" ; + lambw_V2 = passV2 "lambw" ; + landelelw_V = passV "landelelw" ; + landelelw_V2 = passV2 "landelelw" ; + landelw_V = passV "landelw" ; + landelw_V2 = passV2 "landelw" ; + landisw_V = passV "landisw" ; + landisw_V2 = passV2 "landisw" ; + landiw_V = passV "landiw" ; + landiw_V2 = passV2 "landiw" ; + landulw_V = passV "landulw" ; + landulw_V2 = passV2 "landulw" ; + landw_V = passV "landw" ; + landw_V2 = passV2 "landw" ; + lawulw_V = passV "lawulw" ; + lawulw_V2 = passV2 "lawulw" ; + layelw_V = passV "layelw" ; + layelw_V2 = passV2 "layelw" ; + layishw_V = passV "layishw" ; + layishw_V2 = passV2 "layishw" ; + layisisiw_V = passV "layisisiw" ; + layisisiw_V2 = passV2 "layisisiw" ; + laziw_V = passV "laziw" ; + laziw_V2 = passV2 "laziw" ; + lazw_V = passV "lazw" ; + lazw_V2 = passV2 "lazw" ; + lekelelw_V = passV "lekelelw" ; + lekelelw_V2 = passV2 "lekelelw" ; + lendlw_V = passV "lendlw" ; + lendlw_V2 = passV2 "lendlw" ; + lengiselw_V = passV "lengiselw" ; + lengiselw_V2 = passV2 "lengiselw" ; + lengisw_V = passV "lengisw" ; + lengisw_V2 = passV2 "lengisw" ; + lengw_V = passV "lengw" ; + lengw_V2 = passV2 "lengw" ; + lethelw_V = passV "lethelw" ; + lethelw_V2 = passV2 "lethelw" ; + lethiw_V = passV "lethiw" ; + lethiw_V2 = passV2 "lethiw" ; + lethw_V = passV "lethw" ; + lethw_V2 = passV2 "lethw" ; + lezw_V = passV "lezw" ; + lezw_V2 = passV2 "lezw" ; + lilelw_V = passV "lilelw" ; + lilelw_V2 = passV2 "lilelw" ; + lilizelw_V = passV "lilizelw" ; + lilizelw_V2 = passV2 "lilizelw" ; + lilw_V = passV "lilw" ; + lilw_V2 = passV2 "lilw" ; + limw_V = passV "limw" ; + limw_V2 = passV2 "limw" ; + lindelw_V = passV "lindelw" ; + lindelw_V2 = passV2 "lindelw" ; + lindisw_V = passV "lindisw" ; + lindisw_V2 = passV2 "lindisw" ; + lindiw_V = passV "lindiw" ; + lindiw_V2 = passV2 "lindiw" ; + lindw_V = passV "lindw" ; + lindw_V2 = passV2 "lindw" ; + linganiselw_V = passV "linganiselw" ; + linganiselw_V2 = passV2 "linganiselw" ; + linganisiw_V = passV "linganisiw" ; + linganisiw_V2 = passV2 "linganisiw" ; + linganisw_V = passV "linganisw" ; + linganisw_V2 = passV2 "linganisw" ; + lingisw_V = passV "lingisw" ; + lingisw_V2 = passV2 "lingisw" ; + lingw_V = passV "lingw" ; + lingw_V2 = passV2 "lingw" ; + lobiw_V = passV "lobiw" ; + lobiw_V2 = passV2 "lobiw" ; + lobw_V = passV "lobw" ; + lobw_V2 = passV2 "lobw" ; + lokothw_V = passV "lokothw" ; + lokothw_V2 = passV2 "lokothw" ; + loliw_V = passV "loliw" ; + loliw_V2 = passV2 "loliw" ; + lolongw_V = passV "lolongw" ; + lolongw_V2 = passV2 "lolongw" ; + lolozelw_V = passV "lolozelw" ; + lolozelw_V2 = passV2 "lolozelw" ; + lolw_V = passV "lolw" ; + lolw_V2 = passV2 "lolw" ; + londolozw_V = passV "londolozw" ; + londolozw_V2 = passV2 "londolozw" ; + lubw_V = passV "lubw" ; + lubw_V2 = passV2 "lubw" ; + lukiw_V = passV "lukiw" ; + lukiw_V2 = passV2 "lukiw" ; + lukw_V = passV "lukw" ; + lukw_V2 = passV2 "lukw" ; + lulekw_V = passV "lulekw" ; + lulekw_V2 = passV2 "lulekw" ; + lumbw_V = passV "lumbw" ; + lumbw_V2 = passV2 "lumbw" ; + lungiselelw_V = passV "lungiselelw" ; + lungiselelw_V2 = passV2 "lungiselelw" ; + lungiselw_V = passV "lungiselw" ; + lungiselw_V2 = passV2 "lungiselw" ; + lungisiw_V = passV "lungisiw" ; + lungisiw_V2 = passV2 "lungisiw" ; + lungisw_V = passV "lungisw" ; + lungisw_V2 = passV2 "lungisw" ; + lunguzw_V = passV "lunguzw" ; + lunguzw_V2 = passV2 "lunguzw" ; + luthw_V = passV "luthw" ; + luthw_V2 = passV2 "luthw" ; + lwelw_V = passV "lwelw" ; + lwelw_V2 = passV2 "lwelw" ; + lwezw_V = passV "lwezw" ; + lwezw_V2 = passV2 "lwezw" ; + mangalisw_V = passV "mangalisw" ; + mangalisw_V2 = passV2 "mangalisw" ; + matisw_V = passV "matisw" ; + matisw_V2 = passV2 "matisw" ; + matiw_V = passV "matiw" ; + matiw_V2 = passV2 "matiw" ; + matw_V = passV "matw" ; + matw_V2 = passV2 "matw" ; + mbelekw_V = passV "mbelekw" ; + mbelekw_V2 = passV2 "mbelekw" ; + mbelw_V = passV "mbelw" ; + mbelw_V2 = passV2 "mbelw" ; + mbiw_V = passV "mbiw" ; + mbiw_V2 = passV2 "mbiw" ; + mbozw_V = passV "mbozw" ; + mbozw_V2 = passV2 "mbozw" ; + melelelw_V = passV "melelelw" ; + melelelw_V2 = passV2 "melelelw" ; + melw_V = passV "melw" ; + melw_V2 = passV2 "melw" ; + memelw_V = passV "memelw" ; + memelw_V2 = passV2 "memelw" ; + memezelw_V = passV "memezelw" ; + memezelw_V2 = passV2 "memezelw" ; + memiw_V = passV "memiw" ; + memiw_V2 = passV2 "memiw" ; + memw_V = passV "memw" ; + memw_V2 = passV2 "memw" ; + milw_V = passV "milw" ; + milw_V2 = passV2 "milw" ; + miselw_V = passV "miselw" ; + miselw_V2 = passV2 "miselw" ; + misiw_V = passV "misiw" ; + misiw_V2 = passV2 "misiw" ; + misw_V = passV "misw" ; + misw_V2 = passV2 "misw" ; + miw_V = passV "miw" ; + miw_V2 = passV2 "miw" ; + monyw_V = passV "monyw" ; + monyw_V2 = passV2 "monyw" ; + mpintshw_V = passV "mpintshw" ; + mpintshw_V2 = passV2 "mpintshw" ; + mukelw_V = passV "mukelw" ; + mukelw_V2 = passV2 "mukelw" ; + mukisw_V = passV "mukisw" ; + mukisw_V2 = passV2 "mukisw" ; + mulisw_V = passV "mulisw" ; + mulisw_V2 = passV2 "mulisw" ; + muncw_V = passV "muncw" ; + muncw_V2 = passV2 "muncw" ; + munyungw_V = passV "munyungw" ; + munyungw_V2 = passV2 "munyungw" ; + mw_V = passV "mw" ; + mw_V2 = passV2 "mw" ; + nakalelw_V = passV "nakalelw" ; + nakalelw_V2 = passV2 "nakalelw" ; + nakekelw_V = passV "nakekelw" ; + nakekelw_V2 = passV2 "nakekelw" ; + nakelelw_V = passV "nakelelw" ; + nakelelw_V2 = passV2 "nakelelw" ; + nakiw_V = passV "nakiw" ; + nakiw_V2 = passV2 "nakiw" ; + nakw_V = passV "nakw" ; + nakw_V2 = passV2 "nakw" ; + namathelisiw_V = passV "namathelisiw" ; + namathelisiw_V2 = passV2 "namathelisiw" ; + nambithisw_V = passV "nambithisw" ; + nambithisw_V2 = passV2 "nambithisw" ; + nambithw_V = passV "nambithw" ; + nambithw_V2 = passV2 "nambithw" ; + namisw_V = passV "namisw" ; + namisw_V2 = passV2 "namisw" ; + ncamw_V = passV "ncamw" ; + ncamw_V2 = passV2 "ncamw" ; + ncanyw_V = passV "ncanyw" ; + ncanyw_V2 = passV2 "ncanyw" ; + ncengw_V = passV "ncengw" ; + ncengw_V2 = passV2 "ncengw" ; + ncikiselw_V = passV "ncikiselw" ; + ncikiselw_V2 = passV2 "ncikiselw" ; + ncikisw_V = passV "ncikisw" ; + ncikisw_V2 = passV2 "ncikisw" ; + ncindisw_V = passV "ncindisw" ; + ncindisw_V2 = passV2 "ncindisw" ; + ncinzw_V = passV "ncinzw" ; + ncinzw_V2 = passV2 "ncinzw" ; + nciphanw_V = passV "nciphanw" ; + nciphanw_V2 = passV2 "nciphanw" ; + nciphelw_V = passV "nciphelw" ; + nciphelw_V2 = passV2 "nciphelw" ; + nciphiw_V = passV "nciphiw" ; + nciphiw_V2 = passV2 "nciphiw" ; + nciphw_V = passV "nciphw" ; + nciphw_V2 = passV2 "nciphw" ; + ncishanw_V = passV "ncishanw" ; + ncishanw_V2 = passV2 "ncishanw" ; + ncishelw_V = passV "ncishelw" ; + ncishelw_V2 = passV2 "ncishelw" ; + ncishiw_V = passV "ncishiw" ; + ncishiw_V2 = passV2 "ncishiw" ; + ncishw_V = passV "ncishw" ; + ncishw_V2 = passV2 "ncishw" ; + ncomw_V = passV "ncomw" ; + ncomw_V2 = passV2 "ncomw" ; + ncunzw_V = passV "ncunzw" ; + ncunzw_V2 = passV2 "ncunzw" ; + ndizisw_V = passV "ndizisw" ; + ndizisw_V2 = passV2 "ndizisw" ; + nekiw_V = passV "nekiw" ; + nekiw_V2 = passV2 "nekiw" ; + nekw_V = passV "nekw" ; + nekw_V2 = passV2 "nekw" ; + nelisiw_V = passV "nelisiw" ; + nelisiw_V2 = passV2 "nelisiw" ; + nelisw_V = passV "nelisw" ; + nelisw_V2 = passV2 "nelisw" ; + nelw_V = passV "nelw" ; + nelw_V2 = passV2 "nelw" ; + nengiw_V = passV "nengiw" ; + nengiw_V2 = passV2 "nengiw" ; + nengw_V = passV "nengw" ; + nengw_V2 = passV2 "nengw" ; + nesiw_V = passV "nesiw" ; + nesiw_V2 = passV2 "nesiw" ; + nethiw_V = passV "nethiw" ; + nethiw_V2 = passV2 "nethiw" ; + nethw_V = passV "nethw" ; + nethw_V2 = passV2 "nethw" ; + ngabaziw_V = passV "ngabaziw" ; + ngabaziw_V2 = passV2 "ngabaziw" ; + ngcingcizw_V = passV "ngcingcizw" ; + ngcingcizw_V2 = passV2 "ngcingcizw" ; + ngcolisiw_V = passV "ngcolisiw" ; + ngcolisiw_V2 = passV2 "ngcolisiw" ; + ngcolisw_V = passV "ngcolisw" ; + ngcolisw_V2 = passV2 "ngcolisw" ; + ngcwabelw_V = passV "ngcwabelw" ; + ngcwabelw_V2 = passV2 "ngcwabelw" ; + ngcwabiw_V = passV "ngcwabiw" ; + ngcwabiw_V2 = passV2 "ngcwabiw" ; + ngcwabw_V = passV "ngcwabw" ; + ngcwabw_V2 = passV2 "ngcwabw" ; + ngcwelisw_V = passV "ngcwelisw" ; + ngcwelisw_V2 = passV2 "ngcwelisw" ; + ngenelisiw_V = passV "ngenelisiw" ; + ngenelisiw_V2 = passV2 "ngenelisiw" ; + ngenelisw_V = passV "ngenelisw" ; + ngenelisw_V2 = passV2 "ngenelisw" ; + ngenelw_V = passV "ngenelw" ; + ngenelw_V2 = passV2 "ngenelw" ; + ngenisw_V = passV "ngenisw" ; + ngenisw_V2 = passV2 "ngenisw" ; + ngenw_V = passV "ngenw" ; + ngenw_V2 = passV2 "ngenw" ; + ngungw_V = passV "ngungw" ; + ngungw_V2 = passV2 "ngungw" ; + nikelw_V = passV "nikelw" ; + nikelw_V2 = passV2 "nikelw" ; + nikezelw_V = passV "nikezelw" ; + nikezelw_V2 = passV2 "nikezelw" ; + nikeziw_V = passV "nikeziw" ; + nikeziw_V2 = passV2 "nikeziw" ; + nikezw_V = passV "nikezw" ; + nikezw_V2 = passV2 "nikezw" ; + nikinelw_V = passV "nikinelw" ; + nikinelw_V2 = passV2 "nikinelw" ; + nikiw_V = passV "nikiw" ; + nikiw_V2 = passV2 "nikiw" ; + nikw_V = passV "nikw" ; + nikw_V2 = passV2 "nikw" ; + nindw_V = passV "nindw" ; + nindw_V2 = passV2 "nindw" ; + niselw_V = passV "niselw" ; + niselw_V2 = passV2 "niselw" ; + nisw_V = passV "nisw" ; + nisw_V2 = passV2 "nisw" ; + niw_V = passV "niw" ; + niw_V2 = passV2 "niw" ; + nkenkethelw_V = passV "nkenkethelw" ; + nkenkethelw_V2 = passV2 "nkenkethelw" ; + nomfelw_V = passV "nomfelw" ; + nomfelw_V2 = passV2 "nomfelw" ; + nqabelw_V = passV "nqabelw" ; + nqabelw_V2 = passV2 "nqabelw" ; + nqandw_V = passV "nqandw" ; + nqandw_V2 = passV2 "nqandw" ; + nqikazisw_V = passV "nqikazisw" ; + nqikazisw_V2 = passV2 "nqikazisw" ; + nqobiw_V = passV "nqobiw" ; + nqobiw_V2 = passV2 "nqobiw" ; + nqobw_V = passV "nqobw" ; + nqobw_V2 = passV2 "nqobw" ; + nqumelw_V = passV "nqumelw" ; + nqumelw_V2 = passV2 "nqumelw" ; + nqumisw_V = passV "nqumisw" ; + nqumisw_V2 = passV2 "nqumisw" ; + nqumiw_V = passV "nqumiw" ; + nqumiw_V2 = passV2 "nqumiw" ; + nqumw_V = passV "nqumw" ; + nqumw_V2 = passV2 "nqumw" ; + nqwambisw_V = passV "nqwambisw" ; + nqwambisw_V2 = passV2 "nqwambisw" ; + nsinyw_V = passV "nsinyw" ; + nsinyw_V2 = passV2 "nsinyw" ; + ntshontshw_V = passV "ntshontshw" ; + ntshontshw_V2 = passV2 "ntshontshw" ; + nukelw_V = passV "nukelw" ; + nukelw_V2 = passV2 "nukelw" ; + nukiw_V = passV "nukiw" ; + nukiw_V2 = passV2 "nukiw" ; + nukubeziw_V = passV "nukubeziw" ; + nukubeziw_V2 = passV2 "nukubeziw" ; + nukw_V = passV "nukw" ; + nukw_V2 = passV2 "nukw" ; + nw_V = passV "nw" ; + nw_V2 = passV2 "nw" ; + nxephezelw_V = passV "nxephezelw" ; + nxephezelw_V2 = passV2 "nxephezelw" ; + nxusw_V = passV "nxusw" ; + nxusw_V2 = passV2 "nxusw" ; + nyangw_V = passV "nyangw" ; + nyangw_V2 = passV2 "nyangw" ; + nyathelisw_V = passV "nyathelisw" ; + nyathelisw_V2 = passV2 "nyathelisw" ; + nyathelw_V = passV "nyathelw" ; + nyathelw_V2 = passV2 "nyathelw" ; + nyazw_V = passV "nyazw" ; + nyazw_V2 = passV2 "nyazw" ; + nyelelw_V = passV "nyelelw" ; + nyelelw_V2 = passV2 "nyelelw" ; + nyisw_V = passV "nyisw" ; + nyisw_V2 = passV2 "nyisw" ; + nyw_V = passV "nyw" ; + nyw_V2 = passV2 "nyw" ; + obukelw_V = passV "obukelw" ; + obukelw_V2 = passV2 "obukelw" ; + obukw_V = passV "obukw" ; + obukw_V2 = passV2 "obukw" ; + obulw_V = passV "obulw" ; + obulw_V2 = passV2 "obulw" ; + obuzw_V = passV "obuzw" ; + obuzw_V2 = passV2 "obuzw" ; + obuzwiw_V = passV "obuzwiw" ; + obuzwiw_V2 = passV2 "obuzwiw" ; + odekw_V = passV "odekw" ; + odekw_V2 = passV2 "odekw" ; + odw_V = passV "odw" ; + odw_V2 = passV2 "odw" ; + okhelw_V = passV "okhelw" ; + okhelw_V2 = passV2 "okhelw" ; + okhw_V = passV "okhw" ; + okhw_V2 = passV2 "okhw" ; + olulekw_V = passV "olulekw" ; + olulekw_V2 = passV2 "olulekw" ; + omelw_V = passV "omelw" ; + omelw_V2 = passV2 "omelw" ; + omiselw_V = passV "omiselw" ; + omiselw_V2 = passV2 "omiselw" ; + omisiw_V = passV "omisiw" ; + omisiw_V2 = passV2 "omisiw" ; + omisw_V = passV "omisw" ; + omisw_V2 = passV2 "omisw" ; + omw_V = passV "omw" ; + omw_V2 = passV2 "omw" ; + onakalelw_V = passV "onakalelw" ; + onakalelw_V2 = passV2 "onakalelw" ; + ondelw_V = passV "ondelw" ; + ondelw_V2 = passV2 "ondelw" ; + ondlw_V = passV "ondlw" ; + ondlw_V2 = passV2 "ondlw" ; + ondw_V = passV "ondw" ; + ondw_V2 = passV2 "ondw" ; + onelelw_V = passV "onelelw" ; + onelelw_V2 = passV2 "onelelw" ; + onelisiw_V = passV "onelisiw" ; + onelisiw_V2 = passV2 "onelisiw" ; + onelisw_V = passV "onelisw" ; + onelisw_V2 = passV2 "onelisw" ; + ongakalw_V = passV "ongakalw" ; + ongakalw_V2 = passV2 "ongakalw" ; + onganelisw_V = passV "onganelisw" ; + onganelisw_V2 = passV2 "onganelisw" ; + ongelw_V = passV "ongelw" ; + ongelw_V2 = passV2 "ongelw" ; + ongezw_V = passV "ongezw" ; + ongezw_V2 = passV2 "ongezw" ; + ongiw_V = passV "ongiw" ; + ongiw_V2 = passV2 "ongiw" ; + ongw_V = passV "ongw" ; + ongw_V2 = passV2 "ongw" ; + onisiw_V = passV "onisiw" ; + onisiw_V2 = passV2 "onisiw" ; + onisw_V = passV "onisw" ; + onisw_V2 = passV2 "onisw" ; + oniw_V = passV "oniw" ; + oniw_V2 = passV2 "oniw" ; + onw_V = passV "onw" ; + onw_V2 = passV2 "onw" ; + ophekelw_V = passV "ophekelw" ; + ophekelw_V2 = passV2 "ophekelw" ; + ophekw_V = passV "ophekw" ; + ophekw_V2 = passV2 "ophekw" ; + ophelelw_V = passV "ophelelw" ; + ophelelw_V2 = passV2 "ophelelw" ; + osanelisiw_V = passV "osanelisiw" ; + osanelisiw_V2 = passV2 "osanelisiw" ; + osekelw_V = passV "osekelw" ; + osekelw_V2 = passV2 "osekelw" ; + oselw_V = passV "oselw" ; + oselw_V2 = passV2 "oselw" ; + osisekelw_V = passV "osisekelw" ; + osisekelw_V2 = passV2 "osisekelw" ; + osiw_V = passV "osiw" ; + osiw_V2 = passV2 "osiw" ; + osw_V = passV "osw" ; + osw_V2 = passV2 "osw" ; + othelw_V = passV "othelw" ; + othelw_V2 = passV2 "othelw" ; + othiw_V = passV "othiw" ; + othiw_V2 = passV2 "othiw" ; + othw_V = passV "othw" ; + othw_V2 = passV2 "othw" ; + ozelw_V = passV "ozelw" ; + ozelw_V2 = passV2 "ozelw" ; + pendw_V = passV "pendw" ; + pendw_V2 = passV2 "pendw" ; + phahlw_V = passV "phahlw" ; + phahlw_V2 = passV2 "phahlw" ; + phakamiselw_V = passV "phakamiselw" ; + phakamiselw_V2 = passV2 "phakamiselw" ; + phakamisiw_V = passV "phakamisiw" ; + phakamisiw_V2 = passV2 "phakamisiw" ; + phakamisw_V = passV "phakamisw" ; + phakamisw_V2 = passV2 "phakamisw" ; + phakathw_V = passV "phakathw" ; + phakathw_V2 = passV2 "phakathw" ; + phakelw_V = passV "phakelw" ; + phakelw_V2 = passV2 "phakelw" ; + phakiw_V = passV "phakiw" ; + phakiw_V2 = passV2 "phakiw" ; + phakulelw_V = passV "phakulelw" ; + phakulelw_V2 = passV2 "phakulelw" ; + phakw_V = passV "phakw" ; + phakw_V2 = passV2 "phakw" ; + phalazw_V = passV "phalazw" ; + phalazw_V2 = passV2 "phalazw" ; + phambanisw_V = passV "phambanisw" ; + phambanisw_V2 = passV2 "phambanisw" ; + phandw_V = passV "phandw" ; + phandw_V2 = passV2 "phandw" ; + phangw_V = passV "phangw" ; + phangw_V2 = passV2 "phangw" ; + phanyekiw_V = passV "phanyekiw" ; + phanyekiw_V2 = passV2 "phanyekiw" ; + phanyekw_V = passV "phanyekw" ; + phanyekw_V2 = passV2 "phanyekw" ; + phasisiw_V = passV "phasisiw" ; + phasisiw_V2 = passV2 "phasisiw" ; + phasisw_V = passV "phasisw" ; + phasisw_V2 = passV2 "phasisw" ; + phathaniselw_V = passV "phathaniselw" ; + phathaniselw_V2 = passV2 "phathaniselw" ; + phathelw_V = passV "phathelw" ; + phathelw_V2 = passV2 "phathelw" ; + phathisw_V = passV "phathisw" ; + phathisw_V2 = passV2 "phathisw" ; + phathw_V = passV "phathw" ; + phathw_V2 = passV2 "phathw" ; + phawuliw_V = passV "phawuliw" ; + phawuliw_V2 = passV2 "phawuliw" ; + phawulw_V = passV "phawulw" ; + phawulw_V2 = passV2 "phawulw" ; + phazamiselw_V = passV "phazamiselw" ; + phazamiselw_V2 = passV2 "phazamiselw" ; + phazamisw_V = passV "phazamisw" ; + phazamisw_V2 = passV2 "phazamisw" ; + phefumulw_V = passV "phefumulw" ; + phefumulw_V2 = passV2 "phefumulw" ; + phehlelelw_V = passV "phehlelelw" ; + phehlelelw_V2 = passV2 "phehlelelw" ; + phehlw_V = passV "phehlw" ; + phehlw_V2 = passV2 "phehlw" ; + phekelw_V = passV "phekelw" ; + phekelw_V2 = passV2 "phekelw" ; + phekezelw_V = passV "phekezelw" ; + phekezelw_V2 = passV2 "phekezelw" ; + phekiw_V = passV "phekiw" ; + phekiw_V2 = passV2 "phekiw" ; + phekw_V = passV "phekw" ; + phekw_V2 = passV2 "phekw" ; + phelekezelw_V = passV "phelekezelw" ; + phelekezelw_V2 = passV2 "phelekezelw" ; + phelelw_V = passV "phelelw" ; + phelelw_V2 = passV2 "phelelw" ; + phelezelw_V = passV "phelezelw" ; + phelezelw_V2 = passV2 "phelezelw" ; + phelisw_V = passV "phelisw" ; + phelisw_V2 = passV2 "phelisw" ; + phendukelw_V = passV "phendukelw" ; + phendukelw_V2 = passV2 "phendukelw" ; + phendukisw_V = passV "phendukisw" ; + phendukisw_V2 = passV2 "phendukisw" ; + phendulw_V = passV "phendulw" ; + phendulw_V2 = passV2 "phendulw" ; + phenyisisw_V = passV "phenyisisw" ; + phenyisisw_V2 = passV2 "phenyisisw" ; + phenyw_V = passV "phenyw" ; + phenyw_V2 = passV2 "phenyw" ; + phethiw_V = passV "phethiw" ; + phethiw_V2 = passV2 "phethiw" ; + phethw_V = passV "phethw" ; + phethw_V2 = passV2 "phethw" ; + phicw_V = passV "phicw" ; + phicw_V2 = passV2 "phicw" ; + phihlizw_V = passV "phihlizw" ; + phihlizw_V2 = passV2 "phihlizw" ; + phikisw_V = passV "phikisw" ; + phikisw_V2 = passV2 "phikisw" ; + phikw_V = passV "phikw" ; + phikw_V2 = passV2 "phikw" ; + philisw_V = passV "philisw" ; + philisw_V2 = passV2 "philisw" ; + philiw_V = passV "philiw" ; + philiw_V2 = passV2 "philiw" ; + philw_V = passV "philw" ; + philw_V2 = passV2 "philw" ; + phimisw_V = passV "phimisw" ; + phimisw_V2 = passV2 "phimisw" ; + phindaphindw_V = passV "phindaphindw" ; + phindaphindw_V2 = passV2 "phindaphindw" ; + phindelw_V = passV "phindelw" ; + phindelw_V2 = passV2 "phindelw" ; + phindiselw_V = passV "phindiselw" ; + phindiselw_V2 = passV2 "phindiselw" ; + phindiw_V = passV "phindiw" ; + phindiw_V2 = passV2 "phindiw" ; + phindw_V = passV "phindw" ; + phindw_V2 = passV2 "phindw" ; + phithizelw_V = passV "phithizelw" ; + phithizelw_V2 = passV2 "phithizelw" ; + phiw_V = passV "phiw" ; + phiw_V2 = passV2 "phiw" ; + phokophelw_V = passV "phokophelw" ; + phokophelw_V2 = passV2 "phokophelw" ; + pholisw_V = passV "pholisw" ; + pholisw_V2 = passV2 "pholisw" ; + phonselw_V = passV "phonselw" ; + phonselw_V2 = passV2 "phonselw" ; + phonsw_V = passV "phonsw" ; + phonsw_V2 = passV2 "phonsw" ; + phoqelelw_V = passV "phoqelelw" ; + phoqelelw_V2 = passV2 "phoqelelw" ; + phoqw_V = passV "phoqw" ; + phoqw_V2 = passV2 "phoqw" ; + phoselw_V = passV "phoselw" ; + phoselw_V2 = passV2 "phoselw" ; + phothiw_V = passV "phothiw" ; + phothiw_V2 = passV2 "phothiw" ; + phoxw_V = passV "phoxw" ; + phoxw_V2 = passV2 "phoxw" ; + phuciw_V = passV "phuciw" ; + phuciw_V2 = passV2 "phuciw" ; + phucw_V = passV "phucw" ; + phucw_V2 = passV2 "phucw" ; + phukw_V = passV "phukw" ; + phukw_V2 = passV2 "phukw" ; + phulelw_V = passV "phulelw" ; + phulelw_V2 = passV2 "phulelw" ; + phulw_V = passV "phulw" ; + phulw_V2 = passV2 "phulw" ; + phumelelw_V = passV "phumelelw" ; + phumelelw_V2 = passV2 "phumelelw" ; + phumelw_V = passV "phumelw" ; + phumelw_V2 = passV2 "phumelw" ; + phumw_V = passV "phumw" ; + phumw_V2 = passV2 "phumw" ; + phungulw_V = passV "phungulw" ; + phungulw_V2 = passV2 "phungulw" ; + phunyulw_V = passV "phunyulw" ; + phunyulw_V2 = passV2 "phunyulw" ; + phunyuzw_V = passV "phunyuzw" ; + phunyuzw_V2 = passV2 "phunyuzw" ; + phuphw_V = passV "phuphw" ; + phuphw_V2 = passV2 "phuphw" ; + phushw_V = passV "phushw" ; + phushw_V2 = passV2 "phushw" ; + phuthelw_V = passV "phuthelw" ; + phuthelw_V2 = passV2 "phuthelw" ; + phuthumisw_V = passV "phuthumisw" ; + phuthumisw_V2 = passV2 "phuthumisw" ; + phuthumw_V = passV "phuthumw" ; + phuthumw_V2 = passV2 "phuthumw" ; + phuthw_V = passV "phuthw" ; + phuthw_V2 = passV2 "phuthw" ; + phuzisw_V = passV "phuzisw" ; + phuzisw_V2 = passV2 "phuzisw" ; + phuziw_V = passV "phuziw" ; + phuziw_V2 = passV2 "phuziw" ; + phuzw_V = passV "phuzw" ; + phuzw_V2 = passV2 "phuzw" ; + phw_V = passV "phw" ; + phw_V2 = passV2 "phw" ; + posiw_V = passV "posiw" ; + posiw_V2 = passV2 "posiw" ; + posw_V = passV "posw" ; + posw_V2 = passV2 "posw" ; + potozw_V = passV "potozw" ; + potozw_V2 = passV2 "potozw" ; + qagelw_V = passV "qagelw" ; + qagelw_V2 = passV2 "qagelw" ; + qalazw_V = passV "qalazw" ; + qalazw_V2 = passV2 "qalazw" ; + qalekisiw_V = passV "qalekisiw" ; + qalekisiw_V2 = passV2 "qalekisiw" ; + qalekisw_V = passV "qalekisw" ; + qalekisw_V2 = passV2 "qalekisw" ; + qalelw_V = passV "qalelw" ; + qalelw_V2 = passV2 "qalelw" ; + qaliw_V = passV "qaliw" ; + qaliw_V2 = passV2 "qaliw" ; + qalw_V = passV "qalw" ; + qalw_V2 = passV2 "qalw" ; + qambw_V = passV "qambw" ; + qambw_V2 = passV2 "qambw" ; + qamelw_V = passV "qamelw" ; + qamelw_V2 = passV2 "qamelw" ; + qandelw_V = passV "qandelw" ; + qandelw_V2 = passV2 "qandelw" ; + qandw_V = passV "qandw" ; + qandw_V2 = passV2 "qandw" ; + qanganisw_V = passV "qanganisw" ; + qanganisw_V2 = passV2 "qanganisw" ; + qaphelisw_V = passV "qaphelisw" ; + qaphelisw_V2 = passV2 "qaphelisw" ; + qaphelw_V = passV "qaphelw" ; + qaphelw_V2 = passV2 "qaphelw" ; + qaphiw_V = passV "qaphiw" ; + qaphiw_V2 = passV2 "qaphiw" ; + qaphw_V = passV "qaphw" ; + qaphw_V2 = passV2 "qaphw" ; + qaqw_V = passV "qaqw" ; + qaqw_V2 = passV2 "qaqw" ; + qashelisw_V = passV "qashelisw" ; + qashelisw_V2 = passV2 "qashelisw" ; + qashelw_V = passV "qashelw" ; + qashelw_V2 = passV2 "qashelw" ; + qashiw_V = passV "qashiw" ; + qashiw_V2 = passV2 "qashiw" ; + qashw_V = passV "qashw" ; + qashw_V2 = passV2 "qashw" ; + qedelw_V = passV "qedelw" ; + qedelw_V2 = passV2 "qedelw" ; + qediw_V = passV "qediw" ; + qediw_V2 = passV2 "qediw" ; + qedw_V = passV "qedw" ; + qedw_V2 = passV2 "qedw" ; + qeqeshiw_V = passV "qeqeshiw" ; + qeqeshiw_V2 = passV2 "qeqeshiw" ; + qeqeshw_V = passV "qeqeshw" ; + qeqeshw_V2 = passV2 "qeqeshw" ; + qhaqhazelisw_V = passV "qhaqhazelisw" ; + qhaqhazelisw_V2 = passV2 "qhaqhazelisw" ; + qhathanisw_V = passV "qhathanisw" ; + qhathanisw_V2 = passV2 "qhathanisw" ; + qhathw_V = passV "qhathw" ; + qhathw_V2 = passV2 "qhathw" ; + qhinw_V = passV "qhinw" ; + qhinw_V2 = passV2 "qhinw" ; + qhoboshelw_V = passV "qhoboshelw" ; + qhoboshelw_V2 = passV2 "qhoboshelw" ; + qholw_V = passV "qholw" ; + qholw_V2 = passV2 "qholw" ; + qhoshw_V = passV "qhoshw" ; + qhoshw_V2 = passV2 "qhoshw" ; + qhubekelw_V = passV "qhubekelw" ; + qhubekelw_V2 = passV2 "qhubekelw" ; + qhubekw_V = passV "qhubekw" ; + qhubekw_V2 = passV2 "qhubekw" ; + qhubelw_V = passV "qhubelw" ; + qhubelw_V2 = passV2 "qhubelw" ; + qhubw_V = passV "qhubw" ; + qhubw_V2 = passV2 "qhubw" ; + qhumw_V = passV "qhumw" ; + qhumw_V2 = passV2 "qhumw" ; + qhuzulw_V = passV "qhuzulw" ; + qhuzulw_V2 = passV2 "qhuzulw" ; + qhwandw_V = passV "qhwandw" ; + qhwandw_V2 = passV2 "qhwandw" ; + qikelelw_V = passV "qikelelw" ; + qikelelw_V2 = passV2 "qikelelw" ; + qinisekisw_V = passV "qinisekisw" ; + qinisekisw_V2 = passV2 "qinisekisw" ; + qinisekw_V = passV "qinisekw" ; + qinisekw_V2 = passV2 "qinisekw" ; + qinisiw_V = passV "qinisiw" ; + qinisiw_V2 = passV2 "qinisiw" ; + qinisw_V = passV "qinisw" ; + qinisw_V2 = passV2 "qinisw" ; + qokelelw_V = passV "qokelelw" ; + qokelelw_V2 = passV2 "qokelelw" ; + qokelw_V = passV "qokelw" ; + qokelw_V2 = passV2 "qokelw" ; + qokw_V = passV "qokw" ; + qokw_V2 = passV2 "qokw" ; + qomiw_V = passV "qomiw" ; + qomiw_V2 = passV2 "qomiw" ; + qomw_V = passV "qomw" ; + qomw_V2 = passV2 "qomw" ; + qondanisw_V = passV "qondanisw" ; + qondanisw_V2 = passV2 "qondanisw" ; + qondisw_V = passV "qondisw" ; + qondisw_V2 = passV2 "qondisw" ; + qondiw_V = passV "qondiw" ; + qondiw_V2 = passV2 "qondiw" ; + qondw_V = passV "qondw" ; + qondw_V2 = passV2 "qondw" ; + qonelw_V = passV "qonelw" ; + qonelw_V2 = passV2 "qonelw" ; + qongw_V = passV "qongw" ; + qongw_V2 = passV2 "qongw" ; + qophiw_V = passV "qophiw" ; + qophiw_V2 = passV2 "qophiw" ; + qophw_V = passV "qophw" ; + qophw_V2 = passV2 "qophw" ; + qoqelw_V = passV "qoqelw" ; + qoqelw_V2 = passV2 "qoqelw" ; + qoqw_V = passV "qoqw" ; + qoqw_V2 = passV2 "qoqw" ; + qoshamisiw_V = passV "qoshamisiw" ; + qoshamisiw_V2 = passV2 "qoshamisiw" ; + qothulw_V = passV "qothulw" ; + qothulw_V2 = passV2 "qothulw" ; + qothw_V = passV "qothw" ; + qothw_V2 = passV2 "qothw" ; + qukulw_V = passV "qukulw" ; + qukulw_V2 = passV2 "qukulw" ; + qulelw_V = passV "qulelw" ; + qulelw_V2 = passV2 "qulelw" ; + qulw_V = passV "qulw" ; + qulw_V2 = passV2 "qulw" ; + ququdw_V = passV "ququdw" ; + ququdw_V2 = passV2 "ququdw" ; + sabalalisw_V = passV "sabalalisw" ; + sabalalisw_V2 = passV2 "sabalalisw" ; + sabelw_V = passV "sabelw" ; + sabelw_V2 = passV2 "sabelw" ; + sabisw_V = passV "sabisw" ; + sabisw_V2 = passV2 "sabisw" ; + sabw_V = passV "sabw" ; + sabw_V2 = passV2 "sabw" ; + sadukelw_V = passV "sadukelw" ; + sadukelw_V2 = passV2 "sadukelw" ; + sakazw_V = passV "sakazw" ; + sakazw_V2 = passV2 "sakazw" ; + saliw_V = passV "saliw" ; + saliw_V2 = passV2 "saliw" ; + salw_V = passV "salw" ; + salw_V2 = passV2 "salw" ; + sanelisiw_V = passV "sanelisiw" ; + sanelisiw_V2 = passV2 "sanelisiw" ; + sanganelw_V = passV "sanganelw" ; + sanganelw_V2 = passV2 "sanganelw" ; + sanganisw_V = passV "sanganisw" ; + sanganisw_V2 = passV2 "sanganisw" ; + sasw_V = passV "sasw" ; + sasw_V2 = passV2 "sasw" ; + sayinw_V = passV "sayinw" ; + sayinw_V2 = passV2 "sayinw" ; + sefw_V = passV "sefw" ; + sefw_V2 = passV2 "sefw" ; + sekeliw_V = passV "sekeliw" ; + sekeliw_V2 = passV2 "sekeliw" ; + sekelw_V = passV "sekelw" ; + sekelw_V2 = passV2 "sekelw" ; + sekw_V = passV "sekw" ; + sekw_V2 = passV2 "sekw" ; + selw_V = passV "selw" ; + selw_V2 = passV2 "selw" ; + sendisw_V = passV "sendisw" ; + sendisw_V2 = passV2 "sendisw" ; + sengiw_V = passV "sengiw" ; + sengiw_V2 = passV2 "sengiw" ; + sengw_V = passV "sengw" ; + sengw_V2 = passV2 "sengw" ; + seshw_V = passV "seshw" ; + seshw_V2 = passV2 "seshw" ; + sevulelw_V = passV "sevulelw" ; + sevulelw_V2 = passV2 "sevulelw" ; + sewuzw_V = passV "sewuzw" ; + sewuzw_V2 = passV2 "sewuzw" ; + seziw_V = passV "seziw" ; + seziw_V2 = passV2 "seziw" ; + seziwisw_V = passV "seziwisw" ; + seziwisw_V2 = passV2 "seziwisw" ; + sezw_V = passV "sezw" ; + sezw_V2 = passV2 "sezw" ; + shadisw_V = passV "shadisw" ; + shadisw_V2 = passV2 "shadisw" ; + shadw_V = passV "shadw" ; + shadw_V2 = passV2 "shadw" ; + shayelw_V = passV "shayelw" ; + shayelw_V2 = passV2 "shayelw" ; + shayisw_V = passV "shayisw" ; + shayisw_V2 = passV2 "shayisw" ; + shayw_V = passV "shayw" ; + shayw_V2 = passV2 "shayw" ; + shazw_V = passV "shazw" ; + shazw_V2 = passV2 "shazw" ; + shelelisw_V = passV "shelelisw" ; + shelelisw_V2 = passV2 "shelelisw" ; + shelw_V = passV "shelw" ; + shelw_V2 = passV2 "shelw" ; + sheshiselw_V = passV "sheshiselw" ; + sheshiselw_V2 = passV2 "sheshiselw" ; + sheshisw_V = passV "sheshisw" ; + sheshisw_V2 = passV2 "sheshisw" ; + shintshelw_V = passV "shintshelw" ; + shintshelw_V2 = passV2 "shintshelw" ; + shintshw_V = passV "shintshw" ; + shintshw_V2 = passV2 "shintshw" ; + shiselw_V = passV "shiselw" ; + shiselw_V2 = passV2 "shiselw" ; + shishizelw_V = passV "shishizelw" ; + shishizelw_V2 = passV2 "shishizelw" ; + shisisw_V = passV "shisisw" ; + shisisw_V2 = passV2 "shisisw" ; + shisiw_V = passV "shisiw" ; + shisiw_V2 = passV2 "shisiw" ; + shisw_V = passV "shisw" ; + shisw_V2 = passV2 "shisw" ; + shiw_V = passV "shiw" ; + shiw_V2 = passV2 "shiw" ; + shiyelw_V = passV "shiyelw" ; + shiyelw_V2 = passV2 "shiyelw" ; + shiyisw_V = passV "shiyisw" ; + shiyisw_V2 = passV2 "shiyisw" ; + shiyw_V = passV "shiyw" ; + shiyw_V2 = passV2 "shiyw" ; + shonelw_V = passV "shonelw" ; + shonelw_V2 = passV2 "shonelw" ; + shonisw_V = passV "shonisw" ; + shonisw_V2 = passV2 "shonisw" ; + shoniw_V = passV "shoniw" ; + shoniw_V2 = passV2 "shoniw" ; + shuduzw_V = passV "shuduzw" ; + shuduzw_V2 = passV2 "shuduzw" ; + shukw_V = passV "shukw" ; + shukw_V2 = passV2 "shukw" ; + shunqisw_V = passV "shunqisw" ; + shunqisw_V2 = passV2 "shunqisw" ; + shunyayelw_V = passV "shunyayelw" ; + shunyayelw_V2 = passV2 "shunyayelw" ; + shuqulw_V = passV "shuqulw" ; + shuqulw_V2 = passV2 "shuqulw" ; + shushisw_V = passV "shushisw" ; + shushisw_V2 = passV2 "shushisw" ; + shw_V = passV "shw" ; + shw_V2 = passV2 "shw" ; + shwabadelw_V = passV "shwabadelw" ; + shwabadelw_V2 = passV2 "shwabadelw" ; + shwelezelw_V = passV "shwelezelw" ; + shwelezelw_V2 = passV2 "shwelezelw" ; + shwelezw_V = passV "shwelezw" ; + shwelezw_V2 = passV2 "shwelezw" ; + sibekelw_V = passV "sibekelw" ; + sibekelw_V2 = passV2 "sibekelw" ; + sihleliw_V = passV "sihleliw" ; + sihleliw_V2 = passV2 "sihleliw" ; + sihlelw_V = passV "sihlelw" ; + sihlelw_V2 = passV2 "sihlelw" ; + sihlw_V = passV "sihlw" ; + sihlw_V2 = passV2 "sihlw" ; + sikanisw_V = passV "sikanisw" ; + sikanisw_V2 = passV2 "sikanisw" ; + sikw_V = passV "sikw" ; + sikw_V2 = passV2 "sikw" ; + silizw_V = passV "silizw" ; + silizw_V2 = passV2 "silizw" ; + silw_V = passV "silw" ; + silw_V2 = passV2 "silw" ; + simamisw_V = passV "simamisw" ; + simamisw_V2 = passV2 "simamisw" ; + simuzw_V = passV "simuzw" ; + simuzw_V2 = passV2 "simuzw" ; + sindiselw_V = passV "sindiselw" ; + sindiselw_V2 = passV2 "sindiselw" ; + sindisiw_V = passV "sindisiw" ; + sindisiw_V2 = passV2 "sindisiw" ; + sindisw_V = passV "sindisw" ; + sindisw_V2 = passV2 "sindisw" ; + sindw_V = passV "sindw" ; + sindw_V2 = passV2 "sindw" ; + singathelw_V = passV "singathelw" ; + singathelw_V2 = passV2 "singathelw" ; + sinisw_V = passV "sinisw" ; + sinisw_V2 = passV2 "sinisw" ; + sinw_V = passV "sinw" ; + sinw_V2 = passV2 "sinw" ; + siphukw_V = passV "siphukw" ; + siphukw_V2 = passV2 "siphukw" ; + siphulw_V = passV "siphulw" ; + siphulw_V2 = passV2 "siphulw" ; + sisekelw_V = passV "sisekelw" ; + sisekelw_V2 = passV2 "sisekelw" ; + sisiw_V = passV "sisiw" ; + sisiw_V2 = passV2 "sisiw" ; + sisw_V = passV "sisw" ; + sisw_V2 = passV2 "sisw" ; + sithw_V = passV "sithw" ; + sithw_V2 = passV2 "sithw" ; + siw_V = passV "siw" ; + siw_V2 = passV2 "siw" ; + sizelw_V = passV "sizelw" ; + sizelw_V2 = passV2 "sizelw" ; + siziw_V = passV "siziw" ; + siziw_V2 = passV2 "siziw" ; + sizw_V = passV "sizw" ; + sizw_V2 = passV2 "sizw" ; + sizwiw_V = passV "sizwiw" ; + sizwiw_V2 = passV2 "sizwiw" ; + sobozelw_V = passV "sobozelw" ; + sobozelw_V2 = passV2 "sobozelw" ; + sohlelw_V = passV "sohlelw" ; + sohlelw_V2 = passV2 "sohlelw" ; + sokiw_V = passV "sokiw" ; + sokiw_V2 = passV2 "sokiw" ; + sokolisw_V = passV "sokolisw" ; + sokolisw_V2 = passV2 "sokolisw" ; + sokolw_V = passV "sokolw" ; + sokolw_V2 = passV2 "sokolw" ; + sokw_V = passV "sokw" ; + sokw_V2 = passV2 "sokw" ; + solisw_V = passV "solisw" ; + solisw_V2 = passV2 "solisw" ; + solw_V = passV "solw" ; + solw_V2 = passV2 "solw" ; + sombululw_V = passV "sombululw" ; + sombululw_V2 = passV2 "sombululw" ; + sondelw_V = passV "sondelw" ; + sondelw_V2 = passV2 "sondelw" ; + sondezw_V = passV "sondezw" ; + sondezw_V2 = passV2 "sondezw" ; + songelw_V = passV "songelw" ; + songelw_V2 = passV2 "songelw" ; + songw_V = passV "songw" ; + songw_V2 = passV2 "songw" ; + sontw_V = passV "sontw" ; + sontw_V2 = passV2 "sontw" ; + sukelw_V = passV "sukelw" ; + sukelw_V2 = passV2 "sukelw" ; + sukumw_V = passV "sukumw" ; + sukumw_V2 = passV2 "sukumw" ; + sukw_V = passV "sukw" ; + sukw_V2 = passV2 "sukw" ; + sulelw_V = passV "sulelw" ; + sulelw_V2 = passV2 "sulelw" ; + sulw_V = passV "sulw" ; + sulw_V2 = passV2 "sulw" ; + sungulelw_V = passV "sungulelw" ; + sungulelw_V2 = passV2 "sungulelw" ; + sungulw_V = passV "sungulw" ; + sungulw_V2 = passV2 "sungulw" ; + suselw_V = passV "suselw" ; + suselw_V2 = passV2 "suselw" ; + susiw_V = passV "susiw" ; + susiw_V2 = passV2 "susiw" ; + susw_V = passV "susw" ; + susw_V2 = passV2 "susw" ; + suthisw_V = passV "suthisw" ; + suthisw_V2 = passV2 "suthisw" ; + suthw_V = passV "suthw" ; + suthw_V2 = passV2 "suthw" ; + suziw_V = passV "suziw" ; + suziw_V2 = passV2 "suziw" ; + suzw_V = passV "suzw" ; + suzw_V2 = passV2 "suzw" ; + sw_V = passV "sw" ; + sw_V2 = passV2 "sw" ; + tatamisw_V = passV "tatamisw" ; + tatamisw_V2 = passV2 "tatamisw" ; + tatazelw_V = passV "tatazelw" ; + tatazelw_V2 = passV2 "tatazelw" ; + tetemisw_V = passV "tetemisw" ; + tetemisw_V2 = passV2 "tetemisw" ; + tetemw_V = passV "tetemw" ; + tetemw_V2 = passV2 "tetemw" ; + thakathw_V = passV "thakathw" ; + thakathw_V2 = passV2 "thakathw" ; + thakiw_V = passV "thakiw" ; + thakiw_V2 = passV2 "thakiw" ; + thakw_V = passV "thakw" ; + thakw_V2 = passV2 "thakw" ; + thandabuzw_V = passV "thandabuzw" ; + thandabuzw_V2 = passV2 "thandabuzw" ; + thandanw_V = passV "thandanw" ; + thandanw_V2 = passV2 "thandanw" ; + thandazw_V = passV "thandazw" ; + thandazw_V2 = passV2 "thandazw" ; + thandiw_V = passV "thandiw" ; + thandiw_V2 = passV2 "thandiw" ; + thandw_V = passV "thandw" ; + thandw_V2 = passV2 "thandw" ; + thaphuzw_V = passV "thaphuzw" ; + thaphuzw_V2 = passV2 "thaphuzw" ; + thasiselw_V = passV "thasiselw" ; + thasiselw_V2 = passV2 "thasiselw" ; + thathelw_V = passV "thathelw" ; + thathelw_V2 = passV2 "thathelw" ; + thathiw_V = passV "thathiw" ; + thathiw_V2 = passV2 "thathiw" ; + thathw_V = passV "thathw" ; + thathw_V2 = passV2 "thathw" ; + thekw_V = passV "thekw" ; + thekw_V2 = passV2 "thekw" ; + thelelw_V = passV "thelelw" ; + thelelw_V2 = passV2 "thelelw" ; + theliw_V = passV "theliw" ; + theliw_V2 = passV2 "theliw" ; + thelw_V = passV "thelw" ; + thelw_V2 = passV2 "thelw" ; + thembelw_V = passV "thembelw" ; + thembelw_V2 = passV2 "thembelw" ; + thembw_V = passV "thembw" ; + thembw_V2 = passV2 "thembw" ; + thengelw_V = passV "thengelw" ; + thengelw_V2 = passV2 "thengelw" ; + thengiselw_V = passV "thengiselw" ; + thengiselw_V2 = passV2 "thengiselw" ; + thengisiw_V = passV "thengisiw" ; + thengisiw_V2 = passV2 "thengisiw" ; + thengisw_V = passV "thengisw" ; + thengisw_V2 = passV2 "thengisw" ; + thengiw_V = passV "thengiw" ; + thengiw_V2 = passV2 "thengiw" ; + thengw_V = passV "thengw" ; + thengw_V2 = passV2 "thengw" ; + theniw_V = passV "theniw" ; + theniw_V2 = passV2 "theniw" ; + thethelelw_V = passV "thethelelw" ; + thethelelw_V2 = passV2 "thethelelw" ; + thethisw_V = passV "thethisw" ; + thethisw_V2 = passV2 "thethisw" ; + thethiw_V = passV "thethiw" ; + thethiw_V2 = passV2 "thethiw" ; + thethw_V = passV "thethw" ; + thethw_V2 = passV2 "thethw" ; + thezw_V = passV "thezw" ; + thezw_V2 = passV2 "thezw" ; + thikazisw_V = passV "thikazisw" ; + thikazisw_V2 = passV2 "thikazisw" ; + thintw_V = passV "thintw" ; + thintw_V2 = passV2 "thintw" ; + thiw_V = passV "thiw" ; + thiw_V2 = passV2 "thiw" ; + thobelw_V = passV "thobelw" ; + thobelw_V2 = passV2 "thobelw" ; + thobisw_V = passV "thobisw" ; + thobisw_V2 = passV2 "thobisw" ; + thokozelw_V = passV "thokozelw" ; + thokozelw_V2 = passV2 "thokozelw" ; + thokozisw_V = passV "thokozisw" ; + thokozisw_V2 = passV2 "thokozisw" ; + thokozw_V = passV "thokozw" ; + thokozw_V2 = passV2 "thokozw" ; + tholiw_V = passV "tholiw" ; + tholiw_V2 = passV2 "tholiw" ; + tholw_V = passV "tholw" ; + tholw_V2 = passV2 "tholw" ; + thosw_V = passV "thosw" ; + thosw_V2 = passV2 "thosw" ; + thukusw_V = passV "thukusw" ; + thukusw_V2 = passV2 "thukusw" ; + thukuthelisw_V = passV "thukuthelisw" ; + thukuthelisw_V2 = passV2 "thukuthelisw" ; + thukw_V = passV "thukw" ; + thukw_V2 = passV2 "thukw" ; + thulisw_V = passV "thulisw" ; + thulisw_V2 = passV2 "thulisw" ; + thululiw_V = passV "thululiw" ; + thululiw_V2 = passV2 "thululiw" ; + thululw_V = passV "thululw" ; + thululw_V2 = passV2 "thululw" ; + thulw_V = passV "thulw" ; + thulw_V2 = passV2 "thulw" ; + thumbiw_V = passV "thumbiw" ; + thumbiw_V2 = passV2 "thumbiw" ; + thumbw_V = passV "thumbw" ; + thumbw_V2 = passV2 "thumbw" ; + thumelw_V = passV "thumelw" ; + thumelw_V2 = passV2 "thumelw" ; + thumiw_V = passV "thumiw" ; + thumiw_V2 = passV2 "thumiw" ; + thumw_V = passV "thumw" ; + thumw_V2 = passV2 "thumw" ; + thungathw_V = passV "thungathw" ; + thungathw_V2 = passV2 "thungathw" ; + thungelw_V = passV "thungelw" ; + thungelw_V2 = passV2 "thungelw" ; + thungiw_V = passV "thungiw" ; + thungiw_V2 = passV2 "thungiw" ; + thungw_V = passV "thungw" ; + thungw_V2 = passV2 "thungw" ; + thusw_V = passV "thusw" ; + thusw_V2 = passV2 "thusw" ; + thuthelw_V = passV "thuthelw" ; + thuthelw_V2 = passV2 "thuthelw" ; + thuthukisiw_V = passV "thuthukisiw" ; + thuthukisiw_V2 = passV2 "thuthukisiw" ; + thuthukisw_V = passV "thuthukisw" ; + thuthukisw_V2 = passV2 "thuthukisw" ; + thuthw_V = passV "thuthw" ; + thuthw_V2 = passV2 "thuthw" ; + thw_V = passV "thw" ; + thw_V2 = passV2 "thw" ; + thwalisw_V = passV "thwalisw" ; + thwalisw_V2 = passV2 "thwalisw" ; + thwalw_V = passV "thwalw" ; + thwalw_V2 = passV2 "thwalw" ; + thwelw_V = passV "thwelw" ; + thwelw_V2 = passV2 "thwelw" ; + thwesiw_V = passV "thwesiw" ; + thwesiw_V2 = passV2 "thwesiw" ; + thwesw_V = passV "thwesw" ; + thwesw_V2 = passV2 "thwesw" ; + tinyelw_V = passV "tinyelw" ; + tinyelw_V2 = passV2 "tinyelw" ; + titinyw_V = passV "titinyw" ; + titinyw_V2 = passV2 "titinyw" ; + totosw_V = passV "totosw" ; + totosw_V2 = passV2 "totosw" ; + tshalw_V = passV "tshalw" ; + tshalw_V2 = passV2 "tshalw" ; + tshazisw_V = passV "tshazisw" ; + tshazisw_V2 = passV2 "tshazisw" ; + tshaziw_V = passV "tshaziw" ; + tshaziw_V2 = passV2 "tshaziw" ; + tshazw_V = passV "tshazw" ; + tshazw_V2 = passV2 "tshazw" ; + tshelekw_V = passV "tshelekw" ; + tshelekw_V2 = passV2 "tshelekw" ; + tsheliw_V = passV "tsheliw" ; + tsheliw_V2 = passV2 "tsheliw" ; + tshelw_V = passV "tshelw" ; + tshelw_V2 = passV2 "tshelw" ; + tshengisiw_V = passV "tshengisiw" ; + tshengisiw_V2 = passV2 "tshengisiw" ; + tshengisw_V = passV "tshengisw" ; + tshengisw_V2 = passV2 "tshengisw" ; + tshingw_V = passV "tshingw" ; + tshingw_V2 = passV2 "tshingw" ; + tshobelw_V = passV "tshobelw" ; + tshobelw_V2 = passV2 "tshobelw" ; + tulw_V = passV "tulw" ; + tulw_V2 = passV2 "tulw" ; + tuselw_V = passV "tuselw" ; + tuselw_V2 = passV2 "tuselw" ; + tusw_V = passV "tusw" ; + tusw_V2 = passV2 "tusw" ; + vakashelw_V = passV "vakashelw" ; + vakashelw_V2 = passV2 "vakashelw" ; + valelelw_V = passV "valelelw" ; + valelelw_V2 = passV2 "valelelw" ; + valelisw_V = passV "valelisw" ; + valelisw_V2 = passV2 "valelisw" ; + valelw_V = passV "valelw" ; + valelw_V2 = passV2 "valelw" ; + valiw_V = passV "valiw" ; + valiw_V2 = passV2 "valiw" ; + valw_V = passV "valw" ; + valw_V2 = passV2 "valw" ; + vamelw_V = passV "vamelw" ; + vamelw_V2 = passV2 "vamelw" ; + vanw_V = passV "vanw" ; + vanw_V2 = passV2 "vanw" ; + vathw_V = passV "vathw" ; + vathw_V2 = passV2 "vathw" ; + velelw_V = passV "velelw" ; + velelw_V2 = passV2 "velelw" ; + velw_V = passV "velw" ; + velw_V2 = passV2 "velw" ; + vevezelisw_V = passV "vevezelisw" ; + vevezelisw_V2 = passV2 "vevezelisw" ; + vevisw_V = passV "vevisw" ; + vevisw_V2 = passV2 "vevisw" ; + vezw_V = passV "vezw" ; + vezw_V2 = passV2 "vezw" ; + vikelw_V = passV "vikelw" ; + vikelw_V2 = passV2 "vikelw" ; + vikizw_V = passV "vikizw" ; + vikizw_V2 = passV2 "vikizw" ; + vimbelw_V = passV "vimbelw" ; + vimbelw_V2 = passV2 "vimbelw" ; + vimbiw_V = passV "vimbiw" ; + vimbiw_V2 = passV2 "vimbiw" ; + vimbw_V = passV "vimbw" ; + vimbw_V2 = passV2 "vimbw" ; + vivinyisisw_V = passV "vivinyisisw" ; + vivinyisisw_V2 = passV2 "vivinyisisw" ; + vivinyw_V = passV "vivinyw" ; + vivinyw_V2 = passV2 "vivinyw" ; + vivw_V = passV "vivw" ; + vivw_V2 = passV2 "vivw" ; + viyw_V = passV "viyw" ; + viyw_V2 = passV2 "viyw" ; + vondlw_V = passV "vondlw" ; + vondlw_V2 = passV2 "vondlw" ; + votelw_V = passV "votelw" ; + votelw_V2 = passV2 "votelw" ; + votw_V = passV "votw" ; + votw_V2 = passV2 "votw" ; + vovw_V = passV "vovw" ; + vovw_V2 = passV2 "vovw" ; + vubelw_V = passV "vubelw" ; + vubelw_V2 = passV2 "vubelw" ; + vubw_V = passV "vubw" ; + vubw_V2 = passV2 "vubw" ; + vukw_V = passV "vukw" ; + vukw_V2 = passV2 "vukw" ; + vulelw_V = passV "vulelw" ; + vulelw_V2 = passV2 "vulelw" ; + vuliw_V = passV "vuliw" ; + vuliw_V2 = passV2 "vuliw" ; + vulw_V = passV "vulw" ; + vulw_V2 = passV2 "vulw" ; + vumelw_V = passV "vumelw" ; + vumelw_V2 = passV2 "vumelw" ; + vumw_V = passV "vumw" ; + vumw_V2 = passV2 "vumw" ; + vundlw_V = passV "vundlw" ; + vundlw_V2 = passV2 "vundlw" ; + vungamisw_V = passV "vungamisw" ; + vungamisw_V2 = passV2 "vungamisw" ; + vuniw_V = passV "vuniw" ; + vuniw_V2 = passV2 "vuniw" ; + vunw_V = passV "vunw" ; + vunw_V2 = passV2 "vunw" ; + vuselelw_V = passV "vuselelw" ; + vuselelw_V2 = passV2 "vuselelw" ; + vuselw_V = passV "vuselw" ; + vuselw_V2 = passV2 "vuselw" ; + vusw_V = passV "vusw" ; + vusw_V2 = passV2 "vusw" ; + vuthiw_V = passV "vuthiw" ; + vuthiw_V2 = passV2 "vuthiw" ; + vuthw_V = passV "vuthw" ; + vuthw_V2 = passV2 "vuthw" ; + vuyisw_V = passV "vuyisw" ; + vuyisw_V2 = passV2 "vuyisw" ; + wakw_V = passV "wakw" ; + wakw_V2 = passV2 "wakw" ; + wanelisw_V = passV "wanelisw" ; + wanelisw_V2 = passV2 "wanelisw" ; + washelw_V = passV "washelw" ; + washelw_V2 = passV2 "washelw" ; + washisisw_V = passV "washisisw" ; + washisisw_V2 = passV2 "washisisw" ; + washisw_V = passV "washisw" ; + washisw_V2 = passV2 "washisw" ; + washiw_V = passV "washiw" ; + washiw_V2 = passV2 "washiw" ; + washw_V = passV "washw" ; + washw_V2 = passV2 "washw" ; + welelw_V = passV "welelw" ; + welelw_V2 = passV2 "welelw" ; + welw_V = passV "welw" ; + welw_V2 = passV2 "welw" ; + wezw_V = passV "wezw" ; + wezw_V2 = passV2 "wezw" ; + winw_V = passV "winw" ; + winw_V2 = passV2 "winw" ; + wisw_V = passV "wisw" ; + wisw_V2 = passV2 "wisw" ; + wolw_V = passV "wolw" ; + wolw_V2 = passV2 "wolw" ; + wukulw_V = passV "wukulw" ; + wukulw_V2 = passV2 "wukulw" ; + wukuzw_V = passV "wukuzw" ; + wukuzw_V2 = passV2 "wukuzw" ; + wuzw_V = passV "wuzw" ; + wuzw_V2 = passV2 "wuzw" ; + xabanisw_V = passV "xabanisw" ; + xabanisw_V2 = passV2 "xabanisw" ; + xakiw_V = passV "xakiw" ; + xakiw_V2 = passV2 "xakiw" ; + xakw_V = passV "xakw" ; + xakw_V2 = passV2 "xakw" ; + xaxabulw_V = passV "xaxabulw" ; + xaxabulw_V2 = passV2 "xaxabulw" ; + xaxw_V = passV "xaxw" ; + xaxw_V2 = passV2 "xaxw" ; + xazululw_V = passV "xazululw" ; + xazululw_V2 = passV2 "xazululw" ; + xegelw_V = passV "xegelw" ; + xegelw_V2 = passV2 "xegelw" ; + xegisw_V = passV "xegisw" ; + xegisw_V2 = passV2 "xegisw" ; + xhasw_V = passV "xhasw" ; + xhasw_V2 = passV2 "xhasw" ; + xhawulw_V = passV "xhawulw" ; + xhawulw_V2 = passV2 "xhawulw" ; + xhophiw_V = passV "xhophiw" ; + xhophiw_V2 = passV2 "xhophiw" ; + xhophw_V = passV "xhophw" ; + xhophw_V2 = passV2 "xhophw" ; + xhoxhw_V = passV "xhoxhw" ; + xhoxhw_V2 = passV2 "xhoxhw" ; + xhozw_V = passV "xhozw" ; + xhozw_V2 = passV2 "xhozw" ; + xhumanisw_V = passV "xhumanisw" ; + xhumanisw_V2 = passV2 "xhumanisw" ; + xhumelw_V = passV "xhumelw" ; + xhumelw_V2 = passV2 "xhumelw" ; + xhumw_V = passV "xhumw" ; + xhumw_V2 = passV2 "xhumw" ; + xhwaliselw_V = passV "xhwaliselw" ; + xhwaliselw_V2 = passV2 "xhwaliselw" ; + xilongw_V = passV "xilongw" ; + xilongw_V2 = passV2 "xilongw" ; + xinw_V = passV "xinw" ; + xinw_V2 = passV2 "xinw" ; + xokozelw_V = passV "xokozelw" ; + xokozelw_V2 = passV2 "xokozelw" ; + xolelw_V = passV "xolelw" ; + xolelw_V2 = passV2 "xolelw" ; + xoshelw_V = passV "xoshelw" ; + xoshelw_V2 = passV2 "xoshelw" ; + xoshisw_V = passV "xoshisw" ; + xoshisw_V2 = passV2 "xoshisw" ; + xoshiw_V = passV "xoshiw" ; + xoshiw_V2 = passV2 "xoshiw" ; + xoshw_V = passV "xoshw" ; + xoshw_V2 = passV2 "xoshw" ; + xovw_V = passV "xovw" ; + xovw_V2 = passV2 "xovw" ; + xoxaxoxw_V = passV "xoxaxoxw" ; + xoxaxoxw_V2 = passV2 "xoxaxoxw" ; + xoxelw_V = passV "xoxelw" ; + xoxelw_V2 = passV2 "xoxelw" ; + xoxisw_V = passV "xoxisw" ; + xoxisw_V2 = passV2 "xoxisw" ; + xoxw_V = passV "xoxw" ; + xoxw_V2 = passV2 "xoxw" ; + xubanisw_V = passV "xubanisw" ; + xubanisw_V2 = passV2 "xubanisw" ; + xubw_V = passV "xubw" ; + xubw_V2 = passV2 "xubw" ; + xukuzw_V = passV "xukuzw" ; + xukuzw_V2 = passV2 "xukuzw" ; + xwayisw_V = passV "xwayisw" ; + xwayisw_V2 = passV2 "xwayisw" ; + yabazw_V = passV "yabazw" ; + yabazw_V2 = passV2 "yabazw" ; + yabizw_V = passV "yabizw" ; + yabizw_V2 = passV2 "yabizw" ; + yabuzw_V = passV "yabuzw" ; + yabuzw_V2 = passV2 "yabuzw" ; + yakazw_V = passV "yakazw" ; + yakazw_V2 = passV2 "yakazw" ; + yalazw_V = passV "yalazw" ; + yalazw_V2 = passV2 "yalazw" ; + yaleliw_V = passV "yaleliw" ; + yaleliw_V2 = passV2 "yaleliw" ; + yalelw_V = passV "yalelw" ; + yalelw_V2 = passV2 "yalelw" ; + yaliw_V = passV "yaliw" ; + yaliw_V2 = passV2 "yaliw" ; + yaluzisw_V = passV "yaluzisw" ; + yaluzisw_V2 = passV2 "yaluzisw" ; + yaluzw_V = passV "yaluzw" ; + yaluzw_V2 = passV2 "yaluzw" ; + yalw_V = passV "yalw" ; + yalw_V2 = passV2 "yalw" ; + yayizw_V = passV "yayizw" ; + yayizw_V2 = passV2 "yayizw" ; + yekelelw_V = passV "yekelelw" ; + yekelelw_V2 = passV2 "yekelelw" ; + yekelw_V = passV "yekelw" ; + yekelw_V2 = passV2 "yekelw" ; + yekeziw_V = passV "yekeziw" ; + yekeziw_V2 = passV2 "yekeziw" ; + yekezw_V = passV "yekezw" ; + yekezw_V2 = passV2 "yekezw" ; + yekisw_V = passV "yekisw" ; + yekisw_V2 = passV2 "yekisw" ; + yekiw_V = passV "yekiw" ; + yekiw_V2 = passV2 "yekiw" ; + yekw_V = passV "yekw" ; + yekw_V2 = passV2 "yekw" ; + yelw_V = passV "yelw" ; + yelw_V2 = passV2 "yelw" ; + yengw_V = passV "yengw" ; + yengw_V2 = passV2 "yengw" ; + yethelw_V = passV "yethelw" ; + yethelw_V2 = passV2 "yethelw" ; + yethw_V = passV "yethw" ; + yethw_V2 = passV2 "yethw" ; + yethwelw_V = passV "yethwelw" ; + yethwelw_V2 = passV2 "yethwelw" ; + yingaziw_V = passV "yingaziw" ; + yingaziw_V2 = passV2 "yingaziw" ; + yiselw_V = passV "yiselw" ; + yiselw_V2 = passV2 "yiselw" ; + yisisiw_V = passV "yisisiw" ; + yisisiw_V2 = passV2 "yisisiw" ; + yisiw_V = passV "yisiw" ; + yisiw_V2 = passV2 "yisiw" ; + yisw_V = passV "yisw" ; + yisw_V2 = passV2 "yisw" ; + yiw_V = passV "yiw" ; + yiw_V2 = passV2 "yiw" ; + yobekw_V = passV "yobekw" ; + yobekw_V2 = passV2 "yobekw" ; + yobuzw_V = passV "yobuzw" ; + yobuzw_V2 = passV2 "yobuzw" ; + yoliw_V = passV "yoliw" ; + yoliw_V2 = passV2 "yoliw" ; + yolw_V = passV "yolw" ; + yolw_V2 = passV2 "yolw" ; + yw_V = passV "yw" ; + yw_V2 = passV2 "yw" ; + zabalazw_V = passV "zabalazw" ; + zabalazw_V2 = passV2 "zabalazw" ; + zabelw_V = passV "zabelw" ; + zabelw_V2 = passV2 "zabelw" ; + zafunw_V = passV "zafunw" ; + zafunw_V2 = passV2 "zafunw" ; + zalelw_V = passV "zalelw" ; + zalelw_V2 = passV2 "zalelw" ; + zalw_V = passV "zalw" ; + zalw_V2 = passV2 "zalw" ; + zamelw_V = passV "zamelw" ; + zamelw_V2 = passV2 "zamelw" ; + zamulisw_V = passV "zamulisw" ; + zamulisw_V2 = passV2 "zamulisw" ; + zamw_V = passV "zamw" ; + zamw_V2 = passV2 "zamw" ; + zavulw_V = passV "zavulw" ; + zavulw_V2 = passV2 "zavulw" ; + zazisw_V = passV "zazisw" ; + zazisw_V2 = passV2 "zazisw" ; + zaziw_V = passV "zaziw" ; + zaziw_V2 = passV2 "zaziw" ; + zelelw_V = passV "zelelw" ; + zelelw_V2 = passV2 "zelelw" ; + zelw_V = passV "zelw" ; + zelw_V2 = passV2 "zelw" ; + zethiw_V = passV "zethiw" ; + zethiw_V2 = passV2 "zethiw" ; + zethw_V = passV "zethw" ; + zethw_V2 = passV2 "zethw" ; + zibekelw_V = passV "zibekelw" ; + zibekelw_V2 = passV2 "zibekelw" ; + zibusisiw_V = passV "zibusisiw" ; + zibusisiw_V2 = passV2 "zibusisiw" ; + zilelw_V = passV "zilelw" ; + zilelw_V2 = passV2 "zilelw" ; + ziliw_V = passV "ziliw" ; + ziliw_V2 = passV2 "ziliw" ; + zilw_V = passV "zilw" ; + zilw_V2 = passV2 "zilw" ; + zindlw_V = passV "zindlw" ; + zindlw_V2 = passV2 "zindlw" ; + zindw_V = passV "zindw" ; + zindw_V2 = passV2 "zindw" ; + zinganekw_V = passV "zinganekw" ; + zinganekw_V2 = passV2 "zinganekw" ; + zingelw_V = passV "zingelw" ; + zingelw_V2 = passV2 "zingelw" ; + zingw_V = passV "zingw" ; + zingw_V2 = passV2 "zingw" ; + zinzw_V = passV "zinzw" ; + zinzw_V2 = passV2 "zinzw" ; + zisekelw_V = passV "zisekelw" ; + zisekelw_V2 = passV2 "zisekelw" ; + zisw_V = passV "zisw" ; + zisw_V2 = passV2 "zisw" ; + ziw_V = passV "ziw" ; + ziw_V2 = passV2 "ziw" ; + ziwisw_V = passV "ziwisw" ; + ziwisw_V2 = passV2 "ziwisw" ; + ziyisw_V = passV "ziyisw" ; + ziyisw_V2 = passV2 "ziyisw" ; + zobelw_V = passV "zobelw" ; + zobelw_V2 = passV2 "zobelw" ; + zocolw_V = passV "zocolw" ; + zocolw_V2 = passV2 "zocolw" ; + zolw_V = passV "zolw" ; + zolw_V2 = passV2 "zolw" ; + zongolozelw_V = passV "zongolozelw" ; + zongolozelw_V2 = passV2 "zongolozelw" ; + zothiw_V = passV "zothiw" ; + zothiw_V2 = passV2 "zothiw" ; + zothw_V = passV "zothw" ; + zothw_V2 = passV2 "zothw" ; + zukuzw_V = passV "zukuzw" ; + zukuzw_V2 = passV2 "zukuzw" ; + zukuzwisw_V = passV "zukuzwisw" ; + zukuzwisw_V2 = passV2 "zukuzwisw" ; + zukw_V = passV "zukw" ; + zukw_V2 = passV2 "zukw" ; + zulisw_V = passV "zulisw" ; + zulisw_V2 = passV2 "zulisw" ; + zumw_V = passV "zumw" ; + zumw_V2 = passV2 "zumw" ; + zungezw_V = passV "zungezw" ; + zungezw_V2 = passV2 "zungezw" ; + zuziw_V = passV "zuziw" ; + zuziw_V2 = passV2 "zuziw" ; + zuzw_V = passV "zuzw" ; + zuzw_V2 = passV2 "zuzw" ; + -- zw_V = passV "zw" ; + -- zw_V2 = passV2 "zw" ; + zwisw_V = passV "zwisw" ; + zwisw_V2 = passV2 "zwisw" ; + zwiw_V = passV "zwiw" ; + zwiw_V2 = passV2 "zwiw" ; +} diff --git a/src/zulu/lexica/MultiLex.gf b/src/zulu/lexica/MultiLex.gf new file mode 100644 index 000000000..67e29ebd0 --- /dev/null +++ b/src/zulu/lexica/MultiLex.gf @@ -0,0 +1,1094 @@ +abstract MultiLex = Cat ** { + + fun + -- nouns + ability_N : N ; + accident_N : N ; + accommodation_N : N ; + accountant_N : N ; + advantage_N : N ; + advertisement_N : N ; + advice_N : N ; + aeroplane_N : N ; + aim_N : N ; + air_N : N ; + ambassador_N : N ; + anger_N : N ; + animal_N : N ; + ant_N : N ; + architect_N : N ; + argument_N : N ; + arm_N : N ; + attorney_N : N ; + aunt_maternal_N : N ; + aunt_paternal_N : N ; + avocado_N : N ; + baboon_N : N ; + baby_N : N ; + back_N : N ; + bag_N : N ; + banana_N : N ; + bank_N : N ; + bat_N : N ; + beach_N : N ; + bean_N : N ; + bedroom_N : N ; + bed_N : N ; + beef_N : N ; + bee_N : N ; + beetle_N : N ; + beggar_N : N ; + bible_N : N ; + bicycle_N : N ; + blanket_N : N ; + blood_N : N ; + body_N : N ; + bomb_N : N ; + book_N : N ; + box_N : N ; + boy_N : N ; + bread_N : N ; + breadwinner_N : N ; + breakfast_N : N ; + broom_N : N ; + brother_3_N : N ; + brother_1_N : N ; + brother_2_N : N ; + brush_N : N ; + buck_N : N ; + budget_N : N ; + buffalo_N : N ; + builder_N : N ; + bull_N : N ; + burglar_N : N ; + businessman_N : N ; + butcher_N : N ; + butterfly_N : N ; + calf_N : N ; + camel_N : N ; + card_N : N ; + car_N : N ; + carpet_N : N ; + cat_N : N ; + cattle_N : N ; + chair_N : N ; + chairman_N : N ; + chauffeur_N : N ; + cheese_N : N ; + cheetah_N : N ; + chest_N : N ; + chicken_N : N ; + child_N : N ; + church_N : N ; + cigarette_N : N ; + citizen_N : N ; + clinic_N : N ; + clock_N : N ; + cloth_N : N ; + cloud_N : N ; + coat_N : N ; + coffee_N : N ; + colour_N : N ; + comb_N : N ; + company_N : N ; + complaint_N : N ; + consequence_N : N ; + cook_N : N ; + country_N : N ; + cow_N : N ; + credit_card_N : N ; + cricket_N : N ; + crime_N : N ; + crocodile_N : N ; + crow_N : N ; + cupboard_N : N ; + cup_N : N ; + curtain_N : N ; + customer_N : N ; + danger_N : N ; + daughter_N : N ; + day_N : N ; + decision_N : N ; + deed_N : N ; + dentist_N : N ; + dining_room_N : N ; + disaster_N : N ; + discussion_N : N ; + distance_N : N ; + doctor_N : N ; + dog_N : N ; + donation_N : N ; + door_N : N ; + dress_N : N ; + drink_N : N ; + dustbin_N : N ; + duty_N : N ; + ear_N : N ; + earth_N : N ; + editor_N : N ; + education_N : N ; + egg_N : N ; + eight_N : N ; + elbow_N : N ; + election_N : N ; + electricity_N : N ; + employee_N : N ; + employer_N : N ; + eye_N : N ; + face_N : N ; + family_N : N ; + farmer_N : N ; + farm_N : N ; + father_3_N : N ; + father_1_N : N ; + father_2_N : N ; + female_N : N ; + fence_N : N ; + fever_N : N ; + field_N : N ; + finger_N : N ; + fire_N : N ; + fish_N : N ; + flower_N : N ; + flu_N : N ; + fly_N : N ; + football_N : N ; + foot_N : N ; + fork_N : N ; + freedom_N : N ; + friend_N : N ; + frog_N : N ; + frost_N : N ; + fruit_N : N ; + girl_N : N ; + glasses_N : N ; + glass_N : N ; + goat_N : N ; + government_N : N ; + grandchild_N : N ; + grandfather_3_N : N ; + grandfather_1_N : N ; + grandfather_2_N : N ; + grandmother_1_N : N ; + grandmother_3_N : N ; + grandmother_2_N : N ; + grass_N : N ; + grave_N : N ; + group_N : N ; + guitar_N : N ; + hail_N : N ; + hairdresser_N : N ; + hair_N : N ; + hammer_N : N ; + hand_N : N ; + handwriting_N : N ; + harbour_N : N ; + hat_N : N ; + hatred_N : N ; + head_N : N ; + health_N : N ; + heart_N : N ; + help_N : N ; + hen_N : N ; + highway_N : N ; + hill_N : N ; + holiday_N : N ; + hope_N : N ; + horse_N : N ; + hospital_N : N ; + hour_N : N ; + human_N : N ; + hundred_N : N ; + husband_N : N ; + hyena_N : N ; + ideal_N : N ; + income_N : N ; + insect_N : N ; + insult_N : N ; + introduction_N : N ; + jacket_N : N ; + jaw_N : N ; + jersey_N : N ; + journalist_N : N ; + journey_N : N ; + joy_N : N ; + judge_N : N ; + jug_N : N ; + juice_N : N ; + kettle_N : N ; + key_N : N ; + kind_N : N ; + king_N : N ; + kitchen_N : N ; + knee_N : N ; + knife_N : N ; + knowledge_N : N ; + ladder_N : N ; + lake_N : N ; + lamp_N : N ; + language_N : N ; + lawnmower_N : N ; + law_N : N ; + lawyer_N : N ; + leader_N : N ; + leaf_N : N ; + leg_N : N ; + leopard_N : N ; + lettuce_N : N ; + licence_N : N ; + lie_N : N ; + life_N : N ; + lightning_N : N ; + lion_N : N ; + lip_N : N ; + list_N : N ; + lorry_N : N ; + love_N : N ; + luck_N : N ; + luggage_N : N ; + machine_N : N ; + maize_N : N ; + malaria_N : N ; + manager_N : N ; + mango_N : N ; + man_N : N ; + mat_N : N ; + meaning_N : N ; + meat_N : N ; + medicine_N : N ; + meeting_N : N ; + meerkat_N : N ; + memory_N : N ; + metre_N : N ; + milk_N : N ; + million_N : N ; + minister_political_N : N ; + minister_religious_N : N ; + mirror_N : N ; + mistake_N : N ; + Monday_N : N ; + monkey_N : N ; + month_N : N ; + moon_N : N ; + mosquito_N : N ; + mother_3_N : N ; + mother_1_N : N ; + mother_2_N : N ; + mountain_N : N ; + mouse_N : N ; + movie_N : N ; + mud_N : N ; + mug_N : N ; + municipality_N : N ; + murderer_N : N ; + name_N : N ; + nature_N : N ; + neck_N : N ; + neighbour_N : N ; + newspaper_N : N ; + noise_N : N ; + nurse_N : N ; + office_N : N ; + oil_N : N ; + opinion_N : N ; + opportunity_N : N ; + orange_N : N ; + ostrich_N : N ; + owl_N : N ; + page_N : N ; + pain_N : N ; + paper_N : N ; + parcel_N : N ; + parent_N : N ; + parliament_N : N ; + part_N : N ; + passport_N : N ; + patient_N : N ; + pear_N : N ; + pencil_N : N ; + pen_N : N ; + pension_N : N ; + people_N : N ; + pepper_N : N ; + pet_N : N ; + picture_N : N ; + piece_N : N ; + pig_N : N ; + pill_N : N ; + pillow_N : N ; + pilot_N : N ; + place_N : N ; + plan_N : N ; + plant_N : N ; + plate_N : N ; + pocket_N : N ; + point_N : N ; + poison_N : N ; + policeman_N : N ; + pork_N : N ; + pork_N : N ; + porridge_N : N ; + postbox_N : N ; + potato_N : N ; + pot_N : N ; + poverty_N : N ; + power_N : N ; + prayer_N : N ; + present_N : N ; + president_N : N ; + price_N : N ; + prisoner_N : N ; + prison_N : N ; + prize_N : N ; + problem_N : N ; + project_N : N ; + promise_N : N ; + province_N : N ; + pumpkin_N : N ; + pupil_N : N ; + purpose_N : N ; + purse_N : N ; + quarrel_N : N ; + question_N : N ; + queue_N : N ; + radio_announcer_N : N ; + raincoat_N : N ; + rain_N : N ; + rake_N : N ; + rat_N : N ; + reason_N : N ; + receipt_N : N ; + referee_N : N ; + refuse_N : N ; + reporter_N : N ; + report_N : N ; + result_N : N ; + reverend_N : N ; + rice_N : N ; + right_N : N ; + river_N : N ; + road_N : N ; + roof_N : N ; + salesman_N : N ; + sand_N : N ; + school_N : N ; + scissors_N : N ; + scorpion_N : N ; + season_N : N ; + sea_N : N ; + secretary_N : N ; + secret_N : N ; + security_guard_N : N ; + seven_N : N ; + sheep_N : N ; + ship_N : N ; + shirt_N : N ; + shoe_N : N ; + shop_N : N ; + shoulder_N : N ; + sister_3_N : N ; + sister_1_N : N ; + sister_2_N : N ; + six_N : N ; + sky_N : N ; + snail_N : N ; + snow_N : N ; + soap_N : N ; + soccer_N : N ; + sock_N : N ; + soil_N : N ; + soldier_N : N ; + song_N : N ; + south_N : N ; + spade_N : N ; + speed_N : N ; + spider_N : N ; + sport_N : N ; + spring_N : N ; + star_N : N ; + stomach_N : N ; + stone_N : N ; + storm_N : N ; + story_N : N ; + stove_N : N ; + street_N : N ; + success_N : N ; + sugar_N : N ; + suit_N : N ; + summer_N : N ; + sun_N : N ; + supper_N : N ; + surname_N : N ; + sweater_N : N ; + sweet_N : N ; + sympathy_N : N ; + table_N : N ; + tablet_N : N ; + tap_N : N ; + taxi_N : N ; + tax_N : N ; + teacher_N : N ; + tea_N : N ; + telephone_N : N ; + television_N : N ; + ten_N : N ; + tennis_N : N ; + thief_N : N ; + thing_N : N ; + thousand_N : N ; + tie_N : N ; + time_N : N ; + toast_N : N ; + toe_N : N ; + tomato_N : N ; + tongue_N : N ; + toothbrush_N : N ; + tooth_N : N ; + toothpaste_N : N ; + torch_N : N ; + tortoise_N : N ; + towel_N : N ; + town_N : N ; + tractor_N : N ; + train_N : N ; + travel_agent_N : N ; + tree_N : N ; + trip_N : N ; + trousers_N : N ; + truth_N : N ; + tyre_N : N ; + umbrella_N : N ; + union_N : N ; + vegetable_N : N ; + visitor_N : N ; + voice_N : N ; + waiter_N : N ; + war_N : N ; + washing_N : N ; + washing_machine_N : N ; + waste_N : N ; + water_N : N ; + watermelon_N : N ; + wave_N : N ; + wealth_N : N ; + weapon_N : N ; + weather_N : N ; + wedding_N : N ; + week_N : N ; + whale_N : N ; + wheelbarrow_N : N ; + wheel_N : N ; + white_rhino_N : N ; + wife_3_N : N ; + wife_1_N : N ; + window_N : N ; + wind_N : N ; + wing_N : N ; + wish_N : N ; + woman_N : N ; + wood_N : N ; + word_N : N ; + work_N : N ; + world_N : N ; + year_N : N ; + youth_N : N ; + zebra_N : N ; + + -- verbs + accept_V : V ; + accept_V2 : V2 ; + accompany_V : V ; + accompany_V2 : V2 ; + admit_V : V ; + admit_V2 : V2 ; + agree_V : V ; + amaze_V : V ; + amaze_V2 : V2 ; + answer_V : V ; + answer_V2 : V2 ; + apologise_V : V ; + approach_V : V ; + approach_V2 : V2 ; + arrive_V : V ; + ascend_V : V ; + ask_V : V ; + ask_V2 : V2 ; + assist_V : V ; + assist_V2 : V2 ; + bake_V : V ; + bake_V2 : V2 ; + bark_V : V ; + bathe_V : V ; + begin_V : V ; + begin_V2 : V2 ; + behave_V : V ; + believe_V : V ; + believe_V2 : V2 ; + birth_V : V ; + birth_V2 : V2 ; + bite_V : V ; + bite_V2 : V2 ; + bless_V : V ; + bless_V2 : V2 ; + blow_V : V ; + boil_V : V ; + boil_V2 : V2 ; + borrow_V : V ; + borrow_V2 : V2 ; + break_V : V ; + break_V2 : V2 ; + bring_V : V ; + bring_V2 : V2 ; + bring_up_V : V ; + bring_up_V2 : V2 ; + brush_V : V ; + brush_V2 : V2 ; + build_V : V ; + build_V2 : V2 ; + burn_V : V ; + burn_V2 : V2 ; + buy_V : V ; + buy_V2 : V2 ; + call_V : V ; + call_V2 : V2 ; + carry_V : V ; + carry_V2 : V2 ; + catch_V : V ; + catch_V2 : V2 ; + cause_V : V ; + cause_V2 : V2 ; + change_1_V : V ; + change_1_V2 : V2 ; + change_2_V : V ; + change_2_V2 : V2 ; + chase_V : V ; + chase_V2 : V2 ; + chat_V : V ; + cheat_V : V ; + cheat_V2 : V2 ; + check_V : V ; + check_V2 : V2 ; + choose_V : V ; + choose_V2 : V2 ; + vote_V : V ; + clap_V : V ; + clap_V2 : V2 ; + clean_V : V ; + clean_V2 : V2 ; + close_V : V ; + close_V2 : V2 ; + feel_cold_V : V ; + come_V : V ; + complain_V : V ; + consist_of_V : V ; + consist_of_V2 : V2 ; + cook_V : V ; + cook_V2 : V2 ; + cost_V : V ; + cost_V2 : V2 ; + cough_V : V ; + count_V : V ; + count_V2 : V2 ; + cry_V : V ; + cut_V : V ; + cut_V2 : V2 ; + dance_V : V ; + decide_V : V ; + defeat_V : V ; + defeat_V2 : V2 ; + demolish_V : V ; + demolish_V2 : V2 ; + descend_V : V ; + develop_V : V ; + disappear_V : V ; + disappoint_V : V ; + disappoint_V2 : V2 ; + do_V : V ; + do_V2 : V2 ; + draw_V : V ; + draw_V2 : V2 ; + drink_V : V ; + drink_V2 : V2 ; + drive_V : V ; + drive_V2 : V2 ; + drizzle_V : V ; + drown_V : V ; + dry_V : V ; + dry_V2 : V2 ; + earn_V : V ; + earn_V2 : V2 ; + eat_V : V ; + eat_V2 : V2 ; + embrace_V : V ; + embrace_V2 : V2 ; + encourage_V : V ; + encourage_V2 : V2 ; + enjoy_V : V ; + enjoy_V2 : V2 ; + enter_V : V ; + envy_V : V ; + envy_V2 : V2 ; + escape_V : V ; + estimate_V : V ; + estimate_V2 : V2 ; + examine_V : V ; + examine_V2 : V2 ; + excuse_V : V ; + excuse_V2 : V2 ; + exercise_V : V ; + exercise_V2 : V2 ; + exit_V : V ; + fail_V : V ; + fail_V2 : V2 ; + fall_V : V ; + feed_1_V : V ; + feed_1_V2 : V2 ; + feed_2_V : V ; + feed_2_V2 : V2 ; + fight_V : V ; + fill_V : V ; + fill_V2 : V2 ; + find_V : V ; + find_V2 : V2 ; + fine_V : V ; + fine_V2 : V2 ; + fish_V : V ; + fish_V2 : V2 ; + flower_V : V ; + flow_V : V ; + fly_V : V ; + fold_V : V ; + fold_V2 : V2 ; + forget_V : V ; + forget_V2 : V2 ; + forgive_1_V : V ; + forgive_1_V2 : V2 ; + forgive_2_V : V ; + forgive_2_V2 : V2 ; + frown_V : V ; + fry_V : V ; + fry_V2 : V2 ; + get_V : V ; + get_V2 : V2 ; + give_1_V : V ; + give_1_V2 : V2 ; + give_2_V : V ; + give_2_V2 : V2 ; + go_V : V ; + go_home_V : V ; + go_to_V : V ; + grab_V : V ; + grab_V2 : V2 ; + greet_V : V ; + greet_V2 : V2 ; + grin_V : V ; + groan_1_V : V ; + groan_2_V : V ; + grow_V : V ; + grow_V2 : V2 ; + growl_V : V ; + grumble_V : V ; + guess_V : V ; + hang_V : V ; + hang_V2 : V2 ; + happen_V : V ; + hate_V : V ; + hate_V2 : V2 ; + help_V : V ; + help_V2 : V2 ; + hide_V : V ; + hide_V2 : V2 ; + hire_V : V ; + hire_V2 : V2 ; + hit_V : V ; + hit_V2 : V2 ; + hold_V : V ; + hold_V2 : V2 ; + hope_V : V ; + hunt_V : V ; + hunt_V2 : V2 ; + hurry_V : V ; + hurry_V2 : V2 ; + hurt_V : V ; + hurt_V2 : V2 ; + indicate_V : V ; + indicate_V2 : V2 ; + inject_V : V ; + inject_V2 : V2 ; + inquire_V : V ; + inquire_V2 : V2 ; + insert_V : V ; + insert_V2 : V2 ; + interrupt_V : V ; + interrupt_V2 : V2 ; + invite_V : V ; + invite_V2 : V2 ; + iron_V : V ; + iron_V2 : V2 ; + irritate_1_V : V ; + irritate_1_V2 : V2 ; + irritate_2_V : V ; + irritate_2_V2 : V2 ; + joke_V : V ; + jump_V : V ; + keep_V : V ; + keep_V2 : V2 ; + kick_V : V ; + kick_V2 : V2 ; + kill_V : V ; + kill_V2 : V2 ; + knock_V : V ; + know_V : V ; + know_V2 : V2 ; + laugh_V : V ; + lead_V : V ; + lead_V2 : V2 ; + learn_V : V ; + leave_behind_V : V ; + leave_behind_V2 : V2 ; + leave_V : V ; + lend_V : V ; + lend_V2 : V2 ; + lift_V : V ; + lift_V2 : V2 ; + like_V : V ; + like_V2 : V2 ; + listen_V : V ; + listen_to_V : V ; + listen_to_V2 : V2 ; + reside_V : V ; + load_V : V ; + load_V2 : V2 ; + look_V : V ; + seek_V : V ; + seek_V2 : V2 ; + love_V : V ; + love_V2 : V2 ; + make_V : V ; + make_V2 : V2 ; + manage_V : V ; + manage_V2 : V2 ; + mend_V : V ; + mend_V2 : V2 ; + mourn_V : V ; + move_house_V : V ; + mow_V : V ; + mow_V2 : V2 ; + need_V : V ; + need_V2 : V2 ; + notice_V : V ; + notice_V2 : V2 ; + notify_V : V ; + notify_V2 : V2 ; + obey_V : V ; + obey_V2 : V2 ; + obtain_V : V ; + obtain_V2 : V2 ; + occur_V : V ; + open_V : V ; + open_V2 : V2 ; + oppress_V : V ; + oppress_V2 : V2 ; + order_V : V ; + order_V2 : V2 ; + pack_V : V ; + pack_V2 : V2 ; + paint_V : V ; + paint_V2 : V2 ; + park_V : V ; + park_V2 : V2 ; + pass_1_V : V ; + pass_1_V2 : V2 ; + pass_2_V : V ; + pass_2_V2 : V2 ; + pass_3_V : V ; + pass_3_V2 : V2 ; + pay_someone_V : V ; + pay_someone_V2 : V2 ; + pay_something_V : V ; + pay_something_V2 : V2 ; + peel_V : V ; + peel_V2 : V2 ; + permit_V : V ; + permit_V2 : V2 ; + perspire_V : V ; + phone_V : V ; + phone_V2 : V2 ; + pick_V : V ; + pick_V2 : V2 ; + plant_V : V ; + plant_V2 : V2 ; + play_V : V ; + play_V2 : V2 ; + polish_V : V ; + polish_V2 : V2 ; + pollute_V : V ; + pollute_V2 : V2 ; + postpone_V : V ; + postpone_V2 : V2 ; + post_V : V ; + post_V2 : V2 ; + pour_V : V ; + pour_V2 : V2 ; + prepare_V : V ; + prepare_V2 : V2 ; + pretend_V : V ; + pretend_V2 : V2 ; + prevent_1_V : V ; + prevent_1_V2 : V2 ; + prevent_2_V : V ; + prevent_2_V2 : V2 ; + promise_V : V ; + promise_V2 : V2 ; + propose_V : V ; + propose_V2 : V2 ; + protect_V : V ; + protect_V2 : V2 ; + pull_V : V ; + pull_V2 : V2 ; + pump_V : V ; + pump_V2 : V2 ; + punish_V : V ; + punish_V2 : V2 ; + put_V : V ; + put_V2 : V2 ; + put_out_V : V ; + put_out_V2 : V2 ; + quieten_V : V ; + quieten_V2 : V2 ; + rain_V : V ; + raise_up_V : V ; + raise_up_V2 : V2 ; + raise_V : V ; + raise_V2 : V2 ; + rape_V : V ; + rape_V2 : V2 ; + read_V : V ; + read_V2 : V2 ; + receive_V : V ; + receive_V2 : V2 ; + recognise_V : V ; + recognise_V2 : V2 ; + reduce_V : V ; + reduce_V2 : V2 ; + reject_V : V ; + reject_V2 : V2 ; + remain_V : V ; + remember_V : V ; + remember_V2 : V2 ; + remind_V : V ; + remind_V2 : V2 ; + remove_V : V ; + remove_V2 : V2 ; + rent_V : V ; + rent_V2 : V2 ; + repair_V : V ; + repair_V2 : V2 ; + repeat_V : V ; + repeat_V2 : V2 ; + request_V : V ; + request_V2 : V2 ; + require_V : V ; + require_V2 : V2 ; + rescue_V : V ; + rescue_V2 : V2 ; + resemble_V : V ; + resemble_V2 : V2 ; + respect_V : V ; + respect_V2 : V2 ; + rest_V : V ; + return_from_V : V ; + return_from_V2 : V2 ; + return_to_V : V ; + return_to_V2 : V2 ; + reward_V : V ; + reward_V2 : V2 ; + ride_V : V ; + ride_V2 : V2 ; + roast_V : V ; + roast_V2 : V2 ; + run_away_V : V ; + run_V : V ; + satisfy_V : V ; + satisfy_V2 : V2 ; + save_V : V ; + save_V2 : V2 ; + say_V : V ; + scare_V : V ; + scare_V2 : V2 ; + scold_V : V ; + scold_V2 : V2 ; + scratch_V : V ; + scratch_V2 : V2 ; + scream_V : V ; + scrub_V : V ; + scrub_V2 : V2 ; + see_V : V ; + see_V2 : V2 ; + sell_1_V : V ; + sell_1_V2 : V2 ; + sell_2_V : V ; + sell_2_V2 : V2 ; + send_V : V ; + send_V2 : V2 ; + separate_V : V ; + separate_V2 : V2 ; + sew_V : V ; + sew_V2 : V2 ; + shake_hands_V : V ; + share_V : V ; + share_V2 : V2 ; + sharpen_V : V ; + sharpen_V2 : V2 ; + shave_V : V ; + shave_V2 : V2 ; + shoot_V : V ; + shoot_V2 : V2 ; + shout_V : V ; + show_V : V ; + show_V2 : V2 ; + sign_V : V ; + sign_V2 : V2 ; + sing_V : V ; + sing_V2 : V2 ; + smell_V : V ; + smell_V2 : V2 ; + smoke_V : V ; + smoke_V2 : V2 ; + snore_V : V ; + snow_V : V ; + soften_V : V ; + soften_V2 : V2 ; + solve_V : V ; + solve_V2 : V2 ; + speak_V : V ; + spill_V : V ; + spill_V2 : V2 ; + spread_V : V ; + spread_V2 : V2 ; + stand_up_V : V ; + stay_V : V ; + steal_V : V ; + steal_V2 : V2 ; + sting_V : V ; + sting_V2 : V2 ; + study_V : V ; + study_V2 : V2 ; + halt_V : V ; + halt_V2 : V2 ; + succeed_V : V ; + suffer_V : V ; + support_V : V ; + support_V2 : V2 ; + surprise_V : V ; + surprise_V2 : V2 ; + swallow_V : V ; + swallow_V2 : V2 ; + sweat_V : V ; + sweep_V : V ; + sweep_V2 : V2 ; + swim_V : V ; + switch_off_V : V ; + switch_off_V2 : V2 ; + switch_on_1_V : V ; + switch_on_1_V2 : V2 ; + switch_on_2_V : V ; + switch_on_2_V2 : V2 ; + switch_on_3_V : V ; + switch_on_3_V2 : V2 ; + take_out_V : V ; + take_out_V2 : V2 ; + take_1_V : V ; + take_1_V2 : V2 ; + take_2_V : V ; + take_2_V2 : V2 ; + talk_V : V ; + taste_like_V : V ; + taste_like_V2 : V2 ; + taste_V : V ; + taste_V2 : V2 ; + teach_V : V ; + teach_V2 : V2 ; + tear_V : V ; + tear_V2 : V2 ; + tell_V : V ; + tell_V2 : V2 ; + thank_V : V ; + thank_V2 : V2 ; + think_V : V ; + threaten_V : V ; + threaten_V2 : V2 ; + throw_V : V ; + throw_V2 : V2 ; + thunder_V : V ; + tie_V : V ; + tie_V2 : V2 ; + toast_V : V ; + toast_V2 : V2 ; + touch_V : V ; + touch_V2 : V2 ; + translate_V : V ; + translate_V2 : V2 ; + transport_1_V : V ; + transport_1_V2 : V2 ; + transport_2_V : V ; + transport_2_V2 : V2 ; + trust_V : V ; + trust_V2 : V2 ; + try_V : V ; + try_V2 : V2 ; + turn_around_V : V ; + turn_V : V ; + turn_V2 : V2 ; + understand_V : V ; + understand_V2 : V2 ; + unpack_V : V ; + unpack_V2 : V2 ; + use_V : V ; + use_V2 : V2 ; + vaccinate_V : V ; + vaccinate_V2 : V2 ; + visit_V : V ; + visit_V2 : V2 ; + vomit_1_V : V ; + vomit_2_V : V ; + vote_V : V ; + wake_V : V ; + wake_V2 : V2 ; + walk_V : V ; + want_V : V ; + want_V2 : V2 ; + warm_V : V ; + warm_V2 : V2 ; + warn_V : V ; + warn_V2 : V2 ; + wash_V : V ; + wash_V2 : V2 ; + watch_V : V ; + watch_V2 : V2 ; + water_V : V ; + water_V2 : V2 ; + wear_V : V ; + wear_V2 : V2 ; + weep_V : V ; + weigh_V : V ; + weigh_V2 : V2 ; + win_V : V ; + wipe_V : V ; + wipe_V2 : V2 ; + wish_V : V ; + wish_V2 : V2 ; + work_V : V ; + wrap_V : V ; + wrap_V2 : V2 ; + write_V : V ; + write_V2 : V2 ; + write_to_V : V ; + write_to_V2 : V2 ; + yawn_V : V ; + yell_V : V ; + + -- adjectivals + colourful_R : A ; + big_A : A ; +} diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf new file mode 100644 index 000000000..ad0dc23d4 --- /dev/null +++ b/src/zulu/lexica/MultiLexZul.gf @@ -0,0 +1,1095 @@ +concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { + + lin + -- nouns + ability_N = mkN "khono" C5_6 ; + accident_N = mkN "ngozi" C9_10 ; + accommodation_N = mkN "ndawo" C9_10 ; + accountant_N = mkN "cwaningi" C1_2 ; + advantage_N = mkN "zuzo" C9_10 ; + advertisement_N = mkN "aziso" C7_8 ; + advice_N = mkN "eluleko" C7_8 ; + aeroplane_N = mkN "bhanoyi" C5_6 ; + aim_N = mkN "hloso" C9_10 ; + air_N = mkN "moya" C3_4 ; + ambassador_N = mkN "nxusa" C5_6 ; + anger_N = mkN "laka" C11_10 ; + animal_N = mkN "lwane" C7_8 ; + ant_N = mkN "ntuthwane" C9_10 ; + architect_N = mkN "klami" C1_2 ; + argument_N = mkN "phikiswano" C9_10 ; + arm_N = mkN "galo" C9_10 ; + attorney_N = mkN "meli" C1_2 ; + aunt_maternal_N = mkN "mamekazi" C1a_2a ; + aunt_paternal_N = mkN "babekazi" C1a_2a ; + avocado_N = mkN "kwatapheya" C1a_2a ; + baboon_N = mkN "fene" C9_10 ; + baby_N = mkN "ntwana" C1_2 ; + back_N = mkN "hlane" C3_4 ; + bag_N = mkN "khwama" C7_8 ; + banana_N = mkN "bhanana" C1a_2a ; + bank_N = mkN "bhange" C5_6 ; + bat_N = mkN "lulwane" C5_6 ; + beach_N = mkN "bhishi" C5_6 ; + bean_N = mkN "bhontshisi" C1a_2a ; + bedroom_N = mkN "kamelo" C5_6 ; + bed_N = mkN "bhede" C3_4 ; + beef_N = mkN "nyama" C9_10 ; + bee_N = mkN "nyosi" C9_10 ; + beetle_N = mkN "bhungane" C5_6 ; + beggar_N = mkN "nxibi" C7_8 ; + bible_N = mkN "bhayibheli" C5_6 ; + bicycle_N = mkN "bhayisikili" C5_6 ; + blanket_N = mkN "ngubo" C9_10 ; + blood_N = mkN "gazi" C5_6 ; + body_N = mkN "zimba" C3_4 ; + bomb_N = mkN "bhomu" C5_6 ; + book_N = mkN "ncwadi" C9_10 ; + box_N = mkN "bhokisi" C5_6 ; + boy_N = mkN "fana" C1_2 ; + bread_N = mkN "nkwa" C7_8 ; + breadwinner_N = mkN "ondli" C1_2 ; + breakfast_N = mkN "bhulakufesi" C5_6 ; + broom_N = mkN "shanelo" C3_4 ; + brother_3_N = mkN "fowabo" C1_2 ; + brother_1_N = mkN "fowethu" C1_2 ; + brother_2_N = mkN "fowenu" C1_2 ; + brush_N = mkN "bhulashi" C5_6 ; + buck_N = mkN "nyamazane" C9_10 ; + budget_N = mkN "bhajethi" C5_6 ; + buffalo_N = mkN "nyathi" C9_10 ; + builder_N = mkN "akhi" C1_2 ; + bull_N = mkN "khunzi" C9_10 ; + burglar_N = mkN "gqekezi" C1_2 ; + businessman_N = mkN "somabhizinisi" C1a_2a ; + butcher_N = mkN "bhusha" C1a_2a ; + butterfly_N = mkN "vemvane" C11_10 ; + calf_N = mkN "nkonyane" C9_6 ; + camel_N = mkN "kamela" C5_6 ; + card_N = mkN "khadi" C5_6 ; + car_N = mkN "moto" C9_10 ; + carpet_N = mkN "khaphethe" C5_6 ; + cat_N = mkN "kati" C5_6 ; + cattle_N = mkN "khomo" C9_10 ; + chair_N = mkN "hlalo" C7_8 ; + chairman_N = mkN "sihlalo" C1a_2a ; + chauffeur_N = mkN "shayeli" C1_2 ; + cheese_N = mkN "shizi" C11_10 ; + cheetah_N = mkN "gulule" C9_10 ; + chest_N = mkN "fuba" C7_8 ; + chicken_N = mkN "nkukhu" C9_10 ; + child_N = mkN "ngane" C9_10 ; + church_N = mkN "sonto" C5_6 ; + cigarette_N = mkN "sikilidi" C1a_2a ; + citizen_N = mkN "akhamuzi" C7_8 ; + clinic_N = mkN "kiliniki" C5_6 ; + clock_N = mkN "kilogo" C5_6 ; + cloth_N = mkN "dwangu" C9_10 ; + cloud_N = mkN "fu" C5_6 ; + coat_N = mkN "bhantshi" C5_6 ; + coffee_N = mkN "khofi" C5_6 ; + colour_N = mkN "bala" C3_4 ; + comb_N = mkN "kamu" C5_6 ; + company_N = mkN "nkampani" C9_10 ; + complaint_N = mkN "khalo" C7_8 ; + consequence_N = mkN "phumela" C3_4 ; + cook_N = mkN "pheki" C1_2 ; + country_N = mkN "zwe" C5_6 ; + cow_N = mkN "khomazi" C9_10 ; + credit_card_N = mkN "khadi" C5_6 ; + cricket_N = mkN "khilikithi" C5_6 ; + crime_N = mkN "gebengu" C14 ; + crocodile_N = mkN "gwenya" C9_10 ; + crow_N = mkN "gwababa" C5_6 ; + cupboard_N = mkN "khabethe" C5_6 ; + cup_N = mkN "nkomishi" C9_10 ; + curtain_N = mkN "khethini" C5_6 ; + customer_N = mkN "thengi" C1_2 ; + danger_N = mkN "ngozi" C9_10 ; + daughter_N = mkN "doda" C9_6 ; + day_N = mkN "suku" C11_10 ; + decision_N = mkN "nqumo" C7_8 ; + deed_N = mkN "enzo" C7_8 ; + dentist_N = mkN "dokotela" C1a_2a ; + dining_room_N = mkN "kamelo" C5_6 ; + disaster_N = mkN "ngozi" C9_10 ; + discussion_N = mkN "ngxoxo" C9_10 ; + distance_N = mkN "banga" C5_6 ; + doctor_N = mkN "dokotela" C1a_2a ; + dog_N = mkN "nja" C9_10 ; + dog_2_N = mkN "hogo" C3_4 ; + donation_N = mkN "nikelo" C3_4 ; + door_N = mkN "nyango" C3_4 ; + dress_N = mkN "lokwe" C5_6 ; + drink_N = mkN "phuzo" C7_8 ; + dustbin_N = mkN "gqomo" C3_4 ; + duty_N = mkN "bopho" C7_8 ; + ear_N = mkN "dlebe" C9_10 ; + earth_N = mkN "hlaba" C3_4 ; + editor_N = mkN "hleli" C1_2 ; + education_N = mkN "fundo" C9_10 ; + egg_N = mkN "qanda" C5_6 ; + eight_N = mkN "shiyagalombili" C7_8 ; + elbow_N = mkN "dololwane" C9_10 ; + election_N = mkN "khetho" C11_10 ; + electricity_N = mkN "gesi" C1a_2a ; + employee_N = mkN "sebenzi" C7_8 ; + employer_N = mkN "qashi" C1_2 ; + eye_N = mkN "ihlo" C5_6 ; + face_N = mkN "so" C14 ; + family_N = mkN "ndeni" C3_4 ; + farmer_N = mkN "limi" C1_2 ; + farm_N = mkN "pulazi" C5_6 ; + father_3_N = mkN "yise" C1a_2a ; + father_1_N = mkN "baba" C1a_2a ; + father_2_N = mkN "yihlo" C1a_2a ; + female_N = mkN "fazane" C7_8 ; + fence_N = mkN "cingo" C11_10 ; + fever_N = mkN "fiva" C9_10 ; + field_N = mkN "simu" C9_6 ; + finger_N = mkN "nwe" C3_4 ; + fire_N = mkN "lilo" C3_4 ; + fish_N = mkN "hlanzi" C9_10 ; + flower_N = mkN "mbali" C9_10 ; + flu_N = mkN "mfuluwenza" C9_10 ; + fly_N = mkN "mpukane" C9_10 ; + football_N = mkN "bhola" C5_6 ; + foot_N = mkN "nyawo" C11_10 ; + fork_N = mkN "fologo" C9_10 ; + freedom_N = mkN "khululeko" C9_10 ; + friend_N = mkN "ngane" C1_2 ; + frog_N = mkN "selesele" C5_6 ; + frost_N = mkN "thwathwa" C7_8 ; + fruit_N = mkN "thelo" C7_8 ; + girl_N = mkN "ntombazana" C5_6 ; + glasses_N = mkN "buko" C7_8 ; + glass_N = mkN "gilazi" C9_10 ; + goat_N = mkN "buzi" C9_10 ; + government_N = mkN "hulumeni" C1a_2a ; + grandchild_N = mkN "zukulwane" C1_2 ; + grandfather_3_N = mkN "yisemkhulu" C1a_2a ; + grandfather_1_N = mkN "babamkhulu" C1a_2a ; + grandfather_2_N = mkN "yihlomkhulu" C1a_2a ; + grandmother_1_N = mkN "makhulu" C1a_2a ; + grandmother_3_N = mkN "gogo" C1a_2a ; + grandmother_2_N = mkN "nyokokhulu" C1a_2a ; + grass_N = mkN "tshani" C14 ; + grave_N = mkN "thuna" C5_6 ; + group_N = mkN "xuku" C7_8 ; + guitar_N = mkN "gingci" C7_8 ; + hail_N = mkN "chotho" C7_8 ; + hairdresser_N = mkN "gundi" C1_2 ; + hair_N = mkN "nwele" C11_10 ; + hammer_N = mkN "ando" C7_8 ; + hand_N = mkN "andla" C7_8 ; + handwriting_N = mkN "andla" C7_8 ; + harbour_N = mkN "theku" C5_6 ; + hat_N = mkN "gqoko" C7_8 ; + hatred_N = mkN "zondo" C9_10 ; + head_N = mkN "khanda" C5_6 ; + health_N = mkN "philo" C9_10 ; + heart_N = mkN "hliziyo" C9_10 ; + help_N = mkN "sizo" C11_10 ; + hen_N = mkN "khukhukazi" C7_8 ; + highway_N = mkN "gwaqo" C3_4 ; + hill_N = mkN "ntaba" C9_10 ; + holiday_N = mkN "holide" C5_6 ; + hope_N = mkN "themba" C5_6 ; + horse_N = mkN "hhashi" C5_6 ; + hospital_N = mkN "bhedlela" C7_8 ; + hour_N = mkN "hora" C5_6 ; + human_N = mkN "ntu" C1_2 ; + hundred_N = mkN "khulu" C5_6 ; + husband_N = mkN "yeni" C1_2 ; + hyena_N = mkN "mpisi" C9_10 ; + ideal_N = mkN "hloso" C9_10 ; + income_N = mkN "holo" C5_6 ; + insect_N = mkN "nambuzane" C7_8 ; + insult_N = mkN "thuko" C7_8 ; + introduction_N = mkN "ngeniso" C7_8 ; + jacket_N = mkN "bhantshi" C5_6 ; + jaw_N = mkN "hlathi" C3_4 ; + jersey_N = mkN "jezi" C5_6 ; + journalist_N = mkN "thatheli" C9_10 ; + journey_N = mkN "hambo" C11_10 ; + joy_N = mkN "jabulo" C9_10 ; + judge_N = mkN "jaji" C5_6 ; + jug_N = mkN "jeke" C1a_2a ; + juice_N = mkN "jusi" C1a_2a ; + kettle_N = mkN "gedlela" C5_6 ; + key_N = mkN "khiye" C7_8 ; + kind_N = mkN "hlobo" C11_10 ; + king_N = mkN "khosi" C9_6 ; + kitchen_N = mkN "khishi" C5_6 ; + knee_N = mkN "dolo" C5_6 ; + knife_N = mkN "mese" C3_4 ; + knowledge_N = mkN "azi" C11_10 ; + ladder_N = mkN "ladi" C5_6 ; + lake_N = mkN "chibi" C5_6 ; + lamp_N = mkN "lambu" C5_6 ; + language_N = mkN "limi" C11_10 ; + lawnmower_N = mkN "shini" C3_4 ; + law_N = mkN "thetho" C3_4 ; + lawyer_N = mkN "meli" C1_2 ; + leader_N = mkN "holi" C1_2 ; + leaf_N = mkN "qabunga" C5_6 ; + leg_N = mkN "lenze" C3_4 ; + leopard_N = mkN "ngwe" C9_10 ; + lettuce_N = mkN "letisi" C1a_2a ; + licence_N = mkN "layisense" C5_6 ; + lie_N = mkN "anga" C5_6 ; + life_N = mkN "philo" C9_10 ; + lightning_N = mkN "bani" C3_4 ; + lion_N = mkN "bhubesi" C5_6 ; + lip_N = mkN "debe" C11_10 ; + list_N = mkN "hlu" C11_10 ; + lorry_N = mkN "loli" C5_6 ; + love_N = mkN "thando" C11_10 ; + luck_N = mkN "nhlanhla" C9_10 ; + luggage_N = mkN "phahla" C9_10 ; + machine_N = mkN "shini" C3_4 ; + maize_N = mkN "mbila" C3_4 ; + malaria_N = mkN "qhuqho" C11_10 ; + manager_N = mkN "phathi" C1_2 ; + mango_N = mkN "ongo" C3_4 ; + man_N = mkN "doda" C9_6 ; + mat_N = mkN "mata" C1a_2a ; + meaning_N = mkN "gqondo" C9_10 ; + meat_N = mkN "nyama" C9_10 ; + medicine_N = mkN "thi" C3_4 ; + meerkat_N = mkN "bhibhi" C14 ; + meeting_N = mkN "hlangano" C3_4 ; + memory_N = mkN "khumbulo" C9_10 ; + metre_N = mkN "mitha" C5_6 ; + milk_N = mkN "bisi" C11_10 ; + million_N = mkN "gidi" C7_8 ; + minister_political_N = mkN "ngqongqoshe" C1a_2a ; + minister_religious_N = mkN "fundisi" C1_2 ; + mirror_N = mkN "buko" C7_8 ; + mistake_N = mkN "phosiso" C7_8 ; + Monday_N = mkN "sombuluko" C3_4 ; + monkey_N = mkN "nkawu" C9_10 ; + month_N = mkN "nyanga" C9_10 ; + moon_N = mkN "nyanga" C9_10 ; + mosquito_N = mkN "miyane" C1a_2a ; + mother_3_N = mkN "nina" C1a_2a ; + mother_1_N = mkN "mame" C1a_2a ; + mother_2_N = mkN "nyoko" C1a_2a ; + mountain_N = mkN "ntaba" C9_10 ; + mouse_N = mkN "gundane" C5_6 ; + movie_N = mkN "filimu" C5_6 ; + mud_N = mkN "daka" C11_10 ; + mug_N = mkN "magi" C9_10 ; + municipality_N = mkN "masipala" C1a_2a ; + murderer_N = mkN "bulali" C1_2 ; + name_N = mkN "gama" C5_6 ; + nature_N = mkN "velo" C9_10 ; + neck_N = mkN "ntamo" C9_10 ; + neighbour_N = mkN "makhelwane" C1a_2a ; + newspaper_N = mkN "phephandaba" C5_6 ; + noise_N = mkN "sindo" C3_4 ; + nurse_N = mkN "nesi" C1a_2a ; + office_N = mkN "hhovisi" C5_6 ; + oil_N = mkN "woyela" C1a_2a ; + opinion_N = mkN "bono" C3_4 ; + opportunity_N = mkN "thuba" C5_6 ; + orange_N = mkN "wolintshi" C5_6 ; + ostrich_N = mkN "ntshe" C9_10 ; + owl_N = mkN "khova" C7_8 ; + page_N = mkN "khasi" C5_6 ; + pain_N = mkN "hlungu" C14 ; + paper_N = mkN "phepha" C5_6 ; + parcel_N = mkN "phasela" C5_6 ; + parent_N = mkN "zali" C1_2 ; + parliament_N = mkN "phalamende" C5_6 ; + part_N = mkN "ngxenye" C9_10 ; + passport_N = mkN "phasiphothi" C5_6 ; + patient_N = mkN "guli" C7_8 ; + pear_N = mkN "pheya" C5_6 ; + pencil_N = mkN "pensele" C5_6 ; + pen_N = mkN "peni" C5_6 ; + pension_N = mkN "pesheni" C9_10 ; + people_N = mkN "ntu" C1_2 ; + pepper_N = mkN "pelepele" C1a_2a ; + pet_N = mkN "lwane" C7_8 ; + picture_N = mkN "fanekiso" C3_4 ; + piece_N = mkN "qephu" C7_8 ; + pig_N = mkN "ngulube" C9_10 ; + pill_N = mkN "philisi" C5_6 ; + pillow_N = mkN "camelo" C3_4 ; + pilot_N = mkN "shayeli" C1_2 ; + place_N = mkN "ndawo" C9_10 ; + plan_N = mkN "su" C5_6 ; + plant_N = mkN "thombo" C7_8 ; + plate_N = mkN "puleti" C5_6 ; + pocket_N = mkN "khukhu" C5_6 ; + point_N = mkN "pende" C1a_2a ; + poison_N = mkN "shevu" C11_10 ; + policeman_N = mkN "phoyisa" C5_6 ; + pork_N = mkN "nyama" C9_10 ; + pork_N = mkN "nyama" C9_10 ; + porridge_N = mkN "phalishi" C5_6 ; + postbox_N = mkN "bhokisi" C5_6 ; + potato_N = mkN "zambane" C5_6 ; + pot_N = mkN "bhodwe" C5_6 ; + poverty_N = mkN "mpofu" C14 ; + power_N = mkN "ndla" C5_6 ; + prayer_N = mkN "thandazo" C3_4 ; + present_N = mkN "phiwo" C7_8 ; + president_N = mkN "mongameli" C1a_2a ; + price_N = mkN "nani" C5_6 ; + prisoner_N = mkN "boshwa" C7_8 ; + prison_N = mkN "jele" C5_6 ; + prize_N = mkN "klomelo" C3_4 ; + problem_N = mkN "khinga" C9_10 ; + project_N = mkN "cebo" C5_6 ; + promise_N = mkN "thembiso" C7_8 ; + province_N = mkN "fundazwe" C7_8 ; + pumpkin_N = mkN "thanga" C5_6 ; + pupil_N = mkN "fundi" C1_2 ; + purpose_N = mkN "jongo" C9_10 ; + purse_N = mkN "khwama" C7_8 ; + quarrel_N = mkN "ngxabano" C9_10 ; + question_N = mkN "buzo" C3_4 ; + queue_N = mkN "hele" C11_10 ; + radio_announcer_N = mkN "sakazi" C1_2 ; + raincoat_N = mkN "jazi" C5_6 ; + rain_N = mkN "vula" C9_10 ; + rake_N = mkN "hala" C5_6 ; + rat_N = mkN "gundane" C5_6 ; + reason_N = mkN "zathu" C7_8 ; + receipt_N = mkN "risidi" C5_6 ; + referee_N = mkN "nompempe" C1a_2a ; + refuse_N = mkN "bi" C7_8 ; + reporter_N = mkN "biki" C1_2 ; + report_N = mkN "biko" C3_4 ; + result_N = mkN "phumela" C3_4 ; + reverend_N = mkN "fundisi" C1_2 ; + rice_N = mkN "rayisi" C5_6 ; + right_N = mkN "lungelo" C5_6 ; + river_N = mkN "fula" C3_4 ; + road_N = mkN "gwaqo" C3_4 ; + roof_N = mkN "phahla" C11_10 ; + salesman_N = mkN "thengisi" C1_2 ; + sand_N = mkN "hlabathi" C7_8 ; + school_N = mkN "kole" C7_8 ; + scissors_N = mkN "kele" C7_8 ; + scorpion_N = mkN "fezela" C1a_2a ; + season_N = mkN "khathi" C7_8 ; + sea_N = mkN "lwandle" C11_10 ; + secretary_N = mkN "nobhala" C1a_2a ; + secret_N = mkN "fihlo" C9_10 ; + security_guard_N = mkN "nogada" C1a_2a ; + seven_N = mkN "khombisa" C7_8 ; + sheep_N = mkN "vu" C9_10 ; + ship_N = mkN "khumbi" C3_4 ; + shirt_N = mkN "hembe" C5_6 ; + shoe_N = mkN "cathulo" C7_8 ; + shop_N = mkN "tolo" C7_8 ; + shoulder_N = mkN "hlombe" C5_6 ; + sister_3_N = mkN "dadewabo" C1a_2a ; + sister_1_N = mkN "dadewethu" C1a_2a ; + sister_2_N = mkN "dadewenu" C1a_2a ; + six_N = mkN "thupha" C7_8 ; + sky_N = mkN "bhakabhaka" C7_8 ; + snail_N = mkN "nenke" C3_4 ; + snow_N = mkN "qhwa" C5_6 ; + soap_N = mkN "nsipho" C9_10 ; + soccer_N = mkN "bhola" C5_6 ; + sock_N = mkN "sokisi" C5_6 ; + soil_N = mkN "hlabathi" C3_4 ; + soldier_N = mkN "sosha" C5_6 ; + song_N = mkN "culo" C5_6 ; + south_N = mkN "Ningizimu" C5_6 ; + spade_N = mkN "fosholo" C5_6 ; + speed_N = mkN "jubane" C5_6 ; + spider_N = mkN "cabucabu" C7_8 ; + sport_N = mkN "dlalo" C3_4 ; + spring_N = mkN "thwasahlobo" C9_10 ; + star_N = mkN "nkanyezi" C9_10 ; + stomach_N = mkN "su" C7_8 ; + stone_N = mkN "tshe" C5_6 ; + storm_N = mkN "phepho" C7_8 ; + story_N = mkN "daba" C9_10 ; + stove_N = mkN "tofu" C7_8 ; + street_N = mkN "taladi" C7_8 ; + success_N = mkN "phumelelo" C9_10 ; + sugar_N = mkN "shukela" C1a_2a ; + suit_N = mkN "sudi" C5_6 ; + summer_N = mkN "hlobo" C5_6 ; + sun_N = mkN "langa" C5_6 ; + supper_N = mkN "dlakusihlwa" C9_10 ; + surname_N = mkN "bongo" C7_8 ; + sweater_N = mkN "jezi" C5_6 ; + sweet_N = mkN "Swidi" C5_6 ; + sympathy_N = mkN "hawu" C7_8 ; + table_N = mkN "tafula" C5_6 ; + tablet_N = mkN "philisi" C5_6 ; + tap_N = mkN "mpompi" C1a_2a ; + taxi_N = mkN "tekisi" C5_6 ; + tax_N = mkN "thela" C9_10 ; + teacher_N = mkN "thisha" C1a_2a ; + tea_N = mkN "tiye" C5_6 ; + telephone_N = mkN "cingo" C11_10 ; + television_N = mkN "thelevishini" C5_6 ; + ten_N = mkN "shumi" C5_6 ; + tennis_N = mkN "thenisi" C5_6 ; + thief_N = mkN "sela" C5_6 ; + thing_N = mkN "tho" C9_10 ; + thousand_N = mkN "khulungwane" C9_10 ; + tie_N = mkN "thayi" C1a_2a ; + time_N = mkN "khathi" C7_8 ; + toast_N = mkN "nkwa" C7_8 ; + toe_N = mkN "zwani" C11_10 ; + tomato_N = mkN "tamatisi" C1a_2a ; + tongue_N = mkN "limi" C11_10 ; + toothbrush_N = mkN "bhulashi" C5_6 ; + tooth_N = mkN "zinyo" C5_6 ; + toothpaste_N = mkN "thi" C3_4 ; + torch_N = mkN "thoshi" C5_6 ; + tortoise_N = mkN "fudu" C11_10 ; + towel_N = mkN "thawula" C5_6 ; + town_N = mkN "dolobha" C5_6 ; + tractor_N = mkN "gandaganda" C1a_2a ; + train_N = mkN "timela" C7_8 ; + travel_agent_N = mkN "hleli" C1_2 ; + tree_N = mkN "thi" C3_4 ; + trip_N = mkN "hambo" C11_10 ; + trousers_N = mkN "bhulukwe" C5_6 ; + truth_N = mkN "qiniso" C5_6 ; + tyre_N = mkN "sondo" C5_6 ; + umbrella_N = mkN "ambulela" C7_8 ; + union_N = mkN "nyunyana" C9_10 ; + vegetable_N = mkN "fino" C3_4 ; + visitor_N = mkN "hambi" C7_8 ; + voice_N = mkN "zwi" C5_6 ; + waiter_N = mkN "weta" C1a_2a ; + war_N = mkN "mpi" C9_10 ; + washing_N = mkN "ngubo" C9_10 ; + washing_machine_N = mkN "shini" C3_4 ; + waste_N = mkN "bi" C7_8 ; + water_N = mkN "nzi" C5_6 ; + watermelon_N = mkN "khabe" C5_6 ; + wave_N = mkN "gagasi" C5_6 ; + wealth_N = mkN "ngcebo" C9_10 ; + weapon_N = mkN "khali" C7_8 ; + weather_N = mkN "mo" C7_8 ; + wedding_N = mkN "shado" C3_4 ; + week_N = mkN "viki" C5_6 ; + whale_N = mkN "khomo" C3_4 ; + wheelbarrow_N = mkN "bhala" C5_6 ; + wheel_N = mkN "sondo" C5_6 ; + white_rhino_N = mkN "khombe" C3_4 ; + wife_3_N = mkN "mkakhe" C1a_2a ; + wife_1_N = mkN "mkami" C1a_2a ; + window_N = mkN "fasitela" C5_6 ; + wind_N = mkN "moya" C3_4 ; + wing_N = mkN "phiko" C5_6 ; + wish_N = mkN "fiso" C7_8 ; + woman_N = mkN "khosikazi" C9_6 ; + wood_N = mkN "thi" C3_4 ; + word_N = mkN "gama" C5_6 ; + work_N = mkN "sebenzi" C3_4 ; + world_N = mkN "hlaba" C3_4 ; + year_N = mkN "nyaka" C11_10 ; + youth_N = mkN "tsha" C9_10 ; + zebra_N = mkN "dube" C5_6 ; + + -- verbs + accept_V = mkV "amukel" ; + accept_V2 = mkV2 "amukel" ; + accompany_V = mkV "phelekezel" ; + accompany_V2 = mkV2 "phelekezel" ; + admit_V = mkV "vum" ; + admit_V2 = mkV2 "vum" ; + agree_V = mkV "vum" ; + amaze_V = mkV "mangalis" ; + amaze_V2 = mkV2 "mangalis" ; + answer_V = mkV "phendul" ; + answer_V2 = mkV2 "phendul" ; + apologise_V = mkV "xolis" ; + approach_V = mkV "sondel" ; + approach_V2 = mkV2 "sondel" ; + arrive_V = mkV "fik" ; + ascend_V = mkV "khuphuk" ; + ask_V = mkV "buz" ; + ask_V2 = mkV2 "buz" ; + assist_V = mkV "nced" ; + assist_V2 = mkV2 "nced" ; + bake_V = mkV "bhak" ; + bake_V2 = mkV2 "bhak" ; + bark_V = mkV "khonkoth" ; + bathe_V = mkV "bhav" ; + begin_V = mkV "qal" ; + begin_V2 = mkV2 "qal" ; + behave_V = mkV "ziphath" ; + believe_V = mkV "kholw" ; + believe_V2 = mkV2 "kholw" ; + birth_V = mkV "zal" ; + birth_V2 = mkV2 "zal" ; + bite_V = mkV "lum" ; + bite_V2 = mkV2 "lum" ; + bless_V = mkV "busis" ; + bless_V2 = mkV2 "busis" ; + blow_V = mkV "vunguz" ; + boil_V = mkV "bil" ; + boil_V2 = mkV2 "bilis" ; + borrow_V = mkV "bolek" ; + borrow_V2 = mkV2 "bolek" ; + break_V = mkV "phul" ; + break_V2 = mkV2 "phul" ; + bring_V = mkV "leth" ; + bring_V2 = mkV2 "leth" ; + bring_up_V = mkV "khulis" ; + bring_up_V2 = mkV2 "khulis" ; + brush_V = mkV "xubh" ; + brush_V2 = mkV2 "xubh" ; + build_V = mkV "akh" ; + build_V2 = mkV2 "akh" ; + burn_V = mkV "shis" ; + burn_V2 = mkV2 "shis" ; + buy_V = mkV "theng" ; + buy_V2 = mkV2 "theng" ; + call_V = mkV "biz" ; + call_V2 = mkV2 "biz" ; + carry_V = mkV "thwal" ; + carry_V2 = mkV2 "thwal" ; + catch_V = mkV "bamb" ; + catch_V2 = mkV2 "bamb" ; + cause_V = mkV "bang" ; + cause_V2 = mkV2 "bang" ; + change_1_V = mkV "shintsh" ; + change_1_V2 = mkV2 "shintsh" ; + change_2_V = mkV "guqul" ; + change_2_V2 = mkV2 "guqul" ; + chase_V = mkV "xosh" ; + chase_V2 = mkV2 "xosh" ; + chat_V = mkV "xox" ; + cheat_V = mkV "khohlis" ; + cheat_V2 = mkV2 "khohlis" ; + check_V = mkV "hlol" ; + check_V2 = mkV2 "hlol" ; + choose_V = mkV "kheth" ; + choose_V2 = mkV2 "kheth" ; + -- vote_V = mkV "kheth" ; + clap_V = mkV "shay" ; + clap_V2 = mkV2 "shay" ; + clean_V = mkV "hlanz" ; + clean_V2 = mkV2 "hlanz" ; + close_V = mkV "val" ; + close_V2 = mkV2 "val" ; + feel_cold_V = mkV "godol" ; + come_V = mkV "vel" ; + complain_V = mkV "khonond" ; + consist_of_V = mkV "hlanganis" ; + consist_of_V2 = mkV2 "hlanganis" ; + cook_V = mkV "phek" ; + cook_V2 = mkV2 "phek" ; + cost_V = mkV "biz" ; + cost_V2 = mkV2 "biz" ; + cough_V = mkV "khwehlel" ; + count_V = mkV "bal" ; + count_V2 = mkV2 "bal" ; + cry_V = mkV "khal" ; + cut_V = mkV "sik" ; + cut_V2 = mkV2 "sik" ; + dance_V = mkV "dans" ; + decide_V = mkV "nqum" ; + defeat_V = mkV "nqob" ; + defeat_V2 = mkV2 "nqob" ; + demolish_V = mkV "diliz" ; + demolish_V2 = mkV2 "diliz" ; + descend_V = mkV "ehl" ; + develop_V = mkV "thuthuk" ; + disappear_V = mkV "nyamalal" ; + disappoint_V = mkV "dumaz" ; + disappoint_V2 = mkV2 "dumaz" ; + do_V = mkV "enz" ; + do_V2 = mkV2 "enz" ; + draw_V = mkV "dweb" ; + draw_V2 = mkV2 "dweb" ; + drink_V = mkV "phuz" ; + drink_V2 = mkV2 "phuz" ; + drive_V = mkV "shayel" ; + drive_V2 = mkV2 "shayel" ; + drizzle_V = mkV "khiz" ; + drown_V = mkV "minz" ; + dry_V = mkV "omis" ; + dry_V2 = mkV2 "omis" ; + earn_V = mkV "hol" ; + earn_V2 = mkV2 "hol" ; + eat_V = mkV "dl" ; + eat_V2 = mkV2 "dl" ; + embrace_V = mkV "gon" ; + embrace_V2 = mkV2 "gon" ; + encourage_V = mkV "khuthaz" ; + encourage_V2 = mkV2 "khuthaz" ; + enjoy_V = mkV "jabulel" ; + enjoy_V2 = mkV2 "jabulel" ; + enter_V = mkV "ngen" ; + envy_V = mkV "hawukel" ; + envy_V2 = mkV2 "hawukel" ; + escape_V = mkV "sind" ; + estimate_V = mkV "linganis" ; + estimate_V2 = mkV2 "linganis" ; + examine_V = mkV "popol" ; + examine_V2 = mkV2 "popol" ; + excuse_V = mkV "xolel" ; + excuse_V2 = mkV2 "xolel" ; + exercise_V = mkV "elul" ; + exercise_V2 = mkV2 "elul" ; + exit_V = mkV "phum" ; + fail_V = mkV "feyil" ; + fail_V2 = mkV2 "feyil" ; + fall_V = mkV "w" ; + feed_1_V = mkV "dlis" ; + feed_1_V2 = mkV2 "dlis" ; + feed_2_V = mkV "funz" ; + feed_2_V2 = mkV2 "funz" ; + fight_V = mkV "lw" ; + fill_V = mkV "gcwaslis" ; + fill_V2 = mkV2 "gcwaslis" ; + find_V = mkV "thol" ; + find_V2 = mkV2 "thol" ; + fine_V = mkV "hlawulis" ; + fine_V2 = mkV2 "hlawulis" ; + fish_V = mkV "dob" ; + fish_V2 = mkV2 "dob" ; + flower_V = mkV "qhakaz" ; + flow_V = mkV "gobhoz" ; + fly_V = mkV "ndiz" ; + fold_V = mkV "song" ; + fold_V2 = mkV2 "song" ; + forget_V = mkV "khohlw" ; + forget_V2 = mkV2 "khohlw" ; + forgive_1_V = mkV "xolel" ; + forgive_1_V2 = mkV2 "xolel" ; + forgive_2_V = mkV "thethelel" ; + forgive_2_V2 = mkV2 "thethelel" ; + frown_V = mkV "hwaqabal" ; + fry_V = mkV "thos" ; + fry_V2 = mkV2 "thos" ; + get_V = mkV "thol" ; + get_V2 = mkV2 "thol" ; + give_1_V = mkV "nik" ; + give_1_V2 = mkV2 "nik" ; + give_2_V = mkV "ph" ; + give_2_V2 = mkV2 "ph" ; + go_V = mkV "hamb" ; + go_home_V = mkV "goduk" ; + go_to_V = mkV "y" ; + grab_V = mkV "phuc" ; + grab_V2 = mkV2 "phuc" ; + greet_V = mkV "bingelel" ; + greet_V2 = mkV2 "bingelel" ; + grin_V = mkV "sinek" ; + groan_1_V = mkV "gqum" ; + groan_2_V = mkV "bubul" ; + grow_V = mkV "khul" ; + grow_V2 = mkV2 "milis" ; + growl_V = mkV "gwavum" ; + grumble_V = mkV "khonond" ; + guess_V = mkV "qagel" ; + hang_V = mkV "nek" ; + hang_V2 = mkV2 "nek" ; + happen_V = mkV "enzek" ; + hate_V = mkV "zond" ; + hate_V2 = mkV2 "zond" ; + help_V = mkV "siz" ; + help_V2 = mkV2 "siz" ; + hide_V = mkV "fihl" ; + hide_V2 = mkV2 "fihl" ; + hire_V = mkV "qash" ; + hire_V2 = mkV2 "qash" ; + hit_V = mkV "shay" ; + hit_V2 = mkV2 "shay" ; + hold_V = mkV "bamb" ; + hold_V2 = mkV2 "bamb" ; + hope_V = mkV "themb" ; + hunt_V = mkV "zingel" ; + hunt_V2 = mkV2 "zingel" ; + hurry_V = mkV "sheshis" ; + hurry_V2 = mkV2 "sheshis" ; + hurt_V = mkV "limaz" ; + hurt_V2 = mkV2 "limaz" ; + indicate_V = mkV "khombis" ; + indicate_V2 = mkV2 "khombis" ; + inject_V = mkV "jov" ; + inject_V2 = mkV2 "jov" ; + inquire_V = mkV "buz" ; + inquire_V2 = mkV2 "buz" ; + insert_V = mkV "fak" ; + insert_V2 = mkV2 "fak" ; + interrupt_V = mkV "phazamis" ; + interrupt_V2 = mkV2 "phazamis" ; + invite_V = mkV "mem" ; + invite_V2 = mkV2 "mem" ; + iron_V = mkV "ayin" ; + iron_V2 = mkV2 "ayin" ; + irritate_1_V = mkV "cunul" ; + irritate_1_V2 = mkV2 "cunul" ; + irritate_2_V = mkV "casul" ; + irritate_2_V2 = mkV2 "casul" ; + joke_V = mkV "tekul" ; + jump_V = mkV "gxum" ; + keep_V = mkV "gcin" ; + keep_V2 = mkV2 "gcin" ; + kick_V = mkV "khahlel" ; + kick_V2 = mkV2 "khahlel" ; + kill_V = mkV "bulal" ; + kill_V2 = mkV2 "bulal" ; + knock_V = mkV "ngqongqoz" ; + know_V = mkV "az" "azi" ; + know_V2 = mkV2 "az" "azi" ; + laugh_V = mkV "hlek" ; + lead_V = mkV "hol" ; + lead_V2 = mkV2 "hol" ; + learn_V = mkV "fund" ; + leave_behind_V = mkV "shiy" ; + leave_behind_V2 = mkV2 "shiy" ; + leave_V = mkV "hamb" ; + lend_V = mkV "bolek" ; + lend_V2 = mkV2 "bolek" ; + lift_V = mkV "phakamis" ; + lift_V2 = mkV2 "phakamis" ; + like_V = mkV "thand" ; + like_V2 = mkV2 "thand" ; + listen_V = mkV "lalel" ; + listen_to_V = mkV "lalel" ; + listen_to_V2 = mkV2 "lalel" ; + reside_V = mkV "hlal" ; + load_V = mkV "layish" ; + load_V2 = mkV2 "layish" ; + look_V = mkV "bhek" ; + seek_V = mkV "fun" ; + seek_V2 = mkV2 "fun" ; + love_V = mkV "thand" ; + love_V2 = mkV2 "thand" ; + make_V = mkV "enz" ; + make_V2 = mkV2 "enz" ; + manage_V = mkV "phath" ; + manage_V2 = mkV2 "phath" ; + mend_V = mkV "khand" ; + mend_V2 = mkV2 "khand" ; + mourn_V = mkV "zil" ; + move_house_V = mkV "thuth" ; + mow_V = mkV "gund" ; + mow_V2 = mkV2 "gund" ; + need_V = mkV "ding" ; + need_V2 = mkV2 "ding" ; + notice_V = mkV "phawul" ; + notice_V2 = mkV2 "phawul" ; + notify_V = mkV "azis" ; + notify_V2 = mkV2 "azis" ; + obey_V = mkV "lalel" ; + obey_V2 = mkV2 "lalel" ; + obtain_V = mkV "thol" ; + obtain_V2 = mkV2 "thol" ; + occur_V = mkV "enzek" ; + open_V = mkV "vul" ; + open_V2 = mkV2 "vul" ; + oppress_V = mkV "cindezel" ; + oppress_V2 = mkV2 "cindezel" ; + order_V = mkV "od" ; + order_V2 = mkV2 "od" ; + pack_V = mkV "pakish" ; + pack_V2 = mkV2 "pakish" ; + paint_V = mkV "pend" ; + paint_V2 = mkV2 "pend" ; + park_V = mkV "pak" ; + park_V2 = mkV2 "pak" ; + pass_1_V = mkV "phas" ; + pass_1_V2 = mkV2 "phas" ; + pass_2_V = mkV "phumelel" ; + pass_2_V2 = mkV2 "phumelel" ; + pass_3_V = mkV "dlul" ; + pass_3_V2 = mkV2 "dlul" ; + pay_someone_V = mkV "khokhel" ; + pay_someone_V2 = mkV2 "khokhel" ; + pay_something_V = mkV "khokh" ; + pay_something_V2 = mkV2 "khokh" ; + peel_V = mkV "cwecw" ; + peel_V2 = mkV2 "cwecw" ; + permit_V = mkV "vumel" ; + permit_V2 = mkV2 "vumel" ; + perspire_V = mkV "juluk" ; + phone_V = mkV "fonel" ; + phone_V2 = mkV2 "fonel" ; + pick_V = mkV "kh" ; + pick_V2 = mkV2 "kh" ; + plant_V = mkV "tshal" ; + plant_V2 = mkV2 "tshal" ; + play_V = mkV "dlal" ; + play_V2 = mkV2 "dlal" ; + polish_V = mkV "pholish" ; + polish_V2 = mkV2 "pholish" ; + pollute_V = mkV "ngcolis" ; + pollute_V2 = mkV2 "ngcolis" ; + postpone_V = mkV "hlehlis" ; + postpone_V2 = mkV2 "hlehlis" ; + post_V = mkV "pos" ; + post_V2 = mkV2 "pos" ; + pour_V = mkV "thel" ; + pour_V2 = mkV2 "thel" ; + prepare_V = mkV "lungis" ; + prepare_V2 = mkV2 "lungis" ; + pretend_V = mkV "zenzis" ; + pretend_V2 = mkV2 "zenzis" ; + prevent_1_V = mkV "vimbel" ; + prevent_1_V2 = mkV2 "vimbel" ; + prevent_2_V = mkV "vimb" ; + prevent_2_V2 = mkV2 "vimb" ; + promise_V = mkV "thembis" ; + promise_V2 = mkV2 "thembis" ; + propose_V = mkV "phakamis" ; + propose_V2 = mkV2 "phakamis" ; + protect_V = mkV "vikel" ; + protect_V2 = mkV2 "vikel" ; + pull_V = mkV "dons" ; + pull_V2 = mkV2 "dons" ; + pump_V = mkV "mpomp" ; + pump_V2 = mkV2 "mpomp" ; + punish_V = mkV "jezis" ; + punish_V2 = mkV2 "jezis" ; + put_V = mkV "bek" ; + put_V2 = mkV2 "bek" ; + put_out_V = mkV "cim" ; + put_out_V2 = mkV2 "cim" ; + quieten_V = mkV "thulis" ; + quieten_V2 = mkV2 "thulis" ; + rain_V = mkV "n" ; + raise_up_V = mkV "phakamis" ; + raise_up_V2 = mkV2 "phakamis" ; + raise_V = mkV "khuphul" ; + raise_V2 = mkV2 "khuphul" ; + rape_V = mkV "dlwengul" ; + rape_V2 = mkV2 "dlwengul" ; + read_V = mkV "fund" ; + read_V2 = mkV2 "fund" ; + receive_V = mkV "thol" ; + receive_V2 = mkV2 "thol" ; + recognise_V = mkV "khumbul" ; + recognise_V2 = mkV2 "khumbul" ; + reduce_V = mkV "nciphis" ; + reduce_V2 = mkV2 "nciphis" ; + reject_V = mkV "enqab" ; + reject_V2 = mkV2 "enqab" ; + remain_V = mkV "sele" ; + remember_V = mkV "khumbul" ; + remember_V2 = mkV2 "khumbul" ; + remind_V = mkV "khumbuz" ; + remind_V2 = mkV2 "khumbuz" ; + remove_V = mkV "sus" ; + remove_V2 = mkV2 "sus" ; + rent_V = mkV "qash" ; + rent_V2 = mkV2 "qash" ; + repair_V = mkV "lungis" ; + repair_V2 = mkV2 "lungis" ; + repeat_V = mkV "phind" ; + repeat_V2 = mkV2 "phind" ; + request_V = mkV "cel" ; + request_V2 = mkV2 "cel" ; + require_V = mkV "swel" ; + require_V2 = mkV2 "swel" ; + rescue_V = mkV "sindis" ; + rescue_V2 = mkV2 "sindis" ; + resemble_V = mkV "fuz" ; + resemble_V2 = mkV2 "fuz" ; + respect_V = mkV "hloniph" ; + respect_V2 = mkV2 "hloniph" ; + rest_V = mkV "phumul" ; + return_from_V = mkV "buy" ; + return_from_V2 = mkV2 "buy" ; + return_to_V = mkV "buyel" ; + return_to_V2 = mkV2 "buyel" ; + reward_V = mkV "klomel" ; + reward_V2 = mkV2 "klomel" ; + ride_V = mkV "gibel" ; + ride_V2 = mkV2 "gibel" ; + roast_V = mkV "os" ; + roast_V2 = mkV2 "os" ; + run_away_V = mkV "balek" ; + run_V = mkV "gijim" ; + satisfy_V = mkV "anelis" ; + satisfy_V2 = mkV2 "anelis" ; + save_V = mkV "ong" ; + save_V2 = mkV2 "ong" ; + say_V = mkV "th thi" ; + scare_V = mkV "esabis" ; + scare_V2 = mkV2 "esabis" ; + scold_V = mkV "thethis" ; + scold_V2 = mkV2 "thethis" ; + scratch_V = mkV "klwebh" ; + scratch_V2 = mkV2 "klwebh" ; + scream_V = mkV "klabalas" ; + scrub_V = mkV "kolobh" ; + scrub_V2 = mkV2 "kolobh" ; + see_V = mkV "bon" ; + see_V2 = mkV2 "bon" ; + sell_1_V = mkV "thengis" ; + sell_1_V2 = mkV2 "thengis" ; + sell_2_V = mkV "dayis" ; + sell_2_V2 = mkV2 "dayis" ; + send_V = mkV "thum" ; + send_V2 = mkV2 "thum" ; + separate_V = mkV "ahlukanis" ; + separate_V2 = mkV2 "ahlukanis" ; + sew_V = mkV "thung" ; + sew_V2 = mkV2 "thung" ; + shake_hands_V = mkV "xhawul" ; + share_V = mkV "abelan" ; + share_V2 = mkV2 "abelan" ; + sharpen_V = mkV "lol" ; + sharpen_V2 = mkV2 "lol" ; + shave_V = mkV "shef" ; + shave_V2 = mkV2 "shef" ; + shoot_V = mkV "dubul" ; + shoot_V2 = mkV2 "dubul" ; + shout_V = mkV "memez" ; + show_V = mkV "khombis" ; + show_V2 = mkV2 "khombis" ; + sign_V = mkV "sayin" ; + sign_V2 = mkV2 "sayin" ; + sing_V = mkV "cul" ; + sing_V2 = mkV2 "cul" ; + smell_V = mkV "nuk" ; + smell_V2 = mkV2 "nuk" ; + smoke_V = mkV "bhem" ; + smoke_V2 = mkV2 "bhem" ; + snore_V = mkV "hon" ; + snow_V = mkV "khithik" ; + soften_V = mkV "thambis" ; + soften_V2 = mkV2 "thambis" ; + solve_V = mkV "xazulul" ; + solve_V2 = mkV2 "xazulul" ; + speak_V = mkV "khulum" ; + spill_V = mkV "chith" ; + spill_V2 = mkV2 "chith" ; + spread_V = mkV "gcob" ; + spread_V2 = mkV2 "gcob" ; + stand_up_V = mkV "sukum" ; + stay_V = mkV "sal" ; + steal_V = mkV "ntshontsh" ; + steal_V2 = mkV2 "ntshontsh" ; + sting_V = mkV "ntinyel" ; + sting_V2 = mkV2 "ntinyel" ; + study_V = mkV "fund" ; + study_V2 = mkV2 "fund" ; + halt_V = mkV "mis" ; + halt_V2 = mkV2 "mis" ; + succeed_V = mkV "phumelel" ; + suffer_V = mkV "hluphek" ; + support_V = mkV "sekel" ; + support_V2 = mkV2 "sekel" ; + surprise_V = mkV "mangalis" ; + surprise_V2 = mkV2 "mangalis" ; + swallow_V = mkV "gwiny" ; + swallow_V2 = mkV2 "gwiny" ; + sweat_V = mkV "juluk" ; + sweep_V = mkV "shanyel" ; + sweep_V2 = mkV2 "shanyel" ; + swim_V = mkV "bhukud" ; + switch_off_V = mkV "cim" ; + switch_off_V2 = mkV2 "cim" ; + switch_on_1_V = mkV "qhebez" ; + switch_on_1_V2 = mkV2 "qhebez" ; + switch_on_2_V = mkV "layith" ; + switch_on_2_V2 = mkV2 "layith" ; + switch_on_3_V = mkV "vul" ; + switch_on_3_V2 = mkV2 "vul" ; + take_out_V = mkV "khiph" ; + take_out_V2 = mkV2 "khiph" ; + take_1_V = mkV "thath" ; + take_1_V2 = mkV2 "thath" ; + take_2_V = mkV "s" ; + take_2_V2 = mkV2 "s" ; + talk_V = mkV "khulum" ; + taste_like_V = mkV "nambithek" ; + taste_like_V2 = mkV2 "nambithek" ; + taste_V = mkV "nambith" ; + taste_V2 = mkV2 "nambith" ; + teach_V = mkV "fundis" ; + teach_V2 = mkV2 "fundis" ; + tear_V = mkV "dabul" ; + tear_V2 = mkV2 "dabul" ; + tell_V = mkV "tshel" ; + tell_V2 = mkV2 "tshel" ; + thank_V = mkV "bong" ; + thank_V2 = mkV2 "bong" ; + think_V = mkV "cabang" ; + threaten_V = mkV "songel" ; + threaten_V2 = mkV2 "songel" ; + throw_V = mkV "phons" ; + throw_V2 = mkV2 "phons" ; + thunder_V = mkV "dum" ; + tie_V = mkV "boph" ; + tie_V2 = mkV2 "boph" ; + toast_V = mkV "thos" ; + toast_V2 = mkV2 "thos" ; + touch_V = mkV "thint" ; + touch_V2 = mkV2 "thint" ; + translate_V = mkV "humush" ; + translate_V2 = mkV2 "humush" ; + transport_1_V = mkV "yis" ; + transport_1_V2 = mkV2 "yis" ; + transport_2_V = mkV "hambis" ; + transport_2_V2 = mkV2 "hambis" ; + trust_V = mkV "themb" ; + trust_V2 = mkV2 "themb" ; + try_V = mkV "zam" ; + try_V2 = mkV2 "zam" ; + turn_around_V = mkV "phenduk" ; + turn_V = mkV "phendul" ; + turn_V2 = mkV2 "phendul" ; + understand_V = mkV "qond" ; + understand_V2 = mkV2 "qond" ; + unpack_V = mkV "khiph" ; + unpack_V2 = mkV2 "khiph" ; + use_V = mkV "sebenzis" ; + use_V2 = mkV2 "sebenzis" ; + vaccinate_V = mkV "gom" ; + vaccinate_V2 = mkV2 "gom" ; + visit_V = mkV "vakashel" ; + visit_V2 = mkV2 "vakashel" ; + vomit_1_V = mkV "hlanz" ; + vomit_2_V = mkV "buyis" ; + vote_V = mkV "vot" ; + wake_V = mkV "vus" ; + wake_V2 = mkV2 "vus" ; + walk_V = mkV "hamb" ; + want_V = mkV "fun" ; + want_V2 = mkV2 "fun" ; + warm_V = mkV "fudumez" ; + warm_V2 = mkV2 "fudumez" ; + warn_V = mkV "xwayis" ; + warn_V2 = mkV2 "xwayis" ; + wash_V = mkV "gez" ; + wash_V2 = mkV2 "gez" ; + watch_V = mkV "buk" ; + watch_V2 = mkV2 "buk" ; + water_V = mkV "chelel" ; + water_V2 = mkV2 "chelel" ; + wear_V = mkV "gqok" ; + wear_V2 = mkV2 "gqok" ; + weep_V = mkV "lil" ; + weigh_V = mkV "kal" ; + weigh_V2 = mkV2 "kal" ; + win_V = mkV "win" ; + wipe_V = mkV "sul" ; + wipe_V2 = mkV2 "sul" ; + wish_V = mkV "fis" ; + wish_V2 = mkV2 "fis" ; + work_V = mkV "sebenz" ; + wrap_V = mkV "song" ; + wrap_V2 = mkV2 "song" ; + write_V = mkV "bhal" ; + write_V2 = mkV2 "bhal" ; + write_to_V = mkV "bhalel" ; + write_to_V2 = mkV2 "bhalel" ; + yawn_V = mkV "zamul" ; + yell_V = mkV "bangalas" ; + + -- adjectivals + colourful_R = mkRelA "makhwezikhwezi" ; + big_A = mkA "khulu" ; +} From 263ee4319d2d1fb4466d5eff9025eb346f70b133 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 2 May 2022 16:53:01 +0800 Subject: [PATCH 088/141] (Est) Fix object case for see_V2 --- src/estonian/LexiconEst.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index 2e5177b2c..ee94610ab 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -160,7 +160,7 @@ lin science_N = mkN "teadus" ; sea_N = mkN "meri" "mere" "merd" "merre" "merede" "meresid" ; seek_V2 = mkV2 (mkV "otsima") cpartitive ; - see_V2 = mkV2 (mkV "nägema" "näha") ; + see_V2 = mkV2 (mkV "nägema" "näha") cpartitive ; sell_V3 = mkV3 (mkV "müüma" "müüa" "müüb" "müüakse" "müüge" "müüs" "müünud" "müüdud") accPrep callative ; send_V3 = mkV3 (mkV "saatma") accPrep callative ; sheep_N = mkN "lammas" "lamba" "lammast" ; From f1e14bbd5f8546d8b638ff045c0f4bc13ce00458 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 2 May 2022 20:39:03 +0800 Subject: [PATCH 089/141] (Est) Improve interrogative agreement --- src/estonian/CatEst.gf | 6 ++-- src/estonian/QuestionEst.gf | 63 ++++++++++++++++------------------- src/estonian/ResEst.gf | 4 ++- src/estonian/StructuralEst.gf | 1 + 4 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 945f55d13..433a5e029 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -22,7 +22,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ; IP = ResEst.IPhrase ; IComp = {s : Agr => Str} ; - IDet = {s : Case => Str ; n : Number ; isNum : Bool} ; + IDet = ResEst.IDeterminer ; IQuant = {s : Number => Case => Str} ; -- Relative @@ -98,8 +98,8 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { NP = linNP (NPCase Nom) ; CN = linCN (NCase Sg Nom) ; V,VS,VQ = linV ; - V2,VA,V2S,V2Q = linV2 ; - + V2,VA,V2S,V2Q,V3 = linV2 ; + IDet = linIDet ; } diff --git a/src/estonian/QuestionEst.gf b/src/estonian/QuestionEst.gf index 0df94f21c..01335b101 100644 --- a/src/estonian/QuestionEst.gf +++ b/src/estonian/QuestionEst.gf @@ -44,53 +44,48 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { postmod = ip.postmod ++ adv.s ; } ; --- The computation of $ncase$ is a special case of that in $NounEst.DetCN$, --- since we don't have possessive suffixes or definiteness. ---- It could still be nice to have a common oper... +-- The computation of $IdetCN$ is a special case of that in $NounEst.DetCN$, +-- because the interrogative doesn't agree. - IdetCN idet cn = let n = idet.n in emptyIP ** { + IdetCN idet cn = emptyIP ** { s = \\c => let - k : Case = npform2case n c ; - icase : Case = Nom ; --case k of { --mis kassiga - -- (Ess|Abess|Comit|Termin) => Gen ; - -- _ => k - -- } ; - ncase : NForm = case of { - => NCase Sg Part ; -- mitkä kolme kytkintä - <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi - _ => NCase n k -- mitkä kytkimet + k : Case = npform2case n c ; + ncase : NForm = case of { + => NCase Sg Part ; -- TODO estonian example (Fin was "mitkä kolme kytkintä") + <_, True> => NCase Sg k ; -- TODO estonian example (Fin was "miksi kolmeksi kytkimeksi") + _ => NCase n k -- TODO estonian example (Fin was "mitkä kytkimet") } in - idet.s ! icase ++ cn.s ! ncase ; - n = n - } ; + idet.s ! Nom ++ -- mis + idet.post ! k ++ -- kolme + cn.s ! ncase ; -- kassi+ga + n = idet.n ; -- needed for agreement, "mis kolm kassi mängivad" + } where { + n : Number = case idet.isNum of { + True => Sg ; + False => idet.n } ; + } ; IdetIP idet = let n = idet.n in emptyIP ** { s = \\c => let k = npform2case n c ; in - idet.s ! k ; + case idet.isNum of { + True => idet.s ! Nom ++ idet.post ! k ; + False => idet.s ! k ++ idet.post ! k + } ; + n = n } ; - - IdetQuant idet num = - let - n = num.n ; - isn = num.isNum - in { - s = \\k => - let - ncase = case of { - => NCase Sg Part ; -- mitkä kolme kytkintä - <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi - _ => NCase n k -- mitkä kytkimet - } - in - idet.s ! n ! k ++ num.s ! Sg ! k ; - n = n ; - isNum = isn + -- The quant and the num may be inflected in different cases: + -- * mis kolme koeraga, mis kolmega + -- * millega + -- * mille 3-ga (this would be the preferable output, but currently outputs "mis 3ga") + IdetQuant idet num = num ** { + s = \\c => idet.s ! num.n ! c ; + post = \\c => num.s ! Sg ! c ; } ; AdvIAdv i a = {s = i.s ++ a.s} ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 5e7f45c6b..a6c2e9b3d 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -806,7 +806,9 @@ oper isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? } ; - IDeterminer : Type = {s : Case => Str ; n : Number ; isNum : Bool} ; + IDeterminer : Type = {s, post : Case => Str ; n : Number ; isNum : Bool} ; + + linIDet : IDeterminer -> Str = \idet -> idet.s ! Nom ++ idet.post ! Nom ; heavyDet : PDet -> Determiner = \d -> d ** {sp = d.s} ; PDet : Type = { diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index b5e2857a1..fc2b8db1b 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -48,6 +48,7 @@ concrete StructuralEst of Structural = CatEst ** how8much_IAdv = ss "kui palju" ; how8many_IDet = { s = \\c => "kui" ++ (mkN "mitu" "mitme" "mitut" "TODO" "TODO" "TODO").s ! NCase Sg c ; + post = \\c => [] ; n = Sg ; isNum = False } ; From f67c3ec838117fb299718c715709ec82c8070315 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 2 May 2022 21:02:57 +0800 Subject: [PATCH 090/141] (Est) New test cases --- src/estonian/unittest/comitative.gftest | 90 ++++++++----------- .../unittest/interrogative-agreement.gftest | 52 +++++++++++ 2 files changed, 87 insertions(+), 55 deletions(-) create mode 100644 src/estonian/unittest/interrogative-agreement.gftest diff --git a/src/estonian/unittest/comitative.gftest b/src/estonian/unittest/comitative.gftest index 249b4857e..92225317c 100644 --- a/src/estonian/unittest/comitative.gftest +++ b/src/estonian/unittest/comitative.gftest @@ -12,11 +12,11 @@ Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumSg) (UseN dog_N)))) LangEng: I play with this dog -LangEst: mina mängin koos selle koera &+ ga +LangEst: mina mängin koos selle koera BIND ga Lang: PredVP (UsePron we_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumPl) (UseN dog_N)))) LangEng: we play with these dogs -LangEst: meie mängime koos nende koerade &+ ga +LangEst: meie mängime koos nende koerte BIND ga -- Interrogative versions @@ -33,37 +33,32 @@ LangEst: mis keelt sina räägid Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumSg) (UseN dog_N))) (PredVP (UsePron youSg_Pron) (UseV play_V)) LangEng: with which dog do you play -LangEst: koos mis koera &+ ga sina mängid +LangEst: koos mis koera BIND ga sina mängid Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumPl) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) LangEng: with which dogs do you play -LangEst: koos mis koerade &+ ga teie mängite +LangEst: koos mis koerte BIND ga teie mängite -- Adding a number, does it affect the behaviour of -- a) suffix attachment? b) agreement of interrogative? Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N)))) LangEng: I play with these three dogs -LangEst: mina mängin koos nende kolme koera &+ ga +LangEst: mina mängin koos nende kolme koera BIND ga Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N)))) LangEng: I play with these 3 dogs -LangEst: mina mängin koos nende 3 koera &+ ga +LangEst: mina mängin koos nende 3 koera BIND ga Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N))) (PredVP (UsePron youPol_Pron) (UseV play_V)) LangEng: with which three dogs do you play --- Which one is best? --- 1) koos mis kolm koeraga teie mängite --- 2) koos mis kolme koeraga teie mängite --- 3) koos mille kolme koeraga teie mängite --- 4) All are ungrammatical (provide more grammatical translation that is still compositional, not paraphrase) +LangEst: koos mis kolme koera BIND ga teie mängite Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) LangEng: with which 3 dogs do you play --- Which one is best? --- 1) koos mis 3 koeraga teie mängite --- 2) koos mille 3 koeraga teie mängite --- 3) All are ungrammatical (provide more grammatical translation) +LangEst: koos mis 3 koera BIND ga teie mängite +-- Technically the version below is better, but we'd need to add another param and who wants that :-P +-- LangEst: koos mille 3 koera BIND ga teie mängite ------------------------------------------------------------------------------------------ -- Now we skip the content word, and make the determiner (possibly with number) into NP/IP @@ -72,75 +67,60 @@ LangEng: with which 3 dogs do you play -- No number, case attaches to determiner/interrogative Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant NumPl)))) LangEng: I play with these -LangEst: mina mängin koos nende &+ ga +LangEst: mina mängin koos nende BIND ga Lang: QuestIAdv (PrepIP with_Prep whoSg_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) LangEng: with whom do you sing -LangEst: koos kelle &+ ga sina laulad +LangEst: koos kelle BIND ga sina laulad Lang: QuestIAdv (PrepIP with_Prep whoPl_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) LangEng: with whom do you sing -LangEst: koos kellede &+ ga sina laulad +LangEst: koos kellede BIND ga sina laulad -- Adding a number to a determiner, does this affect the comitative suffix placement? -- Context of the sentence is an ellipsis, "I sing with these 3 (singers)" Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) LangEng: I sing with these three --- Which one is better? --- 1) mina laulan koos nende kolmega --- 2) mina laulan koos nendega kolme +LangEst: mina laulan koos nende kolme BIND ga +-- Orthography should be 3-ga, but this can be easily postprocessed in applications, so I don't bother Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumDigits (IDig D_3))))))) LangEng: I sing with these 3 -LangEst: mina laulan koos nende 3 &+ ga --- Which one is better? --- 1) mina laulan koos nende 3ga --- 2) mina laulan koos nendega 3 +LangEst: mina laulan koos nende 3 BIND ga -- Adding a number to an interrogative, how does suffix placement + agreement work now? Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) LangEng: with which three do you sing --- Which one is best? --- 1) koos millede kolmega sina laulad --- 2) koos mille kolmega sina laulad --- 3) koos mis kolmega sina laulad --- 4) koos millega kolme sina laulad --- 5) koos milledega kolme sina laulad --- 6) All are ungrammatical (provide more grammatical translation) +LangEst: koos mis kolme BIND ga sina laulad Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) LangEng: with which 3 do you sing --- Which one is best? --- 1) koos millede 3ga sina laulad --- 2) koos mille 3ga sina laulad --- 3) koos mis 3ga sina laulad --- 4) koos millega 3 sina laulad --- 5) koos milledega 3 sina laulad --- 6) All are ungrammatical (provide more grammatical translation) - +LangEst: koos mis 3 BIND ga sina laulad +-- Also ok: +-- LangEst: koos mille 3 BIND ga sina laulad -- Adding premodifiers to the number, does that change anything? --- Weird sentence, but imagine like, you point to a group of people, "I sing with these at most three", --- like you are the soloist and want at most 3 backup singers, who are among a group you are pointing at. --- If there was no ellipsis, the phrase would just be "koos nende kuni kolme lauljatega"? +-- None of the alternatives sounds actually good, so we just use the same strategy as interrogative + number +-- This can be one of the cases where some trees in the RGL don't make sense, and so application grammarians should use other trees that make more sense. +-- Leaving these ungrammatical/nonsensical edge cases here just for documentation, and to catch any unintended side effects of later tweaks to the grammar. Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))))) LangEng: I sing with these at most three -LangEst: mina laulan koos nende kuni kolme &+ ga --- Which one is better? --- 1) mina laulan koos nende kuni kolmega --- 2) mina laulan koos nendega kuni kolme +LangEst: mina laulan koos nende kuni kolme BIND ga Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) LangEng: with which at most three do you sing -LangEst: koos millede kuni kolme &+ ga sina laulad --- Which one is best? --- 1) koos millede kuni kolmega sina laulad --- 2) koos mille kuni kolmega sina laulad --- 3) koos mis kuni kolmega sina laulad --- 4) koos millega kuni kolme sina laulad --- 5) koos milledega kuni kolme sina laulad --- 6) All are ungrammatical (provide more grammatical translation) +LangEst: koos mis kuni kolme BIND ga sina laulad +-- Appendix: if you really want to ask "with which at most three do you sing", you can use these strategies + +-- koos kellega (kuni kolmega) sina laulad? -- this one is by far the best +-- koos kellega (kuni kolm) sina laulad? -- +-- koos kellega (kuni 3) sina laulad? -- +-- koos kellega (kuni 3-ga) sina laulad? -- +-- Now I get it, the sentence doesn't have any asking verb, "kellega koos sina laulad" VS "kellega koos sina *tahad* laulda?" +-- If you want the answerer to specify the up-to-three to sing together with, then you have to let specify also whether-or-not the answerer even wants to sing :-) +-- *) kuni kolmega nendest, kellega sina laulaud? -- this is correct but just weird +-- *) kuni kolmega nendest, kellega sina tahad laulda? -- this is correct and understandable \ No newline at end of file diff --git a/src/estonian/unittest/interrogative-agreement.gftest b/src/estonian/unittest/interrogative-agreement.gftest new file mode 100644 index 000000000..61281d7d6 --- /dev/null +++ b/src/estonian/unittest/interrogative-agreement.gftest @@ -0,0 +1,52 @@ +-- Test cases related to the agreement of interrogative pronouns +-- for tests about interrogative agreement in comitative, see comitative.gftest + +-- As object: case of the numberal is determined by the verb's object case + +-- For comparison, the Finnish linearisation is +-- LangFin: mitkä kahdeksan opiskelijaa sinä näet +-- Estonian partitive here comes from see_V2 +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))))))) (UseN student_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a see_V2)) +LangEng: which eight students do you see +LangEst: mis kaheksat tudengit sina näed + +-- In Finnish, partitive comes from the number (mitkä kahdeksan opiskelijaa sinä myyt opettajille) +-- In Estonian, we have eight and student both in genitive. +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))))))) (UseN student_N)) (SlashVP (UsePron youSg_Pron) (Slash3V3 sell_V3 (DetCN (DetQuant DefArt NumPl) (UseN teacher_N)))) +LangEng: which eight students do you sell to the teachers +LangEst: mis kaheksa tudengi sina müüd õpetajatele + +-- Both Finnish and Estonian inflect eight and student, Finnish also inflects which (mistä kahdeksasta opiskelijasta sinä pidät) +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))))))) (UseN student_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a like_V2)) +LangEng: which eight students do you like +LangEst: mis kaheksast tudengist sina pead lugu + +-- For comparison, this is Finnish partitive coming from the verb: the word "eight" is also inflected +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))))))) (UseN student_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a love_V2)) +LangEng: which eight students do you love +LangEst: mis kaheksat tudengit sina armastad +-- LangFin: mitä kahdeksaa opiskelijaa sinä rakastat + + +-- As subject + +-- No numeral in IDet +Lang: QuestVP (IdetCN (IdetQuant which_IQuant NumSg) (UseN horse_N)) (UseV play_V) +LangEng: which horse plays +LangEst: mis hobune mängib + +Lang: QuestVP (IdetCN (IdetQuant which_IQuant NumPl) (UseN horse_N)) (UseV play_V) +LangEng: which horses play +LangEst: mis hobused mängivad + +-- With numeral + +-- Number 1 doesn't behave like numerals +Lang: QuestVP (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01))))))) (UseN horse_N)) (UseV play_V) +LangEng: which one horse plays +LangEst: mis üks hobune mängib + + +Lang: QuestVP (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))))))) (UseN horse_N)) (UseV play_V) +LangEng: which eight horses play +LangEst: mis kaheksa hobust mängivad From f58d0358cc67893c72da874e8e4beb8f04187fc4 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 10 May 2022 08:21:22 +0200 Subject: [PATCH 091/141] fixed imperative prefix --- src/zulu/ResZul.gf | 5 ++++ src/zulu/SentenceZul.gf | 53 ++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index a2e18f45f..7cf7c3ade 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -1204,6 +1204,11 @@ resource ResZul = open Prelude,Predef,ParamX in { -- FutTense => subjConcLookup ! agr ! SC ++BIND++ "zobe" -- } ; + impPref : Polarity -> Str = \pol -> case pol of { + Pos => [] ; + Neg => "u" ++BIND++ "nga" + } ; + icomp_pref : VForm -> Agr -> Str = \vform,agr -> let neg1 = icompNeg1 vform ; diff --git a/src/zulu/SentenceZul.gf b/src/zulu/SentenceZul.gf index 285ab122d..118bba27a 100755 --- a/src/zulu/SentenceZul.gf +++ b/src/zulu/SentenceZul.gf @@ -118,39 +118,38 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { subj = np.s!NFull ; vform_main = VFIndic MainCl p t ; in - subj - ++ (imp_verb_prefix vp p t np.agr) + impPref p ++ vp.s!MainCl!np.agr!p!t ++ vp.iadv ++ vp.comp ++ vp.advs } ; - imp_verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr -> - let - -- vow = case of { - vow = case of { - => False ; -- force the compiler to understand the table - => False ; -- long form ya - - <_,_,PresTense,RC> => False ; - <_,_,PresTense,_> => True ; - -- <_,Pos,PerfTense,RC> => False ; - -- <_,Pos,PerfTense,_> => True ; - <_,_,PastTense,RC> => False ; - <_,_,PastTense,_> => True ; - <_,_,RemPastTense,RC> => False ; - <_,_,RemPastTense,_> => True ; - <_,_,_,_> => False - } ; - vform = VFIndic MainCl p t - in - (negPref vform) - -- ++ (exclSePref vform_main) - ++ (subjConc vform agr vow) - -- ++ (negPref2 vform_main) - -- ++ (tensePref vform) - ; + -- imp_verb_prefix : VP -> Polarity -> BasicTense -> Agr -> Str = \vp,p,t,agr -> + -- let + -- -- vow = case of { + -- vow = case of { + -- => False ; -- force the compiler to understand the table + -- => False ; -- long form ya + -- + -- <_,_,PresTense,RC> => False ; + -- <_,_,PresTense,_> => True ; + -- -- <_,Pos,PerfTense,RC> => False ; + -- -- <_,Pos,PerfTense,_> => True ; + -- <_,_,PastTense,RC> => False ; + -- <_,_,PastTense,_> => True ; + -- <_,_,RemPastTense,RC> => False ; + -- <_,_,RemPastTense,_> => True ; + -- <_,_,_,_> => False + -- } ; + -- vform = VFIndic MainCl p t + -- in + -- (negPref vform) + -- -- ++ (exclSePref vform_main) + -- ++ (subjConc vform agr vow) + -- -- ++ (negPref2 vform_main) + -- -- ++ (tensePref vform) + -- ; cl_with_verb_predicate : NP -> VP -> { s : Polarity => BasicTense => Str } = \np,vp -> { s = \\p,t => From 86fca40ac286a4f7f46910258e3a49fb3f406ed5 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 10 May 2022 08:56:22 +0200 Subject: [PATCH 092/141] fixed imperative prefix (2) --- src/zulu/ResZul.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 7cf7c3ade..6bc277ad6 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -1206,7 +1206,7 @@ resource ResZul = open Prelude,Predef,ParamX in { impPref : Polarity -> Str = \pol -> case pol of { Pos => [] ; - Neg => "u" ++BIND++ "nga" + Neg => "u" ++BIND++ "nga" ++BIND } ; icomp_pref : VForm -> Agr -> Str = \vform,agr -> From 9f3b45bf48c2a8136da3a70c9b9d4f1d07be2811 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 10 May 2022 11:16:26 +0200 Subject: [PATCH 093/141] added additional long forms --- src/zulu/BackwardZul.gf | 4 ++-- src/zulu/CatZul.gf | 2 +- src/zulu/RelativeZul.gf | 10 +++++----- src/zulu/SentenceZul.gf | 28 +++++++++++++++++++--------- src/zulu/VerbExtZul.gf | 22 +++++++++++----------- src/zulu/VerbZul.gf | 10 +++++----- 6 files changed, 43 insertions(+), 33 deletions(-) diff --git a/src/zulu/BackwardZul.gf b/src/zulu/BackwardZul.gf index ef4153391..02b46eb68 100755 --- a/src/zulu/BackwardZul.gf +++ b/src/zulu/BackwardZul.gf @@ -11,7 +11,7 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in { ComplV2 v2 np = { s = table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = (VFIndic MainCl p t) ; tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku- oc = objConc np.agr v2.r v2.syl ; -- [] / m - @@ -25,7 +25,7 @@ concrete BackwardZul of Backward = CatZul ** open ResZul,Prelude,ParamX in { True => tp ++ oc ++ r ++ obj ; False => tp ++ r ++ obj } ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = (VFIndic RelCl p t) ; rc = relConc vform a v2.r ; -- o- / onga- tp = tensePref vform v2.r v2.syl ; -- [] / zo- / zuku- diff --git a/src/zulu/CatZul.gf b/src/zulu/CatZul.gf index af0958193..9606929e6 100755 --- a/src/zulu/CatZul.gf +++ b/src/zulu/CatZul.gf @@ -46,7 +46,7 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] ** -- Verb VP = { - s : CType => Agr => Polarity => BasicTense => Str ; -- TODO: mood + s : CType => Agr => Polarity => BasicTense => Bool => Str ; -- TODO: mood -- oc : Str ; comp : Str ; iadv : Str ; diff --git a/src/zulu/RelativeZul.gf b/src/zulu/RelativeZul.gf index 78dfafd10..8d39669b5 100755 --- a/src/zulu/RelativeZul.gf +++ b/src/zulu/RelativeZul.gf @@ -71,7 +71,7 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { -- ++ (tensePref vform) -- ++ vp.oc -- ++ vp.s!(rform vform_main reqLF) - ++ vp.s!RelCl!a!p!t + ++ vp.s!RelCl!a!p!t!reqLF -- ++ relsuf ++ vp.iadv ++ vp.comp @@ -89,7 +89,7 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { -- naively removed subject rp.s ++ -- pcp ++ - vp.s!RelCl!a!p!t ++ + vp.s!RelCl!a!p!t!False ++ vp.iadv ++ vp.advs } ; @@ -109,7 +109,7 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { -- naively removed subject rp.s ++ -- pcp ++ - vp.s!RelCl!a!p!t ++ + vp.s!RelCl!a!p!t!False ++ vp.iadv ++ vp.advs } ; @@ -124,7 +124,7 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { -- naively removed subject rp.s ++ pcp ++ - vp.s!RelCl!a!p!t ++ + vp.s!RelCl!a!p!t!False ++ vp.iadv ++ vp.advs } ; @@ -140,7 +140,7 @@ concrete RelativeZul of Relative = CatZul ** open ResZul,Prelude,ParamX in { in rp.s ++ -- adjpref ++ - vp.s!RelCl!a!p!t + vp.s!RelCl!a!p!t!False ++ vp.iadv ++ vp.advs } ; diff --git a/src/zulu/SentenceZul.gf b/src/zulu/SentenceZul.gf index 118bba27a..46b2ec707 100755 --- a/src/zulu/SentenceZul.gf +++ b/src/zulu/SentenceZul.gf @@ -12,8 +12,14 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { CopEq => cl_with_eq_cop_predicate np vp ; -- VACompl => cl_with_ap_comp_predicate np vp ; AdvComp => cl_with_adv_comp_predicate np vp ; - (NoComp | VNPCompl) => { - s = \\p,t => np.s!NFull ++ (verb_prefix vp p t np.agr) ++ vp.s!MainCl!np.agr!p!t ++ vp.comp ++ vp.iadv ++ vp.advs ; + (NoComp | VNPCompl) => + let + longform_suffix = case vp.hasComp of { + True => False ; + False => True + } + in { + s = \\p,t => np.s!NFull ++ (verb_prefix vp p t np.agr) ++ vp.s!MainCl!np.agr!p!t!longform_suffix ++ vp.comp ++ vp.iadv ++ vp.advs ; } ; _ => cl_with_verb_predicate np vp } ; @@ -39,8 +45,8 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { in case vp.vptype of { VNPCompl => { s = table { - Pos => vp.s!MainCl!np.agr!Pos!impTense ++ vp.comp ++ vp.iadv ++ vp.advs ; - Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense ++ vp.comp ++ vp.iadv ++ vp.advs + Pos => vp.s!MainCl!np.agr!Pos!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs ; + Neg => "unga" ++ vp.s!MainCl!np.agr!Neg!impTense!False ++ vp.comp ++ vp.iadv ++ vp.advs } } ; @@ -108,7 +114,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { subj = np.s!NFull in subj ++ - vp.s!MainCl!np.agr!p!t + vp.s!MainCl!np.agr!p!t!False ++ vp.comp ++ vp.iadv ++ vp.advs } ; @@ -119,7 +125,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { vform_main = VFIndic MainCl p t ; in impPref p - ++ vp.s!MainCl!np.agr!p!t + ++ vp.s!MainCl!np.agr!p!t!False ++ vp.iadv ++ vp.comp ++ vp.advs @@ -156,10 +162,14 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { let subj = np.s!NFull ; vform_main = VFIndic MainCl p t ; + longform_suffix = case vp.hasComp of { + True => False ; + False => True + } in subj ++ (verb_prefix vp p t np.agr) - ++ vp.s!MainCl!np.agr!p!t + ++ vp.s!MainCl!np.agr!p!t!longform_suffix ++ vp.iadv ++ vp.comp ++ vp.advs @@ -208,7 +218,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { in subj ++ -- pcp ++ - vp.s!MainCl!np.agr!p!t + vp.s!MainCl!np.agr!p!t!False ++ vp.comp ++ vp.iadv ++ vp.advs } ; @@ -239,7 +249,7 @@ concrete SentenceZul of Sentence = CatZul ** open Prelude,ResZul,ParamX in { -- ++ lfya -- -- ++ (tensePref vform_main) -- ++ vp.comp - vp.s!MainCl!np.agr!p!t + vp.s!MainCl!np.agr!p!t!False ++ vp.comp ++ vp.iadv ++ vp.advs } ; diff --git a/src/zulu/VerbExtZul.gf b/src/zulu/VerbExtZul.gf index c3fece207..7cda3cb28 100644 --- a/src/zulu/VerbExtZul.gf +++ b/src/zulu/VerbExtZul.gf @@ -5,14 +5,14 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param CopAP ap = { s = case ap.t of { AdjType => table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; pcp = ap_cop_pref vform a AdjType ; -- u- / uzoba / ube- / waye- / wayenge- adjpref = adjPref a vform ; -- m- cop_base = ap.s!(aformN a) -- khulu in pcp ++ adjpref ++ cop_base ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; rcp = (relConcCop vform a RC) ; -- o- pcp = ap_cop_pref vform a AdjType ; -- [] / -nge- / zoba / -be- / -benge- -waye- / -wayenge- @@ -22,13 +22,13 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param rcp ++ pcp ++ adjpref ++ cop_base } ; RelType => table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; pcp = ap_cop_pref vform a RelType ; -- u- cop_base = ap.s!AF1 -- qotho in pcp ++ cop_base ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; rcp = (relConcCop vform a RC) ; -- o- pcp = ap_cop_pref vform a RelType ; -- [] / -nge- / zoba / -benge- @@ -46,14 +46,14 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param CopNP np = { s = table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; pcp = (id_pre_cop_pref vform a) ; -- u- / uzoba / akazukuba cp = (id_cop_pref np.agr) ; -- ng- cop_base = np.s!NFull -- umfundi in pcp ++ cp ++ cop_base ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; rcp = (relConcCop vform a RC) ; -- o- pcp = (id_pre_cop_pref vform a) ; -- [] / zoba / zukuba @@ -71,14 +71,14 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param CopNPAssoc np = { s = table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; pcp = (assoc_pre_cop_pref vform a) ; -- u- / uzoba cp = (assoc_cop_pref p np.agr) ; -- ne- cop_base = np.s!NReduced -- moto in pcp ++ cp ++ cop_base ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; rcp = (relConcCop vform a RC) ; -- o- pcp = (assoc_pre_cop_pref vform a) ; -- [] / zoba @@ -96,7 +96,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param ComplV2Nonspec v2 np = { s = table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; tp = tensePref vform v2.r v2.syl ; oc = objConc np.agr v2.r v2.syl ; @@ -113,7 +113,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param True => tp ++ oc ++ r ++ obj ; False => tp ++ r ++ obj } ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = (VFIndic RelCl p t) ; rc = relConc vform a v2.r ; tp = tensePref vform v2.r v2.syl ; @@ -141,7 +141,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param } ; CopLoc loc = { - s = loc.s ; + s = \\c,a,p,t,l => loc.s!c!a!p!t ; comp,advs,iadv = [] ; hasComp = True ; r = RC ; diff --git a/src/zulu/VerbZul.gf b/src/zulu/VerbZul.gf index 9ca04676f..575ad9d8c 100755 --- a/src/zulu/VerbZul.gf +++ b/src/zulu/VerbZul.gf @@ -5,17 +5,17 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in { lin UseV v = { s = table { - MainCl => \\a,p,t => let + MainCl => \\a,p,t,l => let vform = VFIndic MainCl p t ; tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku- - r = v.s!(rform (VFIndic MainCl p t) True) -- hamba + r = v.s!(rform (VFIndic MainCl p t) l) -- hamba -- rest of verb prefix built later (eg no "ya" with certain question words) in tp ++ r ; - RelCl => \\a,p,t => let + RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; rc = relConc vform a v.r ; -- o- tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku- - r = v.s!(rform vform True) ; -- hamba + r = v.s!(rform vform l) ; -- hamba suf = relSuf vform -- [] / -yo in rc ++ tp ++ r ++ suf } ; @@ -192,7 +192,7 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in { -- } -- } ; - AdvVP vp adv = vp ** { advs = vp.advs ++ adv.s } ; + AdvVP vp adv = vp ** { advs = vp.advs ++ adv.s ; hasComp = True } ; -- { -- s = vp.s ; -- oc = vp.oc ; From c9ee6f3d8267c469d8efa8319b67018298f56c4a Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 10 May 2022 11:16:53 +0200 Subject: [PATCH 094/141] added adjectives to MultiLex --- src/zulu/lexica/MultiLex.gf | 58 +++++++++++++++++++++++++++++++++ src/zulu/lexica/MultiLexZul.gf | 59 ++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) diff --git a/src/zulu/lexica/MultiLex.gf b/src/zulu/lexica/MultiLex.gf index 67e29ebd0..feef78228 100644 --- a/src/zulu/lexica/MultiLex.gf +++ b/src/zulu/lexica/MultiLex.gf @@ -1,6 +1,64 @@ abstract MultiLex = Cat ** { fun + big_A : A ; + bad_A : A ; + beautiful_A : A ; + better_A : A ; + bitter_A : A ; + black_A : A ; + blue_A : A ; + blunt_A : A ; + brown_A : A ; + busy_A : A ; + certain_A : A ; + cold_A : A ; + colourful_A : A ; + difficult_A : A ; + easy_A : A ; + few_A : A ; + five_A : A ; + four_A : A ; + green_A : A ; + grey_A : A ; + hard_A : A ; + holy_A : A ; + honest_A : A ; + hwvy_A : A ; + innocent_A : A ; + kind_A : A ; + light_A : A ; + long_A : A ; + many_A : A ; + most_important_A : A ; + new_A : A ; + old_A : A ; + one_A : A ; + orange_A : A ; + overcast_A : A ; + painful_A : A ; + peaceful_A : A ; + pink_A : A ; + pleasant_A : A ; + poor_A : A ; + purple_A : A ; + red_A : A ; + sharp_A : A ; + short_A : A ; + small_A : A ; + soft_A : A ; + sour_A : A ; + spotted_A : A ; + strong_A : A ; + sweet_A : A ; + tasteless_A : A ; + three_A : A ; + two_A : A ; + wet_A : A ; + white_A : A ; + wide_A : A ; + yellow_A : A ; + -- nouns ability_N : N ; accident_N : N ; diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index ad0dc23d4..fe840a1ec 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -1,6 +1,65 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { lin + -- adjectives + big_A = mkA "khulu" ; + bad_A = mkA "bi" ; + beautiful_A = mkA "hle" ; + better_A = mkA "ngcono" ; + bitter_A = mkA "munyu" ; + black_A = mkA "mnyama" ; + blue_A = mkA "luhlaza" ; + blunt_A = mkA "buthuntu" ; + brown_A = mkA "nsundu" ; + busy_A = mkA "matasatosa" ; + certain_A = mkA "thile" ; + cold_A = mkA "makhaza" ; + colourful_A = mkA "makhwezikhwezi" ; + difficult_A = mkA "nzima" ; + easy_A = mkA "lula" ; + few_A = mkA "mbalwa" ; + five_A = mkA "hlonu" ; + four_A = mkA "ne" ; + green_A = mkA "luhlaza" ; + grey_A = mkA "mpunga" ; + hard_A = mkA "lukhuni" ; + holy_A = mkA "ngcwele" ; + honest_A = mkA "qotho" ; + hwvy_A = mkA "nzima" ; + innocent_A = mkA "msulwa" ; + kind_A = mkA "mnene" ; + light_A = mkA "lula" ; + long_A = mkA "de" ; + many_A = mkA "ningi" ; + most_important_A = mkA "mqoka" ; + new_A = mkA "sha" ; + old_A = mkA "dolo" ; + one_A = mkA "nye" ; + orange_A = mkA "sawolintshi" ; + overcast_A = mkA "mathumbenkala" ; + painful_A = mkA "buhlungu" ; + peaceful_A = mkA "thule" ; + pink_A = mkA "bomvana" ; + pleasant_A = mkA "mnandi" ; + poor_A = mkA "mpofu" ; + purple_A = mkA "bunsomi" ; + red_A = mkA "bomvu" ; + sharp_A = mkA "bukhali" ; + short_A = mkA "fushane" ; + small_A = mkA "ncane" ; + soft_A = mkA "ntofontofo" ; + sour_A = mkA "munyu" ; + spotted_A = mkA "mabalabala" ; + strong_A = mkA "qatha" ; + sweet_A = mkA "mtoti" ; + tasteless_A = mkA "duma" ; + three_A = mkA "thathu" ; + two_A = mkA "bili" ; + wet_A = mkA "manzi" ; + white_A = mkA "mhlophe" ; + wide_A = mkA "banzi" ; + yellow_A = mkA "phuzi" ; + -- nouns ability_N = mkN "khono" C5_6 ; accident_N = mkN "ngozi" C9_10 ; From 06593c5fb9f7da4f264b9973b4962f74ebae665f Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 12 May 2022 05:21:11 +0200 Subject: [PATCH 095/141] fixed relative longform --- src/zulu/ResZul.gf | 24 ------------------------ src/zulu/VerbZul.gf | 5 ++++- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 6bc277ad6..9cabe2fd3 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -642,30 +642,6 @@ resource ResZul = open Prelude,Predef,ParamX in { t = RelType } ; - -- enumAdj : Str -> { s : AForm => Str ; empty : Str ; t : AType } = \a -> - -- { - -- s = \\_ => a ; - -- -- b = case a of { - -- -- ("kh"|"th"|"sh"|"b"|"f"|"hl")+_ => True ; - -- -- ("m"|"n")+_ => True ; - -- -- _ => False - -- -- } ; - -- empty = [] ; - -- t = EnumType - -- } ; - - -- relSuf : VForm -> Bool -> Str = \longform -> - -- case longform of { - -- True => pre { #vowel => [] ; #cons => [] ; "y" => [] ; _ => "yo" } ; - -- False => [] - -- } ; - - rel_yo : Str = pre { - #vowel => [] ; - #cons => [] ; - _ => BIND++"yo" - } ; - rel_yo_2 : Str = BIND++"yo" ; relSuf : VForm -> Str = \vform -> case vform of { diff --git a/src/zulu/VerbZul.gf b/src/zulu/VerbZul.gf index 575ad9d8c..baaf28dc2 100755 --- a/src/zulu/VerbZul.gf +++ b/src/zulu/VerbZul.gf @@ -16,7 +16,10 @@ concrete VerbZul of Verb = CatZul ** open ResZul, Prelude, ParamX in { rc = relConc vform a v.r ; -- o- tp = tensePref vform v.r v.syl ; -- [] / zo- / zuku- r = v.s!(rform vform l) ; -- hamba - suf = relSuf vform -- [] / -yo + suf = case l of { + True => relSuf vform ; + False => [] + } ; in rc ++ tp ++ r ++ suf } ; iadv, advs, comp = [] ; From ccdc04992ebd15636e4d6f39ea24dedc5db618a4 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 12 May 2022 05:21:33 +0200 Subject: [PATCH 096/141] added lapho --- src/zulu/lexica/DevLex.gf | 2 ++ src/zulu/lexica/DevLexZul.gf | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/zulu/lexica/DevLex.gf b/src/zulu/lexica/DevLex.gf index bff5b44cb..b31efff66 100755 --- a/src/zulu/lexica/DevLex.gf +++ b/src/zulu/lexica/DevLex.gf @@ -78,4 +78,6 @@ abstract DevLex = Cat ** { ngaphezu_Adv : Adv ; -- kakhulu_AdA : AdA ; + lapho_Adv : Adv ; + } diff --git a/src/zulu/lexica/DevLexZul.gf b/src/zulu/lexica/DevLexZul.gf index 230354491..c3f461f2a 100755 --- a/src/zulu/lexica/DevLexZul.gf +++ b/src/zulu/lexica/DevLexZul.gf @@ -76,4 +76,6 @@ concrete DevLexZul of DevLex = CatZul ** open ResZul,ParadigmsZul in { ngaphezu_Adv = mkAdv "ngaphezu" ; -- kakhulu_AdA = { s = "kakhulu" } ; + + lapho_Adv = mkAdv "lapho" ; } From 46509b93a3730a9735bd9263aa636e975c76424e Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:01:08 +0800 Subject: [PATCH 097/141] (Est) Keep non-finite forms non-finite in PassV2 TODO: restructure VP so we retain non-finite passive forms --- src/estonian/ResEst.gf | 6 ++++++ src/estonian/VerbEst.gf | 22 ++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 6418b9a27..0b72ab543 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -163,6 +163,12 @@ param in preOrPost co.isPre co.s nps ; + -- Used for passive; c2 of V2/VPSlash becomes sc of VP + compl2subjcase : Compl -> NPForm = \compl -> + case compl.c of { + NPCase Gen => NPCase Nom ; -- valisin koera -> koer valitakse + _ => compl.c -- rääkisin koerale -> koerale räägitakse + } ; -- For $Verb$. Verb : Type = { diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 8c84e22f2..7f54194ab 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -79,20 +79,14 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; - PassV2 v = - let - vp = predV v ; - subjCase = case v.c2.c of { --this is probably a reason to not get rid of NPAcc; TODO check - NPCase Gen => NPCase Nom ; --valisin koera -> koer valitakse - _ => v.c2.c --rääkisin koerale -> koerale räägitakse - } - in { - s = \\_ => vp.s ! VIPass Pres ; - s2 = \\_,_,_ => [] ; - adv = [] ; - p = vp.p ; - ext = vp.ext ; - sc = subjCase -- koer valitakse ; koerale räägitakse + PassV2 v = + let vp = predV v in vp ** { + s = \\vf => case vf of { + VIFin t => vp.s ! VIPass t ; + -- VIImper => v.s ! ImperPass ; -- TODO: include these forms from V into VP + -- VIPresPart => v.s ! PresPart Pass ; + x => vp.s ! x } ; + sc = compl2subjcase v.c2 -- koer valitakse ; koerale räägitakse } ; ----b UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ; From 41d4b7fabd2953a7b18dca48e433255b12a226e2 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:03:01 +0800 Subject: [PATCH 098/141] (Est) Add DAP + funs that use/produce it --- src/estonian/CatEst.gf | 2 +- src/estonian/NounEst.gf | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index a91a245e0..57b891d04 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -50,7 +50,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { CN = {s : NForm => Str} ; Pron = {s : NPForm => Str ; a : Agr} ; NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; - Det = { + DAP, Det = { s : Case => Str ; -- minun kolme sp : Case => Str ; -- se (substantival form) n : Number ; -- Pl (agreement feature for verb) diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index a2167f415..2d873ab65 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -106,6 +106,21 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isDef = quant.isDef } ; + DetDAP det = det ; + + AdjDAP dap ap = dap ** { + s = \\c => dap.s ! c ++ + case ap.infl of { + Regular => ap.s ! True ! NCase dap.n c ; + _ => ap.s ! True ! NCase dap.n Nom ---- participle + } ; + sp = \\c => dap.sp ! c ++ + case ap.infl of { + Regular => ap.s ! True ! NCase dap.n c ; + _ => ap.s ! True ! NCase dap.n Nom ---- participle + } ; + } ; + PossPron p = { s,sp = \\_,_ => p.s ! NPCase Gen ; isNum = False ; From 5eb333ce6aa8a8f4ea63073a99cef9dcd1089d6f Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 12 Apr 2022 19:03:22 +0800 Subject: [PATCH 099/141] (Est) New linearisations in ExtendEst --- src/estonian/ExtendEst.gf | 611 +++++++++++++++++++++++--------------- 1 file changed, 376 insertions(+), 235 deletions(-) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 42551d197..1103c5b7f 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -3,19 +3,29 @@ concrete ExtendEst of Extend = CatEst ** ExtendFunctor - [ - VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList, - AdAdV, AdjAsCN, AdjAsNP, ApposNP, - BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2, - MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV, - MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, - Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, - CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, - CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, - ExistsNP, FocusAP, FocusAdV, FocusAdv, FocusObj, FrontExtPredVP, GenIP, GenModIP, GenModNP, GenNP, GenRP, - GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, InvFrontExtPredVP, MkVPS, NominalizeVPSlashNP, - PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, - PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, - UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 + -- Extensions of VP + VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, + MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, QuestVPS, SQuestVPS, RelVPS, + MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, + MkVPS2, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, ReflVPS2, + MkVPI2, BaseVPI2, ConsVPI2, ConjVPI2, ComplVPI2, + + -- Reflexives + RNP, RNPList, Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ConjRNP, Cons_nr_RNP, Cons_rr_RNP, PredetRNP, ReflRNP, ReflPoss, ReflPron, + + -- Rest in alphabetical order + AdAdV, AdjAsCN, AdjAsNP, ApposNP, AdvIsNP, A2VPSlash, ByVP, + CardCNCard, CompBareCN, CompIQuant, CompQS, CompS, CompVP, + ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, CompoundN, + EmbedPresPart, EmbedSSlash, EmptyRelSlash, ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, + FocusAP, FocusAdV, FocusAdv, FocusObj, FrontComplDirectVQ, FrontComplDirectVS, + GenIP, GenModIP, GenModNP, GenNP, GenRP, GerundAdv, GerundCN, GerundNP, + IAdvAdv, ICompAP, InOrderToVP, N2VPSlash, NominalizeVPSlashNP, + PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, + PredAPVP, PredIAdvVP, PredVPSVV, PresPartAP, PrepCN, ProDrop, ProgrVPSlash, PurposeVP, + SlashBareV2S, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP + + ] with (Grammar = GrammarEst) ** @@ -24,264 +34,395 @@ concrete ExtendEst of Extend = GrammarEst, ResEst, (R=ResEst), + (X=ExtraEst), IdiomEst, Coordination, Prelude, MorphoEst, LexiconEst, - ParadigmsEst in { + ParadigmsEst in { + +--------------------------------- +-- VPS, VPI, VPS2 + list versions + lincat + VPS = X.VPS ; + [VPS] = X.ListVPS ; + VPI = X.VPI ; + [VPI] = X.ListVPI ; + VPS2 = X.VPS ** {c2 : Compl} ; + [VPS2] = X.ListVPS ** {c2 : Compl} ; + VPI2 = X.VPI ** {c2 : Compl} ; + [VPI2] = X.ListVPI ** {c2 : Compl} ; lin - -- : NP -> Quant ; -- this man's - GenNP np = { + MkVPS = X.MkVPS ; + BaseVPS = X.BaseVPS ; + ConsVPS = X.ConsVPS ; + ConjVPS = X.ConjVPS ; + + PredVPS = X.PredVPS ; + -- QuestVPS + -- SQuestVPS + -- RelVPS + + MkVPI = X.MkVPI ; + BaseVPI = X.BaseVPI ; + ConsVPI = X.ConsVPI ; + ConjVPI = X.ConjVPI ; + ComplVPIVV = X.ComplVPIVV ; + + MkVPS2 t p vps = MkVPS t p vps ** {c2 = vps.c2} ; +-- BaseVPS2, ConsVPS2, ConjVPS2, + + ComplVPS2 v np = lin VPS (v ** { + -- TODO: param to record whether it's pos or neg, so we get right form of np + s = \\agr => v.s ! agr ++ appCompl True Pos v.c2 np ; + }) ; + +-- ReflVPS2 v rnp = +-- MkVPI2, BaseVPI2, ConsVPI2, ConjVPI2, ComplVPI2, + +--------------------------------- +-- RNP + all related funs + + lincat + RNP = {s : Agr => NPForm => Str} ; + RNPList = {s1,s2 : Agr => NPForm => Str} ; + + oper + rnp2np : Agr -> RNP -> NP = \agr,rnp -> lin NP { + a = agr ; + s = rnp.s ! agr ; + isPron = False ; -- ?? + } ; + + lin + -- : VPSlash -> RNP -> VP ; -- support my family and myself + ReflRNP vps rnp = insertObj (\\b,p,a => appCompl True Pos vps.c2 (rnp2np a rnp)) vps ; + + -- : RNP + ReflPron = {s = \\agr,npf => (reflPron agr).s ! npf} ; + + -- : Num -> CN -> RNP ; -- my car(s) + ReflPoss num cn = { + s = \\a,npf => possPron ! a ++ num.s ! Sg ! Nom ++ + case npf of { + NPCase c => cn.s ! NCase num.n c ; + NPAcc => cn.s ! NCase num.n Gen } ; + } ; + + PredetRNP predet rnp = { + s = \\a,c => case a of { + Ag n p => predet.s ! n ! c ++ rnp.s ! a ! c ; + AgPol => predet.s ! Pl ! c ++ rnp.s ! a ! c } + } ; + + ConjRNP conj rpns = conjunctDistrTable2 Agr NPForm conj rpns ; + + Base_rr_RNP x y = twoTable2 Agr NPForm x y ; + Base_nr_RNP x y = twoTable2 Agr NPForm {s = \\a => x.s} y ; + Base_rn_RNP x y = twoTable2 Agr NPForm x {s = \\a => y.s} ; + Cons_rr_RNP x xs = consrTable2 Agr NPForm comma x xs ; + Cons_nr_RNP x xs = consrTable2 Agr NPForm comma {s = \\a => x.s} xs ; + +{- + -- : Pron -> Num -> CN -> RNP -> NP ; -- his abandonment of his wife and children + PossPronRNP pron num cn rnp = + + -- : NP -> Prep -> RNP -> RNP ; -- a dispute with his wife + AdvRAP adv rp = + + -- : VP -> Prep -> RNP -> VP ; -- lectured about her travels + AdvRNP adv rp = + + -- : AP -> Prep -> RNP -> AP ; -- adamant in his refusal + AdvRVP adv rp = + -} + + oper + possPron : Agr => Str = table { + Ag Sg P1 => "minu" ; + Ag Sg P2 => "sinu" ; + Ag Sg P3 => "tema" ; + Ag Pl P1 => "meie" ; + Ag Pl P2 => "teie" ; + Ag Pl P3 => "nende" ; + AgPol => "teie" + } ; + + +--------------------------------- +-- A - B + lin + + + AdAdV ad adv = AdAdv ad adv ; + + -- : AP -> CN ; -- a green one ; en grön (Swe) + AdjAsCN ap = {s = ap.s ! True} ; -- True = attributive ; False = predicative + + -- : AP -> NP + AdjAsNP ap = MassNP (AdjAsCN ap) ; + + -- : NP -> NP -> NP + ApposNP np1 np2 = np2 ** { + s = \\nf => np1.s ! nf ++ np2.s ! nf ; -- comma or not? + } ; + + -- : Adv -> NP -> Cl ; -- here is the tree / here are the trees + AdvIsNP adv np = mkClause (\_ -> adv.s) (agrP3 Sg) (UseComp (CompNP np)) ; + + -- : A2 -> VPSlash + A2VPSlash a2 = UseComp (CompAP (UseA2 a2)) ** {c2 = a2.c2} ; + + -- : VP -> Adv ; + ByVP vp = {s = vp2adv vp True (VIInf InfDes)} ; + +--------------------------------- +-- C + + lin + + -- : VS -> S -> VP ; + ComplBareVS v s = insertExtrapos s.s (predV v) ; + + -- : N -> N -> N ; -- control system / controls system / control-system + CompoundN noun cn = cn ** { + s = \\nf => noun.s ! NCase Sg Gen ++ BIND ++ cn.s ! nf + } ; + + -- : N -> A -> AP ; -- language independent / language-independent + CompoundAP n a = PositA (a ** {s = \\d,af => n.s ! NCase Sg Nom ++ BIND ++ a.s ! d ! af}) ; + + -- : VS -> Utt -> VP ; -- say: "today" + ComplDirectVS vs utt = insertExtrapos (BIND ++ ":" ++ utt.s) (predV vs) ; + + -- : VQ -> Utt -> VP ; -- ask: "when" + ComplDirectVQ vq utt = insertExtrapos (BIND ++ ":" ++ utt.s) (predV vq) ; + + -- : S -> Comp ; -- (the fact is) that she sleeps + CompS s = {s = \\_ => "et" ++ s.s} ; + + -- : QS -> Comp ; -- (the question is) who sleeps + CompQS qs = {s = \\_ => qs.s } ; + + -- : Ant -> Pol -> VP -> Comp ; -- (she is) to go + CompVP ant pol vp = {s = \\a => infVPAnt ant.a (NPCase Nom) pol.p a vp InfDa } ; + + + -- ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++ infVP v.typ vp a.a p.p agr) + -- (predVV v) ; + + -- ComplSlashPartLast vps np = {} ; --- AR 7/3/2013 + +--------------------------------- +-- E - F + + lin + + {- TODO: need to change VP to get EmbedPresPart and various Gerunds to work: + 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) + 2) Change s2 in VP so that we can manipulate the complement to be in genitive! + + -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) + EmbedPresPart vp = + let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } + {s = vp2adv vp True VI } ; + -} + + EmbedSSlash s = {s = s.s ++ s.c2.s} ; + + -- : ClSlash -> RCl ; -- he lives in + EmptyRelSlash cls = { + s = \\t,a,p,_ => cls.s ! t ! a ! p ++ cls.c2.s ; + c = NPCase Nom + } ; + + -- : CN -> Cl ; -- there is a car / there is no car ; there is beer / there is no beer ; there are + -- TODO: these all use the literal "exist" verb. Does Estonian have a construction for "there is"? + ExistCN, ExistMassCN = \cn -> ExistsNP (MassNP cn) ; + ExistPluralCN cn = ExistsNP (DetCN (DetQuant IndefArt NumPl) cn) ; + + -- : NP -> Cl ; -- there exists a number / there exist numbers + ExistsNP = IdiomEst.ExistNP ; + + -- : AP -> NP -> Utt ; -- green was the tree + FocusAP ap np = + let pred : VP = UseComp (CompNP np) ; + subj : NP = AdjAsNP ap ; + cl : Cl = PredVP subj pred ; + in UttS (UseCl (TTAnt TPres ASimul) PPos cl) ; -- use AdvIsNP for similar construction but that returns a Cl instead + + -- : Ad[vV] -> S -> Utt -- today I will sleep + FocusAdV, FocusAdv = \adv,s -> cc2 adv s ; + + -- : NP -> SSlash -> Utt ; -- her I love + FocusObj np sslash = {s = appCompl True Pos sslash.c2 np ++ sslash.s} ; + + + -- : NP -> VS -> Utt -> Cl ; -- "I am here", she said + FrontComplDirectVS np vs utt = + let cl : Cl = PredVP np (UseV vs) ; + in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ; + + -- : NP -> VQ -> Utt -> Cl ; -- "where", she asked + FrontComplDirectVQ np vq utt = + let cl : Cl = PredVP np (UseV vq) ; + in cl ** {s = \\t,a,p,o => utt.s ++ bindComma ++ cl.s ! t ! a ! p ! o} ; + + +--------------------------------- +-- G + + lin + -- : NP -> Quant ; -- this man's + GenNP np = { s,sp = \\_,_ => np.s ! NPCase Gen ; isNum = False ; isDef = True ; - isNeg = False - } ; + isNeg = False + } ; - -- : IP -> IQuant ; -- whose - GenIP ip = { s = \\_,_ => ip.s ! NPCase Gen } ; + -- : IP -> IQuant ; -- whose + GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; - -- : Num -> CN -> RP ; -- whose car - GenRP num cn = { - s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; - a = RNoAg - } ; + -- : Num -> CN -> RP ; -- whose car + GenRP num cn = { + s = \\n,c => let k = npform2case num.n c + in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; + a = RNoAg + } ; -- In case the first two are not available, the following applications should in any case be. - -- : Num -> NP -> CN -> NP ; -- this man's car(s) - GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ; + -- : Num -> NP -> CN -> NP ; -- this man's car(s) + GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ; - -- : Num -> IP -> CN -> IP ; -- whose car(s) - GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; + -- : Num -> IP -> CN -> IP ; -- whose car(s) + GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; -{- + -- : VP -> Adv + GerundAdv vp = {s = vp2adv vp True (VIInf InfDes)} ; + -- : VP -> CN -- publishing of the document (can get a determiner) +-- GerundCN vp = {} ; - lincat - VPS = {s : Agr => Str} ; - [VPS] = {s1,s2 : Agr => Str} ; - VPI = {s : VVType => Agr => Str} ; - [VPI] = {s1,s2 : VVType => Agr => Str} ; + -- : VP -> NP -- publishing the document (by nature definite) +-- GerundNP vp = {} ; - lin - BaseVPS = twoTable Agr ; - ConsVPS = consrTable Agr comma ; - - BaseVPI = twoTable2 VVType Agr ; - ConsVPI = consrTable2 VVType Agr comma ; - - MkVPS t p vp = mkVPS (lin Temp t) (lin Pol p) (lin VP vp) ; - ConjVPS c xs = conjunctDistrTable Agr c xs ; - PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ; - - - MkVPI vp = mkVPI (lin VP vp) ; - ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ; - ComplVPIVV vv vpi = insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ; - - --------- two-place verb conjunction - - lincat - VPS2 = {s : Agr => Str ; c2 : Str} ; - [VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ; - VPI2 = {s : VVType => Agr => Str ; c2 : Str} ; - [VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Str} ; - - lin - MkVPS2 t p vpsl = mkVPS (lin Temp t) (lin Pol p) (lin VP vpsl) ** {c2 = vpsl.c2} ; - MkVPI2 vpsl = mkVPI (lin VP vpsl) ** {c2 = vpsl.c2} ; - - BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb - ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2} ; - - BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb - ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ; - - - ConjVPS2 c xs = conjunctDistrTable Agr c xs ** {c2 = xs.c2} ; - ConjVPI2 c xs = conjunctDistrTable2 VVType Agr c xs ** {c2 = xs.c2} ; - - - ComplVPS2 vps2 np = {} ; - ComplVPI2 vpi2 np = {} ; - - oper - mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS {} ; - - mkVPI : VP -> VPI = \vp -> lin VPI {} ; - ------ --} - -lin - -- : AP -> IComp ; -- "how old" - ICompAP ap = icompAP "kui" ap ; - - -- : Adv -> IAdv ; -- "how often" - IAdvAdv adv = { s = "kui" ++ adv.s } ; - - -- : VP -> AP ; -- (the man) looking at Mary / filme vaatav (mees) - PresPartAP vp = { - s = \\_,_ => vp2adv vp True VIPresPart ; - infl = Invariable - } ; - -{- TODO: need to change VP to get the following 3 functions to work properly: - 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) - 2) Change s2 in VP so that we can manipulate the complement to be in genitive! - -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) - EmbedPresPart vp = - let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } - {s = vp2adv vp True VI } ; - - -- : VP -> CN -- publishing of the document (can get a determiner) - GerundCN vp = {} ; - - -- : VP -> NP -- publishing the document (by nature definite) - GerundNP vp = {} ; --} - - -- : VPSlash -> AP ; -- täna leitud - PastPartAP vp = { - s = \\_,_ => vp2adv vp True (VIPass Past) ; - infl = Invariable } ; - - -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) - PastPartAgentAP vp np = { - s = \\_,_ => np.s ! NPCase Gen ++ "poolt" - ++ vp2adv vp True (VIPass Past) ; - infl = Invariable } ; - - -- : VP -> Adv - GerundAdv vp = - { s = vp2adv vp True (VIInf InfDes) } ; - - WithoutVP vp = -- ilma raamatut nägemata - { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; - - InOrderToVP vp = -- et raamatut paremini näha - { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; - - ByVP vp = - { s = vp2adv vp True (VIInf InfDes) } ; - -oper - vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> - vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut - ++ vp.adv -- paremini - ++ vp.p -- ära - ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... - ++ vp.ext ; - -lin -{- - - NominalizeVPSlashNP vpslash np = {} ; - PassVPSlash vps = passVPSlash (lin VPS vps) [] ; - PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ; - - --- AR 7/3/2013 - ComplSlashPartLast vps np = {} ; --} - -- : NP -> Cl ; -- there exists a number / there exist numbers - ExistsNP = IdiomEst.ExistNP ; - -{- - ComplBareVS v s = insertExtra s.s (predV v) ; - SlashBareV2S v s = insertExtrac s.s (predVc v) ; --} - - -- : N -> N -> N ; -- control system / controls system / control-system - CompoundN noun cn = lin N { - s = \\nf => noun.s ! NCase Sg Gen ++ BIND ++ cn.s ! nf - } ; -{- - -- : N -> A -> AP ; -- language independent / language-independent - CompoundAP noun adj = {} ; - - -- : VS -> Utt -> VP ; -- say: "today" - ComplDirectVS vs utt = {} ; - -- : VQ -> Utt -> VP ; -- ask: "when" - ComplDirectVQ vq utt = {} ; - - -- : NP -> VS -> Utt -> Cl ; -- "I am here", she said - FrontComplDirectVS np vs utt = {} ; - -- : NP -> VQ -> Utt -> Cl ; -- "where", she asked - FrontComplDirectVQ np vq utt = {} ; --} - - -- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida - PredAPVP ap vp = - let heaOllaVP : VP = insertObj (\\_,_ => ap.s) vp ; -- puts AP into the s2 field - heaOllaComp : Comp = CompVP ASimul PPos heaOlla ; -- chooses InfDa, fixes word order - heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P - in existClause noSubj (agrP3 Sg) heaOlla ; - -oper -testCl = PredAPVP (PositA good_A) (UseV walk_V) ; +--------------------------------- +-- I - N lin - -- : AP -> CN ; -- a green one ; en grön (Swe) - AdjAsCN ap = { s = ap.s ! True } ; -- True = it's a modifier, not a predicate + -- : AP -> IComp ; -- "how old" + ICompAP ap = icompAP "kui" ap ; - AdjAsNP ap = { - s = table { NPCase c => ap.s ! True ! NCase Sg c ; - NPAcc => ap.s ! True ! NCase Sg Gen } ; - a = agrP3 Sg ; - isPron = False - } ; -{- - lincat - RNP = {s : Agr => Str} ; - RNPList = {s1,s2 : Agr => Str} ; + -- : Adv -> IAdv ; -- "how often" + IAdvAdv adv = { s = "kui" ++ adv.s } ; - lin - ReflRNP vps rnp = insertObjPre (\\a => vps.c2 ++ rnp.s ! a) vps ; + -- : VP -> Adv + InOrderToVP vp = -- et raamatut paremini näha + { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; - -- : RNP - ReflPron = {s = reflPron} ; + -- : N2 -> VPSlash + N2VPSlash n2 = UseComp (CompCN (UseN2 n2)) ** {c2 = n2.c2} ; - ReflPoss num cn = {s = \\a => possPron ! a ++ num.s ! Nom ++ cn.s ! num.n ! Nom} ; - PredetRNP predet rnp = {s = \\a => predet.s ++ rnp.s ! a} ; + -- : VPSlash -> NP -> NP ; publishing of the document + -- NominalizeVPSlashNP vpslash np = {} ; - ConjRNP conj rpns = conjunctDistrTable Agr conj rpns ; - Base_rr_RNP x y = twoTable Agr x y ; - Base_nr_RNP x y = twoTable Agr {s = \\a => x.s ! NPAcc} y ; - Base_rn_RNP x y = twoTable Agr x {s = \\a => y.s ! NPAcc} ; - Cons_rr_RNP x xs = consrTable Agr comma x xs ; - Cons_nr_RNP x xs = consrTable Agr comma {s = \\a => x.s ! NPAcc} xs ; +--------------------------------- +-- P - ----- TODO: RNPList construction + lin - ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++ - infVP v.typ vp a.a p.p agr) - (predVV v) ; --} - -- : S -> Comp ; -- (the fact is) that she sleeps - CompS s = {s = \\_ => "et" ++ s.s} ; + -- : VPSlash -> NP -> VP ; -- be begged by her to go + PassAgentVPSlash vps np = let vp : VP = PassVPSlash vps in vp ** { + adv = vp.adv ++ np.s ! NPCase Gen ++ "poolt" ; + } ; - -- : QS -> Comp ; -- (the question is) who sleeps - CompQS qs = {s = \\_ => qs.s } ; - -- : Ant -> Pol -> VP -> Comp ; -- (she is) to go - CompVP ant pol vp = {s = \\a => infVPAnt ant.a (NPCase Nom) pol.p a vp InfDa } ; + -- : VPSlash -> VP ; -- be forced to sleep + PassVPSlash vps = vps ** { + s = \\vf => case vf of { + VIFin t => vps.s ! VIPass t ; + x => vps.s ! x } ; + sc = compl2subjcase vps.c2 + } ; --- English-specific - -- : Pol - UncontractedNeg = { s = [] ; p = Neg } ; + -- : VPSlash -> AP ; -- täna leitud + PastPartAP vp = { + s = \\_,_ => vp2adv vp True (VIPass Past) ; + infl = Invariable + } ; - -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa - UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; - --TODO: maybe InfMa should be default in PhraseEst and InfDa here? + -- : VP -> AP ; -- (the man) looking at Mary / filme vaatav (mees) + PresPartAP vp = { + s = \\_,_ => vp2adv vp True VIPresPart ; + infl = Invariable + } ; + + -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) + PastPartAgentAP vp np = { + s = \\_,_ => np.s ! NPCase Gen ++ "poolt" ++ vp2adv vp True (VIPass Past) ; + infl = Invariable + } ; + + PositAdVAdj = PositAdvAdj ; + + -- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida + PredAPVP ap vp = + let heaOllaVP : VP = insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp ; -- puts AP into the s2 field + heaOllaComp : Comp = CompVP ASimul PPos heaOllaVP ; -- chooses InfDa, fixes word order + heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P + in existClause noSubj (agrP3 Sg) heaOlla ; + + -- : IAdv -> VP -> QCl ; -- how to walk? + PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ vp2adv vp True (VIInf InfMa)} ; + + PrepCN prep cn = PrepNP prep (MassNP cn) ; + + ProDrop pron = pron ** {s = \\_ => []} ; + + ProgrVPSlash vps = ProgrVP vps ** vps ; + + PurposeVP = InOrderToVP ; --- is there a difference? + + oper + vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> + vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... + ++ vp.ext ; + +--------------------------------- +-- S - W + + lin + + -- SlashBareV2S v s = insertExtrapos s.s (predV v) ** v ; + + UseDAP, + UseDAPFem, + UseDAPMasc = DetNP ; + + UttAccIP ip = {s = ip.s ! NPAcc} ; + UttAccNP np = {s = np.s ! NPAcc} ; + UttAdV adv = adv ; + UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? + UttDatNP np = {s = np.s ! NPCase Part} ; + + -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa + UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; + --TODO: maybe InfMa should be default in PhraseEst and InfDa here? -} \ No newline at end of file + WithoutVP vp = -- ilma raamatut nägemata + { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; + + +} From e06c3433b91506118173844675f678e3cc810cbd Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 10:42:34 +0800 Subject: [PATCH 100/141] (Est) Automatic whitespace removal in its own commit,rather than have whitespace changes in content commits --- src/estonian/AdjectiveEst.gf | 10 +- src/estonian/AllEst.gf | 2 +- src/estonian/AllEstAbs.gf | 2 +- src/estonian/CatEst.gf | 13 +- src/estonian/ConstructionEst.gf | 26 +-- src/estonian/DocumentationEst.gf | 2 +- src/estonian/DocumentationEstEng.gf | 2 +- src/estonian/DocumentationEstFunctor.gf | 84 ++++----- src/estonian/ExtraEst.gf | 120 ++++++------ src/estonian/ExtraEstAbs.gf | 2 +- src/estonian/GrammarEst.gf | 6 +- src/estonian/IdiomEst.gf | 20 +- src/estonian/LexiconEst.gf | 4 +- src/estonian/MakeStructuralEst.gf | 6 +- src/estonian/MorphoEst.gf | 118 ++++++------ src/estonian/NounEst.gf | 60 +++--- src/estonian/ParadigmsEst.gf | 220 +++++++++++----------- src/estonian/QuestionEst.gf | 42 ++--- src/estonian/RelativeEst.gf | 12 +- src/estonian/ResEst.gf | 236 ++++++++++++------------ src/estonian/SentenceEst.gf | 16 +- src/estonian/SymbolEst.gf | 2 +- src/estonian/TerminologyEst.gf | 10 +- src/estonian/VerbEst.gf | 62 +++---- 24 files changed, 539 insertions(+), 538 deletions(-) diff --git a/src/estonian/AdjectiveEst.gf b/src/estonian/AdjectiveEst.gf index 85f38ae32..5cf65d4e2 100644 --- a/src/estonian/AdjectiveEst.gf +++ b/src/estonian/AdjectiveEst.gf @@ -16,10 +16,10 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { } ; infl = Regular ; --a.infl } ; - + CAdvAP ad ap np = { s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPCase Nom ; - infl = ap.infl + infl = ap.infl } ; UseComparA a = { s = \\_,nf => a.s ! Compar ! AN nf ; @@ -34,14 +34,14 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { ComplA2 adj np = { - s = \\isMod,af => + s = \\isMod,af => preOrPost isMod (appCompl True Pos adj.c2 np) (adj.s ! Posit ! AN af) ; infl = adj.infl } ; ReflA2 adj = { - s = \\isMod,af => - preOrPost isMod + s = \\isMod,af => + preOrPost isMod (appCompl True Pos adj.c2 (reflPron (agrP3 Sg))) (adj.s ! Posit ! AN af) ; infl = adj.infl } ; diff --git a/src/estonian/AllEst.gf b/src/estonian/AllEst.gf index 90c718107..5be738ace 100644 --- a/src/estonian/AllEst.gf +++ b/src/estonian/AllEst.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common:../prelude:../api -concrete AllEst of AllEstAbs = +concrete AllEst of AllEstAbs = LangEst, -- - [SlashV2VNP,SlashVV, TFut], ---- to speed up linking; to remove spurious parses ExtendEst -- - [ProDrop, ProDropPoss, S_OSV, S_VSO, S_ASV] -- to exclude spurious parses ** diff --git a/src/estonian/AllEstAbs.gf b/src/estonian/AllEstAbs.gf index e66279150..b49593b2a 100644 --- a/src/estonian/AllEstAbs.gf +++ b/src/estonian/AllEstAbs.gf @@ -1,4 +1,4 @@ -abstract AllEstAbs = +abstract AllEstAbs = Lang, ExtraEstAbs ** {} ; diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 57b891d04..6207874fa 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -21,7 +21,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ; IP = {s : NPForm => Str ; n : Number} ; - IComp = {s : Agr => Str} ; + IComp = {s : Agr => Str} ; IDet = {s : Case => Str ; n : Number ; isNum : Bool} ; IQuant = {s : Number => Case => Str} ; @@ -33,17 +33,17 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Verb VP = ResEst.VP ; - VPSlash = ResEst.VP ** {c2 : Compl} ; - Comp = {s : Agr => Str} ; + VPSlash = ResEst.VP ** {c2 : Compl} ; + Comp = {s : Agr => Str} ; -- Adjective -- The $Bool$ in s tells whether usage is modifying (as opposed to -- predicative), e.g. "x on suurem kui y" vs. "y:st suurem arv". --- The $Infl$ in infl tells whether the adjective inflects as a +-- The $Infl$ in infl tells whether the adjective inflects as a -- modifier: e.g. "väsinud mehele" vs. "mees muutus väsinuks". - AP = {s : Bool => NForm => Str ; infl : Infl} ; + AP = {s : Bool => NForm => Str ; infl : Infl} ; -- Noun @@ -55,8 +55,9 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { sp : Case => Str ; -- se (substantival form) n : Number ; -- Pl (agreement feature for verb) isNum : Bool ; -- True (a numeral is present) - isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? + isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? } ; + ---- QuantSg, QuantPl = {s : Case => Str ; isDef : Bool} ; Ord = {s : NForm => Str} ; Predet = {s : Number => NPForm => Str} ; diff --git a/src/estonian/ConstructionEst.gf b/src/estonian/ConstructionEst.gf index ff11e900f..748407435 100644 --- a/src/estonian/ConstructionEst.gf +++ b/src/estonian/ConstructionEst.gf @@ -1,6 +1,6 @@ --# -path=alltenses:.:../abstract:../api:../common -concrete ConstructionEst of Construction = CatEst ** +concrete ConstructionEst of Construction = CatEst ** open SyntaxEst, SymbolicEst, ParadigmsEst, (L = LexiconEst), (E = ExtraEst), (R = ResEst), Prelude in { flags coding=utf8 ; @@ -12,7 +12,7 @@ lin ill_VP = mkVP (mkA "haige") ; ready_VP = mkVP (ParadigmsEst.mkA "valmis") ; - has_age_VP card = + has_age_VP card = let n_years_AdA : AdA = lin AdA (mkUtt (lin NP (mkNP L.year_N))) in mkVP (mkAP n_years_AdA L.old_A) ; @@ -25,7 +25,7 @@ lin -- some more things weather_adjCl ap = mkCl (mkVP (lin AP ap)) ; - + is_right_VP = mkVP have_V2 (lin NP (mkNP (ParadigmsEst.mkN "õigus"))) ; is_wrong_VP = mkVP (ParadigmsEst.mkV "eksima") ; @@ -37,7 +37,7 @@ lin where_go_QCl np = mkQCl (lin IAdv (ss "kuhu")) (mkCl np (mkVP L.go_V)) ; where_come_from_QCl np = mkQCl (lin IAdv (ss "kust")) (mkCl np (mkVP L.come_V)) ; - + go_here_VP = mkVP (mkVP L.go_V) (mkAdv "siia") ; come_here_VP = mkVP (mkVP L.come_V) (mkAdv "siia") ; come_from_here_VP = mkVP (mkVP L.come_V) (mkAdv "sealt") ; @@ -61,16 +61,16 @@ lin monthAdv m = SyntaxEst.mkAdv in_Prep (mkNP m) ; yearAdv y = SyntaxEst.mkAdv (prePrep nominative "aastal") y ; ----- dayMonthAdv d m = ParadigmsEst.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part) ; +---- dayMonthAdv d m = ParadigmsEst.mkAdv (d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part) ; ---- monthYearAdv m y = SyntaxEst.mkAdv in_Prep (mkNP (mkNP m) (SyntaxEst.mkAdv (casePrep nominative) y)) ; ----- dayMonthYearAdv d m y = ----- lin Adv {s = d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part ++ y.s ! R.NPCase R.Nom} ; +---- dayMonthYearAdv d m y = +---- lin Adv {s = d.s ! R.NPCase R.Nom ++ BIND ++ "." ++ m.s ! R.NCase R.Sg R.Part ++ y.s ! R.NPCase R.Nom} ; intYear = symb ; intMonthday = symb ; oper - pointWeekday : Weekday -> Str = \w -> (SyntaxEst.mkAdv (casePrep essive) (mkNP w.noun)).s ; + pointWeekday : Weekday -> Str = \w -> (SyntaxEst.mkAdv (casePrep essive) (mkNP w.noun)).s ; lincat Language = N ; @@ -86,11 +86,11 @@ lin oper mkLanguage : Str -> N = \s -> mkN (s ++ "keel") ; -oper mkWeekday : Str -> Weekday = \d -> +oper mkWeekday : Str -> Weekday = \d -> lin Weekday { - noun = mkN d ; + noun = mkN d ; habitual = ParadigmsEst.mkAdv (d + "iti") ; --kolmapäeviti - } ; + } ; lin monday_Weekday = mkWeekday "esmaspäev" ; @@ -101,9 +101,9 @@ lin friday_Weekday = mkWeekday "reede" ; lin saturday_Weekday = mkWeekday "laupäev" ; lin sunday_Weekday = mkWeekday "pühapäev" ; -lin january_Month = mkN "jaanuar" ; +lin january_Month = mkN "jaanuar" ; lin february_Month = mkN "veebruar" ; -lin march_Month = mkN "märts" ; +lin march_Month = mkN "märts" ; lin april_Month = mkN "aprill" ; lin may_Month = mkN "mai" ; lin june_Month = mkN "juuni" ; diff --git a/src/estonian/DocumentationEst.gf b/src/estonian/DocumentationEst.gf index 6e6ae9090..c796ee94d 100644 --- a/src/estonian/DocumentationEst.gf +++ b/src/estonian/DocumentationEst.gf @@ -2,5 +2,5 @@ -- documentation of Estonian in Estonian: the default introduced in LangEst -concrete DocumentationEst of Documentation = CatEst ** +concrete DocumentationEst of Documentation = CatEst ** DocumentationEstFunctor with (Terminology = TerminologyEst) ; diff --git a/src/estonian/DocumentationEstEng.gf b/src/estonian/DocumentationEstEng.gf index e487fa1e5..07efbd0e6 100644 --- a/src/estonian/DocumentationEstEng.gf +++ b/src/estonian/DocumentationEstEng.gf @@ -2,5 +2,5 @@ -- documentation of Estonian in English -concrete DocumentationEstEng of Documentation = CatEst ** +concrete DocumentationEstEng of Documentation = CatEst ** DocumentationEstFunctor with (Terminology = TerminologyEng) ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index 4011c2c1f..a8e683430 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common -incomplete concrete DocumentationEstFunctor of Documentation = CatEst ** open +incomplete concrete DocumentationEstFunctor of Documentation = CatEst ** open Terminology, -- the interface ResEst, ParadigmsEst, @@ -30,17 +30,17 @@ lin s2 = inflNoun (\nf -> noun.s ! nf) } ; - InflectionA, InflectionA2 = \adj -> + InflectionA, InflectionA2 = \adj -> let posit : (AForm => Str) = adj.s ! Posit ; compar : (AForm => Str) = adj.s ! Compar ; superl : (AForm => Str) = adj.s ! Superl ; - in + in { t = "a" ; s1 = heading1 (heading adjective_Category) ; - s2 = inflNoun (\nf -> posit ! AN nf) ++ - heading2 (heading comparative_Parameter) ++ - inflNoun (\nf -> compar ! AN nf) ++ - heading2 (heading superlative_Parameter) ++ + s2 = inflNoun (\nf -> posit ! AN nf) ++ + heading2 (heading comparative_Parameter) ++ + inflNoun (\nf -> compar ! AN nf) ++ + heading2 (heading superlative_Parameter) ++ inflNoun (\nf -> superl ! AN nf) } ; @@ -58,91 +58,91 @@ lin InflectionV v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v)) ; s2 = inflVerb v } ; InflectionV2 v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ; s2 = inflVerb v } ; InflectionV3 v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ; s2 = inflVerb v } ; InflectionV2V v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (S.mkVP (L.sleep_V)))) ; s2 = inflVerb v } ; InflectionV2S v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin S (ss "...")))) ; s2 = inflVerb v } ; InflectionV2Q v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin QS (ss "...")))) ; s2 = inflVerb v } ; InflectionV2A v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v S.we_NP L.beautiful_A)) ; s2 = inflVerb v } ; InflectionVV v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ; s2 = inflVerb v } ; InflectionVS v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (lin S (ss "...")))) ; s2 = inflVerb v } ; InflectionVQ v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v (lin QS (ss "...")))) ; s2 = inflVerb v } ; InflectionVA v = { t = "v" ; - s1 = heading1 (heading verb_Category) ++ + s1 = heading1 (heading verb_Category) ++ paragraph (verbExample (S.mkCl S.she_NP v L.beautiful_A)) ; s2 = inflVerb v } ; -oper +oper verbExample : CatEst.Cl -> Str = \cl -> (S.mkUtt cl).s ; {- -} --# notpresent inflVerb : CatEst.V -> Str = \verb -> - let + let --verb = sverb2verbSep verb0 ; vfin : ResEst.VForm -> Str = \f -> verb.s ! f ; - + nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 -> (S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP n2))).s ; in @@ -152,7 +152,7 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Presn Sg P1)) ++ td (vfin (Presn Pl P1)) ++ intagAttr "td" "rowspan=3" (vfin (PassPresn True)) --# notpresent ) ++ @@ -167,13 +167,13 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Impf Sg P1)) ++ td (vfin (Impf Pl P1)) ++ intagAttr "td" "rowspan=3" (vfin (PassImpf True))) ++ tr (th "2.p" ++ td (vfin (Impf Sg P2)) ++ td (vfin (Impf Pl P2))) ++ tr (th "3.p" ++ td (vfin (Impf Sg P3)) ++ td (vfin (Impf Pl P3))) ++ tr (th (heading negative_Parameter) ++ - td (vfin (PastPart Act)) ++ + td (vfin (PastPart Act)) ++ td (vfin (PastPart Pass)) ++ td (vfin (PassImpf False))) ) ++ @@ -183,12 +183,12 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td (vfin (Condit Sg P1)) ++ td (vfin (Condit Pl P1)) ++ intagAttr "td" "rowspan=3" "TODO pass condit (nt loetaks)" --# notpresent ) ++ tr (th "2.p" ++ td (vfin (Condit Sg P2)) ++ td (vfin (Condit Pl P2))) ++ - tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) + tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) ) ++ heading3 (nounNounHeading present_Parameter quotative_Parameter) ++ frameTable ( @@ -196,8 +196,8 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ - tr (th "isik." ++ td (vfin (Quotative Act)) + ) ++ + tr (th "isik." ++ td (vfin (Quotative Act)) ++ intagAttr "td" "rowspan=3" (vfin (Quotative Act)) --# notpresent ) ++ tr (th "umbis." ++ td (vfin (Quotative Pass)) ++ td (vfin (Quotative Pass)) @@ -208,11 +208,11 @@ oper th (heading singular_Parameter) ++ th (heading plural_Parameter) ++ th (heading passive_Parameter) --# notpresent - ) ++ + ) ++ tr (th "1.p" ++ td "" ++ td (vfin ImperP1Pl) ++ intagAttr "td" "rowspan=3" (vfin ImperPass)) ++ tr (th "2.p" ++ td (vfin (Imper Sg)) ++ td (vfin (Imper Pl))) ++ - tr (th "3.p" ++ td (vfin (ImperP3)) ++ td (vfin ImperP3)) + tr (th "3.p" ++ td (vfin (ImperP3)) ++ td (vfin ImperP3)) ) ++ heading2 (nounPluralHeading nominal_form_ParameterType).s ++ heading3 (heading infinitive_Parameter) ++ @@ -221,32 +221,32 @@ oper th (heading nominative_Parameter) ++ td (vfin (Inf InfDa))) ++ tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfDes))) ++ - tr (intagAttr "th" "rowspan=5" "ma" ++ + tr (intagAttr "th" "rowspan=5" "ma" ++ th (heading illative_Parameter) ++ td (vfin (Inf InfMa))) ++ tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfMas))) ++ tr (th (heading elative_Parameter) ++ td (vfin (Inf InfMast))) ++ - tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ + tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ tr (th (heading translative_Parameter) ++ td (vfin (Inf InfMaks))) - ) ++ + ) ++ heading3 (heading participle_Parameter) ++ frameTable ( - tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++ - th (heading active_Parameter) ++ + tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++ + th (heading active_Parameter) ++ td (vfin (PresPart Act))) ++ - tr (th (heading passive_Parameter) ++ + tr (th (heading passive_Parameter) ++ td (vfin (PresPart Pass))) ++ - tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ - th (heading active_Parameter) ++ + tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ + th (heading active_Parameter) ++ td (vfin (PastPart Act ))) ++ - tr (th (heading passive_Parameter) ++ + tr (th (heading passive_Parameter) ++ td (vfin (PastPart Pass ))) ) ; --} - inflNoun : (NForm -> Str) -> Str = \nouns -> - frameTable ( + inflNoun : (NForm -> Str) -> Str = \nouns -> + frameTable ( tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++ tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++ @@ -274,6 +274,6 @@ lin MkTag i = ss (i.t) ; {- --# notpresent --} +-} } diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index b9be4010a..16ba9ea76 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -1,4 +1,4 @@ -concrete ExtraEst of ExtraEstAbs = CatEst ** +concrete ExtraEst of ExtraEstAbs = CatEst ** open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX) in { flags coding=utf8; lin @@ -6,7 +6,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** s,sp = \\_,_ => np.s ! NPCase Gen ; isNum = False ; isDef = True ; --- "Jussin kolme autoa ovat" ; thus "...on" is missing - isNeg = False + isNeg = False } ; GenCN = caseCN Gen ; -- soome mees @@ -18,11 +18,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; GenRP num cn = { - s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; - a = RNoAg + s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; + a = RNoAg --- a = RAg (agrP3 num.n) } ; - oper + oper caseCN : Case -> NP -> CN -> CN = \c,np,cn -> lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; @@ -37,17 +37,17 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** MkVPI vp = {s = \\i => infVP (NPCase Nom) Pos (agrP3 Sg) vp i} ; ConjVPI = conjunctDistrTable InfForm ; - ComplVPIVV vv vpi = + ComplVPIVV vv vpi = insertObj (\\_,_,_ => vpi.s ! vv.vi) (predV vv) ; lincat VPS = { - s : Agr => Str ; + s : Agr => Str ; sc : NPForm ; --- can be different for diff parts } ; [VPS] = { - s1,s2 : Agr => Str ; + s1,s2 : Agr => Str ; sc : NPForm ; --- take the first: minä osaan kutoa ja täytyy virkata } ; @@ -79,45 +79,45 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PassAgentVPSlash vp np = vp ; {- - s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; + s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; s2 = \\b,p,a => np.s ! NPCase Nom ++ vp.s2 ! b ! p ! a ; adv = vp.adv ; ext = vp.ext ; vptyp = vp.vptyp ; } ; -} - AdvExistNP adv np = - mkClause (\_ -> adv.s) np.a (insertObj + AdvExistNP adv np = + mkClause (\_ -> adv.s) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; RelExistNP prep rp np = { - s = \\t,ant,bo,ag => - let + s = \\t,ant,bo,ag => + let n = complNumAgr ag ; - cl = mkClause + cl = mkClause (\_ -> appCompl True Pos prep (rp2np n rp)) - np.a - (insertObj - (\\_,b,_ => np.s ! NPCase Nom) + np.a + (insertObj + (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; - in + in cl.s ! t ! ant ! bo ! SDecl ; c = NPCase Nom } ; AdvPredNP adv v np = - mkClause (\_ -> adv.s) np.a (insertObj + mkClause (\_ -> adv.s) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV v)) ; - ICompExistNP adv np = - let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj + ICompExistNP adv np = + let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; IAdvPredNP iadv v np = - let cl = mkClause (\_ -> iadv.s) np.a (insertObj + let cl = mkClause (\_ -> iadv.s) np.a (insertObj (\\_,b,_ => np.s ! v.sc) (predV v)) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl @@ -132,14 +132,14 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** n = Sg } ; - PartCN cn = - let + PartCN cn = + let acn = DetCN (DetQuant IndefArt NumSg) cn in { s = table { NPCase Nom | NPAcc => acn.s ! NPCase ResEst.Part ; c => acn.s ! c - } ; + } ; a = acn.a ; isPron = False ; isNeg = False } ; @@ -147,34 +147,34 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** --The reflexive possessive "oma" --for "ta näeb oma koera" instead of *"tema koera" OmaPoss = {s,sp = \\_,_ => "oma" ; isDef,isNeg,isNum = False} ; - + ma_Pron = shortPronoun "ma" "mu" "mind" "minu" Sg P1 ; sa_Pron = shortPronoun "sa" "su" "sind" "sinu" Sg P2; ta_Pron = shortPronoun "ta" "ta" "teda" "tema" Sg P3 ; - me_Pron = + me_Pron = {s = table { NPCase Nom => "me" ; - n => (we_Pron.s) ! n + n => (we_Pron.s) ! n } ; - a = Ag Pl P1 } ; + a = Ag Pl P1 } ; - te_Pron = + te_Pron = {s = table { NPCase Nom => "te" ; - n => (youPl_Pron.s) ! n + n => (youPl_Pron.s) ! n } ; - a = Ag Pl P2 } ; + a = Ag Pl P2 } ; nad_Pron = {s = table { NPCase Nom => "nad" ; - n => (they_Pron.s) ! n + n => (they_Pron.s) ! n } ; - a = Ag Pl P3 } ; + a = Ag Pl P3 } ; ---- copied from VerbEst.CompAP, should be shared ICompAP ap = { - s = \\agr => + s = \\agr => let n = complNumAgr agr ; c = case n of { @@ -187,68 +187,68 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** IAdvAdv adv = {s = "kui" ++ adv.s} ; ProDrop p = { - s = table {NPCase (Nom | Gen) => [] ; c => p.s ! c} ; + s = table {NPCase (Nom | Gen) => [] ; c => p.s ! c} ; ---- drop Gen only works in adjectival position a = p.a } ; - -- : Pron -> Quant ; + -- : Pron -> Quant ; ProDropPoss p = { s = \\_,_ => "oma" ; sp = \\_,_ => p.s ! NPCase Gen ; isNum = False ; - isDef = True ; + isDef = True ; isNeg = False } ; - lincat + lincat ClPlus, ClPlusObj, ClPlusAdv = ClausePlus ; Part = {s : Str} ; - lin - S_SVO part t p clp = - let + lin + S_SVO part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; - S_OSV part t p clp = - let + S_OSV part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ; - S_VSO part t p clp = - let + {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ; + S_VSO part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s in - {s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; - S_ASV part t p clp = - let + {s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ; + S_ASV part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s in - {s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ; - S_OVS part t p clp = - let + S_OVS part t p clp = + let cl = clp.s ! t.t ! t.a ! p.p ; pa = part.s ---- in - {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.adv ++ cl.ext} ; + {s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.adv ++ cl.ext} ; PredClPlus np vp = mkClausePlus (subjForm np vp.sc) np.a vp ; PredClPlusFocSubj np vp = insertKinClausePlus 0 (mkClausePlus (subjForm np vp.sc) np.a vp) ; PredClPlusFocVerb np vp = insertKinClausePlus 1 (mkClausePlus (subjForm np vp.sc) np.a vp) ; - PredClPlusObj np vps obj = + PredClPlusObj np vps obj = insertObjClausePlus 0 False (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ; - PredClPlusFocObj np vps obj = + PredClPlusFocObj np vps obj = insertObjClausePlus 0 True (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ; - PredClPlusAdv np vp adv = + PredClPlusAdv np vp adv = insertObjClausePlus 1 False (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ; - PredClPlusFocAdv np vp adv = + PredClPlusFocAdv np vp adv = insertObjClausePlus 1 True (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ; ClPlusWithObj c = c ; @@ -256,4 +256,4 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** gi_Part = ss "gi" | ss "ki" ; -} +} diff --git a/src/estonian/ExtraEstAbs.gf b/src/estonian/ExtraEstAbs.gf index 0e09f3d4a..326a960f4 100644 --- a/src/estonian/ExtraEstAbs.gf +++ b/src/estonian/ExtraEstAbs.gf @@ -33,7 +33,7 @@ abstract ExtraEstAbs = Extra [ me_Pron : Pron ; te_Pron : Pron ; nad_Pron : Pron ; - + OmaPoss : Quant ; -- Reflexive possessive "oma" ProDropPoss : Pron -> Quant ; -- vaimoni --TODO Is this relevant in Estonian? Is the agreement of pronoun ever needed, or is it the same as oma? diff --git a/src/estonian/GrammarEst.gf b/src/estonian/GrammarEst.gf index 93d2120c8..1daf4bd42 100644 --- a/src/estonian/GrammarEst.gf +++ b/src/estonian/GrammarEst.gf @@ -1,6 +1,6 @@ -concrete GrammarEst of Grammar = - NounEst, - VerbEst, +concrete GrammarEst of Grammar = + NounEst, + VerbEst, AdjectiveEst, AdverbEst, NumeralEst, diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index b7e50c81c..c4e3657a5 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -1,11 +1,11 @@ -concrete IdiomEst of Idiom = CatEst ** +concrete IdiomEst of Idiom = CatEst ** open MorphoEst, ParadigmsEst, Prelude in { flags optimize=all_subs ; coding=utf8; lin - ExistNP np = - let + ExistNP np = + let cas : Polarity -> NPForm = \p -> case p of { Pos => NPCase Nom ; -- on olemas lammas Neg => NPCase Part -- ei ole olemas lammast @@ -14,7 +14,7 @@ concrete IdiomEst of Idiom = CatEst ** in existClause noSubj (agrP3 Sg) vp ; - ExistIP ip = + ExistIP ip = let cas : NPForm = NPCase Nom ; ---- also partitive in Extra vp = insertObj (\\_,b,_ => "olemas") (predV olla) ; @@ -45,11 +45,11 @@ concrete IdiomEst of Idiom = CatEst ** adv = vp.adv ; p = vp.p ; ext = vp.ext ; - sc = vp.sc ; + sc = vp.sc ; } ; - ProgrVP vp = - let + ProgrVP vp = + let inf = (vp.s ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; on = predV olla in { @@ -58,16 +58,16 @@ concrete IdiomEst of Idiom = CatEst ** adv = vp.adv ; p = vp.p ; ext = vp.ext ; - sc = vp.sc ; + sc = vp.sc ; } ; -- This gives "otetaan oluet" instead of "ottakaamme oluet". -- The imperative is not available in a $VP$. - ImpPl1 vp = + ImpPl1 vp = let vps = vp.s ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 in - {s = vps.fin ++ vps.inf ++ + {s = vps.fin ++ vps.inf ++ vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.p ++ vp.ext } ; diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index fb7634579..ca2e1cb90 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -1,6 +1,6 @@ concrete LexiconEst of Lexicon = CatEst ** open MorphoEst, ParadigmsEst, Prelude in { -flags +flags optimize=values ; coding=utf8; @@ -216,7 +216,7 @@ lin yellow_A = mkA (mkN "kollane" "kollase" "kollast" "kollasesse" "kollaste" "kollaseid") ; young_A = mkA (mkN "noor" "noore" "noort") ; - do_V2 = mkV2 (mkV "tegema" "teha") ; + do_V2 = mkV2 (mkV "tegema" "teha") ; now_Adv = mkAdv "nüüd" ; already_Adv = mkAdv "juba" ; diff --git a/src/estonian/MakeStructuralEst.gf b/src/estonian/MakeStructuralEst.gf index 97614ef7b..0b17be122 100644 --- a/src/estonian/MakeStructuralEst.gf +++ b/src/estonian/MakeStructuralEst.gf @@ -1,9 +1,9 @@ resource MakeStructuralEst = open CatEst, ParadigmsEst, MorphoEst, Prelude in { -oper - mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> +oper + mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> + mkSubj : Str -> Subj = \x -> {s = x ; lock_Subj = <>} ; mkIQuant : Str -> IQuant = \s -> {s = \\n,c => s ; lock_IQuant = <>} ; ---- diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index dfd3af921..e7cc6e532 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -11,7 +11,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { flags optimize=all ; coding=utf8; oper - + ---------------------- -- morph. paradigms -- ---------------------- @@ -19,7 +19,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { --Noun paradigms in HjkEst --Comparative adjectives - --(could just use hjk_type_IVb_audit "suurem" "a") + --(could just use hjk_type_IVb_audit "suurem" "a") -- Comparative adjectives inflect in the same way -- TODO: confirm this dSuurempi : Str -> NForms = \suurem -> @@ -47,17 +47,17 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { saama (saa + "da") (saa + "b") - (saa + "dakse") + (saa + "dakse") (saa + "ge") -- Imper Pl sai - (saa + "nud") + (saa + "nud") (saa + "dud") ; -- TS 49 -- no d/t in da, takse ; imperfect 3sg ends in s cKaima : (_ : Str) -> VForms = \kaima -> let - kai = Predef.tk 2 kaima ; + kai = Predef.tk 2 kaima ; in vForms8 kaima (kai + "a") @@ -65,10 +65,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (kai + "akse") (kai + "ge") (kai + "s") - (kai + "nud") + (kai + "nud") (kai + "dud") ; - -- TS 49 + -- TS 49 -- vowel changes in da, takse, no d/t ; imperfect 3sg ends in i cJooma : (_ : Str) -> VForms = \jooma -> let @@ -78,7 +78,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { u = case o of { "o" => "u" ; "ö" => "ü" ; - _ => o + _ => o } ; q = case o of { ("o"|"ö") => "õ" ; @@ -91,9 +91,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { juua (joo + "b") (juua + "kse") - (joo + "ge") + (joo + "ge") j6i - (joo + "nud") + (joo + "nud") (joo + "dud") ; -- TS 50-52 (elama, muutuma, kirjutama), 53 (tegelema) alt forms @@ -105,10 +105,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { elama (ela + "da") (ela + "b") - (ela + "takse") + (ela + "takse") (ela + "ge") -- Imperative P1 Pl - (ela + "s") -- Imperfect P3 Sg - (ela + "nud") + (ela + "s") -- Imperfect P3 Sg + (ela + "nud") (ela + "tud") ; -- TS 53 (tegelema) @@ -121,12 +121,12 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { tegelema (tegel + "da") (tegele + "b") - (tegel + "dakse") + (tegel + "dakse") (tegel + "ge") -- Imperative P1 Pl - (tegele + "s") -- Imperfect P3 Sg - (tegel + "nud") - (tegel + "dud") ; - + (tegele + "s") -- Imperfect P3 Sg + (tegel + "nud") + (tegel + "dud") ; + -- TS 54 (tulema) -- consonant assimilation (l,r,n) in da, takse -- d in tud, g in ge @@ -146,7 +146,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (tul + "i") (tul + "nud") (tul + "dud") ; - + -- TS 55-56 (õppima, sündima) -- t in takse, tud ; consonant gradation on stem cLeppima : (_ : Str) -> VForms = \leppima -> @@ -154,7 +154,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { leppi = Predef.tk 2 leppima ; i = last leppi ; lepp = init leppi ; - lepi = (weaker lepp) + i + lepi = (weaker lepp) + i in vForms8 leppima (leppi + "da") @@ -164,7 +164,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (leppi + "s") -- Imperfect P3 Sg (leppi + "nud") (lepi + "tud") ; - + -- TS 57 (lugema) -- Like 55-56 but irregular gradation patterns, that shouldn't be in HjkEst.weaker --including also marssima,valssima @@ -184,7 +184,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { _ + ("uge"|"ude") => l + "oe" ; _ + #c + "ssi" => (init lug) + e; - _ => (weaker lug) + e + _ => (weaker lug) + e } ; in vForms8 lugema @@ -195,8 +195,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (luge + "s") -- Imperfect P3 Sg (luge + "nud") (loe + "tud") ; - - + + -- TS 58 muutma, saatma, -- like laskma (TS 62, 64), but no reduplication of stem consonant (muutma~muuta, not *muutta) -- like andma (TS 63) but different takse (muudetakse vs. antakse) @@ -213,8 +213,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (muut + "is") (muut + "nud") (muud + "etud") ; -- always e? - - -- TS 59-60 (petma~petetakse, jätma~jäetakse) + + -- TS 59-60 (petma~petetakse, jätma~jäetakse) -- takse given as second argument cPetma : (_,_ : Str) -> VForms = \petma,jaetakse -> let @@ -251,8 +251,8 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (jatt + "is") (jat + "nud") (ko + "etud") ; --} - +-} + -- TS 61 (laulma) --vowel (a/e) given with the second argument --veenma,naerma @@ -268,7 +268,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (kuul + "is") (kuul + "nud") (kuul + "dud") ; - + -- TS 62 (tõusma), 64 (mõksma) -- vowel (a/e) given with the second argument -- doesn't give alt. forms joosta, joostes @@ -283,9 +283,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (las + "takse") (las + "ke") (lask + "is") - (lask + "nud") + (lask + "nud") (las + "tud") ; - + -- TS 62 alt forms cJooksma : (_ : Str) -> VForms = \jooksma -> let @@ -298,10 +298,10 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (joos + "takse") (joos + "ke") (jooks + "is") - (jooks + "nud") + (jooks + "nud") (joos + "tud") ; - -- TS 63 (andma, murdma, hoidma) + -- TS 63 (andma, murdma, hoidma) -- vowel given in second arg (andma~annab; tundma~tunneb) cAndma : (_,_ : Str) -> VForms = \andma,annab -> let @@ -310,18 +310,18 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { ann = weaker and ; --murr, hoi te = case (last ann) of { --to prevent teadma~teaab "a" => init ann ; - _ => ann + _ => ann } ; in vForms8 andma (and + "a") - annab + annab (an + "takse") (and + "ke") (and + "is") (and + "nud") (an + "tud") ; - + -- TS 65 (pesema) -- a consonant stem verb in disguise cPesema : (_ : Str) -> VForms = \pesema -> @@ -356,9 +356,9 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (nag + "i") (nai + "nud") (nah + "tud") ; - - - -- TS 67-68 (hüppama, tõmbama) + + + -- TS 67-68 (hüppama, tõmbama) -- strong stem in ma, b, s -- weak stem in da, takse, ge, nud, tud -- t in da, takse; k in ge @@ -387,7 +387,7 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { omb = Predef.tk 2 omble ; omm = case omb of { "mõt" => "mõe" ; --some "double weak" patterns; however weaker (weaker omb) makes the coverage worse - _ => weaker omb + _ => weaker omb } ; ommel = omm + e + l ; in vForms8 @@ -445,22 +445,22 @@ These used to be here: aForms2A : AForms -> Adjective = \afs -> { s = table { Posit => table { - AN n => (nForms2N afs.posit).s ! n ; + AN n => (nForms2N afs.posit).s ! n ; AAdv => afs.adv_posit } ; Compar => table { - AN n => (nForms2N afs.compar).s ! n ; + AN n => (nForms2N afs.compar).s ! n ; AAdv => afs.adv_compar } ; Superl => table { - AN n => (nForms2N afs.superl).s ! n ; + AN n => (nForms2N afs.superl).s ! n ; AAdv => afs.adv_superl } } ; lock_A = <> } ; - nforms2aforms : NForms -> AForms = \nforms -> + nforms2aforms : NForms -> AForms = \nforms -> let suure = init (nforms ! 1) ; suur = Predef.tk 4 (nforms ! 8) ; @@ -477,7 +477,7 @@ These used to be here: These used to be here: VForms : Type = Predef.Ints 7 => Str ; - vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; + vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; regVForms : (x1,_,_,x4 : Str) -> VForms ; vforms2V : VForms -> Verb ; -} @@ -487,7 +487,7 @@ These used to be here: -- for Structural ----------------------- -caseTable : Number -> Noun -> Case => Str = \n,cn -> +caseTable : Number -> Noun -> Case => Str = \n,cn -> \\c => cn.s ! NCase n c ; mkDet : Number -> Noun -> { @@ -510,11 +510,11 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- TODO: remove NPAcc? -- I: keep NPAcc; see appCompl in ResEst, it takes care of finding a right case for various types of complements; incl. when pronouns get different treatment than nouns (PassVP). mkPronoun : (_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr} = + {s : NPForm => Str ; a : Agr} = \mina, minu, mind, n, p -> let { minu_short = ie_to_i minu - } in + } in {s = table { NPCase Nom => mina ; NPCase Gen => minu ; @@ -533,7 +533,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPAcc => mind } ; a = Ag n p - } ; + } ; -- meiesse/teiesse -> meisse/teisse ie_to_i : Str -> Str ; @@ -543,14 +543,14 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> _ => x } ; - shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr} = + shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> + {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> let shortMa = mkPronoun ma mu mind n p ; mulle : Str = case mu of { - "mu" => "mulle" ; + "mu" => "mulle" ; "su" => "sulle" ; - _ => shortMa.s ! NPCase Allat + _ => shortMa.s ! NPCase Allat } ; in shortMa ** { s = table { @@ -561,18 +561,18 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPCase Comit => minu + "ga" ; NPCase Termin => minu + "ni" ; x => shortMa.s ! x } } ; - + oper - relPron : NForm => Str = - let mis = nForms2N (nForms6 "mis" "mille" "mida" "millesse" "mille" "mida") - in fixPlNom "mis" mis.s ; + relPron : NForm => Str = + let mis = nForms2N (nForms6 "mis" "mille" "mida" "millesse" "mille" "mida") + in fixPlNom "mis" mis.s ; kesPron : NForm => Str = - let kes = nForms2N (nForms6 "kes" "kelle" "keda" "kellesse" "kelle" "keda") + let kes = nForms2N (nForms6 "kes" "kelle" "keda" "kellesse" "kelle" "keda") in fixPlNom "kes" kes.s ; ProperName = {s : Case => Str} ; @@ -613,7 +613,7 @@ oper Allat => "nendele" ; Abess => "nendeta" ; Comit => "nendega" ; - Termin => "nendeni" + Termin => "nendeni" } ; } ; diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index 2d873ab65..3b65059c1 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -7,15 +7,15 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in -- The $Number$ is subtle: "nuo autot", "nuo kolme autoa" are both plural -- for verb agreement, but the noun form is singular in the latter. - DetCN det cn = + DetCN det cn = let n : Number = case det.isNum of { True => Sg ; _ => det.n } ; ncase : NPForm -> Case * NForm = \c -> - let k = npform2case n c - in + let k = npform2case n c + in case of { <_, NPAcc, True,_> => ; -- kolm kassi (as object) <_, NPCase Nom, True,_> => ; -- kolm kassi (as subject) @@ -25,12 +25,12 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in <_, NPCase Abess, _, _> => ; -- kolme kassita <_, NPCase Ess, _, _> => ; -- kolme kassina <_, NPCase Termin,_, _> => ; -- kolme kassini - + <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } in { - s = \\c => let + s = \\c => let k = ncase c ; in det.s ! k.p1 ++ cn.s ! k.p2 ; @@ -42,7 +42,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isPron = False } ; - DetNP det = + DetNP det = let n : Number = case det.isNum of { True => Sg ; @@ -50,7 +50,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; in { s = \\c => let k = npform2case n c in - det.sp ! k ; + det.sp ! k ; a = agrP3 (case det.isDef of { False => Sg ; -- autoja menee; kolme autoa menee _ => det.n @@ -59,7 +59,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; UsePN pn = { - s = \\c => pn.s ! npform2case Sg c ; + s = \\c => pn.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; @@ -72,10 +72,10 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; PPartNP np v2 = - let + let num : Number = complNumAgr np.a ; part : Str = v2.s ! (PastPart Pass) ; - adj : NForms = hjk_type_IVb_maakas part ; + adj : NForms = hjk_type_IVb_maakas part ; partGen : Str = adj ! 1 ; partEss : Str = partGen + "na" in { @@ -91,8 +91,8 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } ; DetQuantOrd quant num ord = { - s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; n = num.n ; isNum = num.isNum ; isDef = quant.isDef @@ -135,19 +135,19 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in NumCard n = n ** {isNum = case n.n of {Sg => False ; _ => True}} ; -- üks raamat/kaks raamatut NumDigits numeral = { - s = \\n,c => numeral.s ! NCard (NCase n c) ; - n = numeral.n + s = \\n,c => numeral.s ! NCard (NCase n c) ; + n = numeral.n } ; OrdDigits numeral = {s = \\nc => numeral.s ! NOrd nc} ; NumNumeral numeral = { - s = \\n,c => numeral.s ! NCard (NCase n c) ; + s = \\n,c => numeral.s ! NCard (NCase n c) ; n = numeral.n } ; OrdNumeral numeral = {s = \\nc => numeral.s ! NOrd nc} ; AdNum adn num = { - s = \\n,c => adn.s ++ num.s ! n ! c ; + s = \\n,c => adn.s ++ num.s ! n ! c ; n = num.n } ; @@ -156,17 +156,17 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in OrdSuperl a = {s = \\nc => "kõige" ++ a.s ! Compar ! AN nc} ; DefArt = { - s = \\_,_ => [] ; - sp = table {Sg => pronSe.s ; Pl => pronNe.s} ; + s = \\_,_ => [] ; + sp = table {Sg => pronSe.s ; Pl => pronNe.s} ; isNum = False ; isDef = True -- autot ovat } ; IndefArt = { s = \\_,_ => [] ; --use isDef in DetCN - sp = \\n,c => - (nForms2N (nForms6 "üks" "ühe" "üht" "ühesse" "ühtede" - "ühtesid")).s ! NCase n c ; + sp = \\n,c => + (nForms2N (nForms6 "üks" "ühe" "üht" "ühesse" "ühtede" + "ühtesid")).s ! NCase n c ; isNum,isDef = False -- autoja on } ; @@ -176,7 +176,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in ncase : Case -> NForm = \c -> NCase n c ; in { s = \\c => let k = npform2case n c in - cn.s ! ncase k ; + cn.s ! ncase k ; a = agrP3 Sg ; isPron = False } ; @@ -209,21 +209,21 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in AdjCN ap cn = { - s = \\nf => + s = \\nf => case ap.infl of { - (Invariable|Participle) => ap.s ! True ! (NCase Sg Nom) ++ cn.s ! nf ; --valmis kassile; väsinud kassile - Regular => case nf of { - NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! (NCase num Gen) ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga + Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile + Regular => case nf of { + NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! NCase num Gen ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga _ => ap.s ! True ! nf ++ cn.s ! nf - } - } + } + } } ; RelCN cn rs = {s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf)} ; RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; + s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; + a = np.a ; isPron = np.isPron ---- correct ? } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 033dc3acf..5f74e4725 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -2,12 +2,12 @@ -- -- Based on the Finnish Lexical Paradigms by Aarne Ranta 2003--2008 -- --- This is an API to the user of the resource grammar +-- This is an API to the user of the resource grammar -- for adding lexical items. It gives functions for forming -- expressions of open categories: nouns, adjectives, verbs. --- +-- -- Closed categories (determiners, pronouns, conjunctions) are --- accessed through the resource syntax API and $Structural.gf$. +-- accessed through the resource syntax API and $Structural.gf$. -- -- The main difference with $MorphoEst.gf$ is that the types -- referred to are compiled resource grammar types. We have moreover @@ -23,9 +23,9 @@ -- @author Kaarel Kaljurand -- @version 2013-10-21 -resource ParadigmsEst = open - (Predef=Predef), - Prelude, +resource ParadigmsEst = open + (Predef=Predef), + Prelude, MorphoEst, HjkEst, CatEst @@ -33,9 +33,9 @@ resource ParadigmsEst = open flags optimize=noexpand ; coding=utf8; ---2 Parameters +--2 Parameters -- --- To abstract over gender, number, and (some) case names, +-- To abstract over gender, number, and (some) case names, -- we define the following identifiers. The application programmer -- should always use these constants instead of the constructors -- defined in $ResEst$. @@ -83,15 +83,15 @@ oper --2 Conjunctions, adverbs - mkAdv : Str -> Adv ; - mkAdV : Str -> AdV ; - mkAdN : Str -> AdN ; - mkAdA : Str -> AdA ; + mkAdv : Str -> Adv ; + mkAdV : Str -> AdV ; + mkAdN : Str -> AdN ; + mkAdA : Str -> AdA ; mkConj : overload { mkConj : Str -> Conj ; -- just one word, default number Sg: e.g. "ja" mkConj : Str -> Number -> Conj ; --just one word + number: e.g. "ja" Pl - mkConj : Str -> Str -> Conj ; --two words, default number: e.g. "nii" "kui" + mkConj : Str -> Str -> Conj ; --two words, default number: e.g. "nii" "kui" mkConj : Str -> Str -> Number -> Conj ; --two words + number: e.g. "nii" "kui" Pl } ; @@ -139,7 +139,7 @@ oper -- Non-comparison one-place adjectives are just like nouns. -- The regular adjectives are based on $regN$ in the positive. --- Comparison adjectives have three forms. +-- Comparison adjectives have three forms. -- The comparative and the superlative -- are always inflected in the same way, so the nominative of them is actually -- enough (TODO: confirm). @@ -156,7 +156,7 @@ oper mkA2 : A -> Prep -> A2 -- e.g. "vihane" (postGenPrep "peale") = \a,p -> a ** {c2 = p ; lock_A2 = <>}; - invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. + invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. --2 Verbs -- @@ -237,8 +237,8 @@ oper mkV2V : V -> Prep -> V2V ; -- e.g. "käskima" adessive mkV2V : Str -> V2V ; -- e.g. "käskima" adessive } ; - mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "keelama" partitive infMast - + mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "keelama" partitive infMast + mkVA : overload { mkVA : V -> Prep -> VA ; -- e.g. "muutuma" translative mkVA : Str -> VA ; -- string, default case translative @@ -248,21 +248,21 @@ oper mkV2A : V -> Prep -> Prep -> V2A ; -- e.g. "värvima" genitive translative mkV2A : Str -> V2A ; -- string, default cases genitive and translative } ; - + mkVQ : overload { - mkVQ : V -> VQ ; - mkVQ : Str -> VQ ; + mkVQ : V -> VQ ; + mkVQ : Str -> VQ ; } ; - mkV2Q : V -> Prep -> V2Q ; -- e.g. "küsima" ablative + mkV2Q : V -> Prep -> V2Q ; -- e.g. "küsima" ablative mkAS : A -> AS ; --% mkA2S : A -> Prep -> A2S ; --% mkAV : A -> AV ; --% mkA2V : A -> Prep -> A2V ; --% --- Notice: categories $AS, A2S, AV, A2V$ are just $A$, +-- Notice: categories $AS, A2S, AV, A2V$ are just $A$, -- and the second argument is given --- as an adverb. Likewise +-- as an adverb. Likewise -- $V0$ is just $V$. V0 : Type ; --% @@ -290,13 +290,13 @@ oper translative = Transl ; terminative = Termin ; essive = Ess ; - abessive = Abess ; + abessive = Abess ; comitative = Comit ; - + infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; - prePrep : Case -> Str -> Prep = + prePrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; postPrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = False ; lock_Prep = <>} ; @@ -313,7 +313,7 @@ oper mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; - + mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; mkConj : Str -> Number -> Conj = \ja,num -> lin Conj ((sd2 "" ja) ** {n = num}) ; @@ -335,12 +335,12 @@ oper } ; -- Adjective forms (incl. comp and sup) are derived from noun forms - mk1A : Str -> A = \suur -> - let aforms = aForms2A (nforms2aforms (hjk_type suur)) + mk1A : Str -> A = \suur -> + let aforms = aForms2A (nforms2aforms (hjk_type suur)) in aforms ** {infl = Regular } ; - - mkNA : N -> A = \suur -> - let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; + + mkNA : N -> A = \suur -> + let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; in aforms ** {infl = Regular } ; @@ -348,28 +348,28 @@ oper -- mk2N, mk3N, mk4N make sure that the user specified forms end up in the paradigm, -- even though the rest is wrong - mk2N : (link,lingi : Str) -> N = \link,lingi -> - let nfs : NForms = (nForms2 link lingi) ; + mk2N : (link,lingi : Str) -> N = \link,lingi -> + let nfs : NForms = (nForms2 link lingi) ; nfs_fixed : NForms = table { 0 => link ; 1 => lingi ; 2 => nfs ! 2 ; 3 => nfs ! 3 ; 4 => nfs ! 4 ; - 5 => nfs ! 5 + 5 => nfs ! 5 } ; in nForms2N nfs_fixed ** {lock_N = <> } ; - mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> - let nfs : NForms = (nForms3 tukk tuku tukku) ; + mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> + let nfs : NForms = (nForms3 tukk tuku tukku) ; nfs_fixed : NForms = table { 0 => tukk ; 1 => tuku ; 2 => tukku ; 3 => nfs ! 3 ; 4 => nfs ! 4 ; - 5 => nfs ! 5 + 5 => nfs ! 5 } ; in nForms2N nfs_fixed ** {lock_N = <> } ; @@ -381,7 +381,7 @@ oper 1 => paadi ; 2 => paati ; 3 => nfs ! 3 ; - 4 => nfs ! 4 ; + 4 => nfs ! 4 ; 5 => paate } ; in nForms2N nfs_fixed ** {lock_N = <> } ; @@ -510,7 +510,7 @@ oper -- voolik/vooliku/voolikut <_ + #c, _ + #v, _ + #v + "t"> => hjk_type_IVb_audit tukk u ; - _ => nForms2 tukk tuku + _ => nForms2 tukk tuku } ; nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paate -> @@ -518,33 +518,33 @@ oper -- distinguish between joonis and segadus <_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ; <_ +("ne"|"s"), _+"se", _+"st", _+"si"> => hjk_type_Vb_oluline paat ; - + <_ +"ne", _+"se", _+"set", _+"seid"> => nForms3 paat paadi paati ; -- -ne adjectives ('algne') are not like 'tõuge' --distinguish between kõne and aine - <_ +"e", _+"e", _+"et", _+"sid"> => hjk_type_III_ratsu paat ; + <_ +"e", _+"e", _+"et", _+"sid"> => hjk_type_III_ratsu paat ; <_ +"e", _+"e", _+"et", _+"eid"> => hjk_type_VII_touge2 paat paadi ; - _ => nForms3 paat paadi paati + _ => nForms3 paat paadi paati } ; {- --Version that uses pl gen instead of pl part - nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide -> + nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide -> case of { -- pl gen can't distinguish between joonis and segadus -- <_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ; -- <_ +("ne"|"s"), _+"se", _+"st", _+"si"> => hjk_type_Vb_oluline paat ; - + --pl gen can distinguish between kõne and aine --plus side that any noun that is formed with 4-arg, - --the user given forms are inserted to the paradigm, + --the user given forms are inserted to the paradigm, --and more forms are created from pl gen, none from pl part - <_ +"e", _+"e", _+"et", _+"de"> => hjk_type_III_ratsu paat ; + <_ +"e", _+"e", _+"et", _+"de"> => hjk_type_III_ratsu paat ; <_ +"e", _+"e", _+"et", _+"te"> => hjk_type_VII_touge2 paat paadi ; - _ => nForms3 paat paadi paati - } ; + _ => nForms3 paat paadi paati + } ; -} mkN2 = overload { @@ -553,12 +553,12 @@ oper } ; mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ; - mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; + mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista lock_N3 = <> } ; - + mkIsPre : Prep -> Bool = \p -> case p.c of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) _ => True -- syyte Jussia vastaan, puhe Jussin puolesta @@ -588,7 +588,7 @@ oper mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ; -- auxiliaries - mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> + mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> {s = table { Posit => hea.s ; Compar => parem.s ; @@ -601,8 +601,8 @@ oper -- Adjectives whose comparison forms are explicitly given. -- The inflection of these forms with the audit-rule always works. regAdjective : Noun -> Str -> Str -> A = \posit,compar,superl -> - mkAdjective - (noun2adj posit) + mkAdjective + (noun2adj posit) (noun2adjComp False (nForms2N (hjk_type_IVb_audit compar "a"))) (noun2adjComp False (nForms2N (hjk_type_IVb_audit superl "a"))) ; @@ -637,31 +637,31 @@ oper mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs } ; - mk1V : Str -> V = \s -> - let vfs = vforms2V (vForms1 s) in + mk1V : Str -> V = \s -> + let vfs = vforms2V (vForms1 s) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk2V : (_,_ : Str) -> V = \x,y -> - let - vfs = vforms2V (vForms2 x y) + mk2V : (_,_ : Str) -> V = \x,y -> + let + vfs = vforms2V (vForms2 x y) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk3V : (_,_,_ : Str) -> V = \x,y,z -> - let - vfs = vforms2V (vForms3 x y z) + mk3V : (_,_,_ : Str) -> V = \x,y,z -> + let + vfs = vforms2V (vForms3 x y z) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> - let + mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> + let vfs = vforms2V (vForms4 a b c d) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> + mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> let vfs = vforms2V (vForms8 a b c d e f g h) in vfs ** {sc = NPCase Nom ; lock_V = <>} ; mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> {s = saama.s ; p = aru ; sc = saama.sc ; lock_V = <> } ; - - - -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) - -- regexp example: ("" | ?) + ("a" | "e" | "i") + _ + "aa" => + + + -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) + -- regexp example: ("" | ?) + ("a" | "e" | "i") + _ + "aa" => vForms1 : Str -> VForms = \lugema -> let luge = Predef.tk 2 lugema ; @@ -672,7 +672,7 @@ oper -- Small class of CVVma ? + ("ä"|"õ"|"i") + "ima" => cKaima lugema ; --käima,viima,võima - ? + ("aa"|"ee"|"ää") + "ma" => + ? + ("aa"|"ee"|"ää") + "ma" => cSaama lugema ; -- saama,jääma,keema ? + ("oo"|"öö"|"üü") + "ma" => cJooma lugema ; --jooma,looma,lööma,müüma,pooma,sööma,tooma @@ -680,30 +680,30 @@ oper -- TS 53 _ + #c + #v + "elema" => cTegelema lugema ; --not aelema - + -- TS 54 -- Small class, just list all members ("tule"|"sure"|"pane") + "ma" => cTulema lugema ; - + -- TS 55-57 -- Consonant gradation -- Regular (55-56)'leppima' and irregular (57) 'lugema' -- For reliable results regarding consonant gradation, use mk3V _ + "ndima" => cLeppima lugema ; - _ + #lmnr + ("k"|"p"|"t"|"b") + ("ima"|"uma") => + _ + #lmnr + ("k"|"p"|"t"|"b") + ("ima"|"uma") => cLeppima lugema ; - _ + ("sk"|"ps"|"ks"|"ts"|"pl") + ("ima") => --|"uma") => + _ + ("sk"|"ps"|"ks"|"ts"|"pl") + ("ima") => --|"uma") => cLeppima lugema ; - _ + ("hk"|"hm"|"hn"|"hr"|"ht") + ("ima") => --most *hCuma are TS 51 (muutuma) + _ + ("hk"|"hm"|"hn"|"hr"|"ht") + ("ima") => --most *hCuma are TS 51 (muutuma) cLeppima lugema ; _ + #c + "ssima" => --weaker *ss = *ss; should be weaker Css = Cs cLugema lugema ; - _ + ("pp"|"kk"|"tt"|"ss"|"ff"|"nn"|"mm"|"ll"|"rr") + ("ima"|"uma") => + _ + ("pp"|"kk"|"tt"|"ss"|"ff"|"nn"|"mm"|"ll"|"rr") + ("ima"|"uma") => cLeppima lugema ; - - -- TS 59 (petma, tapma) + + -- TS 59 (petma, tapma) -- Use mk4V for TS 60 (jätma, võtma) ? + #v + ("tma"|"pma") => cPetma lugema (luge + "etakse") ; @@ -714,31 +714,31 @@ oper -- TS 61 (laulma,kuulma,naerma,möönma) -- Default vowel e for lma, a for (r|n)ma. -- Other vowel with mk3V. - _ + "lma" => - cKuulma lugema (loe + "eb") ; + _ + "lma" => + cKuulma lugema (loe + "eb") ; _ + ("r"|"n") + "ma" => cKuulma lugema (loe + "ab") ; - + -- TS 63 (andma,hoidma) -- Other vowel than a (tundma~tunneb) with mk3V _ + "dma" => cAndma lugema (loe + "ab") ; - + -- TS 62, 64 (tõusma,mõskma), default vowel e -- 62 alt form (jooksma,joosta) with mk2V -- Other vowel than e with mk3V - _ + #c + "ma" => + _ + #c + "ma" => cLaskma lugema (loe + "eb") ; - + -- TS 65 (pesema) #c + #v + "sema" => cPesema lugema ; - + -- TS 66 (nägema) -- Small class, just list all members ("nägema"|"tegema") => cNagema lugema ; - + -- TS 67-68 with mk2V -- no 100% way to distinguish from 50-52 that end in ama @@ -754,7 +754,7 @@ oper -- Default case _ => cElama lugema - } ; + } ; vForms2 : (_,_ : Str) -> VForms = \petma,petta -> -- Arguments: ma infinitive, da infinitive @@ -781,22 +781,22 @@ oper -- * Non-detectable gradation (sattuma~satub ; pettuma~pettub) -- * Non-default vowel in b for TS 58-64 (laulma~laulab) case of { - + --to be sure about vowel in b <_ + "dma", _ + "da", _> => cAndma taguma taob ; <_, _ + #vv + #lmnr + "da", _> => cKuulma taguma taob ; - <_, _ + #c + "ta", _> => cLaskma taguma taob ; + <_, _ + #c + "ta", _> => cLaskma taguma taob ; --irregular gradation <_, _, (""|#c) + #c + #v + #v + "b"> => cLugema taguma ; --57 --to be sure about consonant gradation <_ + #c + "lema", _, _> => vForms2 taguma taguda ; --catch "-Clema" first - <_ + #v + "ma", _+"da", _> => cSattumaPettuma taguma taob ; + <_ + #v + "ma", _+"da", _> => cSattumaPettuma taguma taob ; - <_,_,_> => vForms2 taguma taguda + <_,_,_> => vForms2 taguma taguda } ; - + vForms4 : (x1,_,_,x4 : Str) -> VForms = \jatma,jatta,jatab,jaetakse -> -- 4 forms needed to get full paradigm for regular verbs -- (source: http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=227) @@ -804,7 +804,7 @@ oper -- Filter out known irregularities and give rest to regVForms. -- Not trying to match TS 49 ; can't separate käima (49) from täima (50), or detect compounds like taaslooma. case of { - <_, _+("kka"|"ppa"|"tta"), + <_, _+("kka"|"ppa"|"tta"), _, _+"takse"> => cPetma jatma jaetakse ; <_ + "dma", _, _, _+"takse"> => cAndma jatma jatab ; @@ -813,15 +813,15 @@ oper <_, _ + "ha", _, _> => cNagema jatma ; <_ + #v + "sema", _ + "sta", _, _> => cPesema jatma ; <_,_,_,_> => regVForms jatma jatta jatab jaetakse - } ; - + } ; + caseV c v = {s = v.s ; p = v.p; sc = NPCase c ; lock_V = <>} ; vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ; - caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; + caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; dirV2 v = mk2V2 v accPrep ; @@ -837,13 +837,13 @@ oper dirV2 : V -> V2 ; mkV3 = overload { - mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; - mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; + mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; + mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; + c3 = (casePrep allative) ; + lock_V3 = <>} ; + mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; + c3 = (casePrep allative) ; + lock_V3 = <>} ; } ; dirV3 v p = mkV3 v accPrep (casePrep p) ; dirdirV3 v = dirV3 v allative ; @@ -855,7 +855,7 @@ oper mkVV = overload { mkVV : V -> VV = \v -> mkVVf v infDa ; mkVV : Str -> VV = \str -> mkVVf (mkV str) infDa ; - } ; + } ; mkVVf v f = v ** {vi = f ; lock_VV = <>} ; mkVQ = overload { mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; @@ -876,7 +876,7 @@ oper mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ; mkV2V : V -> V2V = \v -> mkV2Vf v (casePrep genitive) infMa ; mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ; - } ; + } ; mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ; mkVA = overload { @@ -885,13 +885,13 @@ oper mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ; } ; - mkV2A = overload { + mkV2A = overload { mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ; - mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; - c3 = casePrep translative ; + mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; + c3 = casePrep translative ; lock_V2A = <>} ; - mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; - c3 = casePrep translative ; + mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; + c3 = casePrep translative ; lock_V2A = <>} ; } ; diff --git a/src/estonian/QuestionEst.gf b/src/estonian/QuestionEst.gf index 2d0ecdbfd..58a69f6b7 100644 --- a/src/estonian/QuestionEst.gf +++ b/src/estonian/QuestionEst.gf @@ -8,16 +8,16 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { s = \\t,a,p => cl.s ! t ! a ! p ! SQuest } ; - QuestVP ip vp = - let + QuestVP ip vp = + let cl = mkClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) vp.sc) (agrP3 ip.n) vp in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; QuestSlash ip slash = { - s = \\t,a,p => - let + s = \\t,a,p => + let cls = slash.s ! t ! a ! p ; who = appCompl True p slash.c2 (ip ** {a = agrP3 ip.n ; isPron = False}) in @@ -29,15 +29,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { } ; QuestIComp icomp np = { - s = \\t,a,p => - let + s = \\t,a,p => + let vp = predV (verbOlema ** {sc = NPCase Nom}) ; cl = mkClause (subjForm np vp.sc) np.a vp ; in icomp.s ! np.a ++ cl.s ! t ! a ! p ! SDecl } ; - PrepIP p ip = {s = + PrepIP p ip = {s = appCompl True Pos p (ip ** {a = agrP3 ip.n ; isPron = False})} ; AdvIP ip adv = { @@ -46,15 +46,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { } ; -- The computation of $ncase$ is a special case of that in $NounEst.DetCN$, --- since we don't have possessive suffixes or definiteness. +-- since we don't have possessive suffixes or definiteness. --- It could still be nice to have a common oper... IdetCN idet cn = let n = idet.n in { - s = \\c => - let + s = \\c => + let k : Case = npform2case n c ; icase : Case = Nom ; --case k of { --mis kassiga - -- (Ess|Abess|Comit|Termin) => Gen ; + -- (Ess|Abess|Comit|Termin) => Gen ; -- _ => k -- } ; ncase : NForm = case of { @@ -63,33 +63,33 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { _ => NCase n k -- mitkä kytkimet } in - idet.s ! icase ++ cn.s ! ncase ; + idet.s ! icase ++ cn.s ! ncase ; n = n } ; IdetIP idet = let n = idet.n in { - s = \\c => - let + s = \\c => + let k = npform2case n c ; in - idet.s ! k ; + idet.s ! k ; n = n } ; - IdetQuant idet num = - let + IdetQuant idet num = + let n = num.n ; - isn = num.isNum + isn = num.isNum in { - s = \\k => - let + s = \\k => + let ncase = case of { => NCase Sg Part ; -- mitkä kolme kytkintä <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi _ => NCase n k -- mitkä kytkimet } in - idet.s ! n ! k ++ num.s ! Sg ! k ; + idet.s ! n ! k ++ num.s ! Sg ! k ; n = n ; isNum = isn } ; diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 705d77a86..4f90bb254 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -11,14 +11,14 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; RelVP rp vp = { - s = \\t,ant,b,ag => - let + s = \\t,ant,b,ag => + let agr = case rp.a of { RNoAg => ag ; RAg a => a } ; - cl = mkClause - (subjForm {s = rp.s ! (complNumAgr agr) ; + cl = mkClause + (subjForm {s = rp.s ! (complNumAgr agr) ; a = agr ; isPron = False} vp.sc) agr vp in cl.s ! t ! ant ! b ! SDecl ; @@ -26,8 +26,8 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; RelSlash rp slash = { - s = \\t,a,p,ag => - let + s = \\t,a,p,ag => + let cls = slash.s ! t ! a ! p ; who = appCompl True p slash.c2 (rp2np (complNumAgr ag) rp) in diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 0b72ab543..1e123dd48 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -15,11 +15,11 @@ resource ResEst = ParamX ** open Prelude in { -- This is the $Case$ as needed for both nouns and $NP$s. param - Case = Nom | Gen | Part - | Illat | Iness | Elat | Allat | Adess | Ablat + Case = Nom | Gen | Part + | Illat | Iness | Elat | Allat | Adess | Ablat | Transl | Ess | Termin | Abess | Comit; - NForm = NCase Number Case ; + NForm = NCase Number Case ; -- Agreement of $NP$ has number*person and the polite second ("te olette valmis"). @@ -56,13 +56,13 @@ oper --2 Noun phrases -- --- Two forms of *virtual accusative* are needed for nouns in singular, --- the nominative and the genitive one ("loen raamatu"/"loe raamat"). --- For nouns in plural, only a nominative accusative exists in positive clauses. +-- Two forms of *virtual accusative* are needed for nouns in singular, +-- the nominative and the genitive one ("loen raamatu"/"loe raamat"). +-- For nouns in plural, only a nominative accusative exists in positive clauses. -- Pronouns use the partitive as their accusative form ("mind", "sind"), in both -- positive and negative, indicative and imperative clauses. -param +param NPForm = NPCase Case | NPAcc ; oper @@ -80,14 +80,14 @@ oper -- A special form is needed for the negated plural imperative. param - VForm = + VForm = Inf InfForm | Presn Number Person | Impf Number Person | Condit Number Person | ConditPass --loetagu | Imper Number - | ImperP3 + | ImperP3 | ImperP1Pl | ImperPass | PassPresn Bool @@ -98,11 +98,11 @@ param ; Voice = Act | Pass ; - + InfForm = InfDa -- lugeda - | InfDes -- lugedes - | InfMa -- lugema + | InfDes -- lugedes + | InfMa -- lugema | InfMas -- lugemas | InfMast -- lugemast | InfMata -- lugemata @@ -112,7 +112,7 @@ param SType = SDecl | SQuest | SInv ; --2 For $Relative$ - + RAgr = RNoAg | RAg Agr ; --2 For $Numeral$ @@ -122,14 +122,14 @@ param --2 Transformations between parameter types oper - agrP3 : Number -> Agr = \n -> + agrP3 : Number -> Agr = \n -> Ag n P3 ; conjAgr : Agr -> Agr -> Agr = \a,b -> case of { => Ag (conjNumber n m) (conjPerson p q) ; => Ag Pl (conjPerson p P2) ; => Ag Pl (conjPerson p P2) ; - _ => b + _ => b } ; --- @@ -178,33 +178,33 @@ param param VIForm = - VIFin Tense + VIFin Tense | VIInf InfForm | VIPass Tense - | VIPresPart - | VIImper - ; + | VIPresPart + | VIImper + ; oper VP : Type = { - s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; + s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut adv : Str ; p : Str ; --uninflecting component in multi-word verbs ext : Str ; sc : NPForm ; } ; - + predV : (Verb ** {sc : NPForm}) -> VP = \verb -> { - s = \\vi,ant,b,agr0 => + s = \\vi,ant,b,agr0 => let agr = verbAgr agr0 ; verbs = verb.s ; part : Str = case vi of { - VIPass _ => verbs ! (PastPart Pass) ; + VIPass _ => verbs ! (PastPart Pass) ; _ => verbs ! (PastPart Act) - } ; - + } ; + einegole : Str * Str * Str = case of { => <"ei", verbs ! Imper Sg, "ole"> ; => <"ei", verbs ! Imper Sg, "ole"> ; @@ -217,23 +217,23 @@ oper => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent - => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> + => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> } ; - + ei : Str = einegole.p1 ; neg : Str = einegole.p2 ; ole : Str = einegole.p3 ; - + olema : VForm => Str = verbOlema.s ; - + vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; - + mkvf : VForm -> {fin, inf : Str} = \p -> case of { => vf (verbs ! p) [] ; - => vf (olema ! p) part ; + => vf (olema ! p) part ; => vf (ei ++ neg) [] ; - => vf (ei ++ ole) part + => vf (ei ++ ole) part } ; passPol = case b of {Pos => True ; Neg => False} ; @@ -256,19 +256,19 @@ oper adv = [] ; ext = [] ; --relative clause p = verb.p ; --particle verbs - sc = verb.sc + sc = verb.sc } ; - insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> + insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> vp ** { s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a } ; - insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> + insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> vp ** { s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a } ; - insertAdv : Str -> VP -> VP = \adv,vp -> + insertAdv : Str -> VP -> VP = \adv,vp -> vp ** { adv = vp.adv ++ adv } ; - insertExtrapos : Str -> VP -> VP = \obj,vp -> + insertExtrapos : Str -> VP -> VP = \obj,vp -> vp ** { ext = vp.ext ++ obj } ; -- For $Sentence$. @@ -286,12 +286,12 @@ oper -- declarative sentence with the yes/no-queryword "kas". -- SQuest: "kas" + SDecl -- It would be also correct to use the Finnish structure, just without the ko-particle. - -- Inari: added a third SType, SInv. + -- Inari: added a third SType, SInv. -- Not sure if SInv is needed, but keeping it for possible future use. -- There's need for an inverted word order with auxiliary verbs; infVP handles that. ComplVV calls infVP, which inverts the word order for the complement VP, and puts it into the resulting VP's `compl' field. -- SInv made by mkClause would be for cases where you just need to construct an inverted word order, and then call it from some other place; application grammar (TODO: api oper for SType) or ExtraEst. - mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> - { s = \\t,a,b => + mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> + { s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b ; -- saan sinust aru 0 @@ -300,51 +300,51 @@ oper -- [sind näha] 0 tahtnud -- täna olen ma sinust aru saanud invCl = c.adv ++ c.fin ++ c.subj ++ c.compl ++ c.p ++ c.inf ++ c.ext - in + in table { SDecl => declCl ; SQuest => "kas" ++ declCl ; - SInv => invCl + SInv => invCl } } ; - existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> - { s = \\t,a,b => + existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> + { s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b ; -- (mis) on olnud olemas (lammas) declCl = c.subj ++ c.fin ++ c.inf ++ c.compl ; - in + in table { SQuest => "kas" ++ declCl ; - _ => declCl + _ => declCl } } ; mkClausePlus : (Polarity -> Str) -> Agr -> VP -> ClausePlus = \sub,agr,vp -> { - s = \\t,a,b => - let + s = \\t,a,b => + let agrfin = case vp.sc of { NPCase Nom => ; _ => -- minule meeldib, minul on } ; verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ; - in {subj = sub b ; - fin = verb.fin ; - inf = verb.inf ; + in {subj = sub b ; + fin = verb.fin ; + inf = verb.inf ; compl = vp.s2 ! agrfin.p2 ! b ! agr ; p = vp.p ; - adv = vp.adv ; - ext = vp.ext ; + adv = vp.adv ; + ext = vp.ext ; } } ; - insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { + insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { s = \\t,a,b => - let - c = cl.s ! t ! a ! b + let + c = cl.s ! t ! a ! b in case p of { 0 => {subj = c.subj ++ gi ; fin = c.fin ; inf = c.inf ; -- Jussikin nukkuu @@ -354,37 +354,37 @@ oper } } ; - insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus = - \p,ifKin,obj,cl -> { + insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus = + \p,ifKin,obj,cl -> { s = \\t,a,b => - let + let c = cl.s ! t ! a ! b ; co = obj ! b ++ if_then_Str ifKin (kin b) [] ; in case p of { - 0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; + 0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; compl = co ; p = c.p ; adv = c.compl ++ c.adv ; ext = c.ext ; h = c.h} ; -- Jussi juo maitoakin - 1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; + 1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ; compl = c.compl ; p = c.p ; adv = co ; ext = c.adv ++ c.ext ; h = c.h} -- Jussi nukkuu nytkin } } ; - kin : Polarity -> Str = + kin : Polarity -> Str = \p -> case p of {Pos => "gi" ; Neg => "gi"} ; - - --allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi" + + --allomorph "ki", depends only on phonetic rules "üks+ki", "ühe+gi" --waiting for post construction in GF :P gi : Str = "gi" ; -- This is used for subjects of passives: therefore isFin in False. - subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> + subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVPAnt Simul ; infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = \ant,sc,pol,agr,vp,vi -> - let + let fin = case sc of { -- subject case NPCase Nom => True ; -- mina tahan joosta _ => False -- minul peab auto olema @@ -399,12 +399,12 @@ oper --TODO adv placement? --TODO inf ++ fin or fin ++ inf? does it ever become a case here? --- The definitions below were moved here from $MorphoEst$ so that +-- The definitions below were moved here from $MorphoEst$ so that -- auxiliary of predication can be defined. - verbOlema : Verb = + verbOlema : Verb = let olema = mkVerb - "olema" "olla" "olen" "ollakse" + "olema" "olla" "olen" "ollakse" "olge" "oli" "olnud" "oldud" in {s = table { Presn _ P3 => "on" ; @@ -413,9 +413,9 @@ oper p = [] } ; - verbMinema : Verb = - let minema = mkVerb - "minema" "minna" "läheb" "minnakse" + verbMinema : Verb = + let minema = mkVerb + "minema" "minna" "läheb" "minnakse" "minge" "läks" "läinud" "mindud" in {s = table { Impf Sg P1 => "läksin" ; @@ -428,20 +428,20 @@ oper } ; p = [] } ; - + --3 Verbs --Auxiliary for internal use - mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = - \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> - vforms2V (vForms8 + mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = + \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> + vforms2V (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud ) ; --below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; - + vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms = \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> table { @@ -455,34 +455,34 @@ oper 7 => tuldud } ; - vforms2V : VForms -> Verb = \vh -> + vforms2V : VForms -> Verb = \vh -> let - tulema = vh ! 0 ; - tulla = vh ! 1 ; - tuleb = vh ! 2 ; - tullakse = vh ! 3 ; --juuakse; loetakse - tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege) + tulema = vh ! 0 ; + tulla = vh ! 1 ; + tuleb = vh ! 2 ; + tullakse = vh ! 3 ; --juuakse; loetakse + tulge = vh ! 4 ; --necessary for tulla, surra (otherwise *tulege, *surege) tuli = vh ! 5 ; --necessary for jooma-juua-jõi tulnud = vh ! 6 ; tuldud = vh ! 7 ; --necessary for t/d in tuldi; loeti - + tull_ = init tulla ; --juu(a); saad(a); tull(a); tulles = tull_ + "es" ; --juues; saades; tulles; - + tule_ = init tuleb ; - + lask_ = Predef.tk 2 tulema ; laulev = case (last lask_) of { --sooma~soov ; laulma~laulev ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") => lask_ + "v" ; _ => lask_ + "ev" } ; --consonant stem in -ma, add e - + --imperfect stem kaisi_ = case (Predef.dp 3 tuli) of { "sis" => lask_ + "i" ; --tõusin, tõusis _ + "i" => tuli ; --jõin, jõi _ => lask_ + "si" --käisin, käis; muutsin, muutis - }; - + }; + tuld_ = Predef.tk 2 tuldud ; --d/t choice for tuldi etc. tulgu = (init tulge) + "u" ; in @@ -510,13 +510,13 @@ oper ConditPass => tuld_ + "aks" ; --# notpresent Imper Sg => tule_ ; -- tule / ära tule Imper Pl => tulge ; -- tulge / ärge tulge - ImperP3 => tulgu ; -- tulgu (ta/nad) + ImperP3 => tulgu ; -- tulgu (ta/nad) ImperP1Pl => tulge + "m" ; -- tulgem ImperPass => tuld_ + "agu" ; --tuldagu PassPresn True => tullakse ; PassPresn False => tuld_ + "a" ; --da or ta PassImpf True => tuld_ + "i" ; --di or ti - PassImpf False => tuldud ; + PassImpf False => tuldud ; Quotative Act => lask_ + "vat" ; Quotative Pass => tuld_ + "avat" ; --d or t PresPart Act => laulev ; @@ -527,10 +527,10 @@ oper Inf InfMas => tulema + "s" ; Inf InfMast => tulema + "st" ; Inf InfMata => tulema + "ta" ; - Inf InfMaks => tulema + "ks" + Inf InfMaks => tulema + "ks" } ; sc = NPCase Nom ; - p = [] + p = [] } ; -- For regular verbs, paradigm from 4 base forms @@ -547,12 +547,12 @@ oper "t" => "k" ; _ => "g" } ; - toit_ = case (last vestle_) of { + toit_ = case (last vestle_) of { ("t"|"d") => vesteld_ ; --toit(ma) -> toitke; _ => vestel_ --vestle(ma) -> vestelge } ; - laski_ = case (last vestle_) of { - ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") + laski_ = case (last vestle_) of { + ("a"|"e"|"i"|"o"|"u"|"õ"|"ä"|"ö"|"ü") => vestle_ ; --vestle(ma) -> vestles _ => vestle_ + "i" --lask(ma) -> laskis } ; @@ -566,7 +566,7 @@ oper (laski_ + "s") --ma: kindla kõneviisi lihtmineviku pöörded; (toit_ + "nud") --da: isikulise tegumoe mineviku kesksõna (jaet_ + "ud"); --takse: ülejäänud umbisikulise tgm vormid - + regVerb : (_,_,_,_ : Str) -> Verb = \kinkima,kinkida,kingib,kingitakse -> vforms2V (regVForms kinkima kinkida kingib kingitakse) ; @@ -580,8 +580,8 @@ oper -- parem -> paremini -- parim -> kõige paremini | parimalt? noun2adjComp : Bool -> Noun -> Adj = \isPos,tuore -> - let - tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ; + let + tuoreesti = Predef.tk 1 (tuore.s ! NCase Sg Gen) + "sti" ; tuoreemmin = Predef.tk 2 (tuore.s ! NCase Sg Gen) + "in" in {s = table { AN f => tuore.s ! f ; @@ -602,21 +602,21 @@ oper compAP = icompAP [] ; icompAP : Str -> {s : Bool => NForm => Str} -> {s : Agr => Str} = \kui,ap -> - { s = \\agr => - let n = complNumAgr agr ; + { s = \\agr => + let n = complNumAgr agr ; in kui ++ ap.s ! False ! NCase n Nom } ; - - compCN : Noun -> {s : Agr => Str} = \cn -> - { s = \\agr => - let n = complNumAgr agr ; + + compCN : Noun -> {s : Agr => Str} = \cn -> + { s = \\agr => + let n = complNumAgr agr ; in cn.s ! NCase n Nom } ; --- Reflexive pronoun. +-- Reflexive pronoun. --- Possessive could be shared with the more general $NounFin.DetCN$. - reflPron : Agr -> NP = \agr -> - let + reflPron : Agr -> NP = \agr -> + let ise = nForms2N (nForms6 "ise" "enda" "ennast" "endasse" "endi" "endid") ; n = case agr of { AgPol => Sg ; @@ -638,7 +638,7 @@ oper NForms : Type = Predef.Ints 5 => Str ; - nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms = + nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms = \jogi,joe,joge,joesse, -- sg nom, gen, part, ill jogede,jogesid -> table { -- pl gen, part, 0 => jogi ; @@ -646,7 +646,7 @@ oper 2 => joge ; 3 => joesse ; 4 => jogede ; - 5 => jogesid + 5 => jogesid } ; n2nforms : Noun -> NForms = \ukko -> table { @@ -655,12 +655,12 @@ oper 2 => ukko.s ! NCase Sg Part ; 3 => ukko.s ! NCase Sg Illat ; 4 => ukko.s ! NCase Pl Gen ; - 5 => ukko.s ! NCase Pl Part + 5 => ukko.s ! NCase Pl Part } ; -- Converts 6 given strings (Nom, Gen, Part, Illat, Gen, Part) into Noun -- http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=226 - nForms2N : NForms -> Noun = \f -> + nForms2N : NForms -> Noun = \f -> let jogi = f ! 0 ; joe = f ! 1 ; @@ -668,7 +668,7 @@ oper joesse = f ! 3 ; jogede = f ! 4 ; jogesid = f ! 5 ; - in + in {s = table { NCase Sg Nom => jogi ; NCase Sg Gen => joe ; @@ -698,7 +698,7 @@ oper NCase Pl Allat => jogede + "le" ; NCase Pl Abess => jogede + "ta" ; NCase Pl Comit => jogede + "ga" ; - NCase Pl Termin => jogede + "ni" + NCase Pl Termin => jogede + "ni" } --; -- lock_N = <> @@ -721,9 +721,9 @@ oper isDef : Bool } ; - heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d -> - d ** {sp = d.s} ; - PQuant : Type = - {s : Number => Case => Str ; isDef : Bool} ; + heavyQuant : PQuant -> PQuant ** {sp : Number => Case => Str} = \d -> + d ** {sp = d.s} ; + PQuant : Type = + {s : Number => Case => Str ; isDef : Bool} ; } diff --git a/src/estonian/SentenceEst.gf b/src/estonian/SentenceEst.gf index 4d5f6f3cb..f14b1e967 100644 --- a/src/estonian/SentenceEst.gf +++ b/src/estonian/SentenceEst.gf @@ -9,17 +9,17 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { PredSCVP sc vp = mkClause (\_ -> sc.s) (agrP3 Sg) vp ; ImpVP vp = { - s = \\pol,agr => - let + s = \\pol,agr => + let verb = vp.s ! VIImper ! Simul ! pol ! agr ; compl = vp.s2 ! False ! pol ! agr ++ vp.ext --- False = like inf (osta auto) in --(ära) loe raamat(ut) läbi - verb.fin ++ verb.inf ++ compl ++ vp.p ; + verb.fin ++ verb.inf ++ compl ++ vp.p ; } ; -- The object case is formed at the use site of $c2$, in $Relative$ and $Question$. - SlashVP np vp = { + SlashVP np vp = { s = \\t,a,p => (mkClause (subjForm np vp.sc) np.a vp).s ! t ! a ! p ! SDecl ; c2 = vp.c2 } ; @@ -30,13 +30,13 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { } ; SlashPrep cl prep = { - s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ; + s = \\t,a,p => cl.s ! t ! a ! p ! SDecl ; c2 = prep } ; - SlashVS np vs slash = { - s = \\t,a,p => - (mkClause (subjForm np vs.sc) np.a + SlashVS np vs slash = { + s = \\t,a,p => + (mkClause (subjForm np vs.sc) np.a (insertExtrapos (etta_Conj ++ slash.s) (predV vs)) ).s ! t ! a ! p ! SDecl ; diff --git a/src/estonian/SymbolEst.gf b/src/estonian/SymbolEst.gf index 3517d5114..0d1000a68 100644 --- a/src/estonian/SymbolEst.gf +++ b/src/estonian/SymbolEst.gf @@ -29,7 +29,7 @@ lin SymbNum n = {s = \\_,_ => n.s ; isNum = True ; n = Pl} ; SymbOrd n = {s = \\_ => glue n.s "."} ; -lincat +lincat Symb, [Symb] = SS ; diff --git a/src/estonian/TerminologyEst.gf b/src/estonian/TerminologyEst.gf index 75344a2c1..4eb04c7fd 100644 --- a/src/estonian/TerminologyEst.gf +++ b/src/estonian/TerminologyEst.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common -concrete TerminologyEst of Terminology = CatEst ** open +concrete TerminologyEst of Terminology = CatEst ** open ResEst, ParadigmsEst, (G = GrammarEst), @@ -17,9 +17,9 @@ lincat ParameterType = G.N ; Parameter = G.N ; Modifier = G.A ; - + Heading = {s : Str} ; - + lin noun_Category = mkN "käändsõna" ; @@ -59,7 +59,7 @@ lin active_Parameter = mkN "isikuline tegumood" ; passive_Parameter = mkN "umbsikuline tegumood" ; - + imperative_Parameter = mkN "käskiv kõneviis" "käskiva kõneviisi"; indicative_Parameter = mkN "kindel kõneviis" "kindla kõneviisi"; conjunctive_Parameter = mkN "konjunktiiv" ; @@ -67,7 +67,7 @@ lin present_Parameter = mkN "olevik" ; past_Parameter = mkN "lihtminevik" ; - future_Parameter = mkN "futuur" ; ---- ??? + future_Parameter = mkN "futuur" ; ---- ??? conditional_Parameter = mkN "tingiv kõneviis" "tingiva kõneviisi"; perfect_Parameter = mkN "täisminevik" ; quotative_Parameter = mkN "kaudne kõneviis" "kaudse kõneviisi"; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 7f54194ab..3c8344a36 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -9,17 +9,17 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { SlashV2a v = predV v ** {c2 = v.c2} ; - Slash2V3 v np = - insertObj + Slash2V3 v np = + insertObj (\\fin,b,_ => appCompl fin b v.c2 np) (predV v) ** {c2 = v.c3} ; - Slash3V3 v np = - insertObj + Slash3V3 v np = + insertObj (\\fin,b,_ => appCompl fin b v.c3 np) (predV v) ** {c2 = v.c2} ; - ComplVV v vp = - insertObj - (\\_,b,a => infVP v.sc b a vp v.vi) - (predV {s = v.s ; + ComplVV v vp = + insertObj + (\\_,b,a => infVP v.sc b a vp v.vi) + (predV {s = v.s ; p = v.p ; sc = case vp.sc of { NPCase Nom => v.sc ; -- minul tuleb kirjutada (VV 'tulema' determines the subject case) @@ -30,47 +30,47 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ComplVS v s = insertExtrapos (etta_Conj ++ s.s) (predV v) ; ComplVQ v q = insertExtrapos ( q.s) (predV v) ; - ComplVA v ap = - insertObj - (\\_,b,agr => + ComplVA v ap = + insertObj + (\\_,b,agr => let n = (complNumAgr agr) in ap.s ! False ! (NCase n (npform2case n v.c2.c))) --- v.cs.s ignored (predV v) ; - SlashV2S v s = + SlashV2S v s = insertExtrapos (etta_Conj ++ s.s) (predV v) ** {c2 = v.c2} ; - SlashV2Q v q = + SlashV2Q v q = insertExtrapos (q.s) (predV v) ** {c2 = v.c2} ; - SlashV2V v vp = + SlashV2V v vp = insertObj (\\_,b,a => infVP v.sc b a vp v.vi) (predV v) ** {c2 = v.c2} ; ---- different infinitives - SlashV2A v ap = - insertObj - (\\fin,b,_ => + SlashV2A v ap = + insertObj + (\\fin,b,_ => ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c))) ----agr to obj (predV v) ** {c2 = v.c2} ; ComplSlash vp np = insertObjPre (\\fin,b,_ => appCompl fin b vp.c2 np) vp ; - UseComp comp = + UseComp comp = insertObj (\\_,_ => comp.s) (predV (verbOlema ** {sc = NPCase Nom})) ; - SlashVV v vp = - insertObj - (\\_,b,a => infVP v.sc b a vp v.vi) - (predV {s = v.s ; + SlashVV v vp = + insertObj + (\\_,b,a => infVP v.sc b a vp v.vi) + (predV {s = v.s ; p = v.p ; sc = case vp.sc of { NPCase Nom => v.sc ; -- minun täytyy pestä auto c => c -- minulla täytyy olla auto - } + } } ) ** {c2 = vp.c2} ; ---- correct ?? - SlashV2VNP v np vp = - insertObjPre + SlashV2VNP v np vp = + insertObjPre (\\fin,b,a => appCompl True b v.c2 np ++ ---- fin -> stack overflow - infVP v.sc b a vp v.vi) + infVP v.sc b a vp v.vi) (predV v) ** {c2 = vp.c2} ; AdvVP vp adv = insertAdv adv.s vp ; @@ -91,7 +91,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ----b UseVS, UseVQ = \v -> v ** {c2 = {s = [] ; c = NPAcc ; isPre = True}} ; - CompAP = compAP ; + CompAP = compAP ; CompCN = compCN ; CompNP np = {s = \\_ => np.s ! NPCase Nom} ; CompAdv a = {s = \\_ => a.s} ; @@ -102,17 +102,17 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { --2 The object case -- -- The rules involved are ComplV2 and ComplVV above. --- The work is done jointly in ResEst.infVP and appCompl. +-- The work is done jointly in ResEst.infVP and appCompl. -- Cases to test: l -table (to see negated forms) --``` -- minun täytyy ostaa auto --- PredVP (UsePron i_Pron) (ComplVV must_VV +-- PredVP (UsePron i_Pron) (ComplVV must_VV -- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) -- minä tahdon ostaa auton --- PredVP (UsePron i_Pron) (ComplVV want_VV +-- PredVP (UsePron i_Pron) (ComplVV want_VV -- (ComplV2 buy_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) -- minulla täytyy olla auto --- PredVP (UsePron i_Pron) (ComplVV must_VV +-- PredVP (UsePron i_Pron) (ComplVV must_VV -- (ComplV2 have_V2 (DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN car_N)))) --``` -- Unfortunately, there is no nice way to say "I want to have a car". From 21259015e0982c18c5a4f44ff2ada7a1c95c0f4d Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 11:37:25 +0800 Subject: [PATCH 101/141] (Est) Reduce inflection table in VP Include VForms in VP, only construct VPForms when making Cl --- src/estonian/CatEst.gf | 19 ++++--- src/estonian/ExtendEst.gf | 2 +- src/estonian/ExtraEst.gf | 2 +- src/estonian/IdiomEst.gf | 15 ++---- src/estonian/ResEst.gf | 105 ++++++++++++++++++++++-------------- src/estonian/SentenceEst.gf | 2 +- src/estonian/VerbEst.gf | 8 +-- 7 files changed, 83 insertions(+), 70 deletions(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 6207874fa..29c857538 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -80,21 +80,24 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Open lexical classes, e.g. Lexicon V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; - V2, VA, V2Q, V2S = Verb1 ** {c2 : Compl} ; - V2A = Verb1 ** {c2, c3 : Compl} ; - VV = Verb1 ** {vi : InfForm} ; ---- infinitive form - V2V = Verb1 ** {c2 : Compl ; vi : InfForm} ; ---- infinitive form - V3 = Verb1 ** {c2, c3 : Compl} ; + V2, VA, V2Q, V2S = Verb2 ; + V2A, V3 = Verb3 ; + VV = Verb1 ** {vi : InfForm} ; + V2V = Verb2 ** {vi : InfForm} ; -- infinitive form A = Adjective ** {infl : Infl} ; A2 = A ** {c2 : Compl} ; N = Noun ; - N2 = Noun ** {c2 : Compl ; isPre : Bool ; lock_N2 : {}} ; - N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool ; lock_N3 : {}} ; + N2 = Noun ** {c2 : Compl ; isPre : Bool} ; + N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ; PN = {s : Case => Str} ; -oper Verb1 = Verb ** { sc : NPForm} ; --what is this for? --subject case, i.e. "ma näen kassi"/"mul on kass" + linref + VP = \vp -> linV vp.v ; + V,VS,VQ = linV ; + V2,VA,V2S,V2Q = linV2 ; + } diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 1103c5b7f..0e3c230e9 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -395,7 +395,7 @@ concrete ExtendEst of Extend = vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut ++ vp.adv -- paremini ++ vp.p -- ära - ++ (vp.s ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... + ++ (mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... ++ vp.ext ; --------------------------------- diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 16ba9ea76..63d32741c 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -60,7 +60,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** } ; MkVPS t p vp = { -- Temp -> Pol -> VP -> VPS ; - s = \\a => let vps = vp.s ! VIFin t.t ! t.a ! p.p ! a + s = \\a => let vps = mkVPForms vp.v ! VIFin t.t ! t.a ! p.p ! a in t.s ++ p.s ++ vps.fin ++ vps.inf ++ diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index c4e3657a5..a57c8964d 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -39,21 +39,14 @@ concrete IdiomEst of Idiom = CatEst ** ImpersCl vp = mkClause noSubj (agrP3 Sg) vp ; - GenericCl vp = mkClause noSubj (agrP3 Sg) { - s = \\_ => vp.s ! VIPass Pres ; - s2 = vp.s2 ; - adv = vp.adv ; - p = vp.p ; - ext = vp.ext ; - sc = vp.sc ; - } ; + GenericCl vp = mkClause noSubj (agrP3 Sg) (passiveVP vp) ; ProgrVP vp = let - inf = (vp.s ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; + inf = (mkVPForms vp.v ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; on = predV olla in { - s = on.s ; + v = verbOlema ; s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ inf ; adv = vp.adv ; p = vp.p ; @@ -65,7 +58,7 @@ concrete IdiomEst of Idiom = CatEst ** -- The imperative is not available in a $VP$. ImpPl1 vp = - let vps = vp.s ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 + let vps = mkVPForms vp.v ! VIPass Pres ! Simul ! Pos ! Ag Pl P1 in {s = vps.fin ++ vps.inf ++ vp.s2 ! True ! Pos ! Ag Pl P1 ++ vp.p ++ vp.ext diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 1e123dd48..cbcece307 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -176,6 +176,13 @@ param p : Str -- particle verbs } ; + Verb1 : Type = Verb ** {sc : NPForm} ; --subject case, i.e. "ma näen kassi"/"mul on kass" + Verb2 : Type = Verb1 ** {c2 : Compl} ; + Verb3 : Type = Verb2 ** {c3 : Compl} ; + + linV : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + linV2 : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + param VIForm = VIFin Tense @@ -187,7 +194,7 @@ param oper VP : Type = { - s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; + v : Verb ; s2 : Bool => Polarity => Agr => Str ; -- raamat/raamatu/raamatut adv : Str ; p : Str ; --uninflecting component in multi-word verbs @@ -195,48 +202,63 @@ oper sc : NPForm ; } ; - predV : (Verb ** {sc : NPForm}) -> VP = \verb -> { - s = \\vi,ant,b,agr0 => - let - agr = verbAgr agr0 ; - verbs = verb.s ; - part : Str = case vi of { - VIPass _ => verbs ! (PastPart Pass) ; - _ => verbs ! (PastPart Act) - } ; + passiveVerb : Verb -> Verb = \verb -> verb ** { + s = table { + Presn _ _ => verb.s ! PassPresn True ; + Impf _ _ => verb.s ! PassImpf True ; --# notpresent + Condit _ _ => verb.s ! ConditPass ; --# notpresent + ImperP3|ImperP1Pl|Imper _ => verb.s ! ImperPass ; + PresPart _ => verb.s ! PresPart Pass ; + PastPart _ => verb.s ! PastPart Pass ; + x => verb.s ! x } + } ; - einegole : Str * Str * Str = case of { - => <"ei", verbs ! Imper Sg, "ole"> ; - => <"ei", verbs ! Imper Sg, "ole"> ; - => <"ei", verbs ! Condit Sg P3, "oleks"> ; - => <"ei", part, "olnud"> ; - => <"ära", verbs ! Imper Sg, "ole"> ; - => <"ärge", verbs ! Imper Pl, "olge"> ; - => <"ei", verbs ! PassPresn False, "ole"> ; - => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent - => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent - => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent - => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent - => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> + -- NB. only chooses passive verb forms, to get subject case need compl2subjcase, used in PassV2 + passiveVP : VP -> VP = \vp -> vp ** {v = passiveVerb vp.v} ; - } ; + VPForms : Type = VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ; - ei : Str = einegole.p1 ; - neg : Str = einegole.p2 ; - ole : Str = einegole.p3 ; + mkVPForms : Verb -> VPForms = \verb -> \\vi,ant,b,agr0 => + let + agr = verbAgr agr0 ; + verbs = verb.s ; + part : Str = case vi of { + VIPass _ => verbs ! PastPart Pass ; + _ => verbs ! PastPart Act + } ; - olema : VForm => Str = verbOlema.s ; + einegole : Str * Str * Str = case of { + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Imper Sg, "ole"> ; + => <"ei", verbs ! Condit Sg P3, "oleks"> ; + => <"ei", part, "olnud"> ; + => <"ära", verbs ! Imper Sg, "ole"> ; + => <"ärge", verbs ! Imper Pl, "olge"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; + => <"ei", verbs ! PassPresn False, "ole"> ; --# notpresent + => <"ei", verbs ! ConditPass, "oleks"> ; --# notpresent + => <"ei", verbs ! PassImpf False, "olnud"> ; --# notpresent + => <"ei", verbs ! PresPart Act, "olev"> ; --# notpresent + => <"ei", verbs ! Inf i, verbOlema.s ! Inf i> - vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; + } ; - mkvf : VForm -> {fin, inf : Str} = \p -> case of { - => vf (verbs ! p) [] ; - => vf (olema ! p) part ; - => vf (ei ++ neg) [] ; - => vf (ei ++ ole) part - } ; + ei : Str = einegole.p1 ; + neg : Str = einegole.p2 ; + ole : Str = einegole.p3 ; - passPol = case b of {Pos => True ; Neg => False} ; + olema : VForm => Str = verbOlema.s ; + + vf : Str -> Str -> {fin, inf : Str} = \x,y -> {fin = x ; inf = y} ; + + mkvf : VForm -> {fin, inf : Str} = \p -> case of { + => vf (verbs ! p) [] ; + => vf (olema ! p) part ; + => vf (ei ++ neg) [] ; + => vf (ei ++ ole) part + } ; + + passPol = case b of {Pos => True ; Neg => False} ; in case vi of { VIFin Past => mkvf (Impf agr.n agr.p) ; --# notpresent @@ -252,6 +274,8 @@ oper VIInf i => mkvf (Inf i) } ; + predV : Verb1 -> VP = \verb -> { + v = verb ; -- ignoring the subject s2 = \\_,_,_ => [] ; adv = [] ; ext = [] ; --relative clause @@ -329,7 +353,7 @@ oper NPCase Nom => ; _ => -- minule meeldib, minul on } ; - verb = vp.s ! VIFin t ! a ! b ! agrfin.p1 ; + verb = mkVPForms vp.v ! VIFin t ! a ! b ! agrfin.p1 ; in {subj = sub b ; fin = verb.fin ; inf = verb.inf ; @@ -389,7 +413,7 @@ oper NPCase Nom => True ; -- mina tahan joosta _ => False -- minul peab auto olema } ; - verb = vp.s ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" + verb = mkVPForms vp.v ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" compl = vp.s2 ! fin ! pol ! agr ; -- but compl. case propagated adv = vp.adv in @@ -590,8 +614,7 @@ oper } ; } ; - Noun = {s : NForm => Str} ; - + Noun : Type = {s : NForm => Str} ; -- To form an adjective, it is usually enough to give a noun declension: the -- adverbial form is regular. @@ -660,7 +683,7 @@ oper -- Converts 6 given strings (Nom, Gen, Part, Illat, Gen, Part) into Noun -- http://www.eki.ee/books/ekk09/index.php?p=3&p1=5&id=226 - nForms2N : NForms -> Noun = \f -> + nForms2N : NForms -> Noun = \f -> let jogi = f ! 0 ; joe = f ! 1 ; diff --git a/src/estonian/SentenceEst.gf b/src/estonian/SentenceEst.gf index f14b1e967..7209fc209 100644 --- a/src/estonian/SentenceEst.gf +++ b/src/estonian/SentenceEst.gf @@ -11,7 +11,7 @@ concrete SentenceEst of Sentence = CatEst ** open Prelude, ResEst in { ImpVP vp = { s = \\pol,agr => let - verb = vp.s ! VIImper ! Simul ! pol ! agr ; + verb = mkVPForms vp.v ! VIImper ! Simul ! pol ! agr ; compl = vp.s2 ! False ! pol ! agr ++ vp.ext --- False = like inf (osta auto) in --(ära) loe raamat(ut) läbi verb.fin ++ verb.inf ++ compl ++ vp.p ; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 3c8344a36..3f5f0c3dc 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -79,13 +79,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; - PassV2 v = - let vp = predV v in vp ** { - s = \\vf => case vf of { - VIFin t => vp.s ! VIPass t ; - -- VIImper => v.s ! ImperPass ; -- TODO: include these forms from V into VP - -- VIPresPart => v.s ! PresPart Pass ; - x => vp.s ! x } ; + PassV2 v = let vp : VP = passiveVP (predV v) in vp ** { sc = compl2subjcase v.c2 -- koer valitakse ; koerale räägitakse } ; From b2cc67aef50edfa1bcb9f2eeede8ce9e665f4ace Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 17:27:14 +0800 Subject: [PATCH 102/141] (Est) Fix negative passive TODO: more stable solution? conneg in Imper Sg is a bit of a hack --- src/estonian/ResEst.gf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index cbcece307..c6ce9643f 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -204,12 +204,13 @@ oper passiveVerb : Verb -> Verb = \verb -> verb ** { s = table { - Presn _ _ => verb.s ! PassPresn True ; + Presn _ _ => verb.s ! PassPresn True ; Impf _ _ => verb.s ! PassImpf True ; --# notpresent Condit _ _ => verb.s ! ConditPass ; --# notpresent - ImperP3|ImperP1Pl|Imper _ => verb.s ! ImperPass ; - PresPart _ => verb.s ! PresPart Pass ; - PastPart _ => verb.s ! PastPart Pass ; + ImperP3 => verb.s ! ImperPass ; + Imper Sg => verb.s ! PassPresn False ; -- weird hack, because the Imper Sg field is used for negative form; if VP undergoes PassV*, then its negation should also be in passive. + PresPart _ => verb.s ! PresPart Pass ; + PastPart _ => verb.s ! PastPart Pass ; x => verb.s ! x } } ; From 0bae53b0b922c5d14ef932dcba7fd0d5484ed724 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 13 Apr 2022 17:38:17 +0800 Subject: [PATCH 103/141] (Est) 7 InfForms -> 2 stems + gluing suffixes --- src/estonian/CatEst.gf | 4 +- src/estonian/DocumentationEstFunctor.gf | 19 ++++--- src/estonian/ExtendEst.gf | 57 ++++++++++----------- src/estonian/ExtraEst.gf | 20 +++++--- src/estonian/IdiomEst.gf | 16 ++---- src/estonian/ParadigmsEst.gf | 10 +++- src/estonian/PhraseEst.gf | 2 +- src/estonian/ResEst.gf | 67 ++++++++++++++----------- 8 files changed, 104 insertions(+), 91 deletions(-) diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 29c857538..0b8b5cc6a 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -82,8 +82,8 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; V2, VA, V2Q, V2S = Verb2 ; V2A, V3 = Verb3 ; - VV = Verb1 ** {vi : InfForm} ; - V2V = Verb2 ** {vi : InfForm} ; -- infinitive form + VV = Verb1 ** {vi : InfForms} ; + V2V = Verb2 ** {vi : InfForms} ; A = Adjective ** {infl : Infl} ; A2 = A ** {c2 : Compl} ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index a8e683430..a40affde8 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -142,6 +142,8 @@ oper --verb = sverb2verbSep verb0 ; vfin : ResEst.VForm -> Str = \f -> verb.s ! f ; + vinf : ResEst.InfForms -> Str = \if -> + applyInfFormsV if verb.s ; nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 -> (S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP n2))).s ; @@ -218,15 +220,16 @@ oper heading3 (heading infinitive_Parameter) ++ frameTable ( tr (intagAttr "th" "rowspan=2" "da" ++ - th (heading nominative_Parameter) ++ td (vfin (Inf InfDa))) ++ - tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfDes))) ++ + th (heading nominative_Parameter) ++ td (vinf InfDa)) ++ + tr (th (heading inessive_Parameter) ++ td (vinf InfDes)) ++ - tr (intagAttr "th" "rowspan=5" "ma" ++ - th (heading illative_Parameter) ++ td (vfin (Inf InfMa))) ++ - tr (th (heading inessive_Parameter) ++ td (vfin (Inf InfMas))) ++ - tr (th (heading elative_Parameter) ++ td (vfin (Inf InfMast))) ++ - tr (th (heading abessive_Parameter) ++ td (vfin (Inf InfMata))) ++ - tr (th (heading translative_Parameter) ++ td (vfin (Inf InfMaks))) + tr (intagAttr "th" "rowspan=6" "ma" ++ + th (heading illative_Parameter) ++ td (vinf InfMa)) ++ + tr (th (heading inessive_Parameter) ++ td (vinf InfMas)) ++ + tr (th (heading elative_Parameter) ++ td (vinf InfMast)) ++ + tr (th (heading abessive_Parameter) ++ td (vinf InfMata)) ++ + tr (th (heading abessive_Parameter) ++ td (vinf InfMaks)) ++ + tr (th (heading translative_Parameter) ++ td (vinf InfMine)) ) ++ heading3 (heading participle_Parameter) ++ diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 0e3c230e9..c953be653 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -40,7 +40,7 @@ concrete ExtendEst of Extend = Prelude, MorphoEst, LexiconEst, - ParadigmsEst in { + ParadigmsEst in { --------------------------------- -- VPS, VPI, VPS2 + list versions @@ -176,7 +176,7 @@ concrete ExtendEst of Extend = A2VPSlash a2 = UseComp (CompAP (UseA2 a2)) ** {c2 = a2.c2} ; -- : VP -> Adv ; - ByVP vp = {s = vp2adv vp True (VIInf InfDes)} ; + ByVP = GerundAdv ; --------------------------------- -- C @@ -220,15 +220,8 @@ concrete ExtendEst of Extend = lin - {- TODO: need to change VP to get EmbedPresPart and various Gerunds to work: - 1) Add "mine" form into VP (or switch to a BIND solution and just add a stem) - 2) Change s2 in VP so that we can manipulate the complement to be in genitive! - - -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) - EmbedPresPart vp = - let vpGen = vp ; --** { s2 = \\_,_,_ => vp.s2 ! True ! Pos ! } - {s = vp2adv vp True VI } ; - -} + -- : VP -> SC ; -- looking at Mary (is fun) / filmide vaatamine (on tore) / ___ga abielus olemine, + EmbedPresPart vp = {s = infVP (NPCase Gen) Pos (agrP3 Sg) vp InfMine } ; EmbedSSlash s = {s = s.s ++ s.c2.s} ; @@ -302,14 +295,13 @@ concrete ExtendEst of Extend = GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ; -- : VP -> Adv - GerundAdv vp = {s = vp2adv vp True (VIInf InfDes)} ; - + GerundAdv vp = {s = infVPdefault vp InfDes} ; -- : VP -> CN -- publishing of the document (can get a determiner) --- GerundCN vp = {} ; + GerundCN vp = {s = \\nf => infVPdefault vp InfMine} ; -- : VP -> NP -- publishing the document (by nature definite) --- GerundNP vp = {} ; + GerundNP vp = MassNP (GerundCN vp) ; --------------------------------- -- I - N @@ -322,9 +314,8 @@ concrete ExtendEst of Extend = -- : Adv -> IAdv ; -- "how often" IAdvAdv adv = { s = "kui" ++ adv.s } ; - -- : VP -> Adv - InOrderToVP vp = -- et raamatut paremini näha - { s = "et" ++ vp2adv vp True (VIInf InfDa) } ; + -- : VP -> Adv -- et raamatut paremini näha + InOrderToVP vp = {s = "et" ++ infVPdefault vp InfDa} ; -- : N2 -> VPSlash N2VPSlash n2 = UseComp (CompCN (UseN2 n2)) ** {c2 = n2.c2} ; @@ -380,7 +371,7 @@ concrete ExtendEst of Extend = in existClause noSubj (agrP3 Sg) heaOlla ; -- : IAdv -> VP -> QCl ; -- how to walk? - PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ vp2adv vp True (VIInf InfMa)} ; + PredIAdvVP iadv vp = {s = \\t,a,p => iadv.s ++ infVPdefault vp InfMa} ; PrepCN prep cn = PrepNP prep (MassNP cn) ; @@ -391,12 +382,19 @@ concrete ExtendEst of Extend = PurposeVP = InOrderToVP ; --- is there a difference? oper + -- calling infVP with the "default arguments": NPCase Nom, Pos, agrP3 Sg + infVPdefault : VP -> InfForms -> Str = infVP (NPCase Nom) Pos (agrP3 Sg) ; + vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> - vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut - ++ vp.adv -- paremini - ++ vp.p -- ära - ++ (mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg).fin -- tunda/tundes/tundmata/... - ++ vp.ext ; + let vpforms : {fin,inf : Str} = case vif of { + VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here + _ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ; + in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ vpforms.fin -- tunda/tundes/tundmata/... + ++ vpforms.inf -- TODO is this necessary??? + ++ vp.ext ; --------------------------------- -- S - W @@ -415,14 +413,11 @@ concrete ExtendEst of Extend = UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? UttDatNP np = {s = np.s ! NPCase Part} ; - -- : VP -> Utt ; -- There's no "short form", so just using InfMa instead of InfDa - UttVPShort vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; - --TODO: maybe InfMa should be default in PhraseEst and InfDa here? + -- : VP -> Utt ; -- There's no "short form", so just using InfDa instead of InfMa + UttVPShort vp = {s = infVPdefault vp InfDa} ; - - - WithoutVP vp = -- ilma raamatut nägemata - { s = "ilma" ++ vp2adv vp False (VIInf InfMata) } ; + -- : VP -> Adv ; -- ilma raamatut nägemata + WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ; } diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 63d32741c..3de8e8b56 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -27,18 +27,24 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; lincat - VPI = {s : InfForm => Str} ; - [VPI] = {s1,s2 : InfForm => Str} ; + VPI = {s : InfStem => Str} ; + [VPI] = {s1,s2 : InfStem => Str} ; -- VPI = {s : Str} ; -- [VPI] = {s1,s2 : Str} ; lin - BaseVPI = twoTable InfForm ; - ConsVPI = consrTable InfForm comma ; + BaseVPI = twoTable InfStem ; + ConsVPI = consrTable InfStem comma ; - MkVPI vp = {s = \\i => infVP (NPCase Nom) Pos (agrP3 Sg) vp i} ; - ConjVPI = conjunctDistrTable InfForm ; + MkVPI vp = {s = \\i => infVPIF (NPCase Nom) Pos (agrP3 Sg) vp i} ; + ConjVPI = conjunctDistrTable InfStem ; ComplVPIVV vv vpi = - insertObj (\\_,_,_ => vpi.s ! vv.vi) (predV vv) ; + insertObj (\\_,_,_ => vpi.s ! vv.vi.stem) (predV vv) ; + + oper + -- Version that uses InfStem + infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if -> + infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ; + lincat VPS = { diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index a57c8964d..59c1b9ef6 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -41,18 +41,10 @@ concrete IdiomEst of Idiom = CatEst ** GenericCl vp = mkClause noSubj (agrP3 Sg) (passiveVP vp) ; - ProgrVP vp = - let - inf = (mkVPForms vp.v ! VIInf InfMas ! Simul ! Pos ! agrP3 Sg).fin ; - on = predV olla - in { - v = verbOlema ; - s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ inf ; - adv = vp.adv ; - p = vp.p ; - ext = vp.ext ; - sc = vp.sc ; - } ; + ProgrVP vp = vp ** { + v = verbOlema ; + s2 = \\b,p,a => vp.s2 ! b ! p ! a ++ (applyInfFormsVP InfMas vp).fin ; + } ; -- This gives "otetaan oluet" instead of "ottakaamme oluet". -- The imperative is not available in a $VP$. diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 5f74e4725..432f622f5 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -27,6 +27,7 @@ resource ParadigmsEst = open (Predef=Predef), Prelude, MorphoEst, + (ResEst=ResEst), HjkEst, CatEst in { @@ -62,6 +63,8 @@ oper abessive : Case ; -- e.g. "karbita" comitative : Case ; -- e.g. "karbiga" + InfForm : Type ; + infDa : InfForm ; -- e.g. "lugeda" infDes : InfForm ; -- e.g. "lugedes" infMa : InfForm ; -- e.g. "lugema" @@ -69,6 +72,7 @@ oper infMaks : InfForm ; -- e.g. "lugemaks" infMast : InfForm ; -- e.g. "lugemast" infMata : InfForm ; -- e.g. "lugemata" + infMine : InfForm ; -- e.g. "lugemine" -- The following type is used for defining *rection*, i.e. complements -- of many-place verbs and adjective. A complement can be defined by @@ -293,8 +297,10 @@ oper abessive = Abess ; comitative = Comit ; + -- combination of stem + suffix, e.g. infDes = {stem = InfD ; suf = "es"} ; + InfForm = ResEst.InfForms ; infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; - infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; + infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; infMine = InfMine ; prePrep : Case -> Str -> Prep = \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; @@ -856,7 +862,7 @@ oper mkVV : V -> VV = \v -> mkVVf v infDa ; mkVV : Str -> VV = \str -> mkVVf (mkV str) infDa ; } ; - mkVVf v f = v ** {vi = f ; lock_VV = <>} ; + mkVVf v f = lin VV (v ** {vi = f}) ; mkVQ = overload { mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; mkVQ : Str -> VQ = \str -> (mkV str) ** {lock_VQ = <>} ; diff --git a/src/estonian/PhraseEst.gf b/src/estonian/PhraseEst.gf index 904528395..0557107b1 100644 --- a/src/estonian/PhraseEst.gf +++ b/src/estonian/PhraseEst.gf @@ -12,7 +12,7 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { UttIP ip = {s = ip.s ! NPCase Nom} ; UttIAdv iadv = iadv ; UttNP np = {s = np.s ! NPCase Nom} ; - UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfDa} ; + UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; UttAdv adv = adv ; UttCN np = {s = np.s ! NCase Sg Nom} ; UttAP np = {s = np.s ! P.False ! NCase Sg Nom} ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index c6ce9643f..f34eb9970 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -81,7 +81,7 @@ oper param VForm = - Inf InfForm + Inf InfStem | Presn Number Person | Impf Number Person | Condit Number Person @@ -99,16 +99,32 @@ param Voice = Act | Pass ; - InfForm = - InfDa -- lugeda - | InfDes -- lugedes - | InfMa -- lugema - | InfMas -- lugemas - | InfMast -- lugemast - | InfMata -- lugemata - | InfMaks -- lugemaks + InfStem = + InfD -- luge+da/des, but can be irregular: tulla, tulles + | InfM -- lugema/mas/mast/maks/mata/mine ; +oper + InfForms : Type = {stem : InfStem ; suf : Str} ; + InfDa, InfDes, InfMa, InfMas, InfMast, InfMata, InfMaks, InfMine : InfForms ; + InfDa = {stem = InfD ; suf = "a"} ; -- lugeda + InfDes = {stem = InfD ; suf = "es"} ; -- lugedes + InfMa = {stem = InfM ; suf = "a"} ; -- lugema + InfMas = {stem = InfM ; suf = "as"} ; -- lugemas + InfMast = {stem = InfM ; suf = "ast"} ; -- lugemast + InfMata = {stem = InfM ; suf = "ata"} ; -- lugemata + InfMaks = {stem = InfM ; suf = "aks"} ; -- lugemaks + InfMine = {stem = InfM ; suf = "ine"} ; -- lugemine + + applyInfFormsVP : InfForms -> VP -> {fin,inf : Str} = \if,vp -> + let vpforms : VPForms = mkVPForms vp.v ; + stemOnly : {fin,inf : Str} = vpforms ! VIInf if.stem ! Simul ! Pos ! agrP3 Sg ; + in stemOnly ** {fin = glue stemOnly.fin if.suf} ; -- Despite the name, the infinite form is in the "fin" field, "inf" contains participle + + applyInfFormsV : InfForms -> (VForm => Str) -> Str = \if,vf -> + glue (vf ! Inf if.stem) if.suf ; + +param SType = SDecl | SQuest | SInv ; --2 For $Relative$ @@ -180,13 +196,12 @@ param Verb2 : Type = Verb1 ** {c2 : Compl} ; Verb3 : Type = Verb2 ** {c3 : Compl} ; - linV : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; - linV2 : Verb -> Str = \v -> v.s ! Inf InfMa ++ v.p ; + linV2, linV : Verb -> Str = \v -> applyInfFormsV InfMa v.s ++ v.p ; param VIForm = VIFin Tense - | VIInf InfForm + | VIInf InfStem | VIPass Tense | VIPresPart | VIImper @@ -276,7 +291,7 @@ oper } ; predV : Verb1 -> VP = \verb -> { - v = verb ; -- ignoring the subject + v = verb ; -- ignoring the subject case of Verb, it is stored in VP.sc later s2 = \\_,_,_ => [] ; adv = [] ; ext = [] ; --relative clause @@ -405,17 +420,18 @@ oper subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = sc ; isPre = True} np ; - infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVPAnt Simul ; + infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; - infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = + infVPAnt : Anteriority -> NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = \ant,sc,pol,agr,vp,vi -> let - fin = case sc of { -- subject case - NPCase Nom => True ; -- mina tahan joosta - _ => False -- minul peab auto olema + complCase = case sc of { -- choosing case for the complement. sometimes this function is called so that sc is the VP's subject case, but other times it's some other form. + NPCase Nom => True ; + _ => False } ; - verb = mkVPForms vp.v ! VIInf vi ! ant ! Pos ! agr ; -- no "ei" - compl = vp.s2 ! fin ! pol ! agr ; -- but compl. case propagated + verbStem = mkVPForms vp.v ! VIInf vi.stem ! ant ! Pos ! agr ; -- no "ei" + verb = verbStem ** {fin = glue verbStem.fin vi.suf} ; + compl = vp.s2 ! complCase ! pol ! agr ; -- but compl. case propagated adv = vp.adv in -- inverted word order; e.g. @@ -512,8 +528,8 @@ oper tulgu = (init tulge) + "u" ; in {s = table { - Inf InfDa => tulla ; - Inf InfDes => tulles ; + Inf InfD => tull_ ; + Inf InfM => init tulema ; Presn Sg P1 => tule_ + "n" ; Presn Sg P2 => tule_ + "d" ; Presn Sg P3 => tuleb ; @@ -547,12 +563,7 @@ oper PresPart Act => laulev ; PresPart Pass => tuld_ + "av" ; --d or t PastPart Act => tulnud ; - PastPart Pass => tuldud ; - Inf InfMa => tulema ; - Inf InfMas => tulema + "s" ; - Inf InfMast => tulema + "st" ; - Inf InfMata => tulema + "ta" ; - Inf InfMaks => tulema + "ks" + PastPart Pass => tuldud } ; sc = NPCase Nom ; p = [] From 4e204d66a8e328ec5fc13f4dc8595b8f98541bf7 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 14 Apr 2022 19:07:03 +0800 Subject: [PATCH 104/141] (Est) Use genitive stem+suffix for 4 other cases --- src/estonian/AdverbEst.gf | 2 +- src/estonian/DocumentationEstFunctor.gf | 48 +++++++++------- src/estonian/ExtraEst.gf | 17 +++--- src/estonian/MorphoEst.gf | 16 +----- src/estonian/NounEst.gf | 12 +--- src/estonian/ParadigmsEst.gf | 73 +++++++++++++++---------- src/estonian/RelativeEst.gf | 2 +- src/estonian/ResEst.gf | 69 +++++++++++++---------- src/estonian/VerbEst.gf | 4 +- 9 files changed, 128 insertions(+), 115 deletions(-) diff --git a/src/estonian/AdverbEst.gf b/src/estonian/AdverbEst.gf index ad84dcb9a..566f3475d 100644 --- a/src/estonian/AdverbEst.gf +++ b/src/estonian/AdverbEst.gf @@ -11,7 +11,7 @@ concrete AdverbEst of Adverb = CatEst ** open ResEst, Prelude in { s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ s.s } ; - PrepNP prep np = {s = preOrPost prep.isPre prep.s (np.s ! prep.c)} ; + PrepNP prep np = {s = appCompl True Pos prep np} ; AdAdv = cc2 ; diff --git a/src/estonian/DocumentationEstFunctor.gf b/src/estonian/DocumentationEstFunctor.gf index a40affde8..91faf858f 100644 --- a/src/estonian/DocumentationEstFunctor.gf +++ b/src/estonian/DocumentationEstFunctor.gf @@ -23,11 +23,17 @@ lincat oper heading : N -> Str = \n -> (nounHeading n).s ; + caseplus2nf : N -> ResEst.Number -> CasePlus -> Str = \noun,num,cas -> + noun.s ! NCase num cas.c ++ cas.suf ; + + caseplus2af : (AForm => Str) -> ResEst.Number -> CasePlus -> Str = \adj,num,cas -> + adj ! AN (NCase num cas.c) ++ cas.suf ; + lin InflectionN, InflectionN2, InflectionN3 = \noun -> { t = "s" ; s1 = heading1 (heading noun_Category) ; - s2 = inflNoun (\nf -> noun.s ! nf) + s2 = inflNoun (caseplus2nf noun) } ; InflectionA, InflectionA2 = \adj -> @@ -37,11 +43,11 @@ lin in { t = "a" ; s1 = heading1 (heading adjective_Category) ; - s2 = inflNoun (\nf -> posit ! AN nf) ++ + s2 = inflNoun (caseplus2af posit) ++ heading2 (heading comparative_Parameter) ++ - inflNoun (\nf -> compar ! AN nf) ++ + inflNoun (caseplus2af compar) ++ heading2 (heading superlative_Parameter) ++ - inflNoun (\nf -> superl ! AN nf) + inflNoun (caseplus2af superl) } ; InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> { @@ -248,24 +254,24 @@ oper td (vfin (PastPart Pass ))) ) ; --} - inflNoun : (NForm -> Str) -> Str = \nouns -> + inflNoun : (Number -> CasePlus -> Str) -> Str = \nouns -> frameTable ( - tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++ - tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++ - tr (th (heading partitive_Parameter) ++ td (nouns (NCase Sg Part)) ++ td (nouns (NCase Pl Part))) ++ - tr (th (heading translative_Parameter) ++ td (nouns (NCase Sg Transl)) ++ td (nouns (NCase Pl Transl))) ++ - tr (th (heading essive_Parameter) ++ td (nouns (NCase Sg Ess)) ++ td (nouns (NCase Pl Ess))) ++ - tr (th (heading inessive_Parameter) ++ td (nouns (NCase Sg Iness)) ++ td (nouns (NCase Pl Iness))) ++ - tr (th (heading elative_Parameter) ++ td (nouns (NCase Sg Elat)) ++ td (nouns (NCase Pl Elat))) ++ - tr (th (heading illative_Parameter) ++ td (nouns (NCase Sg Illat)) ++ td (nouns (NCase Pl Illat))) ++ - tr (th (heading adessive_Parameter) ++ td (nouns (NCase Sg Adess)) ++ td (nouns (NCase Pl Adess))) ++ - tr (th (heading ablative_Parameter) ++ td (nouns (NCase Sg Ablat)) ++ td (nouns (NCase Pl Ablat))) ++ - tr (th (heading allative_Parameter) ++ td (nouns (NCase Sg Allat)) ++ td (nouns (NCase Pl Allat))) ++ - tr (th (heading abessive_Parameter) ++ td (nouns (NCase Sg Abess)) ++ td (nouns (NCase Pl Abess))) ++ - tr (th (heading comitative_Parameter) ++ td (nouns (NCase Sg Comit)) ++ td (nouns (NCase Pl Comit))) ++ - tr (th (heading instructive_Parameter) ++ td (nouns (NCase Sg Termin)) ++ td (nouns (NCase Pl Termin)) - )) ; + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ + tr (th (heading nominative_Parameter) ++ td (nouns Sg Nominative) ++ td (nouns Pl Nominative)) ++ + tr (th (heading genitive_Parameter) ++ td (nouns Sg Genitive) ++ td (nouns Pl Genitive)) ++ + tr (th (heading partitive_Parameter) ++ td (nouns Sg Partitive) ++ td (nouns Pl Partitive)) ++ + tr (th (heading translative_Parameter) ++ td (nouns Sg Translative) ++ td (nouns Pl Translative)) ++ + tr (th (heading essive_Parameter) ++ td (nouns Sg Essive) ++ td (nouns Pl Essive)) ++ + tr (th (heading inessive_Parameter) ++ td (nouns Sg Inessive) ++ td (nouns Pl Inessive)) ++ + tr (th (heading elative_Parameter) ++ td (nouns Sg Elative) ++ td (nouns Pl Elative)) ++ + tr (th (heading illative_Parameter) ++ td (nouns Sg Illative) ++ td (nouns Pl Illative)) ++ + tr (th (heading adessive_Parameter) ++ td (nouns Sg Adessive) ++ td (nouns Pl Adessive)) ++ + tr (th (heading ablative_Parameter) ++ td (nouns Sg Ablative) ++ td (nouns Pl Ablative)) ++ + tr (th (heading allative_Parameter) ++ td (nouns Sg Allative) ++ td (nouns Pl Allative)) ++ + tr (th (heading abessive_Parameter) ++ td (nouns Sg Abessive) ++ td (nouns Pl Abessive)) ++ + tr (th (heading comitative_Parameter) ++ td (nouns Sg Comitative) ++ td (nouns Pl Comitative)) ++ + tr (th (heading instructive_Parameter) ++ td (nouns Sg Terminative) ++ td (nouns Pl Terminative)) + ) ; lin NoDefinition t = {s=t.s}; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 3de8e8b56..644d8e9ea 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -1,5 +1,5 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** - open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX) in { + open ResEst, MorphoEst, Coordination, Prelude, NounEst, StructuralEst, (R = ParamX), (P = ParadigmsEst) in { flags coding=utf8; lin GenNP np = { @@ -9,11 +9,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** isNeg = False } ; - GenCN = caseCN Gen ; -- soome mees - ComitCN = caseCN Comit ; -- puudega mets - ElatCN = caseCN Elat ; -- puust laud - AbessCN = caseCN Abess ; -- autota pere - TerminCN = caseCN Termin ; -- maani kleit + GenCN = caseCN Genitive ; -- soome mees + ComitCN = caseCN Comitative ; -- puudega mets + ElatCN = caseCN Elative ; -- puust laud + AbessCN = caseCN Abessive ; -- autota pere + TerminCN = caseCN Terminative ; -- maani kleit GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; @@ -23,8 +23,9 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** --- a = RAg (agrP3 num.n) } ; oper - caseCN : Case -> NP -> CN -> CN = \c,np,cn -> - lin CN { s = \\nf => np.s ! NPCase c ++ cn.s ! nf } ; + caseCN : CasePlus -> NP -> CN -> CN = \c,np,cn -> cn ** { + s = \\nf => appCompl True Pos (P.casePrep c) np ++ cn.s ! nf + } ; lincat VPI = {s : InfStem => Str} ; diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index e7cc6e532..18de36838 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -520,16 +520,12 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> NPCase Gen => minu ; NPCase Part => mind ; NPCase Transl => minu + "ks" ; - NPCase Ess => minu + "na" ; NPCase Iness => minu_short + "s" ; NPCase Elat => minu_short + "st" ; NPCase Illat => minu_short + "sse" ; NPCase Adess => minu_short + "l" ; NPCase Ablat => minu_short + "lt" ; NPCase Allat => minu_short + "le" ; - NPCase Abess => minu + "ta" ; - NPCase Comit => minu + "ga" ; - NPCase Termin => minu + "ni" ; NPAcc => mind } ; a = Ag n p @@ -584,16 +580,12 @@ oper Gen => "selle" ; Part => "seda" ; Transl => "selleks" ; - Ess => "sellena" ; Iness => "selles" ; Elat => "sellest" ; Illat => "sellesse" ; Adess => "sellel" ; Ablat => "sellelt" ; - Allat => "sellele" ; - Abess => "selleta" ; - Comit => "sellega" ; - Termin => "selleni" + Allat => "sellele" } ; } ; @@ -604,16 +596,12 @@ oper Gen => "nende" ; Part => "neid" ; Transl => "nendeks" ; - Ess => "nendena" ; Iness => "nendes" ; Elat => "nendest" ; Illat => "nendesse" ; Adess => "nendel" ; Ablat => "nendelt" ; - Allat => "nendele" ; - Abess => "nendeta" ; - Comit => "nendega" ; - Termin => "nendeni" + Allat => "nendele" } ; } ; diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index 3b65059c1..b641c6896 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -19,13 +19,6 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in case of { <_, NPAcc, True,_> => ; -- kolm kassi (as object) <_, NPCase Nom, True,_> => ; -- kolm kassi (as subject) - - --Only the last word gets case ending. - <_, NPCase Comit, _, _> => ; -- kolme kassiga - <_, NPCase Abess, _, _> => ; -- kolme kassita - <_, NPCase Ess, _, _> => ; -- kolme kassina - <_, NPCase Termin,_, _> => ; -- kolme kassini - <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } @@ -212,10 +205,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in s = \\nf => case ap.infl of { Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile - Regular => case nf of { - NCase num (Ess|Abess|Comit|Termin) => ap.s ! True ! NCase num Gen ++ cn.s ! nf ; --suure kassiga, not *suurega kassiga - _ => ap.s ! True ! nf ++ cn.s ! nf - } + Regular => ap.s ! True ! nf ++ cn.s ! nf -- Ess,Abess,Comit,Termin will only get case ending after the CN, so suure kassiga, not *suurega kassiga } } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 432f622f5..2c859b743 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -276,50 +276,67 @@ oper -- The definitions should not bother the user of the API. So they are -- hidden from the document. - Case = MorphoEst.Case ; + Case = MorphoEst.CasePlus ; Number = MorphoEst.Number ; singular = Sg ; plural = Pl ; - nominative = Nom ; - genitive = Gen ; - partitive = Part ; - illative = Illat ; - inessive = Iness ; - elative = Elat ; - allative = Allat ; - adessive = Adess ; - ablative = Ablat ; - translative = Transl ; - terminative = Termin ; - essive = Ess ; - abessive = Abess ; - comitative = Comit ; + nominative = Nominative ; + genitive = Genitive ; + partitive = Partitive ; + illative = Illative ; + inessive = Inessive ; + elative = Elative ; + allative = Allative ; + adessive = Adessive ; + ablative = Ablative ; + translative = Translative ; + terminative = Terminative ; + essive = Essive ; + abessive = Abessive ; + comitative = Comitative ; + + -- IL 2022-04: after introducing stem+suffixes, 4 other cases have just genitive stems. + -- isActuallyGenitive is needed for those mkN2 and mkN3 instances that take a Prep as an argument, + -- and actual Gen gets isPre=True, and those with genitive stem+suffix should get False. + -- This is confusing and error-prone, consider restructuring/renaming things later. + isActuallyGenitive : MorphoEst.CasePlus -> Bool = \c -> case c of { + {c = MorphoEst.Gen ; suf = ""} => True ; + _ => False + } ; -- combination of stem + suffix, e.g. infDes = {stem = InfD ; suf = "es"} ; InfForm = ResEst.InfForms ; infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; infMine = InfMine ; - prePrep : Case -> Str -> Prep = - \c,p -> {c = NPCase c ; s = p ; isPre = True ; lock_Prep = <>} ; - postPrep : Case -> Str -> Prep = - \c,p -> {c = NPCase c ; s = p ; isPre = False ; lock_Prep = <>} ; - postGenPrep p = { - c = NPCase genitive ; s = p ; isPre = False ; lock_Prep = <>} ; - casePrep : Case -> Prep = - \c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ; - accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ; + mkPrep : (isPre : Bool) -> Case -> Str -> Prep = \isPre,c,p -> lin Prep { + c = casep2npformp c ; + s = p ; + isPre = isPre + } ; + prePrep : Case -> Str -> Prep = mkPrep True ; + postPrep : Case -> Str -> Prep = mkPrep False ; + postGenPrep : Str -> Prep = postPrep genitive ; + -- The Prep's isPre field is used in a special (hacky) way in mkN3 and mkN2. + -- Used to be able to match whether the Prep's case is Gen, but now several + -- Preps use the genitive stem, so we need to check if it's actually genitive. + casePrep : Case -> Prep = \c -> mkPrep (isActuallyGenitive c) c [] ; + + -- NPAcc is different, it's not formed from a Case(Plus) + accPrep : Prep = lin Prep { + c = case2npformp NPAcc ; + s = [] ; + isPre = True + } ; mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ; mkAdV : Str -> AdV = \str -> {s = str ; lock_AdV = <>} ; mkAdN : Str -> AdN = \str -> {s = str ; lock_AdN = <>} ; mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; - - mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; mkConj : Str -> Number -> Conj = \ja,num -> lin Conj ((sd2 "" ja) ** {n = num}) ; @@ -565,7 +582,7 @@ oper lock_N3 = <> } ; - mkIsPre : Prep -> Bool = \p -> case p.c of { + mkIsPre : Prep -> Bool = \p -> case p.c.npf of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) _ => True -- syyte Jussia vastaan, puhe Jussin puolesta } ; @@ -821,7 +838,7 @@ oper <_,_,_,_> => regVForms jatma jatta jatab jaetakse } ; - caseV c v = {s = v.s ; p = v.p; sc = NPCase c ; lock_V = <>} ; + caseV c v = v ** {sc = NPCase c.c} ; vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 4f90bb254..4be5f96ae 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -32,7 +32,7 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in who = appCompl True p slash.c2 (rp2np (complNumAgr ag) rp) in who ++ cls ; - c = slash.c2.c + c = slash.c2.c.npf } ; FunRP p np rp = { diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index f34eb9970..066eeb153 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -15,16 +15,35 @@ resource ResEst = ParamX ** open Prelude in { -- This is the $Case$ as needed for both nouns and $NP$s. param - Case = Nom | Gen | Part + Case = Nom | Gen | Part | Transl | Illat | Iness | Elat | Allat | Adess | Ablat - | Transl | Ess | Termin | Abess | Comit; - + ; NForm = NCase Number Case ; + oper + -- Reduce the Case parameter: many cases use the Genitive stem and just add suffix to it + CasePlus : Type = { + c : Case ; -- e.g. Gen + suf : Str -- e.g. "ga" for comitative + } ; + Nominative = {c = Nom ; suf = []} ; + Genitive = {c = Gen ; suf = []} ; + Partitive = {c = Part ; suf = []} ; + Illative = {c = Illat ; suf = []} ; + Inessive = {c = Iness ; suf = []} ; + Elative = {c = Elat ; suf = []} ; + Allative = {c = Allat ; suf = []} ; + Adessive = {c = Adess ; suf = []} ; + Ablative = {c = Ablat ; suf = []} ; + Translative = {c = Transl ; suf = []} ; + Terminative = {c = Gen ; suf = BIND ++ "ni"} ; + Essive = {c = Gen ; suf = BIND ++ "na"} ; + Abessive = {c = Gen ; suf = BIND ++ "ta"} ; + Comitative = {c = Gen ; suf = BIND ++ "ga"} ; + + param -- Agreement of $NP$ has number*person and the polite second ("te olette valmis"). - - Agr = Ag Number Person | AgPol ; oper @@ -66,6 +85,14 @@ param NPForm = NPCase Case | NPAcc ; oper + NPFormPlus : Type = { + npf : NPForm ; -- e.g. NPCase Gen + suf : Str -- e.g. "ga" for comitative + } ; + + casep2npformp : CasePlus -> NPFormPlus = \cp -> cp ** {npf = NPCase cp.c} ; + case2npformp : NPForm -> NPFormPlus = \npf-> {npf = npf ; suf = []} ; + npform2case : Number -> NPForm -> Case = \n,f -> -- type signature: workaround for gfc bug 9/11/2007 @@ -150,11 +177,11 @@ param --- - Compl : Type = {s : Str ; c : NPForm ; isPre : Bool} ; + Compl : Type = {s : Str ; c : NPFormPlus ; isPre : Bool} ; appCompl : Bool -> Polarity -> Compl -> NP -> Str = \isFin,b,co,np -> let - c = case co.c of { + c = case co.c.npf of { NPAcc => case b of { Neg => NPCase Part ; -- ma ei näe raamatut/sind Pos => case isFin of { @@ -165,25 +192,17 @@ param } } } ; - _ => co.c + _ => co.c.npf } ; -{- - c = case of { - <_, Neg, NPAcc,_> => NPCase Part ; -- en näe taloa/sinua - <_, Pos, NPAcc,True> => NPAcc ; -- näen/täytyy sinut - => NPCase Nom ; -- täytyy nähdä talo - <_,_,coc,_> => coc - } ; --} - nps = np.s ! c + nps = np.s ! c ++ co.c.suf ; -- complement's NPFormPlus may include suffix for the cases based on Gen stem, e.g. comitative "ga" in preOrPost co.isPre co.s nps ; -- Used for passive; c2 of V2/VPSlash becomes sc of VP compl2subjcase : Compl -> NPForm = \compl -> - case compl.c of { + case compl.c.npf of { NPCase Gen => NPCase Nom ; -- valisin koera -> koer valitakse - _ => compl.c -- rääkisin koerale -> koerale räägitakse + _ => compl.c.npf -- rääkisin koerale -> koerale räägitakse } ; -- For $Verb$. @@ -418,7 +437,7 @@ oper -- This is used for subjects of passives: therefore isFin in False. subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> - appCompl False b {s = [] ; c = sc ; isPre = True} np ; + appCompl False b {s = [] ; c = case2npformp sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; @@ -709,31 +728,23 @@ oper NCase Sg Gen => joe ; NCase Sg Part => joge ; NCase Sg Transl => joe + "ks" ; - NCase Sg Ess => joe + "na" ; NCase Sg Iness => joe + "s" ; NCase Sg Elat => joe + "st" ; NCase Sg Illat => joesse ; NCase Sg Adess => joe + "l" ; NCase Sg Ablat => joe + "lt" ; NCase Sg Allat => joe + "le" ; - NCase Sg Abess => joe + "ta" ; - NCase Sg Comit => joe + "ga" ; - NCase Sg Termin => joe + "ni" ; NCase Pl Nom => joe + "d" ; NCase Pl Gen => jogede ; NCase Pl Part => jogesid ; NCase Pl Transl => jogede + "ks" ; - NCase Pl Ess => jogede + "na" ; NCase Pl Iness => jogede + "s" ; NCase Pl Elat => jogede + "st" ; NCase Pl Illat => jogede + "sse" ; NCase Pl Adess => jogede + "l" ; NCase Pl Ablat => jogede + "lt" ; - NCase Pl Allat => jogede + "le" ; - NCase Pl Abess => jogede + "ta" ; - NCase Pl Comit => jogede + "ga" ; - NCase Pl Termin => jogede + "ni" + NCase Pl Allat => jogede + "le" } --; -- lock_N = <> diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 3f5f0c3dc..c07c24b1c 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -34,7 +34,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { insertObj (\\_,b,agr => let n = (complNumAgr agr) in - ap.s ! False ! (NCase n (npform2case n v.c2.c))) --- v.cs.s ignored + ap.s ! False ! (NCase n (npform2case n v.c2.c.npf))) --- v.cs.s ignored (predV v) ; SlashV2S v s = @@ -47,7 +47,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { SlashV2A v ap = insertObj (\\fin,b,_ => - ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c))) ----agr to obj + ap.s ! False ! (NCase Sg (npform2case Sg v.c3.c.npf))) ----agr to obj (predV v) ** {c2 = v.c2} ; ComplSlash vp np = insertObjPre (\\fin,b,_ => appCompl fin b vp.c2 np) vp ; From ee5c84297294311ee700fa7d5934c2f3d55de3da Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 14 Apr 2022 20:02:44 +0800 Subject: [PATCH 105/141] (Est) Replace all {lock_C = <>} with lin C {...} --- src/estonian/ConjunctionEst.gf | 1 - src/estonian/LexiconEst.gf | 2 +- src/estonian/MakeStructuralEst.gf | 13 +-- src/estonian/MorphoEst.gf | 1 - src/estonian/NounEst.gf | 9 +- src/estonian/ParadigmsEst.gf | 164 ++++++++++++++---------------- src/estonian/ResEst.gf | 13 +-- src/estonian/StructuralEst.gf | 5 +- 8 files changed, 91 insertions(+), 117 deletions(-) diff --git a/src/estonian/ConjunctionEst.gf b/src/estonian/ConjunctionEst.gf index 330bb50b5..d75177331 100644 --- a/src/estonian/ConjunctionEst.gf +++ b/src/estonian/ConjunctionEst.gf @@ -74,7 +74,6 @@ concrete ConjunctionEst of Conjunction = } ; infl = Regular } ; s2 = x ; - lock_ListAP = <> } ; diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index ca2e1cb90..254883ccc 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -366,7 +366,7 @@ lin oper mkOrd1 : N -> Ord ; - mkOrd1 x = {s = x.s ; lock_Ord = <> } ; + mkOrd1 x = lin Ord x ; cpartitive = casePrep partitive ; ctranslative = casePrep translative ; celative = casePrep elative ; diff --git a/src/estonian/MakeStructuralEst.gf b/src/estonian/MakeStructuralEst.gf index 0b17be122..2ce54b28d 100644 --- a/src/estonian/MakeStructuralEst.gf +++ b/src/estonian/MakeStructuralEst.gf @@ -1,11 +1,12 @@ resource MakeStructuralEst = open CatEst, ParadigmsEst, MorphoEst, Prelude in { oper - mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> - {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> - {s = x ; lock_Subj = <>} ; - mkIQuant : Str -> IQuant = \s -> - {s = \\n,c => s ; lock_IQuant = <>} ; ---- + mkConj : Str -> Str -> ParadigmsEst.Number -> Conj = \x,y,n -> lin Conj { + s1 = x ; + s2 = y ; + n = n + } ; + mkSubj : Str -> Subj = \x -> lin Subj {s = x} ; + mkIQuant : Str -> IQuant = \s -> lin IQuant {s = \\n,c => s} ; } diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index 18de36838..1cd25c5fa 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -457,7 +457,6 @@ These used to be here: AAdv => afs.adv_superl } } ; - lock_A = <> } ; nforms2aforms : NForms -> AForms = \nforms -> diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index b641c6896..f87ae33f9 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -178,13 +178,8 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in UseN2 n = n ; - Use2N3 f = lin N2 { - s = f.s ; - c2 = f.c2 ; - isPre = f.isPre - } ; - Use3N3 f = lin N2 { - s = f.s ; + Use2N3 f = f ; + Use3N3 f = f ** { c2 = f.c3 ; isPre = f.isPre2 } ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 2c859b743..55f5cc691 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -158,7 +158,7 @@ oper -- Two-place adjectives need a case for the second argument. mkA2 : A -> Prep -> A2 -- e.g. "vihane" (postGenPrep "peale") - = \a,p -> a ** {c2 = p ; lock_A2 = <>}; + = \a,p -> lin A2 (a ** {c2 = p}) ; invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms. @@ -332,10 +332,10 @@ oper isPre = True } ; - mkAdv : Str -> Adv = \str -> {s = str ; lock_Adv = <>} ; - mkAdV : Str -> AdV = \str -> {s = str ; lock_AdV = <>} ; - mkAdN : Str -> AdN = \str -> {s = str ; lock_AdN = <>} ; - mkAdA : Str -> AdA = \str -> {s = str ; lock_AdA = <>} ; + mkAdv : Str -> Adv = \str -> lin Adv (ss str) ; + mkAdV : Str -> AdV = \str -> lin AdV (ss str) ; + mkAdN : Str -> AdN = \str -> lin AdN (ss str) ; + mkAdA : Str -> AdA = \str -> lin AdA (ss str) ; mkConj = overload { mkConj : Str -> Conj = \ja -> lin Conj ((sd2 "" ja) ** {n = Sg}) ; @@ -344,7 +344,7 @@ oper mkConj : Str -> Str -> Number -> Conj = \nii,kui,num -> lin Conj ((sd2 nii kui) ** {n = num}) ; } ; - mkPConj s = ss s ** {lock_PConj = <>} ; + mkPConj s = lin PConj (ss s) ; mkN = overload { mkN : (nisu : Str) -> N = mk1N ; @@ -360,14 +360,13 @@ oper -- Adjective forms (incl. comp and sup) are derived from noun forms mk1A : Str -> A = \suur -> let aforms = aForms2A (nforms2aforms (hjk_type suur)) - in aforms ** {infl = Regular } ; + in lin A (aforms ** {infl = Regular}) ; mkNA : N -> A = \suur -> let aforms = aForms2A (nforms2aforms (n2nforms suur)) ; - in aforms ** {infl = Regular } ; + in lin A (aforms ** {infl = Regular}) ; - - mk1N : (link : Str) -> N = \s -> nForms2N (hjk_type s) ** {lock_N = <> } ; + mk1N : (link : Str) -> N = \s -> lin N (nForms2N (hjk_type s)) ; -- mk2N, mk3N, mk4N make sure that the user specified forms end up in the paradigm, -- even though the rest is wrong @@ -381,7 +380,7 @@ oper 4 => nfs ! 4 ; 5 => nfs ! 5 } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk3N : (tukk,tuku,tukku : Str) -> N = \tukk,tuku,tukku -> @@ -394,7 +393,7 @@ oper 4 => nfs ! 4 ; 5 => nfs ! 5 } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk4N : (paat,paadi,paati,paate : Str) -> N = \paat,paadi,paati,paate -> @@ -407,17 +406,17 @@ oper 4 => nfs ! 4 ; 5 => paate } ; - in nForms2N nfs_fixed ** {lock_N = <> } ; + in lin N (nForms2N nfs_fixed) ; mk6N : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N = - \a,b,c,d,e,f -> nForms2N (nForms6 a b c d e f) ** {lock_N = <> } ; + \a,b,c,d,e,f -> lin N (nForms2N (nForms6 a b c d e f)) ; - mkStrN : Str -> N -> N = \sora,tie -> { - s = \\c => sora + tie.s ! c ; lock_N = <> + mkStrN : Str -> N -> N = \sora,tie -> tie ** { + s = \\c => sora + tie.s ! c } ; - mkNN : N -> N -> N = \oma,tunto -> { - s = \\c => oma.s ! c + tunto.s ! c ; lock_N = <> + mkNN : N -> N -> N = \oma,tunto -> tunto ** { + s = \\c => oma.s ! c + tunto.s ! c ; } ; ---- TODO: oma in possessive suffix forms @@ -575,12 +574,12 @@ oper mkN2 : N -> Prep -> N2 = mmkN2 } ; - mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ; - mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; + mmkN2 : N -> Prep -> N2 = \n,c -> lin N (n ** {c2 = c ; isPre = mkIsPre c}) ; + mkN3 = \n,c,e -> lin N3 (n ** { + c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista - lock_N3 = <> - } ; + }) ; mkIsPre : Prep -> Bool = \p -> case p.c.npf of { NPCase Gen => notB p.isPre ; -- Jussin veli (prep is , isPre becomes False) @@ -589,37 +588,36 @@ oper mkPN = overload { mkPN : Str -> PN = mkPN_1 ; - mkPN : N -> PN = \s -> {s = \\c => s.s ! NCase Sg c ; lock_PN = <>} ; + mkPN : N -> PN = \s -> lin PN {s = \\c => s.s ! NCase Sg c} ; } ; - mkPN_1 : Str -> PN = \s -> {s = \\c => (mk1N s).s ! NCase Sg c ; lock_PN = <>} ; + mkPN_1 : Str -> PN = \s -> lin PN {s = \\c => (mk1N s).s ! NCase Sg c} ; -- adjectives mkA = overload { mkA : Str -> A = mkA_1 ; - mkA : N -> A = \n -> noun2adjDeg n ** {infl = Regular ; lock_A = <>} ; + mkA : N -> A = \n -> noun2adjDeg n ** {infl = Regular} ; mkA : N -> (parem,parim : Str) -> A = regAdjective ; - mkA : N -> (infl : Infl) -> A = \n,infl -> noun2adjDeg n ** {infl = infl ; lock_A = <>} ; + mkA : N -> (infl : Infl) -> A = \n,infl -> noun2adjDeg n ** {infl = infl} ; -- TODO: temporary usage of regAdjective1 mkA : N -> (valmim,valmeim : Str) -> (infl : Infl) -> A = - \n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl ; lock_A = <>} ; + \n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl} ; } ; - invA balti = {s = \\_,_ => balti ; infl = Invariable ; lock_A = <>} ; + invA balti = lin A {s = \\_,_ => balti ; infl = Invariable} ; - mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ; + mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular } ; -- auxiliaries - mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> - {s = table { + mkAdjective : (_,_,_ : Adj) -> A = \hea,parem,parim -> lin A ({ + s = table { Posit => hea.s ; Compar => parem.s ; Superl => parim.s } ; infl = Regular ; - lock_A = <> - } ; + }) ; -- Adjectives whose comparison forms are explicitly given. -- The inflection of these forms with the audit-rule always works. @@ -640,7 +638,7 @@ oper -- e.g. lai -> laiem -> laiim? / laieim? -- See also: http://www.eki.ee/books/ekk09/index.php?p=3&p1=4&id=208 -- Rather use "kõige" + Comp instead of the superlative. - noun2adjDeg : Noun -> Adjective = \kaunis -> + noun2adjDeg : Noun -> A = \kaunis -> let kauni = (kaunis.s ! NCase Sg Gen) ; -- Convert the final 'i' to 'e' for the superlative @@ -660,27 +658,13 @@ oper mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs } ; - mk1V : Str -> V = \s -> - let vfs = vforms2V (vForms1 s) in - vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk2V : (_,_ : Str) -> V = \x,y -> - let - vfs = vforms2V (vForms2 x y) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk3V : (_,_,_ : Str) -> V = \x,y,z -> - let - vfs = vforms2V (vForms3 x y z) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> - let - vfs = vforms2V (vForms4 a b c d) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> - let - vfs = vforms2V (vForms8 a b c d e f g h) - in vfs ** {sc = NPCase Nom ; lock_V = <>} ; - mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> - {s = saama.s ; p = aru ; sc = saama.sc ; lock_V = <> } ; + vforms2v : ResEst.VForms -> CatEst.V = \vfs -> lin V (vforms2verb vfs ** {sc = NPCase Nom}) ; + mk1V : Str -> V = \s -> vforms2v (vForms1 s) ; + mk2V : (_,_ : Str) -> V = \x,y -> vforms2v (vForms2 x y) ; + mk3V : (_,_,_ : Str) -> V = \x,y,z -> vforms2v (vForms3 x y z) ; + mk4V : (x1,_,_,x4 : Str) -> V = \a,b,c,d -> vforms2v (vForms4 a b c d) ; + mk8V : (x1,_,_,_,_,_,_,x8 : Str) -> V = \a,b,c,d,e,f,g,h -> vforms2v (vForms8 a b c d e f g h) ; + mkPV : (aru : Str) -> (saama : V) -> V = \aru,saama -> saama ** {p=aru} ; -- This used to be the last case: _ => Predef.error (["expected infinitive, found"] ++ ottaa) @@ -840,10 +824,10 @@ oper caseV c v = v ** {sc = NPCase c.c} ; - vOlema = verbOlema ** {sc = NPCase Nom ; lock_V = <>} ; - vMinema = verbMinema ** {sc = NPCase Nom ; lock_V = <>} ; + vOlema = lin V (verbOlema ** {sc = NPCase Nom}) ; + vMinema = lin V (verbMinema ** {sc = NPCase Nom}) ; - mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ; + mk2V2 : V -> Prep -> V2 = \v,c -> lin V2 (v ** {c2 = c}) ; caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; dirV2 v = mk2V2 v accPrep ; @@ -860,20 +844,18 @@ oper dirV2 : V -> V2 ; mkV3 = overload { - mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V3 = <>} ; - mkV2 : V -> V3 = \v -> v ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - mkV2 : Str -> V3 = \str -> (mkV str) ** {c2 = accPrep ; - c3 = (casePrep allative) ; - lock_V3 = <>} ; - } ; + mkV3 : V -> Prep -> Prep -> V3 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ; + mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = accPrep ; c3 = casePrep allative}) ; + mkV3 : Str -> V3 = \str -> + let v : V = mkV str + in lin V3 (v ** {c2 = accPrep ; c3 = casePrep allative}) + } ; dirV3 v p = mkV3 v accPrep (casePrep p) ; dirdirV3 v = dirV3 v allative ; mkVS = overload { - mkVS : V -> VS = \v -> v ** {lock_VS = <>} ; - mkVS : Str -> VS = \str -> (mkV str) ** {lock_VS = <>} ; + mkVS : V -> VS = \v -> lin VS v ; + mkVS : Str -> VS = \str -> let v : V = mkV str in lin VS v ; } ; mkVV = overload { mkVV : V -> VV = \v -> mkVVf v infDa ; @@ -881,48 +863,50 @@ oper } ; mkVVf v f = lin VV (v ** {vi = f}) ; mkVQ = overload { - mkVQ : V -> VQ = \v -> v ** {lock_VQ = <>} ; - mkVQ : Str -> VQ = \str -> (mkV str) ** {lock_VQ = <>} ; + mkVQ : V -> VQ = \v -> lin VQ v ; + mkVQ : Str -> VQ = \str -> let v : V = mkV str in lin VQ v ; } ; V0 : Type = V ; AS, A2S, AV : Type = A ; A2V : Type = A2 ; - mkV0 v = v ** {lock_V = <>} ; + mkV0 v = v ; mkV2S = overload { - mkV2S : V -> Prep -> V2S = \v,p -> (mk2V2 v p) ** {lock_V2S = <>} ; - mkV2S : Str -> V2S = \str -> (mk2V2 (mkV str) (casePrep allative)) ** {lock_VS = <>} ; + mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (mk2V2 v p) ; + mkV2S : Str -> V2S = \str -> + let v : V = mkV str + in lin V2S (mk2V2 v (casePrep allative)) } ; --- mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ; + mkV2V = overload { mkV2V : V -> Prep -> V2V = \v,p -> mkV2Vf v p infMa ; mkV2V : V -> V2V = \v -> mkV2Vf v (casePrep genitive) infMa ; mkV2V : Str -> V2V = \str -> mkV2Vf (mkV str) (casePrep genitive) infMa ; } ; - mkV2Vf v p f = mk2V2 v p ** {vi = f ; lock_V2V = <>} ; + mkV2Vf v p f = lin V2V (mk2V2 v p ** {vi = f}) ; mkVA = overload { - mkVA : V -> Prep -> VA = \v,p -> v ** {c2 = p ; lock_VA = <>} ; - mkVA : V -> VA = \v -> v ** {c2 = casePrep translative ; lock_VA = <>} ; - mkVA : Str -> VA = \str -> (mkV str) ** {c2 = casePrep translative ; lock_VA = <>} ; + mkVA : V -> Prep -> VA = \v,p -> lin VA (v ** {c2 = p}) ; + mkVA : V -> VA = \v -> lin VA (v ** {c2 = casePrep genitive}) ; + mkVA : Str -> VA = \str -> let v : V = mkV str in + lin VA (v ** {c2 = casePrep genitive}) ; } ; mkV2A = overload { - mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> v ** {c2 = p ; c3 = q ; lock_V2A = <>} ; - mkV2A : V -> V2A = \v -> v ** {c2 = casePrep genitive ; - c3 = casePrep translative ; - lock_V2A = <>} ; - mkV2A : Str -> V2A = \str -> (mkV str) ** {c2 = casePrep genitive ; - c3 = casePrep translative ; - lock_V2A = <>} ; + mkV2A : V -> Prep -> Prep -> V2A = \v,p,q -> + lin V2A (v ** {c2 = p ; c3 = q}) ; + mkV2A : V -> V2A = \v -> + lin V2A (v ** {c2 = casePrep genitive ; c3 = casePrep translative}) ; + mkV2A : Str -> V2A = \str -> let v : V = mkV str in + lin V2A (v ** {c2 = casePrep genitive ; c3 = casePrep translative}) ; } ; - mkV2Q v p = mk2V2 v p ** {lock_V2Q = <>} ; + mkV2Q v p = lin V2Q (mk2V2 v p) ; - mkAS v = v ** {lock_A = <>} ; - mkA2S v p = mkA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; + mkAS a = a ; + mkA2S a p = mkA2 a p ; + mkAV a = a ; + mkA2V a p = mkA2 a p ; } ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 066eeb153..6ecc6f5d1 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -71,7 +71,7 @@ param Infl = Regular | Participle | Invariable ; oper - Adjective : Type = {s : Degree => AForm => Str; lock_A : {}} ; + Adjective : Type = {s : Degree => AForm => Str} ; --2 Noun phrases -- @@ -495,9 +495,7 @@ oper --Auxiliary for internal use mkVerb : (x1,_,_,_,_,_,_,x8 : Str) -> Verb = \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> - vforms2V (vForms8 - tulema tulla tuleb tullakse tulge tuli tulnud tuldud - ) ; + vforms2verb (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud) ; --below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; @@ -515,7 +513,7 @@ oper 7 => tuldud } ; - vforms2V : VForms -> Verb = \vh -> + vforms2verb : VForms -> Verb = \vh -> let tulema = vh ! 0 ; tulla = vh ! 1 ; @@ -624,7 +622,7 @@ oper regVerb : (_,_,_,_ : Str) -> Verb = \kinkima,kinkida,kingib,kingitakse -> - vforms2V (regVForms kinkima kinkida kingib kingitakse) ; + vforms2verb (regVForms kinkima kinkida kingib kingitakse) ; noun2adj : Noun -> Adj = noun2adjComp True ; @@ -746,8 +744,7 @@ oper NCase Pl Ablat => jogede + "lt" ; NCase Pl Allat => jogede + "le" - } --; --- lock_N = <> + } } ; oper diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index 695bc6257..51a09332e 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -34,7 +34,7 @@ concrete StructuralEst of Structural = CatEst ** either7or_DConj = sd2 "kas" "või" ** {n = Sg} ; everybody_NP = makeNP (mkN "igaüks") Sg ; every_Det = mkDet Sg (mkN "iga") ; - everything_NP = makeNP ((mkN "kõik") ** {lock_N = <>}) Sg ; + everything_NP = makeNP (mkN "kõik") Sg ; everywhere_Adv = ss "kõikjal" ; few_Det = mkDet Sg (mkN "mõni") ; --- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ; @@ -257,11 +257,10 @@ oper oper makeNP : N -> MorphoEst.Number -> CatEst.NP ; - makeNP noun num = { + makeNP noun num = lin NP { s = \\c => noun.s ! NCase num (npform2case num c) ; a = agrP3 num ; isPron = False ; - lock_NP = <> } ; lin From e80cd828702fbcb68e777abfc7b681386488fa62 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 10:33:41 +0800 Subject: [PATCH 106/141] (Est) misc small cleanup + better comments --- src/estonian/MorphoEst.gf | 40 +++++++-------------------------------- src/estonian/ResEst.gf | 1 - 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index 1cd25c5fa..fe8380238 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -416,23 +416,11 @@ resource MorphoEst = ResEst ** open Prelude, Predef, HjkEst in { (satu + "tud") ; -- PastPartPass - ----------------- -- auxiliaries -- ----------------- -{- Noun internal opers moved to ResEst - -These used to be here: - NForms : Type = Predef.Ints 5 => Str ; - Noun : Type = {s: NForm => Str } ; - nForms6 : (x1,_,_,_,_,x6 : Str) -> NForms ; - n2nforms : Noun -> NForms ; - nForms2N : NForms -> Noun ; - --} - -- Adjective forms AForms : Type = { @@ -472,15 +460,6 @@ These used to be here: adv_superl = suur + "immin" ; } ; -{- Verb internal opers moved to ResEst - -These used to be here: - VForms : Type = Predef.Ints 7 => Str ; - vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms ; - regVForms : (x1,_,_,x4 : Str) -> VForms ; - vforms2V : VForms -> Verb ; --} - ----------------------- -- for Structural @@ -504,10 +483,9 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- Here we define personal and relative pronouns. -- input forms: Nom, Gen, Part - -- Note that the Fin version required 5 input forms, the - -- Est pronouns thus seem to be much simpler. - -- TODO: remove NPAcc? - -- I: keep NPAcc; see appCompl in ResEst, it takes care of finding a right case for various types of complements; incl. when pronouns get different treatment than nouns (PassVP). + -- NPAcc is same as Part for Pron, and same as Gen for other nominals. + -- ResEst.appCompl returns right case for various types of complements, + -- incl. when pronouns get different treatment than nouns (like in PassV2). mkPronoun : (_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \mina, minu, mind, n, p -> @@ -538,6 +516,10 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> _ => x } ; + -- NB. This doesn't work correctly with stem+suffix based solution: + -- Ess, Abess, Comit, Termin all use the long Gen stem. + -- Alternative 1: let Gen be long form, leaving only Nom and Part actually short + -- Alternative 2: leave Gen short, postprocess Ess, Abess, Comit, Termin in application shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> @@ -551,15 +533,9 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> in shortMa ** { s = table { NPCase Allat => mulle ; NPCase Transl => minu + "ks" ; - NPCase Ess => minu + "na" ; - NPCase Abess => minu + "ta" ; - NPCase Comit => minu + "ga" ; - NPCase Termin => minu + "ni" ; x => shortMa.s ! x } } ; - - oper relPron : NForm => Str = @@ -572,7 +548,6 @@ oper ProperName = {s : Case => Str} ; - -- TODO: generate using mkPronoun pronSe : ProperName = { s = table { Nom => "see" ; @@ -588,7 +563,6 @@ oper } ; } ; - -- TODO: generate using mkPronoun pronNe : ProperName = { s = table { Nom => "need" ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index 6ecc6f5d1..d5e3e1bc4 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -497,7 +497,6 @@ oper \tulema,tulla,tuleb,tullakse,tulge,tuli,tulnud,tuldud -> vforms2verb (vForms8 tulema tulla tuleb tullakse tulge tuli tulnud tuldud) ; ---below moved here from MorphoEst VForms : Type = Predef.Ints 7 => Str ; vForms8 : (x1,_,_,_,_,_,_,x8 : Str) -> VForms = From a59ed0e0e2cbaa2426307626bb3ee03661b3cfb5 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 10:37:21 +0800 Subject: [PATCH 107/141] (Est) Workaround for short forms of Sg pers. prons Always use long Gen, because other cases are formed from long Gen stem --- src/estonian/MorphoEst.gf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/estonian/MorphoEst.gf b/src/estonian/MorphoEst.gf index fe8380238..d8754b512 100644 --- a/src/estonian/MorphoEst.gf +++ b/src/estonian/MorphoEst.gf @@ -520,6 +520,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> -- Ess, Abess, Comit, Termin all use the long Gen stem. -- Alternative 1: let Gen be long form, leaving only Nom and Part actually short -- Alternative 2: leave Gen short, postprocess Ess, Abess, Comit, Termin in application + -- Alternative 3: include two Gen stems in NPForm shortPronoun : (_,_,_,_ : Str) -> Number -> Person -> {s : NPForm => Str ; a : Agr} = \ma, mu, mind, minu, n, p -> @@ -531,6 +532,7 @@ caseTable : Number -> Noun -> Case => Str = \n,cn -> } ; in shortMa ** { s = table { + NPCase Gen => minu ; -- this is Alternative 1, see comment above. Comment out for Alternative 2. NPCase Allat => mulle ; NPCase Transl => minu + "ks" ; x => shortMa.s ! x } } ; From 7dd63173f2a5b261314f690fb861995148d10fe3 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 15 Apr 2022 19:12:02 +0800 Subject: [PATCH 108/141] (Est) Fix plural genitive forms for mis --- src/estonian/StructuralEst.gf | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index 51a09332e..f74b092bd 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -198,27 +198,21 @@ oper } } ; - --TODO does this work? - mikaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + mikaInt : MorphoEst.Number => MorphoEst.Case => Str = let { - mi = mkN "mille" + mi : N = mkN "mis" "mille" "mida" "millesse" "millede" "mida" } in table { Sg => table { - Nom => "mis" ; - Gen => "mille" ; - Part => "mida" ; c => mi.s ! NCase Sg c } ; Pl => table { Nom => "mis" ; - Gen => "mille" ; - Part => "mida" ; c => mi.s ! NCase Pl c } } ; - kukaInt : MorphoEst.Number => (MorphoEst.Case) => Str = + kukaInt : MorphoEst.Number => MorphoEst.Case => Str = let kuka = mkN "kes" "kelle" "keda" "kellesse" "kellede" "keda" ; From bcd7a098648a4839f3d4854aaf7d55bfcc5a4974 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 18 Apr 2022 19:43:38 +0800 Subject: [PATCH 109/141] (Est) Make N2, CN, NP & IP discontinuous Needed for attaching case suffix in right place --- src/estonian/AdjectiveEst.gf | 6 +-- src/estonian/AdverbEst.gf | 2 +- src/estonian/CatEst.gf | 48 +++++++++++----------- src/estonian/ConjunctionEst.gf | 26 +++++++----- src/estonian/ExtendEst.gf | 22 +++++----- src/estonian/ExtraEst.gf | 23 +++++------ src/estonian/IdiomEst.gf | 4 +- src/estonian/NounEst.gf | 74 ++++++++++++++++------------------ src/estonian/ParadigmsEst.gf | 7 +++- src/estonian/PhraseEst.gf | 8 ++-- src/estonian/QuestionEst.gf | 11 +++-- src/estonian/RelativeEst.gf | 8 ++-- src/estonian/ResEst.gf | 69 +++++++++++++++++++++++++++---- src/estonian/StructuralEst.gf | 27 +++++-------- src/estonian/SymbolEst.gf | 18 +++------ src/estonian/VerbEst.gf | 2 +- 16 files changed, 201 insertions(+), 154 deletions(-) diff --git a/src/estonian/AdjectiveEst.gf b/src/estonian/AdjectiveEst.gf index 5cf65d4e2..cb43fe1b0 100644 --- a/src/estonian/AdjectiveEst.gf +++ b/src/estonian/AdjectiveEst.gf @@ -11,14 +11,14 @@ concrete AdjectiveEst of Adjective = CatEst ** open ResEst, Prelude in { } ; ComparA a np = { s = \\isMod,af => case isMod of { - True => np.s ! NPCase Elat ++ a.s ! Compar ! AN af ; -- minust suurem - _ => a.s ! Compar ! AN af ++ "kui" ++ np.s ! NPCase Nom -- suurem kui mina + True => linNP (NPCase Elat) np ++ a.s ! Compar ! AN af ; -- minust suurem + _ => a.s ! Compar ! AN af ++ "kui" ++ linNP (NPCase Nom) np -- suurem kui mina } ; infl = Regular ; --a.infl } ; CAdvAP ad ap np = { - s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPCase Nom ; + s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ linNP (NPCase Nom) np ; infl = ap.infl } ; UseComparA a = { diff --git a/src/estonian/AdverbEst.gf b/src/estonian/AdverbEst.gf index 566f3475d..8b750f624 100644 --- a/src/estonian/AdverbEst.gf +++ b/src/estonian/AdverbEst.gf @@ -5,7 +5,7 @@ concrete AdverbEst of Adverb = CatEst ** open ResEst, Prelude in { lin PositAdvAdj a = {s = a.s ! Posit ! AAdv} ; ComparAdvAdj cadv a np = { - s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ np.s ! NPCase Nom + s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ linNP (NPCase Nom) np } ; ComparAdvAdjS cadv a s = { s = cadv.s ++ a.s ! Posit ! AAdv ++ cadv.p ++ s.s diff --git a/src/estonian/CatEst.gf b/src/estonian/CatEst.gf index 0b8b5cc6a..945f55d13 100644 --- a/src/estonian/CatEst.gf +++ b/src/estonian/CatEst.gf @@ -20,7 +20,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Question QCl = {s : ResEst.Tense => Anteriority => Polarity => Str} ; - IP = {s : NPForm => Str ; n : Number} ; + IP = ResEst.IPhrase ; IComp = {s : Agr => Str} ; IDet = {s : Case => Str ; n : Number ; isNum : Bool} ; IQuant = {s : Number => Case => Str} ; @@ -28,7 +28,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- Relative RCl = {s : ResEst.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ; - RP = {s : Number => NPForm => Str ; a : RAgr} ; + RP = ResEst.RelPron ; -- Verb @@ -43,20 +43,14 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { -- The $Infl$ in infl tells whether the adjective inflects as a -- modifier: e.g. "väsinud mehele" vs. "mees muutus väsinuks". - AP = {s : Bool => NForm => Str ; infl : Infl} ; + AP = ResEst.APhrase ; -- Noun - CN = {s : NForm => Str} ; + CN = ResEst.CNoun ; Pron = {s : NPForm => Str ; a : Agr} ; - NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; - DAP, Det = { - s : Case => Str ; -- minun kolme - sp : Case => Str ; -- se (substantival form) - n : Number ; -- Pl (agreement feature for verb) - isNum : Bool ; -- True (a numeral is present) - isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? - } ; + NP = ResEst.NPhrase ; + DAP, Det = ResEst.Determiner ; ---- QuantSg, QuantPl = {s : Case => Str ; isDef : Bool} ; Ord = {s : NForm => Str} ; @@ -75,26 +69,34 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in { Conj = {s1,s2 : Str ; n : Number} ; ----b DConj = {s1,s2 : Str ; n : Number} ; Subj = {s : Str} ; - Prep = Compl ; + Prep = ResEst.Compl ; -- Open lexical classes, e.g. Lexicon - V, VS, VQ = Verb1 ; -- = {s : VForm => Str ; sc : Case} ; - V2, VA, V2Q, V2S = Verb2 ; - V2A, V3 = Verb3 ; - VV = Verb1 ** {vi : InfForms} ; - V2V = Verb2 ** {vi : InfForms} ; + V, VS, VQ = ResEst.Verb1 ; -- = {s : VForm => Str ; sc : Case} ; + V2, VA, V2Q, V2S = ResEst.Verb2 ; + V2A, V3 = ResEst.Verb3 ; + VV = ResEst.Verb1 ** {vi : InfForms} ; + V2V = ResEst.Verb2 ** {vi : InfForms} ; - A = Adjective ** {infl : Infl} ; - A2 = A ** {c2 : Compl} ; + A = ResEst.Adjective ** {infl : Infl} ; + A2 = ResEst.Adjective ** {infl : Infl ; c2 : Compl} ; - N = Noun ; - N2 = Noun ** {c2 : Compl ; isPre : Bool} ; - N3 = Noun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ; + N = ResEst.Noun ; + N2 = ResEst.Noun ** { + postmod : Str ; -- postmod, because N2 can come from N3+complement via ComplN3 + c2 : Compl ; + isPre : Bool} ; + N3 = ResEst.Noun ** { -- no postmod, because N3 can only come from lexical funs + c2,c3 : Compl ; + isPre,isPre2 : Bool + } ; PN = {s : Case => Str} ; linref VP = \vp -> linV vp.v ; + NP = linNP (NPCase Nom) ; + CN = linCN (NCase Sg Nom) ; V,VS,VQ = linV ; V2,VA,V2S,V2Q = linV2 ; diff --git a/src/estonian/ConjunctionEst.gf b/src/estonian/ConjunctionEst.gf index d75177331..51169db48 100644 --- a/src/estonian/ConjunctionEst.gf +++ b/src/estonian/ConjunctionEst.gf @@ -9,11 +9,12 @@ concrete ConjunctionEst of Conjunction = ConjAdv = conjunctDistrSS ; - ConjCN = conjunctDistrTable NForm ; + ConjCN conj ss = conjunctDistrTable NForm conj ss ** ss ; ConjNP conj ss = conjunctDistrTable NPForm conj ss ** { a = conjAgr (Ag conj.n P3) ss.a ; -- P3 is the maximum - isPron = False + isPron = False ; + postmod = ss.postmod } ; ConjAP conj ss = conjunctDistrTableAdj conj ss ; @@ -28,20 +29,20 @@ concrete ConjunctionEst of Conjunction = ConsS = consrSS comma ; BaseAdv = twoSS ; ConsAdv = consrSS comma ; - BaseCN = twoTable NForm ; - ConsCN = consrTable NForm comma ; - BaseNP x y = twoTable NPForm x y ** {a = conjAgr x.a y.a} ; - ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ; + BaseCN x y = twoTable NForm (mergeCN x) y ** {postmod = y.postmod} ; + ConsCN x xs = consrTable NForm comma (mergeCN x) xs ** xs ; + BaseNP x y = twoTable NPForm (mergeNP x) y ** {a = conjAgr x.a y.a ; postmod = y.postmod} ; + ConsNP x xs = consrTable NPForm comma (mergeNP x) xs ** {a = conjAgr xs.a x.a ; postmod = xs.postmod} ; BaseAP x y = twoTableAdj x y ; - ConsAP xs x = consrTableAdj comma x xs ; + ConsAP x xs = consrTableAdj comma x xs ; BaseRS x y = twoTable Agr x y ** {c = y.c} ; - ConsRS xs x = consrTable Agr comma xs x ** {c = xs.c} ; + ConsRS x xs = consrTable Agr comma x xs ** {c = xs.c} ; lincat [S] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ; - [CN] = {s1,s2 : NForm => Str} ; - [NP] = {s1,s2 : NPForm => Str ; a : Agr} ; + [CN] = {s1,s2 : NForm => Str ; postmod : Str} ; + [NP] = {s1,s2 : NPForm => Str ; a : Agr ; postmod : Str} ; [AP] = {s1,s2 : {s : Bool => NForm => Str ; infl : Infl }} ; [RS] = {s1,s2 : Agr => Str ; c : NPForm} ; @@ -53,7 +54,7 @@ concrete ConjunctionEst of Conjunction = s2 = y } ; - consrTableAdj : Str -> [AP] -> {s : Bool => NForm => Str ; infl : Infl} -> [AP] = \c,xs,x -> + consrTableAdj : Str -> APhrase -> [AP] -> [AP] = \c,x,xs -> let ap1 = xs.s1 ; ap2 = xs.s2 @@ -101,4 +102,7 @@ concrete ConjunctionEst of Conjunction = infl = Regular } ; + -- for CN and NP with discontinuous fields, put all stuff in s field + mergeNP : NPhrase -> NPhrase = \np -> np ** {s = \\c => linNP c np} ; + mergeCN : CNoun -> CNoun = \cn -> cn ** {s = \\nf => linCN nf cn} ; } diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index c953be653..b8b2ebd40 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -90,7 +90,7 @@ concrete ExtendEst of Extend = RNPList = {s1,s2 : Agr => NPForm => Str} ; oper - rnp2np : Agr -> RNP -> NP = \agr,rnp -> lin NP { + rnp2np : Agr -> RNP -> NPhrase = \agr,rnp -> emptyNP ** { a = agr ; s = rnp.s ! agr ; isPron = False ; -- ?? @@ -159,7 +159,7 @@ concrete ExtendEst of Extend = AdAdV ad adv = AdAdv ad adv ; -- : AP -> CN ; -- a green one ; en grön (Swe) - AdjAsCN ap = {s = ap.s ! True} ; -- True = attributive ; False = predicative + AdjAsCN ap = emptyCN ** {s = ap.s ! True} ; -- True = attributive ; False = predicative -- : AP -> NP AdjAsNP ap = MassNP (AdjAsCN ap) ; @@ -270,14 +270,14 @@ concrete ExtendEst of Extend = lin -- : NP -> Quant ; -- this man's GenNP np = { - s,sp = \\_,_ => np.s ! NPCase Gen ; + s,sp = \\_,_ => linNP (NPCase Gen) np ; isNum = False ; isDef = True ; isNeg = False } ; -- : IP -> IQuant ; -- whose - GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; + GenIP ip = {s = \\_,_ => linIP (NPCase Gen) ip} ; -- : Num -> CN -> RP ; -- whose car GenRP num cn = { @@ -298,7 +298,7 @@ concrete ExtendEst of Extend = GerundAdv vp = {s = infVPdefault vp InfDes} ; -- : VP -> CN -- publishing of the document (can get a determiner) - GerundCN vp = {s = \\nf => infVPdefault vp InfMine} ; + GerundCN vp = emptyCN ** {s = \\nf => infVPdefault vp InfMine} ; -- : VP -> NP -- publishing the document (by nature definite) GerundNP vp = MassNP (GerundCN vp) ; @@ -331,7 +331,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> NP -> VP ; -- be begged by her to go PassAgentVPSlash vps np = let vp : VP = PassVPSlash vps in vp ** { - adv = vp.adv ++ np.s ! NPCase Gen ++ "poolt" ; + adv = vp.adv ++ appCompl True Pos by8agent_Prep np ; } ; @@ -357,7 +357,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) PastPartAgentAP vp np = { - s = \\_,_ => np.s ! NPCase Gen ++ "poolt" ++ vp2adv vp True (VIPass Past) ; + s = \\_,_ => appCompl True Pos by8agent_Prep np ++ vp2adv vp True (VIPass Past) ; infl = Invariable } ; @@ -407,11 +407,11 @@ concrete ExtendEst of Extend = UseDAPFem, UseDAPMasc = DetNP ; - UttAccIP ip = {s = ip.s ! NPAcc} ; - UttAccNP np = {s = np.s ! NPAcc} ; + UttAccIP ip = {s = linIP NPAcc ip} ; + UttAccNP np = {s = linNP NPAcc np} ; UttAdV adv = adv ; - UttDatIP ip = {s = ip.s ! NPCase Part} ; -- is partitive a reasonable translation? - UttDatNP np = {s = np.s ! NPCase Part} ; + UttDatIP ip = {s = linIP (NPCase Part) ip} ; -- is partitive a reasonable translation? + UttDatNP np = {s = linNP (NPCase Part) np} ; -- : VP -> Utt ; -- There's no "short form", so just using InfDa instead of InfMa UttVPShort vp = {s = infVPdefault vp InfDa} ; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 644d8e9ea..4fc96a0b5 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -3,7 +3,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** flags coding=utf8; lin GenNP np = { - s,sp = \\_,_ => np.s ! NPCase Gen ; + s,sp = \\_,_ => linNP (NPCase Gen) np ; isNum = False ; isDef = True ; --- "Jussin kolme autoa ovat" ; thus "...on" is missing isNeg = False @@ -15,7 +15,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AbessCN = caseCN Abessive ; -- autota pere TerminCN = caseCN Terminative ; -- maani kleit - GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ; + GenIP ip = {s = \\_,_ => linIP (NPCase Gen) ip} ; GenRP num cn = { s = \\n,c => let k = npform2case num.n c in relPron ! NCase n Gen ++ cn.s ! NCase num.n k ; @@ -87,7 +87,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PassAgentVPSlash vp np = vp ; {- s = {s = vp.s.s ; h = vp.s.h ; p = vp.s.p ; sc = npform2subjcase vp.c2.c} ; - s2 = \\b,p,a => np.s ! NPCase Nom ++ vp.s2 ! b ! p ! a ; + s2 = \\b,p,a => linNP (NPCase Nom) np ++ vp.s2 ! b ! p ! a ; adv = vp.adv ; ext = vp.ext ; vptyp = vp.vptyp ; @@ -95,7 +95,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AdvExistNP adv np = mkClause (\_ -> adv.s) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; RelExistNP prep rp np = { s = \\t,ant,bo,ag => @@ -105,7 +105,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** (\_ -> appCompl True Pos prep (rp2np n rp)) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; in cl.s ! t ! ant ! bo ! SDecl ; @@ -114,26 +114,26 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** AdvPredNP adv v np = mkClause (\_ -> adv.s) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV v)) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV v)) ; ICompExistNP adv np = let cl = mkClause (\_ -> adv.s ! np.a) np.a (insertObj - (\\_,b,_ => np.s ! NPCase Nom) (predV (verbOlema ** {sc = NPCase Nom}))) ; + (\\_,b,_ => linNP (NPCase Nom) np) (predV (verbOlema ** {sc = NPCase Nom}))) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; IAdvPredNP iadv v np = let cl = mkClause (\_ -> iadv.s) np.a (insertObj - (\\_,b,_ => np.s ! v.sc) (predV v)) ; + (\\_,b,_ => linNP v.sc np) (predV v)) ; in { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; -- i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ; - whatPart_IP = { + whatPart_IP = emptyIP ** { s = table { - NPCase Nom | NPAcc => "mitä" ; + NPCase Nom | NPAcc => "mida" ; c => whatSg_IP.s ! c } ; n = Sg @@ -142,12 +142,11 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** PartCN cn = let acn = DetCN (DetQuant IndefArt NumSg) cn - in { + in acn ** { s = table { NPCase Nom | NPAcc => acn.s ! NPCase ResEst.Part ; c => acn.s ! c } ; - a = acn.a ; isPron = False ; isNeg = False } ; diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index 59c1b9ef6..8ae3c7caa 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -10,7 +10,7 @@ concrete IdiomEst of Idiom = CatEst ** Pos => NPCase Nom ; -- on olemas lammas Neg => NPCase Part -- ei ole olemas lammast } ; - vp = insertObj (\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla) + vp = insertObj (\\_,b,_ => "olemas" ++ linNP (cas b) np) (predV olla) in existClause noSubj (agrP3 Sg) vp ; @@ -28,7 +28,7 @@ concrete IdiomEst of Idiom = CatEst ** CleftNP np rs = mkClause (\_ -> "see") (agrP3 Sg) (insertExtrapos (rs.s ! np.a) - (insertObj (\\_,_,_ => np.s ! NPCase Nom) (predV olla))) ; + (insertObj (\\_,_,_ => linNP (NPCase Nom) np) (predV olla))) ; -- This gives the almost forbidden "se on Porissa kun Matti asuu". -- Est: "see on Toris, kus Mati elab" (?) diff --git a/src/estonian/NounEst.gf b/src/estonian/NounEst.gf index f87ae33f9..f353b1e67 100644 --- a/src/estonian/NounEst.gf +++ b/src/estonian/NounEst.gf @@ -22,7 +22,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in <_, _, True,_> => ; -- kolmeks kassiks (all other cases) _ => -- kass, kassi, ... (det is not a number) } - in { + in cn ** { s = \\c => let k = ncase c ; in @@ -41,7 +41,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in True => Sg ; _ => det.n } ; - in { + in emptyNP ** { s = \\c => let k = npform2case n c in det.sp ! k ; a = agrP3 (case det.isDef of { @@ -51,37 +51,24 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isPron = False } ; - UsePN pn = { + UsePN pn = emptyNP ** { s = \\c => pn.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; - UsePron p = p ** {isPron = True} ; + UsePron p = p ** {isPron = True ; postmod = []} ; - PredetNP pred np = { + PredetNP pred np = np ** { s = \\c => pred.s ! complNumAgr np.a ! c ++ np.s ! c ; - a = np.a ; - isPron = np.isPron -- kaikki minun - ni } ; PPartNP np v2 = let num : Number = complNumAgr np.a ; part : Str = v2.s ! (PastPart Pass) ; - adj : NForms = hjk_type_IVb_maakas part ; - partGen : Str = adj ! 1 ; - partEss : Str = partGen + "na" - in { - s = \\c => np.s ! c ++ part ; --partEss ; - a = np.a ; - isPron = np.isPron -- minun täällä - ni - } ; + in np ** {postmod = np.postmod ++ part} ; - AdvNP np adv = { - s = \\c => np.s ! c ++ adv.s ; - a = np.a ; - isPron = np.isPron -- minun täällä - ni - } ; + AdvNP np adv = np ** {postmod = np.postmod ++ adv.s} ; DetQuantOrd quant num ord = { s = \\c => quant.s ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; @@ -120,7 +107,7 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing } ; - PossNP cn np = {s = \\nf => np.s ! NPCase Gen ++ cn.s ! nf }; + PossNP cn np = np ** {s = \\nf => linNP (NPCase Gen) np ++ cn.s ! nf} ; NumSg = {s = \\_,_ => [] ; isNum = False ; n = Sg} ; NumPl = {s = \\_,_ => [] ; isNum = False ; n = Pl} ; @@ -167,36 +154,44 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in let n : Number = Sg ; ncase : Case -> NForm = \c -> NCase n c ; - in { + in cn ** { s = \\c => let k = npform2case n c in cn.s ! ncase k ; a = agrP3 Sg ; isPron = False } ; - UseN n = n ; + UseN n = emptyCN ** { + s = n.s + } ; UseN2 n = n ; - Use2N3 f = f ; + Use2N3 f = f ** { + postmod = [] + } ; Use3N3 f = f ** { c2 = f.c3 ; - isPre = f.isPre2 + isPre = f.isPre2 ; + postmod = [] } ; - ComplN2 f x = { - s = \\nf => preOrPost f.isPre (f.s ! nf) (appCompl True Pos f.c2 x) + ComplN2 f x = let compl : Str = appCompl True Pos f.c2 x in { + s = \\nf => case f.isPre of { + True => f.s ! nf ; -- N2 is pre, so compl goes into postmod + False => compl ++ f.s ! nf -- N2 isn't pre, compl goes in s before the N2 + } ; + postmod = f.postmod ++ if_then_Str f.isPre compl [] } ; - - ComplN3 f x = lin N2 { - s = \\nf => preOrPost f.isPre (f.s ! nf) (appCompl True Pos f.c2 x) ; + -- N2 is subtype of CN, so we can reuse result of ComplN2 as a base for our CN. + -- The decision of noun-complement order is only done once, in ComplN2. + ComplN3 f x = let cn : CN = ComplN2 (Use2N3 f) x in cn ** { c2 = f.c3 ; isPre = f.isPre2 } ; - - AdjCN ap cn = { + AdjCN ap cn = cn ** { s = \\nf => case ap.infl of { Invariable|Participle => ap.s ! True ! NCase Sg Nom ++ cn.s ! nf ; --valmis kassile; väsinud kassile @@ -204,19 +199,20 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in } } ; - RelCN cn rs = {s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf)} ; + RelCN cn rs = cn ** { -- exception to postmod rule, because RS depends on Agr + s = \\nf => cn.s ! nf ++ rs.s ! agrP3 (numN nf) + } ; - RelNP np rs = { - s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; + RelNP np rs = np ** { + postmod = np.postmod ++ "," ++ rs.s ! np.a ; isPron = np.isPron ---- correct ? } ; - AdvCN cn ad = {s = \\nf => cn.s ! nf ++ ad.s} ; + AdvCN cn ad = cn ** {postmod = cn.postmod ++ ad.s} ; - SentCN cn sc = {s = \\nf=> cn.s ! nf ++ sc.s} ; + SentCN cn sc = cn ** {postmod = cn.postmod ++ sc.s} ; - ApposCN cn np = {s = \\nf=> cn.s ! nf ++ np.s ! NPCase Nom} ; --- luvun x + ApposCN cn np = cn ** {postmod = cn.postmod ++ linNP (NPCase Nom) np} ; --- luvun x oper numN : NForm -> Number = \nf -> case nf of { diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 55f5cc691..45bffe7d7 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -574,7 +574,12 @@ oper mkN2 : N -> Prep -> N2 = mmkN2 } ; - mmkN2 : N -> Prep -> N2 = \n,c -> lin N (n ** {c2 = c ; isPre = mkIsPre c}) ; + mmkN2 : N -> Prep -> N2 = \n,c -> lin N2 (n ** { + c2 = c ; + isPre = mkIsPre c ; + postmod = [] + }) ; + mkN3 = \n,c,e -> lin N3 (n ** { c2 = c ; c3 = e ; isPre = mkIsPre c ; -- matka Londonist Pariisi diff --git a/src/estonian/PhraseEst.gf b/src/estonian/PhraseEst.gf index 0557107b1..a50c61db9 100644 --- a/src/estonian/PhraseEst.gf +++ b/src/estonian/PhraseEst.gf @@ -9,12 +9,12 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Ag Pl P2} ; UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! AgPol} ; - UttIP ip = {s = ip.s ! NPCase Nom} ; + UttIP ip = {s = linIP (NPCase Nom) ip} ; UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! NPCase Nom} ; + UttNP np = {s = linNP (NPCase Nom) np} ; UttVP vp = {s = infVP (NPCase Nom) Pos (agrP3 Sg) vp InfMa} ; UttAdv adv = adv ; - UttCN np = {s = np.s ! NCase Sg Nom} ; + UttCN cn = {s = linCN (NCase Sg Nom) cn} ; UttAP np = {s = np.s ! P.False ! NCase Sg Nom} ; UttCard n = {s = n.s ! Sg ! Nom} ; UttInterj i = i ; @@ -23,6 +23,6 @@ concrete PhraseEst of Phrase = CatEst ** open ResEst, (P = Prelude) in { PConjConj conj = {s = conj.s2} ; NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! NPCase Nom} ; + VocNP np = {s = "," ++ linNP (NPCase Nom) np} ; } diff --git a/src/estonian/QuestionEst.gf b/src/estonian/QuestionEst.gf index 58a69f6b7..0df94f21c 100644 --- a/src/estonian/QuestionEst.gf +++ b/src/estonian/QuestionEst.gf @@ -40,16 +40,15 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { PrepIP p ip = {s = appCompl True Pos p (ip ** {a = agrP3 ip.n ; isPron = False})} ; - AdvIP ip adv = { - s = \\c => ip.s ! c ++ adv.s ; - n = ip.n + AdvIP ip adv = ip ** { + postmod = ip.postmod ++ adv.s ; } ; -- The computation of $ncase$ is a special case of that in $NounEst.DetCN$, -- since we don't have possessive suffixes or definiteness. --- It could still be nice to have a common oper... - IdetCN idet cn = let n = idet.n in { + IdetCN idet cn = let n = idet.n in emptyIP ** { s = \\c => let k : Case = npform2case n c ; @@ -67,7 +66,7 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { n = n } ; - IdetIP idet = let n = idet.n in { + IdetIP idet = let n = idet.n in emptyIP ** { s = \\c => let k = npform2case n c ; @@ -97,6 +96,6 @@ concrete QuestionEst of Question = CatEst ** open ResEst, Prelude in { AdvIAdv i a = {s = i.s ++ a.s} ; CompIAdv a = {s = \\_ => a.s} ; - CompIP ip = {s = \\_ => ip.s ! NPCase Nom} ; + CompIP ip = {s = \\_ => linIP (NPCase Nom) ip} ; } diff --git a/src/estonian/RelativeEst.gf b/src/estonian/RelativeEst.gf index 4be5f96ae..7cf10c345 100644 --- a/src/estonian/RelativeEst.gf +++ b/src/estonian/RelativeEst.gf @@ -18,8 +18,10 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in RAg a => a } ; cl = mkClause - (subjForm {s = rp.s ! (complNumAgr agr) ; - a = agr ; isPron = False} vp.sc) agr vp + (subjForm + (emptyNP ** {s = rp.s ! complNumAgr agr ; a = agr}) + vp.sc) + agr vp in cl.s ! t ! ant ! b ! SDecl ; c = NPCase Nom @@ -36,7 +38,7 @@ concrete RelativeEst of Relative = CatEst ** open Prelude, ResEst, MorphoEst in } ; FunRP p np rp = { - s = \\n,c => appCompl True Pos p (rp2np n rp) ++ np.s ! c ; --- is c OK? + s = \\n,c => appCompl True Pos p (rp2np n rp) ++ linNP c np ; --- is c OK? a = RAg np.a } ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index d5e3e1bc4..5e7f45c6b 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -57,8 +57,34 @@ resource ResEst = ParamX ** open Prelude in { } ; oper - NP = {s : NPForm => Str ; a : Agr ; isPron : Bool} ; + IPhrase : Type = { + s : NPForm => Str ; -- the noun phrase + premodifiers + postmod : Str ; -- adverb, RS, etc. other postmods + n : Number + } ; + NPhrase : Type = { + s : NPForm => Str ; -- the noun phrase + premodifiers + postmod : Str ; -- adverb, RS, etc. other postmods + a : Agr ; + isPron : Bool + } ; + + emptyNP : NPhrase = { + s = \\_ => [] ; + postmod = [] ; + a = agrP3 Sg ; + isPron = False + } ; + + emptyIP : IPhrase = { + s = \\_ => [] ; + postmod = [] ; + n = Sg ; + } ; + + linNP : NPForm -> NPhrase -> Str = \npf,np -> np.s ! npf ++ np.postmod ; + linIP : NPForm -> IPhrase -> Str = \npf,ip -> ip.s ! npf ++ ip.postmod ; -- --2 Adjectives -- @@ -73,6 +99,8 @@ param oper Adjective : Type = {s : Degree => AForm => Str} ; + APhrase : Type = {s : Bool => NForm => Str ; infl : Infl} ; + --2 Noun phrases -- -- Two forms of *virtual accusative* are needed for nouns in singular, @@ -179,7 +207,9 @@ param Compl : Type = {s : Str ; c : NPFormPlus ; isPre : Bool} ; - appCompl : Bool -> Polarity -> Compl -> NP -> Str = \isFin,b,co,np -> + npfplus2compl : NPFormPlus -> Compl = \npf -> {s = [] ; c = npf ; isPre = False} ; + + appCompl : Bool -> Polarity -> Compl -> NPhrase -> Str = \isFin,b,co,np -> let c = case co.c.npf of { NPAcc => case b of { @@ -196,7 +226,7 @@ param } ; nps = np.s ! c ++ co.c.suf ; -- complement's NPFormPlus may include suffix for the cases based on Gen stem, e.g. comitative "ga" in - preOrPost co.isPre co.s nps ; + preOrPost co.isPre co.s nps ++ np.postmod ; -- Used for passive; c2 of V2/VPSlash becomes sc of VP compl2subjcase : Compl -> NPForm = \compl -> @@ -436,7 +466,7 @@ oper -- This is used for subjects of passives: therefore isFin in False. - subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> + subjForm : NPhrase -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = case2npformp sc ; isPre = True} np ; infVP : NPForm -> Polarity -> Agr -> VP -> InfForms -> Str = infVPAnt Simul ; @@ -644,6 +674,15 @@ oper Noun : Type = {s : NForm => Str} ; + CNoun : Type = Noun ** {postmod : Str} ; + + emptyCN : CNoun = { + s = \\nf => [] ; + postmod = [] + } ; + + linCN : NForm -> CNoun -> Str = \nf,cn -> cn.s ! nf ++ cn.postmod ; + -- To form an adjective, it is usually enough to give a noun declension: the -- adverbial form is regular. @@ -666,13 +705,13 @@ oper -- Reflexive pronoun. --- Possessive could be shared with the more general $NounFin.DetCN$. - reflPron : Agr -> NP = \agr -> + reflPron : Agr -> NPhrase = \agr -> let ise = nForms2N (nForms6 "ise" "enda" "ennast" "endasse" "endi" "endid") ; n = case agr of { AgPol => Sg ; Ag n _ => n } ; - in { + in emptyNP ** { s = table { NPAcc => "ennast" ; NPCase c => fixPlNom "endid" ise.s ! NCase n c @@ -747,7 +786,11 @@ oper } ; oper - rp2np : Number -> {s : Number => NPForm => Str ; a : RAgr} -> NP = \n,rp -> { + -- Technically, we could also add a postmod field for RP, + -- because multiple applications of FunRP add multiple complements. + -- But I will only add it if I see a real-world sentence that uses multiple applications of FunRP. + RelPron : Type = {s : Number => NPForm => Str ; a : RAgr} ; + rp2np : Number -> RelPron -> NPhrase = \n,rp -> emptyNP ** { s = rp.s ! n ; a = agrP3 Sg ; -- does not matter (--- at least in Slash) isPron = False -- has no special accusative @@ -755,7 +798,17 @@ oper etta_Conj : Str = "et" ; - heavyDet : PDet -> PDet ** {sp : Case => Str} = \d -> d ** {sp = d.s} ; + Determiner : Type = { + s : Case => Str ; -- minun kolme + sp : Case => Str ; -- se (substantival form) + n : Number ; -- Pl (agreement feature for verb) + isNum : Bool ; -- True (a numeral is present) + isDef : Bool -- True (verb agrees in Pl, Nom is not Part) --I: actually, can we get rid of this? + } ; + + IDeterminer : Type = {s : Case => Str ; n : Number ; isNum : Bool} ; + + heavyDet : PDet -> Determiner = \d -> d ** {sp = d.s} ; PDet : Type = { s : Case => Str ; n : Number ; diff --git a/src/estonian/StructuralEst.gf b/src/estonian/StructuralEst.gf index f74b092bd..b5e2857a1 100644 --- a/src/estonian/StructuralEst.gf +++ b/src/estonian/StructuralEst.gf @@ -78,10 +78,8 @@ concrete StructuralEst of Structural = CatEst ** quite_Adv = ss "üsna" ; she_Pron = mkPronoun "tema" "tema" "teda" Sg P3 ; so_AdA = ss "nii" ; - somebody_NP = { + somebody_NP = emptyNP ** { s = \\c => jokuPron ! Sg ! npform2case Sg c ; - a = agrP3 Sg ; - isPron = False } ; someSg_Det = heavyDet { s = jokuPron ! Sg ; @@ -92,10 +90,8 @@ concrete StructuralEst of Structural = CatEst ** isNum = False ; isDef = True ; n = Pl } ; - something_NP = { + something_NP = emptyNP ** { s = \\c => mikaInt ! Sg ! npform2case Sg c ; - a = agrP3 Sg ; - isPron = False } ; somewhere_Adv = ss "kuskil" ; that_Quant = heavyQuant { @@ -133,11 +129,11 @@ concrete StructuralEst of Structural = CatEst ** very_AdA = ss "väga" ; want_VV = mkVV (mkV "tahtma") ; we_Pron = mkPronoun "meie" "meie" "meid" Pl P1 ; - whatPl_IP = { + whatPl_IP = emptyIP ** { s = table {NPAcc => "mida" ; c => mikaInt ! Pl ! npform2case Pl c} ; n = Pl } ; - whatSg_IP = { + whatSg_IP = emptyIP ** { s = \\c => mikaInt ! Sg ! npform2case Sg c ; n = Sg } ; @@ -145,11 +141,11 @@ concrete StructuralEst of Structural = CatEst ** when_Subj = ss "kui" ; where_IAdv = ss "kus" ; which_IQuant = { s = mikaInt } ; - whoSg_IP = { + whoSg_IP = emptyIP ** { s = table {NPAcc => "keda" ; c => kukaInt ! Sg ! npform2case Sg c} ; n = Sg } ; - whoPl_IP = { + whoPl_IP = emptyIP ** { s = table {NPAcc => "keda" ; c => kukaInt ! Pl ! npform2case Pl c} ; n = Pl } ; @@ -250,11 +246,10 @@ oper oper - makeNP : N -> MorphoEst.Number -> CatEst.NP ; - makeNP noun num = lin NP { + makeNP : N -> MorphoEst.Number -> NPhrase ; + makeNP noun num = emptyNP ** { s = \\c => noun.s ! NCase num (npform2case num c) ; a = agrP3 num ; - isPron = False ; } ; lin @@ -266,16 +261,14 @@ lin } ; if_then_Conj = {s1 = "kui" ; s2 = "siis" ; n = Sg} ; - nobody_NP = { + nobody_NP = emptyNP ** { s = \\c => "mitte" ++ kukaanPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; - isPron = False } ; - nothing_NP = { + nothing_NP = emptyNP ** { s = \\c => "mitte" ++ mikaanPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; - isPron = False } ; at_least_AdN = ss "vähemalt" ; diff --git a/src/estonian/SymbolEst.gf b/src/estonian/SymbolEst.gf index 0d1000a68..df6827d5b 100644 --- a/src/estonian/SymbolEst.gf +++ b/src/estonian/SymbolEst.gf @@ -8,20 +8,14 @@ lin FloatPN i = {s = \\c => i.s} ; --- c NumPN i = {s = \\c => i.s!Sg!Nom } ; --- c - CNIntNP cn i = { - s = \\c => cn.s ! NCase Sg (npform2case Sg c) ++ i.s ; - a = agrP3 Sg ; - isPron = False + CNIntNP cn i = let np : NP = NounEst.MassNP cn in np ** { + postmod = np.postmod ++ i.s ; } ; - CNSymbNP det cn xs = let detcn = NounEst.DetCN det cn in { - s = \\c => detcn.s ! c ++ xs.s ; - a = detcn.a ; - isPron = False + CNSymbNP det cn xs = let np : NP = NounEst.DetCN det cn in np ** { + postmod = np.postmod ++ xs.s ; } ; - CNNumNP cn i = { - s = \\c => cn.s ! NCase Sg (npform2case Sg c) ++ i.s ! Sg ! Nom ; - a = agrP3 Sg ; - isPron = False + CNNumNP cn i = let np : NP = NounEst.MassNP cn in np ** { + postmod = np.postmod ++ i.s ! Sg ! Nom ; } ; SymbS sy = sy ; diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index c07c24b1c..2fa22f136 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -87,7 +87,7 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { CompAP = compAP ; CompCN = compCN ; - CompNP np = {s = \\_ => np.s ! NPCase Nom} ; + CompNP np = {s = \\_ => linNP (NPCase Nom) np} ; CompAdv a = {s = \\_ => a.s} ; } From 5a8eda803d152b2921b072754fa7bebf8c41a975 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 18 Apr 2022 19:43:57 +0800 Subject: [PATCH 110/141] (Est) Test cases for comitative --- src/estonian/unittest/comitative.gftest | 146 ++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 src/estonian/unittest/comitative.gftest diff --git a/src/estonian/unittest/comitative.gftest b/src/estonian/unittest/comitative.gftest new file mode 100644 index 000000000..249b4857e --- /dev/null +++ b/src/estonian/unittest/comitative.gftest @@ -0,0 +1,146 @@ +-- Comitative, Essive, Abessive and Terminative cases are not in the inflection table of nominal categories, +-- instead they use the Genitive stem and add a suffix with BIND token. +-- Here are tests for those cases. + +-- NB. Ignore any weirdness with the word "koos". +-- That just happens to be the linearisation of with_Prep, +-- we can as easily replace it with just the case -ga, +-- or in an application, have two versions, one "koos …ga" and other just "…ga". +-- But do point out any other unexpected weirdness/ungrammaticality! + +-- Comitative, case attaches to the noun + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumSg) (UseN dog_N)))) +LangEng: I play with this dog +LangEst: mina mängin koos selle koera &+ ga + +Lang: PredVP (UsePron we_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant NumPl) (UseN dog_N)))) +LangEng: we play with these dogs +LangEst: meie mängime koos nende koerade &+ ga + +-- Interrogative versions + +-- First, reason why the interrogative pronoun doesn't inflect is this http://www.eki.ee/books/ekk09/index.php?p=5&p1=3&id=452 +-- "Üldse ei ühildu: asesõnad mis (kui ta ei osuta omadusele, vaid on identifitseerivas funktsioonis) [..], +-- nt 'Mis keelt te räägite?' " +-- So because of that, it doesn't inflect in any position. Here is the eki example: + +Lang: QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN language_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a speak_V2)) +LangEng: which language do you speak +LangEst: mis keelt sina räägid + +-- But should the interrogative inflect when PrepIP is applied? Or is "koos mis koeraga" still fine? + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumSg) (UseN dog_N))) (PredVP (UsePron youSg_Pron) (UseV play_V)) +LangEng: with which dog do you play +LangEst: koos mis koera &+ ga sina mängid + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant NumPl) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) +LangEng: with which dogs do you play +LangEst: koos mis koerade &+ ga teie mängite + +-- Adding a number, does it affect the behaviour of +-- a) suffix attachment? b) agreement of interrogative? + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N)))) +LangEng: I play with these three dogs +LangEst: mina mängin koos nende kolme koera &+ ga + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetCN (DetQuant this_Quant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N)))) +LangEng: I play with these 3 dogs +LangEst: mina mängin koos nende 3 koera &+ ga + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN dog_N))) (PredVP (UsePron youPol_Pron) (UseV play_V)) +LangEng: with which three dogs do you play +-- Which one is best? +-- 1) koos mis kolm koeraga teie mängite +-- 2) koos mis kolme koeraga teie mängite +-- 3) koos mille kolme koeraga teie mängite +-- 4) All are ungrammatical (provide more grammatical translation that is still compositional, not paraphrase) + +Lang: QuestIAdv (PrepIP with_Prep (IdetCN (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))) (UseN dog_N))) (PredVP (UsePron youPl_Pron) (UseV play_V)) +LangEng: with which 3 dogs do you play +-- Which one is best? +-- 1) koos mis 3 koeraga teie mängite +-- 2) koos mille 3 koeraga teie mängite +-- 3) All are ungrammatical (provide more grammatical translation) + +------------------------------------------------------------------------------------------ +-- Now we skip the content word, and make the determiner (possibly with number) into NP/IP +-- The relevant functions are DetNP : Det -> NP and IDetIP : IDet -> IP + +-- No number, case attaches to determiner/interrogative +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV play_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant NumPl)))) +LangEng: I play with these +LangEst: mina mängin koos nende &+ ga + +Lang: QuestIAdv (PrepIP with_Prep whoSg_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with whom do you sing +LangEst: koos kelle &+ ga sina laulad + +Lang: QuestIAdv (PrepIP with_Prep whoPl_IP) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with whom do you sing +LangEst: koos kellede &+ ga sina laulad + +-- Adding a number to a determiner, does this affect the comitative suffix placement? +-- Context of the sentence is an ellipsis, "I sing with these 3 (singers)" + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) +LangEng: I sing with these three +-- Which one is better? +-- 1) mina laulan koos nende kolmega +-- 2) mina laulan koos nendega kolme + +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (NumDigits (IDig D_3))))))) +LangEng: I sing with these 3 +LangEst: mina laulan koos nende 3 &+ ga +-- Which one is better? +-- 1) mina laulan koos nende 3ga +-- 2) mina laulan koos nendega 3 + +-- Adding a number to an interrogative, how does suffix placement + agreement work now? + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which three do you sing +-- Which one is best? +-- 1) koos millede kolmega sina laulad +-- 2) koos mille kolmega sina laulad +-- 3) koos mis kolmega sina laulad +-- 4) koos millega kolme sina laulad +-- 5) koos milledega kolme sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (NumDigits (IDig D_3)))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which 3 do you sing +-- Which one is best? +-- 1) koos millede 3ga sina laulad +-- 2) koos mille 3ga sina laulad +-- 3) koos mis 3ga sina laulad +-- 4) koos millega 3 sina laulad +-- 5) koos milledega 3 sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + + +-- Adding premodifiers to the number, does that change anything? + +-- Weird sentence, but imagine like, you point to a group of people, "I sing with these at most three", +-- like you are the soloist and want at most 3 backup singers, who are among a group you are pointing at. +-- If there was no ellipsis, the phrase would just be "koos nende kuni kolme lauljatega"? +Lang: PredVP (UsePron i_Pron) (AdvVP (UseV sing_V) (PrepNP with_Prep (DetNP (DetQuant this_Quant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))))))) +LangEng: I sing with these at most three +LangEst: mina laulan koos nende kuni kolme &+ ga +-- Which one is better? +-- 1) mina laulan koos nende kuni kolmega +-- 2) mina laulan koos nendega kuni kolme + +Lang: QuestIAdv (PrepIP with_Prep (IdetIP (IdetQuant which_IQuant (NumCard (AdNum at_most_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))))))) (PredVP (UsePron youSg_Pron) (UseV sing_V)) +LangEng: with which at most three do you sing +LangEst: koos millede kuni kolme &+ ga sina laulad +-- Which one is best? +-- 1) koos millede kuni kolmega sina laulad +-- 2) koos mille kuni kolmega sina laulad +-- 3) koos mis kuni kolmega sina laulad +-- 4) koos millega kuni kolme sina laulad +-- 5) koos milledega kuni kolme sina laulad +-- 6) All are ungrammatical (provide more grammatical translation) + From 2418e8cfcffcc623da7e0474f3d10061b02ffcba Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 19 Apr 2022 15:02:34 +0800 Subject: [PATCH 111/141] (Est) fix wrong forms given to mkN in full_A --- src/estonian/LexiconEst.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/estonian/LexiconEst.gf b/src/estonian/LexiconEst.gf index 254883ccc..de0643715 100644 --- a/src/estonian/LexiconEst.gf +++ b/src/estonian/LexiconEst.gf @@ -232,7 +232,7 @@ lin correct_A = mkA (mkN "õige" "õige" "õiget" "õigesse" "õigete" "õigeid") ; dry_A = mkA (mkN "kuiv" "kuiva" "kuiva") "kuivem" "kuiveim" ; dull_A = mkA "igav" ; - full_A = mkA (mkN "täis" "täie" "täit" "täide" "täied" "täite") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives + full_A = mkA (mkN "täis" "täie" "täit" "täide" "täite" "täisi") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives heavy_A = mkA "raske" ; near_A = mkA "lähedane" ; rotten_A = mkA "mäda" ; From 967a8fb8a14d9056c5f9ad0f105ab454fb2e0819 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 11 May 2022 11:30:34 +0800 Subject: [PATCH 112/141] add extra functions to get VPS to work --- src/malay/AllMay.gf | 2 +- src/malay/IdiomMay.gf | 15 +++++++++++---- src/malay/NounMay.gf | 5 +++++ src/malay/PhraseMay.gf | 1 + src/malay/SentenceMay.gf | 3 +++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/malay/AllMay.gf b/src/malay/AllMay.gf index c965d8738..2836b818f 100644 --- a/src/malay/AllMay.gf +++ b/src/malay/AllMay.gf @@ -3,6 +3,6 @@ concrete AllMay of AllMayAbs = LangMay, ExtendMay - ** { + ** open ParadigmsMay in { lin sing_V2 = mkV2 "nyanyi" ; } ; diff --git a/src/malay/IdiomMay.gf b/src/malay/IdiomMay.gf index 79f6b3627..38dbdb71d 100644 --- a/src/malay/IdiomMay.gf +++ b/src/malay/IdiomMay.gf @@ -1,7 +1,7 @@ --1 Idiom: Idiomatic Expressions -concrete IdiomMay of Idiom = CatMay ** open Prelude, ResMay, VerbMay, NounMay, StructuralMay in { +concrete IdiomMay of Idiom = CatMay ** open Prelude, ResMay, VerbMay, QuestionMay, NounMay, StructuralMay in { -- This module defines constructions that are formed in fixed ways, -- often different even in closely related languages. @@ -14,10 +14,17 @@ concrete IdiomMay of Idiom = CatMay ** open Prelude, ResMay, VerbMay, NounMay, S subj = [] ; pred = \\vf,pol => vp.s ! Root ! pol -- force no prefix -- TODO check if legit? } ; -{- - -- GenericCl : VP -> Cl ; -- one sleeps - GenericCl = \vp -> predVP impersNP (passVP vp) ; + -- : NP -> Cl ; -- there is a house + ExistNP np = predVP np (useV copula) ; + + -- ExistIP : IP -> QCl ; -- which houses are there + ExistIP ip = QuestVP ip (useV copula) ; + + -- GenericCl : VP -> Cl ; -- one sleeps + GenericCl = \vp -> predVP emptyNP vp ; + +{- CleftNP : NP -> RS -> Cl ; -- it is I who did it CleftAdv : Adv -> S -> Cl ; -- it is here she slept diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 65a33612a..0fc845550 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -174,6 +174,11 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { heavyMod = cn.heavyMod ++ rs.s ! P3 } ; + -- : CN -> Adv -> CN ; + AdvCN cn adv = cn ** { + heavyMod = cn.heavyMod ++ adv.s + } ; + {- -- : CN -> Adv -> CN ; AdvCN cn adv = cn ** { } ; diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 3e7c99e42..17c003267 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -10,6 +10,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttIP ip = {s = ip.sp ! NF Sg Bare} ; UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ; UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; + UttVP vp = {s = vp.s ! Active ! Pos} ; {- UttImpSg pol imp = UttImpPl pol imp = diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index e9075f179..c82ae4878 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -34,6 +34,9 @@ lin } } ; + -- : VP -> SC ; + EmbedVP vp = {s = vp.s ! Root ! Pos} ; + {- -- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves SlashVS np vs ss = {} ; From a1c85431becbb734f4ee5d8ae4c5320f04d03285 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 11 May 2022 14:46:12 +0800 Subject: [PATCH 113/141] add john_PN to Malay lexicon --- src/malay/LexiconMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index e3aa111d9..78b8d4689 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -190,7 +190,7 @@ lin house_N = mkN "rumah" ; -- lin ice_N = mkN "" ; -- lin industry_N = mkN "" ; -- lin iron_N = mkN "" ; --- lin john_PN = mkPN "" ; +lin john_PN = mkPN "John" ; -- lin jump_V = mkV "" ; -- lin kill_V2 = mkV2 "" ; lin king_N = mkN "raja" ; From 3e79ab25e1d6b0198af2aae0b20913838bf66311 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 11 May 2022 14:56:01 +0800 Subject: [PATCH 114/141] add VPS and VPI to ExtendMay --- src/malay/ExtendMay.gf | 62 ++++++++++++++++++++++++++++++++++++++++-- src/malay/PhraseMay.gf | 2 +- src/malay/ResMay.gf | 2 ++ 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/malay/ExtendMay.gf b/src/malay/ExtendMay.gf index 232940d97..9b46b1c91 100644 --- a/src/malay/ExtendMay.gf +++ b/src/malay/ExtendMay.gf @@ -1,8 +1,64 @@ --# -path=.:../common:../abstract concrete ExtendMay of Extend = CatMay - -- ** ExtendFunctor - [] - -- with (Grammar=GrammarMay) - ** open Prelude, ResMay, NounMay in { + ** ExtendFunctor - [ + VPS -- finite VP's with tense and polarity + , ListVPS + , VPI + , ListVPI -- infinitive VP's (TODO: with anteriority and polarity) + , MkVPS + , PredVPS + + + + -- VPS2 ; -- have loved (binary version of VPS) + -- [VPS2] {2} ; -- has loved, hates" + -- VPI2 ; -- to love (binary version of VPI) + -- [VPI2] {2} ; -- to love, to hate + +] + with (Grammar=GrammarMay) + ** open Prelude, Coordination, ResMay, NounMay in { + lincat + VPS, VPI = SS ; + ListVPS, ListVPI = ListX ; + lin + -- MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept + MkVPS t p vp = { + s = t.s ++ p.s ++ vp.s ! Active ! p.p; + } ; + + -- BaseVPS : VPS -> VPS -> ListVPS ; + BaseVPS vps vps2 = twoSS vps vps2 ; + -- ConsVPS : VPS -> ListVPS -> ListVPS ; + ConsVPS str listvps vps = consSS "," listvps vps ; + -- ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep + ConjVPS conj listvps = conjunctX conj listvps ; + -- PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep] + PredVPS np vps = { + s = np.s ! Bare ++ vps.s ; + } ; + -- SQuestVPS : NP -> VPS -> QS ; -- has she walked + -- QuestVPS : IP -> VPS -> QS ; -- who has walked + -- RelVPS : RP -> VPS -> RS ; -- which won't sleep + + -- MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol) + MkVPI vp = {s = linVP vp} ; + + + -- BaseVPI : VPI -> VPI -> ListVPI ; + BaseVPI vpi vpi2 = twoSS vpi vpi2 ; + -- ConsVPI : VPI -> ListVPI -> ListVPI ; + ConsVPI str listvpi vpi = consSS "," listvpi vpi ; + + + -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved + -- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates + -- ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person + -- ReflVPS2 : VPS2 -> RNP -> VPS ; -- have loved and now hate myself and my car + + -- MkVPI2 : VPSlash -> VPI2 ; -- to love + -- ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate + -- ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person } ; diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 17c003267..a3a032048 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -10,7 +10,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttIP ip = {s = ip.sp ! NF Sg Bare} ; UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ; UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; - UttVP vp = {s = vp.s ! Active ! Pos} ; + UttVP vp = {s = linVP vp} ; {- UttImpSg pol imp = UttImpPl pol imp = diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index d70c8f553..0a6217248 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -276,6 +276,8 @@ oper s = \\vf,pol => nounneg pol ++ s ; } ; + linVP : VerbPhrase -> Str = \vp -> vp.s ! Active ! Pos; + -- https://www.reddit.com/r/indonesian/comments/gsizsv/when_to_use_tidak_bukan_jangan_belum/ verbneg : Polarity -> Str = \pol -> case pol of { From c712efc8ebb0c13b5a123e11e3bc56bbe35a984b Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 11 May 2022 14:56:48 +0800 Subject: [PATCH 115/141] add functions from BareRGMay to ExtendMay --- src/malay/ExtendMay.gf | 41 +++++++++++++++++++++++++++++++++++++++ src/malay/GrammarMay.gf | 9 ++++----- src/malay/MissingMay.gf | 1 - src/malay/NounMay.gf | 3 +-- src/malay/ParadigmsMay.gf | 1 + src/malay/VerbMay.gf | 4 ++-- 6 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/malay/ExtendMay.gf b/src/malay/ExtendMay.gf index 9b46b1c91..5e14dccc9 100644 --- a/src/malay/ExtendMay.gf +++ b/src/malay/ExtendMay.gf @@ -9,6 +9,16 @@ concrete ExtendMay of Extend = CatMay , MkVPS , PredVPS + -- excluded because RGL funs needed for them not implemented yet + , SlashBareV2S + , PredAPVP + , ComplBareVS + + + ,PresPartAP, PastPartAP + ,GenModNP, GenNP, GenRP + ,CompoundN + ,GerundNP -- VPS2 ; -- have loved (binary version of VPS) @@ -51,6 +61,37 @@ concrete ExtendMay of Extend = CatMay -- ConsVPI : VPI -> ListVPI -> ListVPI ; ConsVPI str listvpi vpi = consSS "," listvpi vpi ; + -- ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk + -- ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk + ComplVPIVV vv vpi = useV { + s = \\vf => vv.s ++ vpi.s + } ; + + -- PresPartAP : VP -> AP ; -- (the man) looking at Mary + PresPartAP vp = { + s = linVP vp + } ; + + PastPartAP vp = { + s = linVP vp + } ; + -- GenModNP : Num -> NP -> CN -> NP ; -- this man's car(s) + GenModNP n np cn = variants {}; + + -- GenNP : NP -> Quant ; -- this man's + GenNP np = variants {}; + -- GenRP : Num -> CN -> RP ; -- whose car + GenRP n cn = variants {}; + + -- CompoundN : N -> N -> N ; -- control system / controls system / control-system + CompoundN n1 n2 = n2 ** { + s = \\nf => n1.s ! NF Sg Bare ++ n2.s ! nf + } ; + -- GerundNP : VP -> NP ; -- publishing the document (by nature definite) + GerundNP vp = emptyNP ** { + s = \\_ => linVP vp + } ; + -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved -- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates diff --git a/src/malay/GrammarMay.gf b/src/malay/GrammarMay.gf index 9c643f4b2..4bf46f606 100644 --- a/src/malay/GrammarMay.gf +++ b/src/malay/GrammarMay.gf @@ -9,7 +9,7 @@ concrete GrammarMay of Grammar = RelativeMay, ConjunctionMay, PhraseMay, - TextX - [IAdv], + TextX - [AAnter, TFut, TCond, IAdv], StructuralMay, IdiomMay, TenseX - [AAnter, TFut, TCond, IAdv] @@ -17,9 +17,8 @@ concrete GrammarMay of Grammar = flags startcat = Phr ; - lin - AAnter = {s = "sudah" ; a = ParamX.Anter} ; - TFut = {s = "akan" ; t = ParamX.Fut} ; - TCond = {s = "akan" ; t = ParamX.Cond} ; + lin AAnter = {s = "sudah" ; a = ParamX.Anter} ; --# notpresent + TFut = {s = "akan" ; t = ParamX.Fut} ; --# notpresent + TCond = {s = "akan" ; t = ParamX.Cond} ; --# notpresent } ; diff --git a/src/malay/MissingMay.gf b/src/malay/MissingMay.gf index 133ff736e..44cc5cd0a 100644 --- a/src/malay/MissingMay.gf +++ b/src/malay/MissingMay.gf @@ -114,7 +114,6 @@ oper Use2N3 : N3 -> N2 = notYet "Use2N3" ; oper Use3N3 : N3 -> N2 = notYet "Use3N3" ; oper UseA2 : A2 -> AP = notYet "UseA2" ; oper UseComparA : A -> AP = notYet "UseComparA" ; -oper UsePN : PN -> NP = notYet "UsePN" ; oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ; oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ; oper UttAP : AP -> Utt = notYet "UttAP" ; diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 0fc845550..76142d547 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -19,8 +19,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { } ; -- : PN -> NP ; --- UsePN pn = pn ** { --- } ; + UsePN pn = MassNP (UseN pn) ; -- : Pron -> NP ; UsePron pron = pron ** { diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 5a1732e1f..2ffaa7122 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -9,6 +9,7 @@ oper -- should always use these constants instead of the constructors -- defined in $ResSom$. +noPrep : Prep = mkPrep "" ; --2 Nouns diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index b66e508f1..77511c0cf 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -16,7 +16,7 @@ lin -- : VV -> VP -> VP ; ComplVV vv vp = vp ** useV { - s = \\vf => vv.s ++ vp.s ! Active ! Pos + s = \\vf => vv.s ++ linVP vp } ; -- : VS -> S -> VP ; @@ -101,7 +101,7 @@ lin } ; -- SlashVV vv vp = vp ** useV { - -- s = \\vf => vv.s ++ vp.s ! Active ! Pos ; + -- s = \\vf => vv.s ++ linVP vp ; -- c2 = vp.c2 ; -- passive = vv.s ++ vp.passive; -- adjCompl = vp.adjCompl ; From cff79f72c5392fb7071a340afec635caa59d4762 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 11 May 2022 14:57:21 +0800 Subject: [PATCH 116/141] add Malay to languages.csv --- languages.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/languages.csv b/languages.csv index e4479c7c1..6b4ca4385 100644 --- a/languages.csv +++ b/languages.csv @@ -27,6 +27,7 @@ Jpn,Japanese,japanese,,,,,,,,y Kor,Korean,korean,,,n,y,y,y,n,n Lat,Latin,latin,,,,,y,y,n,y Lav,Latvian,latvian,,,,,,,y,y +May,Malay,malay,,,y,,,,n,y Mlt,Maltese,maltese,,,,,,,,y Mon,Mongolian,mongolian,,,,,,n,,y Nep,Nepali,nepali,,,,,,n,,y From 85960e0416dfd46082be89f7ebb9e9601974b589 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 13 May 2022 14:37:19 +0800 Subject: [PATCH 117/141] add changes for Adv functions to Malay rgl --- src/malay/AdjectiveMay.gf | 8 ++++++-- src/malay/MissingMay.gf | 4 ---- src/malay/NounMay.gf | 4 +++- src/malay/ParadigmsMay.gf | 21 ++++++++++++++++++--- src/malay/PhraseMay.gf | 2 +- src/malay/ResMay.gf | 6 ++++++ src/malay/StructuralMay.gf | 10 +++++++--- src/malay/VerbMay.gf | 8 +++++--- 8 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/malay/AdjectiveMay.gf b/src/malay/AdjectiveMay.gf index 2df3e73a0..4909f119e 100644 --- a/src/malay/AdjectiveMay.gf +++ b/src/malay/AdjectiveMay.gf @@ -4,6 +4,11 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { lin + -- : AP -> Adv -> AP ; -- warm by nature + AdvAP ap adv = ap ** { + s = ap.s ++ adv.s ; + } ; + -- : A -> AP ; PositA a = a ** { compar = [] ; @@ -58,7 +63,6 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { -- It can also be postmodified by an adverb, typically a prepositional phrase. - -- : AP -> Adv -> AP ; -- warm by nature - -- AdvAP ap adv = ap ** {} ; + } diff --git a/src/malay/MissingMay.gf b/src/malay/MissingMay.gf index 44cc5cd0a..d1a55f587 100644 --- a/src/malay/MissingMay.gf +++ b/src/malay/MissingMay.gf @@ -9,8 +9,6 @@ oper AdjCN : AP -> CN -> CN = notYet "AdjCN" ; oper AdjDAP : DAP -> AP -> DAP = notYet "AdjDAP" ; oper AdjOrd : Ord -> AP = notYet "AdjOrd" ; oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ; -oper AdvAP : AP -> Adv -> AP = notYet "AdvAP" ; -oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ; oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ; oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ; oper AdvNP : NP -> Adv -> NP = notYet "AdvNP" ; @@ -191,7 +189,6 @@ oper but_PConj : PConj = notYet "but_PConj" ; oper butter_N : N = notYet "butter_N" ; oper camera_N : N = notYet "camera_N" ; oper can8know_VV : VV = notYet "can8know_VV" ; -oper can_VV : VV = notYet "can_VV" ; oper cap_N : N = notYet "cap_N" ; oper carpet_N : N = notYet "carpet_N" ; oper ceiling_N : N = notYet "ceiling_N" ; @@ -362,7 +359,6 @@ oper mountain_N : N = notYet "mountain_N" ; oper mouth_N : N = notYet "mouth_N" ; oper much_Det : Det = notYet "much_Det" ; oper music_N : N = notYet "music_N" ; -oper must_VV : VV = notYet "must_VV" ; oper n_unit_CN : Card -> CN -> CN -> CN = notYet "n_unit_CN" ; oper n_units_AP : Card -> CN -> A -> AP = notYet "n_units_AP" ; oper n_units_of_NP : Card -> CN -> NP -> NP = notYet "n_units_of_NP" ; diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 76142d547..90f0b7d5f 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -39,7 +39,9 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- s = \\c => v2.s ! ??? ++ np.s ! c } ; ---- -- : NP -> Adv -> NP ; -- Paris today ; boys, such as .. - --AdvNP,ExtAdvNP = \np,adv -> np ** {} ; + AdvNP,ExtAdvNP = \np,adv -> np ** { + s = \\pos => np.s ! pos ++ adv.s + } ; -- : NP -> RS -> NP ; -- Paris, which is here RelNP np rs = np ** { diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 2ffaa7122..2d20d248c 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -27,7 +27,9 @@ noPrep : Prep = mkPrep "" ; mkA : (adj : Str) -> A ; } ; - -- mkA2 : Str -> Prep -> A2 ; + mkA2 : overload { + mkA2 : (adj : Str) -> Prep -> A2 ; + } ; --2 Verbs @@ -57,8 +59,10 @@ noPrep : Prep = mkPrep "" ; -- = \s -> lin VA (regV s) ; -- mkVQ : Str -> VQ -- = \s -> lin VQ (regV s) ; - -- mkVS : Str -> VS - -- = \s -> lin VS (regV s) ; + mkVS : overload { + mkV : (root : Str) -> V ; -- Verb that takes meng as a active prefix + mkV : (root : Str) -> Prefix -> V -- Root and prefix + } ; -- -- mkV2A : Str -> V2A -- = \s -> lin V2A (regV s ** {c2 = noPrep}) ; @@ -103,6 +107,12 @@ noPrep : Prep = mkPrep "" ; mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = dirPrep}) ; } ; + mkN3 = overload { + mkN3 : Str -> N3 = \s -> lin N3 (mkNoun s ** {c2,c3 = dirPrep}) ; + mkN3 : N -> N3 = \n -> lin N3 (n ** {c2,c3 = dirPrep}) ; + mkN3 : N -> Prep -> Prep -> N3 = \n,c2,c3 -> lin N3 (n ** {c2,c3 = dirPrep}) ; + } ; + mkPN = overload { mkPN : Str -> PN = \s -> lin PN {s = \\_ => s} ; } ; @@ -111,6 +121,11 @@ noPrep : Prep = mkPrep "" ; mkA : (adj : Str) -> A = \s -> lin A (mkAdj s) ; } ; + mkA2 = overload { + mkA2 : (adj : Str) -> A = \s -> lin A2 (mkAdj s) ; + mkA2 : A -> Prep -> A = \a,p -> lin A2 (a) ; + } ; + mkV = overload { mkV : Str -> V = \v -> lin V (mkVerb v Ber) ; mkV : Str -> Prefix -> V = \v,p -> lin V (mkVerb v p) diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index a3a032048..4132faafb 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -11,6 +11,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ; UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; UttVP vp = {s = linVP vp} ; + UttAP ap = { s = ap.s } ; {- UttImpSg pol imp = UttImpPl pol imp = @@ -20,7 +21,6 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttAdv adv = {s = } ; UttCN n = {s = } ; UttCard n = {s = } ; - UttAP ap = { s = ap.s ! } ; UttInterj i = i ; -} NoPConj = {s = []} ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 0a6217248..cbc33ef42 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -60,6 +60,12 @@ oper empty = [] } ; + mkNounPhrase : Str -> NounPhrase = \str -> { + s = \\_ => str ; + a = NotPron ; + empty = [] + } ; + mkIP : Str -> IPhrase = \str -> { s = \\_ => str ; a = NotPron ; diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index a2cb1cb73..e182f6dca 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -57,13 +57,14 @@ lin and_Conj = {s2 = "dan" ; s1 = [] ; n = Pl} ; lin how8many_IDet = mkIdet "berapa" "berapa banyak" "" Sg True; +lin every_Det = mkDet "semua" "semua" Sg ; -- to check + {-} lin all_Predet = {s = ""} ; lin not_Predet = { s = "" } ; lin only_Predet = { s = "" } ; lin most_Predet = {s = ""} ; -lin every_Det = {s = ""} ; lin few_Det = R.indefDet "" pl ; lin many_Det = R.indefDet "" pl ; lin much_Det = R.indefDet "" sg ; @@ -78,6 +79,9 @@ lin which_IQuant = mkQuant "yang mana" ** {isPre = False} ; ----- -- NP + +lin somebody_NP = mkNounPhrase "seorang" ; --todo + {- lin everybody_NP = defNP "" N.NumPl ; lin everything_NP = defNP "" N.NumSg ; @@ -174,8 +178,8 @@ lin have_V2 = let have' : V2 = mkV2 "ada" in have' ** { passive = "diadakan" ; } ; -- lin can8know_VV = can_VV ; -- can (capacity) --- lin can_VV = mkVV "" ; -- can (possibility) --- lin must_VV = mkVV "" ; +lin can_VV = mkVV "boleh" ; -- can (possibility) +lin must_VV = mkVV "perlu" ; lin want_VV = mkVV "mahu" ; ------ diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 77511c0cf..b6985a832 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -118,6 +118,11 @@ lin s = \\vf,pol => vp.s ! vf ! pol ++ adv.s } ; + -- : AdV -> VP -> VP ; -- always sleep + AdVVP adv vp = vp ** { + s = \\vf,pol => vp.s ! vf ! pol ++ adv.s + } ; + {- -- : VPSlash -> Adv -> VPSlash ; -- use (it) here AdvVPSlash = insertAdv ; @@ -125,9 +130,6 @@ lin -- : VP -> Adv -> VP ; -- sleep , even though ... ExtAdvVP vp adv = ; - -- : AdV -> VP -> VP ; -- always sleep - AdVVP adv vp = vp ** {adv = adv} ; - -- : AdV -> VPSlash -> VPSlash ; -- always use (it) AdVVPSlash adv vps = vps ** { adv = adv.s ++ vps.adv } ; -} From a9c18fc48c5f6ef1f3c495f2c8314fa79f407dec Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 13 May 2022 15:46:08 +0800 Subject: [PATCH 118/141] add John and other lexicon to Malay --- src/malay/LexiconMay.gf | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 78b8d4689..ee6ee3bd3 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -30,28 +30,28 @@ lin beer_N = mkN "bir" ; -- lin beg_V2V = mkV2 "" ; -- lin belly_N = mkN "" ; lin big_A = mkA "besar" ; --- lin bike_N = mkN "" ; --- lin bird_N = mkN "" ; +lin bike_N = mkN "basikal" ; +lin bird_N = mkN "burung" ; -- lin bite_V2 = mkV2 "" ; lin black_A = mkA "hitam" ; lin blood_N = mkN "darah" ; -- lin blow_V = mkV "" ; --- lin blue_A = mkA "" ; --- lin boat_N = mkN "" ; --- lin bone_N = mkN "" ; +lin blue_A = mkA "biru" ; +lin boat_N = mkN "perahu" ; +lin bone_N = mkN "tulang" ; -- lin boot_N = mkN "" ; -- lin boss_N = mkN "" ; lin book_N = mkN "buku" ; -- lin boy_N = mkN "" ; --- lin bread_N = mkN "" ; +lin bread_N = mkN "roti" ; lin break_V2 = mkV4 "patah" "kan"; -- TODO figure out if -kan needs to be separated -- lin breast_N = mkN "" ; -- lin breathe_V = mkV "" ; -- lin broad_A = mkA "" ; --- lin brother_N2 = mkN "" ; +-- lin brother_N2 = mkN "abang" Animate; -- lin brown_A = mkA "" ; --- lin burn_V = mkV "" ; --- lin butter_N = mkN "" ; +lin burn_V = mkV "bakar" ; +lin butter_N = mkN "mentega" ; lin buy_V2 = mkV2 "beli" ; ---- @@ -68,10 +68,10 @@ lin cat_N = mkN "kucing" ; -- lin child_N = mkN "" ; -- lin church_N = mkN "" ; -- lin city_N = mkN "" ; --- lin clean_A = mkA "" ; +lin clean_A = mkA "bersih" ; -- lin clever_A = mkA "" ; -- lin close_V2 = mkV2 "" ; --- lin cloud_N = mkN "" ; +lin cloud_N = mkN "awan" ; -- lin coat_N = mkN "" ; -- lin cold_A = mkA "" ; lin come_V = mkV "datang" ; @@ -80,7 +80,7 @@ lin come_V = mkV "datang" ; -- lin count_V2 = mkV2 "" ; -- lin country_N = mkN "" ; -- lin cousin_N = mkN "" ; --- lin cow_N = mkN "" ; +lin cow_N = mkN "embu" ; -- lin cut_V2 = mkV2 "" ; ---- @@ -190,7 +190,7 @@ lin house_N = mkN "rumah" ; -- lin ice_N = mkN "" ; -- lin industry_N = mkN "" ; -- lin iron_N = mkN "" ; -lin john_PN = mkPN "John" ; +lin john_PN = mkPN "Yohanes" ; -- lin jump_V = mkV "" ; -- lin kill_V2 = mkV2 "" ; lin king_N = mkN "raja" ; From a6e08758788b9aca72cc06930e0f6439612ecd04 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 17 May 2022 16:40:26 +0200 Subject: [PATCH 119/141] (zul) changes to MultiLex adjectives --- src/zulu/lexica/MultiLex.gf | 112 ++++++++++++++++----------------- src/zulu/lexica/MultiLexZul.gf | 86 +++++++++++++------------ 2 files changed, 97 insertions(+), 101 deletions(-) diff --git a/src/zulu/lexica/MultiLex.gf b/src/zulu/lexica/MultiLex.gf index feef78228..ad28e8fad 100644 --- a/src/zulu/lexica/MultiLex.gf +++ b/src/zulu/lexica/MultiLex.gf @@ -1,63 +1,61 @@ abstract MultiLex = Cat ** { fun - big_A : A ; - bad_A : A ; - beautiful_A : A ; - better_A : A ; - bitter_A : A ; - black_A : A ; - blue_A : A ; - blunt_A : A ; - brown_A : A ; - busy_A : A ; - certain_A : A ; - cold_A : A ; - colourful_A : A ; - difficult_A : A ; - easy_A : A ; - few_A : A ; - five_A : A ; - four_A : A ; - green_A : A ; - grey_A : A ; - hard_A : A ; - holy_A : A ; - honest_A : A ; - hwvy_A : A ; - innocent_A : A ; - kind_A : A ; - light_A : A ; - long_A : A ; - many_A : A ; - most_important_A : A ; - new_A : A ; - old_A : A ; - one_A : A ; - orange_A : A ; - overcast_A : A ; - painful_A : A ; - peaceful_A : A ; - pink_A : A ; - pleasant_A : A ; - poor_A : A ; - purple_A : A ; - red_A : A ; - sharp_A : A ; - short_A : A ; - small_A : A ; - soft_A : A ; - sour_A : A ; - spotted_A : A ; - strong_A : A ; - sweet_A : A ; - tasteless_A : A ; - three_A : A ; - two_A : A ; - wet_A : A ; - white_A : A ; - wide_A : A ; - yellow_A : A ; + big_A : A ; + bad_A : A ; + beautiful_A : A ; + better_R : A ; + bitter_R : A ; + black_R : A ; + blue_R : A ; + blunt_R : A ; + brown_R : A ; + busy_R : A ; + certain_R : A ; + cold_R : A ; + colourful_R : A ; + difficult_R : A ; + easy_R : A ; + few_R : A ; + five_A : A ; + four_A : A ; + green_R : A ; + grey_R : A ; + hard_R : A ; + holy_R : A ; + honest_R : A ; + heavy_R : A ; + innocent_R : A ; + kind_R : A ; + light_R : A ; + long_A : A ; + -- most_important_A : A ; + new_A : A ; + old_A : A ; + one_A : A ; + -- overcast_A : A ; + painful_R : A ; + peaceful_R : A ; + pink_R : A ; + pleasant_R : A ; + poor_R : A ; + purple_R : A ; + red_A : A ; + sharp_R : A ; + short_A : A ; + small_A : A ; + soft_R : A ; + sour_R : A ; + spotted_R : A ; + strong_R : A ; + sweet_R : A ; + tasteless_R : A ; + three_A : A ; + two_A : A ; + wet_R : A ; + white_R : A ; + wide_R : A ; + yellow_R : A ; -- nouns ability_N : N ; diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index fe840a1ec..86789d0e1 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -5,60 +5,58 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { big_A = mkA "khulu" ; bad_A = mkA "bi" ; beautiful_A = mkA "hle" ; - better_A = mkA "ngcono" ; - bitter_A = mkA "munyu" ; - black_A = mkA "mnyama" ; - blue_A = mkA "luhlaza" ; - blunt_A = mkA "buthuntu" ; - brown_A = mkA "nsundu" ; - busy_A = mkA "matasatosa" ; - certain_A = mkA "thile" ; - cold_A = mkA "makhaza" ; - colourful_A = mkA "makhwezikhwezi" ; - difficult_A = mkA "nzima" ; - easy_A = mkA "lula" ; - few_A = mkA "mbalwa" ; - five_A = mkA "hlonu" ; + better_R = mkRelA "ngcono" ; + bitter_R = mkRelA "munyu" ; + black_R = mkRelA "mnyama" ; + blue_R = mkRelA "luhlaza" ; + blunt_R = mkRelA "buthuntu" ; + brown_R = mkRelA "nsundu" ; + busy_R = mkRelA "matasatasa" ; + certain_R = mkRelA "thile" ; + cold_R = mkRelA "makhaza" ; + colourful_R = mkRelA "makhwezikhwezi" ; + difficult_R = mkRelA "nzima" ; + easy_R = mkRelA "lula" ; + few_R = mkRelA "mbalwa" ; + five_A = mkA "hlanu" ; four_A = mkA "ne" ; - green_A = mkA "luhlaza" ; - grey_A = mkA "mpunga" ; - hard_A = mkA "lukhuni" ; - holy_A = mkA "ngcwele" ; - honest_A = mkA "qotho" ; - hwvy_A = mkA "nzima" ; - innocent_A = mkA "msulwa" ; - kind_A = mkA "mnene" ; - light_A = mkA "lula" ; + green_R = mkRelA "luhlaza" ; + grey_R = mkRelA "mpunga" ; + hard_R = mkRelA "lukhuni" ; + holy_R = mkRelA "ngcwele" ; + honest_R = mkRelA "qotho" ; + heavy_R = mkRelA "nzima" ; + innocent_R = mkRelA "msulwa" ; + kind_R = mkRelA "mnene" ; + light_R = mkRelA "lula" ; long_A = mkA "de" ; - many_A = mkA "ningi" ; - most_important_A = mkA "mqoka" ; + -- most_important_A = mkA "mqoka" ; new_A = mkA "sha" ; old_A = mkA "dolo" ; one_A = mkA "nye" ; - orange_A = mkA "sawolintshi" ; - overcast_A = mkA "mathumbenkala" ; - painful_A = mkA "buhlungu" ; - peaceful_A = mkA "thule" ; - pink_A = mkA "bomvana" ; - pleasant_A = mkA "mnandi" ; - poor_A = mkA "mpofu" ; - purple_A = mkA "bunsomi" ; + -- overcast_A = mkA "mathumbenkala" ; + painful_R = mkRelA "buhlungu" ; + peaceful_R = mkRelA "thule" ; + pink_R = mkRelA "bomvana" ; + pleasant_R = mkRelA "mnandi" ; + poor_R = mkRelA "mpofu" ; + purple_R = mkRelA "nsomi" ; red_A = mkA "bomvu" ; - sharp_A = mkA "bukhali" ; + sharp_R = mkRelA "bukhali" ; short_A = mkA "fushane" ; small_A = mkA "ncane" ; - soft_A = mkA "ntofontofo" ; - sour_A = mkA "munyu" ; - spotted_A = mkA "mabalabala" ; - strong_A = mkA "qatha" ; - sweet_A = mkA "mtoti" ; - tasteless_A = mkA "duma" ; + soft_R = mkRelA "ntofontofo" ; + sour_R = mkRelA "munyu" ; + spotted_R = mkRelA "mabalabala" ; + strong_R = mkRelA "qatha" ; + sweet_R = mkRelA "mtoti" ; + tasteless_R = mkRelA "duma" ; three_A = mkA "thathu" ; two_A = mkA "bili" ; - wet_A = mkA "manzi" ; - white_A = mkA "mhlophe" ; - wide_A = mkA "banzi" ; - yellow_A = mkA "phuzi" ; + wet_R = mkRelA "manzi" ; + white_R = mkRelA "mhlophe" ; + wide_R = mkRelA "banzi" ; + yellow_R = mkRelA "phuzi" ; -- nouns ability_N = mkN "khono" C5_6 ; From edcef16eb19e380d49e8593135990021795fcfdc Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 18 May 2022 15:59:55 +0800 Subject: [PATCH 120/141] fix passive for token ungluing --- src/malay/ResMay.gf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index cbc33ef42..6142f10c5 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -237,16 +237,16 @@ oper mkVerb2 : Verb -> Preposition -> Verb2 = \v,pr -> v ** { c2 = pr ; - passive = "di" + v.s ! Root + passive = "di" ++ v.s ! Root } ; mkVerb3 : Verb -> (p,q : Preposition) -> Verb3 = \v,p,q -> mkVerb2 v p ** {c3 = q} ; mkVerb4 : Verb -> Preposition -> Str -> Verb4 = \v,pr,str -> v ** { - s = \\_ => v.s ! Active + str; + s = \\_ => v.s ! Active ++ str; c2 = pr ; - passive = "di" + v.s ! Root + str + passive = "di" ++ v.s ! Root + str } ; copula : Verb = {s = \\_ => "ada"} ; -- TODO From 5c84ce9623d63b9288bcad1dadb4aee7607b8dfe Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 18 May 2022 16:08:35 +0800 Subject: [PATCH 121/141] remove space for passive --- src/malay/ResMay.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 6142f10c5..b473ea064 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -237,7 +237,7 @@ oper mkVerb2 : Verb -> Preposition -> Verb2 = \v,pr -> v ** { c2 = pr ; - passive = "di" ++ v.s ! Root + passive = "di" ++ BIND ++ v.s ! Root } ; mkVerb3 : Verb -> (p,q : Preposition) -> Verb3 = \v,p,q -> @@ -246,7 +246,7 @@ oper mkVerb4 : Verb -> Preposition -> Str -> Verb4 = \v,pr,str -> v ** { s = \\_ => v.s ! Active ++ str; c2 = pr ; - passive = "di" ++ v.s ! Root + str + passive = "di" ++ BIND ++ v.s ! Root ++ str } ; copula : Verb = {s = \\_ => "ada"} ; -- TODO From 02d3752a26b941475341187d1159743219de78af Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 19 May 2022 12:19:49 +0200 Subject: [PATCH 122/141] (zul) NP conjunction --- src/zulu/ExtraExtZul.gf | 17 ++++++++++++++++- src/zulu/ResZul.gf | 15 ++++++++++++--- src/zulu/abstract_ext/ExtraExt.gf | 6 +++++- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/zulu/ExtraExtZul.gf b/src/zulu/ExtraExtZul.gf index 26f10d222..d88c38459 100755 --- a/src/zulu/ExtraExtZul.gf +++ b/src/zulu/ExtraExtZul.gf @@ -1,5 +1,5 @@ concrete ExtraExtZul of ExtraExt = - CatZul [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN], + CatZul [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN,Conj], CatExtZul ** open ResZul,Prelude,ParamX in { @@ -570,6 +570,21 @@ concrete ExtraExtZul of ExtraExt = AdvQS adv qs = { s = adv.s ++ qs.s ; qword_pre = [] ; qword_post = [] } ; + ExtConjNP np1 conj np2 = { + s = \\nform => np1.s!nform ++ (link_conj conj np2.i) ++ np2.s!NReduced ; + agr = compAgr np1.agr np2.agr ; + i = np1.i ; + proDrop = andB np1.proDrop np2.proDrop ; + isPron = np1.isPron ; + heavy = orB np1.heavy np2.heavy ; + empty = np1.empty ++ np2.empty + } ; + + with_Conj = { + s = withPref ; + fix = True + } ; + -- Deverb15 v = -- let -- agr = Third C15 Sg ; diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 9cabe2fd3..4d4b03803 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -1841,8 +1841,17 @@ resource ResZul = open Prelude,Predef,ParamX in { -- OTHER ---------------------------------------- - link_conj : Str -> Str -> Str -> Bool -> Str = \conj,s_full,s_novow,fix -> case fix of { - True => conj ++BIND ++ s_novow ; - False => conj ++ s_full + link_conj : { s: RInit => Str ; fix : Bool } -> RInit -> Str = \conj,rinit -> case conj.fix of { + True => conj.s!rinit ++BIND ; + False => conj.s!RC + } ; + + compAgr : Agr -> Agr -> Agr = \a1,a2 -> case of { + => First Pl ; + <(First _ | Second _ | Third _ _),First _> => First Pl ; + => Second Pl ; + <(First _ | Second _ | Third _ _),Second _> => Second Pl ; + => Third C1_2 Pl ; + => Third c Pl } ; } diff --git a/src/zulu/abstract_ext/ExtraExt.gf b/src/zulu/abstract_ext/ExtraExt.gf index 41dfc7da4..3ae9381de 100755 --- a/src/zulu/abstract_ext/ExtraExt.gf +++ b/src/zulu/abstract_ext/ExtraExt.gf @@ -1,5 +1,5 @@ abstract ExtraExt = - Cat [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN], + Cat [NP,VP,CN,V,Temp,S,Cl,Adv,Pron,QCl,QS,A,RS,IAdv,IComp,Pol,Det,Quant,N,PN,Conj], CatExt ** { fun @@ -126,6 +126,10 @@ abstract ExtraExt = kakhulu_Adv : Adv ; + ExtConjNP : NP -> Conj -> NP -> NP ; + + with_Conj : Conj ; + -- Deverb15 : V -> N ; -- AdvQS : IAdv -> S -> QS ; -- maybe it is a pain that burns 2020-01-15: consider that this should rather be dealt with using QuestIAdv) From 20275832adfd52cec6871ce8940b1215f254faa8 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 19 May 2022 12:21:27 +0200 Subject: [PATCH 123/141] (zul) NguniGrammar new imports --- src/zulu/grammar_ext/NguniGrammar.gf | 2 +- src/zulu/grammar_ext/NguniGrammarZul.gf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/zulu/grammar_ext/NguniGrammar.gf b/src/zulu/grammar_ext/NguniGrammar.gf index 4f2d46379..b09542b0a 100755 --- a/src/zulu/grammar_ext/NguniGrammar.gf +++ b/src/zulu/grammar_ext/NguniGrammar.gf @@ -1,7 +1,7 @@ -- All functions are explicitly inherited, in order to allow useful probabilities abstract NguniGrammar = - Noun [DetCN, UsePron, DetQuant, NumSg, NumPl, IndefArt, DefArt, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP, MassNP], -- MassNP,AdvCN, AdvNP, + Noun [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP], -- MassNP,AdvCN, AdvNP, Verb [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash], Adjective [PositA, AdAP], Adverb [PositAdvAdj, SubjS], diff --git a/src/zulu/grammar_ext/NguniGrammarZul.gf b/src/zulu/grammar_ext/NguniGrammarZul.gf index 972b51f0a..0e6b55f10 100755 --- a/src/zulu/grammar_ext/NguniGrammarZul.gf +++ b/src/zulu/grammar_ext/NguniGrammarZul.gf @@ -1,7 +1,7 @@ -- All functions are explicitly inherited, in order to allow useful probabilities concrete NguniGrammarZul of NguniGrammar = - NounZul [DetCN, UsePron, DetQuant, NumSg, NumPl, IndefArt, DefArt, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP, MassNP], -- MassNP, AdvCN,AdvNP, + NounZul [DetCN, UsePron, DetQuant, NumSg, NumPl, UseN, AdjCN, RelCN, PossNP,UsePN, RelNP, PredetNP], -- MassNP, AdvCN,AdvNP, VerbZul [UseV, ComplVS, ComplVA, SlashV2a, UseComp, AdvVP, CompAP, CompNP, CompAdv, ComplSlash], AdjectiveZul [PositA, AdAP], AdverbZul [PositAdvAdj, SubjS], @@ -9,7 +9,7 @@ concrete NguniGrammarZul of NguniGrammar = SentenceZul [PredVP, ImpVP, UseCl, UseQCl, UseRCl], QuestionZul [QuestCl, QuestIAdv, QuestIComp], RelativeZul [RelVP, IdRP], - -- Conjunction, + -- ConjunctionZul, PhraseZul [PhrUtt, UttS, UttQS, UttImpSg, NoPConj, NoVoc], TextX - [Temp,Adv,IAdv], StructuralZul [and_Conj,how_IAdv,how8much_IAdv,i_Pron,youSg_Pron,he_Pron,she_Pron,we_Pron,youPl_Pron,they_Pron,this_Quant,that_Quant,all_Predet,only_Predet,very_AdA], From 149407d19bbca70075119c7b89eed3c92365e40e Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 19 May 2022 12:27:48 +0200 Subject: [PATCH 124/141] (zul) MultiLex fixes --- src/zulu/lexica/MultiLex.gf | 1 + src/zulu/lexica/MultiLexZul.gf | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/zulu/lexica/MultiLex.gf b/src/zulu/lexica/MultiLex.gf index ad28e8fad..952e9719c 100644 --- a/src/zulu/lexica/MultiLex.gf +++ b/src/zulu/lexica/MultiLex.gf @@ -454,6 +454,7 @@ abstract MultiLex = Cat ** { sock_N : N ; soil_N : N ; soldier_N : N ; + son_N : N ; song_N : N ; south_N : N ; spade_N : N ; diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index 86789d0e1..3e929bc17 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -163,7 +163,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { curtain_N = mkN "khethini" C5_6 ; customer_N = mkN "thengi" C1_2 ; danger_N = mkN "ngozi" C9_10 ; - daughter_N = mkN "doda" C9_6 ; + daughter_N = mkN "dodakazi" C9_6 ; day_N = mkN "suku" C11_10 ; decision_N = mkN "nqumo" C7_8 ; deed_N = mkN "enzo" C7_8 ; @@ -456,6 +456,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { sock_N = mkN "sokisi" C5_6 ; soil_N = mkN "hlabathi" C3_4 ; soldier_N = mkN "sosha" C5_6 ; + son_N = mkN "dodana" C9_6 ; song_N = mkN "culo" C5_6 ; south_N = mkN "Ningizimu" C5_6 ; spade_N = mkN "fosholo" C5_6 ; From 6421fb7ee9ffb42c14062687556184d1291b45c8 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 19 May 2022 14:40:41 +0200 Subject: [PATCH 125/141] (zul) dem na in postdet --- src/zulu/NounExtZul.gf | 6 +++--- src/zulu/ResZul.gf | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/zulu/NounExtZul.gf b/src/zulu/NounExtZul.gf index 46b35d675..bee7aee84 100644 --- a/src/zulu/NounExtZul.gf +++ b/src/zulu/NounExtZul.gf @@ -19,15 +19,15 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param } ; DemPostdet q = { - s = \\a => dem_pron!q.dist!a ++ q.s + s = \\a => dem_pron!q.dist!a ++ dem_pron_na!q.dist!a ++ q.s } ; QuantDemPostdet q d = { - s = \\a => q.s!a ++ dem_pron!d.dist!a ++ d.s + s = \\a => q.s!a ++ dem_pron!d.dist!a ++ dem_pron_na!d.dist!a ++ d.s } ; DemQuantPostdet d q = { - s = \\a => dem_pron!d.dist!a ++ q.s!a ++ d.s + s = \\a => dem_pron!d.dist!a ++ dem_pron_na!d.dist!a ++ q.s!a ++ d.s } ; DetNum n = n ; -- ** { spec = Spec } ; diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 4d4b03803..ce43caa1e 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -216,6 +216,44 @@ resource ResZul = open Prelude,Predef,ParamX in { } } ; + dem_pron_na : Distance => Agr => Str = table { + Dem1 => table { + First Sg => BIND++"na" ; + First Pl => [] ; + Second Sg => BIND++"na" ; + Second Pl => [] ; + Third C1_2 Sg => BIND++"na" ; + Third C1_2 Pl => [] ; + Third C1a_2a Sg => BIND++"na" ; + Third C1a_2a Pl => [] ; + Third C3_4 Sg => BIND++"na" ; + Third C3_4 Pl => BIND++"na" ; + Third C5_6 Sg => [] ; + Third C5_6 Pl => BIND++"na" ; + Third C7_8 Sg => [] ; + Third C7_8 Pl => [] ; + Third C9_10 Sg => BIND++"na" ; + Third C9_10 Pl => [] ; + Third C11_10 Sg => [] ; + Third C11_10 Pl => [] ; + Third C9_6 Sg => BIND++"na" ; + Third C9_6 Pl => BIND++"na" ; + Third C14 _ => [] ; + Third C15 _ => [] ; + Third C17 _ => [] + } ; + Dem2 => table { + First _ => [] ; + Second _ => [] ; + Third _ _ => [] + } ; + Dem3 => table { + First _ => [] ; + Second _ => [] ; + Third _ _ => [] + } + } ; + ----------- -- VERBS -- ----------- @@ -1618,6 +1656,8 @@ resource ResZul = open Prelude,Predef,ParamX in { Second Pl => "no" } ; + + ----------------- -- COPULATIVES -- ----------------- From 8073d2a91b6fbb13bee00fae8d14567c06754f31 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Fri, 27 May 2022 09:33:05 +0200 Subject: [PATCH 126/141] (zul) change to Quant lincat --- src/zulu/CatZul.gf | 2 +- src/zulu/ExtraExtZul.gf | 8 +++++++- src/zulu/NounExtZul.gf | 10 +++++----- src/zulu/StructuralZul.gf | 17 +++++++++++++++-- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/zulu/CatZul.gf b/src/zulu/CatZul.gf index 9606929e6..bcc8d0c2c 100755 --- a/src/zulu/CatZul.gf +++ b/src/zulu/CatZul.gf @@ -121,7 +121,7 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] ** Num = { s: Str ; n : Number } ; -- Card = {s,sp : Bool => Case => Str ; n : Number} ; -- ACard = {s : Case => Str ; n : Number} ; - Quant = { s : Str ; dist : Distance } ; + Quant = { s : Bool => Agr => Str ; dist : Distance } ; -- Numeral diff --git a/src/zulu/ExtraExtZul.gf b/src/zulu/ExtraExtZul.gf index d88c38459..3360edb30 100755 --- a/src/zulu/ExtraExtZul.gf +++ b/src/zulu/ExtraExtZul.gf @@ -506,7 +506,13 @@ concrete ExtraExtZul of ExtraExt = it15_Pron = mkPron (Third C15 Sg) ; it17_Pron = mkPron (Third C17 Sg) ; - yonder_Quant = { s = [] ; dist = Dem3 } ; + yonder_Quant = { + s = \\b,a => case b of { + False => dem_pron!Dem3!a ; + True => dem_pron!Dem3!a ++ dem_pron_na!Dem3!a + } ; + dist = Dem3 + } ; at_which_IAdv np = { s = "nga" ++BIND++ atwhichPhiPref!np.agr ++BIND++ "phi" ++ (np.s!NFull) ; diff --git a/src/zulu/NounExtZul.gf b/src/zulu/NounExtZul.gf index bee7aee84..03e281758 100644 --- a/src/zulu/NounExtZul.gf +++ b/src/zulu/NounExtZul.gf @@ -19,15 +19,15 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param } ; DemPostdet q = { - s = \\a => dem_pron!q.dist!a ++ dem_pron_na!q.dist!a ++ q.s + s = \\a => q.s!True!a } ; QuantDemPostdet q d = { - s = \\a => q.s!a ++ dem_pron!d.dist!a ++ dem_pron_na!d.dist!a ++ d.s + s = \\a => q.s!a ++ d.s!True!a } ; DemQuantPostdet d q = { - s = \\a => dem_pron!d.dist!a ++ dem_pron_na!d.dist!a ++ q.s!a ++ d.s + s = \\a => d.s!True!a ++ q.s!a } ; DetNum n = n ; -- ** { spec = Spec } ; @@ -93,12 +93,12 @@ concrete NounExtZul of NounExt = CatZul,CatExtZul ** open ResZul, Prelude, Param } ; DemPredet q = { - s = \\a => dem_pron!q.dist!a ++ q.s ; + s = \\a => q.s!False!a ; hasDem = True } ; QuantDemPredet q d = { - s = \\a => q.s!a ++ dem_pron!d.dist!a ++ d.s ; + s = \\a => q.s!a ++ d.s!False!a ; hasDem = True } ; diff --git a/src/zulu/StructuralZul.gf b/src/zulu/StructuralZul.gf index ad0787c9a..690ff58d4 100755 --- a/src/zulu/StructuralZul.gf +++ b/src/zulu/StructuralZul.gf @@ -129,8 +129,21 @@ concrete StructuralZul of Structural = CatZul ** -- youPol_Pron = mkPron "you" "you" "your" "yours" singular P2 human ; -- Quant (we use this category for demonstratives only) - that_Quant = { s = [] ; dist = Dem2 } ; - this_Quant = { s = [] ; dist = Dem1 } ; + that_Quant = { + s = \\b,a => case b of { + False => dem_pron!Dem2!a ; + True => dem_pron_na!Dem2!a + } ; + dist = Dem2 + } ; + -- this_Quant = { s = [] ; dist = Dem1 } ; + this_Quant = { + s = \\b,a => case b of { + False => dem_pron!Dem1!a ; + True => dem_pron_na!Dem1!a + } ; + dist = Dem1 + } ; -- no_Quant = mkQuant "no" "no" "none" "none" ; -- Subj From 4c03a40aef6996c602f3bc7d70b32e40d41e2370 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Wed, 1 Jun 2022 13:23:51 +0200 Subject: [PATCH 127/141] (zul) fixed demonstratives --- src/zulu/ExtraExtZul.gf | 5 +---- src/zulu/ResZul.gf | 26 +++++++++++--------------- src/zulu/StructuralZul.gf | 7 ++----- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/zulu/ExtraExtZul.gf b/src/zulu/ExtraExtZul.gf index 3360edb30..35e68a0c4 100755 --- a/src/zulu/ExtraExtZul.gf +++ b/src/zulu/ExtraExtZul.gf @@ -507,10 +507,7 @@ concrete ExtraExtZul of ExtraExt = it17_Pron = mkPron (Third C17 Sg) ; yonder_Quant = { - s = \\b,a => case b of { - False => dem_pron!Dem3!a ; - True => dem_pron!Dem3!a ++ dem_pron_na!Dem3!a - } ; + s = \\b,a => dem_pron!Dem3!a ; dist = Dem3 } ; diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index ce43caa1e..8b33454e8 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -216,8 +216,7 @@ resource ResZul = open Prelude,Predef,ParamX in { } } ; - dem_pron_na : Distance => Agr => Str = table { - Dem1 => table { + dem_pron_na : Agr => Str = table { First Sg => BIND++"na" ; First Pl => [] ; Second Sg => BIND++"na" ; @@ -241,17 +240,6 @@ resource ResZul = open Prelude,Predef,ParamX in { Third C14 _ => [] ; Third C15 _ => [] ; Third C17 _ => [] - } ; - Dem2 => table { - First _ => [] ; - Second _ => [] ; - Third _ _ => [] - } ; - Dem3 => table { - First _ => [] ; - Second _ => [] ; - Third _ _ => [] - } } ; ----------- @@ -976,10 +964,14 @@ resource ResZul = open Prelude,Predef,ParamX in { case of { => case root of { + #vowel+_ => "um"+root ; _+#cons+#vowel+#cons+_+#vowel+_ => "um"+root ; _ => "umu"+root } ; -- umu for single syllables, um for the rest - => "aba"+root ; -- abe for tribes or guilds + => case root of { + #vowel+_ => "ab"+root ; + _ => "aba"+root -- abe for tribes or guilds + } ; => "u"+root ; => "o"+root ; => case root of { @@ -1024,10 +1016,14 @@ resource ResZul = open Prelude,Predef,ParamX in { case of { => case root of { + #vowel+_ => "kum"+root ; _+#cons+#vowel+#cons+_+#vowel+_ => "kum"+root ; _ => "kumu"+root } ; -- umu for single syllables, um for the rest - => "kuba"+root ; -- abe for tribes or guilds + => case root of { + #vowel+_ => "kub"+root ; + _ => "kuba"+root -- abe for tribes or guilds + } ; => "ku"+root ; => "ko"+root ; => case root of { diff --git a/src/zulu/StructuralZul.gf b/src/zulu/StructuralZul.gf index 690ff58d4..9d7674197 100755 --- a/src/zulu/StructuralZul.gf +++ b/src/zulu/StructuralZul.gf @@ -130,17 +130,14 @@ concrete StructuralZul of Structural = CatZul ** -- Quant (we use this category for demonstratives only) that_Quant = { - s = \\b,a => case b of { - False => dem_pron!Dem2!a ; - True => dem_pron_na!Dem2!a - } ; + s = \\b,a => dem_pron!Dem2!a ; dist = Dem2 } ; -- this_Quant = { s = [] ; dist = Dem1 } ; this_Quant = { s = \\b,a => case b of { False => dem_pron!Dem1!a ; - True => dem_pron_na!Dem1!a + True => dem_pron!Dem1!a ++ dem_pron_na!a } ; dist = Dem1 } ; From ddf6d0d30d33f7811cfca8c78e09b1f025d31015 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Wed, 1 Jun 2022 15:10:49 +0200 Subject: [PATCH 128/141] (zul) improvements to paradigms --- src/zulu/ResZul.gf | 45 ++++++++++++++++++++++++++++------ src/zulu/lexica/MultiLexZul.gf | 8 +++--- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 8b33454e8..3114117b8 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -57,6 +57,7 @@ resource ResZul = open Prelude,Predef,ParamX in { #nasal_m+x => "m"+r ; #nasal_ng+x => "ng"+r ; #nasal+x => r ; + "p"+x => "mp" + x ; _ => "n"+r } ; -------------- @@ -908,8 +909,14 @@ resource ResZul = open Prelude,Predef,ParamX in { } ; => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) - => "o"+root ; - => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh + => case root of { + (#vowel+_ | "w"+_) => "ol"+root ; + _ => "o"+root + } ; + => case root of { + (#vowel+_ | "w"+_) => "ezil" + root ; + _ => "ezi"+(prefix_nasal root) + } ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => case root of { "i"+_ => "eme"+root ; @@ -940,6 +947,8 @@ resource ResZul = open Prelude,Predef,ParamX in { _+"mu" => (tk 2 root) + "nyini" ; _+("a"|"e") => (init root)+"eni" ; _+"i" => (init root)+"ini" ; + _+"wu" => (init root)+"ini" ; + _+"wo" => (init root)+"eni" ; _+"o" => (init root)+"weni" ; _+"u" => (init root)+"wini" ; _ => (init root)+"ini" @@ -981,9 +990,13 @@ resource ResZul = open Prelude,Predef,ParamX in { _ => "umu"+root } ; -- umu for single syllables, um for the rest => "imi"+root ; - => "i"+root ; -- ili long form (not used?) + => case root of { + #vowel+_ => "il"+root ; + _ => "i"+root -- ili long form (not used?) + } ; => case root of { "i"+_ => "ame"+root ; + #vowel+_ => "am"+root ; _ => "ama"+root } ; -- ame for roots starting with i => case root of { @@ -996,8 +1009,14 @@ resource ResZul = open Prelude,Predef,ParamX in { } ; => "i" + prefix_nasal root ; => "izi" + prefix_nasal root ; - => "u"+root ; - => "izi" + prefix_nasal root ; + => case root of { + (#vowel+_ | "w"+_) => "ul"+root ; + _ => "u"+root + } ; + => case root of { + (#vowel+_ | "w"+_) => "izil"+root ; + _ => "izi" + prefix_nasal root + } ; => "i" + prefix_nasal root ; => case root of { "i"+_ => "ame"+root ; @@ -1031,9 +1050,13 @@ resource ResZul = open Prelude,Predef,ParamX in { _ => "em"+(addLocSuffix root) } ; => "emi"+(addLocSuffix root) ; - => "e"+(addLocSuffix root) ; -- ili long form (not used?) + => case root of { + #vowel+_ => "el"+(addLocSuffix root) ; + _ => "e"+(addLocSuffix root) -- ili long form (not used?) + } ; => case root of { "i"+_ => "eme"+(addLocSuffix root) ; + #vowel+_ => "em"+(addLocSuffix root) ; _ => "ema"+(addLocSuffix root) } ; -- ame for roots starting with i => case root of { @@ -1046,8 +1069,14 @@ resource ResZul = open Prelude,Predef,ParamX in { } ; => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) - => "o"+(addLocSuffix root) ; - => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh + => case root of { + (#vowel+_ | "w"+_) => "ol"+(addLocSuffix root) ; + _ => "o"+(addLocSuffix root) + } ; + => case root of { + (#vowel+_ | "w"+_) => "ezil"+(addLocSuffix root) ; + _ => "ezi"+(addLocSuffix (prefix_nasal root)) -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh + } ; => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => case root of { "i"+_ => "eme"+(addLocSuffix root) ; diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index 3e929bc17..553f79445 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -131,7 +131,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { chair_N = mkN "hlalo" C7_8 ; chairman_N = mkN "sihlalo" C1a_2a ; chauffeur_N = mkN "shayeli" C1_2 ; - cheese_N = mkN "shizi" C11_10 ; + cheese_N = mkN "shizi" C1a_2a ; cheetah_N = mkN "gulule" C9_10 ; chest_N = mkN "fuba" C7_8 ; chicken_N = mkN "nkukhu" C9_10 ; @@ -192,7 +192,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { electricity_N = mkN "gesi" C1a_2a ; employee_N = mkN "sebenzi" C7_8 ; employer_N = mkN "qashi" C1_2 ; - eye_N = mkN "ihlo" C5_6 ; + eye_N = mkN "hlo" C5_6 ; face_N = mkN "so" C14 ; family_N = mkN "ndeni" C3_4 ; farmer_N = mkN "limi" C1_2 ; @@ -479,7 +479,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { supper_N = mkN "dlakusihlwa" C9_10 ; surname_N = mkN "bongo" C7_8 ; sweater_N = mkN "jezi" C5_6 ; - sweet_N = mkN "Swidi" C5_6 ; + sweet_N = mkN "swidi" C5_6 ; sympathy_N = mkN "hawu" C7_8 ; table_N = mkN "tafula" C5_6 ; tablet_N = mkN "philisi" C5_6 ; @@ -549,7 +549,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { word_N = mkN "gama" C5_6 ; work_N = mkN "sebenzi" C3_4 ; world_N = mkN "hlaba" C3_4 ; - year_N = mkN "nyaka" C11_10 ; + year_N = mkN "nyaka" C3_4 ; youth_N = mkN "tsha" C9_10 ; zebra_N = mkN "dube" C5_6 ; From c4f39c0a7421c7f1161fadad4aef6be82181f49e Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 2 Jun 2022 08:51:28 +0300 Subject: [PATCH 129/141] (Est) Use Extend in AllEstAbs instead of Extra --- src/estonian/AllEstAbs.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/estonian/AllEstAbs.gf b/src/estonian/AllEstAbs.gf index b49593b2a..bc5ae3ccf 100644 --- a/src/estonian/AllEstAbs.gf +++ b/src/estonian/AllEstAbs.gf @@ -1,4 +1,4 @@ abstract AllEstAbs = Lang, - ExtraEstAbs + Extend ** {} ; From 3026b8b59a8918f9c01e243163a95206d9fdea96 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 2 Jun 2022 08:51:44 +0300 Subject: [PATCH 130/141] (Est) Add AdvVPSlash and VPSlashPrep --- src/estonian/VerbEst.gf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/estonian/VerbEst.gf b/src/estonian/VerbEst.gf index 2fa22f136..6abcfc16e 100644 --- a/src/estonian/VerbEst.gf +++ b/src/estonian/VerbEst.gf @@ -75,6 +75,10 @@ concrete VerbEst of Verb = CatEst ** open Prelude, ResEst in { AdvVP vp adv = insertAdv adv.s vp ; + AdvVPSlash vp adv = insertAdv adv.s vp ** vp ; + + VPSlashPrep vp prep = vp ** {c2 = prep} ; + AdVVP adv vp = insertAdv adv.s vp ; ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ; From d5e5edb02f7ee71035722829d7598c06cbf487c4 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 2 Jun 2022 08:52:42 +0300 Subject: [PATCH 131/141] (Est) Use correct verb form in PastPart(Agent)AP --- src/estonian/ExtendEst.gf | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index b8b2ebd40..80c660d0e 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -345,7 +345,7 @@ concrete ExtendEst of Extend = -- : VPSlash -> AP ; -- täna leitud PastPartAP vp = { - s = \\_,_ => vp2adv vp True (VIPass Past) ; + s = \\_,_ => vp2adv ; infl = Invariable } ; @@ -357,7 +357,8 @@ concrete ExtendEst of Extend = -- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm) PastPartAgentAP vp np = { - s = \\_,_ => appCompl True Pos by8agent_Prep np ++ vp2adv vp True (VIPass Past) ; + s = \\_,_ => appCompl True Pos by8agent_Prep np + ++ vp2adv ; infl = Invariable } ; @@ -385,17 +386,25 @@ concrete ExtendEst of Extend = -- calling infVP with the "default arguments": NPCase Nom, Pos, agrP3 Sg infVPdefault : VP -> InfForms -> Str = infVP (NPCase Nom) Pos (agrP3 Sg) ; - vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> - let vpforms : {fin,inf : Str} = case vif of { - VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here - _ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ; - in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut - ++ vp.adv -- paremini - ++ vp.p -- ära - ++ vpforms.fin -- tunda/tundes/tundmata/... - ++ vpforms.inf -- TODO is this necessary??? - ++ vp.ext ; + vp2adv = overload { + vp2adv : R.VP -> Bool -> VIForm -> Str = \vp,sentIsPos,vif -> + let vpforms : {fin,inf : Str} = case vif of { + VIInf if => applyInfFormsVP {stem=if ; suf="a"} vp ; --- this oper shouldn't be used if you want to use an InfForm but just trying to be robust here + _ => mkVPForms vp.v ! vif ! Simul ! Pos ! agrP3 Sg} ; + in vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ vpforms.fin -- tunda/tundes/tundmata/... + ++ vpforms.inf -- TODO is this necessary??? + ++ vp.ext ; + vp2adv : R.VP -> Bool -> VForm -> Str = \vp,sentIsPos,vf -> + vp.s2 ! sentIsPos ! Pos ! agrP3 Sg -- raamatut + ++ vp.adv -- paremini + ++ vp.p -- ära + ++ vp.v.s ! vf -- tuntud + ++ vp.ext + } ; --------------------------------- -- S - W From 8a87dc210c0b6f0ad0a76b56f5ae2fcc7cbbdffd Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 3 Jun 2022 15:26:05 +0300 Subject: [PATCH 132/141] (Est) Add linref for VPS --- src/estonian/ExtendEst.gf | 3 +++ src/estonian/ExtraEst.gf | 1 + 2 files changed, 4 insertions(+) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 80c660d0e..3149dc047 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -54,6 +54,9 @@ concrete ExtendEst of Extend = VPI2 = X.VPI ** {c2 : Compl} ; [VPI2] = X.ListVPI ** {c2 : Compl} ; + linref + VPS = X.linVPS (agrP3 Sg) ; + lin MkVPS = X.MkVPS ; BaseVPS = X.BaseVPS ; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 4fc96a0b5..0a2e905a8 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -46,6 +46,7 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if -> infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ; + linVPS : Agr -> {s : Agr => Str} -> Str = \agr,vps -> vps.s ! agr ; lincat VPS = { From 4a2a5561626e8e599338313545d223f38d2e8c98 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 3 Jun 2022 15:45:27 +0300 Subject: [PATCH 133/141] (Est) Add all case forms to result of GerundCN/NP --- src/estonian/ExtendEst.gf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 3149dc047..694e91dd8 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -301,8 +301,12 @@ concrete ExtendEst of Extend = GerundAdv vp = {s = infVPdefault vp InfDes} ; -- : VP -> CN -- publishing of the document (can get a determiner) - GerundCN vp = emptyCN ** {s = \\nf => infVPdefault vp InfMine} ; - + GerundCN vp = emptyCN ** { + s = \\nf => infVPdefault vp {stem = InfM ; suf = []} + ++ ine.s ! nf ; + } where { + ine : N = mkN "ine" "ise" "ist" "isesse" "iste" "isi" + } ; -- : VP -> NP -- publishing the document (by nature definite) GerundNP vp = MassNP (GerundCN vp) ; From 0502797cb0195f29ef310736ee2a1c41befa562e Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 7 Jun 2022 08:42:20 +0200 Subject: [PATCH 134/141] (zul) paradigms for vowel-init nouns --- src/zulu/ResZul.gf | 39 ++++++++++++++++++++++------------ src/zulu/lexica/MultiLexZul.gf | 2 +- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index 3114117b8..e41ecb987 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -890,13 +890,18 @@ resource ResZul = open Prelude,Predef,ParamX in { => "ku"+root ; => "ko"+root ; => case root of { - ("m"|"n")+_ => "e"+root ; + "m"+_ => "e"+root ; _ => "em"+root } ; => "emi"+root ; - => "e"+root ; -- ili long form (not used?) + => case root of { + "i"+_ => "e" + (last root) ; + #vowel+_ => "el" + root ; + _ => "e"+root -- ili long form (not used?) + } ; => case root of { - "i"+_ => "eme"+root ; + "i"+_ => "eme"+ (last root) ; + #vowel+_ => "em"+root ; _ => "ema"+root } ; -- ame for roots starting with i => case root of { @@ -910,11 +915,13 @@ resource ResZul = open Prelude,Predef,ParamX in { => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => "ezi"+(prefix_nasal root) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) => case root of { - (#vowel+_ | "w"+_) => "ol"+root ; + #vowel+_ => "olw" + root ; + "w"+_ => "ol"+root ; _ => "o"+root } ; => case root of { - (#vowel+_ | "w"+_) => "ezil" + root ; + #vowel+_ => "ezilw" + root ; + "w"+_ => "ezil" + root ; _ => "ezi"+(prefix_nasal root) } ; -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh => "e"+(prefix_nasal root) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) @@ -984,18 +991,19 @@ resource ResZul = open Prelude,Predef,ParamX in { => "u"+root ; => "o"+root ; => case root of { - ("m"|"n")+_+#vowel+#cons+_+#vowel+_ => "u"+root ; + "m"+_+#vowel+#cons+_+#vowel+_ => "u"+root ; _+(#cons|"y")+#vowel+#cons+_+#vowel+_ => "um"+root ; "o"+_ => "um"+root ; _ => "umu"+root } ; -- umu for single syllables, um for the rest => "imi"+root ; => case root of { + "i"+_ => root ; #vowel+_ => "il"+root ; _ => "i"+root -- ili long form (not used?) } ; => case root of { - "i"+_ => "ame"+root ; + "i"+_ => "ame"+(drop 1 root) ; #vowel+_ => "am"+root ; _ => "ama"+root } ; -- ame for roots starting with i @@ -1010,11 +1018,13 @@ resource ResZul = open Prelude,Predef,ParamX in { => "i" + prefix_nasal root ; => "izi" + prefix_nasal root ; => case root of { - (#vowel+_ | "w"+_) => "ul"+root ; + #vowel+_ => "ulw"+root ; + "w"+_ => "ul"+root ; _ => "u"+root } ; => case root of { - (#vowel+_ | "w"+_) => "izil"+root ; + #vowel+_ => "izilw"+root ; + "w"+_ => "izil"+root ; _ => "izi" + prefix_nasal root } ; => "i" + prefix_nasal root ; @@ -1046,16 +1056,17 @@ resource ResZul = open Prelude,Predef,ParamX in { => "ku"+root ; => "ko"+root ; => case root of { - ("m"|"n")+_ => "e"+(addLocSuffix root) ; + "m"+_ => "e"+(addLocSuffix root) ; _ => "em"+(addLocSuffix root) } ; => "emi"+(addLocSuffix root) ; => case root of { + "i"+_ => "e"+(addLocSuffix (drop 1 root)) ; #vowel+_ => "el"+(addLocSuffix root) ; _ => "e"+(addLocSuffix root) -- ili long form (not used?) } ; => case root of { - "i"+_ => "eme"+(addLocSuffix root) ; + "i"+_ => "eme"+(addLocSuffix (drop 1 root)) ; #vowel+_ => "em"+(addLocSuffix root) ; _ => "ema"+(addLocSuffix root) } ; -- ame for roots starting with i @@ -1070,11 +1081,13 @@ resource ResZul = open Prelude,Predef,ParamX in { => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) => "ezi"+(addLocSuffix (prefix_nasal root)) ; -- izim for labial, izin for alveolar (TODO: does this correctly split options?) => case root of { - (#vowel+_ | "w"+_) => "ol"+(addLocSuffix root) ; + #vowel+_ => "olw"+(addLocSuffix root) ; + "w"+_ => "ol"+(addLocSuffix root) ; _ => "o"+(addLocSuffix root) } ; => case root of { - (#vowel+_ | "w"+_) => "ezil"+(addLocSuffix root) ; + #vowel+_ => "ezilw"+(addLocSuffix root) ; + "w"+_ => "ezil"+(addLocSuffix root) ; _ => "ezi"+(addLocSuffix (prefix_nasal root)) -- izim for labial, izin for alveolar, izi(n|m)k for roots starting with kh } ; => "e"+(addLocSuffix (prefix_nasal root)) ; -- em for labial, en for alveolar (TODO: does this correctly split options?) diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index 553f79445..04aa7ecd1 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -192,7 +192,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { electricity_N = mkN "gesi" C1a_2a ; employee_N = mkN "sebenzi" C7_8 ; employer_N = mkN "qashi" C1_2 ; - eye_N = mkN "hlo" C5_6 ; + eye_N = mkN "ihlo" C5_6 ; face_N = mkN "so" C14 ; family_N = mkN "ndeni" C3_4 ; farmer_N = mkN "limi" C1_2 ; From 33ce9496067dd025f79745a200ca9a971b8747a6 Mon Sep 17 00:00:00 2001 From: Roman Suzi Date: Thu, 9 Jun 2022 19:53:47 +0300 Subject: [PATCH 135/141] Fix most_Predet in Finnish --- src/finnish/StructuralFin.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/finnish/StructuralFin.gf b/src/finnish/StructuralFin.gf index f0147f8fb..39aa1b2d9 100644 --- a/src/finnish/StructuralFin.gf +++ b/src/finnish/StructuralFin.gf @@ -62,7 +62,7 @@ concrete StructuralFin of Structural = CatFin ** less_CAdv = X.mkCAdv "vähemmän" "kuin" ; many_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "moni" "monia")) ; more_CAdv = X.mkCAdv "enemmän" "kuin" ; - most_Predet = {s = \\n,c => (nForms2N (dSuurin "useinta")).s ! NCase n (npform2case n c)} ; + most_Predet = {s = \\n,c => (nForms2N (dSuurin "usein")).s ! NCase n (npform2case n c)} ; much_Det = MorphoFin.mkDet Sg (snoun2nounBind (exceptNomN (mkN "paljo") "paljon")) ** {isNum = True} ; --Harmony not relevant, it's just a CommonNoun must_VV = mkVV (caseV genitive (mkV "täytyä")) ; no_Utt = ssp "INTERJ" "ei" ; From ef771d62fab6bb69601f6265cf4d488cf01d0797 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Fri, 10 Jun 2022 09:22:35 +0200 Subject: [PATCH 136/141] (zul) fixes to lexicon --- src/zulu/lexica/MultiLexZul.gf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/zulu/lexica/MultiLexZul.gf b/src/zulu/lexica/MultiLexZul.gf index 04aa7ecd1..16cf0c54a 100644 --- a/src/zulu/lexica/MultiLexZul.gf +++ b/src/zulu/lexica/MultiLexZul.gf @@ -66,7 +66,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { advantage_N = mkN "zuzo" C9_10 ; advertisement_N = mkN "aziso" C7_8 ; advice_N = mkN "eluleko" C7_8 ; - aeroplane_N = mkN "bhanoyi" C5_6 ; + aeroplane_N = mkN "bhanoyi" C9_6 ; aim_N = mkN "hloso" C9_10 ; air_N = mkN "moya" C3_4 ; ambassador_N = mkN "nxusa" C5_6 ; @@ -218,7 +218,7 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { frog_N = mkN "selesele" C5_6 ; frost_N = mkN "thwathwa" C7_8 ; fruit_N = mkN "thelo" C7_8 ; - girl_N = mkN "ntombazana" C5_6 ; + girl_N = mkN "ntombazana" C9_6 ; glasses_N = mkN "buko" C7_8 ; glass_N = mkN "gilazi" C9_10 ; goat_N = mkN "buzi" C9_10 ; @@ -782,8 +782,8 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { interrupt_V2 = mkV2 "phazamis" ; invite_V = mkV "mem" ; invite_V2 = mkV2 "mem" ; - iron_V = mkV "ayin" ; - iron_V2 = mkV2 "ayin" ; + iron_V = mkV "-ayin" ; + iron_V2 = mkV2 "-ayin" ; irritate_1_V = mkV "cunul" ; irritate_1_V2 = mkV2 "cunul" ; irritate_2_V = mkV "casul" ; @@ -848,8 +848,8 @@ concrete MultiLexZul of MultiLex = CatZul ** open ResZul,ParadigmsZul in { open_V2 = mkV2 "vul" ; oppress_V = mkV "cindezel" ; oppress_V2 = mkV2 "cindezel" ; - order_V = mkV "od" ; - order_V2 = mkV2 "od" ; + order_V = mkV "-od" ; + order_V2 = mkV2 "-od" ; pack_V = mkV "pakish" ; pack_V2 = mkV2 "pakish" ; paint_V = mkV "pend" ; From f2c1fede4f49ef559f0015d6c5f2ba19d07001f2 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Fri, 10 Jun 2022 09:24:19 +0200 Subject: [PATCH 137/141] (zul) new clause type --- src/zulu/CatExtZul.gf | 1 + src/zulu/abstract_ext/CatExt.gf | 1 + 2 files changed, 2 insertions(+) diff --git a/src/zulu/CatExtZul.gf b/src/zulu/CatExtZul.gf index d4a02deb4..be268c330 100755 --- a/src/zulu/CatExtZul.gf +++ b/src/zulu/CatExtZul.gf @@ -11,5 +11,6 @@ concrete CatExtZul of CatExt = open ResZul,Prelude,ParamX in { -- INAdv = { s : Str ; postIAdv : Bool } ; Postdet = { s : Agr => Str } ; + SubCl = { s : Polarity => BasicTense => Str } ; } diff --git a/src/zulu/abstract_ext/CatExt.gf b/src/zulu/abstract_ext/CatExt.gf index 7a0e043a9..fa73b8a2c 100755 --- a/src/zulu/abstract_ext/CatExt.gf +++ b/src/zulu/abstract_ext/CatExt.gf @@ -11,5 +11,6 @@ abstract CatExt = { -- INAdv ; -- which/-phi? Postdet ; + SubCl ; } From 41de2cc0218a1cdb1ea98b45a6524d5fde5f1d6b Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 14 Jun 2022 15:08:56 +0200 Subject: [PATCH 138/141] (zul) fix for relative agreement morpheme --- src/zulu/ResZul.gf | 58 ++++++++++++++++++++++-------------------- src/zulu/VerbExtZul.gf | 2 +- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/zulu/ResZul.gf b/src/zulu/ResZul.gf index e41ecb987..5d55ecc35 100755 --- a/src/zulu/ResZul.gf +++ b/src/zulu/ResZul.gf @@ -738,10 +738,12 @@ resource ResZul = open Prelude,Predef,ParamX in { } ; adjPref : Agr -> VForm -> Str = \agr,vform -> case vform of { - VFIndic RelCl Pos PresTense => case agr of { - (First Sg | Second Sg | Third C1_2 Sg | Third C1a_2a Sg | Third C3_4 Sg) => "m"++BIND ; - (First Pl | Second Pl | Third _ _) => [] - } ; + -- VFIndic RelCl Pos PresTense => case agr of { + -- -- (First Sg | Second Sg | Third C1_2 Sg | Third C1a_2a Sg | Third C3_4 Sg) => "m"++BIND ; + -- -- Third C3_4 Pl => "mi" ++BIND ; + -- -- (First Pl | Second Pl | Third _ _) => [] + -- relAdjPrefLookup!agr + -- } ; VFIndic _ _ _ => adjPrefLookup!agr!vform } ; @@ -1403,7 +1405,7 @@ resource ResZul = open Prelude,Predef,ParamX in { VFIndic _ _ PastTense => relCopConcBeLookup!a ; VFIndic _ _ RemPastTense => case a of { Third C5_6 Pl => [] ; -- relConcLookup!a!RA ; -- a + aye = aye - (First _ | Second _ | Third _ _ ) => shortRelConc!a ++BIND --++ subjConcLookup!a!SCRP + (First _ | Second _ | Third _ _ ) => shortRelConc!a --++ subjConcLookup!a!SCRP } } ; @@ -1521,29 +1523,29 @@ resource ResZul = open Prelude,Predef,ParamX in { shortRelConc : Agr => Str = table { - Third C1_2 Sg => "o" ; - Third C1_2 Pl => "a" ; - Third C1a_2a Sg => "o" ; - Third C1a_2a Pl => "a" ; - Third C3_4 Sg => "o" ; - Third C3_4 Pl => "e" ; - Third C5_6 Sg => "e" ; - Third C5_6 Pl => "a" ; - Third C7_8 Sg => "e" ; - Third C7_8 Pl => "e" ; - Third C9_10 Sg => "e" ; - Third C9_10 Pl => "e" ; - Third C11_10 Sg => "o" ; - Third C11_10 Pl => "e" ; - Third C9_6 Sg => "e" ; - Third C9_6 Pl => "a" ; - Third C14 _ => "o" ; - Third C15 _ => "o" ; - Third C17 _ => "o" ; - First Sg => "e" ; - First Pl => "e" ; - Second Sg => "o" ; - Second Pl => "e" + Third C1_2 Sg => "o" ++BIND ; + Third C1_2 Pl => "a" ++BIND ; + Third C1a_2a Sg => "o" ++BIND ; + Third C1a_2a Pl => "a" ++BIND ; + Third C3_4 Sg => "o" ++BIND ; + Third C3_4 Pl => "e" ++BIND ; + Third C5_6 Sg => "e" ++BIND ; + Third C5_6 Pl => "a" ++BIND ; + Third C7_8 Sg => "e" ++BIND ; + Third C7_8 Pl => "e" ++BIND ; + Third C9_10 Sg => "e" ++BIND ; + Third C9_10 Pl => "e" ++BIND ; + Third C11_10 Sg => "o" ++BIND ; + Third C11_10 Pl => "e" ++BIND ; + Third C9_6 Sg => "e" ++BIND ; + Third C9_6 Pl => "a" ++BIND ; + Third C14 _ => "o" ++BIND ; + Third C15 _ => "o" ++BIND ; + Third C17 _ => "o" ++BIND ; + First Sg => "e" ++BIND ; + First Pl => "e" ++BIND ; + Second Sg => "o" ++BIND ; + Second Pl => "e" ++BIND } ; -- POSSESSIVE ANTECEDENT AGREEMENT MORPHEME -- diff --git a/src/zulu/VerbExtZul.gf b/src/zulu/VerbExtZul.gf index 7cda3cb28..878be7146 100644 --- a/src/zulu/VerbExtZul.gf +++ b/src/zulu/VerbExtZul.gf @@ -14,7 +14,7 @@ concrete VerbExtZul of VerbExt = CatZul,CatExtZul ** open ResZul, Prelude, Param pcp ++ adjpref ++ cop_base ; RelCl => \\a,p,t,l => let vform = VFIndic RelCl p t ; - rcp = (relConcCop vform a RC) ; -- o- + rcp = shortRelConc!a ; -- o- pcp = ap_cop_pref vform a AdjType ; -- [] / -nge- / zoba / -be- / -benge- -waye- / -wayenge- adjpref = adjPref a vform ; -- m- cop_base = ap.s!(aformN a) -- khulu From e4a195a777afe516fb0a6c8f4a41eaacc3a3e874 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 29 Jun 2022 14:35:23 +0200 Subject: [PATCH 139/141] (Est) more API-friendly overloads for mkPrep --- src/estonian/ConstructionEst.gf | 2 +- src/estonian/ParadigmsEst.gf | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/estonian/ConstructionEst.gf b/src/estonian/ConstructionEst.gf index 748407435..d313eaaba 100644 --- a/src/estonian/ConstructionEst.gf +++ b/src/estonian/ConstructionEst.gf @@ -32,7 +32,7 @@ lin n_units_AP card cn a = mkAP (lin AdA (mkUtt (lin NP (mkNP (lin CN cn))))) (lin A a) ; {- - glass_of_CN np = mkCN (lin N2 (mkN2 (mkN "klaas") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "klaasitäis") (mkPrep partitive))) (lin NP np) ; + glass_of_CN np = mkCN (lin N2 (mkN2 (mkN "klaas") (casePrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "klaasitäis") (casePrep partitive))) (lin NP np) ; where_go_QCl np = mkQCl (lin IAdv (ss "kuhu")) (mkCl np (mkVP L.go_V)) ; diff --git a/src/estonian/ParadigmsEst.gf b/src/estonian/ParadigmsEst.gf index 45bffe7d7..a2ebf907f 100644 --- a/src/estonian/ParadigmsEst.gf +++ b/src/estonian/ParadigmsEst.gf @@ -83,6 +83,12 @@ oper postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "taga" casePrep : Case -> Prep ; -- just case, e.g. adessive + mkPrep : overload { + mkPrep : Str -> Prep ; -- API-friendly version of postGenPrep—many applications assume there is a `mkX : Str -> X' available for any X + mkPrep : Case -> Prep ; -- API-friendly version of casePrep + mkPrep : Case -> Str -> Prep ; -- API-friendly version of postPrep + } ; + --2 Conjunctions, adverbs @@ -311,19 +317,25 @@ oper infDa = InfDa ; infMa = InfMa ; infMast = InfMast ; infDes = InfDes ; infMas = InfMas ; infMaks = InfMaks ; infMata = InfMata ; infMine = InfMine ; - mkPrep : (isPre : Bool) -> Case -> Str -> Prep = \isPre,c,p -> lin Prep { + mkAdposition : (isPre : Bool) -> Case -> Str -> Prep = \isPre,c,p -> lin Prep { c = casep2npformp c ; s = p ; isPre = isPre } ; - prePrep : Case -> Str -> Prep = mkPrep True ; - postPrep : Case -> Str -> Prep = mkPrep False ; + prePrep : Case -> Str -> Prep = mkAdposition True ; + postPrep : Case -> Str -> Prep = mkAdposition False ; postGenPrep : Str -> Prep = postPrep genitive ; + mkPrep = overload { + mkPrep : Str -> Prep = postGenPrep ; + mkPrep : Case -> Prep = casePrep ; + mkPrep : Case -> Str -> Prep = postPrep ; + mkPrep : (isPre : Bool) -> Case -> Str -> Prep = mkAdposition + } ; -- The Prep's isPre field is used in a special (hacky) way in mkN3 and mkN2. -- Used to be able to match whether the Prep's case is Gen, but now several -- Preps use the genitive stem, so we need to check if it's actually genitive. - casePrep : Case -> Prep = \c -> mkPrep (isActuallyGenitive c) c [] ; + casePrep : Case -> Prep = \c -> mkAdposition (isActuallyGenitive c) c [] ; -- NPAcc is different, it's not formed from a Case(Plus) accPrep : Prep = lin Prep { From 1b5840c89dc46600c9a4f9f3a5bb4274dd91abfd Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 1 Jul 2022 08:35:37 +0200 Subject: [PATCH 140/141] (Est) Minor renaming/restructuring/cleanup --- src/estonian/ExtendEst.gf | 1 + src/estonian/ExtraEst.gf | 34 ++++++++++++++++++++-------------- src/estonian/ResEst.gf | 2 ++ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 694e91dd8..b8e74da81 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -56,6 +56,7 @@ concrete ExtendEst of Extend = linref VPS = X.linVPS (agrP3 Sg) ; + VPI = X.linVPI InfMa ; lin MkVPS = X.MkVPS ; diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 0a2e905a8..7d2044f39 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -28,10 +28,19 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** } ; lincat - VPI = {s : InfStem => Str} ; - [VPI] = {s1,s2 : InfStem => Str} ; - -- VPI = {s : Str} ; - -- [VPI] = {s1,s2 : Str} ; + VPI = LinVPI ; + [VPI] = LinListVPI ; + + oper + LinVPI : Type = {s : InfStem => Str} ; + LinListVPI : Type = {s1,s2 : InfStem => Str} ; + + linVPI : InfForms -> LinVPI -> Str = \inf,vpi -> vpi.s ! inf.stem ; + + -- Version that uses InfStem + infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if -> + infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ; + lin BaseVPI = twoTable InfStem ; ConsVPI = consrTable InfStem comma ; @@ -41,24 +50,21 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** ComplVPIVV vv vpi = insertObj (\\_,_,_ => vpi.s ! vv.vi.stem) (predV vv) ; - oper - -- Version that uses InfStem - infVPIF : NPForm -> Polarity -> Agr -> VP -> InfStem -> Str = \sc,pol,agr,vp,if -> - infVPAnt Simul sc pol agr vp {stem=if ; suf="a"} ; - - linVPS : Agr -> {s : Agr => Str} -> Str = \agr,vps -> vps.s ! agr ; - lincat - VPS = { + VPS = LinVPS ; + [VPS] = LinListVPS ; + oper + LinVPS : Type = { s : Agr => Str ; sc : NPForm ; --- can be different for diff parts } ; - - [VPS] = { + LinListVPS : Type = { s1,s2 : Agr => Str ; sc : NPForm ; --- take the first: minä osaan kutoa ja täytyy virkata } ; + linVPS : Agr -> {s : Agr => Str} -> Str = \agr,vps -> vps.s ! agr ; + lin BaseVPS x y = twoTable Agr x y ** {sc = x.sc} ; ConsVPS x y = consrTable Agr comma x y ** {sc = x.sc} ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index a6c2e9b3d..fd3a716c1 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -207,6 +207,8 @@ param Compl : Type = {s : Str ; c : NPFormPlus ; isPre : Bool} ; + emptyCompl : Compl = {s = "" ; c = case2npformp NPAcc ; isPre = False} ; + npfplus2compl : NPFormPlus -> Compl = \npf -> {s = [] ; c = npf ; isPre = False} ; appCompl : Bool -> Polarity -> Compl -> NPhrase -> Str = \isFin,b,co,np -> From d3de861e86b1071eb6797c82b25b07d6467b8f2a Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 8 Jul 2022 16:40:46 +0200 Subject: [PATCH 141/141] (Est) Add a variant of VPS constructor in ExtraEst produces more telegraphic language+different word order from PastPartAP --- src/estonian/ExtraEst.gf | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/estonian/ExtraEst.gf b/src/estonian/ExtraEst.gf index 7d2044f39..f78923f86 100644 --- a/src/estonian/ExtraEst.gf +++ b/src/estonian/ExtraEst.gf @@ -65,6 +65,26 @@ concrete ExtraEst of ExtraEstAbs = CatEst ** linVPS : Agr -> {s : Agr => Str} -> Str = \agr,vps -> vps.s ! agr ; + -- This internal oper isn't used in any of the RGL linearisations, but can be useful for application grammars + -- It produces a telegraphic style in past participle, 'võetud …' instead of 'on/oli võetud …'. + -- It differs from PastPartAP in word order, and it also takes polarity. + TelegraphicPastPartPassVPS : Pol -> ResEst.VP -> VPS = \p,vp -> + let sentIsPos : Bool = case p.p of { + Neg => False ; + Pos => True } ; + neg : Str = case p.p of { + Neg => "ei" ; + Pos => [] } ; + in lin VPS { + s = \\a => neg -- ei + ++ vp.v.s ! (PastPart Pass) -- võetud + ++ vp.s2 ! sentIsPos ! p.p ! a -- vereanalüüs + ++ vp.adv -- eile + ++ vp.p + ++ vp.ext ; + sc = vp.sc + }; + lin BaseVPS x y = twoTable Agr x y ** {sc = x.sc} ; ConsVPS x y = consrTable Agr comma x y ** {sc = x.sc} ;