1
0
forked from GitHub/gf-core

nationalities and languages in WordsBul and SentencesBul

This commit is contained in:
krasimir
2010-05-20 11:51:49 +00:00
parent ff36ba89ef
commit 5c13c2c63e
2 changed files with 68 additions and 13 deletions

View File

@@ -1,4 +1,48 @@
concrete SentencesBul of Sentences = NumeralBul ** SentencesI with
concrete SentencesBul of Sentences =
NumeralBul ** SentencesI - [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale,
YouPolFemale, ACitizen, Citizenship, PCitizenship,
LangNat, CitiNat, CountryNat, PropCit,
Nationality, Country, Language, PLanguage, PCountry] with
(Syntax = SyntaxBul),
(Symbolic = SymbolicBul),
(Lexicon = LexiconBul) ;
(Lexicon = LexiconBul) ** open ExtraBul, (R = ResBul) in {
lincat
Citizenship = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
s2 : A -- furthermore, adjective for Property
} ;
Nationality = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
s2 : A; -- furthermore, adjective for Property
s3 : PN -- country name
} ;
Language = A ;
Country = PN ;
lin IMale = mkPerson i_Pron ;
IFemale = mkPerson i8fem_Pron ;
lin YouFamMale = mkPerson youSg_Pron ;
YouFamFemale = mkPerson youSg8fem_Pron ;
YouPolMale = mkPerson youPol_Pron ;
YouPolFemale = mkPerson youPol8fem_Pron ;
lin ACitizen p cit =
let noun : N
= case p.name.a.gn of {
R.GSg g => lin N {s = \\nf => cit.s1 ! g ! nf; g = case g of {R.Masc=>R.AMasc R.Human; R.Fem=>R.AFem; R.Neut=>R.ANeut}} ;
R.GPl => lin N {s = \\nf => cit.s1 ! R.Masc ! nf; g = R.AMasc R.Human}
} ;
in mkCl p.name noun ;
PCitizenship cit =
mkPhrase (mkUtt (mkAP cit.s2)) ;
LangNat n = n.s2 ;
CitiNat n = n ;
CountryNat n = n.s3 ;
PropCit cit = cit.s2 ;
PLanguage x = mkPhrase (mkUtt (mkAP x)) ;
PCountry x = mkPhrase (mkUtt (mkNP x)) ;
}

View File

@@ -91,15 +91,24 @@ concrete WordsBul of Words = SentencesBul **
-- Nationalities
Belgian = mkA078 "белгийски" ;
-- Belgium = mkNP (mkPN "Белгия" Fem) ;
-- English = mkA078 "английски" ;
-- Finnish = mkNat "Finnish" "Finland" ;
-- Flemish = mkNP (mkPN "Flemish") ;
-- French = mkNat "French" "France" ;
-- Italian = mkNat "Italian" "Italy" ;
-- Romanian = mkNat "Romanian" "Romania" ;
-- Swedish = mkNat "Swedish" "Sweden" ;
Belgian = mkCitizenship (mkN013 "белгиец") (mkN041 "белгийка") (mkA078 "белгийски") ;
Belgium = mkPN "Белгия" R.Fem ;
Bulgarian = mkNat (mkN018 "българин") (mkN041 "българка") (mkA078 "български") (mkPN "България" R.Fem) ;
Catalan = mkNat (mkN008a "каталонец") (mkN041 "каталонка") (mkA078 "каталонски") (mkPN "Каталуния" R.Fem) ;
Danish = mkNat (mkN018 "датчанин") (mkN041 "датчанка") (mkA078 "датски") (mkPN "Дания" R.Fem) ;
Dutch = mkNat (mkN008a "холандец") (mkN041 "холандка") (mkA078 "холандски") (mkPN "Холандия" R.Fem) ;
English = mkNat (mkN018 "англичанин") (mkN041 "англичанка") (mkA078 "английски") (mkPN "Англия" R.Fem) ;
Finnish = mkNat (mkN008a "финландец") (mkN041 "финландка") (mkA078 "финландски") (mkPN "Финландия" R.Fem) ;
Flemish = mkA078 "фламандски" ;
French = mkNat (mkN018 "французин") (mkN041 "французойка") (mkA078 "френски") (mkPN "Франция" R.Fem) ;
German = mkNat (mkN008a "германец") (mkN041 "германка") (mkA078 "немски") (mkPN "Германия" R.Fem) ;
Italian = mkNat (mkN008a "италианец") (mkN041 "италианка") (mkA078 "италиански") (mkPN "Италия" R.Fem) ;
Norwegian = mkNat (mkN008a "норвежец") (mkN041 "норвежка") (mkA078 "норвежки") (mkPN "Норвегия" R.Fem) ;
Polish = mkNat (mkN014 "поляк") (mkN047 "полякиня") (mkA078 "полски") (mkPN "Полша" R.Fem) ;
Romanian = mkNat (mkN008a "румънец") (mkN041 "румънка") (mkA078 "румънски") (mkPN "Румъния" R.Fem) ;
Russian = mkNat (mkN014 "руснак") (mkN047 "рускиня") (mkA078 "руски") (mkPN "Русия" R.Fem) ;
Swedish = mkNat (mkN007 "швед") (mkN041 "шведка") (mkA078 "шведски") (mkPN "Швеция" R.Fem) ;
Spanish = mkNat (mkN008a "испанец") (mkN041 "испанка") (mkA078 "испански") (mkPN "Испания" R.Fem) ;
-- Actions: the predication patterns are very often language-dependent.
@@ -173,9 +182,11 @@ concrete WordsBul of Words = SentencesBul **
-- auxiliaries
oper
mkCitizenship : N -> N -> A -> Citizenship
= \male, female, adj -> lin Citizenship {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj} ;
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
mkNat : N -> N -> A -> PN -> Nationality
= \male, female, adj, country -> lin Nationality {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj; s3 = country} ;
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
-- let day = mkNP (mkPN d) in