From 02d3752a26b941475341187d1159743219de78af Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Thu, 19 May 2022 12:19:49 +0200 Subject: [PATCH 01/11] (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 02/11] (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 03/11] (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 04/11] (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 05/11] (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 06/11] (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 07/11] (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 0502797cb0195f29ef310736ee2a1c41befa562e Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Tue, 7 Jun 2022 08:42:20 +0200 Subject: [PATCH 08/11] (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 ef771d62fab6bb69601f6265cf4d488cf01d0797 Mon Sep 17 00:00:00 2001 From: Laurette Marais Date: Fri, 10 Jun 2022 09:22:35 +0200 Subject: [PATCH 09/11] (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 10/11] (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 11/11] (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