mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-15 18:10:12 -06:00
the names API in more languages
This commit is contained in:
@@ -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 ;
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user