diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 11aa884d7..0b92dd4f1 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -353,10 +353,10 @@ resource ParadigmsAra = open \rootStr -> let { rbT = mkRoot3 rootStr ; - } in { - s = (v8sound rbT).s ; - lock_V = <> - }; + v8fun = case rbT.f of { + ("و"|"ي"|"ّ") => v8assimilated ; + _ => v8sound } + } in lin V (v8fun rbT) ; Preposition = Str ; @@ -562,6 +562,6 @@ formV : (root : Str) -> VerbForm -> V = \s,f -> case f of { } ; param VerbForm = - FormI | FormIII | FormIII | FormIV | FormV | FormVI | FormVIII ; + FormI | FormII | FormIII | FormIV | FormV | FormVI | FormVIII ; } ; diff --git a/src/arabic/PatternsAra.gf b/src/arabic/PatternsAra.gf index 611fd262a..5d0d5c86d 100644 --- a/src/arabic/PatternsAra.gf +++ b/src/arabic/PatternsAra.gf @@ -48,6 +48,7 @@ flags coding=utf8 ; eiftacal = { h = "إِ"; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; eufcil = { h = "أُ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; euftucil = { h = "أُ"; m1 = "ْتُ" ; m2 = "ِ" ; t = "" } ; + euttucil = euftucil ** { h = "تُّأُ" ; m1 = "" } ; ---- IL assimilated VIII afcul = { h = "َ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; faccalo = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "ْ" } ; facal = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "" } ; @@ -77,6 +78,8 @@ flags coding=utf8 ; ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ; ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ; + ttacal = ftacal ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII + ttacil = ftacil ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII fuccAl = { h = "" ; m1 = "ُ" ; m2 = "َّا" ; t = "" } ; fuccil = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ; fuccilo = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "ْ" } ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 409d2f76c..afd5aeb39 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -76,12 +76,11 @@ resource ResAra = PatternsAra ** open Prelude, Predef, ParamX in { -- takes a weak pattern and a triliteral root and makes -- a word, deducing which root consonant is weak - mkWeak : Pattern -> Str -> Str = \pat,root -> - let fcl = mkRoot3 root in - case root of { - _ + ("و"|"ي"|"ّ") => mkDefective pat fcl; - _ + ("و"|"ي") + _ => mkHollow pat fcl; - ("و"|"ي") + _ => mkAssimilated pat fcl + mkWeak : Pattern -> Root3 -> Str = \pat,fcl -> + case of { + <_,_,("و"|"ي"|"ّ")> => mkDefective pat fcl; + <_,("و"|"ي"),_> => mkHollow pat fcl; + <("و"|"ي"),_,_> => mkAssimilated pat fcl }; mkBilit : Pattern -> Root2 -> Str = \p,fcl -> @@ -95,7 +94,7 @@ resource ResAra = PatternsAra ** open Prelude, Predef, ParamX in { w@_ + "ف" + x@_ + "ع" + y@_ => let pat = { h = w ; m1 = x; m2 = ""; t = y} in case of { - 6 | 5 => mkWeak pat rS ; --3=> + 6 | 5 => mkWeak pat (mkRoot3 rS) ; --3=> 4 | 3 => mkBilit pat (mkRoot2 rS) ; --2=> _ => rS ---- AR error "expected 3--6" } @@ -431,8 +430,8 @@ patHol3 : Vowel => Pattern = fvc : Vowel => Pattern = table { u => fuc ; - i => fic ; - a => fac + i => fic ; + a => fac } ; @@ -545,22 +544,22 @@ patDef2 : Vowel => Pattern = v2sound : Root3 -> Verb = \qsm -> let { - qassam = mkStrong faccal qsm ; + qassam = mkStrong faccal qsm ; qussim = mkStrong fuccil qsm ; - qassim = mkStrong faccil qsm ; + qassim = mkStrong faccil qsm ; uqassim = "ُ" + qassim ; - uqassam = "ُ" + qassam ; + uqassam = "ُ" + qassam ; muqassam = "مُ" + qassam } in verb qassam qussim uqassim uqassam qassim muqassam; v2defective : Root3 -> Verb = \gny -> let { - ganna = mkDefective facca gny ; - gannay = mkStrong faccalo gny ; - gunni = mkDefective fucci gny ; - gunnu = mkDefective fuccu gny ; - gunniy = mkStrong fuccilo gny ; + ganna = mkDefective facca gny ; + gannay = mkStrong faccalo gny ; + gunni = mkDefective fucci gny ; + gunnu = mkDefective fuccu gny ; + gunniy = mkStrong fuccilo gny ; ganni = mkDefective facci gny; uganni = "ُ" + ganni; gannu = mkDefective faccu gny; @@ -644,6 +643,20 @@ v8sound : Root3 -> Verb = murtabaT = "م" + urtabaT } in verb eirtabaT eurtubiT artabiT urtabaT eirtabiT murtabaT; +v8assimilated : Root3 -> Verb = --- IL 8a1 + \wfq -> + let { + ttafiq = mkWeak ttacil wfq ; + ttafaq = mkWeak ttacal wfq ; + eittafaq = "إِ" + ttafaq ; + euttufiq = mkWeak euttucil wfq ; + attafiq = "َ" + ttafiq ; + uttafaq = "ُ" + ttafaq ; + eittafiq = "إِ" + ttafiq ; + muttafaq = "م" + uttafaq + } in verb eittafaq euttufiq attafiq uttafaq eittafiq muttafaq; + + patV1Perf : Vowel => Pattern = table { a => facal ; --katab