diff --git a/src/arabic/CatAra.gf b/src/arabic/CatAra.gf index 5dba84f2..444298bd 100644 --- a/src/arabic/CatAra.gf +++ b/src/arabic/CatAra.gf @@ -54,7 +54,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { Card = ResAra.NumOrdCard ; Predet = ResAra.Predet ; - Det = ResAra.Det ; + DAP, Det = ResAra.Det ; -- {s : Species => Gender => Case => Str ; -- d : State; n : Size; isNum : Bool } ; Quant = ResAra.Quant ; diff --git a/src/arabic/ExtendAra.gf b/src/arabic/ExtendAra.gf index 16d134fa..1dcd38a7 100644 --- a/src/arabic/ExtendAra.gf +++ b/src/arabic/ExtendAra.gf @@ -8,7 +8,7 @@ concrete ExtendAra of Extend = VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS, EmbedSSlash, AdjAsNP, GerundNP, PassVPSlash, ---- bogus implementation, see below - CompoundN + CompoundN, UseDAP, UseDAPMasc, UseDAPFem ] with (Grammar=GrammarAra) ** open @@ -105,4 +105,31 @@ lin s2 = \\n, s, c => b.s2 ! n ! Const ! c ++ a.s2 ! n ! s ! c } ; +lin UseDAP dap = case dap.isEmpty of { + True => case of { -- if the s field is empty, make up some other determiner + => it_Pron ; + => they_Pron ; + => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ; + _ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc} + } ; + False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ; + +lin UseDAPMasc dap = case dap.isEmpty of { + True => case of { -- if the s field is empty, make up some other determiner + => it_Pron ; + => theyMasc_Pron ; + => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ; + _ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc} + } ; + False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ; + +lin UseDAPFem dap = case dap.isEmpty of { + True => case of { -- if the s field is empty, make up some other determiner + => it_Pron ; + => theyFem_Pron ; + => emptyNP ** {s = someSg_Det.s ! NoHum ! Fem} ; + _ => emptyNP ** {s = somePl_Det.s ! NoHum ! Fem} + } ; + False => emptyNP ** {s = dap.s ! NoHum ! Fem} } ; + } diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 90a5979e..6822fbab 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -237,6 +237,8 @@ lin } }; + DetDAP d = d ; + QuantityNP n m = emptyNP ** { s = \\c => preOrPost m.isPre m.s n.s ; a = { pgn = agrP3 NoHum Masc (sizeToNumber n.n);