diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index 30d3675e6..a0dcfd821 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -330,7 +330,7 @@ flags wind_N = brkN "ريح" "فِعل" "فِعال" Fem NoHum; wing_N = brkN "جنح" "فَعال" "أَفعِلة" Masc NoHum ; worm_N = brkN "دود" "فُعلة" "فِيعان" Fem NoHum ; - year_N = sdfN "سن" "فَعة" Fem NoHum ; + year_N = mkN "سَنَة" "سَنَوَات" Fem NoHum ; blow_V = regV "يَنفُخ" ; breathe_V = dirV2 (v5 "نفس") ; diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 5645c7368..ba6473fda 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -159,7 +159,7 @@ resource ParadigmsAra = open = regV ; mkV : (root : Str) -> (perf,impf : Vowel) -> V -- verb form I ; vowel = a|i|u = v1 ; - mkV : (root : Str) -> VerbForm -> V -- FormI .. FormVIII (no VII) ; default vowels a u for I + mkV : (root : Str) -> VerbForm -> V -- FormI .. FormX (no VII, IX) ; default vowels a u for I = formV ; } ; @@ -195,6 +195,8 @@ resource ParadigmsAra = open v8 : Str -> V ; +-- Verb Form X 'istaf`ala + v10 : Str -> V ; --3 Two-place verbs @@ -536,7 +538,7 @@ resource ParadigmsAra = open mkVS v = v ** {lock_VS = <>} ; mkVQ v = v ** {lock_VQ = <>} ; - regVV : V -> VV = \v -> lin VV v ** {c2 = []} ; + regVV : V -> VV = \v -> lin VV v ** {c2 = "أَنْ"} ; c2VV : V -> Str -> VV = \v,prep -> regVV v ** {c2 = prep} ; V0 : Type = V ; @@ -557,8 +559,9 @@ resource ParadigmsAra = open mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; -smartN : Str -> N = \s -> case last s of { - "ة" => mkFullN (sndf s) Fem NoHum ; +smartN : Str -> N = \s -> case s of { + _ + "ة" => mkFullN (sndf s) Fem NoHum ; + _ + "ة" + #vow => mkFullN (sndf s) Fem NoHum ; _ => mkFullN (sndm s) Masc NoHum } ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 0d070d43e..0a977cf65 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -856,7 +856,9 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> \caSaA -> case caSaA of { lemma + ("ا"|"ى") => \\s,c => defArt s lemma + "ي" + dl ! s ! c ; - _ => \\s,c => defArt s caSaA + dl ! s ! c + lemma + "ة" => + \\s,c => defArt s (lemma + "ت") + dl ! s ! c ; + _ => \\s,c => defArt s caSaA + dl ! s ! c }; -- takes a singular word and gives the corresponding sound @@ -953,12 +955,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> Const => table { Nom => "َا"; - _ => "َي" + _ => "َيْ‎" }; _ => table { Nom => "َانِ"; - _ => "َينِ" + _ => "َيْنِ" } }; @@ -1189,6 +1191,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> isPred = False }; + predVSlash : Verb ** {c2 : Str} -> VPSlash = \v -> + predV v ** {c2 = v.c2} ; -- in verbal sentences, the verb agrees with the subject -- in Gender but not in number @@ -1198,8 +1202,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> _ => pgn }; - insertObj : NP -> VP -> VP = \np,vp -> vp ** - { obj = {s = np.s ! Acc ; a = np.a} }; + insertObj : NP -> VPSlash -> VP = \np,vp -> vp ** + { obj = {s = vp.obj.s ++ vp.c2 ++ np.s ! Acc ; a = np.a} }; insertPred : {s : AAgr => Case => Str} -> VP -> VP = \p,vp -> vp ** { pred = p; diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index 36ba135be..fb7ae0b12 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -20,7 +20,8 @@ concrete StructuralAra of Structural = CatAra ** -- but_PConj = ss "بُت" ; by8agent_Prep = ss "بِ" ; by8means_Prep = ss "بِ" ; --- can8know_VV, can_VV = { + can_VV = mkVV (mkV "طوع" FormX) ; +-- can8know_VV = { -- s = table VVForm [["بي َبلي تْ"] ; "عَن" ; "عُْلد" ; -- ["بّن َبلي تْ"] ; ["بِنغ َبلي تْ"] ; "عَنءت" ; "عُْلدنءت"] ; -- isAux = True @@ -50,7 +51,7 @@ concrete StructuralAra of Structural = CatAra ** -- more_CAdv = ss "مْري" ; most_Predet = mkPredet "أَكثَر" True ; much_Det = mkDet "الكَثِير مِنَ" Pl Const ; - must_VV = mkVV (v1 "وجب" a i) "أن" ; + must_VV = mkVV (v1 "وجب" a i) ; -- s = table VVForm [["بي هَثي تْ"] ; "مُست" ; ["هَد تْ"] ; -- ["هَد تْ"] ; ["هَثِنغ تْ"] ; "مُستنءت" ; ["هَدنءت تْ"]] ; ---- -- isAux = True diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index a70e875a4..9602b19b1 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -6,8 +6,8 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in { UseV = predV ; SlashVV vv vps = vps ** predV vv ; ----IL - SlashV2a v = predV v ** {c2 = v.c2}; - Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2}; + SlashV2a v = predVSlash v ; + Slash3V3 v np = insertObj np (predVSlash v) ** {c2 = v.c3}; ComplSlash vp np = insertObj np vp ; @@ -17,12 +17,12 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in { a = {pgn = Per3 Masc Sg ; isPron = False} } --FIXME (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. -} + ComplVV vv vp = let vvVP = predV vv in --- IL + vp ** { + s = \\pgn,vpf => vvVP.s ! pgn ! vpf + ++ vv.c2 -- أَنْ‎ + ++ vp.s ! pgn ! VPImpf Cnj + } ; -- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ; -- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;