diff --git a/src/arabic/CatAra.gf b/src/arabic/CatAra.gf index 9879772ad..2fda445fb 100644 --- a/src/arabic/CatAra.gf +++ b/src/arabic/CatAra.gf @@ -13,7 +13,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { SSlash, S = {s : Str} ; QS = {s : QForm => Str} ; - RS = {s : Agr => Case => Str} ; + RS = {s : Agr => Case => Str} ; -- case because the relative pronoun inflects in case -- Sentence @@ -79,7 +79,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { V, VS, VQ, VA = ResAra.Verb ; -- = {s : VForm => Str} ; V2, V2A = ResAra.Verb2 ; - VV, V2S, V2Q = ResAra.Verb2 ; + VV = ResAra.Verb2 ** {sc : Preposition} ; + V2S, V2Q = ResAra.Verb2 ; V2V, V3 = ResAra.Verb3 ; A = ResAra.Adj ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 48ce88338..15309d1e9 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1363,6 +1363,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> VP : Type = { s : PerGenNum => VPForm => Str ; + sc : Preposition ; -- subject case: e.g. يُمْكِنُ *لِ*Xِ obj : Obj; pred : Comp; isPred : Bool; --indicates if there is a predicate (xabar) @@ -1382,6 +1383,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> VPImpf m => v.s ! (VImpf m Act pgn); VPImp => v.s ! (VImp gn.g gn.n) }; + sc = noPrep ; obj = emptyObj ; s2 = []; pred = {s = \\_,_ => []} ; @@ -1431,7 +1433,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> subj = np.empty ++ case of { => [] ; -- prodrop if it's not predicative - _ => np.s ! Nom + _ => vp.sc.s ++ np.s ! vp.sc.c } ; } in diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index 57cc1719e..6fe7c3359 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -22,7 +22,8 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in { s = \\pgn,vpf => vvVP.s ! pgn ! vpf ++ vv.c2.s -- أَنْ ++ vp.s ! pgn ! VPImpf Cnj ; - isPred = False + isPred = False ; + sc = vv.sc } ; -- : VS -> S -> VP ; -- say that she runs