diff --git a/src/somali/ParamSom.gf b/src/somali/ParamSom.gf index 531a3a35e..c64d5838b 100644 --- a/src/somali/ParamSom.gf +++ b/src/somali/ParamSom.gf @@ -261,6 +261,15 @@ oper Single _ => oneWay ! p1 ! p2 ; z => z } ; + combinePassive : Preposition -> PrepCombination = \p -> + case p of { + U => Loo ; + Ku => Lagu ; + Ka => Laga ; + La => Lala ; + _ => Passive + } ; + isPassive : {c2 : PrepCombination} -> Bool = \vp -> case vp.c2 of { Passive | Lagu | Laga | Loo | Lala => True ; diff --git a/src/somali/ResSom.gf b/src/somali/ResSom.gf index 32bb9d9cc..01b3a6464 100644 --- a/src/somali/ResSom.gf +++ b/src/somali/ResSom.gf @@ -769,11 +769,7 @@ oper passVP : VerbPhrase -> VerbPhrase = \vp -> vp ** { c2 = case vp.c2 of { - Single NoPrep => Passive ; - Single Ku => Lagu ; - Single Ka => Laga ; - Single U => Loo ; - Single La => Lala ; + Single p => combinePassive p ; _ => vp.c2 } } ; @@ -827,6 +823,7 @@ oper -- if free complement slots, introduce adv.np with insertComp Single NoPrep => insertCompLite (vp ** {c2 = Single adv.c2}) adv.np ** adv' ; Single p => insertCompLite (vp ** {c2 = combine p adv.c2}) adv.np ** adv' ; + Passive => insertCompLite (vp ** {c2 = combinePassive adv.c2}) adv.np ** adv' ; -- if complement slots are full, just insert strings. _ => vp ** adv'' diff --git a/src/somali/VerbSom.gf b/src/somali/VerbSom.gf index dc81f471e..ed0940118 100644 --- a/src/somali/VerbSom.gf +++ b/src/somali/VerbSom.gf @@ -121,10 +121,9 @@ lin AdVVPSlash adv vps = vps ** { adv = adv.s ++ vps.adv } ; -} -- : VP -> Prep -> VPSlash ; -- live in (it) - -- NB. We need possibly a MissingArg kind of solution here too - -- VPSlashPrep vp prep = vp ** - -- { c2 = case vp.c2 of { NoPrep => prep.prep ; - -- x => x }} ; + VPSlashPrep vp prep = + let adv = prepNP prep emptyNP + in insertAdv vp adv ;