the names API in more languages

This commit is contained in:
Krasimir Angelov
2023-08-16 19:39:22 +02:00
parent d25d648134
commit 6bc965f6c2
69 changed files with 1584 additions and 270 deletions

View File

@@ -95,7 +95,10 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
N = SNoun ;
N2 = SNoun ** {c2 : Compl ; isPre : Bool ; postmod : Number => Str} ;
N3 = SNoun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ;
GN, SN, LN, PN = SPN ;
PN = SPN ;
LN = SPN ** {n : Number} ;
GN = SPN ** {g : Sex} ;
SN = {s : Sex => SPN; pl : SPN} ;
linref
SSlash = \ss -> ss.s ++ ss.c2.s.p1 ;

View File

@@ -33,26 +33,29 @@ lin
InflectionPN = \pn -> {
t = "s" ;
s1 = heading1 (heading noun_Category) ;
s1 = heading1 "Oikea Nimi" ;
s2 = inflPN (\c -> pn.s ! c)
} ;
InflectionLN = \pn -> {
InflectionLN ln = {
t = "s" ;
s1 = heading1 (heading noun_Category) ;
s2 = inflPN (\c -> pn.s ! c)
s1 = heading1 "Paikannimi" ;
s2 = inflPN (\c -> ln.s ! c)
} ;
InflectionGN = \pn -> {
InflectionGN gn = {
t = "s" ;
s1 = heading1 "Etunimi" ;
s2 = inflPN (\c -> pn.s ! c)
s1 = heading1 "Etunimi"++case gn.g of {
Male => "(mies)" ;
Female => "(nainen)"
} ;
s2 = inflPN (\c -> gn.s ! c)
} ;
InflectionSN = \pn -> {
InflectionSN sn = {
t = "s" ;
s1 = heading1 "Sukunimi" ;
s2 = inflPN (\c -> pn.s ! c)
s2 = inflPN (\c -> (sn.s ! Male).s ! c)
} ;
InflectionA, InflectionA2 = \adj -> {

View File

@@ -1,20 +1,43 @@
concrete NamesFin of Names = CatFin ** open ResFin, StemFin, Prelude in {
lin GivenName, MaleSurname, FemaleSurname = \n -> {
lin GivenName n = {
s = snoun2np Sg n ;
a = agrP3 Sg ;
isPron = False ; isNeg = False
} ;
lin MaleSurname n = {
s = snoun2np Sg (n.s ! Male) ;
a = agrP3 Sg ;
isPron = False ; isNeg = False
} ;
lin FemaleSurname n = {
s = snoun2np Sg (n.s ! Female) ;
a = agrP3 Sg ;
isPron = False ; isNeg = False
} ;
lin PlSurname n = {
s = snoun2np Pl n.pl ;
a = agrP3 Pl ;
isPron = False ; isNeg = False
} ;
lin FullName gn sn = {
s = snoun2np Sg {s = \\c => gn.s ! Nom ++ sn.s ! c} ;
s = snoun2np Sg {s = \\c => gn.s ! Nom ++ (sn.s ! gn.g).s ! c} ;
a = agrP3 Sg ;
isPron = False ; isNeg = False
} ;
lin UseLN pn = {
s = snoun2np Sg pn ;
a = agrP3 Sg ;
lin UseLN, PlainLN = \ln -> {
s = snoun2np ln.n ln ;
a = agrP3 ln.n ;
isPron = False ; isNeg = False
} ;
lin InLP ln = {
s = appCompl True Pos ln.c { s = snoun2np ln.n ln ;
a = agrP3 ln.n ;
isPron = False ;
isNeg = False
}
} ;
}

View File

@@ -422,6 +422,9 @@ mkVS = overload {
Case = MorphoFin.Case ;
Number = MorphoFin.Number ;
male = Male ;
female = Female ;
singular = Sg ;
plural = Pl ;
@@ -841,6 +844,36 @@ mkVS = overload {
}
} ;
mkLN = overload {
mkLN : Str -> LN = \s -> lin LN (snoun2spn (mk1N s) ** {n = Sg}) ;
mkLN : Str -> Number -> LN = \s,n -> lin LN (snoun2spn (mk1N s) ** {n = n}) ;
mkLN : N -> LN = \noun -> lin LN (snoun2spn noun ** {n = Sg}) ;
mkLN : N -> Number -> LN = \noun,n -> lin LN (snoun2spn noun ** {n = n}) ;
} ;
mkGN = overload {
mkGN : Str -> GN = \s -> lin GN (snoun2spn (mk1N s) ** {g = Male}) ;
mkGN : Str -> Sex -> GN = \s,g -> lin GN (snoun2spn (mk1N s) ** {g = g}) ;
mkGN : N -> GN = \noun -> lin GN (snoun2spn noun ** {g = Male}) ;
mkGN : N -> Sex -> GN = \noun,g -> lin GN (snoun2spn noun ** {g = g}) ;
} ;
mkSN = overload {
mkSN : Str -> SN = \s -> let spn = snoun2spn (mk1N s) in lin SN {s = \\_=>spn; pl=spn} ;
mkSN : Str -> Str -> Str -> SN
= \male,female,pl -> lin SN {
s = table {Male =>snoun2spn (mk1N male);
Female=>snoun2spn (mk1N female)};
pl= snoun2spn (mk1N pl)
} ;
mkSN : N -> SN = \noun -> let spn = snoun2spn noun in lin SN {s = \\_=>spn; pl=spn} ;
mkSN : N -> N -> N -> SN
= \male,female,pl -> lin SN {
s = table {Male =>snoun2spn male;
Female=>snoun2spn female};
pl= snoun2spn pl
} ;
} ;
-- adjectives