From 828bf9c677682a810f08e408214c35598bafa640 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 7 Feb 2023 08:47:34 +0100 Subject: [PATCH] extend the names API --- src/abstract/Extend.gf | 4 ++- src/afrikaans/ExtendAfr.gf | 2 +- src/bulgarian/CatBul.gf | 3 ++- src/bulgarian/DocumentationBul.gf | 26 ++++++++---------- src/bulgarian/ExtendBul.gf | 20 +++++++++++--- src/bulgarian/MorphoFunsBul.gf | 11 +++++--- src/bulgarian/ResBul.gf | 10 ++++++- src/catalan/ExtendCat.gf | 2 +- src/chinese/ExtendChi.gf | 2 +- src/dutch/ExtendDut.gf | 2 +- src/english/ExtendEng.gf | 2 +- src/estonian/ExtendEst.gf | 2 +- src/finnish/ExtendFin.gf | 2 +- src/french/ExtendFre.gf | 2 +- src/german/CatGer.gf | 3 ++- src/german/ExtendGer.gf | 9 ++++--- src/german/ParadigmsGer.gf | 44 +++++++++++++++++++++++++++++++ src/german/ResGer.gf | 7 +++++ src/italian/ExtendIta.gf | 2 +- src/korean/ExtendKor.gf | 2 +- src/maltese/ExtraMlt.gf | 2 +- src/polish/ExtendPol.gf | 2 +- src/portuguese/ExtendPor.gf | 2 +- src/russian/ExtendRus.gf | 2 +- src/slovenian/CatSlv.gf | 3 ++- src/slovenian/ExtendSlv.gf | 8 +++--- src/slovenian/ParadigmsSlv.gf | 41 ++++++++++++++++++++++++++++ src/slovenian/ResSlv.gf | 7 +++++ src/somali/ExtendSom.gf | 2 +- src/spanish/ExtendSpa.gf | 2 +- src/swedish/ExtendSwe.gf | 2 +- src/turkish/CatTur.gf | 6 +---- src/turkish/ExtendTur.gf | 3 ++- 33 files changed, 182 insertions(+), 57 deletions(-) diff --git a/src/abstract/Extend.gf b/src/abstract/Extend.gf index 491ff6edd..134a6a8b6 100644 --- a/src/abstract/Extend.gf +++ b/src/abstract/Extend.gf @@ -293,7 +293,9 @@ fun CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc GivenName : GN -> PN ; - Surname : SN -> PN ; + MaleSurname : SN -> PN ; + FemaleSurname : SN -> PN ; + PlSurname : SN -> PN ; FullName : GN -> SN -> PN ; } diff --git a/src/afrikaans/ExtendAfr.gf b/src/afrikaans/ExtendAfr.gf index a2e6b52e7..19dfe31b3 100644 --- a/src/afrikaans/ExtendAfr.gf +++ b/src/afrikaans/ExtendAfr.gf @@ -6,7 +6,7 @@ concrete ExtendAfr of Extend = open ResAfr in { -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\c => gn.s ! NPNom ++ sn.s ! c ; } ; diff --git a/src/bulgarian/CatBul.gf b/src/bulgarian/CatBul.gf index 3651a542b..656713c69 100644 --- a/src/bulgarian/CatBul.gf +++ b/src/bulgarian/CatBul.gf @@ -86,7 +86,8 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, ( N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ; N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ; N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ; - GN, SN = {s : Str; g : Gender} ; + GN = {s : Str; g : Sex} ; + SN = {s : Sex => Str; pl : Str} ; PN = {s : Str; gn : GenNum} ; lindef diff --git a/src/bulgarian/DocumentationBul.gf b/src/bulgarian/DocumentationBul.gf index 9c3100a3d..30c4f76c0 100644 --- a/src/bulgarian/DocumentationBul.gf +++ b/src/bulgarian/DocumentationBul.gf @@ -92,27 +92,23 @@ lin s3 = "" } ; - InflectionGN = \pn -> { + InflectionGN = \gn -> { t = "същ.с.л." ; - s1= heading1 ("Собствено Име"++ - case pn.g of { - Masc => "(м.р.)" ; - Fem => "(ж.р.)" ; - Neut => "(ср.р.)" + s1= heading1 (case gn.g of { + Male => "Мъжко Име" ; + Female => "Женско Име" }) ; - s2 = pn.s ; + s2 = gn.s ; s3 = "" } ; - InflectionSN = \pn -> { + InflectionSN = \sn -> { t = "същ.с.ф." ; - s1= heading1 ("Фамилно Име"++ - case pn.g of { - Masc => "(м.р.)" ; - Fem => "(ж.р.)" ; - Neut => "(ср.р.)" - }) ; - s2 = pn.s ; + s1= heading1 ("Фамилно Име") ; + s2 = frameTable ( + tr (th "мъжко" ++ td (sn.s ! Male)) ++ + tr (th "женско" ++ td (sn.s ! Female)) ++ + tr (th "семейно" ++ td sn.pl)) ; s3 = "" } ; diff --git a/src/bulgarian/ExtendBul.gf b/src/bulgarian/ExtendBul.gf index e798bc6f2..f9a30e7c4 100644 --- a/src/bulgarian/ExtendBul.gf +++ b/src/bulgarian/ExtendBul.gf @@ -300,13 +300,25 @@ lin UseDAP dap = { p = NounP3 dap.p } ; -lin GivenName, Surname = \n -> { +lin GivenName = \n -> { s = n.s ; - gn = GSg n.g + gn = GSg (sex2gender n.g) + } ; +lin MaleSurname = \n -> { + s = n.s ! Male ; + gn = GSg Masc + } ; +lin FemaleSurname = \n -> { + s = n.s ! Female; + gn = GSg Fem + } ; +lin PlSurname = \n -> { + s = n.pl ; + gn = GPl } ; lin FullName gn sn = { - s = gn.s ++ sn.s ; - gn = GSg gn.g + s = gn.s ++ sn.s ! gn.g ; + gn = GSg (sex2gender gn.g) } ; } diff --git a/src/bulgarian/MorphoFunsBul.gf b/src/bulgarian/MorphoFunsBul.gf index 4b9cd0093..903a99610 100644 --- a/src/bulgarian/MorphoFunsBul.gf +++ b/src/bulgarian/MorphoFunsBul.gf @@ -271,13 +271,16 @@ oper feminine : Gender = Fem ; neutr : Gender = Neut ; - mkGN : Str -> Gender -> GN = + male : Sex = Male ; + female : Sex = Female ; + + mkGN : Str -> Sex -> GN = \s,g -> lin GN {s = s; g = g} ; mkSN = overload { mkSN : Str -> SN = - \s -> lin SN {s = s; g = Masc} ; - mkSN : Str -> Gender -> SN = - \s,g -> lin SN {s = s; g = g} ; + \s -> lin SN {s = \\_ => s; pl = s} ; + mkSN : Str -> Str -> Str -> SN = + \m,f,pl -> lin SN {s = table Sex [m; f]; pl = pl} ; } ; mkPN = overload { diff --git a/src/bulgarian/ResBul.gf b/src/bulgarian/ResBul.gf index 1bebfa268..8be1f534a 100644 --- a/src/bulgarian/ResBul.gf +++ b/src/bulgarian/ResBul.gf @@ -47,7 +47,8 @@ resource ResBul = ParamX ** open Prelude, Predef in { param Gender = Masc | Fem | Neut ; - + Sex = Male | Female ; + Species = Indef | Def ; -- The plural never makes a gender distinction. @@ -851,4 +852,11 @@ resource ResBul = ParamX ** open Prelude, Predef in { APl Indef => "свои" ; APl Def => "своите" } ; + + sex2gender : Sex -> Gender = \g -> + case g of { + Male => Masc ; + Female => Fem + } ; + } diff --git a/src/catalan/ExtendCat.gf b/src/catalan/ExtendCat.gf index 04e9fac32..b157182b6 100644 --- a/src/catalan/ExtendCat.gf +++ b/src/catalan/ExtendCat.gf @@ -15,7 +15,7 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- - ParadigmsCat in { -- put your own definitions here -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; g = gn.g diff --git a/src/chinese/ExtendChi.gf b/src/chinese/ExtendChi.gf index c49e4da2c..d0d117fff 100644 --- a/src/chinese/ExtendChi.gf +++ b/src/chinese/ExtendChi.gf @@ -17,7 +17,7 @@ concrete ExtendChi of Extend = CatChi ** mkAdv : Str -> Adv ; mkAdv str = lin Adv {s = str ; advType = ATManner ; hasDe = False} ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s } ; diff --git a/src/dutch/ExtendDut.gf b/src/dutch/ExtendDut.gf index 8b822c3be..e8a2468b3 100644 --- a/src/dutch/ExtendDut.gf +++ b/src/dutch/ExtendDut.gf @@ -115,7 +115,7 @@ lin isPron = False } ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\c => gn.s ! NPNom ++ sn.s ! c } ; diff --git a/src/english/ExtendEng.gf b/src/english/ExtendEng.gf index a9cdb3fb4..616dae4ea 100644 --- a/src/english/ExtendEng.gf +++ b/src/english/ExtendEng.gf @@ -472,7 +472,7 @@ lin CardCNCard card cn = {s,sp = \\d,c => card.s ! d ! Nom ++ cn.s ! card.n ! c ; n = Pl} ; lin GivenName gn = gn ; -lin Surname sn = sn ; +lin MaleSurname, FemaleSurname = \sn -> sn ; lin FullName gn sn = { s = \\c => gn.s ! Nom ++ sn.s ! c ; g = gn.g diff --git a/src/estonian/ExtendEst.gf b/src/estonian/ExtendEst.gf index 53750804f..aaaf8ff59 100644 --- a/src/estonian/ExtendEst.gf +++ b/src/estonian/ExtendEst.gf @@ -437,7 +437,7 @@ concrete ExtendEst of Extend = WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\c => gn.s ! Nom ++ sn.s ! c } ; diff --git a/src/finnish/ExtendFin.gf b/src/finnish/ExtendFin.gf index 0d215e68f..093956e1c 100644 --- a/src/finnish/ExtendFin.gf +++ b/src/finnish/ExtendFin.gf @@ -241,7 +241,7 @@ lin UttAccNP np = {s = P.addNegation np.isNeg ++ np.s ! NPAcc} ; lin AdjAsCN ap = {s = ap.s ! True ; postmod = \\_ => ap.p ; h = Back} ; ---- Harmony just a guess lin AdjAsNP ap = MassNP (AdjAsCN ap) ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\c => gn.s ! Nom ++ sn.s ! c } ; diff --git a/src/french/ExtendFre.gf b/src/french/ExtendFre.gf index 963c2ab06..a6639f41c 100644 --- a/src/french/ExtendFre.gf +++ b/src/french/ExtendFre.gf @@ -38,7 +38,7 @@ lin oper de_Quant : Quant = IndefArt ** {s = \\_,_,_,_ => elisDe} ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; g = gn.g diff --git a/src/german/CatGer.gf b/src/german/CatGer.gf index a7e0814b8..48016759c 100644 --- a/src/german/CatGer.gf +++ b/src/german/CatGer.gf @@ -100,7 +100,8 @@ concrete CatGer of Cat = N = ResGer.Noun ; N2 = ResGer.Noun ** {c2 : Preposition} ; N3 = ResGer.Noun ** {c2,c3 : Preposition} ; - GN, SN = {s : Case => Str; g : Gender} ; + GN = {s : Case => Str; g : Sex} ; + SN = {s : Sex => Case => Str} ; PN = {s : Case => Str; g : Gender; n : Number} ; -- tense with possibility to choose conjunctive forms diff --git a/src/german/ExtendGer.gf b/src/german/ExtendGer.gf index de7f24b3a..b86b4d202 100644 --- a/src/german/ExtendGer.gf +++ b/src/german/ExtendGer.gf @@ -141,10 +141,13 @@ lin n = Pl } ; -lin GivenName, Surname = \n -> n ** { n = Sg } ; +lin GivenName = \n -> { s = n.s; g = sex2gender n.g; n = Sg } ; +lin MaleSurname = \n -> { s = n.s ! Male ; g = Masc; n = Sg } ; +lin FemaleSurname = \n -> { s = n.s ! Female ; g = Fem; n = Sg } ; +lin PlSurname = \n -> { s = n.s ! Male ; g = Masc; n = Pl } ; lin FullName gn sn = { - s = \\c => gn.s ! Nom ++ sn.s ! c ; - g = gn.g ; + s = \\c => gn.s ! Nom ++ sn.s ! gn.g ! c ; + g = sex2gender gn.g ; n = Sg } ; } diff --git a/src/german/ParadigmsGer.gf b/src/german/ParadigmsGer.gf index c9c47bf5d..095bbca06 100644 --- a/src/german/ParadigmsGer.gf +++ b/src/german/ParadigmsGer.gf @@ -39,6 +39,9 @@ oper feminine : Gender ; neuter : Gender ; + male : Sex ; + female : Sex ; + -- To abstract over case names, we define the following. Case : Type ; @@ -144,6 +147,24 @@ mkN : overload { } ; + mkGN : overload { + mkGN : Str -> Sex -> GN ; -- regular name with genitive in "s" + mkGN : (nom,gen : Str) -> Sex -> GN ; -- name with other genitive + mkGN : (nom,acc,dat,gen : Str) -> Sex -> GN ; -- name with all case forms + } ; + + mkSN : overload { + mkSN : Str -> GN ; -- regular name with genitive in "s", masculine + +-- If only the genitive differs, two strings are needed. + + mkSN : (nom,gen : Str) -> GN ; -- name with other genitive + +-- In the worst case, all four forms are needed. + + mkSN : (nom,acc,dat,gen : Str) -> GN ; -- name with all case forms + } ; + -- To extract the number of a noun phrase ifPluralNP : NP -> Bool @@ -370,6 +391,8 @@ mkV2 : overload { masculine = Masc ; feminine = Fem ; neuter = Neutr ; + male = Male ; + female = Female ; nominative = NPC Nom ; accusative = NPC Acc ; dative = NPC Dat ; @@ -484,6 +507,27 @@ mkV2 : overload { regPN : (Johann : Str) -> Gender -> PN ; -- Johann, Johanns ; Johannes, Johannes + mkGN = overload { + mkGN : Str -> Sex -> GN = \nom,g -> lin GN {s = (regPN nom (sex2gender g)).s; g = g} ; -- regular name with genitive in "s" + mkGN : (nom,gen : Str) -> Sex -> GN = \nom,gen,g -> lin GN {s = (mk2PN nom gen (sex2gender g)).s; g = g} ; -- name with other genitive + mkGN : (nom,acc,dat,gen : Str) -> Sex -> GN = \nom,acc,dat,gen,g -> + {s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; + g = g ; lock_GN = <>} + } ; + + mkSN = overload { + mkSN : Str -> SN = \s -> lin SN {s = \\_ => (regPN s Masc).s} ; -- regular name with genitive in "s", masculine + +-- If only the genitive differs, two strings are needed. + + mkSN : (nom,gen : Str) -> SN = \nom,gen -> lin SN {s = \\_ => (mk2PN nom gen Masc).s} ; -- name with other genitive + +-- In the worst case, all four forms are needed. + + mkSN : (nom,acc,dat,gen : Str) -> SN = \nom,acc,dat,gen -> + {s = \\_ => table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; + lock_SN = <>} + } ; mk3A : (gut,besser,beste : Str) -> A = \a,b,c -> let aa : Str = case a of { diff --git a/src/german/ResGer.gf b/src/german/ResGer.gf index 20515fddd..47eea586c 100644 --- a/src/german/ResGer.gf +++ b/src/german/ResGer.gf @@ -25,6 +25,7 @@ resource ResGer = ParamX ** open Prelude in { param Case = Nom | Acc | Dat | Gen ; Gender = Masc | Fem | Neutr ; + Sex = Male | Female ; -- Complex $CN$s, like adjectives, have strong and weak forms. @@ -1009,4 +1010,10 @@ resource ResGer = ParamX ** open Prelude in { subj = appPrepNP prep np in ; + sex2gender : Sex -> Gender = \g -> + case g of { + Male => Masc ; + Female => Fem + } ; + } diff --git a/src/italian/ExtendIta.gf b/src/italian/ExtendIta.gf index 8e537611c..37edea3f7 100644 --- a/src/italian/ExtendIta.gf +++ b/src/italian/ExtendIta.gf @@ -15,7 +15,7 @@ concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor-- - ParadigmsIta in { -- put your own definitions here -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; g = gn.g diff --git a/src/korean/ExtendKor.gf b/src/korean/ExtendKor.gf index d85dd2052..560f6bcea 100644 --- a/src/korean/ExtendKor.gf +++ b/src/korean/ExtendKor.gf @@ -9,7 +9,7 @@ concrete ExtendKor of Extend = CatKor -- : NP -> NP -> NP ApposNP np1 np2 = np1 ** {s = \\nf => np1.s ! nf ++ np2.s ! nf} ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\nf => gn.s ! nf ++ sn.s ! nf ; p = gn.p diff --git a/src/maltese/ExtraMlt.gf b/src/maltese/ExtraMlt.gf index 9f010e7c7..7b9dab47a 100644 --- a/src/maltese/ExtraMlt.gf +++ b/src/maltese/ExtraMlt.gf @@ -24,7 +24,7 @@ concrete ExtraMlt of ExtraMltAbs = CatMlt ** a = p.a ; } ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; a = gn.a diff --git a/src/polish/ExtendPol.gf b/src/polish/ExtendPol.gf index b241d9354..58cf42744 100644 --- a/src/polish/ExtendPol.gf +++ b/src/polish/ExtendPol.gf @@ -37,7 +37,7 @@ oper p = P3 }; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { nom = gn.nom ++ sn.nom ; voc = gn.nom ++ sn.voc ; diff --git a/src/portuguese/ExtendPor.gf b/src/portuguese/ExtendPor.gf index 35e052123..68ba4f96c 100644 --- a/src/portuguese/ExtendPor.gf +++ b/src/portuguese/ExtendPor.gf @@ -116,7 +116,7 @@ concrete ExtendPor of Extend = CatPor ** ExtendRomanceFunctor - youPolPlFem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ; theyFem_Pron = mkPronFrom S.they_Pron "elas" "as" "lhes" "elas" Fem Pl P3 ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; g = gn.g diff --git a/src/russian/ExtendRus.gf b/src/russian/ExtendRus.gf index cf796071d..4d9692cca 100644 --- a/src/russian/ExtendRus.gf +++ b/src/russian/ExtendRus.gf @@ -217,7 +217,7 @@ lin oper rus_quoted : Str -> Str = \s -> "«" ++ s ++ "»" ; ---- TODO bind ; move to Prelude? -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ; lin FullName gn sn = { snom = gn.snom ++ sn.snom ; sgen = gn.snom ++ sn.sgen ; diff --git a/src/slovenian/CatSlv.gf b/src/slovenian/CatSlv.gf index 4c66fe16a..c5994727b 100644 --- a/src/slovenian/CatSlv.gf +++ b/src/slovenian/CatSlv.gf @@ -56,7 +56,8 @@ lincat N2 = {s : Case => Number => Str; g : AGender; c : Prep} ; N3 = {s : Case => Number => Str; g : AGender; c : Prep} ; - GN, SN = {s : Case => Str; g : AGender}; + GN = {s : Case => Str; g : Sex}; + SN = {s : Sex => Case => Str}; PN = {s : Case => Str; g : AGender; n : Number}; linref diff --git a/src/slovenian/ExtendSlv.gf b/src/slovenian/ExtendSlv.gf index 988e1d927..0e95985f6 100644 --- a/src/slovenian/ExtendSlv.gf +++ b/src/slovenian/ExtendSlv.gf @@ -57,10 +57,12 @@ lin youPolPl_Pron = youPol_Pron ; youPolPlFem_Pron = youPlFem_Pron ; -lin GivenName, Surname = \n -> n ** {n = Sg} ; +lin GivenName = \n -> {s = n.s; g = sex2agender n.g; n = Sg} ; +lin MaleSurname = \n -> {s = n.s ! Male; g = AMasc Animate; n = Sg} ; +lin FemaleSurname = \n -> {s = n.s ! Female; g = AFem; n = Sg} ; lin FullName gn sn = { - s = \\c => gn.s ! Nom ++ sn.s ! c ; - g = gn.g ; + s = \\c => gn.s ! Nom ++ sn.s ! gn.g ! c ; + g = sex2agender gn.g ; n = Sg } ; diff --git a/src/slovenian/ParadigmsSlv.gf b/src/slovenian/ParadigmsSlv.gf index eed8fe735..6773b767e 100644 --- a/src/slovenian/ParadigmsSlv.gf +++ b/src/slovenian/ParadigmsSlv.gf @@ -16,6 +16,9 @@ oper feminine = AFem; neuter = ANeut; + male = Male ; + female = Female ; + singular : Number = Sg ; dual : Number = Dl ; plural : Number = Pl ; @@ -200,6 +203,44 @@ oper }; } ; + mkGN = overload { + mkGN : Str -> Sex -> GN = + \s,g -> lin GN { + s = \\_ => s ; + g = g + }; + mkGN : (_,_,_,_,_,_ : Str) -> Sex -> GN = + \nom,gen,dat,acc,loc,instr,g -> lin GN { + s = table { + Nom => nom; + Gen => gen; + Dat => dat; + Acc => acc; + Loc => loc; + Instr => instr + }; + g = g + }; + } ; + + mkSN = overload { + mkSN : Str -> SN = + \s -> lin SN { + s = \\_,_ => s + }; + mkPN : (_,_,_,_,_,_ : Str) -> SN = + \nom,gen,dat,acc,loc,instr -> lin SN { + s = \\_ => table { + Nom => nom; + Gen => gen; + Dat => dat; + Acc => acc; + Loc => loc; + Instr => instr + } + }; + } ; + mkV = overload { mkV : (inf : Str) -> V = \v -> regV v (dp 2 v) ; mkV : (inf,stem : Str) -> V = regV ; diff --git a/src/slovenian/ResSlv.gf b/src/slovenian/ResSlv.gf index 436dc70b0..1b3e2446c 100644 --- a/src/slovenian/ResSlv.gf +++ b/src/slovenian/ResSlv.gf @@ -4,6 +4,7 @@ param Case = Nom | Gen | Dat | Acc | Loc | Instr; Number = Sg | Dl | Pl ; Gender = Masc | Fem | Neut ; + Sex = Male | Female ; Person = P1 | P2 | P3 ; Species = Indef | Def ; Animacy = Animate | Inanimate ; @@ -180,4 +181,10 @@ oper Neut => ANeut } ; + sex2agender : Sex -> AGender = \g -> + case g of { + Male => AMasc Animate ; + Female => AFem + } ; + } diff --git a/src/somali/ExtendSom.gf b/src/somali/ExtendSom.gf index 339897013..dd21115b1 100644 --- a/src/somali/ExtendSom.gf +++ b/src/somali/ExtendSom.gf @@ -17,7 +17,7 @@ lin -- FocusAdV : AdV -> S -> Utt ; -- never will I sleep -- FocusAP : AP -> NP -> Utt ; -- green was the tree -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; a = gn.a diff --git a/src/spanish/ExtendSpa.gf b/src/spanish/ExtendSpa.gf index 16be82947..2282d33db 100644 --- a/src/spanish/ExtendSpa.gf +++ b/src/spanish/ExtendSpa.gf @@ -100,7 +100,7 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor - cop = serCopula } ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = gn.s ++ sn.s ; g = gn.g diff --git a/src/swedish/ExtendSwe.gf b/src/swedish/ExtendSwe.gf index eda3f4b39..f895b7a45 100644 --- a/src/swedish/ExtendSwe.gf +++ b/src/swedish/ExtendSwe.gf @@ -393,7 +393,7 @@ lin UseDAPMasc, UseDAPFem = \dap -> lin CardCNCard card cn = {s = \\g => card.s ! cn.g ++ cn.s ! card.n ! DIndef ! Nom ; n = Pl} ; -lin GivenName, Surname = \n -> n ; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ; lin FullName gn sn = { s = \\c => gn.s ! Nom ++ sn.s ! c ; g = gn.g diff --git a/src/turkish/CatTur.gf b/src/turkish/CatTur.gf index 6e3a8c084..83199fbb4 100644 --- a/src/turkish/CatTur.gf +++ b/src/turkish/CatTur.gf @@ -49,11 +49,7 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud N = Noun ; N2 = Noun ** {c : Prep} ; N3 = Noun ** {c1,c2 : Prep} ; - GN, SN = { - s : Case => Str ; - h : Harmony - } ; - PN = { + GN, SN, PN = { s : Case => Str ; h : Harmony ; n : Number diff --git a/src/turkish/ExtendTur.gf b/src/turkish/ExtendTur.gf index 874b079b2..dc45b9e78 100644 --- a/src/turkish/ExtendTur.gf +++ b/src/turkish/ExtendTur.gf @@ -7,7 +7,8 @@ concrete ExtendTur of Extend = CatTur ** open ResTur in { a = {n=num.n; p=P3} ; } ; -lin GivenName, Surname = \n -> n ** {n = Sg}; +lin GivenName, MaleSurname, FemaleSurname = \n -> n ** {n = Sg}; +lin PlSurname = \n -> n ** {n = Pl}; lin FullName gn sn = { s = \\c => gn.s ! Nom ++ sn.s ! c ; h = sn.h ;