From 607f4d68ae69153e58311b1056a7a0f6d96e9ffd Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 2 Aug 2022 16:07:27 +0200 Subject: [PATCH] make mkPN more portable across languages --- src/bulgarian/MorphoFunsBul.gf | 6 ++++++ src/english/ParadigmsEng.gf | 2 ++ src/maltese/ParadigmsMlt.gf | 14 ++++++++++++-- src/turkish/ParadigmsTur.gf | 7 ++++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/bulgarian/MorphoFunsBul.gf b/src/bulgarian/MorphoFunsBul.gf index bd4f9266b..43add1193 100644 --- a/src/bulgarian/MorphoFunsBul.gf +++ b/src/bulgarian/MorphoFunsBul.gf @@ -266,7 +266,13 @@ oper --2 Proper Names -- + + masculine : Gender = Masc ; + feminine : Gender = Fem ; + neutr : Gender = Neut ; + mkPN = overload { + mkPN : Str -> PN = \s -> {s = s; gn = GSg Masc ; lock_PN = <>} ; mkPN : Str -> Gender -> PN = \s,g -> {s = s; gn = GSg g ; lock_PN = <>} ; mkPN : Str -> GenNum -> PN = diff --git a/src/english/ParadigmsEng.gf b/src/english/ParadigmsEng.gf index 121a77588..348b85be0 100644 --- a/src/english/ParadigmsEng.gf +++ b/src/english/ParadigmsEng.gf @@ -132,6 +132,7 @@ oper mkPN : overload { mkPN : Str -> PN ; + mkPN : Str -> Gender -> PN ; -- Sometimes a common noun can be reused as a proper name, e.g. "Bank" @@ -435,6 +436,7 @@ mkVoc s = lin Voc (ss s) ; mkPN = overload { mkPN : Str -> PN = regPN ; + mkPN : Str -> Gender -> PN = regGenPN ; mkPN : N -> PN = nounPN } ; diff --git a/src/maltese/ParadigmsMlt.gf b/src/maltese/ParadigmsMlt.gf index aaf7379c6..78afebc93 100644 --- a/src/maltese/ParadigmsMlt.gf +++ b/src/maltese/ParadigmsMlt.gf @@ -78,7 +78,11 @@ resource ParadigmsMlt = open mkNDual : Str -> Str -> Str -> Str -> Gender -> N ; -- Noun paradigm 4x: Explicit gender } ; - mkPN : Str -> Gender -> Number -> ProperNoun ; -- Proper noun + mkPN : overload { + mkPN : Str -> PN ; + mkPN : Str -> Gender -> PN ; + mkPN : Str -> Gender -> Number -> PN ; + } ; mkN2 : overload { mkN2 : N -> Prep -> N2 ; @@ -324,8 +328,14 @@ resource ParadigmsMlt = open } ) ; + mkPN = overload { + mkPN : Str -> PN = \s -> regPN s masculine singular ; + mkPN : Str -> Gender -> PN = \s,g -> regPN s g singular ; + mkPN : Str -> Gender -> Number -> PN = \s,g,n -> regPN s g n ; + } ; + -- Proper noun - mkPN : Str -> Gender -> Number -> ProperNoun = \name,g,n -> { + regPN : Str -> Gender -> Number -> PN = \name,g,n -> lin PN { s = name ; a = mkAgr n P3 g ; } ; diff --git a/src/turkish/ParadigmsTur.gf b/src/turkish/ParadigmsTur.gf index 36f220dd5..6f50a2122 100644 --- a/src/turkish/ParadigmsTur.gf +++ b/src/turkish/ParadigmsTur.gf @@ -142,6 +142,11 @@ resource ParadigmsTur = open -- Paradigm for regular noun regN : Str -> N ; + mkPN = overload { + mkPN : Str -> PN = regPN ; + mkPN : Str -> Str -> PN = makePN ; + } ; + -- Paradigm for proper noun regPN : Str -> PN ; @@ -405,7 +410,7 @@ resource ParadigmsTur = open pln har ; - makePN sn sy = makeHarPN sn sy (getHarmony sn) ; + makePN sn sy = lin PN (makeHarPN sn sy (getHarmony sn)) ; linkNoun n1 n2 lt ct = let n1sn = n1.s ! Sg ! Nom ;--tere