(Som) Remove Impers_Prep and put it in PrepCombination

This commit is contained in:
Inari Listenmaa
2019-07-25 18:41:16 +03:00
parent 8c8612b7d7
commit e5aa8a6499
3 changed files with 43 additions and 53 deletions

View File

@@ -103,10 +103,10 @@ oper
mkPrep = overload { mkPrep = overload {
mkPrep : Str -> CatSom.Prep = \s -> 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=[]}) ; c2=noPrep ; sii,dhex,berri=[]}) ;
mkPrep : (x1,_,_,_,_,_,x7 : Str) -> CatSom.Prep = \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 g) ** { lin Prep ((ResSom.mkPrep a b c d e f) ** {
c2=noPrep ; sii,dhex,berri=[]}) ; c2=noPrep ; sii,dhex,berri=[]}) ;
mkPrep : Preposition -> CatSom.Prep = \p -> mkPrep : Preposition -> CatSom.Prep = \p ->
lin Prep ((prep p) ** {sii,dhex,berri=[]}) ; lin Prep ((prep p) ** {sii,dhex,berri=[]}) ;

View File

@@ -141,7 +141,6 @@ param
| Sg2_Prep | Sg2_Prep
| Pl1_Prep Inclusion | Pl1_Prep Inclusion
| Pl2_Prep | Pl2_Prep
| Impers_Prep
| Reflexive_Prep | Reflexive_Prep
| P3_Prep ; | P3_Prep ;
@@ -160,7 +159,6 @@ oper
agr2pagr : Agreement -> PrepAgr = \a -> case a of { agr2pagr : Agreement -> PrepAgr = \a -> case a of {
Sg1 => Sg1_Prep ; Sg1 => Sg1_Prep ;
Sg2 => Sg2_Prep ; Sg2 => Sg2_Prep ;
Impers => Impers_Prep ;
Pl1 i => Pl1_Prep i ; Pl1 i => Pl1_Prep i ;
Pl2 => Pl2_Prep ; Pl2 => Pl2_Prep ;
_ => P3_Prep _ => P3_Prep
@@ -196,7 +194,7 @@ param
Preposition = U | Ku | Ka | La | NoPrep ; Preposition = U | Ku | Ka | La | NoPrep ;
PrepCombination = Ugu | Uga | Ula | Kaga | Kula | Kala 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 ; | Single Preposition ;
oper oper
@@ -206,6 +204,7 @@ oper
<True,NoPrep,NoPrep> => Passive ; <True,NoPrep,NoPrep> => Passive ;
<True,Ku,NoPrep> => Lagu ; <True,Ku,NoPrep> => Lagu ;
<True,Ka,NoPrep> => Laga ; <True,Ka,NoPrep> => Laga ;
<True,U,NoPrep> => Loo ;
<True,p,_> => Single p ; -- TODO all combinations <True,p,_> => Single p ; -- TODO all combinations
<False,_,_> => case <x,y> of { <False,_,_> => case <x,y> of {
<U,U|Ku> => Ugu ; <U,U|Ku> => Ugu ;

View File

@@ -324,7 +324,7 @@ oper
Prep : Type = {s : PrepAgr => Str} ; 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 { s = table {
P3_Prep => ku ; P3_Prep => ku ;
Sg1_Prep => ii ; Sg1_Prep => ii ;
@@ -332,72 +332,63 @@ oper
Pl2_Prep => idiin ; Pl2_Prep => idiin ;
Pl1_Prep Excl => noo ; Pl1_Prep Excl => noo ;
Pl1_Prep Incl => "i" + noo ; Pl1_Prep Incl => "i" + noo ;
Reflexive_Prep => isku ; Reflexive_Prep => isku
Impers_Prep => loo
} }
} ; } ;
prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! p ** {c2 = p} ; prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! p ** {c2 = p} ;
prepTable : Preposition => Prep = table { prepTable : Preposition => Prep = table {
Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" "lagu" ; Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" ;
Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" "laga" ; Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" ;
La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" "lala" ; La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" ;
U => mkPrep "u" "ii" "kuu" "noo" "idiin" "is_u_???:TODO" "loo" ; U => mkPrep "u" "ii" "kuu" "noo" "idiin" "isu" ;
NoPrep => mkPrep [] "i" "ku" "na" "idin" "is" "la" _ => mkPrep [] "i" "ku" "na" "idin" "is"
} ; } ;
prepCombTable : PrepAgr => PrepCombination => Str = table { prepCombTable : PrepAgr => PrepCombination => Str = table {
Sg1_Prep => table { Sg1_Prep => table {
Ugu => "iigu" ; Uga => "iiga" ; Ugu => "iigu" ; Uga => "iiga" ; Ula => "iila" ;
Ula => "iila" ; Kaga => "igaga" ; Kaga => "igaga" ; Kula => "igula" ; Kala => "igala" ;
Kula => "igula" ; Kala => "igala" ; Passive => "la i" ; Loo => "la ii" ; Lala => "la ila" ;
Passive => "la i" ;
Lagu => "laygu" ; Laga => "layga" ; Lagu => "laygu" ; Laga => "layga" ;
Single p => (prepTable ! p).s ! Sg1_Prep } ; Single p => (prepTable ! p).s ! Sg1_Prep } ;
Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ; Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ; Ula => "kuula" ;
Ula => "kuula" ; Kaga => "kaaga" ; Kaga => "kaaga" ; Kula => "kugula" ; Kala => "kaala" ;
Kula => "kugula" ; Kala => "kaala" ; Passive => "lagu" ; Loo => "laguu" ; Lala => "lagula" ;
Passive => "lagu" ;
Lagu => "lagugu" ; Laga => "lagaa" ; Lagu => "lagugu" ; Laga => "lagaa" ;
Single p => (prepTable ! p).s ! Sg2_Prep } ; Single p => (prepTable ! p).s ! Sg2_Prep } ;
Pl1_Prep Excl => Pl1_Prep Excl =>
table { Ugu => "noogu" ; Uga => "nooga" ; table { Ugu => "noogu" ; Uga => "nooga" ; Ula => "noola" ;
Ula => "noola" ; Kaga => "nagaga" ; Kaga => "nagaga" ; Kula => "nagula" ; Kala => "nagala" ;
Kula => "nagula" ; Kala => "nagala" ; Passive => "nala" ; Loo => "???" ; Lala => "???" ;
Passive => "nala" ;
Lagu => "nalagu" ; Laga => "nalaga" ; Lagu => "nalagu" ; Laga => "nalaga" ;
Single p => (prepTable ! p).s ! Pl1_Prep Excl } ; Single p => (prepTable ! p).s ! Pl1_Prep Excl } ;
Pl1_Prep Incl => Pl1_Prep Incl =>
table { Ugu => "inoogu" ; Uga => "inooga" ; table { Ugu => "inoogu" ; Uga => "inooga" ; Ula => "inoola" ;
Ula => "inoola" ; Kaga => "inagaga" ; Kaga => "inagaga" ; Kula => "inagula" ; Kala => "inagala" ;
Kula => "inagula" ; Kala => "inagala" ; Passive => "inala" ; Loo => "???" ; Lala => "???" ;
Passive => "inala" ;
Lagu => "inalagu" ; Laga => "inalaga" ; Lagu => "inalagu" ; Laga => "inalaga" ;
Single p => (prepTable ! p).s ! Pl1_Prep Incl } ; Single p => (prepTable ! p).s ! Pl1_Prep Incl } ;
Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ; Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ; Ula => "idiinla" ;
Ula => "idiinla" ; Kaga => "idinkaga" ; Kaga => "idinkaga" ; Kula => "idinkula" ; Kala => "idinkala" ;
Kula => "idinkula" ; Kala => "idinkala" ; Passive => "laydin" ; Loo => "laydiin" ; Lala => "laydinla" ;
Passive => "laydin" ;
Lagu => "laydinku" ; Laga => "laydinka" ; Lagu => "laydinku" ; Laga => "laydinka" ;
Single p => (prepTable ! p).s ! Pl2_Prep } ; Single p => (prepTable ! p).s ! Pl2_Prep } ;
Impers_Prep => -- Impers_Prep => -- TODO: put these later into other tables
table { Ugu => "loogu" ; Uga => "looga" ; -- table { Ugu => "loogu" ; Uga => "looga" ;
Ula => "loola" ; Kaga => "lagaga" ; -- Ula => "loola" ; Kaga => "lagaga" ;
Kula => "lagula" ; Kala => "lagala" ; -- Kula => "lagula" ; Kala => "lagala" ;
Passive => "la" ; -- Passive => "la" ;
Lagu => "lagu" ; Laga => "laga" ; -- TODO check these two -- Lagu => "lagu" ; Laga => "laga" ; } ;
Single p => (prepTable ! p).s ! Impers_Prep } ;
Reflexive_Prep => -- TODO check every form Reflexive_Prep => -- TODO check every form
table { Ugu => "isugu" ; Uga => "isuga" ; table { Ugu => "isugu" ; Uga => "isuga" ; Ula => "isula" ;
Ula => "isula" ; Kaga => "iskaga" ; Kaga => "iskaga" ; Kula => "iskula" ; Kala => "iskala" ;
Kula => "iskula" ; Kala => "iskala" ; Passive => "lays" ; Loo => "???" ; Lala => "???" ;
Passive => "lays" ;
Lagu => "laysku" ; Laga => "layska" ; Lagu => "laysku" ; Laga => "layska" ;
Single p => (prepTable ! p).s ! Reflexive_Prep } ; Single p => (prepTable ! p).s ! Reflexive_Prep } ;
a => table { Ugu => "ugu" ; Uga => "uga" ; a => table { Ugu => "ugu" ; Uga => "uga" ; Ula => "ula" ;
Ula => "ula" ; Kaga => "kaga" ; Kaga => "kaga" ; Kula => "kula" ; Kala => "kala" ;
Kula => "kula" ; Kala => "kala" ; Passive => "la" ; Loo => "loo" ; Lala => "lala" ;
Passive => "la" ;
Lagu => "lagu" ; Laga => "laga" ; Lagu => "lagu" ; Laga => "laga" ;
Single p => (prepTable ! p).s ! a } Single p => (prepTable ! p).s ! a }
} ; } ;
@@ -776,10 +767,10 @@ oper
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ; subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ;
obj : {p1,p2 : Str} = obj : {p1,p2 : Str} =
let o : {p1,p2 : Str} = vp.comp ! subj.a ; let o : {p1,p2 : Str} = vp.comp ! subj.a ;
bind : Str = case <isP3 vp.obj2.a, vp.c2> of { bind : Str = case <vp.isPassive,vp.obj2.a, vp.c2, vp.pred> of {
<True,NoPrep> => [] ; <False,P3_Prep,NoPrep,NoPred> => [] ;
_ => BIND } ; _ => BIND } ;
in case p of { in case p of {
Pos => o ; Pos => o ;
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract
} ; } ;