diff --git a/src/arabic/MissingAra.gf b/src/arabic/MissingAra.gf index 774055f83..b1981f58e 100644 --- a/src/arabic/MissingAra.gf +++ b/src/arabic/MissingAra.gf @@ -23,7 +23,6 @@ oper ReflA2 : A2 -> AP = notYet "ReflA2" ; oper ReflVP : VPSlash -> VP = notYet "ReflVP" ; oper SentCN : CN -> SC -> CN = notYet "SentCN" ; oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ; -oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ; oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ; oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ; oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index e4b8b20df..dabae5313 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1721,8 +1721,9 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> insertObj : NP -> VPSlash -> VP = \np,vp -> vp ** { obj = {s = vp.obj.s -- old object, if there was one ++ bindIfPron np vp -- new object, bind if pronoun and not pred - ++ vp.agrObj ! np.a.pgn ; -- only used for SlashV2V - a = agrLite np.a} + ++ vp.agrObj ! np.a.pgn ; -- only used for SlashV2V and Slash3V3 + a = agrLite np.a} ; + agrObj = \\_ => [] } ; bindIf : Bool -> Str = \b -> if_then_Str b BIND [] ; diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index 0f36da2a0..59ed6b4f5 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -35,7 +35,22 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in { } ; SlashV2a = slashV2 ; - Slash3V3 v np = insertObj np (slashV2 v) ** {c2 = v.c3 ; agrObj = \\_ => []}; + Slash2V3 v np = insertObj np (slashV2 v) ** {c2 = v.c3 ; agrObj = \\_ => []}; + + Slash3V3 v np = + let vp = slashV2 v ** {c2 = + v.c2 ** { + s = case np.a.isPron of { + True => case v.c2.binds of { + True => v.c2.s ; -- to make sure there's something for the object to attach to + False => v.c2.s ++ "إِيَّا" } ; -- see https://en.wiktionary.org/wiki/%D8%A5%D9%8A%D8%A7#Particle /IL + False => v.c2.s } + } + } + in vp ** { + c2 = v.c3 ; + agrObj = \\_ => bindIfPron np vp -- will be emptied when insertObj is called /IL + } ; ComplSlash vp np = insertObj np vp ;