summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInari Listenmaa <inari.listenmaa@gmail.com>2018-04-30 16:38:20 +0200
committerInari Listenmaa <inari.listenmaa@gmail.com>2018-04-30 16:38:20 +0200
commitece39a887978b41c0f268de516c0a21e84c0d554 (patch)
treed4ee04eb8e27415dea6f20b41214abfb2fc8deed
parenta0fc1dfddd4bda696ed84db918733b31b1eccc86 (diff)
Estonian Phrasebook: '<Nationality> restaurant' and 'NN is <Nationality>' use different forms
-rw-r--r--examples/phrasebook/SentencesEst.gf22
-rw-r--r--examples/phrasebook/WordsEst.gf60
2 files changed, 45 insertions, 37 deletions
diff --git a/examples/phrasebook/SentencesEst.gf b/examples/phrasebook/SentencesEst.gf
index 2615f7434..667880f33 100644
--- a/examples/phrasebook/SentencesEst.gf
+++ b/examples/phrasebook/SentencesEst.gf
@@ -1,7 +1,7 @@
concrete SentencesEst of Sentences = NumeralEst ** SentencesI -
[NameNN, ObjMass,
- NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl,
- CitiNat,
+ NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl, NPNationality, mkNPNationality,
+ CitiNat, Citizenship, Nationality, ACitizen, PropCit, PCitizenship,
GObjectPlease
] with
(Syntax = SyntaxEst),
@@ -11,9 +11,15 @@ concrete SentencesEst of Sentences = NumeralEst ** SentencesI -
flags optimize = noexpand ;
+ lincat
+ Citizenship = ACitizenship ;
+ Nationality = NPNationality ;
+
oper
- NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
- CNPlace = {name : CN ; at : Prep ; to : Prep ; from : Prep ; isPl : Bool} ;
+ NPPlace : Type = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
+ CNPlace : Type = {name : CN ; at : Prep ; to : Prep ; from : Prep ; isPl : Bool} ;
+ ACitizenship : Type = { prop : A ; nat : A } ;
+ NPNationality : Type = ACitizenship ** {lang : NP ; country : NP} ;
placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
let name : NP = mkNP det kind.name in {
@@ -50,6 +56,8 @@ concrete SentencesEst of Sentences = NumeralEst ** SentencesI -
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "palun"))) ;
- CitiNat n = n.prop ;
-
- }
+ CitiNat n = n ; -- keep just prop and nat fields
+ PropCit c = c.prop ;
+ PCitizenship c = mkPhrase (mkUtt (mkAP c.prop)) ;
+ ACitizen p n = mkCl p.name n.nat ;
+}
diff --git a/examples/phrasebook/WordsEst.gf b/examples/phrasebook/WordsEst.gf
index 5d25e8b63..86c78e1c8 100644
--- a/examples/phrasebook/WordsEst.gf
+++ b/examples/phrasebook/WordsEst.gf
@@ -61,7 +61,7 @@ concrete WordsEst of Words = SentencesEst **
School = mkPlace (mkN "kool") ssa ; -- different in Fin
CitRestaurant cit = {
- name = mkCN cit (mkN "restoran") ;
+ name = mkCN cit.prop (mkN "restoran") ;
at = casePrep inessive ;
to = casePrep illative;
from = casePrep elative ;
@@ -94,32 +94,32 @@ concrete WordsEst of Words = SentencesEst **
Yuan = mkCN (mkN "jüään") ;
-- Citizenship
- Belgian = mkA "belgia" ;
- Indian = mkA "india" ;
+ Belgian = { prop = invA "belgia" ; nat = mkA "belglane" } ;
+ Indian = { prop = invA "india" ; nat = mkA "indialane" } ;
-- Country
Belgium = mkNP (mkPN "Belgia") ;
India = mkNP (mkPN "India") ;
-- Nationality
- Bulgarian = mkNat "bulgaaria" (mkPN "Bulgaaria") ;
- Catalan = mkNat "katalaani" (mkPN "Kataloonia") ;
- Chinese = mkNat "hiina" (mkPN "Hiina") ;
- Danish = mkNat "taani" (mkPN "Taani") ;
- Dutch = mkNat "hollandi" (mkPN "Holland") ;
- English = mkNat "inglise" (mkPN "Inglismaa") ;
- Finnish = mkNat "soome" (mkPN "Soome") ;
+ Bulgarian = mkNat "bulgaaria" "bulgaarlane" (mkPN "Bulgaaria") ;
+ Catalan = mkNat "katalaani" "kataloonlane" (mkPN "Kataloonia") ;
+ Chinese = mkNat "hiina" "hiinlane" (mkPN "Hiina") ;
+ Danish = mkNat "taani" "taanlane" (mkPN "Taani") ;
+ Dutch = mkNat "hollandi" "hollandlane" (mkPN "Holland") ;
+ English = mkNat "inglise" "inglane" (mkPN "Inglismaa") ;
+ Finnish = mkNat "soome" "soomlane" (mkPN "Soome") ;
Flemish = mkNP (mkPN "flaami keel") ; -- Language
Hindi = mkNP (mkPN "hindi keel") ; -- Language
- French = mkNat "prantsuse" (mkPN "Prantsusmaa") ;
- German = mkNat "saksa" (mkPN "Saksamaa") ;
- Italian = mkNat "itaalia" (mkPN "Itaalia") ;
- Norwegian = mkNat "norra" (mkPN "Norra") ;
- Polish = mkNat "poola" (mkPN "Poola") ;
- Romanian = mkNat "rumeenia" (mkPN "Rumeenia") ;
- Russian = mkNat "vene" (mkPN "Venemaa") ;
- Spanish = mkNat "hispaania" (mkPN "Hispaania") ;
- Swedish = mkNat "rootsi" (mkPN "Rootsi") ;
+ French = mkNat "prantsuse" "prantslane" (mkPN "Prantsusmaa") ;
+ German = mkNat "saksa" "sakslane" (mkPN "Saksamaa") ;
+ Italian = mkNat "itaalia" "itaallane" (mkPN "Itaalia") ;
+ Norwegian = mkNat "norra" "norralane" (mkPN "Norra") ;
+ Polish = mkNat "poola" "poolapärane" (mkPN "Poola") ; -- Is there a -lane adjective for poola? Didn't find one at EKSS /IL2018
+ Romanian = mkNat "rumeenia" "rumeenlane" (mkPN "Rumeenia") ;
+ Russian = mkNat "vene" "venelane" (mkPN "Venemaa") ;
+ Spanish = mkNat "hispaania" "hispaanlane" (mkPN "Hispaania") ;
+ Swedish = mkNat "rootsi" "rootslane" (mkPN "Rootsi") ;
---- it would be nice to have a capitalization Predef function
@@ -153,7 +153,7 @@ concrete WordsEst of Words = SentencesEst **
ALive p co = mkCl p.name (mkVP (mkVP L.live_V) (SyntaxEst.mkAdv in_Prep co)) ;
ALove p q = mkCl p.name L.love_V2 q.name ;
AMarried p = mkCl p.name (ParadigmsEst.mkAdv "abielus") ;
- AReady p = mkCl p.name (ParadigmsEst.mkA "valmis") ;
+ AReady p = mkCl p.name (ParadigmsEst.invA "valmis" ) ;
-- Eng: I am scared
-- Fin: Minua pelottaa (partitive)
-- Est: Mina kardan (nominative)
@@ -170,9 +170,7 @@ concrete WordsEst of Words = SentencesEst **
-- Est: Mina olen väsinud.
-- ATired p = mkCl p.name (caseV partitive (mkV "väsitada")) ;
ATired p = mkCl p.name (ParadigmsEst.mkA "väsinud") ;
- -- TODO: better: aru saama / saan aru
- -- AUnderstand p = mkCl p.name L.understand_V2 ;
- AUnderstand p = mkCl p.name (mkV "mõistma") ;
+ AUnderstand p = mkCl p.name (mkV "aru" (mkV "saama")) ;
AWant p obj = mkCl p.name (mkV2 "tahtma") obj ;
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
@@ -180,8 +178,8 @@ concrete WordsEst of Words = SentencesEst **
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksma"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "maksma")) price ;
+ HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item maksma_V)) ;
+ ItCost item price = mkCl item (mkV2 maksma_V) price ;
PropOpen p = mkCl p.name open_Adv ;
PropClosed p = mkCl p.name closed_Adv ;
@@ -257,11 +255,13 @@ concrete WordsEst of Words = SentencesEst **
oper
kroon : N = mkN "kroon" "krooni" "krooni" "krooni" "kroonide" "kroone" ;
kroon2 : Str -> N = \taani -> mkN (taani + " ") kroon ;
+ maksma_V : V = mkV "maksma" "maksta" "maksab" ;
- mkNat : Str -> PN ->
- {lang : NP ; prop : A ; country : NP} = \pro,co ->
- {lang = mkNP (mkCN (mkN pro (mkN "keel" "keele" "keelt" "keelde" "keelte" "keeli")));
- prop = mkA (mkN pro) R.Invariable ;
+ mkNat : Str -> Str -> PN -> NPNationality
+ = \attr,pred,co ->
+ {lang = mkNP (mkCN (mkN (attr + " ") (mkN "keel" "keele" "keelt" "keelde" "keelte" "keeli")));
+ prop = invA attr ;
+ nat = mkA pred ;
country = mkNP co
} ;
@@ -328,7 +328,7 @@ concrete WordsEst of Words = SentencesEst **
--------------------------------------------------
lin
- Thai = mkNat ("tai") (mkPN "Tai") ;
+ Thai = mkNat ("tai") "tailane" (mkPN "Tai") ;
Baht = mkCN (mkN "baht") ;
Rice = mkCN (mkN "riis") ;