From 1d159f155c09eae76c9083902be2e8e60a750688 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 21 Sep 2018 15:46:39 +0200 Subject: [PATCH] (Ara) VV and related functions --- src/arabic/CatAra.gf | 2 +- src/arabic/ParadigmsAra.gf | 8 ++++++-- src/arabic/PhraseAra.gf | 2 +- src/arabic/ResAra.gf | 15 ++++++++++----- src/arabic/StructuralAra.gf | 2 +- src/arabic/VerbAra.gf | 10 +++++++--- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/arabic/CatAra.gf b/src/arabic/CatAra.gf index aeebc2d50..786e70a29 100644 --- a/src/arabic/CatAra.gf +++ b/src/arabic/CatAra.gf @@ -84,7 +84,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { V2, V2A = ResAra.Verb ** {c2 : Str} ; V2V, V2S, V2Q = ResAra.Verb ** {c2 : Str} ; --- AR V3 = ResAra.Verb ** {c2, c3 : Str} ; - VV = ResAra.Verb ** {isAux : Bool} ; --- IL + VV = ResAra.Verb ** {c2 : Str ; isAux : Bool} ; --- IL -- VV = {s : VVForm => Str ; isAux : Bool} ; A = ResAra.Adj ; diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index c8aaf7594..e900e64b7 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -219,7 +219,10 @@ resource ParadigmsAra = open mkV0 : V -> V0 ; mkVS : V -> VS ; mkV2S : V -> Str -> V2S ; - mkVV : V -> VV ; + mkVV = overload { + mkVV : V -> VV = regVV ; + mkVV : V -> Str -> VV = c2VV + } ; mkV2V : V -> Str -> Str -> V2V ; mkVA : V -> VA ; mkV2A : V -> Str -> V2A ; @@ -514,7 +517,8 @@ resource ParadigmsAra = open mkVS v = v ** {lock_VS = <>} ; mkVQ v = v ** {lock_VQ = <>} ; - mkVV v = lin VV v ** {isAux = False} ; + regVV : V -> VV = \v -> lin VV v ** {isAux = False; c2 = []} ; + c2VV : V -> Str -> VV = \v,prep -> regVV v ** {c2 = prep} ; V0 : Type = V ; ---- V2S, V2V, V2Q, V2A : Type = V2 ; diff --git a/src/arabic/PhraseAra.gf b/src/arabic/PhraseAra.gf index 95d1d2995..11f994742 100644 --- a/src/arabic/PhraseAra.gf +++ b/src/arabic/PhraseAra.gf @@ -17,7 +17,7 @@ concrete PhraseAra of Phrase = CatAra ** open UttCN cn = {s = \\_ => cn.s ! Sg ! Def ! Nom} ; --IL UttNP np = {s = \\_ => np.s ! Nom} ; - UttVP vp = {s = \\_ => linVP vp} ; --IL + UttVP vp = {s = \\g => (compVP vp).s ! {g=g ; n=Sg} ! Nom} ; --IL UttS, UttAdv, UttIAdv = \s -> {s = \\_ => s.s} ; ---- OK? AR diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index c0c4ab793..eafea20ae 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1054,11 +1054,16 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> s2 : Str }; - linVP : VP -> Str = \vp -> --used for the first dummy implementation of ComplVV --IL - vp.s ! Per3 Masc Sg ! VPPerf ++ vp.s2 ++ - case vp.isPred of { - True => vp.pred.s ! {g=Masc ; n=Sg} ! Acc ; - False => vp.obj.s } ; + -- For complements of VV. + -- TODO: does verbal complement agree with the noun + compVP : VP -> Comp = \vp -> ---- IL + { s = table { + aagr@{g=g ; n=n} => \\c => + vp.s ! Per3 g n ! VPImpf Ind ---- IL guesswork + https://arabic.desert-sky.net/g_modals.html + ++ vp.s2 + ++ vp.pred.s ! aagr ! Acc + ++ vp.obj.s } + } ; predV : Verb -> VP = \v -> { s = \\pgn,vf => diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index 3982df417..c4692cbfd 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -50,7 +50,7 @@ concrete StructuralAra of Structural = CatAra ** -- more_CAdv = ss "مْري" ; most_Predet = mkPredet "أَكثَر" True ; much_Det = mkDet "الكَثِير مِنَ" Pl Const ; --- must_VV = { + must_VV = mkVV (v1 "وجب" a i) "أن" ; -- s = table VVForm [["بي هَثي تْ"] ; "مُست" ; ["هَد تْ"] ; -- ["هَد تْ"] ; ["هَثِنغ تْ"] ; "مُستنءت" ; ["هَدنءت تْ"]] ; ---- -- isAux = True diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index c57e9cc10..bd9bc8c3a 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -17,9 +17,13 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in { a = {pgn = Per3 Masc Sg ; isPron = False} } --FIXME (predV v) ;-} - -- First dummy implementation / IL 2018-09-06 - ComplVV v vp = insertStr (linVP vp) (predV v) ; --- + ComplVV vv vp = --- IL + predV vv ** { + s2 = vv.c2 ; -- add the preposition of the VV. TODO: do we need a separate field in the VP? + pred = compVP vp ; -- add VP complement in pred. TODO: what agreement features are needed? + isPred = False } ; {- Despite verb complement being in pred, it's not predicative. + Changing this to True causes PredVP to not include the verb. -} + -- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ; -- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; --