From a29a4132cf10554e763e0826dd2e0f972a922ad5 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 26 Nov 2018 17:03:31 +0100 Subject: [PATCH] (Ara) misc. small fixes/additions --- src/arabic/ParadigmsAra.gf | 20 ++++++++++++++------ src/arabic/ResAra.gf | 7 +++++-- src/arabic/VerbAra.gf | 6 ++++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index f3fdb6efe..b00c18448 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -50,6 +50,10 @@ resource ParadigmsAra = open masc : Gender ; fem : Gender ; + Number : Type ; + sg : Number ; + pl : Number ; + Species : Type ; hum : Species ; nohum : Species ; @@ -71,8 +75,8 @@ resource ParadigmsAra = open mkN : NTable -> Gender -> Species -> N ; -- loan words, irregular mkN : (root,sgPatt,brokenPlPatt : Str) -> Gender -> Species -> N ; -- broken plural mkN : N -> (attr : Str) -> N ; -- Compound noun with invariant attribute - mkN : N -> N -> N ; -- Compound noun where attribute inflects in state and case but not number - mkN : Number -> N -> N -> N ; -- Compound noun where attribute inflects in state, case and number + mkN : N -> N -> N ; -- Compound noun where attribute inflects in state and case. Attribute in singular. + mkN : Number -> N -> N -> N ; -- Compound noun where attribute inflects in state and case. Attribute's number specified by 1st arg. --- mkN : (root,sgPatt : Str) -> Gender -> Species -> N -- sound feminine plural --- = sdfN ; } ; @@ -102,7 +106,7 @@ resource ParadigmsAra = open mkPN : Str -> PN -- Fem Hum if ends with ة, otherwise Masc Hum = smartPN ; mkPN : N -> PN - = \n -> lin PN (n ** {s = \\c => n.s ! Sg ! Const ! Bare}) ; -- no idea /IL + = \n -> lin PN (n ** {s = \\c => n.s ! Sg ! Const ! c ++ n.s2 ! Sg ! Const ! c }) ; -- no idea /IL mkPN : Str -> Gender -> Species -> PN = mkFullPN ; } ; @@ -306,6 +310,10 @@ resource ParadigmsAra = open masc = ResAra.Masc ; fem = ResAra.Fem ; + Number = ResAra.Number ; + sg = ResAra.Sg ; + pl = ResAra.Pl ; + Species = ResAra.Species ; hum = ResAra.Hum ; nohum = ResAra.NoHum ; @@ -608,9 +616,9 @@ resource ParadigmsAra = open mascTbl = reg jadId judud ; femTbl = reg jadIda judud ; in { s = table { - APosit Masc n d c => mascTbl ! n ! d ! c ; - APosit Fem n d c => femTbl ! n ! d ! c ; - AComp d c => indeclN akbar ! d ! c } + APosit Masc n d c => rectifyHmz (mascTbl ! n ! d ! c) ; + APosit Fem n d c => rectifyHmz (femTbl ! n ! d ! c) ; + AComp d c => rectifyHmz (indeclN akbar ! d ! c) } } ; degrA : (posit,compar,plur : Str) -> A diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 95335fe81..e1699cf14 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1231,7 +1231,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> => Acc; => Gen; => Gen; - <_,Const> => Gen; + <_,Const> => Gen; -- not sure if this is an actual rule /IL _ => c }; @@ -1534,7 +1534,10 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> => verbalAgr np.a.pgn; _ => np.a.pgn }; - sc : Preposition = case o of {Subord => {s=[]; c=Acc} ; _ => vp.sc} ; + sc : Preposition = case o of { -- very unsure of this /IL + Subord => {s=[]; c=Acc} ; -- to prevent weird stuff with VVs + _ => case np.a.isPron of {True => noPrep; _ => vp.sc} + } ; subj = np.empty ++ sc.s ++ case vp.isPred of { False => (proDrop np).s ! sc.c ; -- prodrop if it's not predicative diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index c0e0b7e90..2fe248c3f 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -69,6 +69,12 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in { UseCopula = predV copula ; + -- : VP -> Prep -> VPSlash ; -- live in (it) + VPSlashPrep vp prep = vp ** { + c2 = prep ; + agrObj = \\_ => [] + } ; + AdvVP vp adv = insertStr adv.s vp ; AdVVP adv = insertStr adv.s ;