1
0
forked from GitHub/gf-rgl

extend the names API

This commit is contained in:
Krasimir Angelov
2023-02-07 08:47:34 +01:00
parent a6faaeb351
commit 828bf9c677
33 changed files with 182 additions and 57 deletions

View File

@@ -293,7 +293,9 @@ fun
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
GivenName : GN -> PN ; GivenName : GN -> PN ;
Surname : SN -> PN ; MaleSurname : SN -> PN ;
FemaleSurname : SN -> PN ;
PlSurname : SN -> PN ;
FullName : GN -> SN -> PN ; FullName : GN -> SN -> PN ;
} }

View File

@@ -6,7 +6,7 @@ concrete ExtendAfr of Extend =
open open
ResAfr in { ResAfr in {
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = \\c => gn.s ! NPNom ++ sn.s ! c ; s = \\c => gn.s ! NPNom ++ sn.s ! c ;
} ; } ;

View File

@@ -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} ; N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ;
N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ; 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} ; 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} ; PN = {s : Str; gn : GenNum} ;
lindef lindef

View File

@@ -92,27 +92,23 @@ lin
s3 = "" s3 = ""
} ; } ;
InflectionGN = \pn -> { InflectionGN = \gn -> {
t = "същ.с.л." ; t = "същ.с.л." ;
s1= heading1 ("Собствено Име"++ s1= heading1 (case gn.g of {
case pn.g of { Male => "Мъжко Име" ;
Masc => "(м.р.)" ; Female => "Женско Име"
Fem => "(ж.р.)" ;
Neut => "(ср.р.)"
}) ; }) ;
s2 = pn.s ; s2 = gn.s ;
s3 = "" s3 = ""
} ; } ;
InflectionSN = \pn -> { InflectionSN = \sn -> {
t = "същ.с.ф." ; t = "същ.с.ф." ;
s1= heading1 ("Фамилно Име"++ s1= heading1 ("Фамилно Име") ;
case pn.g of { s2 = frameTable (
Masc => "(м.р.)" ; tr (th "мъжко" ++ td (sn.s ! Male)) ++
Fem => "(ж.р.)" ; tr (th "женско" ++ td (sn.s ! Female)) ++
Neut => "(ср.р.)" tr (th "семейно" ++ td sn.pl)) ;
}) ;
s2 = pn.s ;
s3 = "" s3 = ""
} ; } ;

View File

@@ -300,13 +300,25 @@ lin UseDAP dap = {
p = NounP3 dap.p p = NounP3 dap.p
} ; } ;
lin GivenName, Surname = \n -> { lin GivenName = \n -> {
s = n.s ; 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 = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ! gn.g ;
gn = GSg gn.g gn = GSg (sex2gender gn.g)
} ; } ;
} }

View File

@@ -271,13 +271,16 @@ oper
feminine : Gender = Fem ; feminine : Gender = Fem ;
neutr : Gender = Neut ; 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} ; \s,g -> lin GN {s = s; g = g} ;
mkSN = overload { mkSN = overload {
mkSN : Str -> SN = mkSN : Str -> SN =
\s -> lin SN {s = s; g = Masc} ; \s -> lin SN {s = \\_ => s; pl = s} ;
mkSN : Str -> Gender -> SN = mkSN : Str -> Str -> Str -> SN =
\s,g -> lin SN {s = s; g = g} ; \m,f,pl -> lin SN {s = table Sex [m; f]; pl = pl} ;
} ; } ;
mkPN = overload { mkPN = overload {

View File

@@ -47,7 +47,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
param param
Gender = Masc | Fem | Neut ; Gender = Masc | Fem | Neut ;
Sex = Male | Female ;
Species = Indef | Def ; Species = Indef | Def ;
-- The plural never makes a gender distinction. -- The plural never makes a gender distinction.
@@ -851,4 +852,11 @@ resource ResBul = ParamX ** open Prelude, Predef in {
APl Indef => "свои" ; APl Indef => "свои" ;
APl Def => "своите" APl Def => "своите"
} ; } ;
sex2gender : Sex -> Gender = \g ->
case g of {
Male => Masc ;
Female => Fem
} ;
} }

View File

@@ -15,7 +15,7 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
ParadigmsCat in { ParadigmsCat in {
-- put your own definitions here -- put your own definitions here
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
g = gn.g g = gn.g

View File

@@ -17,7 +17,7 @@ concrete ExtendChi of Extend = CatChi **
mkAdv : Str -> Adv ; mkAdv : Str -> Adv ;
mkAdv str = lin Adv {s = str ; advType = ATManner ; hasDe = False} ; 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 = { lin FullName gn sn = {
s = gn.s ++ sn.s s = gn.s ++ sn.s
} ; } ;

View File

@@ -115,7 +115,7 @@ lin
isPron = False isPron = False
} ; } ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = \\c => gn.s ! NPNom ++ sn.s ! c s = \\c => gn.s ! NPNom ++ sn.s ! c
} ; } ;

View File

