From f2afe03303d905400ef548dd5fdeb4202071a115 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 22 Aug 2025 14:03:29 +0200 Subject: [PATCH 1/3] fix example in arabic documentation --- src/arabic/ParadigmsAra.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 3faaeff54..c708fa5f7 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -153,7 +153,7 @@ resource ParadigmsAra = open nisbaA : Str -> Adj ; -- Forms relative adjectives with the suffix ِيّ. Takes either the stem and adds يّ, or the whole word ending in يّ and just adds declension. - idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ طَيِّبٍ 'not good'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state. + idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ لَذيذٍ 'not tasty'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state. degrA : (masc,fem,plur : Str) -> A ; -- Adjective where masculine singular is also the comparative form. Indeclinable singular, basic triptote declension for dual and plural. From 97227181fe4a619e7a23dfcacd191f9ccd380de3 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 22 Aug 2025 14:27:10 +0200 Subject: [PATCH 2/3] =?UTF-8?q?(Ara)=20add=20the=20preposition=20ka=20'?= =?UTF-8?q?=D9=83=D9=8E'=20which=20attaches=20to=20its=20head?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/arabic/MorphoAra.gf | 8 +++++--- src/arabic/ParadigmsAra.gf | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/arabic/MorphoAra.gf b/src/arabic/MorphoAra.gf index dbb4f752a..6cbb76de8 100644 --- a/src/arabic/MorphoAra.gf +++ b/src/arabic/MorphoAra.gf @@ -70,6 +70,8 @@ oper _ => "لِ" }) Dat ; biPrep : Preposition = mkPrefix "بِ" ; + kaPrep : Preposition = mkPrefix "كَ" ; + accPrep : Preposition = mkPreposition [] Acc ; -- default object case in VP genPrep : Preposition = mkPreposition [] Gen ; -- default object case in N2 @@ -502,17 +504,17 @@ oper AComp d c => comp ! Sg ! d ! c } } ; - + mascFemCompAdj : (kabir, kabira, akbar : Str) -> Adj = \kabir, kabira, akbar -> ntablesAdj (positAdj kabir ! Masc) (positAdj kabir ! Fem) (positAdj akbar ! Masc) ; - + mascFemAdj : (kabir, kabira : Str) -> Adj = \kabir, kabira -> mascFemCompAdj kabir kabira kabir ; ---- comp mascAdj : (kabir : Str) -> Adj = \kabir -> mascFemAdj kabir (kabir + "َة") ; - + ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index c708fa5f7..1c6540e3d 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -99,7 +99,7 @@ resource ParadigmsAra = open mkLN = overload { mkLN : Str -> LN -- Predictable LN from a Str: fem hum if ends in ة, otherwise masc hum. = \s -> lin LN (N.UsePN (smartPN s)) ; - mkLN : Str -> Gender -> LN + mkLN : Str -> Gender -> LN = \s, g -> lin LN (N.UsePN (smartPN s ** {g = g})) ; mkLN : N -> LN -- Make a LN out of N. The LN is in construct state. = \n -> lin LN (N.MassNP (N.UseN n)) ; @@ -202,6 +202,7 @@ resource ParadigmsAra = open liPrep : Prep ; -- The preposition لِ, binding to its head. Vowel assimilation and def. article elision implemented. biPrep : Prep ; -- The preposition بِ, binding to its head. + kaPrep : Prep ; -- The preposition كَ, binding to its head. noPrep : Prep ; -- No preposition at all, "complement case" is nominative. --2 Conjunctions @@ -375,6 +376,7 @@ resource ParadigmsAra = open noPrep = lin Prep ResAra.noPrep ; biPrep = lin Prep ResAra.biPrep ; liPrep = lin Prep ResAra.liPrep ; + kaPrep = lin Prep ResAra.kaPrep ; casePrep : Case -> Prep = \c -> lin Prep {s=[]; c=c; binds=False} ; @@ -914,7 +916,7 @@ oper wmkN : {sg, pl : Str ; g : Gender} -> N = \r -> mkN r.sg r.pl r.g nohum ; --- hum/nohum not in Wikt wmkN : {sg : Str} -> N - = \r -> smartN r.sg ; + = \r -> smartN r.sg ; wmkN : {sg : Str ; g : Gender ; root : Str} -> N = \r -> smartN r.sg ** {g = r.g} ; ---- wmkN : {sg : Str; g : Gender} -> N @@ -924,8 +926,8 @@ oper wmkN : {sg : Str; pl : Str} -> N = \r -> mkN r.sg r.pl masc nohum ; ---- ** {g = (smartN r.sg).g} ; wmkN : {sg, pl : Str ; root : Str} -> N - = \r -> mkN r.sg r.pl masc nohum ; ---- - wmkN : {sg : Str; root : Str} -> N + = \r -> mkN r.sg r.pl masc nohum ; ---- + wmkN : {sg : Str; root : Str} -> N = \r -> smartN r.sg ; } ; From e3c9a0045efd298b294b7bc9f611b90c222904ed Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 22 Aug 2025 14:50:35 +0200 Subject: [PATCH 3/3] (Ger) Fix complement number agreement with AgPlPol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Sie sind ein Vogel", not *Sie sind Vögel --- src/german/VerbGer.gf | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/german/VerbGer.gf b/src/german/VerbGer.gf index b2e5b557a..6d89b332b 100644 --- a/src/german/VerbGer.gf +++ b/src/german/VerbGer.gf @@ -113,12 +113,18 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { CompNP np = {s = \\_ => np.s ! False ! Nom ++ np.rc ; ext = np.ext} ; CompAdv a = {s = \\_ => a.s ; ext = []} ; - CompCN cn = {s = \\a => case numberAgr a of { - Sg => "ein" + pronEnding ! GSg cn.g ! Nom ++ cn.s ! Strong ! Sg ! Nom ++ cn.rc ! Sg ; --- - Pl => cn.s ! Strong ! Pl ! Nom ++ cn.rc ! Pl --- - } ; - ext = cn.adv ++ cn.ext - } ; + CompCN cn = { + s = let + sg : Str = "ein" + pronEnding ! GSg cn.g ! Nom ++ cn.s ! Strong ! Sg ! Nom ++ cn.rc ! Sg ; --- + pl : Str = cn.s ! Strong ! Pl ! Nom ++ cn.rc ! Pl + in table { + AgPlPol => sg ; + a => case numberAgr a of { + Sg => sg ; + Pl => pl } + } ; + ext = cn.adv ++ cn.ext + } ; AdvVP vp adv = insertAdv adv.s vp ; ExtAdvVP vp adv = insertAdv (embedInCommas adv.s) vp ;