make mkPN more portable across languages

This commit is contained in:
Krasimir Angelov
2022-08-02 16:07:27 +02:00
parent a181ab36a4
commit 607f4d68ae
4 changed files with 26 additions and 3 deletions

View File

@@ -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 =

View File

@@ -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
} ;

View File

@@ -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 ;
} ;

View File

@@ -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