@@ -472,7 +472,7 @@ lin CardCNCard card cn =
{s,sp = \\d,c => card.s ! d ! Nom ++ cn.s ! card.n ! c ; n = Pl} ; {s,sp = \\d,c => card.s ! d ! Nom ++ cn.s ! card.n ! c ; n = Pl} ;
lin GivenName gn = gn ; lin GivenName gn = gn ;
lin Surname sn = sn ; lin MaleSurname, FemaleSurname = \sn -> sn ;
lin FullName gn sn = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ; s = \\c => gn.s ! Nom ++ sn.s ! c ;
g = gn.g g = gn.g

View File

@@ -437,7 +437,7 @@ concrete ExtendEst of Extend =
WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ; WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c s = \\c => gn.s ! Nom ++ sn.s ! c
} ; } ;

View File

@@ -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 AdjAsCN ap = {s = ap.s ! True ; postmod = \\_ => ap.p ; h = Back} ; ---- Harmony just a guess
lin AdjAsNP ap = MassNP (AdjAsCN ap) ; lin AdjAsNP ap = MassNP (AdjAsCN ap) ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c s = \\c => gn.s ! Nom ++ sn.s ! c
} ; } ;

View File

@@ -38,7 +38,7 @@ lin
oper oper
de_Quant : Quant = IndefArt ** {s = \\_,_,_,_ => elisDe} ; de_Quant : Quant = IndefArt ** {s = \\_,_,_,_ => elisDe} ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
g = gn.g g = gn.g

View File

@@ -100,7 +100,8 @@ concrete CatGer of Cat =
N = ResGer.Noun ; N = ResGer.Noun ;
N2 = ResGer.Noun ** {c2 : Preposition} ; N2 = ResGer.Noun ** {c2 : Preposition} ;
N3 = ResGer.Noun ** {c2,c3 : 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} ; PN = {s : Case => Str; g : Gender; n : Number} ;
-- tense with possibility to choose conjunctive forms -- tense with possibility to choose conjunctive forms

View File

@@ -141,10 +141,13 @@ lin
n = Pl 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 = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ; s = \\c => gn.s ! Nom ++ sn.s ! gn.g ! c ;
g = gn.g ; g = sex2gender gn.g ;
n = Sg n = Sg
} ; } ;
} }

View File

