diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 63ca7065..108f09bf 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -47,7 +47,14 @@ lin UsePron p = p ; - DetNP det = emptyNP ** {s = det.s ! NoHum ! Masc} ; ---- + DetNP det = case det.isEmpty of { + True => case of { -- if the s field is empty, make up some other determiner + => he_Pron ; + => theyMasc_Pron ; + => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ; + _ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc} + } ; + False => emptyNP ** {s = det.s ! NoHum ! Masc} } ; PredetNP det np = np ** { s = \\c => case det.isDecl of { @@ -75,7 +82,7 @@ lin DetQuantOrd quant num ord = quant ** { s = \\h,g,c => let d = toDef quant.d num.n in - quant.s ! Pl ! h ! g ! c + quant.s ! Pl ! h ! g ! c -- TODO what is this Pl? Was there when I started /IL ++ num.s ! g ! d ! c --FIXME check this: ++ ord.s ! g diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 91445056..37cad39e 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -61,6 +61,9 @@ oper is1sg : Agr -> Bool = \a -> case a.pgn of {Per1 Sing => True; _ => False} ; + someSg_Det = mkDet "أَحَد" Sg Const ; + somePl_Det = mkDet "بَعض" Pl Const ; + mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant = \hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> lin Quant (baseQuant ** { s = \\n,s,g,c => diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index e419ae53..8eb4cd31 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -1,5 +1,5 @@ concrete StructuralAra of Structural = CatAra ** - open MorphoAra, ResAra, ParadigmsAra, Prelude in { + open MorphoAra, ResAra, ParadigmsAra, (N=NounAra), Prelude in { flags optimize=all ; coding=utf8 ; @@ -47,10 +47,11 @@ concrete StructuralAra of Structural = CatAra ** } ; -- IL how8much_IAdv = ss "كَمْ" ; if_Subj = mkSubj "إِذَا" Verbal ; + --whether_Subj = mkSubj "مَا إِذَا" Verbal ; in8front_Prep = mkPrep "مُقَابِلَ" ; i_Pron = ResAra.i_Pron ; in_Prep = mkPrep "فِي" ; - it_Pron = emptyNP ** {s = \\_ => "هَذَا"} ; -- was: it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg); + it_Pron = N.DetNP (N.DetQuant this_Quant N.NumSg) ; -- was: it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg); -- less_CAdv = ss "لسّ" ; many_Det = mkDet "جَمِيع" Pl Const ; -- more_CAdv = ss "مْري" ; @@ -74,8 +75,8 @@ concrete StructuralAra of Structural = CatAra ** she_Pron = ResAra.she_Pron ; so_AdA = very_AdA ; somebody_NP = regNP "أَحَد" Sg Indef ; - someSg_Det = mkDet "أَحَد" Sg Const ; - somePl_Det = mkDet "بَعض" Pl Const ; + someSg_Det = ResAra.someSg_Det ; + somePl_Det = ResAra.somePl_Det ; something_NP = regNP "شَيْء" Sg Indef ; -- somewhere_Adv = ss "سْموهري" ; that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def; @@ -87,7 +88,7 @@ concrete StructuralAra of Structural = CatAra ** -- therefore_PConj = ss "تهرفْري" ; ----b these_NP = indeclNP "هَؤُلَاء" Pl ; they_Pron = theyMasc_Pron ; - this_Quant = mkQuant7 "هَذا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def; + this_Quant = mkQuant7 "هَذا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def ; ----b this_NP = indeclNP "هَذا" Sg ; ----b those_NP = indeclNP "هَؤُلَاءكَ" Pl ; through_Prep = mkPrep "عَبْرَ" ;