fixed external case for countries in PhrasebookFin

This commit is contained in:
aarne
2012-12-07 15:25:27 +00:00
parent 25838cc895
commit 9cd8f4e016
2 changed files with 27 additions and 15 deletions

View File

@@ -3,7 +3,9 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI -
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale, IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale,
NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl, NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl,
GObjectPlease GObjectPlease,
NPNationality, mkNPNationality,
Country, PCountry
] with ] with
(Syntax = SyntaxFin), (Syntax = SyntaxFin),
(Symbolic = SymbolicFin), (Symbolic = SymbolicFin),
@@ -12,16 +14,21 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI -
flags optimize = noexpand ; flags optimize = noexpand ;
lincat
Country = {np : NP ; isExternal : Bool} ;
lin
PCountry x = mkPhrase (mkUtt x.np) ;
oper oper
NPNationality = {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} ;
NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ; NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
CNPlace = {name : CN ; at : Prep ; to : Prep ; from : Prep ; isPl : Bool} ; CNPlace = {name : CN ; isExternal : Bool ; isPl : Bool} ;
placeNP : Det -> CNPlace -> NPPlace = \det,kind -> placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
let name : NP = mkNP det kind.name in { let name : NP = mkNP det kind.name in {
name = name ; name = name ;
at = mkAdv kind.at name ; at = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.adessive P.inessive)) name ;
to = mkAdv kind.to name ; to = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.allative P.illative)) name ;
from = mkAdv kind.from name from = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.ablative P.elative)) name
} ; } ;
lin lin

View File

@@ -60,7 +60,7 @@ concrete WordsFin of Words = SentencesFin **
School = mkPlace (mkN "koulu") lla ; School = mkPlace (mkN "koulu") lla ;
CitRestaurant cit = { CitRestaurant cit = {
name = mkCN cit (mkN "ravintola") ; at = casePrep inessive ; to = casePrep illative; from = casePrep elative ; isPl = False name = mkCN cit (mkN "ravintola") ; isExternal = False ; isPl = False
} ; } ;
Parking = mkPlace (mkN "pysäköinti" (mkN "alue")) lla ; Parking = mkPlace (mkN "pysäköinti" (mkN "alue")) lla ;
Supermarket = mkPlace (mkN "supermarket") ssa ; Supermarket = mkPlace (mkN "supermarket") ssa ;
@@ -88,7 +88,7 @@ concrete WordsFin of Words = SentencesFin **
-- nationalities -- nationalities
Belgian = mkA "belgialainen" ; Belgian = mkA "belgialainen" ;
Belgium = mkNP (mkPN "Belgia") ; Belgium = {np = mkNP (mkPN "Belgia") ; isExternal = False} ;
Bulgarian = mkNat (mkPN "bulgaria") (mkPN "Bulgaria") (mkA "bulgarialainen") ; Bulgarian = mkNat (mkPN "bulgaria") (mkPN "Bulgaria") (mkA "bulgarialainen") ;
Catalan = mkNat (mkPN "katalaani") (mkPN "Katalonia") (mkA "katalonialainen") ; Catalan = mkNat (mkPN "katalaani") (mkPN "Katalonia") (mkA "katalonialainen") ;
Danish = mkNat (mkPN "tanska") (mkPN "Tanska") (mkA "tanskalainen") ; Danish = mkNat (mkPN "tanska") (mkPN "Tanska") (mkA "tanskalainen") ;
@@ -104,7 +104,7 @@ concrete WordsFin of Words = SentencesFin **
Norwegian = mkNat (mkPN "norja") (mkPN "Norja") (mkA "norjalainen") ; Norwegian = mkNat (mkPN "norja") (mkPN "Norja") (mkA "norjalainen") ;
Polish = mkNat (mkPN "puola") (mkPN "Puola") (mkA "puolalainen") ; Polish = mkNat (mkPN "puola") (mkPN "Puola") (mkA "puolalainen") ;
Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ; Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ;
Russian = mkNat (mkPN "venäjä") (mkPN "Venäjä") (mkA "venäläinen") ; Russian = mkNatExternal (mkPN "venäjä") (mkPN "Venäjä") (mkA "venäläinen") ;
Spanish = mkNat (mkPN "espanja") (mkPN "Espanja") (mkA "espanjalainen") ; Spanish = mkNat (mkPN "espanja") (mkPN "Espanja") (mkA "espanjalainen") ;
Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ; Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ;
@@ -136,7 +136,7 @@ concrete WordsFin of Words = SentencesFin **
AIll p = mkCl p.name (mkA "sairas") ; AIll p = mkCl p.name (mkA "sairas") ;
AKnow p = mkCl p.name (mkV "tietää") ; AKnow p = mkCl p.name (mkV "tietää") ;
ALike p item = mkCl p.name L.like_V2 item ; ALike p item = mkCl p.name L.like_V2 item ;
ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv in_Prep co)) ; ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv (casePrep (if_then_else Case co.isExternal adessive inessive)) co.np)) ;
ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ; ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
AMarried p = mkCl p.name (ParadigmsFin.mkAdv "naimisissa") ; AMarried p = mkCl p.name (ParadigmsFin.mkAdv "naimisissa") ;
AReady p = mkCl p.name (ParadigmsFin.mkA "valmis") ; AReady p = mkCl p.name (ParadigmsFin.mkA "valmis") ;
@@ -228,10 +228,17 @@ concrete WordsFin of Words = SentencesFin **
oper oper
mkNat : PN -> PN -> A -> mkNat : PN -> PN -> A ->
{lang : NP ; prop : A ; country : NP} = \nat,co,pro -> {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
{lang = mkNP nat ; {lang = mkNP nat ;
prop = pro ; prop = pro ;
country = mkNP co country = {np = mkNP co ; isExternal = False}
} ;
mkNatExternal : PN -> PN -> A ->
{lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
{lang = mkNP nat ;
prop = pro ;
country = {np = mkNP co ; isExternal = True}
} ; } ;
---- using overloaded paradigms slows down compilation dramatically ---- using overloaded paradigms slows down compilation dramatically
@@ -242,11 +249,9 @@ concrete WordsFin of Words = SentencesFin **
habitual = ParadigmsFin.mkAdv s habitual = ParadigmsFin.mkAdv s
} ; } ;
mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep; from : Prep ; isPl : Bool} = \p,e -> { mkPlace : N -> Bool -> {name : CN ; isExternal : Bool ; isPl : Bool} = \p,e -> {
name = mkCN p ; name = mkCN p ;
at = casePrep (if_then_else Case e adessive inessive) ; -- True: external isExternal = e ;
to = casePrep (if_then_else Case e allative illative) ;
from = casePrep (if_then_else Case e ablative elative) ;
isPl = False isPl = False
} ; } ;
ssa = False ; ssa = False ;