@@ -39,6 +39,9 @@ oper
feminine : Gender ; feminine : Gender ;
neuter : Gender ; neuter : Gender ;
male : Sex ;
female : Sex ;
-- To abstract over case names, we define the following. -- To abstract over case names, we define the following.
Case : Type ; 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 -- To extract the number of a noun phrase
ifPluralNP : NP -> Bool ifPluralNP : NP -> Bool
@@ -370,6 +391,8 @@ mkV2 : overload {
masculine = Masc ; masculine = Masc ;
feminine = Fem ; feminine = Fem ;
neuter = Neutr ; neuter = Neutr ;
male = Male ;
female = Female ;
nominative = NPC Nom ; nominative = NPC Nom ;
accusative = NPC Acc ; accusative = NPC Acc ;
dative = NPC Dat ; dative = NPC Dat ;
@@ -484,6 +507,27 @@ mkV2 : overload {
regPN : (Johann : Str) -> Gender -> PN ; regPN : (Johann : Str) -> Gender -> PN ;
-- Johann, Johanns ; Johannes, Johannes -- 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 -> mk3A : (gut,besser,beste : Str) -> A = \a,b,c ->
let aa : Str = case a of { let aa : Str = case a of {

View File

@@ -25,6 +25,7 @@ resource ResGer = ParamX ** open Prelude in {
param param
Case = Nom | Acc | Dat | Gen ; Case = Nom | Acc | Dat | Gen ;
Gender = Masc | Fem | Neutr ; Gender = Masc | Fem | Neutr ;
Sex = Male | Female ;
-- Complex $CN$s, like adjectives, have strong and weak forms. -- Complex $CN$s, like adjectives, have strong and weak forms.
@@ -1009,4 +1010,10 @@ resource ResGer = ParamX ** open Prelude in {
subj = appPrepNP prep np subj = appPrepNP prep np
in <subj , agr> ; in <subj , agr> ;
sex2gender : Sex -> Gender = \g ->
case g of {
Male => Masc ;
Female => Fem
} ;
} }

View File

@@ -15,7 +15,7 @@ concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor-- -
ParadigmsIta in { ParadigmsIta in {
-- put your own definitions here -- put your own definitions here
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
g = gn.g g = gn.g

View File

@@ -9,7 +9,7 @@ concrete ExtendKor of Extend = CatKor
-- : NP -> NP -> NP -- : NP -> NP -> NP
ApposNP np1 np2 = np1 ** {s = \\nf => np1.s ! nf ++ np2.s ! nf} ; 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 = { lin FullName gn sn = {
s = \\nf => gn.s ! nf ++ sn.s ! nf ; s = \\nf => gn.s ! nf ++ sn.s ! nf ;
p = gn.p p = gn.p

View File

@@ -24,7 +24,7 @@ concrete ExtraMlt of ExtraMltAbs = CatMlt **
a = p.a ; a = p.a ;
} ; } ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
a = gn.a a = gn.a

View File

@@ -37,7 +37,7 @@ oper
p = P3 p = P3
}; };
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
nom = gn.nom ++ sn.nom ; nom = gn.nom ++ sn.nom ;
voc = gn.nom ++ sn.voc ; voc = gn.nom ++ sn.voc ;

View File

@@ -116,7 +116,7 @@ concrete ExtendPor of Extend = CatPor ** ExtendRomanceFunctor -
youPolPlFem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ; youPolPlFem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ;
theyFem_Pron = mkPronFrom S.they_Pron "elas" "as" "lhes" "elas" Fem Pl P3 ; 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 = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
g = gn.g g = gn.g

View File

@@ -217,7 +217,7 @@ lin
oper oper
rus_quoted : Str -> Str = \s -> "«" ++ s ++ "»" ; ---- TODO bind ; move to Prelude? 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 = { lin FullName gn sn = {
snom = gn.snom ++ sn.snom ; snom = gn.snom ++ sn.snom ;
sgen = gn.snom ++ sn.sgen ; sgen = gn.snom ++ sn.sgen ;

View File

@@ -56,7 +56,8 @@ lincat
N2 = {s : Case => Number => Str; g : AGender; c : Prep} ; N2 = {s : Case => Number => Str; g : AGender; c : Prep} ;
N3 = {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}; PN = {s : Case => Str; g : AGender; n : Number};
linref linref

View File

@@ -57,10 +57,12 @@ lin
youPolPl_Pron = youPol_Pron ; youPolPl_Pron = youPol_Pron ;
youPolPlFem_Pron = youPlFem_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 = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ; s = \\c => gn.s ! Nom ++ sn.s ! gn.g ! c ;
g = gn.g ; g = sex2agender gn.g ;
n = Sg n = Sg
} ; } ;

View File

@@ -16,6 +16,9 @@ oper
feminine = AFem; feminine = AFem;
neuter = ANeut; neuter = ANeut;
male = Male ;
female = Female ;
singular : Number = Sg ; singular : Number = Sg ;
dual : Number = Dl ; dual : Number = Dl ;
plural : Number = Pl ; 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 = overload {
mkV : (inf : Str) -> V = \v -> regV v (dp 2 v) ; mkV : (inf : Str) -> V = \v -> regV v (dp 2 v) ;
mkV : (inf,stem : Str) -> V = regV ; mkV : (inf,stem : Str) -> V = regV ;

View File

@@ -4,6 +4,7 @@ param
Case = Nom | Gen | Dat | Acc | Loc | Instr; Case = Nom | Gen | Dat | Acc | Loc | Instr;
Number = Sg | Dl | Pl ; Number = Sg | Dl | Pl ;
Gender = Masc | Fem | Neut ; Gender = Masc | Fem | Neut ;
Sex = Male | Female ;
Person = P1 | P2 | P3 ; Person = P1 | P2 | P3 ;
Species = Indef | Def ; Species = Indef | Def ;
Animacy = Animate | Inanimate ; Animacy = Animate | Inanimate ;
@@ -180,4 +181,10 @@ oper
Neut => ANeut Neut => ANeut
} ; } ;
sex2agender : Sex -> AGender = \g ->
case g of {
Male => AMasc Animate ;
Female => AFem
} ;
} }

View File

@@ -17,7 +17,7 @@ lin
-- FocusAdV : AdV -> S -> Utt ; -- never will I sleep -- FocusAdV : AdV -> S -> Utt ; -- never will I sleep
-- FocusAP : AP -> NP -> Utt ; -- green was the tree -- FocusAP : AP -> NP -> Utt ; -- green was the tree
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
a = gn.a a = gn.a

View File

@@ -100,7 +100,7 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor -
cop = serCopula cop = serCopula
} ; } ;
lin GivenName, Surname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s ; s = gn.s ++ sn.s ;
g = gn.g g = gn.g

View File

@@ -393,7 +393,7 @@ lin UseDAPMasc, UseDAPFem = \dap ->
lin CardCNCard card cn = lin CardCNCard card cn =
{s = \\g => card.s ! cn.g ++ cn.s ! card.n ! DIndef ! Nom ; n = Pl} ; {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 = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ; s = \\c => gn.s ! Nom ++ sn.s ! c ;
g = gn.g g = gn.g

View File

@@ -49,11 +49,7 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud
N = Noun ; N = Noun ;
N2 = Noun ** {c : Prep} ; N2 = Noun ** {c : Prep} ;
N3 = Noun ** {c1,c2 : Prep} ; N3 = Noun ** {c1,c2 : Prep} ;
GN, SN = { GN, SN, PN = {
s : Case => Str ;
h : Harmony
} ;
PN = {
s : Case => Str ; s : Case => Str ;
h : Harmony ; h : Harmony ;
n : Number n : Number

View File

@@ -7,7 +7,8 @@ concrete ExtendTur of Extend = CatTur ** open ResTur in {
a = {n=num.n; p=P3} ; 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 = { lin FullName gn sn = {
s = \\c => gn.s ! Nom ++ sn.s ! c ; s = \\c => gn.s ! Nom ++ sn.s ! c ;
h = sn.h ; h = sn.h ;