diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf index ecbf29eb7..93b8355ff 100644 --- a/examples/phrasebook/SentencesIta.gf +++ b/examples/phrasebook/SentencesIta.gf @@ -7,6 +7,10 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ (Lexicon = LexiconIta) ** open SyntaxIta, ExtraIta, Prelude in { + lincat + Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv ; } ; + + lin IFemale = {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ; @@ -21,6 +25,25 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ YouPolMale = {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ; + oper + + CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ; + + mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> { + name = p ; + at = i ; + to = t ; + } ; + + placeNP : Det -> CNPlace -> NPPlace = \det,kind -> + let name : NP = mkNP det kind.name in { + name = name ; + at = mkAdv kind.at name ; + to = mkAdv kind.to name + } ; + + + } diff --git a/examples/phrasebook/SentencesSpa.gf b/examples/phrasebook/SentencesSpa.gf index 90f22a3e0..4e293aea0 100644 --- a/examples/phrasebook/SentencesSpa.gf +++ b/examples/phrasebook/SentencesSpa.gf @@ -20,6 +20,23 @@ concrete SentencesSpa of Sentences = NumeralSpa ** SentencesI - [ {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ; YouPolMale = {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ; + +oper + + CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ; + + mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> { + name = p ; + at = i ; + to = t ; + } ; + + placeNP : Det -> CNPlace -> NPPlace = \det,kind -> + let name : NP = mkNP det kind.name in { + name = name ; + at = mkAdv kind.at name ; + to = mkAdv kind.to name ; + }; } diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf index d64611a10..fa80629a9 100644 --- a/examples/phrasebook/WordsIta.gf +++ b/examples/phrasebook/WordsIta.gf @@ -32,10 +32,10 @@ lin Bad = L.bad_A ; Boring = mkA "noioso" ; - Cheap = let c = "a buon mercato" in mkA c c c c c ; ---- + Cheap = mkA "conveniente"; Cold = L.cold_A ; Delicious = mkA "delizioso" ; - Expensive = mkA "caro" ; + Expensive = mkA "costoso" ; Fresh = mkA "fresco" ; Good = L.good_A ; Warm = L.warm_A ; @@ -44,41 +44,82 @@ lin -- places Airport = mkPlace (mkN "aeroporto") dative ; - Bar = mkPlace (mkN "bar") P.in_Prep ; + AmusementPark = mkPlace (mkN "parco divertimenti") dative ; + Bank = mkPlace (mkN "banca") P.in_Prep ; + Bar = mkPlace (mkN "bar") dative ; + Cafeteria = mkPlace (mkN "mensa") P.in_Prep; + Center = mkPlace (mkN "centro") P.in_Prep; Church = mkPlace (mkN "chiesa") P.in_Prep ; - Cinema = mkPlace (mkN "cinema") P.in_Prep ; + Cinema = mkPlace (mkN "cinema" masculine) dative ; + Disco = mkPlace (mkN "discoteca") 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 ; + Museum = mkPlace (mkN "museo") dative ; + Park = mkPlace (mkN "parco") dative ; + Parking = mkPlace (mkN "parcheggio") dative ; + Pharmacy = mkPlace (mkN "farmacia") P.in_Prep ; + PostOffice = mkPlace (mkN "ufficio postale") dative ; + Pub = mkPlace (mkN "birreria") P.in_Prep ; + Restaurant = mkPlace (mkN "ristorante") dative ; + School = mkPlace (mkN "scuola") dative ; Shop = mkPlace (mkN "negozio") P.in_Prep ; Station = mkPlace (mkN "stazione" feminine) dative ; - Theatre = mkPlace (mkN "teatro") P.in_Prep ; + Supermarket = mkPlace (mkN "supermercato") dative ; + Theatre = mkPlace (mkN "teatro") dative ; Toilet = mkPlace (mkN "bagno") P.in_Prep ; University = mkPlace (mkN "università") dative ; + Zoo = mkPlace (mkN "zoo") dative ; + + CitRestaurant cit = mkCNPlace (mkCN cit (mkN "ristorante")) P.in_Prep 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") ; ---- ? + Euro = mkCN (mkN "Euro" "Euro" masculine) ; + Lei = mkCN (mkN "leu") ; + Leva = mkCN (mkN "lev" "lev" masculine) ; + NorwegianCrown = mkCN (mkA "norvegese") (mkN "corona") | mkCN (mkN "corona") ; + Rouble = mkCN (mkN "rublo") ; SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ; + Zloty = mkCN (mkN "zloty" "zlotych" masculine) ; -- nationalities Belgian = mkA "belga" ; Belgium = mkNP (mkPN "Belgio") ; + Bulgarian = mkNat "bulgaro" "Bulgaria" ; + Catalan = mkNat "catalano" "Catalonia" ; + Danish = mkNat "danese" "Danimarca" ; + Dutch = mkNat "olandese" "Olanda" ; English = mkNat "inglese" "Inghilterra" ; Finnish = mkNat "finlandese" "Finlandia" ; Flemish = mkNP (mkPN "fiammingo") ; - French = mkNat "francese" "Francia" ; + French = mkNat "francese" "Francia" ; + German = mkNat "tedesco" "Germania" ; Italian = mkNat "italiano" "Italia" ; + Norwegian = mkNat "norvegese" "Norvegia" ; + Polish = mkNat "polacco" "Polonia" ; Romanian = mkNat "rumeno" "Romania" ; + Russian = mkNat "russo" "Russia" ; + Spanish = mkNat "spagnolo" "Spania" ; Swedish = mkNat "svedese" "Svezia" ; +-- means of transportation + + Bike = mkTransport (mkN "bicicletta") ; + Bus = mkTransport (mkN "autobus" "autobus" masculine) ; + Car = mkTransport L.car_N ; + Ferry = mkTransport (mkN "traghetto") ; + Plane = mkTransport L.airplane_N ; + Subway = mkTransport (mkN "metro" feminine) ; + Taxi = mkTransport (mkN "taxi" masculine) ; + Train = mkTransport (mkN "treno") ; + Tram = mkTransport (mkN "tram") ; + + ByFoot = ParadigmsIta.mkAdv "a piedi" ; + -- actions AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ; @@ -110,6 +151,8 @@ lin 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) ; + HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ; + ItCost item price = mkCl item (mkV2 (mkV "costare")) price ; PropOpen p = mkCl p.name open_A ; PropClosed p = mkCl p.name closed_A ; @@ -118,8 +161,6 @@ lin 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 ; -- Building phrases from strings is complicated: the solution is to use -- mkText : Text -> Text -> Text ; @@ -134,10 +175,10 @@ lin -- 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") ; + Wife = xOf sing (mkN "moglie" feminine) ; + Husband = xOf sing (mkN "marito" masculine) ; + Son = xOf sing (mkN "figlio" masculine) ; + Daughter = xOf sing (mkN "figlia" feminine) ; Children = xOf plur L.child_N ; -- week days @@ -152,6 +193,37 @@ lin Tomorrow = P.mkAdv "domani" ; + +-- transports + +-- HowFar place = mkQS (mkQCl far_IAdv place.name) ; +-- HowFarFrom x y = mkQS (mkQCl (mkIAdv far_IAdv (SyntaxIta.mkAdv from_Prep x.name)) y.name) ; +-- HowFarFromBy x y t = mkQS (mkQCl (mkIAdv (mkIAdv far_IAdv (SyntaxIta.mkAdv from_Prep x.name)) t) y.name) ; +-- HowFarBy y t = mkQS (mkQCl (mkIAdv far_IAdv t.by) y.name) ; + +-- oper far_IAdv = E.IAdvAdv L.far_Adv ; + +lin + WhichTranspPlace trans place = + mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ; + + IsTranspPlace trans place = + mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ; + +-- modifiers of places + + TheBest = mkSuperl L.good_A ; + TheClosest = mkSuperl L.near_A ; + TheCheapest = mkSuperl (mkA "economico") ; + TheMostExpensive = mkSuperl (mkA "costoso") ; + TheMostPopular = mkSuperl (mkA "di moda") ; + TheWorst = mkSuperl L.bad_A ; + + SuperlPlace sup p = placeNP sup p ; + + + + -- auxiliaries oper @@ -160,13 +232,20 @@ lin 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)) ; ---- ? + mkNPDay day (P.mkAdv d) (P.mkAdv ("di" ++ 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 ; + mkTransport : N -> {name : CN ; by : Adv} = \n -> { + name = mkCN n ; + by = SyntaxIta.mkAdv with_Prep (mkNP n) + } ; + + mkSuperl : A -> Det = \a -> SyntaxIta.mkDet the_Art (SyntaxIta.mkOrd a) ; + open_A = mkA "aperto" ; closed_A = mkA "chiuso" ; diff --git a/examples/phrasebook/WordsSpa.gf b/examples/phrasebook/WordsSpa.gf index 6c911373e..90b705082 100644 --- a/examples/phrasebook/WordsSpa.gf +++ b/examples/phrasebook/WordsSpa.gf @@ -7,6 +7,7 @@ concrete WordsSpa of Words = SentencesSpa ** open (L = LexiconSpa), (P = ParadigmsSpa), ParadigmsSpa, + StructuralSpa, Prelude in { lin @@ -16,159 +17,235 @@ lin Apple = mkCN L.apple_N ; Beer = mkCN L.beer_N ; Bread = mkCN L.bread_N ; --- Cheese = mkCN (mkN "formaggio") ; --- Chicken = mkCN (mkN "pollo") ; --- Coffee = mkCN (mkN "caffè") ; + Cheese = mkCN (mkN "queso") ; + Chicken = mkCN (mkN "pollo") ; + Coffee = mkCN (mkN "café") ; Fish = mkCN L.fish_N ; --- Meat = mkCN (mkN "carne" feminine) ; + Meat = mkCN (mkN "carne" feminine) ; Milk = mkCN L.milk_N ; --- Pizza = mkCN (mkN "pizza") ; + Pizza = mkCN (mkN "pizza") ; Salt = mkCN L.salt_N ; --- Tea = mkCN (mkN "tè") ; + Tea = mkCN (mkN "té") ; Water = mkCN L.water_N ; Wine = mkCN L.wine_N ; -- properties Bad = L.bad_A ; --- Boring = mkA "noioso" ; --- Cheap = let c = "a buon mercato" in mkA c c c c c ; ---- + Boring = mkA "aburrido" ; + Cheap = mkA "económico" ; Cold = L.cold_A ; --- Delicious = mkA "delizioso" ; --- Expensive = mkA "caro" ; --- Fresh = mkA "fresco" ; + Delicious = mkA "delicioso" ; + Expensive = mkA "caro" ; + Fresh = mkA "fresco" ; Good = L.good_A ; Warm = L.warm_A ; --- Suspect = mkA "sospetto" ; + Suspect = mkA "sospechoso" ; -- places --- Airport = mkPlace (mkN "aeroporto") 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 ; + + Airport = mkPlace (mkN "aeropuerto") dative ; + AmusementPark = mkPlace (mkN "parque de atracciones") dative ; + Bank = mkPlace (mkN "banco") StructuralSpa.in_Prep ; +-- Bar = mkPlace (mkN "bar") in_Prep ; + Cafeteria = mkPlace (mkN "cafetería") StructuralSpa.in_Prep; + Center = mkPlace (mkN "centro") StructuralSpa.in_Prep; + Church = mkPlace (mkN "iglesia") in_Prep ; + Cinema = mkPlace (mkN "cine") in_Prep ; + Disco = mkPlace (mkN "disco") in_Prep; + Hospital = mkPlace (mkN "hospital") in_Prep ; + Hotel = mkPlace (mkN "hotel") in_Prep ; + Museum = mkPlace (mkN "museo") in_Prep ; + Park = mkPlace (mkN "parque") in_Prep ; + Parking = mkPlace (mkN "estacionamiento") dative ; + Pharmacy = mkPlace (mkN "farmacia") in_Prep ; + PostOffice = mkPlace (mkN "oficina de correos") dative ; + Restaurant = mkPlace (mkN "restaurante") in_Prep ; + School = mkPlace (mkN "escuela") in_Prep ; + Shop = mkPlace (mkN "tienda") in_Prep ; + Station = mkPlace (mkN "estación") in_Prep ; + Supermarket = mkPlace (mkN "supermercado") dative ; + Theatre = mkPlace (mkN "teatro") in_Prep ; + Toilet = mkPlace (mkN "baño") in_Prep ; + University = mkPlace (mkN "universidad") dative ; + Zoo = mkPlace (mkN "zoo") dative ; + + CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurante")) in_Prep to_Prep ; -- 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") ; + DanishCrown = mkCN (mkA "danesa") (mkN "corona") | mkCN (mkN "corona") ; + Dollar = mkCN (mkN "dólar") ; + Euro = mkCN (mkN "Euro" "Euro" masculine) ; + Lei = mkCN (mkN "leu") ; + Leva = mkCN (mkN "lev" "lev" masculine) ; + NorwegianCrown = mkCN (mkA "noruega") (mkN "corona") | mkCN (mkN "corona") ; + Rouble = mkCN (mkN "rublo") ; + SwedishCrown = mkCN (mkA "sueca") (mkN "corona") | mkCN (mkN "corona") ; + Zloty = mkCN (mkN "zloty" "zlotych" masculine) ; -- 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") ; + Bulgarian = mkNat "bulgaro" "Bulgaria" ; + Catalan = mkNat "catalán" "Cataluña" ; + Danish = mkNat "danés" "Dinamarca" ; + Dutch = mkNat "neerlandés" "Holanda" ; + English = mkNat "inglés" "Inglaterra" ; + Finnish = mkNat "finlandés" "Finlandia" ; + Flemish = mkNP (mkPN "flamenco") ; + French = mkNat "francés" "Francia" ; + German = mkNat "alemán" "Alemania" ; + Italian = mkNat "italiano" "Italia" ; + Norwegian = mkNat "noruego" "Noruega" ; + Polish = mkNat "polaco" "Polonia" ; + Romanian = mkNat "rumano" "Rumania" ; + Russian = mkNat "ruso" "Rusia" ; + Spanish = mkNat "español" "España" ; + Swedish = mkNat "sueco" "Suecia" ; + +-- means of transportation + + Bike = mkTransport (mkN "bicicleta") ; + Bus = mkTransport (mkN "autobús" "autobús" masculine) ; + Car = mkTransport L.car_N ; + Ferry = mkTransport (mkN "balsa") ; + Plane = mkTransport L.airplane_N ; + Subway = mkTransport (mkN "metro" feminine) ; + Taxi = mkTransport (mkN "taxi" masculine) ; + Train = mkTransport (mkN "tren") ; + Tram = mkTransport (mkN "tranvía") ; + + ByFoot = ParadigmsSpa.mkAdv "a pie" ; -- 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")) (SyntaxSpa.mkAdv for_Prep (mkNP num (mkN "persona")))) ; --- AHasTable p num = mkCl p.name have_V2 --- (mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxSpa.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")) (SyntaxSpa.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") ; + AHasRoom p num = mkCl p.name have_V2 + (mkNP (mkNP a_Det (mkN "habitación")) (SyntaxSpa.mkAdv for_Prep (mkNP num (mkN "persona")))) ; + AHasTable p num = mkCl p.name have_V2 + (mkNP (mkNP a_Det (mkN "mesa")) (SyntaxSpa.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 "hambre" feminine))) ; + AIll p = mkCl p.name (mkA "enfermo") ; +-- 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")) (SyntaxSpa.mkAdv in_Prep co)) ; + ALove p q = mkCl p.name (mkV2 (mkV "amar")) q.name ; + AMarried p = mkCl p.name (mkA "casado") ; + AReady p = mkCl p.name (mkA "preparado") ; -- 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") ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "hablar")) lang ; + AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sed" feminine))) ; + ATired p = mkCl p.name (mkA "cansado") ; + AUnderstand p = mkCl p.name (mkV "entender") ; -- 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) ; + 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) ; +-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "cuestar"))) ; + ItCost item price = mkCl item (mkV2 (mkV "cuestar")) price ; --- 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 ; -- Building phrases from strings is complicated: the solution is to use -- 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))) ; + PSeeYouDate d = mkText (lin Text (ss ("nos vemos"))) (mkPhrase (mkUtt d)) ; + PSeeYouPlace p = mkText (lin Text (ss ("nos vemos"))) (mkPhrase (mkUtt p.at)) ; + PSeeYouPlaceDate p d = + mkText (lin Text (ss ("nos vemos"))) + (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ; -- 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 "esposa" feminine) ; + Husband = xOf sing (mkN "marido" masculine) ; + Son = xOf sing (mkN "hijo" masculine) ; + Daughter = xOf sing (mkN "hija" feminine) ; + 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 "lunes" ; + Tuesday = mkDay "martes" ; + Wednesday = mkDay "miércoles" ; + Thursday = mkDay "jueves" ; + Friday = mkDay "viernes" ; + Saturday = mkDay "sábado" ; + Sunday = mkDay "domingo" ; + + Tomorrow = P.mkAdv "mañana" ; + + +-- transports + +-- HowFar place = mkQS (mkQCl far_IAdv place.name) ; +-- HowFarFrom x y = mkQS (mkQCl (mkIAdv far_IAdv (SyntaxSpa.mkAdv from_Prep x.name)) y.name) ; +-- HowFarFromBy x y t = mkQS (mkQCl (mkIAdv (mkIAdv far_IAdv (SyntaxSpa.mkAdv from_Prep x.name)) t) y.name) ; +-- HowFarBy y t = mkQS (mkQCl (mkIAdv far_IAdv t.by) y.name) ; + +-- oper far_IAdv = E.IAdvAdv L.far_Adv ; + +lin + WhichTranspPlace trans place = + mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ; + + IsTranspPlace trans place = + mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ; + +-- modifiers of places + + TheBest = mkSuperl L.good_A ; + TheClosest = mkSuperl L.near_A ; + TheCheapest = mkSuperl (mkA "barato") ; + TheMostExpensive = mkSuperl (mkA "caro") ; + TheMostPopular = mkSuperl (mkA "populares") ; + TheWorst = mkSuperl L.bad_A ; + + SuperlPlace sup p = placeNP sup p ; + + --- Tomorrow = P.mkAdv "domani" ; -- auxiliaries --- oper --- mkNat : Str -> Str -> NPNationality = \nat,co -> --- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ; + oper + 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 d) (P.mkAdv ("los" ++ d)) ; ---- ? --- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> --- mkCNPlace (mkCN p) i dative ; + 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" ; + mkTransport : N -> {name : CN ; by : Adv} = \n -> { + name = mkCN n ; + by = SyntaxSpa.mkAdv with_Prep (mkNP n) + } ; + + mkSuperl : A -> Det = \a -> SyntaxSpa.mkDet the_Art (SyntaxSpa.mkOrd a) ; + + open_A = mkA "abierto" ; + closed_A = mkA "cerrado" ; ---} }