diff --git a/examples/phrasebook/WordsCat.gf b/examples/phrasebook/WordsCat.gf index 80a8d2b6f..6c36ef427 100644 --- a/examples/phrasebook/WordsCat.gf +++ b/examples/phrasebook/WordsCat.gf @@ -44,131 +44,147 @@ lin -- places Airport = mkPlace (mkN "aeroport") dative ; - Bar = mkPlace (mkN "bar") P.in_Prep ; --- Church = mkPlace (mkN "chiesa") P.in_Prep ; --- Cinema = mkPlace (mkN "cinema") P.in_Prep ; --- Hospital = mkPlace (mkN "ospedale") P.in_Prep ; --- Hotel = mkPlace (mkN "albergo") P.in_Prep ; --- Museum = mkPlace (mkN "museo") P.in_Prep ; --- Park = mkPlace (mkN "parco") P.in_Prep ; --- Restaurant = mkPlace (mkN "ristorante") P.in_Prep ; --- School = mkPlace (mkN "scuola") P.in_Prep ; --- Shop = mkPlace (mkN "negozio") P.in_Prep ; --- Station = mkPlace (mkN "stazione" feminine) dative ; --- Theatre = mkPlace (mkN "teatro") P.in_Prep ; --- Toilet = mkPlace (mkN "bagno") P.in_Prep ; --- University = mkPlace (mkN "università") dative ; + Bar = mkPlace (mkN "bar") dative ; + Church = mkPlace (mkN "església") dative ; + Cinema = mkPlace (mkN "cinema" masculine) dative ; + Hospital = mkPlace (mkN "hospital") dative ; + Hotel = mkPlace (mkN "alberg") dative ; + Museum = mkPlace (mkN "museu") dative ; + Park = mkPlace (mkN "parc") dative ; + Restaurant = mkPlace (mkN "restaurant") dative ; + School = mkPlace (mkN "escola") dative ; + Shop = mkPlace (mkN "tenda") dative ; + Station = mkPlace (mkN "estació" feminine) dative ; + Theatre = mkPlace (mkN "teatre") dative ; + Toilet = mkPlace (mkN "lavabo") dative ; + University = mkPlace (mkN "universitat" feminine) dative ; -- currencies - --- DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ; --- Dollar = mkCN (mkN "dollar") ; --- Euro = mkCN (mkN "euro" "euro" masculine) ; --- Lei = mkCN (mkN "lei") ; ---- ? --- SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ; +oper + Corona : A -> CN = \adj -> + let corona = (mkN "corona") + in mkCN adj corona | mkCN corona ; +lin + DanishCrown = Corona (mkA "danès" "danesa" "danesos" "daneses" "a la danesa") ; + Dollar = mkCN (mkN "dollar") ; + Euro = mkCN (mkN "euro" "euro" masculine) ; + Lei = mkCN (mkN "leu" "lei" masculine) ; + SwedishCrown = Corona (mkA "suec" "sueca" "suecs" "sueques" "a la sueca") ; -- nationalities --- Belgian = mkA "belgo" ; --- Belgium = mkNP (mkPN "Belgio") ; --- English = mkNat "inglese" "Inghilterra" ; --- Finnish = mkNat "finlandese" "Finlandia" ; --- Flemish = mkNP (mkPN "fiammingo") ; --- French = mkNat "francese" "Francia" ; --- Italian = mkNat "italiano" "Italia" ; --- Romanian = mkNat "rumeno" "Romania" ; --- Swedish = mkNat "svedese" "Svezia" ; + Belgian = mkA "belga" ; + Belgium = mkNP (mkPN "Bèlgica") ; + English = mkNat "anglès" "Anglaterra" ; + Finnish = mkNat "finès" "Finlàndia" ; + Flemish = mkNP (mkPN "flamenc") ; + French = mkNat "francès" "França" ; + Italian = mkNat "italià" "Itàlia" ; + Romanian = mkNat "romanès" "Romania" ; + Swedish = mkNat "suec" "Suècia" ; -- actions --- AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ; + AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ; AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ; --- AHasRoom p num = mkCl p.name have_V2 --- (mkNP (mkNP a_Det (mkN "camera")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ; --- AHasTable p num = mkCl p.name have_V2 --- (mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ; --- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ; --- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ; --- AIll p = mkCl p.name (mkA "malato") ; --- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ; --- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ; --- ALive p co = --- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxCat.mkAdv P.in_Prep co)) ; --- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ; --- AMarried p = mkCl p.name (mkA "sposato") ; --- AReady p = mkCl p.name (mkA "pronto") ; --- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ; --- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ; --- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ; --- ATired p = mkCl p.name (mkA "stanco") ; --- AUnderstand p = mkCl p.name (mkV "capire") ; --- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ; --- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; + AHasRoom p num = mkCl p.name have_V2 + (mkNP (mkNP a_Det (mkN "habitació" feminine)) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ; + AHasTable p num = mkCl p.name have_V2 + (mkNP (mkNP a_Det (mkN "taula")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ; + AHasName p name = + let dir = mkV (dir_41 "dir") + in mkCl p.name (mkV2 (reflV dir)) name ; + AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "gana" feminine))) ; + AIll p = mkCl p.name (mkA "malalt") ; + AKnow p = + let saber = mkV (saber_99 "saber") + in mkCl p.name saber ; + ALike p item = mkCl item (mkV2 (mkV "agradar") dative) p.name ; + ALive p co = + let viure = mkV (viure_119 "viure") + in mkCl p.name (mkVP (mkVP viure) (SyntaxCat.mkAdv in_Prep co)) ; + ALove p q = mkCl p.name (mkV2 (mkV "estimar")) q.name ; + AMarried p = mkCl p.name (mkA "casat") ; + AReady p = + let ap = "a punt" + in mkCl p.name (mkA ap ap ap ap ap) ; + AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "por" feminine))) ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "parlar")) lang ; + AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "set" feminine))) ; + ATired p = mkCl p.name (mkA "cansat") ; + AUnderstand p = mkCl p.name (mkV "entendre") ; + AWant p obj = + let voler = mkV (voler_120 "voler") + in mkCl p.name (mkV2 voler) obj ; + AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; -- miscellaneous --- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ; --- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ; + QWhatName p = + let dir = mkV (dir_41 "dir") + in mkQS (mkQCl how_IAdv (mkCl p.name (reflV dir))) ; + QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ; + PropOpen p = mkCl p.name open_A ; + PropClosed p = mkCl p.name closed_A ; + PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ; + PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ; + PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; + PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; --- PropOpen p = mkCl p.name open_A ; --- PropClosed p = mkCl p.name closed_A ; --- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ; --- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ; --- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ; --- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ; - --- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ; --- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ; + HowMuchCost item = + let valer = mkV (valer_114 "valer") + in mkQS (mkQCl how8much_IAdv (mkCl item valer)) ; + ItCost item price = + let valer = mkV (valer_114 "valer") + in mkCl item (mkV2 valer) price ; -- Building phrases from strings is complicated: the solution is to use --- mkText : Text -> Text -> Text ; +-- mkText : Text -> Text -> Text ; --- PSeeYou d = mkText (lin Text (ss ("arrivederci"))) (mkPhrase (mkUtt d)) ; --- PSeeYouPlace p d = --- mkText (lin Text (ss ("arrivederci"))) --- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ; + PSeeYou d = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt d)) ; + PSeeYouPlace p = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt p.at)) ; + PSeeYouPlaceDate p d = + mkText (lin Text (ss ("a reveure"))) + (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ; -- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$ -- below. Languages with productive genitives can use an equivalent of -- "my son's wife" for non-pronouns, as e.g. in English. --- Wife = xOf sing (mkN "sposa") ; --- Husband = xOf sing (mkN "marito") ; --- Son = xOf sing (mkN "figlio") ; --- Daughter = xOf sing (mkN "figlia") ; --- Children = xOf plur L.child_N ; + Wife = xOf sing (mkN "dona") ; + Husband = xOf sing (mkN "home") ; + Son = xOf sing (mkN "fill") ; + Daughter = xOf sing (mkN "filla") ; + Children = xOf plur L.child_N ; -- week days --- Monday = mkDay "lunedì" ; --- Tuesday = mkDay "martedì" ; --- Wednesday = mkDay "mercoledì" ; --- Thursday = mkDay "giovedì" ; --- Friday = mkDay "venerdì" ; --- Saturday = mkDay "sabato" ; --- Sunday = mkDay "domenica" ; + Monday = mkDay "dilluns" ; + Tuesday = mkDay "dimarts" ; + Wednesday = mkDay "dimecres" ; + Thursday = mkDay "dijous" ; + Friday = mkDay "divendres" ; + Saturday = mkDay "dissabte" ; + Sunday = mkDay "diumenge" ; --- Tomorrow = P.mkAdv "domani" ; + Tomorrow = P.mkAdv "demà" ; -- auxiliaries oper --- mkNat : Str -> Str -> NPNationality = \nat,co -> --- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ; + mkNat : Str -> Str -> NPNationality = \nat,co -> + mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ; --- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> --- let day = mkNP (mkPN d) in --- mkNPDay day (P.mkAdv ("il" ++ d)) (P.mkAdv ("il" ++ d)) ; ---- ? + mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> + let day = mkNP (mkPN d) + in mkNPDay day (P.mkAdv ("el" ++ d)) (P.mkAdv ("el" ++ d)) ; ---- ? mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> mkCNPlace (mkCN p) i dative ; --- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ; + xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ; --- open_A = mkA "aperto" ; --- closed_A = mkA "chiuso" ; - - ---} + open_A = mkA "obert" ; + closed_A = mkA "tancat" ; }