diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 2300521f4..eb81ad02c 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -168,6 +168,8 @@ resource ParadigmsAra = open mkAdA : Str -> AdA ; + mkInterj : Str -> Interj ; + --2 Prepositions -- -- A preposition as used for rection in the lexicon, as well as to @@ -467,7 +469,10 @@ resource ParadigmsAra = open rbT = mkRoot3 rootStr ; v8fun = case rbT.f of { ("و"|"ي"|"ّ") => v8assimilated ; - _ => v8sound } + _ => + case rbT.c of { + #weak => v8hollow ; + _ => v8sound }} } in lin V (v8fun rbT) ; v10 = @@ -638,7 +643,7 @@ resource ParadigmsAra = open mkAdv x = lin Adv (ss x) ; mkAdV x = lin AdV (ss x) ; mkAdA x = lin AdA (ss x) ; - + mkInterj x = lin Interj (ss x) ; dirV2 v = prepV2 v (casePrep acc) ; diff --git a/src/arabic/PatternsAra.gf b/src/arabic/PatternsAra.gf index 1390d67a8..23175098b 100644 --- a/src/arabic/PatternsAra.gf +++ b/src/arabic/PatternsAra.gf @@ -77,6 +77,9 @@ flags coding=utf8 ; ficAl = { h = "" ; m1 = "ِ" ; m2 = "َا" ; t = "" } ; ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ; ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; + ftical = ftacal ** { m1 = "ْتِ" } ; -- IL hollow VIII + ftAcal = ftacal ** { m1 = "ْتَا" } ; -- IL hollow VIII + ftIcal = ftacal ** { m1 = "ْتِي" } ; -- IL hollow VIII ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ; ttacal = ftacal ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII ttacil = ftacil ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII diff --git a/src/arabic/PhraseAra.gf b/src/arabic/PhraseAra.gf index 78c8f947a..9bc36fa60 100644 --- a/src/arabic/PhraseAra.gf +++ b/src/arabic/PhraseAra.gf @@ -10,6 +10,7 @@ concrete PhraseAra of Phrase = CatAra ** open UttQS qs = {s = \\g => qs.s ! QDir} ; UttImpSg pol imp = {s = \\g => imp.s ! pol.p ! g ! ResAra.Sg ++ pol.s} ; UttImpPl,UttImpPol = \pol,imp -> {s = \\g => imp.s ! pol.p ! g ! ResAra.Pl ++ pol.s} ; + UttInterj i = {s = \\g => i.s} ; UttIP ip = {s = \\g => ip.s ! False ! g ! Def ! Nom} ; --IL UttAP ap = {s = ResAra.uttAP ap} ; --IL diff --git a/src/arabic/QuestionAra.gf b/src/arabic/QuestionAra.gf index 9df2234ae..c967f261c 100644 --- a/src/arabic/QuestionAra.gf +++ b/src/arabic/QuestionAra.gf @@ -28,7 +28,7 @@ concrete QuestionAra of Question = CatAra ** open ResAra, ParamX, Prelude, VerbA ---- IL guessed -- : IComp -> NP -> QCl QuestIComp ic np = - let vp = kaan (CompNP np) ; + let vp = UseComp (CompNP np) ; ip : ResAra.IP = np ** { -- NP's s is already present in VP, we only want its agr s = \\_,_,_,_ => ic.s ! pgn2gn np.a.pgn } ; in QuestVP ip vp ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 28b725918..48ce88338 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -569,8 +569,15 @@ v1defective_i : Root3 -> Vowel -> Verb = \bqy,vowImpf -> -- IL (conjugation 1d4) v1doubleweak : Root3 -> Verb = \r'y -> let ry = r'y ** {c = ""} ; - vforms : DefForms = \\x => rmSukun (v1DefForms_perfA ry a ! x) ; -- only remove the first sukun - in verbDoubleDef vforms i ; -- sukun in suffixes is removed in verbDoubleDef + vforms_doubleweak : DefForms = \\x => rmSukun (v1DefForms_perfA ry a ! x) ; -- only remove the first sukun + vforms_weak : DefForms = v1DefForms_perfA r'y a ; + vforms = table { 0 => vforms_weak ! 0 ; -- all perfect forms + 1 => vforms_weak ! 1 ; + 2 => vforms_weak ! 2 ; + 3 => vforms_weak ! 3 ; + 4 => vforms_weak ! 4 ; + x => vforms_doubleweak ! x } ; + in verbDoubleDef vforms a ; -- sukun in suffixes is removed in verbDoubleDef patDef1 : Vowel => Pattern = @@ -708,6 +715,28 @@ v8assimilated : Root3 -> Verb = --- IL 8a1 muttafaq = "م" + uttafaq } in verb eittafaq euttufiq attafiq uttafaq eittafiq muttafaq; +v8hollow : Root3 -> Verb = -- IL + \Hwj -> + let { + _Htaj = mkHollow ftacal Hwj ; + _HtAj = mkHollow ftAcal Hwj ; + _Htij = mkHollow ftical Hwj ; + _HtIj = mkHollow ftIcal Hwj ; + iHtaj = "اِ" + _Htaj ; -- VPerf Act (Per3 Fem Pl) + iHtAj = "اِ" + _HtAj ; -- VPerf Act _ + uHtij = "اُ" + _Htij ; -- VPerf Pas (Per3 Fem Pl) + uHtIj = "اُ" + _HtIj ; -- VPerf Pas _ + aHtaj = "َ" + _Htaj ; -- VImpf Act (Per2/Per3 Fem Pl) + aHtAj = "َ" + _HtAj ; -- VImpf Act _ + uHtaj = "ُ" + _Htaj ; -- VImpf Pas (Per2/Per3 Fem Pl) + uHtAj = "ُ" + _Htaj ; -- VImpf Pas _ + -- iHtaj again -- VImp Sg Masc / Pl Fem + -- iHtAj again -- VImp Pl Masc / Sg Fem + ppart = "مُ" + _HtAj -- PPart + + } in verbHollow (toDefForms + iHtAj iHtaj uHtIj uHtij aHtAj aHtaj + uHtAj uHtaj iHtAj iHtaj ppart) ; v10sound : Root3 -> Verb = ---- IL 10s -- to be checked \qtl -> let {