diff --git a/src/arabic/AdjectiveAra.gf b/src/arabic/AdjectiveAra.gf index b955246a2..49d300c3b 100644 --- a/src/arabic/AdjectiveAra.gf +++ b/src/arabic/AdjectiveAra.gf @@ -35,7 +35,7 @@ concrete AdjectiveAra of Adjective = CatAra ** open ResAra, Prelude in { -- } ; -- AdAP ada ap = { - s = \\sp,g,n,st,c => ada.s ++ ap.s ! sp ! g ! n ! st ! c + s = \\sp,g,n,st,c => ap.s ! sp ! g ! n ! st ! c ++ ada.s } ; UseA2 = PositA ; diff --git a/src/arabic/AdverbAra.gf b/src/arabic/AdverbAra.gf index 473175771..40bf7dab0 100644 --- a/src/arabic/AdverbAra.gf +++ b/src/arabic/AdverbAra.gf @@ -11,7 +11,7 @@ concrete AdverbAra of Adverb = CatAra ** open ResAra, Prelude in { -- s = cadv.s ++ a.s ! AAdv ++ "مِنْ" ++ s.s -- } ; - PrepNP prep np = {s = prep.s ++ bindIf prep.binds ++ np.s ! prep.c} ; + PrepNP prep np = {s = prep.s ++ bindIf (orB np.a.isPron prep.binds) ++ np.s ! prep.c} ; AdAdv ad av = cc2 av ad ; diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index ca5571cfb..241b0c94b 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -18,8 +18,7 @@ flags ask_V2Q = dirV2 (regV "يَسءَل") ; -- ask_V2Q = dirV2 (v1 "سءل" a a) ; baby_N = brkN "طفل" "فِعل" "أَفعَال" Masc Hum; --- bad_A = sndA "سوء" "فَيِّع" ; - bad_A = degrA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ; + bad_A = sndA "سوء" "فَيِّع" ; bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ; beautiful_A = sndA "جمل" "فَعِيل" ; become_VA = mkVA (v4 "صبح") ; diff --git a/src/arabic/MissingAra.gf b/src/arabic/MissingAra.gf index e714eb0e5..c8234cbae 100644 --- a/src/arabic/MissingAra.gf +++ b/src/arabic/MissingAra.gf @@ -4,7 +4,6 @@ resource MissingAra = open GrammarAra, Prelude in { oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ; oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ; oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ; -oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ; oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ; oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ; oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ; diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 505aad88d..8aa944c58 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -368,7 +368,6 @@ resource ParadigmsAra = open = mkAN ; mkN : N -> AP -> N = mkAPN - } ; attrN : Number -> N -> N -> N = \num,n1,n2 -> n1 ** { diff --git a/src/arabic/QuestionAra.gf b/src/arabic/QuestionAra.gf index 6e1212156..d2ce38cf5 100644 --- a/src/arabic/QuestionAra.gf +++ b/src/arabic/QuestionAra.gf @@ -63,26 +63,28 @@ concrete QuestionAra of Question = CatAra ** open ResAra, ParamX, Prelude, VerbA s = \\isPred,g,s,c => ip.s ! isPred ! g ! s ! c ++ adv.s ; } ; - -- : IDet -> IP - IdetIP idet = idet ** { - s = \\isPred => idet.s ; - a = { pgn = agrP3 NoHum Masc idet.n ; isPron = False } - } ; + AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ; - -- : IDet -> CN -> IP - IdetCN idet cn = { - s = \\isPred,g,s,c + -- : IDet -> IP + IdetIP idet = idet ** { + s = \\isPred => idet.s ; + a = { pgn = agrP3 NoHum Masc idet.n ; isPron = False } + } ; + + -- : IDet -> CN -> IP + IdetCN idet cn = { + s = \\isPred,g,s,c => idet.s ! cn.g ! s ! c ++ cn2str cn idet.n idet.d Gen ; - a = { pgn = agrP3 NoHum cn.g idet.n ; isPron = False } - } ; + a = { pgn = agrP3 NoHum cn.g idet.n ; isPron = False } + } ; -- : IQuant -> Num -> IDet - IdetQuant iquant num = { - s = \\g,s,c => + IdetQuant iquant num = { + s = \\g,s,c => let gend = detGender g num.n -- gender flips with some numbers in iquant.s ! s ! c ++ num.s ! gend ! s ! c ; - n = sizeToNumber num.n ; - d = Indef ---- TODO check - } ; + n = sizeToNumber num.n ; + d = Indef ---- TODO check + } ; } diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 5a5f244ca..f39acc207 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1049,8 +1049,8 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> -- determine the declension and gives the corresponding inf table brkPl : Str -> State => Case => Str = \word -> \\s,c => defArt s c (case word of { - lemma + "ِيّ" => fixShd word (decNisba ! s ! c) ; - lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ; + lemma + "ِيّ" => fixShd word (dec1sg ! s ! c) ; -- nisba + lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ; -- 2nd declension _ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ; lemma + (#hamza|#hamzaseat) => word + dec1sgNoDoubleAlif ! s ! c ; @@ -1170,16 +1170,6 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> _ => [] }; - --declension 2 (ends in yaa') - decNisba : State => Case => Str = \\s,c => - case of { - <_, Bare> => [] ; - => "اً" ; - => "ٍ" ; - <_, Acc> => "َ" ; - _ => [] - }; - --dual suffixes dl : State => Case => Str = table { diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index 7dc0d322f..749a25617 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -45,7 +45,7 @@ concrete StructuralAra of Structural = CatAra ** s = \\g,s,c => "كَمْ عَدَد" + caseTbl ! c ; n = Pl ; d = Def } ; -- IL - + how8much_IAdv = ss "كَمْ" ; if_Subj = mkSubj "إِذَا" Verbal ; in8front_Prep = mkPrep "مُقَابِلَ" ; i_Pron = ResAra.i_Pron ;