diff --git a/src/arabic/ExtendAra.gf b/src/arabic/ExtendAra.gf new file mode 100644 index 000000000..beda66f3e --- /dev/null +++ b/src/arabic/ExtendAra.gf @@ -0,0 +1,20 @@ +--# -path=.:../common:../abstract + +concrete ExtendAra of Extend = + CatAra ** ExtendFunctor - [ + GenNP, SlashBareV2S, PredAPVP, GenModNP, ExistsNP, + StrandRelSlash, ExistPluralCN, ExistMassCN, ExistCN, EmptyRelSlash, DetNPMasc, DetNPFem, + ComplBareVS, ComplDirectVS, ComplDirectVQ +] + with (Grammar=GrammarAra) + ** open + + Prelude, + ResAra + + in { + + lin + GenNP np = { s = \\_,_,_,_ => np.s ! Gen ; d = Const ; isNum, isPron = False } ; + +} ; diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 6dfe6727e..8e8c77e9e 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -8,12 +8,12 @@ lin number = sizeToNumber det.n; determiner : Case -> Str = \c -> det.s ! cn.h ! (detGender cn.g det.n) ! c; - noun : Case -> Str = \c -> cn.s ! + noun : Case -> NTable -> Str = \c,nt -> nt ! number ! (nounState det.d number) ! (nounCase c det.n det.d) } in { s = \\c => case cnB4det det.isPron det.isNum det.n det.d of { - False => determiner c ++ noun c; + False => determiner c ++ noun c cn.s ++ noun c cn.adj ; --FIXME use the adj -> cn -> cn rule from below instead of --repeating code True => cn.s ! number ! det.d ! c ++ det.s ! cn.h ! cn.g ! c diff --git a/src/arabic/QuestionAra.gf b/src/arabic/QuestionAra.gf index f5f247dee..30d528391 100644 --- a/src/arabic/QuestionAra.gf +++ b/src/arabic/QuestionAra.gf @@ -8,7 +8,7 @@ concrete QuestionAra of Question = CatAra ** open ResAra, ParamX, Prelude, VerbA s = \\t,p => table { QIndir => "إِذا" ++ cl.s ! t ! p ! Verbal ; - QDir => cl.s ! t ! p ! Verbal + QDir => "هَل" ++ cl.s ! t ! p ! Verbal } }; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 8d2bd255d..c0c4ab793 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -1095,7 +1095,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> }; insertStr : Str -> VP -> VP = \str,vp -> vp ** - { s2 = str }; + { s2 = vp.s2 ++ str }; kaan : {s : AAgr => Case => Str} -> VP = \xabar -> insertPred xabar (predV (v1hollow {f = "ك"; c = "و" ; l = "ن"} u) ); diff --git a/src/arabic/SentenceAra.gf b/src/arabic/SentenceAra.gf index 1b0990581..56d63a1b1 100644 --- a/src/arabic/SentenceAra.gf +++ b/src/arabic/SentenceAra.gf @@ -120,7 +120,7 @@ concrete SentenceAra of Sentence = CatAra ** open UseQCl t ap qcl = --{s = cl.s ! t ! p ! Verbal } ; {s = table { - QDir => "هَل" ++ qcl.s ! ResAra.Pres ! ap.p ! QDir; + QDir => qcl.s ! ResAra.Pres ! ap.p ! QDir; QIndir => qcl.s ! ResAra.Pres ! ap.p ! QIndir } {- case t of {