From 2d112e3a55343a1a967e5cfa7c79c1f11556ac8c Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 2 Nov 2018 18:01:14 +0100 Subject: [PATCH] (Ara) diacritics --- src/arabic/LexiconAra.gf | 33 ++++++++++++++++----------------- src/arabic/OrthoAra.gf | 3 ++- src/arabic/PatternsAra.gf | 6 +++--- src/arabic/ResAra.gf | 3 +-- src/arabic/StructuralAra.gf | 10 +++++----- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index 7d4e95071..8178ce9f7 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -3,7 +3,6 @@ concrete LexiconAra of Lexicon = CatAra ** open ParadigmsAra, ResAra, - MorphoAra, --shouldn't open it here, only needed reg &sndf Prelude in { flags @@ -19,8 +18,8 @@ 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 "سوء" "فَيِّع" ; + bad_A = degrA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ; bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ; beautiful_A = sndA "جمل" "فَعِيل" ; become_VA = mkVA (v4 "صبح") ; @@ -42,11 +41,11 @@ flags -- break_V2 = dirV2 (v1 "كسر" a u) ; broad_A = sndA "وسع" "فاعِل" ; brother_N2 = mkN2 (brkN "ءخو" "فَع" "فِعلة" Masc Hum) ; --FIXME dual - brown_A = sndA "بني" "فُعِّل"; + brown_A = sndA "بني" "فُعِّل"; butter_N = sdfN "سبد" "فُعلة" Fem NoHum ; buy_V2 = dirV2 (v8 "شري") ; camera_N = sdfN "كمر" "فاعِيلا" Fem NoHum ; -- |Alö taSwIr - cap_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --qalnUsö + cap_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; --qalnUsö car_N = sdfN "سير" "فَعّالة" Fem NoHum ; carpet_N = sdfN "سجد" "فَعّالة" Fem NoHum ; cat_N = brkN "هرّ" "فِعّ" "فِعَلَة" Fem NoHum ; @@ -93,13 +92,13 @@ flags girl_N = brkN "بنت" "فِعل" "فَعَال" Fem Hum ; glove_N = sdfN "قفز" "فُعّال" Masc NoHum ; gold_N = sdfN "ذهب" "فَعَل" Masc NoHum ; - good_A = sndA "جود" "فَيِّع" ; -- Hasan, HisAn + good_A = sndA "جود" "فَيِّع" ; -- Hasan, HisAn go_V = regV "يَذهَب" ; -- go_V = v1 "ذهب" a a ; green_A = clrA "خضر" ; harbour_N = brkN "رفء" "مَفعَل" "مَفاعِل" Masc NoHum ; --mInA', marsaY hate_V2 = dirV2 (regV "كَرِه") ; - hat_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; + hat_N = sdfN "قبع" "فُعَّلة" Fem NoHum ; -- have_V2 = dirV2 (v1 "ملك" a i) ; hear_V2 = dirV2 (regV "سَمِع") ; -- hear_V2 = dirV2 (v1 "سمع" i a) ; @@ -130,14 +129,14 @@ flags love_N = brkN "حبّ" "فُعّ" "فُعّ" Masc NoHum ; -- no plur love_V2 = dirV2 (v1 "حبّ" a i) ; man_N = brkN "رجل" "فَعُل" "فِعَال" Masc Hum ; - married_A2 = mkA2 (sndA "زوج" "مُتَفَعِّل") "مِن" ; + married_A2 = mkA2 (sndA "زوج" "مُتَفَعِّل") "مِن" ; meat_N = brkN "لحم" "فَعلة" "فُعُول" Masc NoHum ; milk_N = brkN "حلب" "فَعِيل" "فَعِيل" Masc NoHum ; --no plur moon_N = brkN "قمر" "فَعَل" "أَفعَال" Masc NoHum ; - mother_N2 = mkN2 (sdfN "ءم" "فُعَّ" Fem Hum) ; + mother_N2 = mkN2 (sdfN "ءم" "فُعَّ" Fem Hum) ; mountain_N = brkN "جبل" "فَعَل" "فِعَال" Masc NoHum ; music_N = mkN (reg "مُوسِيقَى" "مُوسِيقَى") Fem NoHum ; --no plur - narrow_A = sndA "ضيق" "فَعِّل" ; + narrow_A = sndA "ضيق" "فَعِّل" ; new_A = mkA "جدد" "فَعِيل" "فُعُل" ; newspaper_N = brkN "صحف" "فَعِيلة" "فُعُل" Fem NoHum ; oil_N = brkN "زيت" "فَعل" "فُعُول" Masc NoHum ; @@ -155,7 +154,7 @@ flags play_V2 = dirV2 (regV "لَعِب") ; -- play_V2 = dirV2 (v1 "لعب" i a) ; policeman_N = sdmN "شرط" "فِعلِي" Masc Hum ; - priest_N = brkN "قسّ" "فِعِّيل" "أَفِعّة" Masc Hum ; + priest_N = brkN "قسّ" "فِعِّيل" "أَفِعّة" Masc Hum ; probable_AS = mkAS (sndA "مكن" "مُفعِل") ; queen_N = sdfN "ملك" "فَعِلة" Fem Hum ; radio_N = mkN (sndf "راديُو") Masc NoHum ; @@ -169,7 +168,7 @@ flags river_N = brkN "نهر" "فَعل" "أَفعَال" Masc NoHum ; rock_N = brkN "صخر" "فَعلة" "فُعُول" Fem NoHum ; roof_N = brkN "سطح" "فَعل" "أَفعُل" Masc NoHum ; - rubber_N = brkN "مطط" "فَعَّال" "فَعَّال" Masc NoHum ; -- no hum + rubber_N = brkN "مطط" "فَعَّال" "فَعَّال" Masc NoHum ; -- no hum run_V = regV "يَركُض" ; -- run_V = v1 "ركض" a u ; say_VS = mkVS (v1 "قول" a u) ; --check @@ -187,11 +186,11 @@ flags shoe_N = brkN "حذو" "فِعَاء" "أَفعِية" Masc NoHum ; shop_N = brkN "تجر" "مَفعَل" "مَفاعِل" Masc NoHum ; short_A = sndA "قصر" "فَعِيل" ; - silver_N = brkN "فضض" "فِعَّة" "فِعَل" Fem NoHum ; + silver_N = brkN "فضض" "فِعَّة" "فِعَل" Fem NoHum ; sister_N = brkN "ءخو" "فُعت" "فَعَوَات" Fem Hum ; --FIXME sleep_V = v1 "نوم" i a ; --check small_A = sndA "صغر" "فَعِيل" ; - snake_N = sdfN "حيّ" "فَعَّة" Fem NoHum ; + snake_N = sdfN "حيّ" "فَعَّة" Fem NoHum ; sock_N = brkN "جرب" "فَوعَل" "فَواعِل" Masc NoHum ; speak_V2 = dirV2 (v5 "كلم") ; star_N = brkN "نجم" "فَعل" "فُعُول" Masc NoHum ; --najmö @@ -205,7 +204,7 @@ flags switch8on_V2 = dirV2 (v4 "شعل") ; table_N = sdfN "طول" "فاعِلة" Fem NoHum ; talk_V3 = mkV3 (v5 "حدث") "لِ" "عَن" ; - teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö + teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö teach_V2 = dirV2 (v2 "علم") ; television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ; thick_A = sndA "سمك" "فَعِيل" ; @@ -261,7 +260,7 @@ flags heavy_A = sndA "ثقل" "فَعِيل" ; near_A = sndA "قرب" "فَعِيل" ; rotten_A = sndA "فسد" "فاعِل" ; - round_A = sndA "دور" "مُفَعَّل" ; + round_A = sndA "دور" "مُفَعَّل" ; sharp_A = sndA "حدّ" "فاعّ" ; smooth_A = sndA "نعم" "فاعِل" ; straight_A = sndA "قوم" "مُستَفِيع" ; @@ -277,7 +276,7 @@ flags bone_N = brkN "عظم" "فَعلة" "فِعَال" Fem NoHum; breast_N = brkN "صدر" "فَعل" "فُعُول" Masc NoHum; cloud_N = brkN "غيم" "فَعلة" "فُعُول" Fem NoHum; - day_N = brkN "يوم" "فَعل" "أَفَّاع" Masc NoHum; + day_N = brkN "يوم" "فَعل" "أَفَّاع" Masc NoHum; dust_N = brkN "غبر" "فُعَال" "أَفعِلة" Masc NoHum; ear_N = brkN "ءذن" "فُعل" "أَفعَال" Fem NoHum; earth_N = brkN "ترب" "فُعلة" "فُعَل" Fem NoHum; diff --git a/src/arabic/OrthoAra.gf b/src/arabic/OrthoAra.gf index a7dc5d664..0e5d7e196 100644 --- a/src/arabic/OrthoAra.gf +++ b/src/arabic/OrthoAra.gf @@ -12,7 +12,8 @@ flags coding=utf8 ; -- Shadda: https://www.unicode.org/L2/L2017/17253-arabic-ordering.pdf fixShd : Str -> Str -> Str = \word,suffix -> case of { - => x + v + "ّ" + y ; + -- => x + v + "ّ" + y ; + => x + "ّ" + v + y ; _ => word + suffix } ; diff --git a/src/arabic/PatternsAra.gf b/src/arabic/PatternsAra.gf index 26c5e8c59..1390d67a8 100644 --- a/src/arabic/PatternsAra.gf +++ b/src/arabic/PatternsAra.gf @@ -48,7 +48,7 @@ flags coding=utf8 ; eiftacal = { h = "إِ"; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; eufcil = { h = "أُ"; m1 = "ْ" ; m2 = "ِ" ; t = "" } ; euftucil = { h = "أُ"; m1 = "ْتُ" ; m2 = "ِ" ; t = "" } ; - euttucil = euftucil ** { h = "اُتُّ" ; m1 = "ِ" } ; ---- IL assimilated VIII + euttucil = euftucil ** { h = "اُتُّ" ; m1 = "ِ" } ; ---- IL assimilated VIII afcul = { h = "َ" ; m1 = "ْ" ; m2 = "ُ" ; t = "" } ; faccalo = { h = "" ; m1 = "َ" ; m2 = "َّ" ; t = "ْ" } ; facal = { h = "" ; m1 = "َ" ; m2 = "َ" ; t = "" } ; @@ -78,8 +78,8 @@ flags coding=utf8 ; ficlp = { h = "" ; m1 = "ِ" ; m2 = "ْ" ; t = "َة" } ; ftacal = { h = "" ; m1 = "ْتَ" ; m2 = "َ" ; t = "" } ; ftacil = { h = "" ; m1 = "ْتَ" ; m2 = "ِ" ; t = "" } ; - ttacal = ftacal ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII - ttacil = ftacil ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII + ttacal = ftacal ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII + ttacil = ftacil ** { m1 = "" ; h = "تَّ" } ; ---- IL assimilated VIII fuccAl = { h = "" ; m1 = "ُ" ; m2 = "َّا" ; t = "" } ; fuccil = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "" } ; fuccilo = { h = "" ; m1 = "ُ" ; m2 = "ِّ" ; t = "ْ" } ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index d4f08f631..b0eca6e00 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -904,8 +904,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> case st of { Def => case stem of { - s@#sun + v@#vow + x => al + s + v + "ّ" + x ; -- vowel before shadda - s@#sun + x => al + s + "ّ" + x; + s@#sun + x => fixShd (al + s) ("ّ" + x) ; x => al + x } ; _ => stem }; diff --git a/src/arabic/StructuralAra.gf b/src/arabic/StructuralAra.gf index 7931b8132..136680f56 100644 --- a/src/arabic/StructuralAra.gf +++ b/src/arabic/StructuralAra.gf @@ -99,12 +99,12 @@ concrete StructuralAra of Structural = CatAra ** which_IQuant = { s = \\s,c => case of { => "أيّ" ; - => "أيٌّ" ; - => "أيُّ" ; + => "أيٌّ" ; + => "أيُّ" ; => "أيّاً" ; - => "أيَّ" ; - => "أيٍّ" ; - => "أيِّ" + => "أيَّ" ; + => "أيٍّ" ; + => "أيِّ" } } ; whoSg_IP = mkIP "مَنْ" Sg ;