From e5aa8a64998293064b138d16b744eccde3ef3034 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 25 Jul 2019 18:41:16 +0300 Subject: [PATCH] (Som) Remove Impers_Prep and put it in PrepCombination --- src/somali/ParadigmsSom.gf | 6 +-- src/somali/ParamSom.gf | 5 +-- src/somali/ResSom.gf | 85 +++++++++++++++++--------------------- 3 files changed, 43 insertions(+), 53 deletions(-) diff --git a/src/somali/ParadigmsSom.gf b/src/somali/ParadigmsSom.gf index 1fb3be59..81e9fe00 100644 --- a/src/somali/ParadigmsSom.gf +++ b/src/somali/ParadigmsSom.gf @@ -103,10 +103,10 @@ oper mkPrep = overload { mkPrep : Str -> CatSom.Prep = \s -> - lin Prep ((ResSom.mkPrep s s s s s s s) ** { + lin Prep ((ResSom.mkPrep s s s s s s) ** { c2=noPrep ; sii,dhex,berri=[]}) ; - mkPrep : (x1,_,_,_,_,_,x7 : Str) -> CatSom.Prep = \a,b,c,d,e,f,g -> - lin Prep ((ResSom.mkPrep a b c d e f g) ** { + mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f -> + lin Prep ((ResSom.mkPrep a b c d e f) ** { c2=noPrep ; sii,dhex,berri=[]}) ; mkPrep : Preposition -> CatSom.Prep = \p -> lin Prep ((prep p) ** {sii,dhex,berri=[]}) ; diff --git a/src/somali/ParamSom.gf b/src/somali/ParamSom.gf index dda95ebe..fbf98ac5 100644 --- a/src/somali/ParamSom.gf +++ b/src/somali/ParamSom.gf @@ -141,7 +141,6 @@ param | Sg2_Prep | Pl1_Prep Inclusion | Pl2_Prep - | Impers_Prep | Reflexive_Prep | P3_Prep ; @@ -160,7 +159,6 @@ oper agr2pagr : Agreement -> PrepAgr = \a -> case a of { Sg1 => Sg1_Prep ; Sg2 => Sg2_Prep ; - Impers => Impers_Prep ; Pl1 i => Pl1_Prep i ; Pl2 => Pl2_Prep ; _ => P3_Prep @@ -196,7 +194,7 @@ param Preposition = U | Ku | Ka | La | NoPrep ; PrepCombination = Ugu | Uga | Ula | Kaga | Kula | Kala - | Passive | Lagu | Laga -- TODO all combinations with impersonal la + | Passive | Lagu | Laga | Loo | Lala -- TODO all combinations with impersonal la | Single Preposition ; oper @@ -206,6 +204,7 @@ oper => Passive ; => Lagu ; => Laga ; + => Loo ; => Single p ; -- TODO all combinations => case of { => Ugu ; diff --git a/src/somali/ResSom.gf b/src/somali/ResSom.gf index 9640e08b..1eddc59a 100644 --- a/src/somali/ResSom.gf +++ b/src/somali/ResSom.gf @@ -324,7 +324,7 @@ oper Prep : Type = {s : PrepAgr => Str} ; - mkPrep : (x1,_,_,_,_,_,x7 : Str) -> Prep = \ku,ii,kuu,noo,idiin,isku,loo -> { + mkPrep : (x1,_,_,_,_,x6 : Str) -> Prep = \ku,ii,kuu,noo,idiin,isku -> { s = table { P3_Prep => ku ; Sg1_Prep => ii ; @@ -332,72 +332,63 @@ oper Pl2_Prep => idiin ; Pl1_Prep Excl => noo ; Pl1_Prep Incl => "i" + noo ; - Reflexive_Prep => isku ; - Impers_Prep => loo + Reflexive_Prep => isku } } ; prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! p ** {c2 = p} ; prepTable : Preposition => Prep = table { - Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" "lagu" ; - Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" "laga" ; - La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" "lala" ; - U => mkPrep "u" "ii" "kuu" "noo" "idiin" "is_u_???:TODO" "loo" ; - NoPrep => mkPrep [] "i" "ku" "na" "idin" "is" "la" + Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" ; + Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" ; + La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" ; + U => mkPrep "u" "ii" "kuu" "noo" "idiin" "isu" ; + _ => mkPrep [] "i" "ku" "na" "idin" "is" } ; prepCombTable : PrepAgr => PrepCombination => Str = table { Sg1_Prep => table { - Ugu => "iigu" ; Uga => "iiga" ; - Ula => "iila" ; Kaga => "igaga" ; - Kula => "igula" ; Kala => "igala" ; - Passive => "la i" ; + Ugu => "iigu" ; Uga => "iiga" ; Ula => "iila" ; + Kaga => "igaga" ; Kula => "igula" ; Kala => "igala" ; + Passive => "la i" ; Loo => "la ii" ; Lala => "la ila" ; Lagu => "laygu" ; Laga => "layga" ; Single p => (prepTable ! p).s ! Sg1_Prep } ; - Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ; - Ula => "kuula" ; Kaga => "kaaga" ; - Kula => "kugula" ; Kala => "kaala" ; - Passive => "lagu" ; + Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ; Ula => "kuula" ; + Kaga => "kaaga" ; Kula => "kugula" ; Kala => "kaala" ; + Passive => "lagu" ; Loo => "laguu" ; Lala => "lagula" ; Lagu => "lagugu" ; Laga => "lagaa" ; Single p => (prepTable ! p).s ! Sg2_Prep } ; Pl1_Prep Excl => - table { Ugu => "noogu" ; Uga => "nooga" ; - Ula => "noola" ; Kaga => "nagaga" ; - Kula => "nagula" ; Kala => "nagala" ; - Passive => "nala" ; + table { Ugu => "noogu" ; Uga => "nooga" ; Ula => "noola" ; + Kaga => "nagaga" ; Kula => "nagula" ; Kala => "nagala" ; + Passive => "nala" ; Loo => "???" ; Lala => "???" ; Lagu => "nalagu" ; Laga => "nalaga" ; Single p => (prepTable ! p).s ! Pl1_Prep Excl } ; Pl1_Prep Incl => - table { Ugu => "inoogu" ; Uga => "inooga" ; - Ula => "inoola" ; Kaga => "inagaga" ; - Kula => "inagula" ; Kala => "inagala" ; - Passive => "inala" ; + table { Ugu => "inoogu" ; Uga => "inooga" ; Ula => "inoola" ; + Kaga => "inagaga" ; Kula => "inagula" ; Kala => "inagala" ; + Passive => "inala" ; Loo => "???" ; Lala => "???" ; Lagu => "inalagu" ; Laga => "inalaga" ; Single p => (prepTable ! p).s ! Pl1_Prep Incl } ; - Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ; - Ula => "idiinla" ; Kaga => "idinkaga" ; - Kula => "idinkula" ; Kala => "idinkala" ; - Passive => "laydin" ; + Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ; Ula => "idiinla" ; + Kaga => "idinkaga" ; Kula => "idinkula" ; Kala => "idinkala" ; + Passive => "laydin" ; Loo => "laydiin" ; Lala => "laydinla" ; Lagu => "laydinku" ; Laga => "laydinka" ; Single p => (prepTable ! p).s ! Pl2_Prep } ; - Impers_Prep => - table { Ugu => "loogu" ; Uga => "looga" ; - Ula => "loola" ; Kaga => "lagaga" ; - Kula => "lagula" ; Kala => "lagala" ; - Passive => "la" ; - Lagu => "lagu" ; Laga => "laga" ; -- TODO check these two - Single p => (prepTable ! p).s ! Impers_Prep } ; + -- Impers_Prep => -- TODO: put these later into other tables + -- table { Ugu => "loogu" ; Uga => "looga" ; + -- Ula => "loola" ; Kaga => "lagaga" ; + -- Kula => "lagula" ; Kala => "lagala" ; + -- Passive => "la" ; + -- Lagu => "lagu" ; Laga => "laga" ; } ; Reflexive_Prep => -- TODO check every form - table { Ugu => "isugu" ; Uga => "isuga" ; - Ula => "isula" ; Kaga => "iskaga" ; - Kula => "iskula" ; Kala => "iskala" ; - Passive => "lays" ; + table { Ugu => "isugu" ; Uga => "isuga" ; Ula => "isula" ; + Kaga => "iskaga" ; Kula => "iskula" ; Kala => "iskala" ; + Passive => "lays" ; Loo => "???" ; Lala => "???" ; Lagu => "laysku" ; Laga => "layska" ; Single p => (prepTable ! p).s ! Reflexive_Prep } ; - a => table { Ugu => "ugu" ; Uga => "uga" ; - Ula => "ula" ; Kaga => "kaga" ; - Kula => "kula" ; Kala => "kala" ; - Passive => "la" ; + a => table { Ugu => "ugu" ; Uga => "uga" ; Ula => "ula" ; + Kaga => "kaga" ; Kula => "kula" ; Kala => "kala" ; + Passive => "la" ; Loo => "loo" ; Lala => "lala" ; Lagu => "lagu" ; Laga => "laga" ; Single p => (prepTable ! p).s ! a } } ; @@ -776,10 +767,10 @@ oper subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ; obj : {p1,p2 : Str} = let o : {p1,p2 : Str} = vp.comp ! subj.a ; - bind : Str = case of { - => [] ; - _ => BIND } ; - in case p of { + bind : Str = case of { + => [] ; + _ => BIND } ; + in case p of { Pos => o ; Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract } ;