summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2010-05-20 11:51:49 +0000
committerkrasimir <krasimir@chalmers.se>2010-05-20 11:51:49 +0000
commit694b0a61ac3305776f55673a1de773156ab8f01b (patch)
tree85c24175973f221dcef366ddff57bbc81f51c31f /examples
parenta3df8b9962986651e7acb0236b9c7790b0211220 (diff)
nationalities and languages in WordsBul and SentencesBul
Diffstat (limited to 'examples')
-rw-r--r--examples/phrasebook/SentencesBul.gf48
-rw-r--r--examples/phrasebook/WordsBul.gf33
2 files changed, 68 insertions, 13 deletions
diff --git a/examples/phrasebook/SentencesBul.gf b/examples/phrasebook/SentencesBul.gf
index 53ea87228..b196034f8 100644
--- a/examples/phrasebook/SentencesBul.gf
+++ b/examples/phrasebook/SentencesBul.gf
@@ -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)) ;
+
+}
diff --git a/examples/phrasebook/WordsBul.gf b/examples/phrasebook/WordsBul.gf
index acfe05566..8d2f2568f 100644
--- a/examples/phrasebook/WordsBul.gf
+++ b/examples/phrasebook/WordsBul.gf
@@ -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