From 8db210fd97d16a3a5d87f0fb5bf7d40ceb4265d3 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 15 Oct 2018 16:07:29 +0200 Subject: [PATCH 1/3] (Ara) fix bad_A --- src/arabic/LexiconAra.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index 3ff631384..fcd47e404 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -19,7 +19,8 @@ flags ask_V2Q = dirV2 (regV "يَس؟َل") ; -- ask_V2Q = dirV2 (v1 "س؟ل" a a) ; baby_N = brkN "طفل" "فِعل" "أَفعال" Masc Hum; - bad_A = sndA "سو؟" "فَيِّع" ; +-- bad_A = sndA "سو؟" "فَيِّع" ; + bad_A = mkA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ; bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ; beautiful_A = sndA "جمل" "فَعِيل" ; become_VA = mkVA (v4 "صبح") ; From 7b13eb0adebeed0ec7ba59795ee2c509d90983cb Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 15 Oct 2018 16:08:11 +0200 Subject: [PATCH 2/3] (Ara) Better checks if a Num or Ord is a numeral --- src/arabic/CatAra.gf | 2 +- src/arabic/LexiconAra.gf | 4 ++-- src/arabic/NounAra.gf | 49 +++++++++++++++++--------------------- src/arabic/ParadigmsAra.gf | 2 +- src/arabic/ResAra.gf | 15 ++++++++---- src/arabic/SymbolAra.gf | 4 ++-- 6 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/arabic/CatAra.gf b/src/arabic/CatAra.gf index 2ed255154..2dbc2278a 100644 --- a/src/arabic/CatAra.gf +++ b/src/arabic/CatAra.gf @@ -49,8 +49,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { CN = ResAra.Noun ** {adj : NTable}; NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ; - Ord, Num, + Ord, Card = ResAra.NumOrdCard ; Predet = ResAra.Predet ; diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index fcd47e404..f8f2a5b2f 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -249,8 +249,8 @@ flags jump_V = regV "يَقفِز" ; -- jump_V = v1 "قفز" a i ; - left_Ord = mkOrd "أَيسَر" "يُسرَى"; - right_Ord = mkOrd "أَيمَن" "يُمنَى" ; + left_Ord = mkOrd "أَيسَر" "يُسرَى" One; + right_Ord = mkOrd "أَيمَن" "يُمنَى" One; far_Adv = mkAdv "بَعِيداً" ; correct_A = sndA "صحّ" "فَعِيل" ; diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 143d422ce..8e05229fb 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -78,10 +78,9 @@ lin n = num.n; d = quant.d; isPron = quant.isPron; - isNum = - case num.n of { - None => False; - _ => True + isNum = case num.n of { + None => ord.isNum ; -- ord may come from OrdDigits or OrdNumeral + _ => True } } ; @@ -91,20 +90,13 @@ lin n = num.n; d = quant.d; isPron = quant.isPron; - isNum = + isNum = -- Num may come from NumCard : Card -> Num case num.n of { None => False; - _ => True + _ => True } } ; - - --DEPRECATED - -- SgQuant quant = {s = quant.s ! Sg ; d = quant.d; - -- isPron = quant.isPron; isNum = False} ; - -- PlQuant quant = {s = quant.s ! Pl ; d = quant.d; - -- isPron = quant.isPron; isNum = False} ; - PossPron p = { s = \\_,_,_,_ => p.s ! Gen; d = Const; @@ -113,37 +105,39 @@ lin NumSg = { s = \\_,_,_ => [] ; - n = One } ; + n = One ; + isNum = False } ; NumPl = { s = \\_,_,_ => [] ; - n = None } ; + n = None ; + isNum = False } ; - NumDigits digits = { - s = \\_,_,_ => digits.s; - n = digits.n + NumDigits digits = digits ** { + s = \\_,_,_ => digits.s ; + isNum = True }; - NumNumeral numeral = { + NumNumeral numeral = numeral ** { s = numeral.s ! NCard ; - n = numeral.n + isNum = True }; NumCard n = n ; - AdNum adn num = { + AdNum adn num = num ** { s = \\g,d,c => adn.s ++ num.s ! g ! d ! c ; - n = num.n } ; + } ; - OrdDigits digits = { + OrdDigits digits = digits ** { s = \\_,d,_ => Al ! d ++ digits.s; - n = digits.n + isNum = True }; -- OrdNumeral : Numeral -> Ord ; -- fifty-first - OrdNumeral numeral = { + OrdNumeral numeral = numeral ** { s = numeral.s ! NOrd ; - n = numeral.n + isNum = True }; -- FIXME, "the biggest house" would better translate into @@ -151,7 +145,8 @@ lin -- DetCN (DetSg DefArt (OrdSuperl big_A)) (UseN house_N) OrdSuperl a = { s = \\_,d,c => a.s ! AComp d c; - n = One + n = One ; + isNum = False } ; DefArt = { diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 089421cc3..bd1e5da9e 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -478,7 +478,7 @@ resource ParadigmsAra = open => ula'ika; _ => tilka }; - d = Def; + d = det; isPron = False; isNum = False; lock_Quant = <> diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index c3cc2aa9f..90222d049 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -117,8 +117,10 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in { NumOrdCard : Type = { s : Gender => State => Case => Str ; n : Size ; + isNum : Bool } ; + uttNum : NumOrdCard -> (Gender => Str) ; uttNum n = \\g => n.s ! g ! Def ! Nom ; ----IL @@ -1085,21 +1087,26 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> case pgn of { Per3 gn nm => {g = gn; n = nm}; Per2 gn nm => {g = gn; n = nm}; - _ => {g = Masc; n = Sg} --randomly + Per1 nm => {g = Masc; --randomly + n = case nm of { + Sing => Sg ; + Plur => Pl} + } }; mkIP : Str -> Number -> IP = \s,n -> {s = \\_g,_s,_c => s ; n = n} ; - mkOrd : (_,_ : Str) -> NumOrdCard = - \aysar,yusra -> + mkOrd : (_,_ : Str) -> Size -> NumOrdCard = + \aysar,yusra,sz -> { s = \\g,s,c => case g of { Masc => (sing aysar) ! s ! c; Fem => (sing yusra) ! s ! c }; - n = None + n = sz ; + isNum = False }; diff --git a/src/arabic/SymbolAra.gf b/src/arabic/SymbolAra.gf index 02368836c..c239b087a 100644 --- a/src/arabic/SymbolAra.gf +++ b/src/arabic/SymbolAra.gf @@ -26,8 +26,8 @@ lin SymbS sy = sy ; - SymbOrd n = {s = \\_,_,_ => n.s ; n = None } ; - SymbNum n = SymbOrd n ** { n = ThreeTen } ; ----IL + SymbOrd n = {s = \\_,_,_ => n.s ; n = One ; isNum = False } ; + SymbNum n = SymbOrd n ** { n = ThreeTen ; isNum = True } ; ----IL lincat From 82aa6549cca726591d897d65b4f8aa7767a48c74 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Mon, 15 Oct 2018 16:47:26 +0200 Subject: [PATCH 3/3] (Ara) Fix MassNP: now with adjective included --- src/arabic/NounAra.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 8e05229fb..f383f1806 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -162,7 +162,8 @@ lin } ; MassNP cn = ---- AR - {s = cn.s ! Sg ! Indef ; a = {pgn = Per3 cn.g Sg ; isPron = False}} ; + {s = \\c => cn.s ! Sg ! Indef ! c ++ cn.adj ! Sg ! Indef ! c ; + a = {pgn = Per3 cn.g Sg ; isPron = False}} ; -- MassDet = {s = \\_,_,_,_ => [] ; d = Indef; -- isNum = False; isPron = False} ;