diff --git a/examples/phrasebook/DisambPhrasebookEng.gf b/examples/phrasebook/DisambPhrasebookEng.gf index 2292e41d9..7b94ad69b 100644 --- a/examples/phrasebook/DisambPhrasebookEng.gf +++ b/examples/phrasebook/DisambPhrasebookEng.gf @@ -1,16 +1,22 @@ --# -path=.:present concrete DisambPhrasebookEng of Phrasebook = PhrasebookEng - - [YouFam, YouPol, + [ + IMale, IFemale, + YouFamMale, YouFamFemale, + YouPolMale, YouPolFemale, GExcuse, GExcusePol, GSorry, GSorryPol, - GPleaseGive, GPleaseGivePol, - GWhatsYourName, GWhatsYourNamePol + GPleaseGive, GPleaseGivePol ] ** open SyntaxEng, ParadigmsEng, Prelude in { lin - YouFam = mkNP (mkNP youSg_Pron) (ParadigmsEng.mkAdv "(familiar)") ; - YouPol = mkNP (mkNP youPol_Pron) (ParadigmsEng.mkAdv "(polite)") ; + IMale = mkP i_Pron "(male)" ; + IFemale = mkP i_Pron "(female)" ; + YouFamMale = mkP youSg_Pron "(familiar,male)" ; + YouFamFemale = mkP youSg_Pron "(familiar,female)" ; + YouPolMale = mkP youPol_Pron "(polite,male)" ; + YouPolFemale = mkP youPol_Pron "(polite,female)" ; GExcuse = fam "excuse me" ; GExcusePol = pol "excuse me" ; @@ -18,11 +24,14 @@ lin GSorryPol = pol "sorry" ; GPleaseGive = fam "please" ; GPleaseGivePol = pol "please" ; - GWhatsYourName = ss "what's your name (familiar)" ; - GWhatsYourNamePol = ss "what's your name (polite)" ; oper fam : Str -> SS = \s -> postfixSS "(familiar)" (ss s) ; pol : Str -> SS = \s -> postfixSS "(polite)" (ss s) ; + mkP : Pron -> Str -> {name : NP ; isPron : Bool ; poss : Det} = \p,s -> + {name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ; + isPron = False ; -- to show the disambiguation + poss = mkDet youSg_Pron + } ; } diff --git a/examples/phrasebook/Greetings.gf b/examples/phrasebook/Greetings.gf index c366f3b38..5dc4c4d04 100644 --- a/examples/phrasebook/Greetings.gf +++ b/examples/phrasebook/Greetings.gf @@ -12,7 +12,6 @@ fun GSorry, GSorryPol : Greeting ; GGoodbye : Greeting ; GBye : Greeting ; - GWhatsYourName, GWhatsYourNamePol : Greeting ; GNiceToMeetYou : Greeting ; GSeeYouSoon : Greeting ; GHelp : Greeting ; @@ -22,6 +21,7 @@ fun GGoodEvening : Greeting ; GGoodNight : Greeting ; GTheCheck : Greeting ; + GCheers : Greeting ; GYes : Greeting ; GNo : Greeting ; diff --git a/examples/phrasebook/GreetingsEng.gf b/examples/phrasebook/GreetingsEng.gf index b4e9de896..304e34c3b 100644 --- a/examples/phrasebook/GreetingsEng.gf +++ b/examples/phrasebook/GreetingsEng.gf @@ -1,4 +1,4 @@ -concrete GreetingsEng of Greetings = open Roles, Prelude in { +concrete GreetingsEng of Greetings = open Prelude in { lincat Greeting = SS ; @@ -12,7 +12,6 @@ lin GSorry, GSorryPol = ss "sorry" ; GGoodbye = ss "goodbye" ; GBye = ss "bye" ; - GWhatsYourName, GWhatsYourNamePol = ss "what's your name" ; GNiceToMeetYou = ss "nice to meet you" ; GSeeYouSoon = ss "see you soon" ; GHelp = ss "help" ; @@ -22,6 +21,7 @@ lin GGoodEvening = ss "good evening" ; GGoodNight = ss "good night" ; GTheCheck = ss "the bill" ; + GCheers = ss "cheers" ; GYes = ss "yes" ; GNo = ss "no" ; diff --git a/examples/phrasebook/GreetingsFin.gf b/examples/phrasebook/GreetingsFin.gf index e44b02c8e..ff8cfd474 100644 --- a/examples/phrasebook/GreetingsFin.gf +++ b/examples/phrasebook/GreetingsFin.gf @@ -15,8 +15,6 @@ lin GSorry, GSorryPol = ss "anteeksi" ; GGoodbye = ss "näkemiin" ; GBye = ss "hei hei" ; - GWhatsYourName = ss "mikä sinun nimesi on" ; - GWhatsYourNamePol = ss "mikä teidän nimenne on" ; GNiceToMeetYou = ss "hauska tutustua" ; GSeeYouSoon = ss "nähdään pian" ; GHelp = ss "apua" ; @@ -26,6 +24,7 @@ lin GGoodEvening = ss "hyvää iltaa" ; GGoodNight = ss "hyvää yötä" ; GTheCheck = ss "lasku" ; + GCheers = ss "terveydeksi" ; GYes = ss "kyllä" ; GNo = ss "ei" ; diff --git a/examples/phrasebook/GreetingsFre.gf b/examples/phrasebook/GreetingsFre.gf index 567e256da..81e11cdc6 100644 --- a/examples/phrasebook/GreetingsFre.gf +++ b/examples/phrasebook/GreetingsFre.gf @@ -1,4 +1,4 @@ -concrete GreetingsFre of Greetings = open Roles,Prelude in { +concrete GreetingsFre of Greetings = open Prelude in { flags coding = utf8 ; @@ -16,8 +16,6 @@ lin GSorry, GSorryPol = ss "pardon" ; GGoodbye = ss "au revoir" ; GBye = ss "au revoir" ; - GWhatsYourName = ss "comment t'appelles-tu" ; - GWhatsYourNamePol = ss "comment vous appelez-vous" ; GNiceToMeetYou = ss "enchanté" ; GSeeYouSoon = ss "à bientôt" ; GHelp = ss "au secours" ; @@ -27,6 +25,7 @@ lin GGoodEvening = ss "bon soir" ; GGoodNight = ss "bonne nuit" ; GTheCheck = ss "l'addition" ; + GCheers = ss "santé" ; GYes = ss "oui" ; ---- si GNo = ss "non" ; diff --git a/examples/phrasebook/GreetingsIta.gf b/examples/phrasebook/GreetingsIta.gf index 33ceb958d..77b840ad7 100644 --- a/examples/phrasebook/GreetingsIta.gf +++ b/examples/phrasebook/GreetingsIta.gf @@ -14,8 +14,6 @@ lin GSorryPol = ss "scusimi" ; ---- GGoodbye = ss "arrivederci" ; GBye = ss "ciao" ; - GWhatsYourName = ss "come ti chiami" ; - GWhatsYourNamePol = ss "come si chiama" ; -- GNiceToMeetYou = ss "piacevole" ; ---- -- GSeeYouSoon = ss "a poco tempo" ; ---- GHelp = ss "aiuto" ; @@ -24,6 +22,7 @@ lin GGoodDay = ss "buongiorno" ; GGoodEvening = ss "buona sera" ; GGoodNight = ss "buona notte" ; + GCheers = ss "cincin" ; GTheCheck = ss "il conto" ; GYes = ss "sì" ; diff --git a/examples/phrasebook/GreetingsRon.gf b/examples/phrasebook/GreetingsRon.gf index 8e303a56a..e49974b5d 100644 --- a/examples/phrasebook/GreetingsRon.gf +++ b/examples/phrasebook/GreetingsRon.gf @@ -14,7 +14,6 @@ lin GSorry = ss "îmi pare rău" ; GGoodbye = ss "la revedere" ; GBye = ss "pa" ; - GWhatsYourName = ss "cum te cheamă" ; GNiceToMeetYou = ss "încântat" ; GSeeYouSoon = ss "pe curând" ; GHelp = ss "ajutor" ; @@ -23,6 +22,7 @@ lin GGoodDay = ss "bună ziua" ; GGoodEvening = ss "bună seara" ; GGoodNight = ss "noapte bună" ; + GCheers = ss "noroc" ; GTheCheck = ss "nota de plată" ; GYes = ss "da" ; diff --git a/examples/phrasebook/GreetingsSwe.gf b/examples/phrasebook/GreetingsSwe.gf index 9384c3955..4636fa65a 100644 --- a/examples/phrasebook/GreetingsSwe.gf +++ b/examples/phrasebook/GreetingsSwe.gf @@ -1,4 +1,4 @@ -concrete GreetingsSwe of Greetings = open Roles, Prelude in { +concrete GreetingsSwe of Greetings = open Prelude in { lincat Greeting = SS ; @@ -7,9 +7,9 @@ lin GHello = ss "hej" ; GThanks = ss "tack" ; GHowAreYou = ss "hur står det till" ; - GPleaseGive = ss "var så god" ; - GExcuse = ss "ursäkta" ; - GSorry = ss "förlåt" ; + GPleaseGive, GPleaseGivePol = ss "var så god" ; + GExcuse, GExcusePol = ss "ursäkta" ; + GSorry, GSorryPol = ss "förlåt" ; GGoodbye = ss "hej då" ; GBye = ss "hej då" ; GNiceToMeetYou = ss "trevligt att träffas" ; @@ -20,10 +20,7 @@ lin GGoodDay = ss "god dag" ; GGoodEvening = ss "god afton" ; GGoodNight = ss "god natt" ; - - GWhatsYourName = ss "vad heter du" ; - GWhatsYourNamePol = ss "vad heter ni" ; - + GCheers = ss "skål" ; GTheCheck = ss "notan" ; GYes = ss "ja" ; diff --git a/examples/phrasebook/Makefile b/examples/phrasebook/Makefile index 030b42fbe..bbdb47c40 100644 --- a/examples/phrasebook/Makefile +++ b/examples/phrasebook/Makefile @@ -3,6 +3,9 @@ all: pgf missing pgf: gf -make PhrasebookEng.gf PhrasebookFin.gf PhrasebookFre.gf PhrasebookIta.gf PhrasebookRon.gf PhrasebookSwe.gf DisambPhrasebookEng.gf DisambPhrasebookRon.gf +koe: + gf -make PhrasebookEng.gf PhrasebookFre.gf DisambPhrasebookEng.gf + missing: echo "pg -missing | wf -file=missing.txt" | gf Phrasebook.pgf diff --git a/examples/phrasebook/Sentences.gf b/examples/phrasebook/Sentences.gf index 73fb8a109..694028183 100644 --- a/examples/phrasebook/Sentences.gf +++ b/examples/phrasebook/Sentences.gf @@ -2,11 +2,14 @@ abstract Sentences = Numeral ** { cat Phrase ; - Sentence ; Question ; + Sentence ; Question ; Proposition ; Object ; Item ; Kind ; Quality ; Property ; - Place ; PlaceKind ; Currency ; Price ; Language ; - Person ; Action ; - + Place ; PlaceKind ; Currency ; Price ; + Person ; Action ; + Nationality ; Language ; Citizenship ; Country ; + Day ; -- weekday type + Date ; -- definite date + Name ; fun -- these phrases are formed here, not in Phrasebook, as they are functorial PSentence : Sentence -> Phrase ; @@ -21,19 +24,22 @@ abstract Sentences = Numeral ** { PCurrency : Currency -> Phrase ; PPrice : Price -> Phrase ; PLanguage : Language -> Phrase ; + PCitizenship : Citizenship -> Phrase ; + PCountry : Country -> Phrase ; + PDay : Day -> Phrase ; - Is : Item -> Quality -> Sentence ; - IsNot : Item -> Quality -> Sentence ; + Is : Item -> Quality -> Proposition ; - WhetherIs : Item -> Quality -> Question ; - WhereIs : Place -> Question ; + SProp : Proposition -> Sentence ; + SPropNot : Proposition -> Sentence ; + QProp : Proposition -> Question ; - SAction : Action -> Sentence ; - SNotAction : Action -> Sentence ; - QAction : Action -> Question ; + WhereIs : Place -> Question ; + + PropAction : Action -> Proposition ; HowMuchCost : Item -> Question ; - ItCost : Item -> Price -> Sentence ; + ItCost : Item -> Price -> Proposition ; AmountCurrency : Numeral -> Currency -> Price ; ObjItem : Item -> Object ; @@ -48,6 +54,19 @@ abstract Sentences = Numeral ** { ThePlace : PlaceKind -> Place ; - I, YouFam, YouPol : Person ; + IMale, IFemale, + YouFamMale, YouFamFemale, + YouPolMale, YouPolFemale : Person ; + LangNat : Nationality -> Language ; + CitiNat : Nationality -> Citizenship ; + CountryNat : Nationality -> Country ; + PropCit : Citizenship -> Property ; + + OnDay : Day -> Date ; + Today : Date ; + + PersonName : Name -> Person ; +---- NameString : String -> Name ; ---- creates ambiguities with all words + NameNN : Name ; -- the name "NN" } diff --git a/examples/phrasebook/SentencesEng.gf b/examples/phrasebook/SentencesEng.gf index 9c39e2e00..f71b14c6f 100644 --- a/examples/phrasebook/SentencesEng.gf +++ b/examples/phrasebook/SentencesEng.gf @@ -1,3 +1,5 @@ concrete SentencesEng of Sentences = NumeralEng ** SentencesI with (DiffPhrasebook = DiffPhrasebookEng), - (Syntax = SyntaxEng) ; + (Syntax = SyntaxEng), + (Symbolic = SymbolicEng), + (Lexicon = LexiconEng) ; diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf index 3e55038ca..6e7e5c9de 100644 --- a/examples/phrasebook/SentencesFin.gf +++ b/examples/phrasebook/SentencesFin.gf @@ -1,3 +1,5 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI with (DiffPhrasebook = DiffPhrasebookFin), - (Syntax = SyntaxFin) ; + (Syntax = SyntaxFin), + (Symbolic = SymbolicFin), + (Lexicon = LexiconFin) ; diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf index c4bbc842f..201db3323 100644 --- a/examples/phrasebook/SentencesFre.gf +++ b/examples/phrasebook/SentencesFre.gf @@ -1,10 +1,22 @@ -concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [WhetherIs, QAction] +concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [ + QProp, + IFemale, YouFamFemale, YouPolFemale + ] with (DiffPhrasebook = DiffPhrasebookFre), - (Syntax = SyntaxFre) ** open SyntaxFre, ExtraFre in { + (Syntax = SyntaxFre), + (Symbolic = SymbolicFre), + (Lexicon = LexiconFre) ** + open SyntaxFre, ExtraFre, Prelude in { lin - WhetherIs item quality = lin QS {s = \\_ => (EstcequeS (mkS (mkCl item quality))).s} ; - QAction a = lin QS {s = \\_ => (EstcequeS (mkS a)).s} ; + QProp a = + lin QS {s = \\_ => (EstcequeS (mkS a)).s} ; + IFemale = + {name = mkNP i8fem_Pron ; isPron = True ; poss = mkDet i_Pron} ; + YouFamFemale = + {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkDet youSg_Pron} ; + YouPolFemale = + {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkDet youPol_Pron}; } diff --git a/examples/phrasebook/SentencesI.gf b/examples/phrasebook/SentencesI.gf index f830e6366..31e3a6885 100644 --- a/examples/phrasebook/SentencesI.gf +++ b/examples/phrasebook/SentencesI.gf @@ -2,24 +2,33 @@ incomplete concrete SentencesI of Sentences = Numeral ** open DiffPhrasebook, Syntax, + Lexicon, + Symbolic, -- for names as strings Prelude in { lincat Phrase = Text ; Sentence = S ; Question = QS ; + Proposition = Cl ; Item = NP ; Kind = CN ; Quality = AP ; Property = A ; Object = NP ; - Place = NP ; - PlaceKind = CN ; + Place = {name : NP ; at : Adv ; to : Adv} ; + PlaceKind = {name : CN ; at : Prep ; to : Prep} ; Currency = CN ; Price = NP ; Action = Cl ; - Person = NP ; + Person = {name : NP ; isPron : Bool ; poss : Det} ; + Nationality = {lang : NP ; prop : A ; country : NP} ; Language = NP ; + Citizenship = A ; + Country = NP ; + Day = {name : NP ; point : Adv ; habitual : Adv} ; + Date = Adv ; + Name = NP ; lin PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.' PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?' @@ -28,23 +37,27 @@ incomplete concrete SentencesI of Sentences = Numeral ** PKind x = mkPhrase (mkUtt x) ; PQuality x = mkPhrase (mkUtt x) ; PNumeral x = mkPhrase (mkUtt (mkCard (x ** {lock_Numeral = <>}))) ; - PPlace x = mkPhrase (mkUtt x) ; - PPlaceKind x = mkPhrase (mkUtt x) ; + PPlace x = mkPhrase (mkUtt x.name) ; + PPlaceKind x = mkPhrase (mkUtt x.name) ; PCurrency x = mkPhrase (mkUtt x) ; PPrice x = mkPhrase (mkUtt x) ; PLanguage x = mkPhrase (mkUtt x) ; + PCountry x = mkPhrase (mkUtt x) ; + PCitizenship x = mkPhrase (mkUtt (mkAP x)) ; + PDay d = mkPhrase (mkUtt d.name) ; + + Is = mkCl ; - Is item quality = mkS (mkCl item quality) ; - IsNot item quality = mkS negativePol (mkCl item quality) ; - WhetherIs item quality = mkQS (mkQCl (mkCl item quality)) ; - WhereIs place = mkQS (mkQCl where_IAdv place) ; + SProp = mkS ; + SPropNot = mkS negativePol ; + QProp p = mkQS (mkQCl p) ; - SAction = mkS ; - SNotAction = mkS negativePol ; - QAction a = mkQS (mkQCl a) ; + WhereIs place = mkQS (mkQCl where_IAdv place.name) ; + + PropAction a = a ; HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item cost_V)) ; - ItCost item price = mkS (mkCl item cost_V2 price) ; + ItCost item price = mkCl item cost_V2 price ; AmountCurrency num curr = mkNP curr ; @@ -63,14 +76,34 @@ incomplete concrete SentencesI of Sentences = Numeral ** Very property = mkAP very_AdA (mkAP property) ; Too property = mkAP too_AdA (mkAP property) ; PropQuality property = mkAP property ; - ThePlace kind = mkNP the_Quant kind ; + ThePlace kind = + let name : NP = mkNP the_Quant kind.name in { + name = name ; + at = mkAdv kind.at name ; + to = mkAdv kind.to name + } ; - I = mkNP i_Pron ; - YouFam = mkNP youSg_Pron ; - YouPol = mkNP youPol_Pron ; + IMale, IFemale = mkPerson i_Pron ; + YouFamMale, YouFamFemale = mkPerson youSg_Pron ; + YouPolMale, YouPolFemale = mkPerson youPol_Pron ; + + LangNat n = n.lang ; + CitiNat n = n.prop ; + CountryNat n = n.country ; + PropCit c = c ; + + OnDay d = d.point ; + Today = today_Adv ; + + PersonName n = + {name = n ; isPron = False ; poss = mkDet he_Pron} ; -- poss not used +---- NameString s = symb s ; + NameNN = symb "NN" ; oper mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation + mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Det} = \p -> + {name = mkNP p ; isPron = True ; poss = mkDet p} ; } diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf index 5d1dc24a1..1646d8819 100644 --- a/examples/phrasebook/SentencesIta.gf +++ b/examples/phrasebook/SentencesIta.gf @@ -1,5 +1,21 @@ -concrete SentencesIta of Sentences = NumeralIta ** SentencesI +concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ + IFemale, YouFamFemale, YouPolFemale + ] with (DiffPhrasebook = DiffPhrasebookIta), - (Syntax = SyntaxIta) ; + (Syntax = SyntaxIta), + (Symbolic = SymbolicIta), + (Lexicon = LexiconIta) ** + open SyntaxIta, ExtraIta, Prelude in { + + lin + IFemale = + {name = mkNP i8fem_Pron ; isPron = True ; poss = mkDet i_Pron} ; + YouFamFemale = + {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkDet youSg_Pron} ; + YouPolFemale = + {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkDet youPol_Pron}; + +} + diff --git a/examples/phrasebook/SentencesRon.gf b/examples/phrasebook/SentencesRon.gf index eec9ea756..5103d2d59 100644 --- a/examples/phrasebook/SentencesRon.gf +++ b/examples/phrasebook/SentencesRon.gf @@ -1,3 +1,5 @@ concrete SentencesRon of Sentences = NumeralRon ** SentencesI with (DiffPhrasebook = DiffPhrasebookRon), - (Syntax = SyntaxRon) ; + (Syntax = SyntaxRon), + (Symbolic = SymbolicRon), + (Lexicon = LexiconRon) ; diff --git a/examples/phrasebook/SentencesSwe.gf b/examples/phrasebook/SentencesSwe.gf index f2e90ddf3..a57749668 100644 --- a/examples/phrasebook/SentencesSwe.gf +++ b/examples/phrasebook/SentencesSwe.gf @@ -1,3 +1,5 @@ concrete SentencesSwe of Sentences = NumeralSwe ** SentencesI with (DiffPhrasebook = DiffPhrasebookSwe), - (Syntax = SyntaxSwe) ; + (Syntax = SyntaxSwe), + (Symbolic = SymbolicSwe), + (Lexicon = LexiconSwe) ; diff --git a/examples/phrasebook/Words.gf b/examples/phrasebook/Words.gf index 0d364be20..594589569 100644 --- a/examples/phrasebook/Words.gf +++ b/examples/phrasebook/Words.gf @@ -4,27 +4,48 @@ abstract Words = Sentences ** { fun Wine, Beer, Water, Coffee, Tea : Kind ; Cheese, Fish, Pizza : Kind ; - Fresh, Warm, Italian, + Fresh, Warm, Expensive, Delicious, Boring, Good : Property ; - Bar, Restaurant, Toilet : PlaceKind ; + Bar, Restaurant, Toilet, + Museum, Airport, Station, Hospital, Church : PlaceKind ; Euro, Dollar, Lei : Currency ; - English, Finnish, French, Romanian, Swedish : Language ; + English, Finnish, French, Italian, Romanian, Swedish : Nationality ; + Belgian : Citizenship ; + Flemish : Language ; + Belgium : Country ; + + Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ; -- actions can be expressed by different structures in different languages - AWant : Person -> Object -> Action ; - ALike : Person -> Item -> Action ; - AHave : Person -> Kind -> Action ; - ASpeak : Person -> Language -> Action ; - ALove : Person -> Person -> Action ; - + AWant : Person -> Object -> Action ; + ALike : Person -> Item -> Action ; + AHave : Person -> Kind -> Action ; + ASpeak : Person -> Language -> Action ; + ALove : Person -> Person -> Action ; + ACitizen : Person -> Citizenship -> Action ; AHungry : Person -> Action ; AThirsty : Person -> Action ; ATired : Person -> Action ; + AIll : Person -> Action ; AScared : Person -> Action ; AUnderstand : Person -> Action ; + AKnow : Person -> Action ; + AWantGo : Person -> Place -> Action ; + ABePlace : Person -> Place -> Action ; + AHasName : Person -> Name -> Action ; + ALive : Person -> Country -> Action ; + + QWhatName : Person -> Question ; + + PropOpen : Place -> Proposition ; + PropClosed : Place -> Proposition ; + PropOpenDate : Place -> Date -> Proposition ; + PropClosedDate : Place -> Date -> Proposition ; + PropOpenDay : Place -> Day -> Proposition ; + PropClosedDay : Place -> Day -> Proposition ; } diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf index 3c7e0b038..b2385662d 100644 --- a/examples/phrasebook/WordsEng.gf +++ b/examples/phrasebook/WordsEng.gf @@ -1,7 +1,9 @@ -- (c) 2009 Aarne Ranta under LGPL concrete WordsEng of Words = SentencesEng ** - open SyntaxEng, ParadigmsEng, IrregEng in { + open + SyntaxEng, ParadigmsEng, (P = ParadigmsEng), + IrregEng, Prelude in { lin Wine = mkCN (mkN "wine") ; Beer = mkCN (mkN "beer") ; @@ -14,36 +16,96 @@ concrete WordsEng of Words = SentencesEng ** Fish = mkCN (mkN "fish" "fish") ; Fresh = mkA "fresh" ; Warm = mkA "warm" ; - Italian = mkA "Italian" ; Expensive = mkA "expensive" ; Delicious = mkA "delicious" ; Boring = mkA "boring" ; Good = mkA "good" "better" "best" "well" ; - Restaurant = mkCN (mkN "restaurant") ; - Bar = mkCN (mkN "bar") ; - Toilet = mkCN (mkN "toilet") ; + Restaurant = mkPlace "restaurant" "in" ; + Bar = mkPlace "bar" "in" ; + Toilet = mkPlace "toilet" "in" ; + Museum = mkPlace "museum" "in" ; + Airport = mkPlace "airport" "at" ; + Station = mkPlace "station" "at" ; + Hospital = mkPlace "hospital" "in" ; + Church = mkPlace "church" "in" ; Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes Dollar = mkCN (mkN "dollar") ; Lei = mkCN (mkN "leu" "lei") ; - English = mkNP (mkPN "English") ; - Finnish = mkNP (mkPN "Finnish") ; - French = mkNP (mkPN "French") ; - Romanian = mkNP (mkPN "Romanian") ; - Swedish = mkNP (mkPN "Swedish") ; + English = mkNat "English" "England" ; + Finnish = mkNat "Finnish" "Finland" ; + French = mkNat "French" "France" ; + Italian = mkNat "Italian" "Italy" ; + Romanian = mkNat "Romanian" "Romania" ; + Swedish = mkNat "Swedish" "Sweden" ; - AWant p obj = mkCl p (mkV2 (mkV "want")) obj ; - ALike p item = mkCl p (mkV2 (mkV "like")) item ; - AHave p kind = mkCl p have_V2 (mkNP kind) ; - ASpeak p lang = mkCl p (mkV2 IrregEng.speak_V) lang ; - ALove p q = mkCl p (mkV2 (mkV "love")) q ; + Belgian = mkA "Belgian" ; + Flemish = mkNP (mkPN "Flemish") ; + Belgium = mkNP (mkPN "Belgium") ; - AHungry p = mkCl p (mkA "hungry") ; - AThirsty p = mkCl p (mkA "thirsty") ; - ATired p = mkCl p (mkA "tired") ; - AScared p = mkCl p (mkA "scared") ; - AUnderstand p = mkCl p IrregEng.understand_V ; + Monday = mkDay "Monday" ; + Tuesday = mkDay "Tuesday" ; + Wednesday = mkDay "Wednesday" ; + Thursday = mkDay "Thursday" ; + Friday = mkDay "Friday" ; + Saturday = mkDay "Saturday" ; + Sunday = mkDay "Sunday" ; + + AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ; + ALike p item = mkCl p.name (mkV2 (mkV "like")) item ; + AHave p kind = mkCl p.name have_V2 (mkNP kind) ; + ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ; + ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ; + ACitizen p n = mkCl p.name n ; + AHungry p = mkCl p.name (mkA "hungry") ; + AThirsty p = mkCl p.name (mkA "thirsty") ; + ATired p = mkCl p.name (mkA "tired") ; + AScared p = mkCl p.name (mkA "scared") ; + AIll p = mkCl p.name (mkA "ill") ; + AUnderstand p = mkCl p.name IrregEng.understand_V ; + AKnow p = mkCl p.name IrregEng.know_V ; + AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ; + ABePlace p place = mkCl p.name place.at ; + AHasName p name = mkCl (nameOf p) name ; + ALive p co = + mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ; + + QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ; + + PropOpen p = mkCl p.name open_Adv ; + PropClosed p = mkCl p.name closed_Adv ; + PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ; + PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ; + PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ; + PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ; + + oper + mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> + {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; + + mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> + let day = mkNP (mkPN d) in + {name = day ; + point = SyntaxEng.mkAdv on_Prep day ; + habitual = SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d))) + } ; + + mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { + name = mkCN (mkN p) ; + at = P.mkPrep i ; + to = to_Prep + } ; + + open_Adv = P.mkAdv "open" ; + closed_Adv = P.mkAdv "closed" ; + + nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p -> + case p.isPron of { + True => mkNP p.poss (mkN "name") ; + _ => mkNP (mkNP the_Det (mkN "name")) + (SyntaxEng.mkAdv possess_Prep p.name) + } ; } diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf index c1866026a..fa80d0a78 100644 --- a/examples/phrasebook/WordsFin.gf +++ b/examples/phrasebook/WordsFin.gf @@ -1,7 +1,9 @@ -- (c) 2009 Aarne Ranta under LGPL concrete WordsFin of Words = SentencesFin ** - open SyntaxFin, ParadigmsFin, DiffPhrasebookFin in { + open + SyntaxFin, ParadigmsFin, (L = LangFin), + DiffPhrasebookFin, Prelude, (E = ExtraFin) in { lin Wine = mkCN (mkN "viini") ; Beer = mkCN (mkN "olut" "oluita") ; @@ -19,36 +21,100 @@ concrete WordsFin of Words = SentencesFin ** "lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin" ) "lämpimämpi" "lämpimin" ; - Italian = mkA "italialainen" ; Expensive = mkA "kallis" ; Delicious = mkA "herkullinen" ; Boring = mkA "tylsä" ; Good = mkA (mkN "hyvä") "parempi" "paras" ; ---- comparisons? - Restaurant = mkCN (mkN "ravintola") ; - Bar = mkCN (mkN "baari") ; - Toilet = mkCN (mkN "vessa") ; + Restaurant = mkPlace (mkN "ravintola") False ; + Bar = mkPlace (mkN "baari") False ; + Toilet = mkPlace (mkN "vessa") False ; + Museum = mkPlace (mkN "museo") False ; + Airport = mkPlace (mkN "lento" (mkN "kenttä")) True ; + Station = mkPlace (mkN "asema") True ; + Hospital = mkPlace (mkN "sairaala") False ; + Church = mkPlace (mkN "kirkko") False ; Euro = mkCN (mkN "euro") ; Dollar = mkCN (mkN "dollari") ; Lei = mkCN (mkN "lei") ; - AWant p obj = mkCl p want_V2 obj ; - ALike p item = mkCl p like_V2 item ; - AHave p kind = mkCl p have_V2 (mkNP kind) ; - ASpeak p lang = mkCl p (mkV2 (mkV "puhua") partitive) lang ; - ALove p q = mkCl p (mkV2 (mkV "rakastaa") partitive) q ; + ---- it would be nice to have a capitalization Predef function + English = mkNat (mkPN "englanti") (mkPN "Englanti") (mkA "englantilainen") ; + Finnish = + mkNat (mkPN (mkN "suomi" "suomia")) (mkPN (mkN "Suomi" "Suomia")) + (mkA "suomalainen") ; + French = mkNat (mkPN "ranska") (mkPN "Ranska") (mkA "ranskalainen") ; + Italian = mkNat (mkPN "italia") (mkPN "Italia") (mkA "italialainen") ; + Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ; + Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ; - English = mkNP (mkPN "englanti") ; - Finnish = mkNP (mkPN (mkN "suomi" "suomia")) ; - French = mkNP (mkPN "ranska") ; - Romanian = mkNP (mkPN "romania") ; - Swedish = mkNP (mkPN "ruotsi") ; + Belgian = mkA "belgialainen" ; + Flemish = mkNP (mkPN "flaami") ; + Belgium = mkNP (mkPN "Belgia") ; - AHungry p = mkCl p have_V2 (mkNP (mkN "nälkä")) ; - AThirsty p = mkCl p have_V2 (mkNP (mkN "jano")) ; - ATired p = mkCl p (caseV partitive (mkV "väsyttää")) ; - AScared p = mkCl p (caseV partitive (mkV "pelottaa")) ; - AUnderstand p = mkCl p (mkV "ymmärtää") ; + Monday = let d = "maanantai" in mkDay (mkPN d) (d + "sin") ; + Tuesday = let d = "tiistai" in mkDay (mkPN d) (d + "sin") ; + Wednesday = let d = "keskiviikko" in mkDay (mkPN d) (d + "isin") ; + Thursday = let d = "torstai" in mkDay (mkPN d) (d + "sin") ; + Friday = let d = "perjantai" in mkDay (mkPN d) (d + "sin") ; + Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ; + Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ; + + AWant p obj = mkCl p.name want_V2 obj ; + ALike p item = mkCl p.name L.like_V2 item ; + AHave p kind = mkCl p.name have_V2 (mkNP kind) ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ; + ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ; + ACitizen p n = mkCl p.name n ; + AHungry p = mkCl p.name have_V2 (mkNP (mkN "nälkä")) ; + AThirsty p = mkCl p.name have_V2 (mkNP (mkN "jano")) ; + ATired p = mkCl p.name (caseV partitive (mkV "väsyttää")) ; + AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ; + AIll p = mkCl p.name (mkA "sairas") ; + AUnderstand p = mkCl p.name (mkV "ymmärtää") ; + AKnow p = mkCl p.name (mkV "tietää") ; + AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; + ABePlace p place = mkCl p.name place.at ; + AHasName p name = mkCl (nameOf p) name ; + ALive p co = + mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv in_Prep co)) ; + + QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ; + + PropOpen p = mkCl p.name open_Adv ; + PropClosed p = mkCl p.name closed_Adv ; + PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ; + PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ; + PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ; + PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ; + + oper + mkNat : PN -> PN -> A -> + {lang : NP ; prop : A ; country : NP} = \nat,co,pro -> + {lang = mkNP nat ; + prop = pro ; + country = mkNP co + } ; + + ---- using overloaded paradigms slows down compilation dramatically + mkDay : PN -> Str -> {name : NP ; point : Adv ; habitual : Adv} = \d,s -> + let day = mkNP d in + {name = day ; + point = SyntaxFin.mkAdv (casePrep essive) day ; + habitual = ParadigmsFin.mkAdv s + } ; + + mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep} = \p,e -> { + name = mkCN p ; + at = casePrep (if_then_else Case e adessive inessive) ; -- True: external + to = casePrep (if_then_else Case e allative elative) ; + } ; + + open_Adv = ParadigmsFin.mkAdv "avoinna" ; + closed_Adv = ParadigmsFin.mkAdv "kiinni" ; + + nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p -> + mkNP (E.GenNP p.name) (mkN "nimi" "nimiä") ; } diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf index b4fea41ed..3851301a7 100644 --- a/examples/phrasebook/WordsFre.gf +++ b/examples/phrasebook/WordsFre.gf @@ -5,8 +5,9 @@ concrete WordsFre of Words = SentencesFre ** open DiffPhrasebookFre, IrregFre, (E = ExtraFre), - ParadigmsFre in -{ + ParadigmsFre, + (P = ParadigmsFre) in { + flags coding=utf8 ; lin @@ -23,36 +24,92 @@ Pizza = mkCN (mkN "pizza" feminine) ; Fresh = mkA "frais" "fraîche" "frais" "fraîchement" ; Warm = mkA "chaud" ; -Italian = mkA "italien" ; Expensive = mkA "cher" ; Delicious = mkA "délicieux" ; Boring = mkA "ennuyeux" ; Good = prefixA (mkA "bon" "bonne" "bons" "bien") ; - Restaurant = mkCN (mkN "restaurant") ; - Bar = mkCN (mkN "bar") ; - Toilet = mkCN (mkN "toilette") ; + Restaurant = mkPlace (mkN "restaurant") in_Prep ; + Bar = mkPlace (mkN "bar") in_Prep ; + Toilet = mkPlace (mkN "toilette") in_Prep ; + Museum = mkPlace (mkN "musée" masculine) in_Prep ; + Airport = mkPlace (mkN "aéroport") dative ; + Station = mkPlace (mkN "gare") dative ; + Hospital = mkPlace (mkN "hôpital") dative ; + Church = mkPlace (mkN "église") in_Prep ; Euro = mkCN (mkN "euro") ; Dollar = mkCN (mkN "dollar") ; - Lei = mkCN (mkN "lei") ; ---- ? + Lei = mkCN (mkN "leu" "lei" masculine) ; - AWant p obj = mkCl p want_V2 obj ; - ALike p item = mkCl item plaire_V2 p ; - AHave p kind = mkCl p have_V2 (mkNP kind) ; - ASpeak p lang = mkCl p (mkV2 (mkV "parler")) lang ; - ALove p q = mkCl p (mkV2 (mkV "aimer")) q ; + English = mkNat "anglais" "Angleterre" ; + Finnish = mkNat "finlandais" "Finlande" ; + French = mkNat "français" "France" ; + Italian = mkNat "italien" "Italie" ; + Romanian = mkNat "roumain" "Roumanie" ; + Swedish = mkNat "suédois" "Suède" ; - English = mkNP (mkPN "anglais") ; - Finnish = mkNP (mkPN "finnois") ; - French = mkNP (mkPN "français") ; - Romanian = mkNP (mkPN "roumain") ; - Swedish = mkNP (mkPN "suédois") ; + Belgian = mkA "belge" ; + Flemish = mkNP (mkPN "flamand") ; + Belgium = mkNP (mkPN "Belgique") ; + + Monday = mkDay "lundi" ; + Tuesday = mkDay "mardi" ; + Wednesday = mkDay "mercredi" ; + Thursday = mkDay "jeudi" ; + Friday = mkDay "vendredi" ; + Saturday = mkDay "samedi" ; + Sunday = mkDay "dimanche" ; + + AWant p obj = mkCl p.name want_V2 obj ; + ALike p item = mkCl item plaire_V2 p.name ; + AHave p kind = mkCl p.name have_V2 (mkNP kind) ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ; + ALove p q = mkCl p.name (mkV2 (mkV "aimer")) q.name ; + ACitizen p n = mkCl p.name n ; + AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ; + AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "soif" feminine))) ; + ATired p = mkCl p.name (mkA "fatigué") ; + AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "peur" feminine))) ; + AIll p = mkCl p.name (mkA "malade") ; + AUnderstand p = mkCl p.name (mkV IrregFre.comprendre_V2) ; + AKnow p = mkCl p.name (mkV IrregFre.savoir_V2) ; + AWantGo p place = + mkCl p.name want_VV (mkVP (mkVP IrregFre.aller_V) place.to) ; + ABePlace p place = mkCl p.name place.at ; + AHasName p name = mkCl p.name (mkV2 (reflV (mkV "appeler"))) name ; + ALive p co = + mkCl p.name (mkVP (mkVP (mkV "habiter")) + (SyntaxFre.mkAdv (mkPrep "en") co)) ; + + QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ; + + 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) ; + + oper + mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> + {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; + + mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> + let day = mkNP (mkPN d) in + {name = day ; + point = P.mkAdv d ; + habitual = P.mkAdv ("le" ++ d) ; + } ; + + mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { + name = mkCN p ; + at = i ; + to = dative + } ; + + open_A = P.mkA "ouvert" ; + closed_A = P.mkA "fermé" ; - AHungry p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ; - AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "soif" feminine))) ; - ATired p = mkCl p (mkA "fatigué") ; - AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "peur" feminine))) ; - AUnderstand p = mkCl p (mkV IrregFre.comprendre_V2) ; } diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf index 550273748..cdc8ca267 100644 --- a/examples/phrasebook/WordsIta.gf +++ b/examples/phrasebook/WordsIta.gf @@ -5,6 +5,8 @@ concrete WordsIta of Words = SentencesIta ** open DiffPhrasebookIta, BeschIta, (E = ExtraIta), + (L = LexiconIta), + (P = ParadigmsIta), ParadigmsIta in { lin @@ -13,7 +15,7 @@ Wine = mkCN (mkN "vino") ; Beer = mkCN (mkN "birra") ; Water = mkCN (mkN "acqua") ; Coffee = mkCN (mkN "caffè") ; --- Tea = mkCN (mkN "té") ; ---- + Tea = mkCN (mkN "tè") ; Cheese = mkCN (mkN "formaggio") ; Fish = mkCN (mkN "pesce") ; @@ -21,39 +23,92 @@ Pizza = mkCN (mkN "pizza") ; Fresh = mkA "fresco" ; Warm = mkA "caldo" ; -Italian = mkA "italiano" ; Expensive = mkA "caro" ; Delicious = mkA "delizioso" ; Boring = mkA "noioso" ; Good = prefixA (mkA "buono" "buona" "buoni" "buone" "bene") ; - Restaurant = mkCN (mkN "ristorante") ; - Bar = mkCN (mkN "bar") ; - Toilet = mkCN (mkN "bagno") ; + Restaurant = mkPlace (mkN "ristorante") P.in_Prep ; + Bar = mkPlace (mkN "bar") P.in_Prep ; + Toilet = mkPlace (mkN "bagno") P.in_Prep ; + Museum = mkPlace (mkN "museo") P.in_Prep ; + Airport = mkPlace (mkN "aeroporto") dative ; + Station = mkPlace (mkN "stazione" feminine) dative ; + Hospital = mkPlace (mkN "ospedale") P.in_Prep ; + Church = mkPlace (mkN "chiesa") P.in_Prep ; Euro = mkCN (mkN "euro" "euro" masculine) ; Dollar = mkCN (mkN "dollar") ; Lei = mkCN (mkN "lei") ; ---- ? - AWant p obj = mkCl p want_V2 obj ; - ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p ; - AHave p kind = mkCl p have_V2 (mkNP kind) ; - ASpeak p lang = mkCl p (mkV2 (mkV "parlare")) lang ; - ALove p q = mkCl p (mkV2 (mkV "amare")) q ; + English = mkNat "inglese" "Inghilterra" ; + Finnish = mkNat "finlandese" "Finlandia" ; + French = mkNat "francese" "Francia" ; + Italian = mkNat "italiano" "Italia" ; + Romanian = mkNat "rumeno" "Romania" ; + Swedish = mkNat "svedese" "Svezia" ; - English = mkNP (mkPN "inglese") ; - Finnish = mkNP (mkPN "finlandese") ; - French = mkNP (mkPN "francese") ; - Romanian = mkNP (mkPN "rumeno") ; - Swedish = mkNP (mkPN "svedese") ; + Belgian = mkA "belgo" ; + Flemish = mkNP (mkPN "fiammingo") ; + Belgium = mkNP (mkPN "Belgio") ; - AHungry p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ; - AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ; - ATired p = mkCl p (mkA "stanco") ; - AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ; - AUnderstand p = mkCl p (mkV "capire") ; + Monday = mkDay "lunedì" ; + Tuesday = mkDay "martedì" ; + Wednesday = mkDay "mercoledì" ; + Thursday = mkDay "giovedì" ; + Friday = mkDay "venerdì" ; + Saturday = mkDay "sabato" ; + Sunday = mkDay "domenica" ; + + AWant p obj = mkCl p.name want_V2 obj ; + ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ; + AHave p kind = mkCl p.name have_V2 (mkNP kind) ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ; + ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ; + ACitizen p n = mkCl p.name n ; + AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ; + AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ; + ATired p = mkCl p.name (mkA "stanco") ; + AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ; + AIll p = mkCl p.name (mkA "malato") ; + AUnderstand p = mkCl p.name (mkV "capire") ; + AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ; + AWantGo p place = + mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ; + ABePlace p place = mkCl p.name place.at ; + AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ; + ALive p co = + mkCl p.name (mkVP (mkVP (mkV "abitare")) + (SyntaxIta.mkAdv P.in_Prep co)) ; + + QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ; + + 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) ; + + oper + mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> + {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ; + + mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> + let day = mkNP (mkPN d) in + {name = day ; + point, -- = ParadigmsIta.mkAdv d ; + habitual = ParadigmsIta.mkAdv ("il" ++ d) ; ---- ? + } ; + + mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { + name = mkCN p ; + at = i ; + to = dative + } ; + + open_A = mkA "aperto" ; + closed_A = mkA "chiuso" ; -oper -mkAPA : (_ : Str) -> AP = \x -> mkAP (mkA x) ; } diff --git a/examples/phrasebook/WordsRon.gf b/examples/phrasebook/WordsRon.gf index 016ef87d8..55b2b839b 100644 --- a/examples/phrasebook/WordsRon.gf +++ b/examples/phrasebook/WordsRon.gf @@ -22,37 +22,39 @@ Pizza = mkCN (mkN "pizza" "pizze" feminine) ; Fresh = mkA "proaspăt" "proaspătă" "proaspeÅ£i" "proaspete" ; Warm = mkA "cald" "caldă" "calzi" "calde" ; -Italian = mkA "italian" "italiană" "italieni" "italiene" ; Expensive = mkA "scump" "scumpă" "scumpi" "scumpe" ; Delicious = mkA "delicios" "delcioasă" "delicioÅŸi" "delicioase" ; Boring = mkA "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ; Good = mkA "bun" "bună" "buni" "bune" "bine" ; - Restaurant = mkCN (mkN "restaurant") ; - Bar = mkCN (mkNR "bar") ; - Toilet = mkCN (mkN "toaleta") ; + Restaurant = mkPlace (mkN "restaurant") in_Prep ; + Bar = mkPlace (mkNR "bar") in_Prep ; + Toilet = mkPlace (mkN "toaleta") in_Prep ; Euro = mkCN (mkN "euro" "euro") ; Dollar = mkCN (mkN "dolar" masculine) ; Lei = mkCN (mkN "leu" "lei") ; - AWant p obj = mkCl p want_V2 obj ; - ALike p item = mkCl p like_V2 item ; - AHave p kind = mkCl p have_V2 (SyntaxRon.mkNP kind) ; - ASpeak p lang = mkCl p (dirV2 (mkV "vorbi")) lang ; - ALove p q = mkCl p (dirV2 (mkV "iubi")) q ; - - English = SyntaxRon.mkNP (mkPN "engleză") ; ---- ? +-- English = SyntaxRon.mkNP (mkPN "engleză") ; ---- ? -- Finnish = mkNP (mkPN "finnois") ; -- French = mkNP (mkPN "français") ; - Romanian = SyntaxRon.mkNP (mkPN "română") ; ---- ? +-- Italian = mkA "italian" "italiană" "italieni" "italiene" ; +-- Romanian = SyntaxRon.mkNP (mkPN "română") ; ---- ? -- Swedish = mkNP (mkPN "suédois") ; + AWant p obj = mkCl p.name want_V2 obj ; + ALike p item = mkCl p.name like_V2 item ; + AHave p kind = mkCl p.name have_V2 (SyntaxRon.mkNP kind) ; + ASpeak p lang = mkCl p.name (dirV2 (mkV "vorbi")) lang ; + ALove p q = mkCl p.name (dirV2 (mkV "iubi")) q.name ; + AUnderstand p = mkCl p.name (v_besch83 "înÅ£elege") ; + -- AHungry p = mkCl p have_V2 (SyntaxRon.mkNP a_Det (mkN "foame")) ; -- AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ; -- ATired p = mkCl p (mkA "stanco") ; -- AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ; - AUnderstand p = mkCl p (v_besch83 "înÅ£elege") ; + + {- GImHungry = ss "mi-e foame" ; GImThirsty = ss "mi-e sete" ; @@ -60,8 +62,11 @@ Good = mkA "bun" "bună" "buni" "bune" "bine" ; GImScared = ss "mi-e frică" ; -} - oper -mkAPA : (_,_,_,_ : Str) -> AP = \x,y,z,u -> mkAP (mkA x y z u) ; + mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { + name = mkCN p ; + at = i ; + to = to_Prep ---- ? + } ; } diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf index e02526157..2a0a3478a 100644 --- a/examples/phrasebook/WordsSwe.gf +++ b/examples/phrasebook/WordsSwe.gf @@ -1,7 +1,7 @@ -- (c) 2009 Aarne Ranta under LGPL concrete WordsSwe of Words = SentencesSwe ** - open SyntaxSwe, ParadigmsSwe in { + open SyntaxSwe, ParadigmsSwe, IrregSwe, Prelude in { lin Wine = mkCN (mkN "vin" "vinet" "viner" "vinerna") ; Beer = mkCN (mkN "öl" neutrum) ; @@ -14,36 +14,97 @@ concrete WordsSwe of Words = SentencesSwe ** Fish = mkCN (mkN "fisk") ; Fresh = mkA "färsk" ; Warm = mkA "varm" ; - Italian = mkA "italiensk" ; Expensive = mkA "dyr" ; Delicious = mkA "läcker" ; Boring = mkA "tråkig" ; Good = mkA "god" "gott" "goda" "bättre" "bäst" ; - Restaurant = mkCN (mkN "restaurang" "restauranger") ; - Bar = mkCN (mkN "bar" "barer") ; - Toilet = mkCN (mkN "toalett" "toaletter") ; + Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ; + Bar = mkPlace (mkN "bar" "barer") "i" ; + Toilet = mkPlace (mkN "toalett" "toaletter") "på" ; + Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ; + Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ; + Station = mkPlace (mkN "station" "stationer") "på" ; + Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ; + Church = mkPlace (mkN "kyrka") "i" ; Euro = mkCN (mkN "euro" "euro") ; Dollar = mkCN (mkN "dollar" "dollar") ; Lei = mkCN (mkN "lei" "lei") ; - English = mkNP (mkPN "engelska") ; - Finnish = mkNP (mkPN "finska") ; - French = mkNP (mkPN "franska") ; - Romanian = mkNP (mkPN "rumänska") ; - Swedish = mkNP (mkPN "svenska") ; + English = mkNat "engelsk" "England" ; + Finnish = mkNat "finsk" "Finland" ; + French = mkNat "fransk" "Frankrike" ; + Italian = mkNat "italiensk" "Italien" ; + Romanian = mkNat "rumänsk" "Rumänien" ; + Swedish = mkNat "svensk" "Sverige" ; - AWant p obj = mkCl p want_VV (mkVP have_V2 obj) ; - ALike p item = mkCl p (mkV2 (mkV "tycker") (mkPrep "om")) item ; - AHave p kind = mkCl p have_V2 (mkNP kind) ; - ASpeak p lang = mkCl p (mkV2 (mkV "tala")) lang ; - ALove p q = mkCl p (mkV2 (mkV "älska")) q ; + Belgian = mkA "belgisk" ; + Flemish = mkNP (mkPN "flamländska") ; + Belgium = mkNP (mkPN "Belgien") ; - AHungry p = mkCl p (mkA "hungrig") ; - AThirsty p = mkCl p (mkA "törstig") ; - ATired p = mkCl p (mkA "trött") ; - AScared p = mkCl p (mkA "rädd") ; - AUnderstand p = mkCl p (mkV "förstå" "förstod" "förstått") ; + Monday = mkDay "måndag" ; + Tuesday = mkDay "tisdag" ; + Wednesday = mkDay "onsdag" ; + Thursday = mkDay "torsdag" ; + Friday = mkDay "fredag" ; + Saturday = mkDay "lördag" ; + Sunday = mkDay "söndag" ; + AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ; + ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ; + AHave p kind = mkCl p.name have_V2 (mkNP kind) ; + ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ; + ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ; + ACitizen p n = mkCl p.name n ; + AHungry p = mkCl p.name (mkA "hungrig") ; + AThirsty p = mkCl p.name (mkA "törstig") ; + ATired p = mkCl p.name (mkA "trött") ; + AScared p = mkCl p.name (mkA "rädd") ; + AIll p = mkCl p.name (mkA "sjuk") ; + AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ; + AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ; + ---- IrregSwe.veta_V gives "missing" + AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregSwe.gå_V) place.to) ; + ABePlace p place = mkCl p.name place.at ; + AHasName p name = mkCl (nameOf p) name ; + ALive p co = + mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ; + + QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ; + + 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) ; + + oper + mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co -> + {lang = mkNP (mkPN (nat + "a")) ; + prop = mkA nat ; country = mkNP (mkPN co)} ; + + mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d -> + let day = mkNP (mkPN d) in + {name = day ; + point = SyntaxSwe.mkAdv on_Prep day ; + habitual = SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d))) + } ; + + mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> { + name = mkCN p ; + at = mkPrep i ; + to = to_Prep + } ; + + open_A = mkA "öppen" "öppet" ; + closed_A = mkA "stängd" "stängt" ; + + nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p -> + case p.isPron of { + True => mkNP p.poss (mkN "namn" "namn") ; + _ => mkNP (mkNP the_Det (mkN "namn" "namn")) + (SyntaxSwe.mkAdv possess_Prep p.name) + } ; } diff --git a/examples/phrasebook/missing.txt b/examples/phrasebook/missing.txt index cbcb07ccc..9d2489e63 100644 --- a/examples/phrasebook/missing.txt +++ b/examples/phrasebook/missing.txt @@ -1,8 +1,8 @@ DisambPhrasebookEng : -DisambPhrasebookRon : AHungry AScared AThirsty ATired Coffee Finnish French GExcusePol GPleaseGivePol GSorryPol GWhatsYourNamePol Swedish Tea +DisambPhrasebookRon : ABePlace ACitizen AHasName AHungry AIll AKnow ALive AScared AThirsty ATired AWantGo Airport Belgian Belgium Church Coffee English Finnish Flemish French Friday GExcusePol GPleaseGivePol GSorryPol Hospital Italian Monday Museum PropClosed PropClosedDate PropClosedDay PropOpen PropOpenDate PropOpenDay QWhatName Romanian Saturday Station Sunday Swedish Tea Thursday Tuesday Wednesday PhrasebookEng : PhrasebookFin : PhrasebookFre : -PhrasebookIta : GNiceToMeetYou GSeeYouSoon Tea -PhrasebookRon : AHungry AScared AThirsty ATired Coffee Finnish French GExcusePol GPleaseGivePol GSorryPol GWhatsYourNamePol Swedish Tea -PhrasebookSwe : GExcusePol GPleaseGivePol GSorryPol +PhrasebookIta : GNiceToMeetYou GSeeYouSoon +PhrasebookRon : ABePlace ACitizen AHasName AHungry AIll AKnow ALive AScared AThirsty ATired AWantGo Airport Belgian Belgium Church Coffee English Finnish Flemish French Friday GExcusePol GPleaseGivePol GSorryPol Hospital Italian Monday Museum PropClosed PropClosedDate PropClosedDay PropOpen PropOpenDate PropOpenDay QWhatName Romanian Saturday Station Sunday Swedish Tea Thursday Tuesday Wednesday +PhrasebookSwe :