diff --git a/src/arabic/ConstructionAra.gf b/src/arabic/ConstructionAra.gf index ac5716b5c..0ac489aaf 100644 --- a/src/arabic/ConstructionAra.gf +++ b/src/arabic/ConstructionAra.gf @@ -57,7 +57,7 @@ lin oper - amount_N : N = mkN "مِقْدَار" "مَقَادِير‎" masc nohum ; + amount_N : N = mkN "مِقْدَار" "مَقَادِير" masc nohum ; -- hack used in the name constructions toNP : Bool -> NP -> NP = \b -> if_then_else NP b R.emptyNP ; diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 490a503ca..5d1803797 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -159,7 +159,7 @@ resource ParadigmsAra = open idaafaA : N -> A -> A ; -- first argument will be in constructus but inflect in case, adjective in genitive, but inflect in gender, number and definiteness. e.g. غَيْرُ طَيِّبٍ - degrA : (posit,compar,plur : Str) -> A ; + degrA : (masc,fem,plur : Str) -> A ; -- adjective where masculine singular is also the comparative form. irregFemA : (masc : A) -> (fem : A) -> A ; -- adjective with irregular feminine. Takes two adjectives (masc. "regular" and fem. "regular") and puts them together. @@ -450,6 +450,7 @@ resource ParadigmsAra = open in case rootStr of { f@? + c@? + "ّ" => v1geminate (f+c+c) vPerf vImpf ; ? + #hamza + #weak => v1doubleweak root ; + #weak + ? + #weak => v1assimilated_defective root vPerf vImpf ; ? + ? + #weak => case vPerf of { i => v1defective_i root vImpf ; _ => v1defective_a root vImpf } ; @@ -462,9 +463,10 @@ resource ParadigmsAra = open root = mkRoot3 rootStr } in { s = - case root.l of { - #weak => (v2defective root).s; - _ => (v2sound root).s + case rootStr of { +-- #weak + ? + ? => + ? + ? + #weak => (v2defective root).s; + _ => (v2sound root).s }; lock_V = <> }; @@ -531,7 +533,7 @@ resource ParadigmsAra = open let { fcl = mkRoot3 rootStr ; verb : Verb = case rootStr of { - f@? + c@? + "ّ" => v8geminate (f+c+c) ; + f@? + c@? + "ّ" => v8geminate (f+c+c) ; #weak + ? + ? => v8assimilated fcl ; ? + #weak + ? => v8hollow fcl ; _ => v8sound fcl } @@ -669,8 +671,8 @@ resource ParadigmsAra = open AComp d c => rectifyHmz (indeclN akbar ! d ! c) } } ; - degrA : (posit,compar,plur : Str) -> A - = \posit,compar,plur -> lin A {s = clr posit compar plur} ; + degrA : (masc,fem,plur : Str) -> A + = \masc,fem,plur -> lin A {s = clr masc fem plur} ; idaafaA : N -> A -> A = \ghayr,tayyib -> tayyib ** { s = table { @@ -777,6 +779,12 @@ resource ParadigmsAra = open mkV2V = overload { mkV2V : V -> Str -> Str -> V2V = \v,p,q -> lin V2V (prepV3 v (mkPreposition p) (mkPreposition q) ** {sc = noPrep}) ; + mkV2V : V2 -> V2V = \v2 -> + lin V2V (v2 ** {c2 = v2.c2 ; c3,sc = noPrep}) ; + mkV2V : V2 -> Preposition -> V2V = \v2,p -> + lin V2V (v2 ** {c2 = v2.c2 ; c3 = p ; sc = noPrep}) ; + mkV2V : V2 -> Preposition -> Preposition -> V2V = \v2,p,q-> + lin V2V (v2 ** {c2 = v2.c2 ; c3 = p ; sc = q}) ; mkV2V : V -> Preposition -> Preposition -> V2V = \v,p,q -> lin V2V (prepV3 v p q ** {sc = noPrep}) ; mkV2V : VV -> Preposition -> V2V = \vv,p -> diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 63bffa5dd..b3953938f 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -622,17 +622,20 @@ v1defForms_perfA : Root3 -> Vowel -> DefForms = \rmy,vowImpf -> armi armu urma -- VImpf eirmi eirmu marmiy ; +v1defForms_perfI : Root3 -> Vowel -> DefForms = \bqy,vowImpf -> + let vforms_a = v1defForms_perfA bqy vowImpf ; + baqI = mkDefective facIl bqy ; + baqiy = mkDefective facil bqy ; + in table { 0 => baqI ; + 1 => baqiy ; + x => vforms_a ! x } ; + v1defective_a : Root3 -> Vowel -> Verb = \rmy,vowImpf -> let vforms = v1defForms_perfA rmy vowImpf in verbDef vforms vowImpf ; v1defective_i : Root3 -> Vowel -> Verb = \bqy,vowImpf -> -- IL (conjugation 1d4) - let vforms_a = v1defForms_perfA bqy vowImpf ; - baqI = mkDefective facIl bqy ; - baqiy = mkDefective facil bqy ; - vforms_i = table { 0 => baqI ; - 1 => baqiy ; - x => vforms_a ! x } ; + let vforms_i = v1defForms_perfI bqy vowImpf ; in verbDef vforms_i vowImpf ; v1doubleweak : Root3 -> Verb = \r'y -> @@ -647,6 +650,19 @@ v1doubleweak : Root3 -> Verb = \r'y -> x => vforms_doubleweak ! x } ; in verbDoubleDef vforms a ; -- sukun in suffixes is removed in verbDoubleDef +v1assimilated_defective : Root3 -> Vowel -> Vowel -> Verb = \root,vPerf,vImpf -> + let vffun = case vPerf of {i => v1defForms_perfI ; _ => v1defForms_perfA} ; + vforms_def : DefForms = vffun root vImpf ; + vforms_ass : DefForms = \\x => rmSukun (vffun (root ** {f = ""}) vImpf ! x) ; + vforms : DefForms = + table { 4 => vforms_ass ! 4 ; + 5 => vforms_ass ! 5 ; + 6 => vforms_ass ! 6 ; + 7 => vforms_ass ! 7 ; + 8 => vforms_ass ! 8 ; + 9 => vforms_ass ! 9 ; + x => vforms_def ! x } ; + in verbDef vforms vImpf ; patDef1 : Vowel => Pattern = table {