mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-07 18:22:50 -06:00
Add Phrasebook to testsuite. Move grammars into subfolders. Add run-bench script.
This commit is contained in:
28
testsuite/lpgf/phrasebook/Greetings.gf
Normal file
28
testsuite/lpgf/phrasebook/Greetings.gf
Normal file
@@ -0,0 +1,28 @@
|
||||
abstract Greetings = Sentences [Greeting] ** {
|
||||
|
||||
fun
|
||||
GBye : Greeting ;
|
||||
GCheers : Greeting ;
|
||||
GDamn : Greeting ;
|
||||
GExcuse, GExcusePol : Greeting ;
|
||||
GGoodDay : Greeting ;
|
||||
GGoodEvening : Greeting ;
|
||||
GGoodMorning : Greeting ;
|
||||
GGoodNight : Greeting ;
|
||||
GGoodbye : Greeting ;
|
||||
GHello : Greeting ;
|
||||
GHelp : Greeting ;
|
||||
GHowAreYou : Greeting ;
|
||||
GLookOut : Greeting ;
|
||||
GNiceToMeetYou : Greeting ;
|
||||
GPleaseGive, GPleaseGivePol : Greeting ;
|
||||
GSeeYouSoon : Greeting ;
|
||||
GSorry, GSorryPol : Greeting ;
|
||||
GThanks : Greeting ;
|
||||
GTheCheck : Greeting ;
|
||||
GCongratulations : Greeting ;
|
||||
GHappyBirthday : Greeting ;
|
||||
GGoodLuck : Greeting ;
|
||||
GWhatTime : Greeting ;
|
||||
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsBul.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsBul.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete GreetingsBul of Greetings = SentencesBul [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
flags
|
||||
coding=utf8;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "чао" ;
|
||||
GCheers = mkGreeting "наздраве" ;
|
||||
GDamn = mkGreeting "по дяволите" ;
|
||||
GExcuse, GExcusePol = mkGreeting "извинете" ;
|
||||
GGoodDay = mkGreeting "добър ден" ;
|
||||
GGoodEvening = mkGreeting "добра вечер" ;
|
||||
GGoodMorning = mkGreeting "добро утро" ;
|
||||
GGoodNight = mkGreeting "лека нощ" ;
|
||||
GGoodbye = mkGreeting "довиждане" ;
|
||||
GHello = mkGreeting "здравей" ;
|
||||
GHelp = mkGreeting "помощ" ;
|
||||
GHowAreYou = mkGreeting "как си" ;
|
||||
GLookOut = mkGreeting "погледни" ;
|
||||
GNiceToMeetYou = mkGreeting "радвам се да се видим" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "моля" ;
|
||||
GSeeYouSoon = mkGreeting "до скоро" ;
|
||||
GSorry, GSorryPol = mkGreeting "извинете" ;
|
||||
GThanks = mkGreeting "благодаря ти" ;
|
||||
GTheCheck = mkGreeting "сметката" ;
|
||||
GCongratulations = mkGreeting "поздравления";
|
||||
GHappyBirthday = mkGreeting "честит рожден ден" ;
|
||||
GGoodLuck = mkGreeting "успех" ;
|
||||
GWhatTime = mkGreeting "колко е часът" ;
|
||||
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsCat.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsCat.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsCat of Greetings = SentencesCat [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "adéu" ;
|
||||
GCheers = mkGreeting "salut" ;
|
||||
GDamn = mkGreeting "merda" ;
|
||||
GExcuse = mkGreeting "perdona" ;
|
||||
GExcusePol = mkGreeting ("perdoni" | "disculpi") ;
|
||||
GCongratulations = mkGreeting "felicitats" ;
|
||||
GHappyBirthday = mkGreeting "feliç aniversari" ;
|
||||
GGoodLuck = mkGreeting "sort" ;
|
||||
GGoodDay = mkGreeting "bon dia" ;
|
||||
GGoodEvening = mkGreeting "bona tarda" ;
|
||||
GGoodMorning = mkGreeting "bon dia" ;
|
||||
GGoodNight = mkGreeting "bona nit" ;
|
||||
GGoodbye = mkGreeting "a reveure" ;
|
||||
GHello = mkGreeting "hola" ;
|
||||
GHelp = mkGreeting "socors" ;
|
||||
GHowAreYou = mkGreeting "què tal" ;
|
||||
GLookOut = mkGreeting "compte" ;
|
||||
GNiceToMeetYou = mkGreeting "encantat de conèixer-lo" ; -- make distinction Masc/Fem
|
||||
GPleaseGive = mkGreeting "si et plau" ;
|
||||
GPleaseGivePol = mkGreeting "si us plau" ;
|
||||
GSeeYouSoon = mkGreeting "fins aviat" ;
|
||||
GSorry = mkGreeting "perdoni" ;
|
||||
GSorryPol = mkGreeting "em sap greu" ;
|
||||
GThanks = mkGreeting "gràcies" ;
|
||||
GTheCheck = mkGreeting "el compte" ;
|
||||
|
||||
}
|
||||
33
testsuite/lpgf/phrasebook/GreetingsChi.gf
Normal file
33
testsuite/lpgf/phrasebook/GreetingsChi.gf
Normal file
@@ -0,0 +1,33 @@
|
||||
concrete GreetingsChi of Greetings =
|
||||
SentencesChi [Greeting,mkGreeting] **
|
||||
open ParadigmsChi, ResChi, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = (mkInterj "再见" ) ;
|
||||
GCheers = (mkInterj "干杯" ) ;
|
||||
GDamn = (mkInterj "该死的" ) ;
|
||||
GExcuse, GExcusePol = (mkInterj "原谅我" ) ;
|
||||
GGoodDay = (mkInterj "你好" ) ;
|
||||
GGoodEvening = (mkInterj "下午好" ) ;
|
||||
GGoodMorning = (mkInterj "早上好" ) ;
|
||||
GGoodNight = (mkInterj "晚安" ) ;
|
||||
GGoodbye = (mkInterj "再见" ) ;
|
||||
GHello = (mkInterj "你好" ) ;
|
||||
GHelp = mkInterj "帮助" ;
|
||||
GHowAreYou = mkInterj "你好吗" ;
|
||||
GLookOut = mkInterj "留意" ;
|
||||
GNiceToMeetYou = mkInterj "很高兴见到你" ;
|
||||
GNiceToMeetYouPol = mkInterj "很高兴见到您" ;
|
||||
GPleaseGive, GPleaseGivePol = mkInterj "请" ;
|
||||
GSeeYouSoon = mkInterj "很快再见" ;
|
||||
GSorry, GSorryPol = mkInterj "对不起" ;
|
||||
GThanks = (mkInterj "谢谢" ) ;
|
||||
GTheCheck = mkInterj "检查" ;
|
||||
GCongratulations = mkInterj "祝贺您" ;
|
||||
GHappyBirthday = mkInterj "祝你生日快乐" ;
|
||||
GGoodLuck = (mkInterj "祝你好运" ) ;
|
||||
GWhatTime = mkInterj "现在是什么时候" ;
|
||||
|
||||
}
|
||||
29
testsuite/lpgf/phrasebook/GreetingsDan.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsDan.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsDan of Greetings = SentencesDan [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "hej hej" ; -- not google translate
|
||||
GCheers = mkGreeting "skål" ;
|
||||
GDamn = mkGreeting "satans" ; -- X
|
||||
GExcuse, GExcusePol = mkGreeting "undskyld mig" ;
|
||||
GGoodDay = mkGreeting "god dag" ;
|
||||
GGoodEvening = mkGreeting "god aften" ;
|
||||
GGoodMorning = mkGreeting "god morgen" ;
|
||||
GGoodNight = mkGreeting "godnat" ;
|
||||
GGoodbye = mkGreeting "farvel" ;
|
||||
GHello = mkGreeting "hej" ;
|
||||
GHelp = mkGreeting "hjælp" ;
|
||||
GHowAreYou = mkGreeting "hvordan har du det" ;
|
||||
GLookOut = mkGreeting "pas på" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggeligt at møde dig" ; -- more common than rart (google translate)
|
||||
GPleaseGive = mkGreeting "vær så sød" ; -- can also have flink instead of sod
|
||||
GPleaseGivePol = mkGreeting "venligst" ; -- X not behage
|
||||
GSeeYouSoon = mkGreeting "vi ses snart" ; -- X se dig snart
|
||||
GSorry, GSorryPol = mkGreeting "undskyld" ;
|
||||
GThanks = mkGreeting "tak" ;
|
||||
GTheCheck = mkGreeting "regningen" ;
|
||||
GCongratulations = mkGreeting "tillykke";
|
||||
GHappyBirthday = mkGreeting "tillykke med fødselsdagen" ;
|
||||
GGoodLuck = mkGreeting "held og lykke" ;
|
||||
|
||||
}
|
||||
30
testsuite/lpgf/phrasebook/GreetingsDut.gf
Normal file
30
testsuite/lpgf/phrasebook/GreetingsDut.gf
Normal file
@@ -0,0 +1,30 @@
|
||||
concrete GreetingsDut of Greetings = SentencesDut [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "doei" ;
|
||||
GCheers = mkGreeting "proost" ;
|
||||
GDamn = mkGreeting "verdomme" ;
|
||||
GExcuse, GExcusePol = mkGreeting "pardon" ;
|
||||
GGoodDay = mkGreeting "goedendag" ;
|
||||
GGoodEvening = mkGreeting "goedenavond" ;
|
||||
GGoodMorning = mkGreeting "goedemorgen" ;
|
||||
GGoodNight = mkGreeting "goedenacht" ;
|
||||
GGoodbye = mkGreeting "tot ziens" ;
|
||||
GHello = mkGreeting "hallo" ;
|
||||
GHelp = mkGreeting "help" ;
|
||||
GHowAreYou = mkGreeting "hoe gaat het" ;
|
||||
GLookOut = mkGreeting "kijk uit" ;
|
||||
GNiceToMeetYou = mkGreeting "leuk je te ontmoeten" ;
|
||||
GNiceToMeetYouPol = mkGreeting "leuk je u ontmoeten" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "alstublieft" ;
|
||||
GSeeYouSoon = mkGreeting "tot ziens" ;
|
||||
GSorry = mkGreeting "sorry";
|
||||
GSorryPol = mkGreeting "mijn verontschuldiging" ;
|
||||
GThanks = mkGreeting "dank je wel" ;
|
||||
GTheCheck = mkGreeting "rekening" ;
|
||||
GCongratulations = mkGreeting "gefeliciteerd";
|
||||
GHappyBirthday = mkGreeting "gelukkige verjaardag" ;
|
||||
GGoodLuck = mkGreeting "veel geluk" ;
|
||||
GWhatTime = mkGreeting "hoe laat is het" ;
|
||||
}
|
||||
27
testsuite/lpgf/phrasebook/GreetingsEng.gf
Normal file
27
testsuite/lpgf/phrasebook/GreetingsEng.gf
Normal file
@@ -0,0 +1,27 @@
|
||||
concrete GreetingsEng of Greetings = SentencesEng [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "bye" ;
|
||||
GCheers = mkGreeting "cheers" ;
|
||||
GDamn = mkGreeting "damn" ;
|
||||
GExcuse, GExcusePol = mkGreeting "excuse me" ;
|
||||
GGoodDay = mkGreeting "good afternoon" ; ----
|
||||
GGoodEvening = mkGreeting "good evening" ;
|
||||
GGoodMorning = mkGreeting "good morning" ;
|
||||
GGoodNight = mkGreeting "good night" ;
|
||||
GGoodbye = mkGreeting "goodbye" ;
|
||||
GHello = mkGreeting "hello" ;
|
||||
GHelp = mkGreeting "help" ;
|
||||
GHowAreYou = mkGreeting "how are you" ;
|
||||
GLookOut = mkGreeting "look out" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "nice to meet you" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "please" ;
|
||||
GSeeYouSoon = mkGreeting "see you soon" ;
|
||||
GSorry, GSorryPol = mkGreeting "sorry" ;
|
||||
GThanks = mkGreeting "thank you" ;
|
||||
GTheCheck = mkGreeting "the bill" ;
|
||||
GCongratulations = mkGreeting "congratulations";
|
||||
GHappyBirthday = mkGreeting "happy birthday" ;
|
||||
GGoodLuck = mkGreeting "good luck" ;
|
||||
GWhatTime = mkGreeting "what time is it" | mkGreeting "what is the time" ;
|
||||
}
|
||||
26
testsuite/lpgf/phrasebook/GreetingsEst.gf
Normal file
26
testsuite/lpgf/phrasebook/GreetingsEst.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
concrete GreetingsEst of Greetings = SentencesEst [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "head aega" ;
|
||||
GCheers = mkGreeting "terviseks" ;
|
||||
GDamn = mkGreeting "neetud" ;
|
||||
GExcuse, GExcusePol = mkGreeting "vabandust" ;
|
||||
GGoodDay = mkGreeting "tere päevast" ;
|
||||
GGoodEvening = mkGreeting "tere õhtust" ;
|
||||
GGoodMorning = mkGreeting "tere hommikust" ;
|
||||
GGoodNight = mkGreeting "head ööd" ;
|
||||
GGoodbye = mkGreeting "head aega" ;
|
||||
GHello = mkGreeting "tere" ;
|
||||
GHelp = mkGreeting "appi" ;
|
||||
GHowAreYou = mkGreeting "kuidas käsi käib" ;
|
||||
GLookOut = mkGreeting "ettevaatust" ;
|
||||
GNiceToMeetYou = mkGreeting "meeldiv tutvuda" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "palun" ;
|
||||
GSeeYouSoon = mkGreeting "kohtumiseni" ;
|
||||
GSorry, GSorryPol = mkGreeting "vabandust" ;
|
||||
GThanks = mkGreeting "suur tänu" ;
|
||||
GTheCheck = mkGreeting "arve" ;
|
||||
GCongratulations = mkGreeting "palju õnne";
|
||||
GHappyBirthday = mkGreeting "palju õnne sünnipäevaks" ;
|
||||
GGoodLuck = mkGreeting "palju edu" ;
|
||||
}
|
||||
30
testsuite/lpgf/phrasebook/GreetingsFin.gf
Normal file
30
testsuite/lpgf/phrasebook/GreetingsFin.gf
Normal file
@@ -0,0 +1,30 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsFin of Greetings = SentencesFin [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "hei hei" ;
|
||||
GCheers = mkGreeting "terveydeksi" ;
|
||||
GDamn = mkGreeting "hitto" ;
|
||||
GExcuse, GExcusePol = mkGreeting "anteeksi" ;
|
||||
GGoodDay = mkGreeting "hyvää päivää" ;
|
||||
GGoodEvening = mkGreeting "hyvää iltaa" ;
|
||||
GGoodMorning = mkGreeting "hyvää huomenta" ;
|
||||
GGoodNight = mkGreeting "hyvää yötä" ;
|
||||
GGoodbye = mkGreeting "näkemiin" ;
|
||||
GHello = mkGreeting "hei" ;
|
||||
GHelp = mkGreeting "apua" ;
|
||||
GHowAreYou = mkGreeting "mitä kuuluu" ;
|
||||
GLookOut = mkGreeting "varo" ;
|
||||
GNiceToMeetYou = mkGreeting "hauska tutustua" ;
|
||||
GPleaseGive = mkGreeting "ole hyvä" ;
|
||||
GPleaseGivePol = mkGreeting "olkaa hyvä" ;
|
||||
GSeeYouSoon = mkGreeting "nähdään pian" ;
|
||||
GSorry, GSorryPol = mkGreeting "anteeksi" ;
|
||||
GThanks = mkGreeting "kiitos" ;
|
||||
GTheCheck = mkGreeting "lasku" ;
|
||||
GCongratulations = mkGreeting "onnittelut";
|
||||
GHappyBirthday = mkGreeting "hyvää syntymäpäivää" ;
|
||||
GGoodLuck = mkGreeting "onnea" ;
|
||||
GWhatTime = mkGreeting "paljonko kello on" | mkGreeting "mitä kello on" ;
|
||||
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsFre.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsFre.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsFre of Greetings = SentencesFre [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "au revoir" ;
|
||||
GCheers = mkGreeting "santé" ;
|
||||
GDamn = mkGreeting "maudit" ;
|
||||
GExcuse = mkGreeting "excuse-moi" ;
|
||||
GExcusePol = mkGreeting "excusez-moi" ;
|
||||
GGoodDay = mkGreeting "bonjour" ;
|
||||
GGoodEvening = mkGreeting "bon soir" ;
|
||||
GGoodMorning = mkGreeting "bonjour" ;
|
||||
GGoodNight = mkGreeting "bonne nuit" ;
|
||||
GGoodbye = mkGreeting "au revoir" ;
|
||||
GHello = mkGreeting "salut" ;
|
||||
GHelp = mkGreeting "au secours" ;
|
||||
GHowAreYou = mkGreeting "comment ça va" ;
|
||||
GLookOut = mkGreeting "attention" ;
|
||||
GNiceToMeetYou = mkGreeting "enchanté" ;
|
||||
GPleaseGive = mkGreeting "s'il te plaît" ;
|
||||
GPleaseGivePol = mkGreeting "s'il vous plaît" ;
|
||||
GSeeYouSoon = mkGreeting "à bientôt" ;
|
||||
GSorry, GSorryPol = mkGreeting "pardon" ;
|
||||
GThanks = mkGreeting "merci" ;
|
||||
GTheCheck = mkGreeting "l'addition" ;
|
||||
GCongratulations = mkGreeting "félicitations";
|
||||
GHappyBirthday = mkGreeting "joyeux anniversaire" ;
|
||||
GGoodLuck = mkGreeting "bonne chance" ;
|
||||
GWhatTime = mkGreeting "quelle heure est-il" ;
|
||||
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsGer.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsGer.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
--# -path=.:abstract:prelude:german:api:common
|
||||
--# -coding=latin1
|
||||
concrete GreetingsGer of Greetings = SentencesGer [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "tschüß" ;
|
||||
GCheers = mkGreeting "zum Wohl" ;
|
||||
GDamn = mkGreeting "verdammt" ;
|
||||
GExcuse, GExcusePol = mkGreeting "Entschuldigung" ;
|
||||
GGoodDay = mkGreeting "guten Tag" ;
|
||||
GGoodEvening = mkGreeting "guten Abend" ;
|
||||
GGoodMorning = mkGreeting "guten Morgen" ;
|
||||
GGoodNight = mkGreeting "gute Nacht" ;
|
||||
GGoodbye = mkGreeting "auf Wiedersehen" ;
|
||||
GHello = mkGreeting "Hallo" ;
|
||||
GHelp = mkGreeting "Hilfe" ;
|
||||
GHowAreYou = mkGreeting "wie geht's" ;
|
||||
GLookOut = mkGreeting "Achtung" ;
|
||||
GNiceToMeetYou = mkGreeting "nett, Sie zu treffen" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "bitte" ;
|
||||
GSeeYouSoon = mkGreeting "bis bald" ;
|
||||
GSorry, GSorryPol = mkGreeting "Entschuldigung" ;
|
||||
GThanks = mkGreeting "Danke" ;
|
||||
GTheCheck = mkGreeting "die Rechnung" ;
|
||||
GCongratulations = mkGreeting "herzlichen Glückwunsch";
|
||||
GHappyBirthday = mkGreeting "alles Gute zum Geburtstag" ;
|
||||
GGoodLuck = mkGreeting "viel Glück" ;
|
||||
GWhatTime = mkGreeting "wieviel Uhr ist es" | mkGreeting "wie spät ist es" ;
|
||||
|
||||
}
|
||||
|
||||
31
testsuite/lpgf/phrasebook/GreetingsHin.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsHin.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete GreetingsHin of Greetings = SentencesHin [Greeting,mkGreeting] ** open (P=Prelude) in {
|
||||
|
||||
-- lincat
|
||||
-- Greeting = {s : Str; lock_Text : {}} ;
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
GBye = P.ss "नमस्कार" ;
|
||||
GCheers = P.ss "चियर्ज़" ;
|
||||
GDamn = P.ss "ाफ़" ;
|
||||
GExcuse, GExcusePol = P.ss "क्षमा कीजिये" ;
|
||||
GGoodDay = P.ss "नमस्कार" ; ----
|
||||
GGoodEvening = P.ss "नमस्कार" ;
|
||||
GGoodMorning = P.ss "नमस्कार" ;
|
||||
GGoodNight = P.ss "नमस्कार" ;
|
||||
GGoodbye = P.ss "हम आपसे विदा लेते हैं" ;
|
||||
GHello = P.ss "नमस्कार" ;
|
||||
GHelp = P.ss "सहायता" ;
|
||||
GHowAreYou = P.ss "आप कैसे हैं" ;
|
||||
GLookOut = P.ss "सावधान" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = P.ss "आप से मिल कर च्छा लगा" ;
|
||||
GPleaseGive, GPleaseGivePol = P.ss "कृपया" ;
|
||||
GSeeYouSoon = P.ss "फिर मिलेंगे" ;
|
||||
GSorry, GSorryPol = P.ss "क्षमा कीजिये" ;
|
||||
GThanks = P.ss "धन्यवाद" ;
|
||||
GTheCheck = P.ss "बिल" ;
|
||||
GCongratulations = P.ss "बधाई हो";
|
||||
GHappyBirthday = P.ss "जन्मदिन की शुभकामनाएँ" ;
|
||||
GGoodLuck = P.ss "शुभकामनाएँ" ;
|
||||
GWhatTime = P.ss "कितने बजे हैं" ;
|
||||
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsIta.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsIta.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete GreetingsIta of Greetings = SentencesIta [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "ciao" ;
|
||||
GCheers = mkGreeting "cincin" ;
|
||||
GDamn = mkGreeting "maledizione" ;
|
||||
GExcuse = mkGreeting "scusa" ;
|
||||
GExcusePol = mkGreeting "scusi" ;
|
||||
GGoodDay = mkGreeting "buongiorno" ;
|
||||
GGoodEvening = mkGreeting "buona sera" ;
|
||||
GGoodMorning = mkGreeting "buongiorno" ;
|
||||
GGoodNight = mkGreeting "buona notte" ;
|
||||
GGoodbye = mkGreeting "arrivederci" ;
|
||||
GHello = mkGreeting "ciao" ;
|
||||
GHelp = mkGreeting "aiuto" ;
|
||||
GHowAreYou = mkGreeting "come sta" ;
|
||||
GLookOut = mkGreeting "attenzione" ;
|
||||
GNiceToMeetYou = mkGreeting "piacere di conoscerti" ;
|
||||
GNiceToMeetYouPol = mkGreeting "piacere di conoscerLa" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "per favore" ;
|
||||
GSeeYouSoon = mkGreeting "a presto" ; ----
|
||||
GSorry = mkGreeting "scusami" ; ----
|
||||
GSorryPol = mkGreeting "scusimi" ; ----
|
||||
GThanks = mkGreeting "grazie" ;
|
||||
GTheCheck = mkGreeting "il conto" ;
|
||||
GCongratulations = mkGreeting "congratulazioni";
|
||||
GHappyBirthday = mkGreeting "buon compleanno" ;
|
||||
GGoodLuck = mkGreeting "buona fortuna" ;
|
||||
GWhatTime = mkGreeting "che ore sono" ;
|
||||
|
||||
}
|
||||
30
testsuite/lpgf/phrasebook/GreetingsJpn.gf
Normal file
30
testsuite/lpgf/phrasebook/GreetingsJpn.gf
Normal file
@@ -0,0 +1,30 @@
|
||||
concrete GreetingsJpn of Greetings = SentencesJpn [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "バイ" ;
|
||||
GCheers = mkGreeting "かんぱい" ;
|
||||
GDamn = mkGreeting "くそ" ;
|
||||
GExcuse, GExcusePol = mkGreeting "すみません" ;
|
||||
GGoodDay, GHello = mkGreeting "こんにちは" ; ----
|
||||
GGoodEvening = mkGreeting "こんばんは" ;
|
||||
GGoodMorning = mkGreeting "おはようございます" ;
|
||||
GGoodNight = mkGreeting "おやすみなさい" ;
|
||||
GGoodbye = mkGreeting "さようなら" ;
|
||||
GHelp = mkGreeting "助けて" ;
|
||||
GHowAreYou = mkGreeting "お元気ですか" ;
|
||||
GLookOut = mkGreeting "危ない" ;
|
||||
GNiceToMeetYou = mkGreeting "初めまして" ;
|
||||
GPleaseGive = mkGreeting "ください" ;
|
||||
GPleaseGivePol = mkGreeting "お願いします" ;
|
||||
GSeeYouSoon = mkGreeting "またね" ;
|
||||
GSorry = mkGreeting "ごめんなさい" ;
|
||||
GSorryPol = mkGreeting "申し訳ありません" ;
|
||||
GThanks = mkGreeting "ありがとう" ;
|
||||
GTheCheck = mkGreeting "会計" ;
|
||||
GCongratulations = mkGreeting "お目出度うご座います";
|
||||
GHappyBirthday = mkGreeting "お誕生日おめでとうございます" ;
|
||||
GGoodLuck = mkGreeting "がんばってください" ;
|
||||
GWhatTime = mkGreeting "今何時ですか" ;
|
||||
}
|
||||
33
testsuite/lpgf/phrasebook/GreetingsLav.gf
Normal file
33
testsuite/lpgf/phrasebook/GreetingsLav.gf
Normal file
@@ -0,0 +1,33 @@
|
||||
--# -path=.:present
|
||||
concrete GreetingsLav of Greetings = SentencesLav [Greeting, mkGreeting] **
|
||||
open Prelude
|
||||
in {
|
||||
|
||||
flags
|
||||
coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "atā" ;
|
||||
GCheers = mkGreeting "priekā" ;
|
||||
GDamn = mkGreeting "sasodīts" ;
|
||||
GExcuse, GExcusePol = mkGreeting "atvainojiet" ;
|
||||
GGoodDay = mkGreeting "labdien" ;
|
||||
GGoodEvening = mkGreeting "labvakar" ;
|
||||
GGoodMorning = mkGreeting "labrīt" ;
|
||||
GGoodNight = mkGreeting "ar labunakti" ;
|
||||
GGoodbye = mkGreeting "visu labu" ;
|
||||
GHello = mkGreeting "sveiki" ;
|
||||
GHelp = mkGreeting "palīdziet" ;
|
||||
GHowAreYou = mkGreeting "kā klājas" ;
|
||||
GLookOut = mkGreeting "uzmanīgi" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "prieks iepazīties" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "lūdzu" ;
|
||||
GSeeYouSoon = mkGreeting "uz drīzu tikšanos" ;
|
||||
GSorry, GSorryPol = mkGreeting "piedodiet" ;
|
||||
GThanks = mkGreeting "paldies" ;
|
||||
GTheCheck = mkGreeting "rēķins" ;
|
||||
GCongratulations = mkGreeting "apsveicu" ;
|
||||
GHappyBirthday = mkGreeting "daudz laimes dzimšanas dienā" ;
|
||||
GGoodLuck = mkGreeting "veiksmīgi" ;
|
||||
|
||||
}
|
||||
28
testsuite/lpgf/phrasebook/GreetingsNor.gf
Normal file
28
testsuite/lpgf/phrasebook/GreetingsNor.gf
Normal file
@@ -0,0 +1,28 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsNor of Greetings = SentencesNor [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "ha det" ;
|
||||
GCheers = mkGreeting "skål" ; -- google translate !
|
||||
GDamn = mkGreeting "faen" ;
|
||||
GExcuse, GExcusePol = mkGreeting "unnskyld" ;
|
||||
GGoodDay = mkGreeting "god dag" ;
|
||||
GGoodEvening = mkGreeting "god kveld" ;
|
||||
GGoodMorning = mkGreeting "god morgen" ;
|
||||
GGoodNight = mkGreeting "god natt" ;
|
||||
GGoodbye = mkGreeting "ha det bra" ;
|
||||
GHello = mkGreeting "hei" ;
|
||||
GHelp = mkGreeting "hjelp" ;
|
||||
GHowAreYou = mkGreeting "hvordan går det" ;
|
||||
GLookOut = mkGreeting "se opp" ; -- google translate !
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggelig å treffe deg" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "vær så snill" ;
|
||||
GSeeYouSoon = mkGreeting "se deg snart" ; -- google translate !
|
||||
GSorry, GSorryPol = mkGreeting "beklager" ;
|
||||
GThanks = mkGreeting "takk" ;
|
||||
GTheCheck = mkGreeting "regningen" ;
|
||||
GCongratulations = mkGreeting "gratulerer";
|
||||
GHappyBirthday = mkGreeting "gratulerer med dagen" ;
|
||||
GGoodLuck = mkGreeting "lykke til" ;
|
||||
|
||||
}
|
||||
29
testsuite/lpgf/phrasebook/GreetingsPes.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsPes.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
concrete GreetingsPes of Greetings = SentencesPes [mkGreeting] ** open (P=Prelude) in {
|
||||
|
||||
-- lincat
|
||||
-- Greeting = {s : Str; lock_Text : {}} ;
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
GBye = P.ss ["خداحافظ"] ;
|
||||
GCheers = P.ss ["به سلامتی"] ;
|
||||
GDamn = P.ss "لعنتی" ;
|
||||
GExcuse, GExcusePol = P.ss ["ببخشید"] ;
|
||||
GGoodDay = P.ss ["روز به خیر"] ; ----
|
||||
GGoodEvening = P.ss ["عصر به خیر"] ;
|
||||
GGoodMorning = P.ss ["صبح به خیر"] ;
|
||||
GGoodNight = P.ss ["شب به خیر"] ;
|
||||
GGoodbye = P.ss ["خداحافظ"] ;
|
||||
GHello = P.ss "سلام" ;
|
||||
GHelp = P.ss "کمک" ;
|
||||
GHowAreYou = P.ss ["حال شما چطور است"] ;
|
||||
GLookOut = P.ss ["مراقب باشید"] ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = P.ss ["از ملاقات شما خوشوقتم"] ;
|
||||
GPleaseGive, GPleaseGivePol = P.ss ["لطفاً بدهید"] ;
|
||||
GSeeYouSoon = P.ss ["به امید دیدار"] ;
|
||||
GSorry, GSorryPol = P.ss "متأسفم" ;
|
||||
GThanks = P.ss "ممنونم" ;
|
||||
GTheCheck = P.ss "چک" ;
|
||||
GCongratulations = P.ss ["تبریک میگم"];
|
||||
GHappyBirthday = P.ss ["تولدت مبارک"] ;
|
||||
GGoodLuck = P.ss ["موفق باشید"] ;
|
||||
}
|
||||
27
testsuite/lpgf/phrasebook/GreetingsPol.gf
Normal file
27
testsuite/lpgf/phrasebook/GreetingsPol.gf
Normal file
@@ -0,0 +1,27 @@
|
||||
concrete GreetingsPol of Greetings = SentencesPol [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
flags
|
||||
optimize =values ; coding =utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "cześć" ;
|
||||
GCheers = mkGreeting "na zdrowie" ;
|
||||
GDamn = mkGreeting "cholera" ; -- not polite
|
||||
GExcuse, GExcusePol, GSorry, GSorryPol = mkGreeting "przepraszam" ;
|
||||
GGoodDay, GGoodMorning = mkGreeting "dzień dobry" ;
|
||||
GGoodEvening = mkGreeting "dobry wieczór" ;
|
||||
GGoodNight = mkGreeting "dobranoc" ;
|
||||
GGoodbye = mkGreeting "do widzenia" ;
|
||||
GHello = mkGreeting "cześć" ;
|
||||
GHelp = mkGreeting "pomocy" ;
|
||||
GHowAreYou = mkGreeting "jak się masz" ;
|
||||
GLookOut = mkGreeting "uwaga" ;
|
||||
GNiceToMeetYou = mkGreeting "miło mi" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "poproszę" ;
|
||||
GSeeYouSoon = mkGreeting "do zobaczenia" ;
|
||||
GThanks = mkGreeting "dziękuję" ;
|
||||
GTheCheck = mkGreeting "rachunek" ;
|
||||
GCongratulations = mkGreeting "gratulacje";
|
||||
GHappyBirthday = mkGreeting "wszystkiego najlepszego z okazji urodzin" ;
|
||||
GGoodLuck = mkGreeting "powodzenia" ;
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsRon.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsRon.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete GreetingsRon of Greetings = SentencesRon [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "pa" ;
|
||||
GCheers = mkGreeting "noroc" ;
|
||||
GDamn = mkGreeting "ptiu" ;
|
||||
GExcuse = mkGreeting "pardon" ;
|
||||
GExcusePol = mkGreeting "mă scuzați" ;
|
||||
GGoodDay = mkGreeting "bună ziua" ;
|
||||
GGoodEvening = mkGreeting "bună seara" ;
|
||||
GGoodMorning = mkGreeting "bună dimineaţa" ;
|
||||
GGoodNight = mkGreeting "noapte bună" ;
|
||||
GGoodbye = mkGreeting "la revedere" ;
|
||||
GHello = mkGreeting "salut" ;
|
||||
GHelp = mkGreeting "ajutor" ;
|
||||
GHowAreYou = mkGreeting "ce faci" ;
|
||||
GLookOut = mkGreeting "atenţie" ;
|
||||
GNiceToMeetYou = mkGreeting "încântat" ;
|
||||
GPleaseGive = mkGreeting "te rog" ;
|
||||
GPleaseGivePol = mkGreeting "vă rog" ;
|
||||
GSeeYouSoon = mkGreeting "pe curând" ;
|
||||
GSorry, GSorryPol = mkGreeting "îmi pare rău" ;
|
||||
GThanks = mkGreeting "mulţumesc" ;
|
||||
GTheCheck = mkGreeting "nota de plată" ;
|
||||
GCongratulations = mkGreeting "felicitări";
|
||||
GHappyBirthday = mkGreeting "la mulți ani" ;
|
||||
GGoodLuck = mkGreeting "baftă" ;
|
||||
|
||||
}
|
||||
29
testsuite/lpgf/phrasebook/GreetingsRus.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsRus.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
concrete GreetingsRus of Greetings = open Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = ss "до свидания" ;
|
||||
GCheers = ss "ура" ;
|
||||
GDamn = ss "чёрт" ;
|
||||
GExcuse, GExcusePol = ss "извините" ;
|
||||
GGoodDay = ss "добрый день" ; ----
|
||||
GGoodEvening = ss "добрый вечер" ;
|
||||
GGoodMorning = ss "доброе утро" ;
|
||||
GGoodNight = ss "спокойной ночи" ;
|
||||
GGoodbye = ss "до свидания" ;
|
||||
GHello = ss "привет" ;
|
||||
GHelp = ss "помогите" ;
|
||||
GHowAreYou = ss "Как поживаете" ;
|
||||
GLookOut = ss "смотреть" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = ss "приятно познакомиться" ;
|
||||
GPleaseGive, GPleaseGivePol = ss "пожалуйста" ;
|
||||
GSeeYouSoon = ss "до скорой встречи" ;
|
||||
GSorry, GSorryPol = ss "Мне жаль" ;
|
||||
GThanks = ss "спасибо" ;
|
||||
GTheCheck = ss "проверить" ;
|
||||
GCongratulations = ss "поздравляю";
|
||||
GHappyBirthday = ss "с днем рождения" ;
|
||||
GGoodLuck = ss "желаю удачи" ;
|
||||
|
||||
}
|
||||
29
testsuite/lpgf/phrasebook/GreetingsSnd.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsSnd.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
concrete GreetingsSnd of Greetings = SentencesSnd [mkGreeting,Greeting] ** open (P=Prelude) in {
|
||||
|
||||
-- lincat
|
||||
-- Greeting = {s : Str; lock_Text : {}} ;
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
GBye = P.ss "خدا حافظ" ;
|
||||
GCheers = P.ss "چيئرز" ;
|
||||
GDamn = P.ss "اف" ;
|
||||
GExcuse, GExcusePol = P.ss "معاف ڪجو" ;
|
||||
GGoodDay = P.ss "ڏينهن بخير" ; ----
|
||||
GGoodEvening = P.ss "شام بخير" ;
|
||||
GGoodMorning = P.ss "صبح بخير" ;
|
||||
GGoodNight = P.ss "رات بخير" ;
|
||||
GGoodbye = P.ss "خدا حافظ" ;
|
||||
GHello = P.ss "السلام عليڪم" ;
|
||||
GHelp = P.ss "مدد" ;
|
||||
GHowAreYou = P.ss "توهان ڪيئن آهيو" ;
|
||||
GLookOut = P.ss "سنڀالي" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = P.ss "توهان سان ملي ڪري سٺو لڳو" ;
|
||||
GPleaseGive, GPleaseGivePol = P.ss "مهرباني ڪريو" ;
|
||||
GSeeYouSoon = P.ss "موڪلاڻي ڪانهي" ;
|
||||
GSorry, GSorryPol = P.ss "معاف ڪجو" ;
|
||||
GThanks = P.ss "ٿورا" ;
|
||||
GTheCheck = P.ss "بل" ;
|
||||
GCongratulations = P.ss "مبارڪ هجي";
|
||||
GHappyBirthday = P.ss "جنم ڏينهن مبارڪ" ;
|
||||
GGoodLuck = P.ss "قسمت ڀلي هجي" ;
|
||||
}
|
||||
31
testsuite/lpgf/phrasebook/GreetingsSpa.gf
Normal file
31
testsuite/lpgf/phrasebook/GreetingsSpa.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete GreetingsSpa of Greetings = SentencesSpa [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "adiós" ;
|
||||
GCheers = mkGreeting "salud" ;
|
||||
GDamn = mkGreeting "joder" ;
|
||||
GExcuse = mkGreeting "perdón" ;
|
||||
GExcusePol = mkGreeting "perdone" ;
|
||||
GCongratulations = mkGreeting "felicitaciones" ;
|
||||
GGoodLuck = mkGreeting "buena suerte" ;
|
||||
GHappyBirthday = mkGreeting "feliz cumpleaños" ;
|
||||
GGoodMorning, GGoodDay = mkGreeting "buenos días" ;
|
||||
GGoodEvening = mkGreeting "buenas tardes" ;
|
||||
GGoodNight = mkGreeting "buenas noches" ;
|
||||
GGoodbye = mkGreeting "hasta luego" ;
|
||||
GHello = mkGreeting "hola" ;
|
||||
GHelp = mkGreeting "socorro" ;
|
||||
GHowAreYou = mkGreeting "cómo está" ; -- the polite singular "you"
|
||||
GLookOut = mkGreeting "atención" ;
|
||||
GNiceToMeetYou = mkGreeting "encantado de conocerle" ; -- the polite singular "you"
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "por favor" ;
|
||||
GSeeYouSoon = mkGreeting "nos vemos pronto" ;
|
||||
GSorry = mkGreeting "disculpa" ;
|
||||
GSorryPol = mkGreeting "disculpe" ;
|
||||
GThanks = mkGreeting "gracias" ;
|
||||
GTheCheck = mkGreeting "la cuenta" ;
|
||||
GWhatTime = mkGreeting "qué hora es" ;
|
||||
|
||||
}
|
||||
29
testsuite/lpgf/phrasebook/GreetingsSwe.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsSwe.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
--# -coding=latin1
|
||||
concrete GreetingsSwe of Greetings = SentencesSwe [Greeting,mkGreeting] ** open Prelude in {
|
||||
|
||||
lin
|
||||
GBye = mkGreeting "hej då" ;
|
||||
GCheers = mkGreeting "skål" ;
|
||||
GDamn = mkGreeting "fan" ;
|
||||
GExcuse, GExcusePol = mkGreeting "ursäkta" ;
|
||||
GGoodDay = mkGreeting "god dag" ;
|
||||
GGoodEvening = mkGreeting "god afton" ;
|
||||
GGoodMorning = mkGreeting "god morgon" ;
|
||||
GGoodNight = mkGreeting "god natt" ;
|
||||
GGoodbye = mkGreeting "hej då" ;
|
||||
GHello = mkGreeting "hej" ;
|
||||
GHelp = mkGreeting "hjälp" ;
|
||||
GHowAreYou = mkGreeting "hur står det till" ;
|
||||
GLookOut = mkGreeting "se upp" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "trevligt att träffas" ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "var så god" ;
|
||||
GSeeYouSoon = mkGreeting "vi ses snart" ;
|
||||
GSorry, GSorryPol = mkGreeting "förlåt" ;
|
||||
GThanks = mkGreeting "tack" ;
|
||||
GTheCheck = mkGreeting "notan" ;
|
||||
GCongratulations = mkGreeting "grattis";
|
||||
GHappyBirthday = mkGreeting "grattis på födelsedagen" ;
|
||||
GGoodLuck = mkGreeting "lycka till" ;
|
||||
GWhatTime = mkGreeting "vad är klockan" | mkGreeting "hur mycket är klockan" ;
|
||||
|
||||
}
|
||||
35
testsuite/lpgf/phrasebook/GreetingsTha.gf
Normal file
35
testsuite/lpgf/phrasebook/GreetingsTha.gf
Normal file
@@ -0,0 +1,35 @@
|
||||
concrete GreetingsTha of Greetings =
|
||||
SentencesTha [Greeting,mkGreeting] **
|
||||
open ResTha, Prelude in {
|
||||
|
||||
-- สุขสันต์วันเกิด
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
GBye = mkGreeting (thword "ลา" "ก่อน") ;
|
||||
GCheers = mkGreeting (thword "ไช" "โย") ;
|
||||
GDamn = mkGreeting (thword "ชิบ" "หาย") ;
|
||||
GExcuse, GExcusePol = mkGreeting (thword "ขอ" "โทษ") ;
|
||||
GGoodDay = mkGreeting (thword "สวัส" "ดี") ;
|
||||
GGoodEvening = mkGreeting (thword "สวัส" "ดี") ;
|
||||
GGoodMorning = mkGreeting (thword "สวัส" "ดี") ;
|
||||
GGoodNight = mkGreeting (thword "รา" "ตรี" "สวัส" "ดิ์") ;
|
||||
GGoodbye = mkGreeting (thword "ลา" "ก่อน") ;
|
||||
GHello = mkGreeting (thword "สวัส" "ดี") ;
|
||||
GHelp = mkGreeting (thword "ช่วย" "ด้วย") ;
|
||||
GHowAreYou = mkGreeting (thword "สบาย" "ดี" "ไหม") ;
|
||||
GLookOut = mkGreeting (thword "ระ" "วัง") ; ---- google
|
||||
GNiceToMeetYou, GNiceToMeetYouPol =
|
||||
mkGreeting (thword "ยิน" "ดี" "ที่" "ได้" "รู้" "จัก") ;
|
||||
GPleaseGive, GPleaseGivePol = mkGreeting "นะ" ;
|
||||
GSeeYouSoon = mkGreeting (thword "เจอ" "กัน" "นะ") ;
|
||||
GSorry, GSorryPol = mkGreeting (thword "ขอ" "โทษ") ;
|
||||
GThanks = mkGreeting (thword "ขอบ" "คุณ") ;
|
||||
GTheCheck = mkGreeting (thword "เช็ค" "บิล") ;
|
||||
GCongratulations = mkGreeting (thword "ยิน" "ดี" "ด้วย") ;
|
||||
GHappyBirthday = mkGreeting (thword "สุข" "สันต์" "วัน" "เกิด") ;
|
||||
GGoodLuck = mkGreeting (thword "โชค" "ดี" "นะ") ;
|
||||
}
|
||||
|
||||
|
||||
29
testsuite/lpgf/phrasebook/GreetingsUrd.gf
Normal file
29
testsuite/lpgf/phrasebook/GreetingsUrd.gf
Normal file
@@ -0,0 +1,29 @@
|
||||
concrete GreetingsUrd of Greetings = SentencesUrd [mkGreeting,Greeting] ** open (P=Prelude) in {
|
||||
|
||||
-- lincat
|
||||
-- Greeting = {s : Str; lock_Text : {}} ;
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
GBye = P.ss "خدا حافظ" ;
|
||||
GCheers = P.ss "چیرز" ;
|
||||
GDamn = P.ss "اف" ;
|
||||
GExcuse, GExcusePol = P.ss "معاف كیجیے گا" ;
|
||||
GGoodDay = P.ss "دن بخیر" ; ----
|
||||
GGoodEvening = P.ss "شام بخیر" ;
|
||||
GGoodMorning = P.ss "صبح بخیر" ;
|
||||
GGoodNight = P.ss "رات بخیر" ;
|
||||
GGoodbye = P.ss "خدا حافظ" ;
|
||||
GHello = P.ss "اسلام علیكم" ;
|
||||
GHelp = P.ss "مدد" ;
|
||||
GHowAreYou = P.ss "آپ كیسی ہو" ;
|
||||
GLookOut = P.ss "دیكھ كر" ;
|
||||
GNiceToMeetYou, GNiceToMeetYouPol = P.ss "آپ سے مل كر اچھا لگا" ;
|
||||
GPleaseGive, GPleaseGivePol = P.ss "مہربانی كر كے" ;
|
||||
GSeeYouSoon = P.ss "ملتے ہیں" ;
|
||||
GSorry, GSorryPol = P.ss "معاف كیجیے گا" ;
|
||||
GThanks = P.ss "شكریہ" ;
|
||||
GTheCheck = P.ss "بل" ;
|
||||
GCongratulations = P.ss "مبارك ہو";
|
||||
GHappyBirthday = P.ss "سالگرہ مبارك" ;
|
||||
GGoodLuck = P.ss "گڈ لك" ;
|
||||
}
|
||||
10000
testsuite/lpgf/phrasebook/Phrasebook-10000.trees
Normal file
10000
testsuite/lpgf/phrasebook/Phrasebook-10000.trees
Normal file
File diff suppressed because it is too large
Load Diff
8
testsuite/lpgf/phrasebook/Phrasebook.gf
Normal file
8
testsuite/lpgf/phrasebook/Phrasebook.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
abstract Phrasebook =
|
||||
Greetings,
|
||||
Words
|
||||
** {
|
||||
|
||||
flags startcat = Phrase ;
|
||||
|
||||
}
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookBul.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookBul.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookBul of Phrasebook =
|
||||
GreetingsBul,
|
||||
WordsBul ** open
|
||||
SyntaxBul,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookCat.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookCat.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookCat of Phrasebook =
|
||||
GreetingsCat,
|
||||
WordsCat
|
||||
** open
|
||||
SyntaxCat,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookChi.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookChi.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
concrete PhrasebookChi of Phrasebook =
|
||||
GreetingsChi,
|
||||
WordsChi
|
||||
** open
|
||||
SyntaxChi,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookDan.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookDan.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present:alltenses
|
||||
|
||||
concrete PhrasebookDan of Phrasebook =
|
||||
GreetingsDan,
|
||||
WordsDan ** open
|
||||
SyntaxDan,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
10
testsuite/lpgf/phrasebook/PhrasebookDut.gf
Normal file
10
testsuite/lpgf/phrasebook/PhrasebookDut.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookDut of Phrasebook =
|
||||
GreetingsDut,
|
||||
WordsDut ** open
|
||||
SyntaxDut,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
12
testsuite/lpgf/phrasebook/PhrasebookEng.gf
Normal file
12
testsuite/lpgf/phrasebook/PhrasebookEng.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookEng of Phrasebook =
|
||||
GreetingsEng,
|
||||
WordsEng ** open
|
||||
SyntaxEng,
|
||||
Prelude in {
|
||||
|
||||
flags
|
||||
language = en_US ;
|
||||
|
||||
}
|
||||
7
testsuite/lpgf/phrasebook/PhrasebookEst.gf
Normal file
7
testsuite/lpgf/phrasebook/PhrasebookEst.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
concrete PhrasebookEst of Phrasebook =
|
||||
GreetingsEst,
|
||||
WordsEst ** open
|
||||
SyntaxEst,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookFin.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookFin.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookFin of Phrasebook =
|
||||
GreetingsFin,
|
||||
WordsFin ** open
|
||||
SyntaxFin,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookFre.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookFre.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookFre of Phrasebook =
|
||||
GreetingsFre,
|
||||
WordsFre
|
||||
** open
|
||||
SyntaxFre,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
10
testsuite/lpgf/phrasebook/PhrasebookGer.gf
Normal file
10
testsuite/lpgf/phrasebook/PhrasebookGer.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookGer of Phrasebook =
|
||||
GreetingsGer,
|
||||
WordsGer ** open
|
||||
SyntaxGer,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
10
testsuite/lpgf/phrasebook/PhrasebookHin.gf
Normal file
10
testsuite/lpgf/phrasebook/PhrasebookHin.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
|
||||
concrete PhrasebookHin of Phrasebook =
|
||||
GreetingsHin,
|
||||
WordsHin ** open
|
||||
SyntaxHin,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
13
testsuite/lpgf/phrasebook/PhrasebookIta.gf
Normal file
13
testsuite/lpgf/phrasebook/PhrasebookIta.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookIta of Phrasebook =
|
||||
GreetingsIta,
|
||||
WordsIta
|
||||
** open
|
||||
SyntaxIta,
|
||||
Prelude in {
|
||||
|
||||
flags language = it_IT ;
|
||||
|
||||
}
|
||||
|
||||
7
testsuite/lpgf/phrasebook/PhrasebookJpn.gf
Normal file
7
testsuite/lpgf/phrasebook/PhrasebookJpn.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
concrete PhrasebookJpn of Phrasebook =
|
||||
GreetingsJpn,
|
||||
WordsJpn ** open
|
||||
SyntaxJpn,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
7
testsuite/lpgf/phrasebook/PhrasebookLav.gf
Normal file
7
testsuite/lpgf/phrasebook/PhrasebookLav.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookLav of Phrasebook = GreetingsLav, WordsLav **
|
||||
open
|
||||
SyntaxLav,
|
||||
Prelude
|
||||
in {} ;
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookNor.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookNor.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookNor of Phrasebook =
|
||||
GreetingsNor,
|
||||
WordsNor ** open
|
||||
SyntaxNor,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
13
testsuite/lpgf/phrasebook/PhrasebookPol.gf
Normal file
13
testsuite/lpgf/phrasebook/PhrasebookPol.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookPol of Phrasebook =
|
||||
GreetingsPol,
|
||||
WordsPol ** open
|
||||
SyntaxPol,
|
||||
Prelude in {
|
||||
|
||||
flags
|
||||
language = pl_PL ; optimize =values ; coding =utf8 ;
|
||||
|
||||
|
||||
}
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookRon.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookRon.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookRon of Phrasebook =
|
||||
GreetingsRon,
|
||||
WordsRon
|
||||
** open
|
||||
SyntaxRon,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookSnd.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookSnd.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookSnd of Phrasebook =
|
||||
GreetingsSnd,
|
||||
WordsSnd ** open
|
||||
SyntaxSnd,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
12
testsuite/lpgf/phrasebook/PhrasebookSpa.gf
Normal file
12
testsuite/lpgf/phrasebook/PhrasebookSpa.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookSpa of Phrasebook =
|
||||
GreetingsSpa,
|
||||
WordsSpa
|
||||
** open
|
||||
SyntaxSpa,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookSwe.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookSwe.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookSwe of Phrasebook =
|
||||
GreetingsSwe,
|
||||
WordsSwe ** open
|
||||
SyntaxSwe,
|
||||
Prelude in {
|
||||
flags
|
||||
language = sv_SE ;
|
||||
|
||||
}
|
||||
11
testsuite/lpgf/phrasebook/PhrasebookTha.gf
Normal file
11
testsuite/lpgf/phrasebook/PhrasebookTha.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
concrete PhrasebookTha of Phrasebook =
|
||||
GreetingsTha,
|
||||
WordsTha
|
||||
** open
|
||||
-- SyntaxTha,
|
||||
Prelude in {
|
||||
|
||||
|
||||
}
|
||||
9
testsuite/lpgf/phrasebook/PhrasebookUrd.gf
Normal file
9
testsuite/lpgf/phrasebook/PhrasebookUrd.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete PhrasebookUrd of Phrasebook =
|
||||
GreetingsUrd,
|
||||
WordsUrd ** open
|
||||
SyntaxUrd,
|
||||
Prelude in {
|
||||
|
||||
}
|
||||
222
testsuite/lpgf/phrasebook/Sentences.gf
Normal file
222
testsuite/lpgf/phrasebook/Sentences.gf
Normal file
@@ -0,0 +1,222 @@
|
||||
--1 The Ontology of the Phrasebook
|
||||
|
||||
--2 Syntactic Structures of the Phrasebook
|
||||
|
||||
-- This module contains phrases that can be defined by a functor over the
|
||||
-- resource grammar API. The phrases that are likely to have different implementations
|
||||
-- are in the module Words. But the distinction is not quite sharp; thus it may happen
|
||||
-- that the functor instantiations make exceptions.
|
||||
|
||||
abstract Sentences = Numeral ** {
|
||||
|
||||
-- The ontology of the phrasebook is defined by the following types. The commented ones
|
||||
-- are defined in other modules.
|
||||
|
||||
cat
|
||||
Phrase ; -- complete phrase, the unit of translation e.g. "Where are you?"
|
||||
Word ; -- word that could be used as phrase e.g. "Monday"
|
||||
Message ; -- sequence of phrases, longest unit e.g. "Hello! Where are you?"
|
||||
Greeting ; -- idiomatic greeting e.g. "hello"
|
||||
Sentence ; -- declarative sentence e.g. "I am in the bar"
|
||||
Question ; -- question, either yes/no or wh e.g. "where are you"
|
||||
Proposition ; -- can be turned into sentence or question e.g. "this pizza is good"
|
||||
Object ; -- the object of wanting, ordering, etc e.g. "three pizzas and a beer"
|
||||
PrimObject ; -- single object of wanting, ordering, etc e.g. "three pizzas"
|
||||
Item ; -- a single entity e.g. "this pizza"
|
||||
Kind ; -- a type of an item e.g. "pizza"
|
||||
MassKind ; -- a type mass (uncountable) e.g. "water"
|
||||
PlurKind ; -- a type usually only in plural e.g. "noodles"
|
||||
DrinkKind ; -- a drinkable, countable type e.g. "beer"
|
||||
Quality ; -- qualification of an item, can be complex e.g. "very good"
|
||||
Property ; -- basic property of an item, one word e.g. "good"
|
||||
Place ; -- location e.g. "the bar"
|
||||
PlaceKind ; -- type of location e.g. "bar"
|
||||
Currency ; -- currency unit e.g. "leu"
|
||||
Price ; -- number of currency units e.g. "eleven leu"
|
||||
Person ; -- agent wanting or doing something e.g. "you"
|
||||
Action ; -- proposition about a Person e.g. "you are here"
|
||||
Nationality ; -- complex of language, property, country e.g. "Swedish, Sweden"
|
||||
LAnguage ; -- language (can be without nationality) e.g. "Flemish"
|
||||
Citizenship ; -- property (can be without language) e.g. "Belgian"
|
||||
Country ; -- country (can be without language) e.g. "Belgium"
|
||||
Day ; -- weekday type e.g. "Friday"
|
||||
Date ; -- definite date e.g. "on Friday"
|
||||
Name ; -- name of person e.g. "NN"
|
||||
Number ; -- number expression 1 .. 999,999 e.g. "twenty"
|
||||
Transport ; -- transportation device e.g. "car"
|
||||
ByTransport ; -- mean of transportation e.g. "by tram"
|
||||
Superlative ; -- superlative modifiers of places e.g. "the best restaurant"
|
||||
|
||||
|
||||
fun
|
||||
|
||||
-- To build a whole message
|
||||
|
||||
MPhrase : Phrase -> Message ;
|
||||
MContinue : Phrase -> Message -> Message ;
|
||||
|
||||
-- Many of the categories are accessible as Phrases, i.e. as translation units.
|
||||
-- To regulate whether words appear on the top level, change their status between
|
||||
-- Word and Phrase, or uncomment PWord,
|
||||
|
||||
-- PWord : Word -> Phrase ;
|
||||
|
||||
PGreetingMale : Greeting -> Phrase ; -- depends on speaker e.g. in Thai
|
||||
PGreetingFemale : Greeting -> Phrase ;
|
||||
PSentence : Sentence -> Phrase ;
|
||||
PQuestion : Question -> Phrase ;
|
||||
|
||||
PNumber : Number -> Phrase ;
|
||||
PPrice : Price -> Phrase ;
|
||||
PObject : Object -> Word ;
|
||||
PKind : Kind -> Word ;
|
||||
PMassKind : MassKind -> Word ;
|
||||
PQuality : Quality -> Word ;
|
||||
PPlace : Place -> Word ;
|
||||
PPlaceKind : PlaceKind -> Word ;
|
||||
PCurrency : Currency -> Word ;
|
||||
PLanguage : LAnguage -> Word ;
|
||||
PCitizenship : Citizenship -> Word ;
|
||||
PCountry : Country -> Word ;
|
||||
PDay : Day -> Word ;
|
||||
PByTransport : ByTransport -> Word ;
|
||||
PTransport : Transport -> Word ;
|
||||
|
||||
PYes, PNo, PYesToNo : Greeting ; -- yes, no, si/doch (pos. answer to neg. question)
|
||||
|
||||
-- To order something.
|
||||
|
||||
GObjectPlease : Object -> Greeting ; -- a pizza and beer, please!
|
||||
|
||||
-- This is the way to build propositions about inanimate items.
|
||||
|
||||
Is : Item -> Quality -> Proposition ; -- this pizza is good
|
||||
IsMass : MassKind -> Quality -> Proposition ; -- Belgian beer is good
|
||||
|
||||
-- To use propositions on higher levels.
|
||||
|
||||
SProp : Proposition -> Sentence ; -- this pizza is good
|
||||
SPropNot : Proposition -> Sentence ; -- this pizza isn't good
|
||||
QProp : Proposition -> Question ; -- is this pizza good
|
||||
|
||||
WherePlace : Place -> Question ; -- where is the bar
|
||||
WherePerson : Person -> Question ; -- where are you
|
||||
|
||||
-- This is the way to build propositions about persons.
|
||||
|
||||
PropAction : Action -> Proposition ; -- (you (are|aren't) | are you) Swedish
|
||||
|
||||
-- Here are some general syntactic constructions.
|
||||
|
||||
ObjItem : Item -> PrimObject ; -- this pizza
|
||||
ObjNumber : Number -> Kind -> PrimObject ; -- five pizzas
|
||||
ObjIndef : Kind -> PrimObject ; -- a pizza
|
||||
ObjPlural : Kind -> PrimObject ; -- pizzas
|
||||
ObjPlur : PlurKind -> PrimObject ; -- noodles
|
||||
ObjMass : MassKind -> PrimObject ; -- water
|
||||
ObjAndObj : PrimObject -> Object -> Object ; -- this pizza and a beer
|
||||
OneObj : PrimObject -> Object ; -- this pizza
|
||||
|
||||
SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
|
||||
SuchMassKind : Quality -> MassKind -> MassKind ; -- Italian water
|
||||
Very : Property -> Quality ; -- very Italian
|
||||
Too : Property -> Quality ; -- too Italian
|
||||
PropQuality : Property -> Quality ; -- Italian
|
||||
|
||||
MassDrink : DrinkKind -> MassKind ; -- beer
|
||||
DrinkNumber : Number -> DrinkKind -> PrimObject ; -- five beers
|
||||
|
||||
-- Determiners.
|
||||
|
||||
This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
|
||||
The, Thes : Kind -> Item ; -- the pizza, the pizzas
|
||||
ThisMass, ThatMass, TheMass : MassKind -> Item ; -- this/that/the water
|
||||
ThesePlur, ThosePlur, ThesPlur : PlurKind -> Item ; -- these/those/the potatoes
|
||||
|
||||
AmountCurrency : Number -> Currency -> Price ; -- five euros
|
||||
|
||||
ThePlace : PlaceKind -> Place ; -- the bar
|
||||
APlace : PlaceKind -> Place ; -- a bar
|
||||
|
||||
IMale, IFemale, -- I, said by man/woman (affects agreement)
|
||||
YouFamMale, YouFamFemale, -- familiar you, said to man/woman (affects agreement)
|
||||
YouPolMale, YouPolFemale : Person ; -- polite you, said to man/woman (affects agreement)
|
||||
|
||||
LangNat : Nationality -> LAnguage ; -- Swedish
|
||||
CitiNat : Nationality -> Citizenship ; -- Swedish
|
||||
CountryNat : Nationality -> Country ; -- Sweden
|
||||
PropCit : Citizenship -> Property ; -- Swedish
|
||||
|
||||
OnDay : Day -> Date ; -- on Friday
|
||||
Today : Date ; -- today
|
||||
|
||||
PersonName : Name -> Person ; -- person referred by name
|
||||
NameNN : Name ; -- the name "NN"
|
||||
|
||||
---- NameString : String -> Name ; ---- creates ambiguities with all words --%
|
||||
|
||||
NNumeral : Numeral -> Number ; -- numeral in words, e.g. "twenty"
|
||||
|
||||
-- Actions are typically language-dependent, not only lexically but also
|
||||
-- structurally. However, these ones are mostly functorial.
|
||||
|
||||
SHave : Person -> Object -> Sentence ; -- you have beer
|
||||
SHaveNo : Person -> Kind -> Sentence ; -- you have no apples
|
||||
SHaveNoMass : Person -> MassKind -> Sentence ; -- you have no beer
|
||||
QDoHave : Person -> Object -> Question ; -- do you have beer
|
||||
|
||||
AHaveCurr : Person -> Currency -> Action ; -- you have dollars
|
||||
ACitizen : Person -> Citizenship -> Action ; -- you are Swedish
|
||||
ABePlace : Person -> Place -> Action ; -- you are in the bar
|
||||
|
||||
ByTransp : Transport -> ByTransport ; -- by bus
|
||||
|
||||
AKnowSentence : Person -> Sentence -> Action ; -- you know that I am in the bar
|
||||
AKnowPerson : Person -> Person -> Action ; -- you know me
|
||||
AKnowQuestion : Person -> Question -> Action ; -- you know how far the bar is
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
-- New things added 30/11/2011 by AR
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
cat
|
||||
VerbPhrase ; -- things one does, can do, must do, wants to do, e.g. swim
|
||||
Modality ; -- can, want, must
|
||||
fun
|
||||
ADoVerbPhrase : Person -> VerbPhrase -> Action ; -- I swim
|
||||
AModVerbPhrase : Modality -> Person -> VerbPhrase -> Action ; -- I can swim
|
||||
ADoVerbPhrasePlace : Person -> VerbPhrase -> Place -> Action ; -- I swim in the hotel
|
||||
AModVerbPhrasePlace : Modality -> Person -> VerbPhrase -> Place -> Action ; -- I can swim in the hotel
|
||||
|
||||
QWhereDoVerbPhrase : Person -> VerbPhrase -> Question ; -- where do you swim
|
||||
QWhereModVerbPhrase : Modality -> Person -> VerbPhrase -> Question ; -- where can I swim
|
||||
|
||||
MCan, MKnow, MMust, MWant : Modality ;
|
||||
|
||||
-- lexical items given in the resource Lexicon
|
||||
|
||||
VPlay, VRun, VSit, VSleep, VSwim, VWalk : VerbPhrase ;
|
||||
VDrink, VEat, VRead, VWait, VWrite, VSit, VStop : VerbPhrase ;
|
||||
V2Buy, V2Drink, V2Eat : Object -> VerbPhrase ;
|
||||
V2Wait : Person -> VerbPhrase ;
|
||||
|
||||
PImperativeFamPos, -- eat
|
||||
PImperativeFamNeg, -- don't eat
|
||||
PImperativePolPos, -- essen Sie
|
||||
PImperativePolNeg, -- essen Sie nicht
|
||||
PImperativePlurPos, -- esst
|
||||
PImperativePlurNeg : -- esst nicht
|
||||
VerbPhrase -> Phrase ;
|
||||
|
||||
-- other new things allowed by the resource
|
||||
|
||||
--- PBecause : Sentence -> Sentence -> Phrase ; -- I want to swim because it is hot
|
||||
|
||||
He, She, -- he, she
|
||||
WeMale, WeFemale, -- we, said by men/women (affects agreement)
|
||||
YouPlurFamMale, YouPlurFamFemale, -- plural familiar you, said to men/women (affects agreement)
|
||||
YouPlurPolMale, YouPlurPolFemale, -- plural polite you, said to men/women (affects agreement)
|
||||
TheyMale, TheyFemale : Person ; -- they, said of men/women (affects agreement)
|
||||
|
||||
}
|
||||
|
||||
54
testsuite/lpgf/phrasebook/SentencesBul.gf
Normal file
54
testsuite/lpgf/phrasebook/SentencesBul.gf
Normal file
@@ -0,0 +1,54 @@
|
||||
concrete SentencesBul of Sentences =
|
||||
NumeralBul ** SentencesI - [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale,
|
||||
YouPolFemale, ACitizen, Citizenship, PCitizenship,
|
||||
LangNat, CitiNat, CountryNat, PropCit,
|
||||
Nationality, Country, LAnguage, PLanguage, PCountry
|
||||
] with
|
||||
(Syntax = SyntaxBul),
|
||||
(Symbolic = SymbolicBul),
|
||||
(Lexicon = LexiconBul) ** open ExtraBul, (R = ResBul) in {
|
||||
|
||||
lincat
|
||||
Citizenship = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
|
||||
s2 : A -- furthermore, adjective for Property
|
||||
} ;
|
||||
Nationality = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
|
||||
s2 : A; -- furthermore, adjective for Property
|
||||
s3 : PN -- country name
|
||||
} ;
|
||||
LAnguage = A ;
|
||||
Country = PN ;
|
||||
|
||||
lin IMale = mkPerson i_Pron ;
|
||||
IFemale = mkPerson i8fem_Pron ;
|
||||
|
||||
lin YouFamMale = mkPerson youSg_Pron ;
|
||||
YouFamFemale = mkPerson youSg8fem_Pron ;
|
||||
YouPolMale, YouPolFemale = mkPerson youPol_Pron ;
|
||||
|
||||
lin ACitizen p cit =
|
||||
let noun : N
|
||||
= case p.name.gn of {
|
||||
R.GSg g => lin N {s = \\nf => cit.s1 ! g ! nf;
|
||||
rel = cit.s2.s; relType = R.AdjMod;
|
||||
g = case g of {R.Masc=>R.AMasc R.Human; R.Fem=>R.AFem; R.Neut=>R.ANeut}
|
||||
} ;
|
||||
R.GPl => lin N {s = \\nf => cit.s1 ! R.Masc ! nf;
|
||||
rel = cit.s2.s; relType = R.AdjMod;
|
||||
g = R.AMasc R.Human
|
||||
}
|
||||
} ;
|
||||
in mkCl p.name noun ;
|
||||
|
||||
PCitizenship cit =
|
||||
mkPhrase (mkUtt (mkAP cit.s2)) ;
|
||||
|
||||
LangNat n = n.s2 ;
|
||||
CitiNat n = n ;
|
||||
CountryNat n = n.s3 ;
|
||||
PropCit cit = cit.s2 ;
|
||||
|
||||
PLanguage x = mkPhrase (mkUtt (mkAP x)) ;
|
||||
PCountry x = mkPhrase (mkUtt (mkNP x)) ;
|
||||
|
||||
}
|
||||
93
testsuite/lpgf/phrasebook/SentencesCat.gf
Normal file
93
testsuite/lpgf/phrasebook/SentencesCat.gf
Normal file
@@ -0,0 +1,93 @@
|
||||
--# -coding=latin1
|
||||
concrete SentencesCat of Sentences = NumeralCat ** SentencesI - [
|
||||
IsMass,
|
||||
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
|
||||
WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
|
||||
PImperativeFamNeg, PImperativePolNeg, PImperativePlurNeg, --negative imperatives in subjunctive
|
||||
Superlative,
|
||||
AKnowPerson
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxCat),
|
||||
(Symbolic = SymbolicCat),
|
||||
(Lexicon = LexiconCat) **
|
||||
open ParadigmsCat, BeschCat, SyntaxCat, ExtraCat, Prelude in {
|
||||
|
||||
--flags coding = utf8 ;
|
||||
|
||||
lincat
|
||||
Superlative = OrdSuperlative ; -- {ord: Ord ; isPre: Bool}
|
||||
|
||||
lin
|
||||
IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
|
||||
|
||||
IFemale =
|
||||
{name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamFemale =
|
||||
{name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolFemale =
|
||||
{name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||
IMale =
|
||||
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamMale =
|
||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolMale =
|
||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
||||
He =
|
||||
{name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = mkQuant he_Pron} ;
|
||||
She =
|
||||
{name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = mkQuant she_Pron} ;
|
||||
WeMale =
|
||||
{name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
|
||||
WeFemale =
|
||||
{name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
|
||||
YouPlurFamMale =
|
||||
{name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
|
||||
YouPlurFamFemale =
|
||||
{name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
|
||||
YouPlurPolMale =
|
||||
{name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron} ;
|
||||
YouPlurPolFemale =
|
||||
{name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron};
|
||||
TheyMale =
|
||||
{name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
|
||||
TheyFemale =
|
||||
{name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
|
||||
|
||||
PImperativeFamNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youSg_Pron)) v) ;
|
||||
PImperativePolNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPol_Pron)) v) ;
|
||||
PImperativePlurNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPl_Pron)) v) ;
|
||||
|
||||
AKnowPerson p q =
|
||||
let coneixer : V2 = mkV2 (mkV (conèixer_27 "conèixer"))
|
||||
in mkCl p.name coneixer q.name ;
|
||||
|
||||
oper
|
||||
|
||||
CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ;
|
||||
|
||||
mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t ->
|
||||
{ name = p ; at = i ; to = t ; } ;
|
||||
|
||||
OrdSuperlative : Type = {ord: Ord ; isPre: Bool} ;
|
||||
|
||||
placeNPSuperl : OrdSuperlative -> CNPlace -> NPPlace = \sup,kind -> case sup.isPre of {
|
||||
True => placeNPDet sup.ord kind ;
|
||||
False => placeNPAdj sup.ord kind
|
||||
} ;
|
||||
|
||||
placeNPDet : Ord -> CNPlace -> NPPlace = \ord,kind ->
|
||||
let name : NP = mkNP (mkDet the_Art ord) kind.name in {
|
||||
name = name ;
|
||||
at = SyntaxCat.mkAdv kind.at name ;
|
||||
to = SyntaxCat.mkAdv kind.to name ;
|
||||
};
|
||||
|
||||
|
||||
placeNPAdj : Ord -> CNPlace -> NPPlace = \ord,kind ->
|
||||
let name : NP = mkNP the_Art (mkCN kind.name (mkAP ord)) in {
|
||||
name = name ;
|
||||
at = SyntaxCat.mkAdv kind.at name ;
|
||||
to = SyntaxCat.mkAdv kind.to name ;
|
||||
};
|
||||
}
|
||||
62
testsuite/lpgf/phrasebook/SentencesChi.gf
Normal file
62
testsuite/lpgf/phrasebook/SentencesChi.gf
Normal file
@@ -0,0 +1,62 @@
|
||||
concrete SentencesChi of Sentences = NumeralChi ** SentencesI - [QWhereModVerbPhrase, APlace,ThePlace, PropCit, CitiNat, ACitizen, Nationality, CitizenShip, ByTransp, GObjectPlease, AKnowPerson, QDoHave , QWhereDoVerbPhrase, SHaveNo, AHaveCurr]
|
||||
with
|
||||
(Syntax = SyntaxChi),
|
||||
(Symbolic = SymbolicChi),
|
||||
(Lexicon = LexiconChi) ** open SyntaxChi, (P = ParadigmsChi) in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
lincat
|
||||
Citizenship = N ;
|
||||
Nationality = {lang : NP ; country : NP; prop : A };
|
||||
lin
|
||||
ThePlace kind =
|
||||
let name : NP = lin NP (Syntax.mkNP theSg_Det kind.name) in {
|
||||
name = lin NP name ;
|
||||
at = mkAdv kind.at (lin NP name) ;
|
||||
to = mkAdv kind.to (lin NP name)
|
||||
} ;
|
||||
APlace kind =
|
||||
let name : NP = lin NP (Syntax.mkNP aSg_Det kind.name) in {
|
||||
name = lin NP name ;
|
||||
at = mkAdv kind.at (lin NP name) ;
|
||||
to = mkAdv kind.to (lin NP name)
|
||||
} ;
|
||||
|
||||
ACitizen p n = mkCl p.name (lin N {s = n.s ++ "人" } ) ; -- to get 俄罗斯人, not 俄罗斯(人)的 ;
|
||||
CitiNat n = n.prop ; -- lin A { s = n.prop.s ++ "人" ; lock_A = <> ; monoSyl = False} ;
|
||||
|
||||
PropCit c = lin A { s = c.s ; lock_A = <>; monoSyl = True } ;
|
||||
|
||||
ByTransp t = t.by ;
|
||||
|
||||
QWhereModVerbPhrase m p vp = mkQS (mkQCl zai_where_IAdv (mkCl p.name (mkVP m vp))) ;
|
||||
|
||||
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_shang_Voc) | lin Text (mkUtt o) ;
|
||||
|
||||
AKnowPerson p q = mkCl p.name (P.mkV2 "认识") q.name ;
|
||||
|
||||
|
||||
QDoHave p obj = mkQS (mkQCl (mkCl p.name have_V2 obj)) ;
|
||||
|
||||
QWhereDoVerbPhrase p vp = mkQS (mkQCl qu_where_IAdv (mkCl p.name vp)) ;
|
||||
|
||||
SHaveNo p k = mkS negativePol (mkCl p.name have_V2 (mkNP k)) ;
|
||||
|
||||
AHaveCurr p curr = mkCl p.name have_V2 (mkNP curr) ;
|
||||
|
||||
MCan = can_VV ;
|
||||
MWant = want_VV ;
|
||||
MMust = must_VV ;
|
||||
|
||||
|
||||
oper
|
||||
qu_where_IAdv = mkIAdvL "去哪里" ;
|
||||
zai_where_IAdv = mkIAdvL "在哪里" ;
|
||||
where_m_IAdv : VV -> SS = \m -> mkIAdvL m.s ; -- ( "想在哪里" ) ;
|
||||
|
||||
have_or_not_V2 = P.mkV2 (P.mkV "有没有" "了" "着" "在" "过" "没") ;
|
||||
|
||||
please_shang_Voc : SS = ss "请上" ;
|
||||
|
||||
|
||||
}
|
||||
8
testsuite/lpgf/phrasebook/SentencesDan.gf
Normal file
8
testsuite/lpgf/phrasebook/SentencesDan.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
concrete SentencesDan of Sentences = NumeralDan ** SentencesI - [NameNN] with
|
||||
(Syntax = SyntaxDan),
|
||||
(Symbolic = SymbolicDan),
|
||||
(Lexicon = LexiconDan) ** open Prelude, SyntaxDan, (P = ParadigmsDan) in {
|
||||
|
||||
lin NameNN = mkNP (P.mkPN "NN") ;
|
||||
|
||||
}
|
||||
53
testsuite/lpgf/phrasebook/SentencesDut.gf
Normal file
53
testsuite/lpgf/phrasebook/SentencesDut.gf
Normal file
@@ -0,0 +1,53 @@
|
||||
concrete SentencesDut of Sentences = NumeralDut ** SentencesI -
|
||||
[SHaveNo,SHaveNoMass,
|
||||
Proposition,Action, Is, IsMass, SProp, SPropNot, QProp,
|
||||
AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion,
|
||||
---- QDoHave, QWhereDoVerbPhrase, QWhereModVerbPhrase, SHave,
|
||||
SHaveNo,
|
||||
QModVerbPhrase,
|
||||
ADoVerbPhrase, AModVerbPhrase, ADoVerbPhrasePlace, AModVerbPhrasePlace]
|
||||
with
|
||||
(Syntax = SyntaxDut),
|
||||
(Symbolic = SymbolicDut),
|
||||
(Lexicon = LexiconDut) ** open Prelude, SyntaxDut in {
|
||||
|
||||
lincat
|
||||
Proposition, Action = Prop ;
|
||||
oper
|
||||
Prop = {pos : Cl ; neg : S} ; -- x F y ; x F niet/geen y
|
||||
mkProp : Cl -> S -> Prop = \pos,neg -> {pos = pos ; neg = neg} ;
|
||||
prop : Cl -> Prop = \cl -> mkProp cl (mkS negativePol cl) ;
|
||||
|
||||
lin
|
||||
Is i q = prop (mkCl i q) ;
|
||||
IsMass m q = prop (mkCl (mkNP m) q) ;
|
||||
SProp p = mkS p.pos ;
|
||||
SPropNot p = p.neg ;
|
||||
QProp p = mkQS (mkQCl p.pos) ;
|
||||
|
||||
AHaveCurr p curr = prop (mkCl p.name have_V2 (mkNP aPl_Det curr)) ;
|
||||
ACitizen p n = prop (mkCl p.name n) ;
|
||||
ABePlace p place = prop (mkCl p.name place.at) ;
|
||||
|
||||
AKnowSentence p s = prop (mkCl p.name Lexicon.know_VS s) ;
|
||||
AKnowQuestion p s = prop (mkCl p.name Lexicon.know_VQ s) ;
|
||||
AKnowPerson p q = prop (mkCl p.name Lexicon.know_V2 q.name) ;
|
||||
|
||||
lincat
|
||||
Nationality = {lang : CN ; country : NP ; prop : A} ;
|
||||
Language = CN ; -- kein Deutsch
|
||||
|
||||
-- the new things
|
||||
lin
|
||||
ADoVerbPhrase p vp = prop (mkCl p.name vp) ;
|
||||
AModVerbPhrase m p vp = prop (mkCl p.name (mkVP m vp)) ;
|
||||
ADoVerbPhrasePlace p vp x = prop (mkCl p.name (mkVP vp x.at)) ;
|
||||
AModVerbPhrasePlace m p vp x = prop (mkCl p.name (mkVP m (mkVP vp x.at))) ;
|
||||
|
||||
-- the old things
|
||||
lin
|
||||
SHaveNo p k = mkS (mkCl p.name have_V2 (mkNP no_Quant plNum k)) ;
|
||||
SHaveNoMass p k = mkS (mkCl p.name have_V2 (mkNP no_Quant k)) ;
|
||||
|
||||
}
|
||||
|
||||
4
testsuite/lpgf/phrasebook/SentencesEng.gf
Normal file
4
testsuite/lpgf/phrasebook/SentencesEng.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete SentencesEng of Sentences = NumeralEng ** SentencesI with
|
||||
(Syntax = SyntaxEng),
|
||||
(Symbolic = SymbolicEng),
|
||||
(Lexicon = LexiconEng) ;
|
||||
63
testsuite/lpgf/phrasebook/SentencesEst.gf
Normal file
63
testsuite/lpgf/phrasebook/SentencesEst.gf
Normal file
@@ -0,0 +1,63 @@
|
||||
concrete SentencesEst of Sentences = NumeralEst ** SentencesI -
|
||||
[NameNN, ObjMass,
|
||||
NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl, NPNationality, mkNPNationality,
|
||||
CitiNat, Citizenship, Nationality, ACitizen, PropCit, PCitizenship,
|
||||
GObjectPlease
|
||||
] with
|
||||
(Syntax = SyntaxEst),
|
||||
(Symbolic = SymbolicEst),
|
||||
(Lexicon = LexiconEst) **
|
||||
open SyntaxEst, ExtraEst, (P = ParadigmsEst), (V = VerbEst), Prelude in {
|
||||
|
||||
flags optimize = noexpand ;
|
||||
|
||||
lincat
|
||||
Citizenship = ACitizenship ;
|
||||
Nationality = NPNationality ;
|
||||
|
||||
oper
|
||||
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 {
|
||||
name = name ;
|
||||
at = mkAdv kind.at name ;
|
||||
to = mkAdv kind.to name ;
|
||||
from = mkAdv kind.from name
|
||||
} ;
|
||||
|
||||
lin
|
||||
-- The Fin-grammar overloaded the Is and IsMass functions to be
|
||||
-- able to use the complement in partitive.
|
||||
-- This would be wrong in Est, where the complement is in nominative.
|
||||
-- Fin: tämä pizza on herkullista
|
||||
-- Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ;
|
||||
--
|
||||
-- Fin: pizza on herkullista
|
||||
-- IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ;
|
||||
|
||||
NameNN = mkNP (P.mkPN (P.mkN "NN")) ;
|
||||
|
||||
-- Estonian does not have possessive endings and does not make use of ProDrop
|
||||
-- that much, so we do not override SentencesI, like Finnish does.
|
||||
{--
|
||||
IMale, IFemale =
|
||||
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = ProDropPoss i_Pron} ;
|
||||
YouFamMale, YouFamFemale =
|
||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = ProDropPoss youSg_Pron} ;
|
||||
YouPolMale, YouPolFemale =
|
||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = ProDropPoss youPol_Pron} ;
|
||||
--}
|
||||
|
||||
ObjMass = PartCN ;
|
||||
|
||||
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "palun"))) ;
|
||||
|
||||
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 ;
|
||||
}
|
||||
56
testsuite/lpgf/phrasebook/SentencesFin.gf
Normal file
56
testsuite/lpgf/phrasebook/SentencesFin.gf
Normal file
@@ -0,0 +1,56 @@
|
||||
--# -coding=latin1
|
||||
concrete SentencesFin of Sentences = NumeralFin ** SentencesI -
|
||||
[Is, IsMass, NameNN, ObjMass,
|
||||
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
|
||||
WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale,
|
||||
NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl,
|
||||
GObjectPlease,
|
||||
NPNationality, mkNPNationality,
|
||||
Country, PCountry
|
||||
] with
|
||||
(Syntax = SyntaxFin),
|
||||
(Symbolic = SymbolicFin),
|
||||
(Lexicon = LexiconFin) **
|
||||
open SyntaxFin, ExtraFin, (P = ParadigmsFin), (V = VerbFin), Prelude in {
|
||||
|
||||
flags optimize = noexpand ;
|
||||
|
||||
lincat
|
||||
Country = {np : NP ; isExternal : Bool} ;
|
||||
lin
|
||||
PCountry x = mkPhrase (mkUtt x.np) ;
|
||||
oper
|
||||
NPNationality = {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} ;
|
||||
NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
|
||||
CNPlace = {name : CN ; isExternal : Bool ; isPl : Bool} ;
|
||||
|
||||
placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
|
||||
let name : NP = mkNP det kind.name in {
|
||||
name = name ;
|
||||
at = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.adessive P.inessive)) name ;
|
||||
to = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.allative P.illative)) name ;
|
||||
from = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.ablative P.elative)) name
|
||||
} ;
|
||||
|
||||
lin
|
||||
Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- tämä pizza on herkullista
|
||||
IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista
|
||||
NameNN = mkNP (P.mkPN (P.mkN "NN" "NN:iä")) ;
|
||||
|
||||
IMale, IFemale =
|
||||
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = ProDropPoss i_Pron} ;
|
||||
YouFamMale, YouFamFemale =
|
||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = ProDropPoss youSg_Pron} ;
|
||||
YouPolMale, YouPolFemale =
|
||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = ProDropPoss youPol_Pron} ;
|
||||
WeMale, WeFemale =
|
||||
{name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = ProDropPoss we_Pron} ;
|
||||
YouPlurFamMale, YouPlurFamFemale, YouPlurPolMale, YouPlurPolFemale =
|
||||
{name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = ProDropPoss youPl_Pron} ;
|
||||
|
||||
ObjMass = PartCN ;
|
||||
|
||||
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "kiitos"))) ;
|
||||
|
||||
|
||||
}
|
||||
47
testsuite/lpgf/phrasebook/SentencesFre.gf
Normal file
47
testsuite/lpgf/phrasebook/SentencesFre.gf
Normal file
@@ -0,0 +1,47 @@
|
||||
concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [
|
||||
IsMass,
|
||||
QProp,
|
||||
IFemale, YouFamFemale, YouPolFemale, WeFemale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyFemale,
|
||||
PYesToNo,
|
||||
SHaveNo,SHaveNoMass,
|
||||
Superlative
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxFre),
|
||||
(Symbolic = SymbolicFre),
|
||||
(Lexicon = LexiconFre) **
|
||||
open SyntaxFre, ExtraFre, (P = ParadigmsFre), Prelude in {
|
||||
|
||||
lincat
|
||||
Superlative = {s : Ord ; isPre : Bool} ;
|
||||
lin
|
||||
IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
|
||||
QProp a =
|
||||
lin QS {s = \\_ => (EstcequeS (mkS a)).s} ;
|
||||
IFemale =
|
||||
{name = mkNP i8fem_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamFemale =
|
||||
{name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolFemale =
|
||||
{name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
||||
WeFemale =
|
||||
{name = mkNP we8fem_Pron ; isPron = True ; poss = mkQuant we_Pron} ;
|
||||
YouPlurFamFemale =
|
||||
{name = mkNP youPl8fem_Pron ; isPron = True ; poss = mkQuant youPl_Pron} ;
|
||||
YouPlurPolMale =
|
||||
{name = mkNP youPl_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||
YouPlurPolFemale =
|
||||
{name = mkNP youPl8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||
TheyFemale =
|
||||
{name = mkNP they8fem_Pron ; isPron = True ; poss = mkQuant they_Pron} ;
|
||||
|
||||
|
||||
PYesToNo = mkPhrase (lin Utt (ss "si")) ;
|
||||
|
||||
SHaveNo p k = mkS negativePol (mkCl p.name have_de (mkNP aPl_Det k)) ;
|
||||
SHaveNoMass p k = mkS negativePol (mkCl p.name (ComplCN have_de k)) ;
|
||||
|
||||
oper
|
||||
have_de : V2 = P.mkV2 (P.mkV have_V2) P.genitive ;
|
||||
|
||||
}
|
||||
50
testsuite/lpgf/phrasebook/SentencesGer.gf
Normal file
50
testsuite/lpgf/phrasebook/SentencesGer.gf
Normal file
@@ -0,0 +1,50 @@
|
||||
concrete SentencesGer of Sentences = NumeralGer ** SentencesI -
|
||||
[PYesToNo,SHaveNo,SHaveNoMass,
|
||||
Proposition, Action, Is, IsMass, SProp, SPropNot, QProp,
|
||||
AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion,
|
||||
Nationality, LAnguage,
|
||||
ADoVerbPhrase, AModVerbPhrase, ADoVerbPhrasePlace, AModVerbPhrasePlace,
|
||||
YouPlurPolMale, YouPlurPolFemale
|
||||
] with
|
||||
(Syntax = SyntaxGer),
|
||||
(Symbolic = SymbolicGer),
|
||||
(Lexicon = LexiconGer) ** open Prelude, SyntaxGer in {
|
||||
|
||||
lin
|
||||
PYesToNo = mkPhrase (lin Utt (ss "doch")) ;
|
||||
SHaveNo p k = mkS (mkCl p.name have_V2 (mkNP no_Quant plNum k)) ;
|
||||
SHaveNoMass p k = mkS (mkCl p.name have_V2 (mkNP no_Quant k)) ;
|
||||
|
||||
lincat
|
||||
Proposition, Action = Prop ;
|
||||
oper
|
||||
Prop = {pos : Cl ; neg : S} ; -- x F y ; x F nicht/kein y
|
||||
mkProp : Cl -> S -> Prop = \pos,neg -> {pos = pos ; neg = neg} ;
|
||||
prop : Cl -> Prop = \cl -> mkProp cl (mkS negativePol cl) ;
|
||||
lin
|
||||
Is i q = prop (mkCl i q) ;
|
||||
IsMass m q = prop (mkCl (mkNP m) q) ;
|
||||
SProp p = mkS p.pos ;
|
||||
SPropNot p = p.neg ;
|
||||
QProp p = mkQS (mkQCl p.pos) ;
|
||||
|
||||
AHaveCurr p curr = prop (mkCl p.name have_V2 (mkNP aPl_Det curr)) ;
|
||||
ACitizen p n = prop (mkCl p.name n) ;
|
||||
ABePlace p place = prop (mkCl p.name place.at) ;
|
||||
|
||||
AKnowSentence p s = prop (mkCl p.name Lexicon.know_VS s) ;
|
||||
AKnowQuestion p s = prop (mkCl p.name Lexicon.know_VQ s) ;
|
||||
AKnowPerson p q = prop (mkCl p.name Lexicon.know_V2 q.name) ;
|
||||
|
||||
lincat
|
||||
Nationality = {lang : CN ; country : NP ; prop : A} ;
|
||||
LAnguage = CN ; -- kein Deutsch
|
||||
|
||||
-- the new things
|
||||
lin
|
||||
ADoVerbPhrase p vp = prop (mkCl p.name vp) ;
|
||||
AModVerbPhrase m p vp = prop (mkCl p.name (mkVP m vp)) ;
|
||||
ADoVerbPhrasePlace p vp x = prop (mkCl p.name (mkVP vp x.at)) ;
|
||||
AModVerbPhrasePlace m p vp x = prop (mkCl p.name (mkVP m (mkVP vp x.at))) ;
|
||||
YouPlurPolMale, YouPlurPolFemale = mkPerson youPol_Pron ;
|
||||
}
|
||||
42
testsuite/lpgf/phrasebook/SentencesHin.gf
Normal file
42
testsuite/lpgf/phrasebook/SentencesHin.gf
Normal file
@@ -0,0 +1,42 @@
|
||||
concrete SentencesHin of Sentences = NumeralHin ** SentencesI -
|
||||
[sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale,mkGreeting] with
|
||||
(Syntax = SyntaxHin),
|
||||
(Symbolic = SymbolicHin),
|
||||
(Lexicon = LexiconHin) **
|
||||
open
|
||||
(P=ParadigmsHin),
|
||||
ParamX,
|
||||
CommonHindustani in {
|
||||
lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
|
||||
YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
|
||||
YouFamFemale = mkPerson (P.personalPN tw tw tw tyra tyry tyrE tyry Sg Fem Pers2_Casual) ;
|
||||
YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
|
||||
YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
|
||||
YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
|
||||
|
||||
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
oper
|
||||
mkGreeting = ss ;
|
||||
|
||||
oper
|
||||
myN = "मैं" ;
|
||||
mjh = "मुझ" ;
|
||||
myra = "मेरा" ;
|
||||
myry = "मेरी" ;
|
||||
myrE = "मेरे" ;
|
||||
tw = "तू" ;
|
||||
tum = "तुम" ;
|
||||
tyra = "तेरा" ;
|
||||
tyry = "तेरी" ;
|
||||
tyrE = "तेरे" ;
|
||||
tumhara = "तुम्हारा" ;
|
||||
tumhary = "तुम्हारी" ;
|
||||
tumharay = "तुम्हारे" ;
|
||||
ap = "आप" ;
|
||||
apka = ["आप का"] ;
|
||||
apky = ["आप की"] ;
|
||||
apkE = ["आप के"] ;
|
||||
} ;
|
||||
302
testsuite/lpgf/phrasebook/SentencesI.gf
Normal file
302
testsuite/lpgf/phrasebook/SentencesI.gf
Normal file
@@ -0,0 +1,302 @@
|
||||
--1 Implementation of MOLTO Phrasebook
|
||||
|
||||
--2 The functor for (mostly) common structures
|
||||
|
||||
incomplete concrete SentencesI of Sentences = Numeral **
|
||||
open
|
||||
Syntax,
|
||||
Lexicon,
|
||||
Symbolic, -- for names as strings
|
||||
Prelude
|
||||
in {
|
||||
lincat
|
||||
Phrase = Text ;
|
||||
Word = Text ;
|
||||
Message = Text ;
|
||||
Greeting = Text ;
|
||||
Sentence = S ;
|
||||
Question = QS ;
|
||||
Proposition = Cl ;
|
||||
Item = NP ;
|
||||
Kind = CN ;
|
||||
MassKind = CN ;
|
||||
MassKind = CN ;
|
||||
PlurKind = CN ;
|
||||
DrinkKind = CN ;
|
||||
Quality = AP ;
|
||||
Property = A ;
|
||||
Object = NP ;
|
||||
PrimObject = NP ;
|
||||
Place = NPPlace ; -- {name : NP ; at : Syntax.Adv ; to : Syntax.Adv} ;
|
||||
PlaceKind = CNPlace ; -- {name : CN ; at : Prep ; to : Prep} ;
|
||||
Currency = CN ;
|
||||
Price = NP ;
|
||||
Action = Cl ;
|
||||
Person = NPPerson ; -- {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||
Nationality = NPNationality ; -- {lang : NP ; country : NP ; prop : A} ;
|
||||
LAnguage = NP ;
|
||||
Citizenship = A ;
|
||||
Country = NP ;
|
||||
Day = NPDay ; -- {name : NP ; point : Syntax.Adv ; habitual : Syntax.Adv} ;
|
||||
Date = Syntax.Adv ;
|
||||
Name = NP ;
|
||||
Number = Card ;
|
||||
ByTransport = Syntax.Adv ;
|
||||
Transport = {name : CN ; by : Syntax.Adv} ;
|
||||
Superlative = Det ;
|
||||
lin
|
||||
MPhrase p = p ;
|
||||
MContinue p m = mkText p m ;
|
||||
|
||||
PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
|
||||
PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
|
||||
|
||||
PGreetingMale, PGreetingFemale = \g -> mkText (lin Phr (ss g.s)) exclMarkPunct | g ;
|
||||
|
||||
-- PWord w = w ;
|
||||
|
||||
PNumber x = mkSentence (mkUtt x) ;
|
||||
PPrice x = mkSentence (mkUtt x) ;
|
||||
|
||||
PObject x = mkPhrase (mkUtt x) ;
|
||||
PKind x = mkPhrase (mkUtt x) ;
|
||||
PMassKind x = mkPhrase (mkUtt x) ;
|
||||
PQuality x = mkPhrase (mkUtt x) ;
|
||||
PPlace x = mkPhrase (mkUtt x.name) ;
|
||||
PPlaceKind x = mkPhrase (mkUtt x.name) ;
|
||||
PCurrency 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) ;
|
||||
PTransport t = mkPhrase (mkUtt t.name) ;
|
||||
PByTransport t = mkPhrase (mkUtt t) ;
|
||||
|
||||
PYes = mkPhrase yes_Utt ;
|
||||
PNo = mkPhrase no_Utt ;
|
||||
PYesToNo = mkPhrase yes_Utt ;
|
||||
|
||||
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_Voc) | lin Text (mkUtt o) ;
|
||||
|
||||
Is = mkCl ;
|
||||
IsMass m q = mkCl (mkNP m) q ;
|
||||
|
||||
SProp = mkS ;
|
||||
SPropNot = mkS negativePol ;
|
||||
QProp p = mkQS (mkQCl p) ;
|
||||
|
||||
WherePlace place = mkQS (mkQCl where_IAdv place.name) ;
|
||||
WherePerson person = mkQS (mkQCl where_IAdv person.name) ;
|
||||
|
||||
PropAction a = a ;
|
||||
|
||||
AmountCurrency num curr = mkNP num curr ;
|
||||
|
||||
ObjItem i = i ;
|
||||
ObjNumber n k = mkNP n k ;
|
||||
ObjIndef k = mkNP a_Quant k ;
|
||||
ObjPlural k = mkNP aPl_Det k ;
|
||||
ObjPlur k = mkNP aPl_Det k ;
|
||||
ObjMass k = mkNP k ;
|
||||
ObjAndObj = mkNP and_Conj ;
|
||||
OneObj o = o ;
|
||||
|
||||
MassDrink d = d ;
|
||||
DrinkNumber n k = mkNP n k ;
|
||||
|
||||
This kind = mkNP this_Quant kind ;
|
||||
That kind = mkNP that_Quant kind ;
|
||||
These kind = mkNP this_Quant plNum kind ;
|
||||
Those kind = mkNP that_Quant plNum kind ;
|
||||
The kind = mkNP the_Quant kind ;
|
||||
Thes kind = mkNP the_Quant plNum kind ;
|
||||
ThisMass kind = mkNP this_Quant kind ;
|
||||
ThatMass kind = mkNP that_Quant kind ;
|
||||
TheMass kind = mkNP the_Quant kind ;
|
||||
ThesePlur kind = mkNP this_Quant plNum kind ;
|
||||
ThosePlur kind = mkNP that_Quant plNum kind ;
|
||||
ThesPlur kind = mkNP the_Quant plNum kind ;
|
||||
|
||||
SuchKind quality kind = mkCN quality kind ;
|
||||
SuchMassKind quality kind = mkCN quality kind ;
|
||||
Very property = mkAP very_AdA (mkAP property) ;
|
||||
Too property = mkAP too_AdA (mkAP property) ;
|
||||
PropQuality property = mkAP property ;
|
||||
|
||||
ThePlace kind = let dd : Det = if_then_else Det kind.isPl thePl_Det theSg_Det
|
||||
in placeNP dd kind ;
|
||||
APlace kind = let dd : Det = if_then_else Det kind.isPl aPl_Det aSg_Det
|
||||
in placeNP dd kind ;
|
||||
|
||||
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 = mkQuant he_Pron} ; -- poss not used
|
||||
---- NameString s = symb s ; --%
|
||||
NameNN = symb "NN" ;
|
||||
|
||||
NNumeral n = mkCard <lin Numeral n : Numeral> ;
|
||||
|
||||
SHave p obj = mkS (mkCl p.name have_V2 obj) ;
|
||||
SHaveNo p k = mkS negativePol (mkCl p.name have_V2 (mkNP aPl_Det k)) ;
|
||||
SHaveNoMass p m = mkS negativePol (mkCl p.name have_V2 (mkNP m)) ;
|
||||
QDoHave p obj = mkQS (mkQCl (mkCl p.name have_V2 obj)) ;
|
||||
|
||||
AHaveCurr p curr = mkCl p.name have_V2 (mkNP aPl_Det curr) ;
|
||||
ACitizen p n = mkCl p.name n ;
|
||||
ABePlace p place = mkCl p.name place.at ;
|
||||
ByTransp t = t.by ;
|
||||
|
||||
AKnowSentence p s = mkCl p.name Lexicon.know_VS s ;
|
||||
AKnowQuestion p s = mkCl p.name Lexicon.know_VQ s ;
|
||||
AKnowPerson p q = mkCl p.name Lexicon.know_V2 q.name ;
|
||||
|
||||
oper
|
||||
|
||||
-- These operations are used internally in Sentences.
|
||||
|
||||
mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
|
||||
mkGreeting : Str -> Text = \s -> lin Text (ss s) ; -- no punctuation
|
||||
mkSentence : Utt -> Text = \t -> lin Text (postfixSS "." t | t) ; -- optional .
|
||||
|
||||
mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
|
||||
{name = mkNP p ; isPron = True ; poss = mkQuant p} ;
|
||||
|
||||
-- These are used in Words for each language.
|
||||
|
||||
NPNationality : Type = {lang : NP ; country : NP ; prop : A} ;
|
||||
|
||||
mkNPNationality : NP -> NP -> A -> NPNationality = \la,co,pro ->
|
||||
{lang = la ;
|
||||
country = co ;
|
||||
prop = pro
|
||||
} ;
|
||||
|
||||
NPDay : Type = {name : NP ; point : Syntax.Adv ; habitual : Syntax.Adv} ;
|
||||
|
||||
mkNPDay : NP -> Syntax.Adv -> Syntax.Adv -> NPDay = \d,p,h ->
|
||||
{name = d ;
|
||||
point = p ;
|
||||
habitual = h
|
||||
} ;
|
||||
|
||||
NPPlace : Type = {name : NP ; at : Syntax.Adv ; to : Syntax.Adv} ;
|
||||
CNPlace : Type = {name : CN ; at : Prep ; to : Prep; isPl : Bool} ;
|
||||
|
||||
mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
|
||||
name = p ;
|
||||
at = i ;
|
||||
to = t ;
|
||||
isPl = False
|
||||
} ;
|
||||
|
||||
mkCNPlacePl : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
|
||||
name = p ;
|
||||
at = i ;
|
||||
to = t ;
|
||||
isPl = True
|
||||
} ;
|
||||
|
||||
placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
|
||||
let name : NP = mkNP det kind.name in {
|
||||
name = name ;
|
||||
at = Syntax.mkAdv kind.at name ;
|
||||
to = Syntax.mkAdv kind.to name
|
||||
} ;
|
||||
|
||||
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||
|
||||
relativePerson : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson =
|
||||
\n,x,f,p ->
|
||||
let num = if_then_else Num n plNum sgNum in {
|
||||
name = case p.isPron of {
|
||||
True => mkNP p.poss num x ;
|
||||
_ => f num p.name x
|
||||
} ;
|
||||
isPron = False ;
|
||||
poss = mkQuant he_Pron -- not used because not pron
|
||||
} ;
|
||||
|
||||
GNumber : PType = Bool ;
|
||||
sing = False ; plur = True ;
|
||||
|
||||
-- for languages without GenNP, use "the wife of p"
|
||||
mkRelative : Bool -> CN -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n x
|
||||
(\a,b,c -> mkNP (mkNP the_Quant a c) (Syntax.mkAdv possess_Prep b)) p ;
|
||||
|
||||
-- for languages with GenNP, use "p's wife"
|
||||
-- relativePerson n x (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
phrasePlease : Utt -> Text = \u -> --- lin Text (mkPhr noPConj u please_Voc) |
|
||||
lin Text u ;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
-- New things added 30/11/2011 by AR
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
lincat
|
||||
VerbPhrase = VP ;
|
||||
Modality = VV ;
|
||||
lin
|
||||
ADoVerbPhrase p vp = mkCl p.name vp ;
|
||||
AModVerbPhrase m p vp = mkCl p.name (mkVP m vp) ;
|
||||
ADoVerbPhrasePlace p vp x = mkCl p.name (mkVP vp x.at) ;
|
||||
AModVerbPhrasePlace m p vp x = mkCl p.name (mkVP m (mkVP vp x.at)) ;
|
||||
|
||||
QWhereDoVerbPhrase p vp = mkQS (mkQCl where_IAdv (mkCl p.name vp)) ;
|
||||
QWhereModVerbPhrase m p vp = mkQS (mkQCl where_IAdv (mkCl p.name (mkVP m vp))) ;
|
||||
|
||||
MWant = want_VV ;
|
||||
MCan = can_VV ;
|
||||
MKnow = can8know_VV ;
|
||||
MMust = must_VV ;
|
||||
|
||||
VPlay = mkVP play_V ;
|
||||
VRun = mkVP run_V ;
|
||||
VSit = mkVP sit_V ;
|
||||
VSleep = mkVP sleep_V ;
|
||||
VSwim = mkVP swim_V ;
|
||||
VWalk = mkVP walk_V ;
|
||||
VSit = mkVP sit_V ;
|
||||
VStop = mkVP stop_V ;
|
||||
VDrink = mkVP <lin V drink_V2 : V> ;
|
||||
VEat = mkVP <lin V eat_V2 : V> ;
|
||||
VRead = mkVP <lin V read_V2 : V> ;
|
||||
VWait = mkVP <lin V wait_V2 : V> ;
|
||||
VWrite = mkVP <lin V write_V2 : V> ;
|
||||
|
||||
V2Buy o = mkVP buy_V2 o ;
|
||||
V2Drink o = mkVP drink_V2 o ;
|
||||
V2Eat o = mkVP eat_V2 o ;
|
||||
V2Wait o = mkVP wait_V2 o.name ;
|
||||
|
||||
PImperativeFamPos v = phrasePlease (mkUtt (mkImp v)) ;
|
||||
PImperativeFamNeg v = phrasePlease (mkUtt negativePol (mkImp v)) ;
|
||||
PImperativePolPos v = phrasePlease (mkUtt politeImpForm (mkImp v)) ;
|
||||
PImperativePolNeg v = phrasePlease (mkUtt politeImpForm negativePol (mkImp v)) ;
|
||||
PImperativePlurPos v = phrasePlease (mkUtt pluralImpForm (mkImp v)) ;
|
||||
PImperativePlurNeg v = phrasePlease (mkUtt pluralImpForm negativePol (mkImp v)) ;
|
||||
|
||||
-- other new things allowed by the resource
|
||||
|
||||
--- PBecause a b = SSubjS a because_Subj b ;
|
||||
|
||||
He = mkPerson he_Pron ;
|
||||
She = mkPerson she_Pron ;
|
||||
WeMale, WeFemale = mkPerson we_Pron ;
|
||||
YouPlurFamMale, YouPlurFamFemale = mkPerson youPl_Pron ;
|
||||
YouPlurPolMale, YouPlurPolFemale = mkPerson youPl_Pron ;
|
||||
TheyMale, TheyFemale = mkPerson they_Pron ;
|
||||
|
||||
}
|
||||
78
testsuite/lpgf/phrasebook/SentencesIta.gf
Normal file
78
testsuite/lpgf/phrasebook/SentencesIta.gf
Normal file
@@ -0,0 +1,78 @@
|
||||
concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [
|
||||
IsMass,
|
||||
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
|
||||
WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
|
||||
mkPerson, Superlative, SHaveNoMass
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxIta),
|
||||
(Symbolic = SymbolicIta),
|
||||
(Lexicon = LexiconIta) **
|
||||
open SyntaxIta, ExtraIta, Prelude in {
|
||||
|
||||
lincat
|
||||
Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv ; } ;
|
||||
Superlative = {s : A ; isPre : Bool} ;
|
||||
|
||||
lin
|
||||
IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
|
||||
|
||||
IFemale =
|
||||
{name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ;
|
||||
IMale =
|
||||
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ;
|
||||
YouFamMale =
|
||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ;
|
||||
YouFamFemale =
|
||||
{name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ;
|
||||
YouPolMale =
|
||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron} ;
|
||||
YouPolFemale =
|
||||
{name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron};
|
||||
He =
|
||||
{name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = PossFamQuant he_Pron} ;
|
||||
She =
|
||||
{name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = PossFamQuant she_Pron} ;
|
||||
WeMale =
|
||||
{name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = PossFamQuant we_Pron} ;
|
||||
WeFemale =
|
||||
{name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = PossFamQuant we_Pron} ;
|
||||
YouPlurFamMale =
|
||||
{name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = PossFamQuant youPl_Pron} ;
|
||||
YouPlurFamFemale =
|
||||
{name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = PossFamQuant youPl_Pron} ;
|
||||
YouPlurPolMale =
|
||||
{name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = PossFamQuant youPolPl_Pron} ;
|
||||
YouPlurPolFemale =
|
||||
{name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = PossFamQuant youPolPl_Pron};
|
||||
TheyMale =
|
||||
{name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = PossFamQuant they_Pron} ;
|
||||
TheyFemale =
|
||||
{name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = PossFamQuant they_Pron} ;
|
||||
|
||||
SHaveNoMass p k = mkS negativePol (mkCl p.name (ComplCN have_V2 k)) ;
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
|
||||
{name = mkNP p ; isPron = True ; poss = PossFamQuant p} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
62
testsuite/lpgf/phrasebook/SentencesJpn.gf
Normal file
62
testsuite/lpgf/phrasebook/SentencesJpn.gf
Normal file
@@ -0,0 +1,62 @@
|
||||
concrete SentencesJpn of Sentences = NumeralJpn **
|
||||
SentencesI - [
|
||||
VDrink,VEat,VRead,VWait,VWrite,
|
||||
phrasePlease, mkSentence, mkPhrase,
|
||||
NameNN,
|
||||
PSentence, PQuestion, GObjectPlease,
|
||||
ACitizen, Citizenship, CitiNat, Nationality, NPNationality, mkNPNationality, PropCit, PCitizenship
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxJpn),
|
||||
-- (Symbolic = SymbolicJpn),
|
||||
(Lexicon = LexiconJpn) ** open SyntaxJpn, ParadigmsJpn in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lincat
|
||||
|
||||
Citizenship = NPCitizenship ;
|
||||
Nationality = NPNationality ;
|
||||
|
||||
lin
|
||||
VDrink = v2toVP drink_V2 ;
|
||||
VEat = v2toVP eat_V2 ;
|
||||
VRead = v2toVP read_V2 ;
|
||||
VWait = v2toVP wait_V2 ;
|
||||
VWrite = v2toVP write_V2 ;
|
||||
|
||||
NameNN = mkNP (mkPN "NN") ;
|
||||
|
||||
PSentence s = mkText (mkPhr (mkUtt s)) | lin Text (mkPhr (mkUtt s)) ; -- optional '.'
|
||||
PQuestion s = mkText (mkPhr (mkUtt s)) | lin Text (mkPhr (mkUtt s)) ; -- optional '?'
|
||||
|
||||
GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_Voc) | lin Text (mkPhr (mkUtt o)) ;
|
||||
|
||||
ACitizen p n = mkCl p.name n.citizenship ;
|
||||
|
||||
CitiNat n = {prop = n.prop ; citizenship = n.citizenship} ;
|
||||
|
||||
PropCit c = c.prop ;
|
||||
|
||||
PCitizenship x = mkPhrase (mkUtt x.citizenship) ;
|
||||
|
||||
oper
|
||||
v2toVP : V2 -> VP = \v2 -> mkVP <lin V (v2 ** {needSubject = True}) : V> ;
|
||||
|
||||
phrasePlease : Utt -> Text = \u -> lin Text (mkPhr u) | lin Text (mkPhr noPConj u please_Voc) ;
|
||||
|
||||
mkPhrase : Utt -> Text = \u -> lin Text (mkPhr u) ; -- no punctuation
|
||||
mkSentence : Utt -> Text = \t -> lin Text (postfixSS "." (mkPhr t) | (mkPhr t)) ; -- optional .
|
||||
|
||||
NPCitizenship : Type = {prop : A ; citizenship : NP} ;
|
||||
|
||||
NPNationality : Type = NPCitizenship ** {lang : NP ; country : NP} ;
|
||||
|
||||
mkNPNationality : NP -> NP -> A -> NP -> NPNationality = \la,co,pro,ci ->
|
||||
{lang = la ;
|
||||
country = co ;
|
||||
prop = pro ;
|
||||
citizenship = ci
|
||||
} ;
|
||||
|
||||
}
|
||||
50
testsuite/lpgf/phrasebook/SentencesLav.gf
Normal file
50
testsuite/lpgf/phrasebook/SentencesLav.gf
Normal file
@@ -0,0 +1,50 @@
|
||||
concrete SentencesLav of Sentences = NumeralLav ** SentencesI - [
|
||||
LAnguage,
|
||||
PLanguage,
|
||||
NPNationality,
|
||||
mkNPNationality,
|
||||
NameNN,
|
||||
IFemale,
|
||||
YouFamFemale,
|
||||
YouPolFemale,
|
||||
WeFemale,
|
||||
YouPlurFamFemale,
|
||||
YouPlurPolFemale,
|
||||
TheyFemale
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxLav),
|
||||
(Symbolic = SymbolicLav),
|
||||
(Lexicon = LexiconLav) **
|
||||
open
|
||||
Prelude,
|
||||
SyntaxLav,
|
||||
(P = ParadigmsLav),
|
||||
ExtraLav
|
||||
in {
|
||||
|
||||
lincat
|
||||
LAnguage = NPLanguage ;
|
||||
|
||||
lin
|
||||
PLanguage x = mkPhrase (mkUtt x.lang) ;
|
||||
|
||||
NameNN = mkNP (P.mkN "NN") ;
|
||||
|
||||
IFemale = mkPerson i8fem_Pron ;
|
||||
YouFamFemale = mkPerson youSg8fem_Pron ;
|
||||
YouPolFemale = mkPerson youPol8fem_Pron ;
|
||||
WeFemale = mkPerson we8fem_Pron ;
|
||||
YouPlurFamFemale, YouPlurPolFemale = mkPerson youPl8fem_Pron ;
|
||||
TheyFemale = mkPerson they8fem_Pron ;
|
||||
|
||||
oper
|
||||
NPLanguage : Type = {lang : NP ; modif : Adv} ;
|
||||
NPNationality : Type = {lang : NPLanguage ; country : NP ; prop : A} ;
|
||||
|
||||
mkNPNationality : NPLanguage -> NP -> A -> NPNationality = \la,co,pro -> {
|
||||
lang = la ;
|
||||
country = co ;
|
||||
prop = pro
|
||||
} ;
|
||||
}
|
||||
10
testsuite/lpgf/phrasebook/SentencesNor.gf
Normal file
10
testsuite/lpgf/phrasebook/SentencesNor.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
concrete SentencesNor of Sentences = NumeralNor ** SentencesI - [NameNN] with
|
||||
(Syntax = SyntaxNor),
|
||||
(Symbolic = SymbolicNor),
|
||||
(Lexicon = LexiconNor) ** open SyntaxNor, (P = ParadigmsNor) in
|
||||
|
||||
{
|
||||
|
||||
lin NameNN = mkNP (P.mkPN "NN") ;
|
||||
|
||||
}
|
||||
8
testsuite/lpgf/phrasebook/SentencesPes.gf
Normal file
8
testsuite/lpgf/phrasebook/SentencesPes.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
concrete SentencesPes of Sentences = NumeralPes ** SentencesI - [sing,NNumeral,ObjPlural,MCan,MKnow,MMust,V2Wait,VWait] with
|
||||
(Syntax = SyntaxPes),
|
||||
(Symbolic = SymbolicPes),
|
||||
(Lexicon = LexiconPes) **
|
||||
{
|
||||
lin ObjPlural k = mkNP k ;
|
||||
};
|
||||
|
||||
52
testsuite/lpgf/phrasebook/SentencesPol.gf
Normal file
52
testsuite/lpgf/phrasebook/SentencesPol.gf
Normal file
@@ -0,0 +1,52 @@
|
||||
concrete SentencesPol of Sentences =
|
||||
NumeralPol ** SentencesI - [
|
||||
Day,PDay,OnDay,LAnguage,PLanguage,Citizenship,
|
||||
PCitizenship,CitiNat,PropCit,ACitizen,
|
||||
Nationality,Transport,PTransport,ByTransp,
|
||||
IFemale,YouFamFemale, YouPolFemale,YouPolMale,
|
||||
IMale, YouFamMale --- AR, for pro drop
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxPol),
|
||||
(Symbolic = SymbolicPol),
|
||||
(Lexicon = LexiconPol) **
|
||||
open (N = NounPol),(R = ResPol), (Pron = PronounMorphoPol), (E = ExtraPol), Prelude in {
|
||||
|
||||
flags
|
||||
optimize =values ; coding =utf8 ;
|
||||
|
||||
lincat
|
||||
Day = { name,hab,adv:Str } ;
|
||||
LAnguage = A ;
|
||||
Citizenship = { prop:A; citizenMSg:Str; citizenMPl:Str; citizenF:Str} ;
|
||||
Nationality = { lang: A; prop: A; country: NP; citizenMSg:Str; citizenMPl:Str; citizenF:Str } ;
|
||||
Transport = { cn:CN; verb:Str} ;
|
||||
|
||||
lin
|
||||
PDay d = (ss d.name) ** {lock_Text = <>};
|
||||
OnDay d = (ss d.adv) ** {lock_Adv = <>};
|
||||
PLanguage l = (ss l.pos.s1) ** {lock_Text = <>};
|
||||
PTransport t = mkPhrase (mkUtt t.cn) ;
|
||||
ByTransp t = { s=t.cn.s!R.Sg!R.Instr; lock_Adv = <>} ;
|
||||
PCitizenship c = mkPhrase (mkUtt (mkAP c.prop)) ;
|
||||
CitiNat n = {prop=n.prop; citizenMSg=n.citizenMSg; citizenMPl=n.citizenMPl; citizenF=n.citizenF};
|
||||
PropCit c = c.prop;
|
||||
ACitizen p n = mkCl p.name {s= case p.name.gn of {
|
||||
R.MascPersSg=>n.citizenMSg; R.FemSg=>n.citizenF; _=>n.citizenMPl
|
||||
};
|
||||
lock_Adv=<>};
|
||||
|
||||
--- AR 8/12/2010: using pro drop
|
||||
IMale = mkPerson (E.ProDrop Pron.pronJa);
|
||||
IFemale = mkPerson (E.ProDrop (Pron.pronJaFoo (R.PGen R.Fem)));
|
||||
YouFamMale = mkPerson (E.ProDrop (Pron.pronTy));
|
||||
YouFamFemale = mkPerson (E.ProDrop (Pron.pronTyFoo (R.PGen R.Fem)));
|
||||
-- YouPolFemale = mkPerson (E.ProDrop (Pron.pronPani));
|
||||
-- YouPolMale = mkPerson (E.ProDrop (Pron.pronPan));
|
||||
|
||||
--- original
|
||||
--- IFemale = mkPerson (Pron.pronJaFoo (R.PGen R.Fem));
|
||||
--- YouFamFemale = mkPerson (Pron.pronTyFoo (R.PGen R.Fem));
|
||||
YouPolFemale = mkPerson (Pron.pronPani);
|
||||
YouPolMale = mkPerson (Pron.pronPan);
|
||||
}
|
||||
71
testsuite/lpgf/phrasebook/SentencesRon.gf
Normal file
71
testsuite/lpgf/phrasebook/SentencesRon.gf
Normal file
@@ -0,0 +1,71 @@
|
||||
|
||||
concrete SentencesRon of Sentences = NumeralRon ** SentencesI - [
|
||||
IsMass,
|
||||
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
|
||||
ThePlace, Nationality, CitiNat, Citizenship, ACitizen, PCitizenship, PropCit
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxRon),
|
||||
(Symbolic = SymbolicRon),
|
||||
(Lexicon = LexiconRon) **
|
||||
open SyntaxRon, ExtraRon, (R = ResRon), (P = ParamX), (PR = ParadigmsRon) in {
|
||||
|
||||
oper
|
||||
NPNationalityRon : Type = {lang : NP ;
|
||||
country : NP ;
|
||||
propObj : A;
|
||||
propPers : R.Gender => P.Number => Str};
|
||||
CitizenshipRon : Type = {pers : R.Gender => P.Number => Str;
|
||||
prop : A};
|
||||
|
||||
|
||||
mkNPNationalityRon : NP -> NP -> A -> Str -> Str -> Str -> Str -> NPNationalityRon = \la,co,pro, s1,s2,s3,s4 ->
|
||||
{lang = la ;
|
||||
country = co ;
|
||||
propObj = pro ;
|
||||
propPers = mkCitiPers s1 s2 s3 s4
|
||||
} ;
|
||||
|
||||
mkCitizenshipRon : A -> Str -> Str -> Str -> Str -> CitizenshipRon = \aobj, ap1, ap2, ap3, ap4 -> {pers = mkCitiPers ap1 ap2 ap3 ap4; prop = aobj};
|
||||
|
||||
mkCitiPers : Str -> Str -> Str -> Str -> (R.Gender => P.Number => Str) = \francez, franceza, francezi, franceze ->
|
||||
table {R.Masc => table {P.Sg => francez;
|
||||
P.Pl => francezi};
|
||||
R.Fem => table {P.Sg => franceza;
|
||||
P.Pl => franceze}};
|
||||
|
||||
|
||||
lincat
|
||||
Nationality = NPNationalityRon ;
|
||||
Citizenship = CitizenshipRon ;
|
||||
|
||||
lin
|
||||
IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
|
||||
|
||||
IFemale = {name = mkNP i8fem_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamFemale = {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolFemale = {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||
IMale = {name = mkNP i_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamMale = {name = mkNP youSg_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolMale = {name = mkNP youPol_Pron ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
||||
ThePlace kind = let name : NP = mkNP the_Quant kind.name ;
|
||||
condAt : Bool = needIndefPlace kind.name kind.at ;
|
||||
condTo : Bool = needIndefPlace kind.name kind.to in {
|
||||
name = name ;
|
||||
at = if_then_else Adv condAt (mkAdv kind.at (mkNP the_Art kind.name)) (mkAdv kind.at name);
|
||||
to = if_then_else Adv condTo (mkAdv kind.at (mkNP the_Art kind.name)) (mkAdv kind.to name)
|
||||
} ;
|
||||
CitiNat n = {pers = n.propPers; prop = n.propObj} ;
|
||||
ACitizen p n = mkCl p.name (PR.mkAdv (n.pers ! (p.name.a.g) ! (p.name.a.n))) ;
|
||||
PCitizenship x = mkPhrase (mkUtt (mkAP x.prop)) ;
|
||||
PropCit p = p.prop ;
|
||||
|
||||
|
||||
oper needIndefPlace : CN -> Prep -> Bool = \cn,prep ->
|
||||
case <cn.isComp,prep.needIndef> of
|
||||
{<True,_> => True ;
|
||||
<False,True> => False ;
|
||||
_ => True
|
||||
};
|
||||
}
|
||||
|
||||
25
testsuite/lpgf/phrasebook/SentencesRus.gf
Normal file
25
testsuite/lpgf/phrasebook/SentencesRus.gf
Normal file
@@ -0,0 +1,25 @@
|
||||
concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [
|
||||
NameNN, SHave, SHaveNo, SHaveNoMass, QDoHave, AHaveCurr,
|
||||
IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale
|
||||
] with
|
||||
(Syntax = SyntaxRus),
|
||||
(Symbolic = SymbolicRus),
|
||||
(Lexicon = LexiconRus), (Grammar = GrammarRus) ** open Prelude, SyntaxRus, ExtraRus, (P = ParadigmsRus), (R = ResRus), (M = MorphoRus) in {
|
||||
lin
|
||||
SHave p obj = mkS (mkCl (mkVP have_V3 obj p.name)) ;
|
||||
SHaveNo p obj = mkS (mkCl (mkVP have_not_V3 (mkNP obj) p.name)) ;
|
||||
SHaveNoMass p obj = mkS (mkCl (mkVP have_not_V3 (mkNP obj) p.name)) ;
|
||||
QDoHave p obj = mkQS (mkQCl (mkCl (mkVP have_V3 obj p.name))) ;
|
||||
|
||||
AHaveCurr p curr = mkCl (mkVP have_V3 (mkNP aPl_Det curr) p.name) ;
|
||||
|
||||
lin
|
||||
NameNN = mkNP (P.mkN "NN") ;
|
||||
IMale = mkPerson (M.pronYa R.Masc) ;
|
||||
IFemale = mkPerson (M.pronYa R.Fem) ;
|
||||
YouFamMale = mkPerson (M.pronTu R.Masc) ;
|
||||
YouFamFemale = mkPerson (M.pronTu R.Fem) ;
|
||||
YouPolMale = mkPerson (M.pronVu R.Masc) ;
|
||||
YouPolFemale = mkPerson (M.pronVu R.Fem) ;
|
||||
|
||||
}
|
||||
38
testsuite/lpgf/phrasebook/SentencesSnd.gf
Normal file
38
testsuite/lpgf/phrasebook/SentencesSnd.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
concrete SentencesSnd of Sentences = NumeralSnd ** SentencesI - [sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale,VRead,VWrite] with
|
||||
(Syntax = SyntaxSnd),
|
||||
(Symbolic = SymbolicSnd),
|
||||
(Lexicon = LexiconSnd) **
|
||||
open
|
||||
(P=ParadigmsSnd),
|
||||
ParamX,
|
||||
CommonHindustani in {
|
||||
{-
|
||||
lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
|
||||
YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
|
||||
YouFamFemale = mkPerson (P.personalPN tum tum tum tyra tyry tyrE tyry Pl Fem Pers2_Familiar) ;
|
||||
YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
|
||||
YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
|
||||
YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
oper
|
||||
myN = "میں" ;
|
||||
mjh = "مجھ" ;
|
||||
myra = "میرا" ;
|
||||
myry = "میری" ;
|
||||
myrE = "میرے" ;
|
||||
tw = "تو" ;
|
||||
tum = "تم" ;
|
||||
tyra = "تیرا" ;
|
||||
tyry = "تیری" ;
|
||||
tyrE = "تیرے" ;
|
||||
tumhara = "تمھارا" ;
|
||||
tumhary = "تمھاری" ;
|
||||
tumharay = "تمھارے" ;
|
||||
ap = "آپ" ;
|
||||
apka = ["آپ كا"] ;
|
||||
apky = ["آپ كی"] ;
|
||||
apkE = ["آپ كے"] ;
|
||||
-}
|
||||
} ;
|
||||
104
testsuite/lpgf/phrasebook/SentencesSpa.gf
Normal file
104
testsuite/lpgf/phrasebook/SentencesSpa.gf
Normal file
@@ -0,0 +1,104 @@
|
||||
concrete SentencesSpa of Sentences = NumeralSpa ** SentencesI - [
|
||||
IsMass,
|
||||
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
|
||||
WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
|
||||
WherePlace, WherePerson, ABePlace,
|
||||
PImperativeFamNeg, PImperativePlurNeg, --negative imperatives in subjunctive
|
||||
Superlative
|
||||
]
|
||||
with
|
||||
(Syntax = SyntaxSpa),
|
||||
(Symbolic = SymbolicSpa),
|
||||
(Lexicon = LexiconSpa) **
|
||||
open ParadigmsSpa, BeschSpa, SyntaxSpa, ExtraSpa, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lincat
|
||||
Superlative = OrdSuperlative ; -- {ord: Ord ; isPre: Bool}
|
||||
|
||||
lin
|
||||
|
||||
IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
|
||||
|
||||
IFemale =
|
||||
{name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamFemale =
|
||||
{name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolFemale =
|
||||
{name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||
IMale =
|
||||
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||
YouFamMale =
|
||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||
YouPolMale =
|
||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
||||
He =
|
||||
{name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = mkQuant he_Pron} ;
|
||||
She =
|
||||
{name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = mkQuant she_Pron} ;
|
||||
WeMale =
|
||||
{name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
|
||||
WeFemale =
|
||||
{name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
|
||||
YouPlurFamMale =
|
||||
{name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
|
||||
YouPlurFamFemale =
|
||||
{name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
|
||||
YouPlurPolMale =
|
||||
{name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron} ;
|
||||
YouPlurPolFemale =
|
||||
{name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron};
|
||||
TheyMale =
|
||||
{name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
|
||||
TheyFemale =
|
||||
{name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
|
||||
|
||||
--IL 2012-10-12
|
||||
--Negative imperative is done with subjunctive.
|
||||
--PImperativePolNeg is fine in RGL, but fam and plur are wrong
|
||||
--A special ImpNeg in ExtraSpa is defined for that
|
||||
PImperativeFamNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youSg_Pron)) v) ;
|
||||
PImperativePlurNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPl_Pron)) v) ;
|
||||
|
||||
ABePlace p place = mkCl p.name (mkVP (mkVP estar) place.at) ;
|
||||
|
||||
WherePlace place = mkQS (mkQCl where_IAdv (mkCl place.name estar) ) ;
|
||||
|
||||
WherePerson person = mkQS (mkQCl where_IAdv (mkCl person.name estar) ) ;
|
||||
|
||||
oper
|
||||
|
||||
estar = mkV (estar_2 "estar") ;
|
||||
|
||||
CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ;
|
||||
|
||||
mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
|
||||
name = p ;
|
||||
at = i ;
|
||||
to = t ;
|
||||
} ;
|
||||
|
||||
OrdSuperlative : Type = {ord: Ord ; isPre: Bool} ;
|
||||
|
||||
placeNPSuperl : OrdSuperlative -> CNPlace -> NPPlace = \sup,kind -> case sup.isPre of {
|
||||
True => placeNPDet sup.ord kind ;
|
||||
False => placeNPAdj sup.ord kind
|
||||
} ;
|
||||
|
||||
-- "el mejor aeropuerto"
|
||||
placeNPDet : Ord -> CNPlace -> NPPlace = \ord,kind ->
|
||||
let name : NP = mkNP (mkDet the_Art ord) kind.name in {
|
||||
name = name ;
|
||||
at = SyntaxSpa.mkAdv kind.at name ;
|
||||
to = SyntaxSpa.mkAdv kind.to name ;
|
||||
};
|
||||
|
||||
-- "el aeropuerto más grande"
|
||||
placeNPAdj : Ord -> CNPlace -> NPPlace = \ord,kind ->
|
||||
let name : NP = mkNP the_Art (mkCN kind.name (mkAP ord)) in {
|
||||
name = name ;
|
||||
at = SyntaxSpa.mkAdv kind.at name ;
|
||||
to = SyntaxSpa.mkAdv kind.to name ;
|
||||
};
|
||||
}
|
||||
14
testsuite/lpgf/phrasebook/SentencesSwe.gf
Normal file
14
testsuite/lpgf/phrasebook/SentencesSwe.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete SentencesSwe of Sentences = NumeralSwe ** SentencesI - [
|
||||
PYesToNo, NameNN,
|
||||
DrinkNumber -- should be utrum gender when countable
|
||||
] with
|
||||
(Syntax = SyntaxSwe),
|
||||
(Symbolic = SymbolicSwe),
|
||||
(Lexicon = LexiconSwe) ** open Prelude, SyntaxSwe, (P = ParadigmsSwe) in {
|
||||
|
||||
lin
|
||||
PYesToNo = mkPhrase (lin Utt (ss "jo")) ;
|
||||
NameNN = mkNP (P.mkPN "NN") ;
|
||||
DrinkNumber n d = mkNP n (mkCN (P.mkN [] [] [] [] P.utrum) (lin Adv (mkUtt d))) ; --- empty classifier - quite a hack...
|
||||
|
||||
}
|
||||
26
testsuite/lpgf/phrasebook/SentencesTha.gf
Normal file
26
testsuite/lpgf/phrasebook/SentencesTha.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
concrete SentencesTha of Sentences = NumeralTha ** SentencesI - [
|
||||
PGreetingMale, PGreetingFemale,
|
||||
GObjectPlease,
|
||||
IMale, YouFamMale, YouFamFemale,
|
||||
ACitizen
|
||||
] with
|
||||
(Syntax = SyntaxTha),
|
||||
(Symbolic = SymbolicTha),
|
||||
(Lexicon = LexiconTha) ** open SyntaxTha, (P = ParadigmsTha), (R = ResTha) in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
lin
|
||||
PGreetingMale g = mkText (lin Text g) (lin Text (ss "ครับ")) | g ;
|
||||
PGreetingFemale g = mkText (lin Text g) (lin Text (ss "ค่ะ")) | g ;
|
||||
|
||||
GObjectPlease o =
|
||||
lin Text (mkPhr (lin PConj (ss "ขอ")) (mkUtt o) (lin Voc (ss "หน่อย"))) | lin Text (mkUtt o) ;
|
||||
|
||||
ACitizen p n = mkCl p.name (mkVP (mkCN n (P.personN R.khon_s))) ;
|
||||
|
||||
IMale = mkPerson (R.mkNP "ผม") ;
|
||||
YouFamMale, YouFamFemale = mkPerson (R.mkNP "เธอ") ;
|
||||
|
||||
oper
|
||||
thpron = R.thpron ;
|
||||
}
|
||||
36
testsuite/lpgf/phrasebook/SentencesUrd.gf
Normal file
36
testsuite/lpgf/phrasebook/SentencesUrd.gf
Normal file
@@ -0,0 +1,36 @@
|
||||
concrete SentencesUrd of Sentences = NumeralUrd ** SentencesI - [sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale] with
|
||||
(Syntax = SyntaxUrd),
|
||||
(Symbolic = SymbolicUrd),
|
||||
(Lexicon = LexiconUrd) **
|
||||
open
|
||||
(P=ParadigmsUrd),
|
||||
ParamX,
|
||||
CommonHindustani in {
|
||||
lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
|
||||
YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
|
||||
YouFamFemale = mkPerson (P.personalPN tum tum tum tyra tyry tyrE tyry Pl Fem Pers2_Familiar) ;
|
||||
YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
|
||||
YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
|
||||
YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
oper
|
||||
myN = "میں" ;
|
||||
mjh = "مجھ" ;
|
||||
myra = "میرا" ;
|
||||
myry = "میری" ;
|
||||
myrE = "میرے" ;
|
||||
tw = "تو" ;
|
||||
tum = "تم" ;
|
||||
tyra = "تیرا" ;
|
||||
tyry = "تیری" ;
|
||||
tyrE = "تیرے" ;
|
||||
tumhara = "تمھارا" ;
|
||||
tumhary = "تمھاری" ;
|
||||
tumharay = "تمھارے" ;
|
||||
ap = "آپ" ;
|
||||
apka = ["آپ كا"] ;
|
||||
apky = ["آپ كی"] ;
|
||||
apkE = ["آپ كے"] ;
|
||||
} ;
|
||||
254
testsuite/lpgf/phrasebook/Words.gf
Normal file
254
testsuite/lpgf/phrasebook/Words.gf
Normal file
@@ -0,0 +1,254 @@
|
||||
--2 Words and idiomatic phrases of the Phrasebook
|
||||
|
||||
|
||||
-- (c) 2010 Aarne Ranta under LGPL --%
|
||||
|
||||
abstract Words = Sentences ** {
|
||||
|
||||
fun
|
||||
|
||||
-- kinds of items (so far mostly food stuff)
|
||||
|
||||
Apple : Kind ;
|
||||
Beer : DrinkKind ;
|
||||
Bread : MassKind ;
|
||||
Cheese : MassKind ;
|
||||
Chicken : MassKind ;
|
||||
Coffee : DrinkKind ;
|
||||
Fish : MassKind ;
|
||||
Meat : MassKind ;
|
||||
Milk : MassKind ;
|
||||
Pizza : Kind ;
|
||||
Salt : MassKind ;
|
||||
Tea : DrinkKind ;
|
||||
Water : DrinkKind ;
|
||||
Wine : DrinkKind ;
|
||||
|
||||
-- properties of kinds (so far mostly of food)
|
||||
|
||||
Bad : Property ;
|
||||
Boring : Property ;
|
||||
Cheap : Property ;
|
||||
Cold : Property ;
|
||||
Delicious : Property ;
|
||||
Expensive : Property ;
|
||||
Fresh : Property ;
|
||||
Good : Property ;
|
||||
Suspect : Property ;
|
||||
Warm : Property ;
|
||||
|
||||
-- kinds of places
|
||||
|
||||
Airport : PlaceKind ;
|
||||
AmusementPark : PlaceKind ;
|
||||
Bank : PlaceKind ;
|
||||
Bar : PlaceKind ;
|
||||
Cafeteria : PlaceKind ;
|
||||
Center : PlaceKind ;
|
||||
Cinema : PlaceKind ;
|
||||
Church : PlaceKind ;
|
||||
Disco : PlaceKind ;
|
||||
Hospital : PlaceKind ;
|
||||
Hotel : PlaceKind ;
|
||||
Museum : PlaceKind ;
|
||||
Park : PlaceKind ;
|
||||
Parking : PlaceKind ;
|
||||
Pharmacy : PlaceKind ;
|
||||
PostOffice : PlaceKind ;
|
||||
Pub : PlaceKind ;
|
||||
Restaurant : PlaceKind ;
|
||||
School : PlaceKind ;
|
||||
Shop : PlaceKind ;
|
||||
Station : PlaceKind ;
|
||||
Supermarket : PlaceKind ;
|
||||
Theatre : PlaceKind ;
|
||||
Toilet : PlaceKind ;
|
||||
University : PlaceKind ;
|
||||
Zoo : PlaceKind ;
|
||||
|
||||
CitRestaurant : Citizenship -> PlaceKind ;
|
||||
|
||||
-- currency units
|
||||
|
||||
DanishCrown : Currency ;
|
||||
Dollar : Currency ;
|
||||
Euro : Currency ; -- Germany, France, Italy, Finland, Spain, The Netherlands
|
||||
Lei : Currency ; -- Romania
|
||||
Leva : Currency ; -- Bulgaria
|
||||
NorwegianCrown : Currency ;
|
||||
Pound : Currency ; -- UK
|
||||
Rouble : Currency ; -- Russia
|
||||
Rupee : Currency ; -- India
|
||||
SwedishCrown : Currency ;
|
||||
Zloty : Currency ; -- Poland
|
||||
Yuan : Currency ; -- China
|
||||
|
||||
|
||||
-- nationalities, countries, languages, citizenships
|
||||
|
||||
Belgian : Citizenship ;
|
||||
Belgium : Country ;
|
||||
Bulgarian : Nationality ;
|
||||
Catalan : Nationality ;
|
||||
Chinese : Nationality ;
|
||||
Danish : Nationality ;
|
||||
Dutch : Nationality ;
|
||||
English : Nationality ;
|
||||
Finnish : Nationality ;
|
||||
Flemish : LAnguage ;
|
||||
French : Nationality ;
|
||||
German : Nationality ;
|
||||
Hindi : LAnguage ;
|
||||
India : Country ;
|
||||
Indian : Citizenship ;
|
||||
Italian : Nationality ;
|
||||
Norwegian : Nationality ;
|
||||
Polish : Nationality ;
|
||||
Romanian : Nationality ;
|
||||
Russian : Nationality ;
|
||||
Spanish : Nationality ;
|
||||
Swedish : Nationality ;
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike : Transport ;
|
||||
Bus : Transport ;
|
||||
Car : Transport ;
|
||||
Ferry : Transport ;
|
||||
Plane : Transport ;
|
||||
Subway : Transport ;
|
||||
Taxi : Transport ;
|
||||
Train : Transport ;
|
||||
Tram : Transport ;
|
||||
|
||||
ByFoot : ByTransport ;
|
||||
|
||||
|
||||
-- Actions (which can be expressed by different structures in different languages).
|
||||
-- Notice that also negations and questions can be formed from these.
|
||||
|
||||
AHasAge : Person -> Number -> Action ; -- I am seventy years
|
||||
AHasChildren: Person -> Number -> Action ; -- I have six children
|
||||
AHasName : Person -> Name -> Action ; -- my name is Bond
|
||||
AHasRoom : Person -> Number -> Action ; -- you have a room for five persons
|
||||
AHasTable : Person -> Number -> Action ; -- you have a table for five persons
|
||||
AHungry : Person -> Action ; -- I am hungry
|
||||
AIll : Person -> Action ; -- I am ill
|
||||
AKnow : Person -> Action ; -- I (don't) know
|
||||
ALike : Person -> Item -> Action ; -- I like this pizza
|
||||
ALive : Person -> Country -> Action ; -- I live in Sweden
|
||||
ALove : Person -> Person -> Action ; -- I love you
|
||||
AMarried : Person -> Action ; -- I am married
|
||||
AReady : Person -> Action ; -- I am ready
|
||||
AScared : Person -> Action ; -- I am scared
|
||||
ASpeak : Person -> LAnguage -> Action ; -- I speak Finnish
|
||||
AThirsty : Person -> Action ; -- I am thirsty
|
||||
ATired : Person -> Action ; -- I am tired
|
||||
AUnderstand : Person -> Action ; -- I (don't) understand
|
||||
AWant : Person -> Object -> Action ; -- I want two apples
|
||||
AWantGo : Person -> Place -> Action ; -- I want to go to the hospital
|
||||
|
||||
-- Miscellaneous phrases. Notice that also negations and questions can be formed from
|
||||
-- propositions.
|
||||
|
||||
QWhatAge : Person -> Question ; -- how old are you
|
||||
QWhatName : Person -> Question ; -- what is your name
|
||||
HowMuchCost : Item -> Question ; -- how much does the pizza cost
|
||||
ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
|
||||
|
||||
PropOpen : Place -> Proposition ; -- the museum is open
|
||||
PropClosed : Place -> Proposition ; -- the museum is closed
|
||||
PropOpenDate : Place -> Date -> Proposition ; -- the museum is open today
|
||||
PropClosedDate : Place -> Date -> Proposition ; -- the museum is closed today
|
||||
PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
|
||||
PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
|
||||
|
||||
PSeeYouPlaceDate : Place -> Date -> Greeting ; -- see you in the bar on Monday
|
||||
PSeeYouPlace : Place -> Greeting ; -- see you in the bar
|
||||
PSeeYouDate : Date -> Greeting ; -- see you on Monday
|
||||
|
||||
-- family relations
|
||||
|
||||
Wife, Husband : Person -> Person ; -- my wife, your husband
|
||||
Son, Daughter : Person -> Person ; -- my son, your husband
|
||||
Children : Person -> Person ; -- my children
|
||||
|
||||
-- week days
|
||||
|
||||
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
|
||||
|
||||
Tomorrow : Date ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar : Place -> Question ; -- how far is the zoo ?
|
||||
HowFarFrom : Place -> Place -> Question ; -- how far is the center from the hotel ?
|
||||
HowFarFromBy : Place -> Place -> ByTransport -> Question ;
|
||||
-- how far is the airport from the hotel by taxi ?
|
||||
HowFarBy : Place -> ByTransport -> Question ; -- how far is the museum by bus ?
|
||||
|
||||
WhichTranspPlace : Transport -> Place -> Question ; -- which bus goes to the hotel
|
||||
IsTranspPlace : Transport -> Place -> Question ; -- is there a metro to the airport ?
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest : Superlative ;
|
||||
TheClosest : Superlative ;
|
||||
TheCheapest : Superlative ;
|
||||
TheMostExpensive : Superlative ;
|
||||
TheMostPopular : Superlative ;
|
||||
TheWorst : Superlative ;
|
||||
|
||||
SuperlPlace : Superlative -> PlaceKind -> Place ; -- the best bar
|
||||
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
{- 28/8/2012 still only available in Bul Eng Fin Swe Tha
|
||||
|
||||
fun
|
||||
Thai : Nationality ;
|
||||
Baht : Currency ; -- Thailand
|
||||
|
||||
Rice : MassKind ;
|
||||
Pork : MassKind ;
|
||||
Beef : MassKind ;
|
||||
Noodles : PlurKind ;
|
||||
Shrimps : PlurKind ;
|
||||
|
||||
Chili : MassKind ;
|
||||
Garlic : MassKind ;
|
||||
|
||||
Durian : Kind ;
|
||||
Mango : Kind ;
|
||||
Pineapple : Kind ;
|
||||
Egg : Kind ;
|
||||
|
||||
Coke : DrinkKind ;
|
||||
IceCream : DrinkKind ; --- both mass and plural
|
||||
OrangeJuice : DrinkKind ;
|
||||
Lemonade : DrinkKind ;
|
||||
Salad : DrinkKind ;
|
||||
|
||||
Beach : PlaceKind ;
|
||||
|
||||
ItsRaining : Proposition ;
|
||||
ItsWindy : Proposition ;
|
||||
ItsWarm : Proposition ;
|
||||
ItsCold : Proposition ;
|
||||
SunShine : Proposition ;
|
||||
|
||||
Smoke : VerbPhrase ;
|
||||
|
||||
ADoctor : Person -> Action ;
|
||||
AProfessor : Person -> Action ;
|
||||
ALawyer : Person -> Action ;
|
||||
AEngineer : Person -> Action ;
|
||||
ATeacher : Person -> Action ;
|
||||
ACook : Person -> Action ;
|
||||
AStudent : Person -> Action ;
|
||||
ABusinessman : Person -> Action ;
|
||||
-}
|
||||
|
||||
}
|
||||
305
testsuite/lpgf/phrasebook/WordsBul.gf
Normal file
305
testsuite/lpgf/phrasebook/WordsBul.gf
Normal file
@@ -0,0 +1,305 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
concrete WordsBul of Words = SentencesBul **
|
||||
open
|
||||
SyntaxBul,
|
||||
(R = ResBul),
|
||||
ParadigmsBul,
|
||||
(L = LexiconBul),
|
||||
(P = ParadigmsBul),
|
||||
ExtraBul,
|
||||
MorphoFunsBul,
|
||||
Prelude in {
|
||||
|
||||
flags
|
||||
coding=utf8;
|
||||
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN066 "сирене") ;
|
||||
Chicken = mkCN (mkN065 "пиле") ;
|
||||
Coffee = mkCN (mkN065 "кафе") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN054 "месо") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN041 "пица") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN028 "чай") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA079 "еднообразен" ;
|
||||
Cheap = mkA076 "евтин" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA079 "превъзходен" ;
|
||||
Expensive = mkA076 "скъп" ;
|
||||
Fresh = mkA076 "свеж" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA079 "подозрителен" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace (mkN066 "летище") na_Prep ;
|
||||
AmusementPark = mkCompoundPlace (mkA079 "увеселителен") (mkN001 "парк") in_Prep ;
|
||||
Bank = mkPlace (mkN041 "банка") in_Prep ;
|
||||
Bar = mkPlace (mkN001 "бар") in_Prep ;
|
||||
Cafeteria = mkPlace (mkN065 "кафе") in_Prep ;
|
||||
Center = mkPlace (mkN009a "център") in_Prep ;
|
||||
Cinema = mkPlace (mkN054 "кино") na_Prep ;
|
||||
Church = mkPlace (mkN041 "църква") in_Prep ;
|
||||
Disco = mkPlace (mkN041 "дискотека") in_Prep ;
|
||||
Hospital = mkPlace (mkN041 "болница") in_Prep ;
|
||||
Hotel = mkPlace (mkN007 "хотел") in_Prep ;
|
||||
Museum = mkPlace (mkN032 "музей") in_Prep ;
|
||||
Park = mkPlace (mkN001 "парк") in_Prep ;
|
||||
Parking = mkPlace (mkN007 "паркинг") na_Prep ;
|
||||
Pharmacy = mkPlace (mkN041 "аптека") in_Prep ;
|
||||
PostOffice = mkPlace (mkN041 "поща") in_Prep ;
|
||||
Pub = mkPlace (mkN001 "бар") in_Prep ;
|
||||
Restaurant = mkPlace (mkN007 "ресторант") in_Prep ;
|
||||
School = mkPlace (mkN007 "училище") in_Prep ;
|
||||
Shop = mkPlace (mkN007 "магазин") in_Prep ;
|
||||
Station = mkPlace (mkN041 "гара") na_Prep ;
|
||||
Supermarket = mkPlace (mkN007 "супермаркет") in_Prep ;
|
||||
Theatre = mkPlace (mkN009 "театър") na_Prep ;
|
||||
Toilet = mkPlace (mkN041 "тоалетна") in_Prep ;
|
||||
University = mkPlace (mkN007 "университет") in_Prep ;
|
||||
Zoo = mkPlace (mkN001 "зоопарк") in_Prep ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit.s2 (mkN007 "ресторант")) in_Prep to_Prep ;
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA078 "датски") (mkN041 "крона") | mkCN (mkN041 "крона") ;
|
||||
Dollar = mkCN (mkN007 "долар") ;
|
||||
Euro = mkCN (mkN054 "евро") ;
|
||||
Lei = mkCN (mkN047 "лея") ;
|
||||
Leva = mkCN (mkN001 "лев") ;
|
||||
NorwegianCrown = mkCN (mkA078 "норвежки") (mkN041 "крона") | mkCN (mkN041 "крона") ;
|
||||
Pound = mkCN (mkN007 "паунд") ;
|
||||
Rouble = mkCN (mkN041 "рубла") ;
|
||||
SwedishCrown = mkCN (mkA078 "шведски") (mkN041 "крона") | mkCN (mkN041 "крона") ;
|
||||
Zloty = mkCN (mkN041 "злота") ;
|
||||
Baht = mkCN (mkN007a "бат") ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkCitizenship (mkN013 "белгиец") (mkN041 "белгийка") (mkA078 "белгийски") ;
|
||||
Belgium = mkPN "Белгия" R.Fem ;
|
||||
Bulgarian = mkNat (mkN018 "българин") (mkN041 "българка") (mkA078 "български") (mkPN "България" R.Fem) ;
|
||||
Catalan = mkNat (mkN008a "каталонец") (mkN041 "каталонка") (mkA078 "каталонски") (mkPN "Каталуния" R.Fem) ;
|
||||
Danish = mkNat (mkN018 "датчанин") (mkN041 "датчанка") (mkA078 "датски") (mkPN "Дания" R.Fem) ;
|
||||
Dutch = mkNat (mkN008a "холандец") (mkN041 "холандка") (mkA078 "холандски") (mkPN "Холандия" R.Fem) ;
|
||||
English = mkNat (mkN018 "англичанин") (mkN041 "англичанка") (mkA078 "английски") (mkPN "Англия" R.Fem) ;
|
||||
Finnish = mkNat (mkN008a "финландец") (mkN041 "финландка") (mkA078 "финландски") (mkPN "Финландия" R.Fem) ;
|
||||
Flemish = mkA078 "фламандски" ;
|
||||
French = mkNat (mkN018 "французин") (mkN041 "французойка") (mkA078 "френски") (mkPN "Франция" R.Fem) ;
|
||||
German = mkNat (mkN008a "германец") (mkN041 "германка") (mkA078 "немски") (mkPN "Германия" R.Fem) ;
|
||||
Italian = mkNat (mkN008a "италианец") (mkN041 "италианка") (mkA078 "италиански") (mkPN "Италия" R.Fem) ;
|
||||
Norwegian = mkNat (mkN008a "норвежец") (mkN041 "норвежка") (mkA078 "норвежки") (mkPN "Норвегия" R.Fem) ;
|
||||
Polish = mkNat (mkN014 "поляк") (mkN047 "полякиня") (mkA078 "полски") (mkPN "Полша" R.Fem) ;
|
||||
Romanian = mkNat (mkN008a "румънец") (mkN041 "румънка") (mkA078 "румънски") (mkPN "Румъния" R.Fem) ;
|
||||
Russian = mkNat (mkN014 "руснак") (mkN047 "рускиня") (mkA078 "руски") (mkPN "Русия" R.Fem) ;
|
||||
Swedish = mkNat (mkN007 "швед") (mkN041 "шведка") (mkA078 "шведски") (mkPN "Швеция" R.Fem) ;
|
||||
Spanish = mkNat (mkN008a "испанец") (mkN041 "испанка") (mkA078 "испански") (mkPN "Испания" R.Fem) ;
|
||||
Thai = mkNat (mkN008a "тайландец") (mkN041 "тайландка") (mkA078 "тайландски") (mkPN "Тайланд" R.Masc) ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN007 "автобус") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN007 "ферибот") ;
|
||||
Plane = mkTransport (mkN007 "самолет") ;
|
||||
Subway = mkTransport (mkN054 "метро") ;
|
||||
Taxi = mkTransport (mkN073 "такси") ;
|
||||
Train = mkTransport (mkN001 "влак") ;
|
||||
Tram = mkTransport (mkN032 "трамвай") ;
|
||||
|
||||
ByFoot = P.mkAdv "пеша" ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
AHasAge p num = mkCl p.name (SyntaxBul.mkAdv na_Prep (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 (mkN047 "стая")) (SyntaxBul.mkAdv (mkPrep "за" R.Acc) (mkNP num (mkN014 "човек")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2 (mkNP (mkNP a_Det (mkN041 "маса")) (SyntaxBul.mkAdv (mkPrep "за" R.Acc) (mkNP num (mkN014 "човек")))) ;
|
||||
AHasName p name = mkCl p.name (dirV2 (medialV (actionV (mkV186 "казвам") (mkV156 "кажа")) R.Acc)) name ;
|
||||
AHungry p = mkCl p.name (mkA079 "гладен") ;
|
||||
AIll p = mkCl p.name (mkA079 "болен") ;
|
||||
AKnow p = mkCl p.name (actionV (mkV186 "знам") (mkV162 "зная")) ;
|
||||
ALike p item = mkCl p.name (dirV2 (actionV (mkV186 "харесвам") (mkV186 "харесам"))) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (stateV (mkV160 "живея"))) (SyntaxBul.mkAdv in_Prep (mkNP co))) ;
|
||||
ALove p q = mkCl p.name (dirV2 (actionV (mkV186 "обичам") (mkV152 "обикна"))) q.name ;
|
||||
AMarried p = mkCl p.name (mkA076 (case p.name.gn of {
|
||||
R.GSg R.Fem => "омъжен" ;
|
||||
_ => "женен"
|
||||
})) ;
|
||||
AReady p = mkCl p.name (mkA076 "готов") ;
|
||||
AScared p = mkCl p.name (mkA076 "уплашен") ;
|
||||
ASpeak p lang = mkCl p.name (dirV2 (stateV (mkV173 "говоря"))) (mkNP (substantiveN lang (R.AMasc R.NonHuman))) ;
|
||||
AThirsty p = mkCl p.name (mkA079 "жаден") ;
|
||||
ATired p = mkCl p.name (mkA076 "уморен") ;
|
||||
AUnderstand p = mkCl p.name (actionV (mkV186 "разбирам") (mkV170 "разбера")) ;
|
||||
AWant p obj = mkCl p.name (dirV2 (stateV (mkV186 "искам"))) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (actionV (mkV186 "отивам") (mkV146 "отида"))) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (medialV (actionV (mkV186 "казвам") (mkV156 "кажа")) R.Acc))) ;
|
||||
QWhatAge p = mkQS (mkQCl (MorphoFunsBul.mkIAdv "на колко") (mkCl p.name (mkNP a_Quant plNum L.year_N))) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (stateV (mkV186 "струвам")))) ;
|
||||
ItCost item price = mkCl item (dirV2 (stateV (mkV186 "струвам"))) price ;
|
||||
|
||||
PropOpen p = mkCl p.name open_AP ;
|
||||
PropClosed p = mkCl p.name closed_AP ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP open_AP) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_AP) d) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_AP) d.habitual) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_AP) d.habitual) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("ще се видим"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("ще се видим"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("ще се видим")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN041 "съпруга") ;
|
||||
Husband = xOf sing (mkN015 "съпруг") ;
|
||||
Son = xOf sing (mkN018 "син") ;
|
||||
Daughter = xOf sing (mkN047 "дъщеря") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay (mkN014 "понеделник") ;
|
||||
Tuesday = mkDay (mkN014 "вторник") ;
|
||||
Wednesday = mkDay (mkN043 "сряда") ;
|
||||
Thursday = mkDay (mkN014 "четвъртък") ;
|
||||
Friday = mkDay (mkN014 "петък") ;
|
||||
Saturday = mkDay (mkN041 "събота") ;
|
||||
Sunday = mkDay (mkN047 "неделя") ;
|
||||
|
||||
Tomorrow = P.mkAdv "утре" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA076 "евтин") ;
|
||||
TheMostExpensive = mkSuperl (mkA076 "скъп") ;
|
||||
TheMostPopular = mkSuperl (mkA079 "известен") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxBul.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxBul.mkAdv from_Prep x.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
Rice = mkCN (mkN040a "ориз") ;
|
||||
Pork = mkCN (mkN054 "свинско") ;
|
||||
Beef = mkCN (mkN054 "телешко") ;
|
||||
Egg = mkCN (mkN066 "яйце") ;
|
||||
Noodles = mkCN (mkN075 "спагети") ;
|
||||
Shrimps = mkCN (mkN041 "скарида") ;
|
||||
Chili = mkCN (mkN065 "чили") ;
|
||||
Garlic = mkCN (mkN007 "чесън") ;
|
||||
Durian = mkCN (mkN007 "дуриан") ;
|
||||
Mango = mkCN (mkN065 "манго") ;
|
||||
Pineapple = mkCN (mkN007 "ананас") ;
|
||||
Coke = mkCN (mkN041 "кола") ;
|
||||
IceCream = mkCN (mkN007 "сладолед") ;
|
||||
Salad = mkCN (mkN041 "салата") ;
|
||||
OrangeJuice = mkCN (mkA076 "портокалов") (mkN001 "сок") ;
|
||||
Lemonade = mkCN (mkN041 "лимонада") ;
|
||||
|
||||
Beach = mkPlace (mkN001 "плаж") na_Prep ;
|
||||
|
||||
ItsRaining = mkCl (mkVP (stateV (mkV174 "валя"))) ;
|
||||
ItsCold = mkCl (mkVP (mkA076 "студен")) ;
|
||||
ItsWarm = mkCl (mkVP (mkA080 "топъл")) ;
|
||||
ItsWindy = mkCl (mkVP (mkA076 "ветровит")) ;
|
||||
SunShine = mkCl (progressiveVP (mkVP (actionV (mkV186 "пеквам") (mkV148 "пека")))) ;
|
||||
|
||||
Smoke = mkVP (stateV (mkV176 "пуша")) ;
|
||||
|
||||
ADoctor = mkProfession (mkN007a "доктор") ;
|
||||
AProfessor = mkProfession (mkN007a "професор") ;
|
||||
ALawyer = mkProfession (mkN007a "адвокат") ;
|
||||
AEngineer = mkProfession (mkN007a "инженер") ;
|
||||
ATeacher = mkProfession (mkN031a "учител") ;
|
||||
ACook = mkProfession (mkN007b "готвач") ;
|
||||
AStudent = mkProfession (mkN007a "студент") ;
|
||||
ABusinessman = mkProfession (mkN007a "бизнесмен") ;
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
|
||||
mkCitizenship : N -> N -> A -> Citizenship
|
||||
= \male, female, adj -> lin Citizenship {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj} ;
|
||||
|
||||
mkNat : N -> N -> A -> PN -> Nationality
|
||||
= \male, female, adj, country -> lin Nationality {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj; s3 = country} ;
|
||||
|
||||
mkDay : N -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day : NP = mkNP d ;
|
||||
in mkNPDay day
|
||||
(SyntaxBul.mkAdv in_Prep day)
|
||||
(SyntaxBul.mkAdv in_Prep (mkNP the_Quant plNum (mkCN d))) ;
|
||||
|
||||
mkCompoundPlace : A -> N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \a, n, p ->
|
||||
mkCNPlace (mkCN a n) p to_Prep ;
|
||||
|
||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n,p ->
|
||||
mkCNPlace (mkCN n) p to_Prep ;
|
||||
|
||||
open_AP = mkAP (mkA076 "отворен") ;
|
||||
closed_AP = mkAP (mkA076 "затворен") ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxBul.mkAdv (mkPrep "" R.Dat) b)) p ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxBul.mkAdv with_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxBul.mkDet the_Art (SyntaxBul.mkOrd a) ;
|
||||
|
||||
far_IAdv = ExtraBul.IAdvAdv (ss "далече") ;
|
||||
|
||||
na_Prep = mkPrep "на" R.Acc ;
|
||||
|
||||
}
|
||||
302
testsuite/lpgf/phrasebook/WordsCat.gf
Normal file
302
testsuite/lpgf/phrasebook/WordsCat.gf
Normal file
@@ -0,0 +1,302 @@
|
||||
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsCat of Words = SentencesCat ** open
|
||||
SyntaxCat,
|
||||
BeschCat,
|
||||
(E = ExtraCat),
|
||||
(L = LexiconCat),
|
||||
(P = ParadigmsCat),
|
||||
(S = SyntaxCat),
|
||||
ParadigmsCat,
|
||||
Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "formatge") ;
|
||||
Chicken = mkCN (mkN "pollastre") ;
|
||||
Coffee = mkCN (mkN "cafè") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "carn" feminine) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "te") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "avorrit" ;
|
||||
Cheap = cheap_A ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "deliciós" ;
|
||||
Expensive = expensive_A ;
|
||||
Fresh = mkA "fresc" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "sospitós" ;
|
||||
Warm = mkA "calent" ;
|
||||
|
||||
-- places
|
||||
|
||||
lin
|
||||
Airport = mkPlace (mkN "aeroport") ;
|
||||
AmusementPark = mkPlace (mkN "parc d' atraccions") ;
|
||||
Bank = mkPlace (mkN "banc") ;
|
||||
Bar = mkPlace (mkN "bar") ;
|
||||
Cafeteria = mkPlace (mkN "cafeteria") ;
|
||||
Center = mkPlace (mkN "centre") ;
|
||||
Cinema = mkPlace (mkN "cinema" masculine) ;
|
||||
Church = mkPlace (mkN "església") ;
|
||||
Disco = mkPlace (mkN "discoteca") ;
|
||||
Hospital = mkPlace (mkN "hospital") ;
|
||||
Hotel = mkPlace (mkN "hotel") ;
|
||||
Museum = mkPlace (mkN "museu") ;
|
||||
Park = mkPlace (mkN "parc") ;
|
||||
Parking = mkPlace (mkN "aparcament" masculine) ;
|
||||
Pharmacy = mkPlace (mkN "farmàcia") ;
|
||||
PostOffice = mkPlace (mkN "oficina de correus" feminine) ;
|
||||
Pub = mkPlace (mkN "pub" masculine) ;
|
||||
Restaurant = mkPlace (mkN "restaurant") ;
|
||||
School = mkPlace (mkN "escola") ;
|
||||
Shop = mkPlace (mkN "tenda") ;
|
||||
Station = mkPlace (mkN "estació" feminine) ;
|
||||
Supermarket = mkPlace (mkN "supermercat" masculine) ;
|
||||
Theatre = mkPlace (mkN "teatre") ;
|
||||
Toilet = mkPlace (mkN "lavabo") ;
|
||||
University = mkPlace (mkN "universitat" feminine) ;
|
||||
Zoo = mkPlace (mkN "zoo" masculine) ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) dative dative ;
|
||||
|
||||
-- currencies
|
||||
oper corona : A -> CN = \adj ->
|
||||
let corona_N = (mkN "corona")
|
||||
in mkCN adj corona_N | mkCN corona_N ;
|
||||
lin
|
||||
DanishCrown = corona (mkA "danès" "danesa" "danesos" "daneses" "a la danesa") ;
|
||||
Dollar = mkCN (mkN "dòlar") ;
|
||||
Euro = mkCN (mkN "euro" masculine) ;
|
||||
Lei = mkCN (mkN "leu" "lei" masculine) ;
|
||||
Leva = mkCN (mkN "lev" "lev" masculine) ;
|
||||
NorwegianCrown = corona (mkA "noruec" "noruega" "noruecs" "noruegues" "a la noruega") ;
|
||||
Pound = mkCN (mkN "lliura") ;
|
||||
Rouble = mkCN (mkN "ruble") ;
|
||||
SwedishCrown = corona (mkA "suec" "sueca" "suecs" "sueques" "a la sueca") ;
|
||||
Zloty = mkCN (mkN "zloty" "zloty" masculine) ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belga" "belga" "belgues" "belgues" "a la Belga" ;
|
||||
Belgium = mkNP (mkPN "Bèlgica") ;
|
||||
Bulgarian = mkNat3 "búlgar" "búlgara" "búlgars" "búlgueres" "Bulgària" ;
|
||||
Catalan = mkNat5 "catal" "Catalunya" ;
|
||||
Danish = mkNat4 "dan" "Dinamarca" ;
|
||||
Dutch = mkNat4 "holand" "Holanda" ;
|
||||
English = mkNat4 "angl" "Anglaterra" ;
|
||||
Finnish = mkNat4 "fin" "Finlàndia" ;
|
||||
Flemish = mkNP (mkPN "flamenc") ;
|
||||
French = mkNat4 "franc" "França" ;
|
||||
German = mkNat3 "alemany" "alemanya" "alemanys" "alemanyes" "Alemania" ;
|
||||
Italian = mkNat5 "itali" "Itàlia" ;
|
||||
Norwegian = mkNat3 "noruec" "noruega" "noruecs" "noruegues" "Noruega" ;
|
||||
Polish = mkNat4 "polon" "Polònia" ;
|
||||
Romanian = mkNat4 "roman" "Romania" ;
|
||||
Russian = mkNat3 "rus" "russa" "russos" "russes" "Rússia" ;
|
||||
Spanish = mkNat3 "espanyol" "espanyola" "espanyols" "espanyoles" "Espanya" ;
|
||||
Swedish = mkNat3 "suec" "sueca" "suecs" "sueques" "Suècia" ;
|
||||
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport (mkN "bici" feminine) ;
|
||||
Bus = mkTransport (mkN "autobús" "autobusos" masculine) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "ferri" masculine) ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "metro") ;
|
||||
Taxi = mkTransport (mkN "taxi" masculine) ;
|
||||
Train = mkTransport (mkN "tren" masculine) ;
|
||||
Tram = mkTransport (mkN "tramvia" masculine) ;
|
||||
|
||||
ByFoot = P.mkAdv "a peu" ;
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||
AHasChildren p num = mkCl p.name have_V2 (mkNP num (mkN "fill" masculine)) ;
|
||||
AHasName p name =
|
||||
let dir = mkV (dir_41 "dir")
|
||||
in mkCl p.name (mkV2 (reflV dir)) name ;
|
||||
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")))) ;
|
||||
AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "gana" feminine))) ;
|
||||
AIll p = mkCl p.name stateCopula (mkAP (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 stateCopula (mkAP (mkA "casat")) ;
|
||||
AReady p = mkCl p.name stateCopula (mkAP (mkA "preparat")) ;
|
||||
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 stateCopula (mkAP (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
|
||||
|
||||
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))) ;
|
||||
HowMuchCost item =
|
||||
let valer = mkV (valer_114 "valer" False) ---- False? AR 2019-05-20
|
||||
in mkQS (mkQCl how8much_IAdv (mkCl item valer)) ;
|
||||
ItCost item price =
|
||||
let valer = mkV (valer_114 "valer" False)
|
||||
in mkCl item (mkV2 valer) price ;
|
||||
PropOpen p = mkCl p.name stateCopula (mkAP open_A) ;
|
||||
PropClosed p = mkCl p.name stateCopula (mkAP closed_A) ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP 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) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("a reveure")))
|
||||
(mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt p.at)) ;
|
||||
-- PSeeYou d = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouDate d = mkText (lin Text (ss ("a reveure"))) (mkPhrase (mkUtt d)) ;
|
||||
|
||||
-- family relations
|
||||
|
||||
Wife = xOf sing (mkN "dona") ;
|
||||
Husband = xOf sing (mkN "marit") ;
|
||||
Son = xOf sing (mkN "fill") ;
|
||||
Daughter = xOf sing (mkN "filla") ;
|
||||
Children = xOf plur (mkN "fill") ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "dilluns" ;
|
||||
Tuesday = mkDay "dimarts" ;
|
||||
Wednesday = mkDay "dimecres" ;
|
||||
Thursday = mkDay "dijous" ;
|
||||
Friday = mkDay "divendres" ;
|
||||
Saturday = mkDay "dissabte" ;
|
||||
Sunday = mkDay "diumenge" ;
|
||||
|
||||
Tomorrow = P.mkAdv "demà" ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
--a quina distància està PLACE
|
||||
HowFar place = mkQS (mkQCl what_distance_IAdv (mkCl place.name placeCopula) );
|
||||
|
||||
HowFarFrom x y = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP (mkVP placeCopula)
|
||||
(S.mkAdv from_Prep x.name))));
|
||||
|
||||
HowFarFromBy x y t = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP
|
||||
(mkVP (mkVP placeCopula)
|
||||
(S.mkAdv from_Prep x.name))
|
||||
t)));
|
||||
|
||||
HowFarBy y t = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP (mkVP placeCopula) t)));
|
||||
|
||||
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 (SyntaxCat.mkAdv to_Prep place.name)))) ;
|
||||
|
||||
-- modifiers of places
|
||||
TheBest = mkSuperl L.good_A True ;
|
||||
TheClosest = mkSuperl L.near_A False;
|
||||
TheCheapest = mkSuperl cheap_A False ;
|
||||
TheMostExpensive = mkSuperl expensive_A False ;
|
||||
TheMostPopular = mkSuperl (mkA "popular" "popular" "populars" "populars" "popularment") False ;
|
||||
TheWorst = mkSuperl L.bad_A True ;
|
||||
SuperlPlace sup p = placeNPSuperl sup p ;
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
|
||||
mkSuperl : A -> Bool -> OrdSuperlative = \a,bool ->
|
||||
let ord : Ord = S.mkOrd a in {
|
||||
ord = ord ;
|
||||
isPre = bool ;
|
||||
} ;
|
||||
|
||||
desde_Prep = mkPrep "des de" ;
|
||||
fins_Prep = mkPrep "fins a" ;
|
||||
|
||||
what_distance_IAdv = ss "a quina distància"**{lock_IAdv=<>};
|
||||
|
||||
placeCopula = mkV (estar_54 "estar") ;
|
||||
|
||||
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||
|
||||
mkNat2 : A -> Str -> Str -> NPNationality = \adj,nat,co ->
|
||||
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) adj ;
|
||||
|
||||
mkNat3 : (_,_,_,_:Str) -> Str -> NPNationality = \ms,fs,mp,fp,co ->
|
||||
mkNPNationality (mkNP (mkPN ms)) (mkNP (mkPN co)) (mkA ms fs mp fp ("a la" ++ fs)) ;
|
||||
|
||||
mkNat4 : Str -> Str -> NPNationality = \angl,co ->
|
||||
mkNat3 (angl+"ès") (angl+"esa") (angl+"esos") (angl+"eses") co ;
|
||||
|
||||
mkNat5 : Str -> Str -> NPNationality = \catal,co ->
|
||||
mkNat3 (catal+"à") (catal+"ana") (catal+"ans") (catal+"anes") co ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (mkPN d)
|
||||
in
|
||||
case last d of {
|
||||
"s" => mkNPDay day (P.mkAdv ("el" ++ d)) (P.mkAdv ("els" ++ d)) ;
|
||||
_ => mkNPDay day (P.mkAdv ("el" ++ d)) (P.mkAdv ("els" ++ d + "s"))
|
||||
} ;
|
||||
|
||||
mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
|
||||
mkCNPlace (mkCN p) dative dative ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = S.mkAdv with_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||
|
||||
stateCopula = mkVA (mkV (estar_54 "estar")) ;
|
||||
open_A = mkA "obert" ;
|
||||
|
||||
closed_A = mkA "tancat" ;
|
||||
|
||||
cheap_A = mkA "barat" "barata" ;
|
||||
|
||||
expensive_A = mkA "car" ;
|
||||
}
|
||||
|
||||
|
||||
334
testsuite/lpgf/phrasebook/WordsChi.gf
Normal file
334
testsuite/lpgf/phrasebook/WordsChi.gf
Normal file
@@ -0,0 +1,334 @@
|
||||
concrete WordsChi of Words = SentencesChi **
|
||||
open
|
||||
SyntaxChi,
|
||||
ParadigmsChi,
|
||||
(P = ParadigmsChi),
|
||||
(R = ResChi),
|
||||
(L = LexiconChi),
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (mkN "鸡" "只" ) ;
|
||||
Coffee = mkCN (mkN "咖啡" ) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN L.meat_N ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "比萨饼") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "茶" ) ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "难吃" ;
|
||||
Cheap = (mkA "廉价" ) ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "美味" ;
|
||||
Expensive = (mkA "昂贵" ) ;
|
||||
Fresh = (mkA "新鲜" ) ;
|
||||
Good = (mkA "好" ) ;
|
||||
Suspect = mkA "可疑" ;
|
||||
Warm = (mkA "热") ; -- L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace (( (mkN "机场" ) )) ;
|
||||
AmusementPark = mkPlace (mkN "游乐园") ;
|
||||
Bank = mkPlace (( (L.bank_N ) )) ;
|
||||
Bar = mkPlace (( (mkN "酒吧" ) )) ;
|
||||
Cafeteria = mkPlace (( (L.bank_N ) )) ;
|
||||
Center = mkPlace (mkN "中心") ;
|
||||
Cinema = mkPlace (mkN "电影院") ;
|
||||
Church = mkPlace (L.church_N ) ;
|
||||
Disco = mkPlace (mkN "迪斯科") ;
|
||||
Hospital = mkPlace (mkN "医院" ) ;
|
||||
Hotel = mkPlace (mkN "旅馆" ) ;
|
||||
Museum = mkPlace (mkN "博物馆" ) ;
|
||||
Park = mkPlace (mkN "公园" ) ;
|
||||
Parking = mkPlace (mkN "停车场") ;
|
||||
Pharmacy = mkPlace (mkN "药店") ;
|
||||
PostOffice = mkPlace (mkN "邮局") ;
|
||||
Pub = mkPlace (mkN "酒吧") ;
|
||||
Restaurant = mkPlace L.restaurant_N ;
|
||||
School = mkPlace L.school_N ;
|
||||
Shop = mkPlace L.shop_N ;
|
||||
Station = mkPlace (mkN "车站" ) ;
|
||||
Supermarket = mkPlace (mkN "超级市场" "家" ) ;
|
||||
Theatre = mkPlace (mkN "剧院") ;
|
||||
Toilet = mkPlace (mkN "厕所" ) ;
|
||||
University = mkPlace L.university_N ;
|
||||
Zoo = mkPlace (mkN "动物园") ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit L.restaurant_N) at_Prep noPrep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
Dollar = mkCN (mkN "美元") ;
|
||||
DanishCrown = mkCN (mkN "丹麦克朗") ;
|
||||
Euro = mkCN (mkN "欧元") ;
|
||||
Lei = mkCN (mkN "列弗") ;
|
||||
Leva = mkCN (mkN "列伊") ;
|
||||
Pound = mkCN (mkN "英镑") ;
|
||||
Rouble = mkCN (mkN "卢布") ;
|
||||
SwedishCrown = mkCN (mkN "瑞典克朗") ;
|
||||
Zloty = mkCN (mkN "兹罗提") ;
|
||||
NorwegianCrown = mkCN (mkN "挪威克朗") ;
|
||||
|
||||
-- Nationalities
|
||||
Belgian = mkA ( "比利时") ;
|
||||
Belgium = mkNP (mkPN "比利时" ) ;
|
||||
Bulgarian = mkNat "保加利亚语" "保加利亚" ;
|
||||
Catalan = mkNat "加泰罗尼亚语" "加泰罗尼亚" ;
|
||||
Danish = mkNat "丹麦语" "丹麦" ;
|
||||
Dutch = mkNat "荷兰语" "荷兰" ;
|
||||
English = mkNat "英语" "英国" ;
|
||||
Finnish = mkNat "芬兰语" "芬兰" ;
|
||||
Flemish = mkNP (mkPN "佛兰德语") ;
|
||||
French = mkNat "法语" "法国" ;
|
||||
German = mkNat "德语" "德国" ;
|
||||
Italian = mkNat "意大利语" "意大利" ;
|
||||
Norwegian = mkNat "挪威语" "挪威";
|
||||
Polish = mkNat "波兰语" "波兰" ;
|
||||
Romanian = mkNat "罗马尼亚语" "罗马尼亚" ;
|
||||
Russian = mkNat "俄语" "俄罗斯" ;
|
||||
Spanish = mkNat "西班牙语" "西班牙" ;
|
||||
Swedish = mkNat "瑞典语" "瑞典" ;
|
||||
Chinese = mkNat "汉语" "中国" ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N (mkV "骑") ;
|
||||
Bus = mkTransport (mkN "公共汽车" ) (mkV "乘") ;
|
||||
Car = mkTransport L.car_N (mkV "开") ;
|
||||
Ferry = mkTransport (mkN "渡船") (mkV "乘") ;
|
||||
Plane = mkTransport L.airplane_N (mkV "坐") ;
|
||||
Subway = mkTransport (mkN "地铁") (mkV "坐") ;
|
||||
Taxi = mkTransport (mkN "出租车") (mkV "乘") ;
|
||||
Train = mkTransport L.train_N (mkV "乘") ;
|
||||
Tram = mkTransport (mkN "电车") (mkV "乘") ;
|
||||
|
||||
ByFoot = P.mkAdv ("步行") ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
|
||||
AHasAge p nu = mkCl (lin NP {s = p.name.s ++ nu.s}) (mkV "岁") ; ----
|
||||
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 "房间" ) ) (SyntaxChi.mkAdv for_gei_Prep (mkNP num (L.person_N ) ))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det L.table_N ) (SyntaxChi.mkAdv for_gei_Prep (mkNP num (L.person_N ) ))) ;
|
||||
AHasName p name = mkCl p.name (mkV2 "叫") name ;
|
||||
-- AHungry p = mkCl p.name (mkA "饿") ;
|
||||
AHungry p = mkCl p.name (mkV "饿了") ;
|
||||
-- AIll p = mkCl p.name (mkA "生病" ) ;
|
||||
AIll p = mkCl p.name (mkV "生病了") ;
|
||||
AKnow p = mkCl p.name <lin V L.know_V2 : V> ;
|
||||
ALike p item = mkCl p.name (L.like_V2 ) item ;
|
||||
ALive p co = mkCl p.name (mkV2 (mkV "住")) co ;
|
||||
ALove p q = mkCl p.name L.love_V2 q.name ;
|
||||
AMarried p = mkCl p.name (mkA "已婚") ;
|
||||
AReady p = mkCl p.name L.ready_A ;
|
||||
-- AReady p = mkCl p.name (mkV "准备好了") ;
|
||||
AScared p = mkCl p.name (mkA "惊慌") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
-- AThirsty p = mkCl p.name (mkA "渴") ;
|
||||
AThirsty p = mkCl p.name (mkV "渴了") ;
|
||||
-- ATired p = mkCl p.name (mkA "累") ;
|
||||
ATired p = mkCl p.name (lin V (mkV "累了")) ;
|
||||
AUnderstand p = mkCl p.name (lin V (mkV "理解" ) ) ;
|
||||
AWant p obj = mkCl p.name (mkV2 "要") obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP L.go_V place.name) ;
|
||||
|
||||
-- LangNat l = l.lang ; -- ++ "语" ;
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = lin QS {s = \\_ => p.name.s ++ R.word "贵姓"} ; ---
|
||||
QWhatAge p = lin QS {s = \\_ => p.name.s ++ R.word "几岁"} | lin QS {s = \\_ => p.name.s ++ R.word "多大"} ; ---
|
||||
HowMuchCost item = lin QS {s = \\_ => item.s ++ R.word "是多少钱"} ;
|
||||
ItCost item price = mkCl item (mkV2 "是") price ;
|
||||
|
||||
PropOpen p = mkCl p.name (mkA "开放" ) ;
|
||||
PropClosed p = mkCl p.name closed_A ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP (mkA "开放" ) ) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP (mkA "开放" ) ) d.habitual) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||
|
||||
|
||||
|
||||
-- PropCit c = lin A { s = c.s ; lock_A = <>; monoSyl = True } ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = lin Text (ss (d.s ++ "见")) ;
|
||||
PSeeYouPlace p = lin Text (ss (p.at.s ++ "见")) ; ---
|
||||
PSeeYouPlaceDate p d = lin Text (ss (d.s ++ p.at.s ++ "见")) ; ----
|
||||
|
||||
-- Relations are expressed as "มย วิฝเ" or "มย สoณส วิฝเ", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "ตหเ วิฝเ oฝ มย สoน" for non-pronouns.
|
||||
|
||||
Wife = xOf (L.wife_N ) ;
|
||||
Husband = xOf (L.husband_N ) ;
|
||||
Wife = xOf (L.wife_N ) ;
|
||||
Son = xOf (mkN "儿子" ) ;
|
||||
Daughter = xOf (mkN "女儿" ) ;
|
||||
Children = xOf L.child_N ; ----
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "星期一" ;
|
||||
Tuesday = mkDay "星期二" ;
|
||||
Wednesday = mkDay "星期三" ;
|
||||
Thursday = mkDay "星期四" ;
|
||||
Friday = mkDay "星期五" ;
|
||||
Saturday = mkDay "星期六" ;
|
||||
Sunday = mkDay "星期日" ;
|
||||
|
||||
Tomorrow = ParadigmsChi.mkAdv "明天" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "廉价" ) ;
|
||||
TheMostExpensive = mkSuperl (mkA "昂贵" ) ;
|
||||
TheMostPopular = mkSuperl (mkA "流行" ) ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = lin QS {s = \\_ => place.name.s ++ R.word "有多远"} ;
|
||||
|
||||
|
||||
|
||||
|
||||
HowFarFrom x y = lin QS {s = \\_ => "从" ++ x.name.s ++ "到" ++ y.name.s ++ R.word "有多远"} ; ----
|
||||
|
||||
-- HowFarFromBy x y t =
|
||||
-- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
|
||||
-- (lin AP (R.thbind from_Prep (mkNP x.name t))))) ;
|
||||
-- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
|
||||
-- (SyntaxChi.mkAdv from_Prep (mkNP x.name t)))) ;
|
||||
|
||||
|
||||
|
||||
HowFarBy y t = lin QS {s = \\_ => t.s ++ "到" ++ y.name.s ++ R.word "有多远" } ;
|
||||
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (mkIP which_IDet trans.name)(mkVP (mkV2 "去") place.name)) ;
|
||||
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (R.mkNP ( L.go_V.s ++ place.name.s ++ "的" ++ trans.name.s) ))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
|
||||
mkNat : Str -> Str -> NPNationality = \lang, co -> mkNPNationality (mkNP (mkPN lang)) (mkNP (mkPN co)) (mkA co) ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : SyntaxChi.Adv ; habitual : SyntaxChi.Adv} = \d ->
|
||||
let day = mkNP (mkPN d) in
|
||||
mkNPDay day (SyntaxChi.mkAdv noPrep day)
|
||||
(SyntaxChi.mkAdv noPrep (mkNP (mkCN (mkN d)))) ;
|
||||
|
||||
mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
|
||||
mkCNPlace (mkCN p) at_Prep noPrep ;
|
||||
|
||||
placeN : Str -> N = \s -> mkN s "间" ;
|
||||
|
||||
closed_A = P.mkA "关闭" ;
|
||||
closed_or_not_A = P.mkA "不是关闭" ;
|
||||
|
||||
xOf : N -> NPPerson -> NPPerson = \f,p ->
|
||||
{name = mkNP the_Det (mkCN f (SyntaxChi.mkAdv possess_Prep p.name)) ;
|
||||
isPron = False ; poss = the_Quant} ; ---- poss not used
|
||||
|
||||
by_Prep = mkPrep "乘" [] mannerAdvType ;
|
||||
|
||||
mkTransport : N -> V -> {name : CN ; by : SyntaxChi.Adv ; way : V } = \n,m -> {
|
||||
name = mkCN n ;
|
||||
-- by = SyntaxChi.mkAdv by8means_Prep (mkNP n);
|
||||
by = SyntaxChi.mkAdv by_Prep (mkNP n) ;
|
||||
way = m;
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxChi.mkDet the_Art ({s = ResChi.superlative_s ++ a.s ++ R.word "的那"}) ; -- (SyntaxChi.mkOrd a) ;
|
||||
|
||||
-- mkCurrency : Str -> CN = \s -> mkCN (mkN [] s) ; ---- just a classifier
|
||||
|
||||
|
||||
at_Prep = (mkPrep "在" ) ;
|
||||
noPrep = mkPrep [] ;
|
||||
for_gei_Prep = mkPrep "给" ;
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat "泰国" "泰语" ;
|
||||
Baht = mkCN (mkN "泰铢") ;
|
||||
|
||||
Rice = mkCN (mkN ("米饭")) ;
|
||||
Pork = mkCN (mkN ("猪肉")) ;
|
||||
Beef = mkCN (mkN ("牛肉")) ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "面条") ;
|
||||
Shrimps = mkCN (mkN "虾") ;
|
||||
Chili = mkCN (mkN "辣椒") ;
|
||||
Garlic = mkCN (mkN "大蒜") ;
|
||||
Durian = mkCN (mkN "榴莲") ;
|
||||
Mango = mkCN (mkN "芒果") ;
|
||||
Pineapple = mkCN (mkN "菠萝") ;
|
||||
Coke = mkCN (mkN ("可乐")) ;
|
||||
IceCream = mkCN (mkN "冰激凌") ;
|
||||
Salad = mkCN (mkN "色拉") ;
|
||||
OrangeJuice = mkCN (mkN "橙汁") ;
|
||||
Lemonade = mkCN (mkN "柠檬汁") ;
|
||||
Beach = mkPlace (placeN "海滩") ;
|
||||
|
||||
ItsRaining = mkCl (mkVP L.rain_V0) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (P.mkA ("有风"))) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (mkA "很大") ;
|
||||
|
||||
Smoke = mkVP (P.mkV ( "吸烟" )) ;
|
||||
|
||||
ADoctor = mkProfession (mkN "医生") ;
|
||||
AProfessor = mkProfession (mkN "教授") ;
|
||||
ALawyer = mkProfession (mkN "律师") ;
|
||||
AEngineer = mkProfession (mkN "工程师") ;
|
||||
ATeacher = mkProfession (mkN "教师") ;
|
||||
ACook = mkProfession (mkN "厨师") ;
|
||||
AStudent = mkProfession (mkN "学生") ;
|
||||
ABusinessman = mkProfession (mkN "商人") ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
|
||||
|
||||
}
|
||||
260
testsuite/lpgf/phrasebook/WordsDan.gf
Normal file
260
testsuite/lpgf/phrasebook/WordsDan.gf
Normal file
@@ -0,0 +1,260 @@
|
||||
-- (c) 2009 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsDan of Words = SentencesDan **
|
||||
open SyntaxDan, ParadigmsDan, IrregDan, (L = LexiconDan), ExtraDan, StructuralDan, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "ost" "osten" "oste" "ostene") ;
|
||||
Chicken = mkCN (mkN "kylling" "kyllingen" "kyllinger" "kyllingerne") ;
|
||||
Coffee = mkCN (mkN "kaffe" "kaffen" "kaffe" "kaffe") ; -- den kaffe
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "kød" "kødet" "kød" "kødet") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza" "pizzaen" "pizzaer" "pizzaerne") ; -- den pizza
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "te" "teen" "teer" "teerne") ; -- den te
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Cheap = mkA "billig" ;
|
||||
Boring = mkA "kedelig" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "lækker" ;
|
||||
Expensive = mkA "dyr" ; -- or dyrt
|
||||
Fresh = mkA "frisk" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "mistænkelig" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
|
||||
Airport = mkPlace (mkN "lufthavnen" "lufthavnen" "lufthavne" "lufthavnene") "i" ;
|
||||
AmusementPark = mkPlace (mkN "forlystelsespark" "forlystelsesparken" "forlystelsesparker" "forlystelsesparker") "i" ;
|
||||
Bank = mkPlace (mkN "bank" "banken" "banke" "bankene") "i" ;
|
||||
Bar = mkPlace (mkN "bar" "baren" "barer" "barerne") "i" ;
|
||||
Cafeteria = mkPlace (mkN "cafeteria" "cafeteriet" "cafeterier" "cafeterierne") "i" ;
|
||||
Center = mkPlace (mkN "centrum" "centrum" "centrummer" "centrummerne") "i" ; -- all centrum ?
|
||||
Cinema = mkPlace (mkN "biograf" "biografen" "biografer" "biograferne") "i" ;
|
||||
Church = mkPlace (mkN "kirke" "kirken" "kirker" "kirkerne") "i" ;
|
||||
Disco = mkPlace (mkN "diskotek" "diskoteket" "diskoteker" "diskotekerne") "på" ;
|
||||
Hospital = mkPlace (mkN "hospital" "hospitalet" "hospitaler" "hospitalerne") "på" ;
|
||||
|
||||
Hotel = mkPlace (mkN "hotel" "hotellet" "hoteller" "hotellerne") "på" ;
|
||||
Museum = mkPlace (mkN "museum" "museet" "museer" "museerne") "på" ;
|
||||
Park = mkPlace (mkN "park" "parken" "parker" "parkerne") "i" ;
|
||||
Parking = mkPlace (mkN "parkeringsplads" "parkeringspladsen" "parkeringspladser" "parkeringspladserne") "på" ;
|
||||
Pharmacy = mkPlace (mkN "apotek" "apoteket" "apoteker" "apotekerne") "på" ;
|
||||
PostOffice = mkPlace (mkN "posthus" "posthuset" "posthuse" "posthusene") "på" ;
|
||||
Pub = mkPlace (mkN "pub" "pubben" "pubber" "pubber") "på" ;
|
||||
Restaurant = mkPlace (mkN "restaurant" "restauranten" "restauranter" "restauranterne") "på" ;
|
||||
School = mkPlace (mkN "skole" "skolen" "skoler" "skolerne") "i" ;
|
||||
Shop = mkPlace (mkN "butik" "butikken" "butikker" "butikkerne") "i" ;
|
||||
Station = mkPlace (mkN "station" "stationen" "stationer" "stationerne") "på" ;
|
||||
Supermarket = mkPlace (mkN "supermarked" "supermarkedet" "supermarkeder" "supermarkederne") "i" ;
|
||||
Theatre = mkPlace (mkN "teater" "teatret" "teatre" "teatrene") "i" ;
|
||||
Toilet = mkPlace (mkN "toilet" "toilettet" "toiletter" "toiletterne") "på" ;
|
||||
University = mkPlace (mkN "universitet" "universitetet" "universiteter" "universiteterne") "på" ;
|
||||
Zoo = mkCNPlace (mkCN (mkA "zoologisk") (mkN "have")) in_Prep to_Prep ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) (mkPrep "på") to_Prep ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "dansk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
|
||||
Dollar = mkCN (mkN "dollar" "dollaren" "dollar" "dollar") ; -- den dollar
|
||||
Euro = mkCN (mkN "euro" "euroen" "euro" "euroerne") ; -- den euro
|
||||
Lei = mkCN (mkN "leu" "leu" "lei" "lei") ; -- det leis ?
|
||||
Leva = mkCN (mkN "lev" "lev" "leva" "leva") ; -- det leva ?
|
||||
NorwegianCrown = mkCN (mkA "norsk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
|
||||
Pound = mkCN (mkN "pund" "pundet" "pund" "pundene") ; -- det pund
|
||||
Rouble = mkCN (mkN "rubel" "rublen" "rubler" "rublerne") ; -- den rubel
|
||||
SwedishCrown = mkCN (mkA "svensk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
|
||||
Zloty = mkCN (mkN "zloty" "zloty" "zloty" "zloty") ; -- det zloty ?
|
||||
|
||||
-- nationalities
|
||||
|
||||
|
||||
Belgian = mkA "belgisk" ;
|
||||
Belgium = mkNP (mkPN "Belgien") ;
|
||||
Bulgarian = mkNat "bulgarsk" "Bulgarien" ;
|
||||
Catalan = mkNPNationality (mkNP (mkPN "catalansk")) (mkNP (mkPN "Catalonien")) (mkA "catalonsk") ;
|
||||
Danish = mkNat "dansk" "Danmark" ;
|
||||
Dutch = mkNat "hollandsk" "Holland" ;
|
||||
English = mkNat "engelsk" "England" ;
|
||||
Finnish = mkNat "finsk" "Finland" ;
|
||||
Flemish = mkNP (mkPN "flamsk") ;
|
||||
French = mkNat "fransk" "Frankrig" ;
|
||||
German = mkNat "tysk" "Tyskland" ;
|
||||
Italian = mkNat "italiensk" "Italien" ;
|
||||
Norwegian = mkNat "norsk" "Norge" ;
|
||||
Polish = mkNat "polsk" "Polen" ;
|
||||
Romanian = mkNat "rumænsk" "Rumænien" ;
|
||||
Russian = mkNat "russisk" "Russland" ;
|
||||
Spanish = mkNat "spansk" "Spanien" ;
|
||||
Swedish = mkNat "svensk" "Sverige" ;
|
||||
|
||||
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "bus" "bussen" "busser" "busserne") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "færge" "færgen" "færger" "færgerne") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "undergrundsbane" "undergrundsbanen" "undergrundsbaner" "undergrundsbanerne") ;
|
||||
Taxi = mkTransport (mkN "taxa") ;
|
||||
Train = mkTransport (mkN "tog" "toget" "tog" "togene") ;
|
||||
Tram = mkTransport (mkN "sporvogn" "sporvognen" "sporvogne" "sporvognene") ;
|
||||
|
||||
ByFoot = ParadigmsDan.mkAdv "til fods" ;
|
||||
|
||||
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasName p name = mkCl p.name (mkV2 (mkV "hedde")) name ;
|
||||
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 "værelse" "værelset" "værelser" "værelserne"))
|
||||
(SyntaxDan.mkAdv to_Prep (mkNP num (mkN "person" "personen" "personer" "personerne")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "bord"))
|
||||
(SyntaxDan.mkAdv to_Prep (mkNP num (mkN "person" "personen" "personer" "personerne")))) ;
|
||||
AHungry p = mkCl p.name (mkA "sulten" "sultet" "sultne") ;
|
||||
AIll p = mkCl p.name (mkA "syg") ;
|
||||
AKnow p = mkCl p.name vide_V ;
|
||||
ALike p item = mkCl p.name (mkV2 holde_V (mkPrep "af")) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDan.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (dirV2 (regV "elske")) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "gift") ;
|
||||
AReady p = mkCl p.name (mkA "færdig") ;
|
||||
AScared p = mkCl p.name (mkA "bange") ;
|
||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "tale")) lang ;
|
||||
AThirsty p = mkCl p.name (mkA "tørstig") ;
|
||||
ATired p = mkCl p.name (mkA "træt") ;
|
||||
AUnderstand p = mkCl p.name (irregV "forstå" "forstod" "forstået") ;
|
||||
AWant p obj = mkCl p.name want_VV (mkVP have_V2 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 tage_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 hede_V)) ;
|
||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "koste"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "koste")) price ;
|
||||
|
||||
PropOpen p = mkCl p.name (mkVP (mkVP have_V) open_Adv) ;
|
||||
PropClosed p = mkCl p.name (mkVP (mkVP have_V) closed_Adv) ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP (mkVP have_V) open_Adv) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP (mkVP have_V) closed_Adv) d) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP (mkVP have_V) open_Adv) d.habitual) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP (mkVP have_V) closed_Adv) d.habitual) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("vi ses")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "kone" "konen" "koner" "konerne") ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (mkN "søn" "sønnen" "sønner" "sønnerne") ;
|
||||
Daughter = xOf sing (mkN "datter" "datteren" "døtre" "døtrene") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "mandag" ;
|
||||
Tuesday = mkDay "tirsdag" ;
|
||||
Wednesday = mkDay "onsdag" ;
|
||||
Thursday = mkDay "torsdag" ;
|
||||
Friday = mkDay "fredag" ;
|
||||
Saturday = mkDay "lørdag" ;
|
||||
Sunday = mkDay "søndag" ;
|
||||
|
||||
Tomorrow = ParadigmsDan.mkAdv "i morgen" ;
|
||||
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "billig") ;
|
||||
TheMostExpensive = mkSuperl (mkA "dyr") ;
|
||||
TheMostPopular = mkSuperl (mkA "populær") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place =
|
||||
mkQS (mkQCl long_IAdv (mkCl (mkVP (SyntaxDan.mkAdv to_Prep place.name)))) ;
|
||||
HowFarFrom place x =
|
||||
mkQS (mkQCl long_IAdv (mkCl place.name (SyntaxDan.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl long_IAdv (mkCl y.name (SyntaxDan.mkAdv from_Prep (mkNP x.name t)))) ;
|
||||
HowFarBy y t =
|
||||
mkQS (mkQCl long_IAdv (mkCl y.name t)) ;
|
||||
-- not sure !
|
||||
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))) ;
|
||||
|
||||
|
||||
oper
|
||||
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||
-- don't add the "a"
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (mkPN d) in
|
||||
mkNPDay day (SyntaxDan.mkAdv on_Prep day)
|
||||
(SyntaxDan.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||
|
||||
open_Adv = ParadigmsDan.mkAdv "åbent" ;
|
||||
closed_Adv = ParadigmsDan.mkAdv "lukket" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxDan.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
far_IAdv = ExtraDan.IAdvAdv L.far_Adv ;
|
||||
long_IAdv : IAdv = ss "hvor langt" ** {lock_IAdv = <>};
|
||||
how8much_IAdv : IAdv = ss "hvad" ** {lock_IAdv = <>};
|
||||
}
|
||||
294
testsuite/lpgf/phrasebook/WordsDut.gf
Normal file
294
testsuite/lpgf/phrasebook/WordsDut.gf
Normal file
@@ -0,0 +1,294 @@
|
||||
-- (c) 2009 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
|
||||
concrete WordsDut of Words = SentencesDut **
|
||||
open SyntaxDut, (P = ParadigmsDut), (I = IrregDut), (L = LexiconDut), (R=ResDut), (E=ExtendDut), Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (P.mkN "kip" "kippen" P.de) ;
|
||||
Coffee = mkCN (P.mkN "koffie" "koffie" P.de) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (P.mkN "vlees" "vleesen" P.het) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (P.mkN "pizza" "pizza's" P.de) ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (P.mkN "thee" "thee" P.de) ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
|
||||
Bad = P.mkA "slecht" ;
|
||||
Cheap = P.mkA "goedkoop" ;
|
||||
Boring = P.mkA "saai" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = P.mkA "lekker" ;
|
||||
Expensive = P.mkA "duur" ;
|
||||
Fresh = P.mkA "vers" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = P.mkA "verdacht" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (P.mkN "luchthaven" "luchthavens" P.de) "op" ;
|
||||
AmusementPark = mkPlace (P.mkN "pretpark" "pretparken" P.het) "in" ;
|
||||
Bank = mkPlace (P.mkN "bank" "banken" P.de) "op" ;
|
||||
Bar = mkPlace (P.mkN "bar" P.de) "in" ;
|
||||
Cafeteria = mkPlace (P.mkN "cafetaria" "cafetaria's" P.de) "in" ;
|
||||
Center = mkPlace (P.mkN "centrum" "centra" P.het) "in" ;
|
||||
Church = mkPlace (P.mkN "kerk" "kerken" P.de) "in" ;
|
||||
Cinema = mkPlace (P.mkN "bioscoop" "bioscopen" P.de) "in" ;
|
||||
Disco = mkPlace (P.mkN "disco" "disco's" P.de) "in" ;
|
||||
Hospital = mkPlace (P.mkN "ziekenhuis" "ziekenhuizen" P.het) "in" ;
|
||||
Hotel = mkPlace (P.mkN "hotel" "hotels" P.het) "in" ;
|
||||
Museum = mkPlace (P.mkN "museum" "musea" P.het) "in" ;
|
||||
Park = mkPlace (P.mkN "park" "parken" P.het) "in" ;
|
||||
Parking = mkPlace (P.mkN "parkeerplaats" "parkeerplaatsen" P.de) "op" ; --parkeren x parkeerplaats -- naar op
|
||||
Pharmacy = mkPlace (P.mkN "apotheek" "apotheken" P.de) "in" ;
|
||||
PostOffice = mkPlace (P.mkN "postkantoor" "postkantoren" P.het) "op" ;
|
||||
Pub = mkPlace (P.mkN "kroeg" "kroegen" P.de) "in" ;
|
||||
Restaurant = mkPlace (P.mkN "restaurant" "restaurants" P.het) "in" ;
|
||||
Shop = mkPlace (P.mkN "winkel" "winkels" P.de) "in" ; -- shop x winkel
|
||||
School = mkPlace (P.mkN "school" "scholen" P.de) "in" ;
|
||||
Station = mkPlace (P.mkN "station" "stations" P.het) "op" ;
|
||||
Supermarket = mkPlace (P.mkN "supermarkt" "supermarkten" P.de) "in" ;
|
||||
Theatre = mkPlace (P.mkN "theater" "theaters" P.het) "in" ;
|
||||
Toilet = mkPlace (P.mkN "toilet" "toiletten" P.het) "op" ;
|
||||
University = mkPlace (P.mkN "universiteit" "universiteiten" P.de) "in" ; --universitair x universiteit -- naar in
|
||||
Zoo = mkPlace (P.mkN "dierentuin" "dierentuinen" P.de) "op" ;
|
||||
|
||||
|
||||
CitRestaurant cit =
|
||||
mkCNPlace (mkCN cit (P.mkN "restaurant" "restaurants" P.het)) in_Prep to_Prep ;
|
||||
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (P.mkA "Deens") (P.mkN "kroon" "kronen" P.de) ;
|
||||
Dollar = mkCN (P.mkN "dollar" "dollars" P.de) ;
|
||||
Euro = mkCN (P.mkN "euro" "euro's" P.de) ;
|
||||
Lei = mkCN (P.mkA "Roemeens") (P.mkN "leu" "lei" P.de) ;
|
||||
Leva = mkCN (P.mkA "Bulgaars") (P.mkN "leva" "levs" P.de) ;
|
||||
NorwegianCrown = mkCN (P.mkA "Noors") (P.mkN "kroon" "kronen "P.de) ;
|
||||
Pound = mkCN (P.mkA "Brits") (P.mkN "pond" "pond" P.het);
|
||||
Rouble = mkCN (P.mkA "Russisch") (P.mkN "roebel" "roebel" P.de) ;
|
||||
SwedishCrown = mkCN (P.mkA "Zweeds") (P.mkN "kroon" "kronen" P.de) ;
|
||||
Zloty = mkCN (P.mkA "Pools") (P.mkN "zloty" "zloty" P.de) ;
|
||||
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = P.mkA "Belgisch" ;
|
||||
Belgium = mkNP (P.mkPN "België") ;
|
||||
Bulgarian = mkNat "Bulgaars" "Bulgarije" ;
|
||||
Catalan = mkNat "Catalaans" "Catalonië" ;
|
||||
Danish = mkNat "Deens" "Denemarken" ;
|
||||
Dutch = mkNat "Nederlands" "Nederland" ;
|
||||
English = mkNat "Engels" "Engeland" ;
|
||||
Finnish = mkNat "Fins" "Finland" ;
|
||||
Flemish = mkNP (P.mkPN "Vlaams") ;
|
||||
French = mkNat "Frans" "Frankrijk" ;
|
||||
German = mkNat "Duits" "Duitsland" ;
|
||||
Italian = mkNat "Italiaans" "Italië" ;
|
||||
Norwegian = mkNat "Noors" "Noorwegen" ;
|
||||
Polish = mkNat "Pools" "Polen" ;
|
||||
Romanian = mkNat "Roemeens" "Roemenië" ;
|
||||
Russian = mkNat "Russisch" "Rusland" ;
|
||||
Spanish = mkNat "Spaans" "Spanje" ;
|
||||
Swedish = mkNat "Zweeds" "Zweden" ;
|
||||
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (P.mkN "bus" "bussen" P.de) ;
|
||||
Car = mkTransport (P.mkN "auto" "auto's" P.de);
|
||||
Ferry = mkTransport (P.mkN "veerboot" "veerboten" P.de) ; -- ferry x veerboot
|
||||
Plane = mkTransport (P.mkN "vliegtuig" "vliegtuigen" P.het) ;
|
||||
Subway = mkTransport (P.mkN "metro" "metro" P.de) ;
|
||||
Taxi = mkTransport (P.mkN "taxi" "taxi's" P.de) ;
|
||||
Tram = mkTransport (P.mkN "tram" "trams" P.de) ;
|
||||
Train = mkTransport (P.mkN "trein" "treinen" P.de) ;
|
||||
|
||||
ByFoot = P.mkAdv "te voet" ;
|
||||
{-
|
||||
ik ga met de/het ....
|
||||
ik ga te voet/ ik ga lopend
|
||||
|
||||
-}
|
||||
|
||||
|
||||
|
||||
-- actions
|
||||
AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ; -- ik ben ... jaar
|
||||
AHasName p name = prop (mkCl p.name (P.mkV2 I.heten_V) name) ; -- ik heet ...
|
||||
AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ; -- ik heb ... kinderen
|
||||
--todo geen
|
||||
AHasRoom p num =
|
||||
mkProp (mkCl p.name have_V2 -- ik heb een kamer voor ... personen
|
||||
(mkNP (mkNP a_Det (P.mkN "kamer"))
|
||||
(SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))
|
||||
(mkS (mkCl p.name have_V2 -- ik heb geen kamer voor ... personen
|
||||
(mkNP (mkNP no_Quant (P.mkN "kamer"))
|
||||
(SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon"))))));
|
||||
AHasTable p num =
|
||||
mkProp (mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (P.mkN "tafel"))
|
||||
(SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))
|
||||
(mkS (mkCl p.name have_V2
|
||||
(mkNP (mkNP no_Quant (P.mkN "tafel"))
|
||||
(SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))) ;
|
||||
AHungry p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "honger")))
|
||||
(mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "honger")))) ; -- to have
|
||||
AIll p = prop (mkCl p.name (P.mkA "ziek")) ; -- to be ?
|
||||
AKnow p = prop (mkCl p.name I.weten_V) ; -- ik weet het.
|
||||
ALike p item = prop (mkCl p.name L.like_V2 item) ; -- ik vind X leuk
|
||||
ALive p co = prop (mkCl p.name (mkVP (mkVP (P.mkV "wonen")) (SyntaxDut.mkAdv in_Prep co))) ; -- woon
|
||||
ALove p q = prop (mkCl p.name L.love_V2 q.name) ; -- houden van
|
||||
AMarried p = prop (mkCl p.name (P.mkA "getrouwd")) ; -- ik ben getrouwd
|
||||
AReady p = prop (mkCl p.name (P.mkA "klaar")) ; -- ik ben klaar
|
||||
AScared p = prop (mkCl p.name (P.mkA "bang")) ; -- ik ben bang
|
||||
ASpeak p lang = mkProp (mkCl p.name (P.mkV2 I.spreken_V) lang) -- ik spreek ...
|
||||
(mkS (mkCl p.name (P.mkV2 I.spreken_V) (mkNP no_Predet lang))); -- ik spreek geen ...
|
||||
AThirsty p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "dorst"))) --ik heb dorst
|
||||
(mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "dorst")))) ; --ik heb geen dorst
|
||||
ATired p = prop (mkCl p.name (P.mkA "moe")) ; -- ik ben moe
|
||||
AUnderstand p = prop (mkCl p.name (P.mkV "verstaan" "verstond" "verstonden" "verstaan")) ;
|
||||
AWant p obj = prop (mkCl p.name wants_V2 obj) ;
|
||||
AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ; -- ik wil naar ...
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name I.heten_V)) ; --hoe heet je
|
||||
QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (P.mkV "kosten"))) ; --hoeveel kost...
|
||||
ItCost item price = prop (mkCl item (P.mkV2 (P.mkV "kosten")) price) ; --..item.. kost ..price..
|
||||
|
||||
PropOpen p = prop (mkCl p.name open_A) ;
|
||||
PropClosed p = prop (mkCl p.name closed_A) ;
|
||||
PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP open_A) d)) ; --de winkel is geopend op vrijdag(s)
|
||||
--normaal gesproken ga ik op vrijdag ..action../vrijdags ga ik ..action..
|
||||
PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP closed_A) d)) ; -- gesloten
|
||||
PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP open_A) d.habitual)) ;
|
||||
PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP closed_A) d.habitual)) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("ik zie je"))) (mkPhrase (mkUtt d)) ; -- zie je / tot
|
||||
PSeeYouPlace p =
|
||||
mkText (lin Text (ss ("ik zie je"))) (mkPhrase (mkUtt p.at)) ; -- tot ziens in p (AR)
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("ik zie je")))
|
||||
(mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ; --tot ... op/in/bij
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (P.mkN "vrouw" "vrowen" P.de) ; -- x vrouw
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (P.mkN "zoon" "zonen" P.de) ;
|
||||
Daughter = xOf sing (P.mkN "dochter" "dochters" P.de) ;
|
||||
Children = xOf plur L.child_N ; -- kind
|
||||
|
||||
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "maandag" ;
|
||||
Tuesday = mkDay "dinsdag" ;
|
||||
Wednesday = mkDay "woensdag" ;
|
||||
Thursday = mkDay "donderdag" ;
|
||||
Friday = mkDay "vrijdag" ;
|
||||
Saturday = mkDay "zaterdag" ;
|
||||
Sunday = mkDay "zondag" ;
|
||||
|
||||
Tomorrow = P.mkAdv "morgen" ;
|
||||
|
||||
-- modifiers of places
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl (P.mkA
|
||||
"dichtbijzijnd" "dichtbijzijnde" "dichtbijzijndes"
|
||||
"dichterbijzijnd" "dichtestbijzijnd") ;
|
||||
TheCheapest = mkSuperl (P.mkA "goedkoop") ;
|
||||
TheMostExpensive = mkSuperl (P.mkA "duur") ;
|
||||
TheMostPopular = mkSuperl (P.mkA "populair") ;
|
||||
TheWorst = mkSuperl (P.mkA "slecht") ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ; -- hoe ver is de dierentuin
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name))) ;
|
||||
-- how far is the center from the hotel ? hoever is het centrum van het hotel
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name)) t)) ;
|
||||
--hoelang duurt het om van het vliegveld naar het hotel te gaan per taxi
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ; --hoe ver is het museum per bus
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
|
||||
|
||||
oper
|
||||
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||
mkNPNationality (mkNP (P.mkPN nat)) (mkNP (P.mkPN co)) (P.mkA nat) ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
mkNPDay (mkNP (P.mkPN d)) (mkAdv (P.mkPrep []) (mkNP (P.mkPN d)))
|
||||
---- (mkAdv on_Prep (mkNP (P.mkPN d)))
|
||||
(mkAdv on_Prep (mkNP a_Quant plNum (mkCN (P.mkN d (d + "en") P.utrum)))) ;
|
||||
|
||||
mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN p) (P.mkPrep i) to_Prep ;
|
||||
|
||||
open_A = P.mkA "geopend" ;
|
||||
closed_A = P.mkA "gesloten" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxDut.mkAdv possess_Prep b)) p ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxDut.mkAdv with_Prep (mkNP the_Det n)
|
||||
} ;
|
||||
|
||||
far_IAdv = ss "hoe ver" ** {lock_IAdv = <>} ;
|
||||
long_IAdv = ss "hoe lang" ** {lock_IAdv = <>};
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxDut.mkDet the_Art (SyntaxDut.mkOrd a) ;
|
||||
|
||||
van_Prep : Prep = P.mkPrep "van" ;
|
||||
wants_V2 : V2 = P.mkV2 (P.mkV "wil" "wil" "willen" "wou" "wouden" "gewild") ;
|
||||
|
||||
no_Predet = R.mkPredet "geen" "geen" ;
|
||||
{-
|
||||
HowFarFrom : how far is the center from the hotel ? hoe ver is het centrum van het hotel
|
||||
HowFarFromBy : how far is the airport from the hotel by taxi ? hoe lang duurt het om van het vliegveld naar het hotel te gaan per taxi
|
||||
HowFarBy : how far is the museum by bus ? hoe ver is het museum per bus/ hoelang doe je er over om met de bus naar het museum te gaan/hoelang doet de bus er over tot het museum
|
||||
|
||||
|
||||
-}
|
||||
|
||||
|
||||
}
|
||||
314
testsuite/lpgf/phrasebook/WordsEng.gf
Normal file
314
testsuite/lpgf/phrasebook/WordsEng.gf
Normal file
@@ -0,0 +1,314 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
concrete WordsEng of Words = SentencesEng **
|
||||
open
|
||||
SyntaxEng,
|
||||
ParadigmsEng,
|
||||
(L = LexiconEng),
|
||||
(P = ParadigmsEng),
|
||||
IrregEng,
|
||||
ExtraEng,
|
||||
Prelude in {
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "cheese") ;
|
||||
Chicken = mkCN (mkN "chicken") ;
|
||||
Coffee = mkCN (mkN "coffee") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "meat") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "tea") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "boring" ;
|
||||
Cheap = mkA "cheap" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "delicious" ;
|
||||
Expensive = mkA "expensive" ;
|
||||
Fresh = mkA "fresh" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "suspect" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace "airport" "at" ;
|
||||
AmusementPark = mkCompoundPlace "amusement" "park" "at" ;
|
||||
Bank = mkPlace "bank" "at" ;
|
||||
Bar = mkPlace "bar" "in" ;
|
||||
Cafeteria = mkPlace "canteen" "in" ;
|
||||
Center = mkPlace "center" "in" ;
|
||||
Cinema = mkPlace "cinema" "at" ;
|
||||
Church = mkPlace "church" "in" ;
|
||||
Disco = mkPlace "disco" "at" ;
|
||||
Hospital = mkPlace "hospital" "in" ;
|
||||
Hotel = mkPlace "hotel" "in" ;
|
||||
Museum = mkPlace "museum" "at" ;
|
||||
Park = mkPlace "park" "in" ;
|
||||
Parking = mkCompoundPlace "car" "park" "in" ;
|
||||
Pharmacy = mkPlace "pharmacy" "at" ;
|
||||
PostOffice = mkCompoundPlace "post" "office" "at" ;
|
||||
Pub = mkPlace "pub" "at" ;
|
||||
Restaurant = mkPlace "restaurant" "in" ;
|
||||
School = mkPlace "school" "at" ;
|
||||
Shop = mkPlace "shop" "at" ;
|
||||
Station = mkPlace "station" "at" ;
|
||||
Supermarket = mkPlace "supermarket" "at" ;
|
||||
Theatre = mkPlace "theatre" "at" ;
|
||||
Toilet = mkPlace "toilet" "in" ;
|
||||
University = mkPlace "university" "at" ;
|
||||
Zoo = mkPlace "zoo" "at" ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) in_Prep to_Prep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||
Dollar = mkCN (mkN "dollar") ;
|
||||
Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||
Lei = mkCN (mkN "leu" "lei") ;
|
||||
Leva = mkCN (mkN "lev") ;
|
||||
NorwegianCrown = mkCN (mkA "Norwegian") (mkN "crown") | mkCN (mkN "crown") ;
|
||||
Pound = mkCN (mkN "pound") ;
|
||||
Rouble = mkCN (mkN "rouble") ;
|
||||
Rupee = mkCN (mkN "rupee") ;
|
||||
SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||
Zloty = mkCN (mkN "zloty" "zloty") ;
|
||||
Yuan = mkCN (mkN "yuan" "yuan") ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA "Belgian" ;
|
||||
Belgium = mkNP (mkPN "Belgium") ;
|
||||
Bulgarian = mkNat "Bulgarian" "Bulgaria" ;
|
||||
Catalan = mkNPNationality (mkNP (mkPN "Catalan")) (mkNP (mkPN "Catalonia")) (mkA "Catalonian") ;
|
||||
Chinese = mkNat "Chinese" "China" ;
|
||||
Danish = mkNat "Danish" "Denmark" ;
|
||||
Dutch = mkNPNationality (mkNP (mkPN "Dutch")) (mkNP the_Quant (mkN "Netherlands")) (mkA "Dutch") ;
|
||||
English = mkNat "English" "England" ;
|
||||
Finnish = mkNat "Finnish" "Finland" ;
|
||||
Flemish = mkNP (mkPN "Flemish") ;
|
||||
French = mkNat "French" "France" ;
|
||||
German = mkNat "German" "Germany" ;
|
||||
Hindi = mkNP (mkPN "Hindi") ;
|
||||
India = mkNP (mkPN "India") ;
|
||||
Indian = mkA "Indian" ;
|
||||
Italian = mkNat "Italian" "Italy" ;
|
||||
Norwegian = mkNat "Norwegian" "Norway" ;
|
||||
Polish = mkNat "Polish" "Poland" ;
|
||||
Romanian = mkNat "Romanian" "Romania" ;
|
||||
Russian = mkNat "Russian" "Russia" ;
|
||||
Spanish = mkNat "Spanish" "Spain" ;
|
||||
Swedish = mkNat "Swedish" "Sweden" ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "bus") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "ferry") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "subway") ;
|
||||
Taxi = mkTransport (mkN "taxi") ;
|
||||
Train = mkTransport (mkN "train") ;
|
||||
Tram = mkTransport (mkN "tram") ;
|
||||
|
||||
ByFoot = P.mkAdv "by foot" ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsEng.mkAdv "old"));
|
||||
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 "room")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "table")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHungry p = mkCl p.name (mkA "hungry") ;
|
||||
AIll p = mkCl p.name (mkA "ill") ;
|
||||
AKnow p = mkCl p.name IrregEng.know_V ;
|
||||
ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "married") ;
|
||||
AReady p = mkCl p.name (mkA "ready") ;
|
||||
AScared p = mkCl p.name (mkA "scared") ;
|
||||
ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
|
||||
AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||
ATired p = mkCl p.name (mkA "tired") ;
|
||||
AUnderstand p = mkCl p.name IrregEng.understand_V ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl (mkIComp whatSg_IP) (nameOf p)) ;
|
||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
|
||||
ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
|
||||
|
||||
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) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("see you")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "wife") ;
|
||||
Husband = xOf sing (mkN "husband") ;
|
||||
Son = xOf sing (mkN "son") ;
|
||||
Daughter = xOf sing (mkN "daughter") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "Monday" ;
|
||||
Tuesday = mkDay "Tuesday" ;
|
||||
Wednesday = mkDay "Wednesday" ;
|
||||
Thursday = mkDay "Thursday" ;
|
||||
Friday = mkDay "Friday" ;
|
||||
Saturday = mkDay "Saturday" ;
|
||||
Sunday = mkDay "Sunday" ;
|
||||
|
||||
Tomorrow = P.mkAdv "tomorrow" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "cheap") ;
|
||||
TheMostExpensive = mkSuperl (mkA "expensive") ;
|
||||
TheMostPopular = mkSuperl (mkA "popular") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxEng.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxEng.mkAdv from_Prep (mkNP x.name t)))) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl y.name t)) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
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 (SyntaxEng.mkAdv on_Prep day)
|
||||
(SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
|
||||
mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
|
||||
|
||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||
|
||||
open_Adv = P.mkAdv "open" ;
|
||||
closed_Adv = P.mkAdv "closed" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxEng.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxEng.mkDet the_Art (SyntaxEng.mkOrd a) ;
|
||||
|
||||
far_IAdv = ExtraEng.IAdvAdv (ss "far") ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat "Thai" "Thailand" ;
|
||||
Baht = mkCN (mkN "baht" "baht") ;
|
||||
|
||||
Rice = mkCN (mkN "rice") ;
|
||||
Pork = mkCN (mkN "pork") ;
|
||||
Beef = mkCN (mkN "beef") ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "noodle") ;
|
||||
Shrimps = mkCN (mkN "shrimp") ;
|
||||
Chili = mkCN (mkN "chili") ;
|
||||
Garlic = mkCN (mkN "garlic") ;
|
||||
Durian = mkCN (mkN "durian") ;
|
||||
Mango = mkCN (mkN "mango") ;
|
||||
Pineapple = mkCN (mkN "pineapple") ;
|
||||
Coke = mkCN (mkN "coke") ;
|
||||
IceCream = mkCN (mkN "ice cream") ;
|
||||
Salad = mkCN (mkN "salad") ;
|
||||
OrangeJuice = mkCN (mkN "orange juice") ;
|
||||
Lemonade = mkCN (mkN "lemonade") ;
|
||||
|
||||
Beach = mkPlace "beach" "on" ;
|
||||
|
||||
ItsRaining = mkCl (progressiveVP (mkVP L.rain_V0)) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (P.mkA "windy")) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (progressiveVP (mkVP shine_V)) ;
|
||||
|
||||
Smoke = mkVP (P.mkV "smoke") ;
|
||||
|
||||
ADoctor = mkProfession (mkN "doctor") ;
|
||||
AProfessor = mkProfession (mkN "professor") ;
|
||||
ALawyer = mkProfession (mkN "lawyer") ;
|
||||
AEngineer = mkProfession (mkN "engineer") ;
|
||||
ATeacher = mkProfession (mkN "teacher") ;
|
||||
ACook = mkProfession (mkN "cook") ;
|
||||
AStudent = mkProfession (mkN "student") ;
|
||||
ABusinessman = mkProfession (mkN "businessman" "businessmen") ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
}
|
||||
372
testsuite/lpgf/phrasebook/WordsEst.gf
Normal file
372
testsuite/lpgf/phrasebook/WordsEst.gf
Normal file
@@ -0,0 +1,372 @@
|
||||
-- (c) 2010 Aarne Ranta under LGPL
|
||||
-- Estonian port by Kaarel Kaljurand
|
||||
|
||||
concrete WordsEst of Words = SentencesEst **
|
||||
open
|
||||
SyntaxEst, ParadigmsEst, (L = LexiconEst), (R = ResEst),
|
||||
Prelude, (E = ExtraEst) in {
|
||||
|
||||
flags optimize = noexpand ;
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "juust" "juustu" "juustu" "juustu" "juustude" "juuste") ;
|
||||
Chicken = mkCN (mkN "kana") ;
|
||||
Coffee = mkCN (mkN "kohv" "kohvi" "kohvi" "kohvi" "kohvide" "kohve") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "liha") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pitsa" "pitsa" "pitsat" "pitsasse" "pitsade" "pitsasid") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "tee") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- qualities
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "igav" ;
|
||||
Cheap = mkA "odav" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "maitsev" ;
|
||||
Expensive = mkA (mkN "kallis" "kalli" "kallist" "kallisse" "kallite" "kalleid");
|
||||
Fresh = mkA "toores" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "kahtlane" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
Restaurant = mkPlace (mkN "restoran") ssa ;
|
||||
Bank = mkPlace (mkN "pank") ssa ;
|
||||
PostOffice = mkPlace (mkN "post" (mkN "kontor")) ssa ;
|
||||
Bar = mkPlace (mkN "baar") ssa ;
|
||||
Toilet = mkPlace (mkN "tualett") ssa ;
|
||||
Museum = mkPlace (mkN "muuseum") ssa ;
|
||||
Airport = mkPlace (mkN "lennu" (mkN "jaam" "jaama" "jaama" "jaama" "jaamade" "jaamu")) ssa ; -- different in Fin
|
||||
Station = mkPlace (mkN "jaam" "jaama" "jaama" "jaama" "jaamade" "jaamu") ssa ; -- different in Fin
|
||||
Hospital = mkPlace (mkN "haigla") ssa ;
|
||||
Church = mkPlace (mkN "kirik") ssa ;
|
||||
Cinema = mkPlace (mkN "kino") ssa ;
|
||||
Theatre = mkPlace (mkN "teater") ssa ;
|
||||
Shop = mkPlace (mkN "pood" "poe" "poodi" "poodi" "poodide" "poode") ssa ;
|
||||
Park = mkPlace (mkN "park") ssa ;
|
||||
Hotel = mkPlace (mkN "hotell" "hotelli" "hotelli" "hotelli" "hotellide" "hotelle") ssa ;
|
||||
University = mkPlace (mkN "üli" (mkN "kool")) ssa ; -- different in Fin
|
||||
School = mkPlace (mkN "kool") ssa ; -- different in Fin
|
||||
|
||||
CitRestaurant cit = {
|
||||
name = mkCN cit.prop (mkN "restoran") ;
|
||||
at = casePrep inessive ;
|
||||
to = casePrep illative;
|
||||
from = casePrep elative ;
|
||||
isPl = False
|
||||
} ;
|
||||
|
||||
Parking = mkPlace (mkN "parkla") ssa ; -- different in Fin
|
||||
Supermarket = mkPlace (mkN "super" (mkN "market")) ssa ;
|
||||
Pharmacy = mkPlace (mkN "apteek") ssa ;
|
||||
Center = mkPlace (mkN "keskus") ssa ;
|
||||
Cafeteria = mkPlace (mkN "kohvik") ssa ;
|
||||
Disco = mkPlace (mkN "diskoteek") ssa ;
|
||||
Pub = mkPlace (mkN "kõrts") ssa ;
|
||||
AmusementPark = mkPlace (mkN "lõbustus" (mkN "park")) ssa ;
|
||||
Zoo = mkPlace (mkN "looma" (mkN "aed" "aia" "aeda" "aeda" "aedade" "aedu")) ssa ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (kroon2 "taani") ;
|
||||
Dollar = mkCN (mkN "dollar") ;
|
||||
Euro = mkCN (mkN "euro") ;
|
||||
Lei = mkCN (mkN "leu") ;
|
||||
Leva = mkCN (mkN "leev") ;
|
||||
NorwegianCrown = mkCN (kroon2 "norra") ;
|
||||
Pound = mkCN (mkN "nael" "naela") ;
|
||||
Rouble = mkCN (mkN "rubla") ;
|
||||
Rupee = mkCN (mkN "ruupia") ;
|
||||
SwedishCrown = mkCN (kroon2 "rootsi") ;
|
||||
Zloty = mkCN (mkN "zlott") ;
|
||||
Yuan = mkCN (mkN "jüään") ;
|
||||
|
||||
-- Citizenship
|
||||
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" "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" "prantslane" (mkPN "Prantsusmaa") ;
|
||||
German = mkNat "saksa" "sakslane" (mkPN "Saksamaa") ;
|
||||
Italian = mkNat "itaalia" "itaallane" (mkPN "Itaalia") ;
|
||||
Norwegian = mkNat "norra" "norralane" (mkPN "Norra") ;
|
||||
Polish = mkNat "poola" "poolakas" (mkPN "Poola") ;
|
||||
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
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "buss" "bussi" "bussi" "bussi" "busside" "busse") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "praam") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "metroo") ;
|
||||
Taxi = mkTransport (mkN "takso") ;
|
||||
Train = mkTransport L.train_N ;
|
||||
Tram = mkTransport (mkN "tramm") ;
|
||||
|
||||
ByFoot = ParadigmsEst.mkAdv "jalgsi" ;
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHasRoom p = haveForPerson p.name (mkCN (mkN "tuba")) ;
|
||||
AHasTable p = haveForPerson p.name (mkCN (mkN "laud")) ;
|
||||
AHungry p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "nälg")) ;
|
||||
AIll p = mkCl p.name (mkA "haige") ;
|
||||
--AKnow p = mkCl p.name (mkV "teadma") ;
|
||||
AKnow p = mkCl p.name L.know_VS ;
|
||||
ALike p item = mkCl p.name L.like_V2 item ;
|
||||
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.invA "valmis" ) ;
|
||||
-- Eng: I am scared
|
||||
-- Fin: Minua pelottaa (partitive)
|
||||
-- Est: Mina kardan (nominative)
|
||||
-- Est: Mul on hirm (nominative)
|
||||
-- AScared p = mkCl p.name (caseV nominative (mkV "kartma")) ;
|
||||
AScared p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "hirm")) ;
|
||||
-- Fin: puhua: Puhun hollantia (partitive)
|
||||
-- Est: Mina räägin hollandi keelt (partitive)
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "janu")) ;
|
||||
-- Eng: I am tired
|
||||
-- Fin: Minua väsyttää. (partitive)
|
||||
-- Ger: Ich bin müde.
|
||||
-- Est: Mina olen väsinud.
|
||||
-- ATired p = mkCl p.name (caseV partitive (mkV "väsitada")) ;
|
||||
ATired p = mkCl p.name (ParadigmsEst.mkA "väsinud") ;
|
||||
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) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
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 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 ;
|
||||
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) ;
|
||||
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("kohtumiseni"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("kohtumiseni"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("kohtumiseni")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "naine") ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (mkN "poeg" "poja" "poega" "poegadesse" "poegade" "poegi") ;
|
||||
Daughter = xOf sing (mkN "tütar" "tütre" "tütart" "tütresse" "tütarde" "tütreid") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDayPaev "esmas" ;
|
||||
Tuesday = mkDayPaev "teisi" ;
|
||||
Wednesday = mkDayPaev "kolma" ;
|
||||
Thursday = mkDayPaev "nelja" ;
|
||||
Friday = mkDay (mkPN (mkN "reede" "reede")) ("reedeti") ;
|
||||
Saturday = mkDayPaev "lau" ;
|
||||
Sunday = mkDayPaev "püha" ;
|
||||
|
||||
Tomorrow = ParadigmsEst.mkAdv "homme" ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name
|
||||
(mkVP (mkVP x.from) t))) ;
|
||||
HowFarBy place t =
|
||||
mkQS (mkQCl far_IAdv (mkCl place.name t)) ;
|
||||
-- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkVP (mkVP (mkVP (mkV "saama")) trans.by) place.to))) ;
|
||||
-- pääseekö keskustaan bussilla
|
||||
-- mkQS (mkQCl (E.AdvPredNP place.to L.go_V (E.PartCN (trans.name)))) ;
|
||||
-- meneekö keskustaan bussia
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl (mkA (mkN "lähedal asuv") "lähem" "lähim") ;
|
||||
TheCheapest = mkSuperl (mkA "odav") ;
|
||||
TheMostExpensive = mkSuperl (mkA (mkN "kallis" "kalli" "kallist" "kallisse" "kallite" "kalleid")) ;
|
||||
TheMostPopular = mkSuperl (mkA "populaarne") ;
|
||||
TheWorst = mkSuperl (L.bad_A) ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
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 -> 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
|
||||
} ;
|
||||
|
||||
---- using overloaded paradigms slows down compilation dramatically
|
||||
-- Eng: See you on Monday!
|
||||
-- Est: Kohtumiseni esmaspäeval! (adessive)
|
||||
-- Fin: Nähdään maanantaina! (essive)
|
||||
-- TODO: use StructuralEst.gf: on_Prep = casePrep adessive
|
||||
mkDay : PN -> Str -> {name : NP ; point : Adv ; habitual : Adv} = \d,s ->
|
||||
let day = mkNP d in
|
||||
{name = day ;
|
||||
point = SyntaxEst.mkAdv (casePrep adessive) day ;
|
||||
habitual = ParadigmsEst.mkAdv s
|
||||
} ;
|
||||
|
||||
mkDayPaev : Str -> {name : NP ; point : Adv ; habitual : Adv} = \s ->
|
||||
mkDay (mkPN (mkN (s + "päev") (s + "päeva"))) (s + "päeviti") ;
|
||||
|
||||
mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep; from : Prep ; isPl : Bool} = \p,e -> {
|
||||
name = mkCN p ;
|
||||
at = casePrep (if_then_else Case e adessive inessive) ; -- True: external
|
||||
to = casePrep (if_then_else Case e allative illative) ;
|
||||
from = casePrep (if_then_else Case e ablative elative) ;
|
||||
isPl = False
|
||||
} ;
|
||||
|
||||
ssa = False ;
|
||||
lla = True ;
|
||||
|
||||
-- Ger-grammar uses this xOf (mis on nimi minu naise)
|
||||
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||
|
||||
-- (mis on minu naise nimi)
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
|
||||
|
||||
oper
|
||||
-- do you have a table for five persons
|
||||
haveForPerson : NP -> CN -> Card -> Cl = \p,a,n ->
|
||||
mkCl p have_V2
|
||||
---- (mkNP (E.PartCN a) ---- partitive works in questions )
|
||||
(mkNP (mkNP a_Det a)
|
||||
(SyntaxEst.mkAdv for_Prep (mkNP n L.person_N))) ;
|
||||
---- (SyntaxEst.mkAdv for_Prep (mkNP (mkDet n)))) ; -- 60s faster compile 25/10/2010
|
||||
|
||||
open_Adv = ParadigmsEst.mkAdv "avatud" ;
|
||||
closed_Adv = ParadigmsEst.mkAdv "suletud" ;
|
||||
|
||||
-- Fin: casePrep adessive
|
||||
-- Est: casePrep comitative
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxEst.mkAdv (casePrep comitative) (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> mkDet the_Quant (mkOrd a) ;
|
||||
|
||||
far_IAdv = E.IAdvAdv L.far_Adv ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat ("tai") "tailane" (mkPN "Tai") ;
|
||||
Baht = mkCN (mkN "baht") ;
|
||||
|
||||
Rice = mkCN (mkN "riis") ;
|
||||
Pork = mkCN (mkN "siga") ;
|
||||
Beef = mkCN (mkN "veis") ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "nuudel") ;
|
||||
Shrimps = mkCN (mkN "krevet") ;
|
||||
Chili = mkCN (mkN "tšilli") ;
|
||||
Garlic = mkCN (mkN "küüs" (mkN "lauk")) ;
|
||||
Durian = mkCN (mkN "duurian") ;
|
||||
Mango = mkCN (mkN "mango") ;
|
||||
Pineapple = mkCN (mkN "ananass") ;
|
||||
Coke = mkCN (mkN "coca-cola") ;
|
||||
IceCream = mkCN (mkN "jäätis") ;
|
||||
Salad = mkCN (mkN "salat") ;
|
||||
OrangeJuice = mkCN (mkN "apelsiini" (mkN "mahl")) ;
|
||||
Lemonade = mkCN (mkN "limonaad") ;
|
||||
|
||||
Beach = mkPlace (mkN "supel" (mkN "rand")) ssa ;
|
||||
|
||||
ItsRaining = mkCl (mkVP L.rain_V0) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkNP the_Det L.wind_N) (mkVP (mkV "puhuma")) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (mkV "paistma")) ;
|
||||
|
||||
Smoke = mkVP (mkV "suitsetama") ;
|
||||
|
||||
ADoctor = mkProfession (mkN "arst") ;
|
||||
AProfessor = mkProfession (mkN "professor") ;
|
||||
ALawyer = mkProfession (mkN "jurist") ;
|
||||
AEngineer = mkProfession (mkN "insener") ;
|
||||
ATeacher = mkProfession (mkN "õpetaja") ;
|
||||
ACook = mkProfession (mkN "kokk") ;
|
||||
AStudent = mkProfession (mkN "õpilane") ;
|
||||
ABusinessman = mkProfession (mkN "äri" L.man_N) ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
}
|
||||
334
testsuite/lpgf/phrasebook/WordsFin.gf
Normal file
334
testsuite/lpgf/phrasebook/WordsFin.gf
Normal file
@@ -0,0 +1,334 @@
|
||||
-- (c) 2010 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsFin of Words = SentencesFin **
|
||||
open
|
||||
SyntaxFin, ParadigmsFin, (L = LexiconFin),
|
||||
Prelude, (E = ExtraFin) in {
|
||||
|
||||
flags optimize = noexpand ;
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "juusto") ;
|
||||
Chicken = mkCN (mkN "kana") ;
|
||||
Coffee = mkCN (mkN "kahvi") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "liha") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "tee") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- qualities
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "tylsä" ;
|
||||
Cheap = mkA "halpa" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "herkullinen" ;
|
||||
Expensive = mkA "kallis" ;
|
||||
Fresh = mkA "tuore" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "epäilyttävä" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
Restaurant = mkPlace (mkN "ravintola") ssa ;
|
||||
Bank = mkPlace (mkN "pankki") ssa ;
|
||||
PostOffice = mkPlace (mkN "posti") ssa ;
|
||||
Bar = mkPlace (mkN "baari") ssa ;
|
||||
Toilet = mkPlace (mkN "vessa") ssa ;
|
||||
Museum = mkPlace (mkN "museo") ssa ;
|
||||
Airport = mkPlace (mkN "lento" (mkN "kenttä")) lla ;
|
||||
Station = mkPlace (mkN "asema") lla ;
|
||||
Hospital = mkPlace (mkN "sairaala") ssa ;
|
||||
Church = mkPlace (mkN "kirkko") ssa ;
|
||||
Cinema = mkPlace (mkN "elokuva" (mkN "teatteri")) ssa ;
|
||||
Theatre = mkPlace (mkN "teatteri") ssa ;
|
||||
Shop = mkPlace (mkN "kauppa") ssa ;
|
||||
Park = mkPlace (mkN "puisto") ssa ;
|
||||
Hotel = mkPlace (mkN "hotelli") ssa ;
|
||||
University = mkPlace (mkN "yliopisto") lla ;
|
||||
School = mkPlace (mkN "koulu") lla ;
|
||||
|
||||
CitRestaurant cit = {
|
||||
name = mkCN cit (mkN "ravintola") ; isExternal = False ; isPl = False
|
||||
} ;
|
||||
Parking = mkPlace (mkN "pysäköinti" (mkN "alue")) lla ;
|
||||
Supermarket = mkPlace (mkN "supermarket") ssa ;
|
||||
Pharmacy = mkPlace (mkN "apteekki") ssa ;
|
||||
Center = mkPlace (mkN "keskusta") ssa ;
|
||||
Cafeteria = mkPlace (mkN "kahvila") ssa ;
|
||||
Disco = mkPlace (mkN "disko") ssa ;
|
||||
Pub = mkPlace (mkN "pub") ssa ;
|
||||
AmusementPark = mkPlace (mkN "huvi" (mkN "puisto")) ssa ;
|
||||
Zoo = mkPlace (mkN "eläin" (mkN "tarha")) ssa ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkN "Tanskan kruunu") | mkCN (mkN "kruunu") ;
|
||||
Dollar = mkCN (mkN "dollari") ;
|
||||
Euro = mkCN (mkN "euro") ;
|
||||
Lei = mkCN (mkN "lei") ;
|
||||
Leva = mkCN (mkN "leva") ;
|
||||
NorwegianCrown = mkCN (mkN "Norjan kruunu") | mkCN (mkN "kruunu") ;
|
||||
Pound = mkCN (mkN "punta") ;
|
||||
Rouble = mkCN (mkN "rupla") ;
|
||||
SwedishCrown = mkCN (mkN "Ruotsin kruunu") | mkCN (mkN "kruunu") ;
|
||||
Zloty = mkCN (mkN "zloty" "zlotyja") ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belgialainen" ;
|
||||
Belgium = {np = mkNP (mkPN "Belgia") ; isExternal = False} ;
|
||||
Bulgarian = mkNat (mkPN "bulgaria") (mkPN "Bulgaria") (mkA "bulgarialainen") ;
|
||||
Catalan = mkNat (mkPN "katalaani") (mkPN "Katalonia") (mkA "katalonialainen") ;
|
||||
Danish = mkNat (mkPN "tanska") (mkPN "Tanska") (mkA "tanskalainen") ;
|
||||
Dutch = mkNat (mkPN "hollanti") (mkPN "Hollanti") (mkA "hollantilainen") ;
|
||||
English = mkNat (mkPN "englanti") (mkPN "Englanti") (mkA "englantilainen") ;
|
||||
Finnish =
|
||||
mkNat (mkPN (mkN "suomi" "suomia")) (mkPN (mkN "Suomi" "Suomia"))
|
||||
(mkA "suomalainen") ;
|
||||
Flemish = mkNP (mkPN "flaami") ;
|
||||
French = mkNat (mkPN "ranska") (mkPN "Ranska") (mkA "ranskalainen") ;
|
||||
German = mkNat (mkPN "saksa") (mkPN "Saksa") (mkA "saksalainen") ;
|
||||
Italian = mkNat (mkPN "italia") (mkPN "Italia") (mkA "italialainen") ;
|
||||
Norwegian = mkNat (mkPN "norja") (mkPN "Norja") (mkA "norjalainen") ;
|
||||
Polish = mkNat (mkPN "puola") (mkPN "Puola") (mkA "puolalainen") ;
|
||||
Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ;
|
||||
Russian = mkNatExternal (mkPN "venäjä") (mkPN "Venäjä") (mkA "venäläinen") ;
|
||||
Spanish = mkNat (mkPN "espanja") (mkPN "Espanja") (mkA "espanjalainen") ;
|
||||
Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ;
|
||||
|
||||
---- it would be nice to have a capitalization Predef function
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "bussi") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "lautta") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "metro") ;
|
||||
Taxi = mkTransport (mkN "taksi") ;
|
||||
Train = mkTransport L.train_N ;
|
||||
Tram = mkTransport (mkN "raitiovaunu") ;
|
||||
|
||||
ByFoot = ParadigmsFin.mkAdv "jalkaisin" ;
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHasRoom p = haveForPerson p.name (mkCN (mkN "huone")) ;
|
||||
AHasTable p = haveForPerson p.name (mkCN (mkN "pöytä")) ;
|
||||
AHungry p = E.AdvExistNP (SyntaxFin.mkAdv on_Prep p.name) (mkNP (mkN "nälkä")) ;
|
||||
AIll p = mkCl p.name (mkA "sairas") ;
|
||||
AKnow p = mkCl p.name (mkV "tietää") ;
|
||||
ALike p item = mkCl p.name L.like_V2 item ;
|
||||
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 ;
|
||||
AMarried p = mkCl p.name (ParadigmsFin.mkAdv "naimisissa") ;
|
||||
AReady p = mkCl p.name (ParadigmsFin.mkA "valmis") ;
|
||||
AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
|
||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
|
||||
AThirsty p = E.AdvExistNP (SyntaxFin.mkAdv on_Prep p.name) (mkNP (mkN "jano")) ;
|
||||
ATired p = mkCl p.name (caseV partitive (mkV "väsyttää")) ;
|
||||
AUnderstand p = mkCl p.name (mkV "ymmärtää") ;
|
||||
AWant p obj = mkCl p.name (mkV2 "haluta") obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
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 "maksaa"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ;
|
||||
|
||||
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) ;
|
||||
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("nähdään"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("nähdään"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("nähdään")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "vaimo") ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing L.boy_N ;
|
||||
Daughter = xOf sing (mkN "tytär") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
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") ;
|
||||
|
||||
Tomorrow = ParadigmsFin.mkAdv "huomenna" ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl y.name
|
||||
(mkVP (mkVP x.from) t))) ;
|
||||
HowFarBy place t =
|
||||
mkQS (mkQCl far_IAdv (mkCl place.name t)) ;
|
||||
-- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkVP (mkVP (mkVP (mkV "päästä")) place.to) trans.by))) ;
|
||||
-- pääseekö keskustaan bussilla
|
||||
-- mkQS (mkQCl (E.AdvPredNP place.to L.go_V (E.PartCN (trans.name)))) ;
|
||||
-- meneekö keskustaan bussia
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl (mkA (mkN "läheinen") "lähempi" "lähin") ;
|
||||
TheCheapest = mkSuperl (mkA (mkN "halpa") "halvempi" "halvin") ;
|
||||
TheMostExpensive = mkSuperl (mkA (mkN "kallis") "kalliimpi" "kallein") ;
|
||||
TheMostPopular = mkSuperl (mkA "suosittu") ;
|
||||
TheWorst = mkSuperl (mkA "huono") ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
oper
|
||||
mkNat : 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 = 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
|
||||
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 ; isExternal : Bool ; isPl : Bool} = \p,e -> {
|
||||
name = mkCN p ;
|
||||
isExternal = e ;
|
||||
isPl = False
|
||||
} ;
|
||||
ssa = False ;
|
||||
lla = True ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
|
||||
|
||||
oper
|
||||
-- do you have a table for five persons
|
||||
haveForPerson : NP -> CN -> Card -> Cl = \p,a,n ->
|
||||
mkCl p have_V2
|
||||
---- (mkNP (E.PartCN a) ---- partitive works in questions )
|
||||
(mkNP (mkNP a_Det a)
|
||||
(SyntaxFin.mkAdv for_Prep (mkNP n (mkN "henki" "henkiä")))) ;
|
||||
---- (SyntaxFin.mkAdv for_Prep (mkNP (mkDet n)))) ; -- 60s faster compile 25/10/2010
|
||||
|
||||
open_Adv = ParadigmsFin.mkAdv "avoinna" ;
|
||||
closed_Adv = ParadigmsFin.mkAdv "kiinni" ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxFin.mkAdv (casePrep adessive) (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxFin.mkDet the_Quant (mkOrd a) ;
|
||||
|
||||
far_IAdv = E.IAdvAdv L.far_Adv ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat (mkPN "thai") (mkPN "Thaimaa") (mkA "thaimaalainen") ;
|
||||
Baht = mkCN (mkN "baht" "bahteja") ;
|
||||
|
||||
Rice = mkCN (mkN "riisi") ;
|
||||
Pork = mkCN (mkN "sika") ;
|
||||
Beef = mkCN (mkN "nauta") ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "nuudeli" "nuudeleita") ;
|
||||
Shrimps = mkCN (mkN "katka" (mkN "rapu")) ;
|
||||
Chili = mkCN (mkN "chili") ;
|
||||
Garlic = mkCN (mkN "valko" (mkN "sipuli")) ;
|
||||
Durian = mkCN (mkN "durian" "durianeja") ;
|
||||
Mango = mkCN (mkN "mango" "mangoja") ;
|
||||
Pineapple = mkCN (mkN "ananas" "ananaksia") ;
|
||||
Coke = mkCN (mkN "coca-cola") ;
|
||||
IceCream = mkCN (mkN "jäätelö" "jäätelöitä") ;
|
||||
Salad = mkCN (mkN "salaatti") ;
|
||||
OrangeJuice = mkCN (mkN "appelsiini" (mkN "mehu")) ;
|
||||
Lemonade = mkCN (mkN "limsa") ;
|
||||
|
||||
Beach = mkPlace (mkN "uima" (mkN "ranta")) lla ;
|
||||
|
||||
ItsRaining = mkCl (mkVP L.rain_V0) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (mkV "tuulla")) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (mkV "paistaa")) ;
|
||||
|
||||
Smoke = mkVP (mkV "tupakoida") ;
|
||||
|
||||
ADoctor = mkProfession (mkN "lääkäri" "lääkäreitä") ;
|
||||
AProfessor = mkProfession (mkN "professori" "professoreita") ;
|
||||
ALawyer = mkProfession (mkN "laki" L.man_N) ;
|
||||
AEngineer = mkProfession (mkN "insinööri" "insinöörejä") ;
|
||||
ATeacher = mkProfession (mkN "opettaja" "opettajia") ;
|
||||
ACook = mkProfession (mkN "kokki") ;
|
||||
AStudent = mkProfession (mkN "opiskelija" "opiskelijoita") ;
|
||||
ABusinessman = mkProfession (mkN "liike" L.man_N) ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
|
||||
}
|
||||
276
testsuite/lpgf/phrasebook/WordsFre.gf
Normal file
276
testsuite/lpgf/phrasebook/WordsFre.gf
Normal file
@@ -0,0 +1,276 @@
|
||||
-- (c) 2009 Ramona Enache and Aarne Ranta under LGPL
|
||||
|
||||
concrete WordsFre of Words = SentencesFre ** open
|
||||
SyntaxFre,
|
||||
IrregFre,
|
||||
(E = ExtraFre),
|
||||
(L = LexiconFre),
|
||||
ParadigmsFre,
|
||||
(M = MorphoFre),
|
||||
(P = ParadigmsFre),
|
||||
Prelude in {
|
||||
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "fromage" masculine) ;
|
||||
Chicken = mkCN (mkN "poulet") ;
|
||||
Coffee = mkCN (mkN "café") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "viande") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza" feminine) ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "thé") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "ennuyeux" ;
|
||||
Cheap = let bm = "bon marché" in mkA bm bm bm bm ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "délicieux" ;
|
||||
Expensive = mkA "cher" ;
|
||||
Fresh = mkA "frais" "fraîche" "frais" "fraîchement" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "suspect" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (mkN "aéroport") dative ;
|
||||
AmusementPark = mkPlace (compN (mkN "parc") ["d'attractions"]) dative ;
|
||||
Bank = mkPlace (mkN "banque") dative ;
|
||||
Bar = mkPlace (mkN "bar") dative ;
|
||||
Cafeteria = mkPlace (mkN "cafétéria") dative ;
|
||||
Center = mkPlace (mkN "centre" "centres" ParadigmsFre.masculine) dative ;
|
||||
Church = mkPlace (mkN "église") dative ;
|
||||
Cinema = mkPlace (mkN "cinéma" masculine) dative ;
|
||||
Disco = mkPlace (mkN "discothèque" feminine) dative ;
|
||||
Hospital = mkPlace (mkN "hôpital") dative ;
|
||||
Hotel = mkPlace (mkN "hôtel") dative ;
|
||||
Museum = mkPlace (mkN "musée" masculine) dative ;
|
||||
Park = mkPlace (mkN "parc") dative ;
|
||||
Parking = mkPlace (mkN "parking" masculine) dative ;
|
||||
Pharmacy = mkPlace (mkN "pharmacie" feminine) dative ;
|
||||
PostOffice = mkPlace (mkN "poste" feminine) dative ;
|
||||
Pub = mkPlace (mkN "pub" masculine) dative ;
|
||||
Restaurant = mkPlace (mkN "restaurant") dative ;
|
||||
School = mkPlace (mkN "école") dative ;
|
||||
Shop = mkPlace (mkN "magasin") dative ;
|
||||
Station = mkPlace (mkN "gare") dative ;
|
||||
Supermarket = mkPlace (mkN "supermarché" masculine) dative ;
|
||||
Theatre = mkPlace (mkN "théâtre" masculine) dative ;
|
||||
Toilet = mkCNPlacePl (mkCN (mkN "toilette")) dative dative;
|
||||
University = mkPlace (mkN "université" feminine) dative ;
|
||||
Zoo = mkPlace (mkN "zoo" masculine) dative ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) dative to_Prep ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "danois") (mkN "couronne") | mkCN (mkN "couronne") ;
|
||||
Dollar = mkCN (mkN "dollar") ;
|
||||
Euro = mkCN (mkN "euro") ;
|
||||
Lei = mkCN (mkN "leu" "lei" masculine) ;
|
||||
Leva = mkCN (mkN "lev" "leva" masculine);
|
||||
NorwegianCrown = mkCN (mkA "norvégien") (mkN "couronne") | mkCN (mkN "couronne") ;
|
||||
Pound = mkCN (compN (mkN "livre") ["sterling"]);
|
||||
Rouble = mkCN (mkN "rouble" "rouble" masculine) ;
|
||||
SwedishCrown = mkCN (mkA "suédois") (mkN "couronne") | mkCN (mkN "couronne") ;
|
||||
Zloty = mkCN (mkN "zloty" "zlotych" masculine) ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belge" ;
|
||||
Belgium = mkNP (mkPN "Belgique") ;
|
||||
Bulgarian = mkNat "bulgare" "Bulgarie" ;
|
||||
Catalan = mkNat "catalan" "Catalogne" ;
|
||||
Danish = mkNat "danois" "Danemark" ;
|
||||
Dutch = mkNat "hollandais" "Holland" ;
|
||||
English = mkNat "anglais" "Angleterre" ;
|
||||
Finnish = mkNat "finlandais" "Finlande" ;
|
||||
Flemish = mkNP (mkPN "flamand") ;
|
||||
French = mkNat "français" "France" ;
|
||||
German = mkNat "allemand" "Allemagne" ;
|
||||
Italian = mkNat "italien" "Italie" ;
|
||||
Norwegian = mkNat "norvégien" "Norvège" ;
|
||||
Polish = mkNat "polonais" "Pologne" ;
|
||||
Romanian = mkNat "roumain" "Roumanie" ;
|
||||
Russian = mkNat "russe" "Russie" ;
|
||||
Spanish = mkNat "espagnol" "Espagne" ;
|
||||
Swedish = mkNat "suédois" "Suède" ;
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport en_Prep L.bike_N ;
|
||||
Bus = mkTransport par_Prep (mkN "bus") ;
|
||||
Car = mkTransport en_Prep L.car_N ;
|
||||
Ferry = mkTransport en_Prep (mkN "ferry") ;
|
||||
Plane = mkTransport par_Prep L.airplane_N ;
|
||||
Subway = mkTransport par_Prep (mkN "métro") ;
|
||||
Taxi = mkTransport en_Prep (mkN "taxi") ;
|
||||
Train = mkTransport par_Prep (mkN "train") ;
|
||||
Tram = mkTransport par_Prep (mkN "tram") ;
|
||||
|
||||
ByFoot = P.mkAdv "à pied" ;
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
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 "chambre"))
|
||||
(SyntaxFre.mkAdv for_Prep (mkNP num (mkN "personne")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "table"))
|
||||
(SyntaxFre.mkAdv for_Prep (mkNP num (mkN "personne")))) ;
|
||||
AMarried p = mkCl p.name (mkA "marié") ;
|
||||
AWant p obj = mkCl p.name vouloir_V2 obj ;
|
||||
ALike p item = mkCl item plaire_V2 p.name ;
|
||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ;
|
||||
ALove p q = mkCl p.name (mkV2 (mkV "aimer")) q.name ;
|
||||
AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ;
|
||||
AReady p = mkCl p.name (mkA "prêt") ;
|
||||
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 L.go_V) place.to) ;
|
||||
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)) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ;
|
||||
QWhatAge p = mkQS (mkQCl (mkIP whichSg_IDet (mkN "âge" masculine)) 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) ;
|
||||
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "coûter"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "coûter")) price ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
|
||||
PSeeYouPlace d = mkText (lin Text (ss ("on se voit"))) (mkPhrase (mkUtt d.at)) ;
|
||||
PSeeYouDate d = mkText (lin Text (ss ("on se voit"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("on se voit")))
|
||||
(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 "femme") ;
|
||||
Husband = xOf sing (mkN "mari") ;
|
||||
Son = xOf sing (mkN "fils") ;
|
||||
Daughter = xOf sing (mkN "fille") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "lundi" ;
|
||||
Tuesday = mkDay "mardi" ;
|
||||
Wednesday = mkDay "mercredi" ;
|
||||
Thursday = mkDay "jeudi" ;
|
||||
Friday = mkDay "vendredi" ;
|
||||
Saturday = mkDay "samedi" ;
|
||||
Sunday = mkDay "dimanche" ;
|
||||
|
||||
Tomorrow = ParadigmsFre.mkAdv "demain" ;
|
||||
|
||||
-- modifiers of places
|
||||
TheBest = mkSuperl True L.good_A ;
|
||||
TheClosest = mkSuperl True L.near_A ;
|
||||
TheCheapest = mkSuperl False
|
||||
(compADeg {s = \\_ => (M.mkAdj "bon marché" "bon marché" "bon marché" "bon marché").s ;
|
||||
isPre = False ; copTyp = <> ; lock_A = <>}) ;
|
||||
TheMostExpensive = mkSuperl True (mkA "cher") ;
|
||||
TheMostPopular = mkSuperl True (mkA "populaire") ;
|
||||
TheWorst = mkSuperl True L.bad_A ;
|
||||
|
||||
SuperlPlace sup kind =
|
||||
let
|
||||
det : Det = mkDet the_Art sup.s ;
|
||||
name : NP = case sup.isPre of {
|
||||
True => mkNP det kind.name ; -- le meilleur bar
|
||||
False => mkNP the_Art (mkCN kind.name (mkNP det)) -- le bar le plus cher
|
||||
}
|
||||
in {
|
||||
name = name ;
|
||||
at = SyntaxFre.mkAdv kind.at name ;
|
||||
to = SyntaxFre.mkAdv kind.to name
|
||||
} ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl what_distance_IAdv place.name) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl (E.CompIQuant which_IQuant)
|
||||
(mkNP (mkNP distance_NP (SyntaxFre.mkAdv from_Prep x.name)) y.to)) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl (E.CompIQuant which_IQuant)
|
||||
(mkNP (mkNP (mkNP distance_NP (SyntaxFre.mkAdv from_Prep x.name)) y.to) t)) ;
|
||||
HowFarBy place t =
|
||||
mkQS (mkQCl what_distance_IAdv (mkNP place.name t)) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
lin QS {s = \\_ => (E.EstcequeS (mkS (mkCl (mkCN trans.name (SyntaxFre.mkAdv for_Prep place.name))))).s} ;
|
||||
-- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
|
||||
|
||||
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 d) (P.mkAdv ("le" ++ d)) ;
|
||||
|
||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN p) i dative ;
|
||||
|
||||
open_A = P.mkA "ouvert" ;
|
||||
closed_A = P.mkA "fermé" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||
|
||||
mkTransport : Prep -> N -> {name : CN ; by : Adv} = \p,n -> {
|
||||
name = mkCN n ;
|
||||
by = E.PrepCN p n -- par train, en vélo
|
||||
} ;
|
||||
|
||||
en_Prep = mkPrep "en" ;
|
||||
par_Prep = mkPrep "par" ;
|
||||
|
||||
mkSuperl : Bool -> A -> {s : Ord ; isPre : Bool} = \b,a ->
|
||||
{s = SyntaxFre.mkOrd a ; isPre = b} ;
|
||||
|
||||
|
||||
what_distance_IAdv = ss "à quelle distance"**{lock_IAdv=<>};
|
||||
|
||||
distance_NP : NP = mkNP the_Det (mkN "distance" feminine) ;
|
||||
|
||||
|
||||
}
|
||||
262
testsuite/lpgf/phrasebook/WordsGer.gf
Normal file
262
testsuite/lpgf/phrasebook/WordsGer.gf
Normal file
@@ -0,0 +1,262 @@
|
||||
-- (c) 2009 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsGer of Words = SentencesGer **
|
||||
open SyntaxGer, ParadigmsGer, IrregGer, (L = LexiconGer), ExtraGer, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "Käse" "Käse" "Käse" "Käse" "Käse" "Käse" masculine) ;
|
||||
Chicken = mkCN (mkN "Huhn" "Huhn" "Huhn" "Huhn" "Hühner" "Hühner" neuter) ;
|
||||
Coffee = mkCN (mkN "Kaffee" "Kaffee" "Kaffee" "Kaffee" "Kaffees" "Kaffee" masculine) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "Fleisch" "Fleisch" "Fleisch" "Fleisch" "Fleisch" "Fleisch" neuter) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "Pizza" "Pizzen" feminine) ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "Tee" "Tee" "Tee" "Tee" "Tees" "Tees" masculine) ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Cheap = mkA "billig" ;
|
||||
Boring = mkA "langweilig" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "lecker" ;
|
||||
Expensive = mkA "teuer" ;
|
||||
Fresh = mkA "frisch" ;
|
||||
Good = L.good_A ;
|
||||
Warm = L.warm_A ;
|
||||
Suspect = mkA "verdächtig" ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (mkN "Flughafen" "Flughäfen" masculine) on_Prep zu_Prep ;
|
||||
Church = mkPlace (mkN "Kirche") in_Prep inAcc_Prep ;
|
||||
Hospital = mkPlace (mkN "Krankenhaus" "Krankenhäuser" neuter) in_Prep inAcc_Prep ;
|
||||
Restaurant = mkPlace (mkN "Restaurant" "Restaurants" neuter) in_Prep inAcc_Prep ;
|
||||
Station = mkPlace (mkN "Bahnhof" "Bahnhöfe" masculine) on_Prep zu_Prep ;
|
||||
University = mkPlace (mkN "Universität" "Universitäten" feminine) in_Prep zu_Prep ;
|
||||
|
||||
AmusementPark = mkPlace (mkN "Vergnügungspark" "Vergnügungspark" "Vergnügungspark" "Vergnügungspark" "Vergnügungsparks" "Vergnügungsparks" masculine) in_Prep inAcc_Prep ;
|
||||
Bank = mkPlace (mkN "Bank" "Bank" "Bank" "Bank" "Banken" "Banken" feminine) in_Prep zu_Prep ;
|
||||
Bar = mkPlace (mkN "Bar" "Bar" "Bar" "Bar" "Bars" "Bars" feminine) in_Prep inAcc_Prep ;
|
||||
Cafeteria = mkPlace (mkN "Cafeteria" "Cafeteria" "Cafeteria" "Cafeteria" "Cafeterien" "Cafeterien" feminine) in_Prep inAcc_Prep ;
|
||||
Center = mkPlace (mkN "Zentrum" "Zentrum" "Zentrum" "Zentrum" "Zentren" "Zentren" neuter) in_Prep zu_Prep ;
|
||||
Cinema = mkPlace (mkN "Kino" "Kino" "Kino" "Kino" "Kinos" "Kinos" neuter) in_Prep inAcc_Prep ;
|
||||
Disco = mkPlace (mkN "Disco" "Disco" "Disco" "Disco" "Discos" "Discos" feminine) in_Prep inAcc_Prep ;
|
||||
Hotel = mkPlace (mkN "Hotel" "Hotel" "Hotel" "Hotel" "Hotels" "Hotels" neuter) in_Prep inAcc_Prep ;
|
||||
Museum = mkPlace (mkN "Museum" "Museum" "Museum" "Museum" "Museen" "Museen" neuter) in_Prep inAcc_Prep ;
|
||||
Park = mkPlace (mkN "Park" "Park" "Park" "Park" "Parks" "Parks" masculine) in_Prep inAcc_Prep ;
|
||||
Parking = mkPlace (mkN "Parkplatz" "Parkplatz" "Parkplatz" "Parkplatz" "Parkplatzen" "Parkplatzen" masculine) on_Prep zu_Prep ;
|
||||
Pharmacy = mkPlace (mkN "Apotheke" "Apotheke" "Apotheke" "Apotheke" "Apotheken" "Apotheken" feminine) in_Prep zu_Prep ;
|
||||
PostOffice = mkPlace (mkN "Post" "Post" "Post" "Post" "Posten" "Posten" feminine) in_Prep inAcc_Prep ;
|
||||
Pub = mkPlace (mkN "Kneipe" "Kneipe" "Kneipe" "Kneipe" "Kneipen" "Kneipen" feminine) in_Prep inAcc_Prep;
|
||||
School = mkPlace (mkN "Schule" "Schule" "Schule" "Schule" "Schulen" "Schule" feminine) in_Prep inAcc_Prep ;
|
||||
Shop = mkPlace (mkN "Geschäft" "Geschäft" "Geschäft" "Geschäft" "Geschäfte" "Geschäfte" neuter) in_Prep inAcc_Prep ;
|
||||
Supermarket = mkPlace (mkN "Supermarkt" "Supermarkt" "Supermarkt" "Supermarkt" "Supermärkten" "Supermärkte" masculine) in_Prep inAcc_Prep ;
|
||||
Theatre = mkPlace (mkN "Theater" "Theater" "Theater" "Theaters" "Theatern" "Thaters" neuter) in_Prep inAcc_Prep ;
|
||||
Toilet = mkPlace (mkN "Toilette" "Toilette" "Toilette" "Toilette" "Toiletten" "Toiletten" feminine) in_Prep (mkPrep "auf" accusative) ;
|
||||
Zoo = mkPlace (mkN "Zoo" "Zoo" "Zoo" "Zoo" "Zoos" "Zoos" masculine) in_Prep inAcc_Prep ;
|
||||
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "Restaurant" "Restaurants" neuter)) in_Prep inAcc_Prep ;
|
||||
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "Dänisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
|
||||
Dollar = mkCN (mkN "Dollar" "Dollar" "Dollar" "Dollar" "Dollar" "Dollar" masculine) ;
|
||||
Euro = mkCN (mkN "Euro" "Euro" "Euro" "Euro" "Euro" "Euro" neuter) ;
|
||||
Lei = mkCN (mkN "Leu" "Leu" "Leu" "Leu" "Lei" "Lei" masculine) ;
|
||||
SwedishCrown = mkCN (mkA "Schwedisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
|
||||
Leva = mkCN (mkN "Lewa" "Lewa" "Lewa" "Lewa" "Lewa" "Lewa" feminine);
|
||||
NorwegianCrown = mkCN (mkA "Norwegisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
|
||||
Pound = mkCN (mkN "Pfund" "Pfund" "Pfund" "Pfund" "Pfund" "Pfund" neuter) ;
|
||||
Rouble = mkCN (mkN "Rubel" "Rubel" "Rubel" "Rubel" "Rubels" "Rubels" masculine);
|
||||
Zloty = mkCN (mkN "Zloty" "Zloty" "Zloty" "Zloty" "Zloty" "Zloty" masculine);
|
||||
|
||||
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belgisch" ;
|
||||
Belgium = mkNP (mkPN "Belgien") ;
|
||||
Bulgarian = mkNat "Bulgarien" "Bulgarisch" "bulgarisch" ;
|
||||
Catalan = mkNat "Katalonien" "Katalanisch" "katalanisch" ;
|
||||
Danish = mkNat "Dänemark" "Dänisch" "dänisch" ;
|
||||
Dutch = mkNat "den Niederlanden" "Niederländisch" "niederländisch" ;
|
||||
English = mkNat "England" "Englisch" "englisch" ;
|
||||
Finnish = mkNat "Finnland" "Finnisch" "finnisch" ;
|
||||
Flemish = mkCN (mkN "Flämisch" "Flämisch" neuter) ;
|
||||
French = mkNat "Frankreich" "Französisch" "französisch" ;
|
||||
German = mkNat "Deutschland" "Deutsch" "deutsche" ;
|
||||
Italian = mkNat "Italien" "Italienisch" "italienisch" ;
|
||||
Norwegian = mkNat "Norwegen" "Norwegisch" "norwegisch" ;
|
||||
Polish = mkNat "Polen" "Polnisch" "polnisch" ;
|
||||
Romanian = mkNat "Rumänien" "Rumänisch" "rumänisch" ;
|
||||
Russian = mkNat "Russland" "Russisch" "russisch" ;
|
||||
Spanish = mkNat "Spanien" "Spanisch" "spanisch" ;
|
||||
Swedish = mkNat "Schweden" "Schwedisch" "schwedisch" ;
|
||||
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ;
|
||||
AHasName p name = prop (mkCl p.name (mkV2 heißen_V) name) ;
|
||||
AHungry p = prop (mkCl p.name (mkA "hungrig")) ;
|
||||
AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ;
|
||||
AHasRoom p num = prop (mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "Zimmer" "Zimmer" neuter))
|
||||
(SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ;
|
||||
AHasTable p num = prop (mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "Tisch"))
|
||||
(SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ;
|
||||
AIll p = prop (mkCl p.name (mkA "krank")) ;
|
||||
AKnow p = prop (mkCl p.name wissen_V) ;
|
||||
ALike p item = prop (mkCl p.name (mkV2 mögen_V) item) ;
|
||||
ALive p co = prop (mkCl p.name (mkVP (mkVP (mkV "wohnen")) (SyntaxGer.mkAdv in_Prep co))) ;
|
||||
ALove p q = prop (mkCl p.name (mkV2 (mkV "lieben")) q.name) ;
|
||||
AMarried p = prop (mkCl p.name (mkA "verheiratet")) ;
|
||||
AReady p = prop (mkCl p.name (mkA "bereit")) ;
|
||||
AScared p = prop (mkCl p.name have_V2 (mkNP (mkN "Angst" "Angsten" feminine))) ;
|
||||
ASpeak p lang = mkProp (mkCl p.name (mkV2 sprechen_V) (mkNP lang))
|
||||
(mkS (mkCl p.name (mkV2 sprechen_V) (mkNP no_Quant lang))) ;
|
||||
AThirsty p = prop (mkCl p.name (mkA "durstig")) ;
|
||||
ATired p = prop (mkCl p.name (mkA "müde")) ;
|
||||
AUnderstand p = prop (mkCl p.name (fixprefixV "ver" stehen_V)) ;
|
||||
AWant p obj = prop (mkCl p.name want_VV (mkVP have_V2 obj)) ;
|
||||
AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name heißen_V)) ;
|
||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||
|
||||
PropOpen p = prop (mkCl p.name open_Adv) ;
|
||||
PropClosed p = prop (mkCl p.name closed_Adv) ;
|
||||
PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP d) open_Adv)) ;
|
||||
PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP d) closed_Adv)) ;
|
||||
PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) open_Adv)) ;
|
||||
PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) closed_Adv)) ;
|
||||
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosten"))) ;
|
||||
ItCost item price = prop (mkCl item (mkV2 (mkV "kosten")) price) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("wir sehen uns"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("wir sehen uns"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("wir sehen uns")))
|
||||
(mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
|
||||
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "Frau" "Frauen" feminine) ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (mkN "Sohn" "Söhne" masculine) ;
|
||||
Daughter = xOf sing (mkN "Tochter" "Töchter" feminine) ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "Montag" ;
|
||||
Tuesday = mkDay "Dienstag" ;
|
||||
Wednesday = mkDay "Mittwoch" ;
|
||||
Thursday = mkDay "Donnerstag" ;
|
||||
Friday = mkDay "Freitag" ;
|
||||
Saturday = mkDay "Samstag" ;
|
||||
Sunday = mkDay "Sonntag" ;
|
||||
|
||||
Tomorrow = ParadigmsGer.mkAdv "morgen" ;
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "billig") ;
|
||||
TheMostExpensive = mkSuperl (mkA "teuer") ;
|
||||
TheMostPopular = mkSuperl (mkA "beliebt") ;
|
||||
TheWorst = mkSuperl (mkA "schlimm") ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "Bus" "Bus" "Bus" "Bus" "Buss" "Buss" masculine) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "Fähre" "Fähre" "Fähre" "Fähre" "Fähren" "Fähren" feminine) ;
|
||||
Plane = mkTransport (mkN "Flugzeug" "Flugzeug" "Flugzeug" "Flugzeug" "Flugzeuge" "Flugzeuge" neuter) ;
|
||||
Subway = mkTransport (mkN "U-Bahn" "U-Bahn" "U-Bahn" "U-Bahn" "U-Bahnen" "U-Bahnen" feminine) ;
|
||||
Taxi = mkTransport (mkN "Taxi" "Taxi" "Taxi" "Taxi" "Taxis" "Taxis" neuter) ;
|
||||
Train = mkTransport (mkN "Zug" "Zug" "Zug" "Zug" "Züge" "Züge" masculine) ;
|
||||
Tram = mkTransport (mkN "Straßenbahn" "Straßenbahn" "Straßenbahn" "Straßenbahn" "Straßenbahnen" "Straßenbahnen" feminine) ;
|
||||
|
||||
ByFoot = ParadigmsGer.mkAdv "zu Fuß" ;
|
||||
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) (ParadigmsGer.mkAdv "entfernt"))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) t))))) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP y.name t))))) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
|
||||
|
||||
oper
|
||||
|
||||
mkNat : Str -> Str -> Str -> {lang : CN ; prop : A ; country : NP} = \co, la, adj ->
|
||||
{lang = mkCN (mkN la la neuter) ;
|
||||
prop = mkA adj ; country = mkNP (mkPN co)} ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (mkPN d masculine) in
|
||||
{name = day ;
|
||||
point = SyntaxGer.mkAdv (mkPrep "am" dative) day ; ---- am
|
||||
habitual = ParadigmsGer.mkAdv (d + "s") ----
|
||||
} ;
|
||||
|
||||
mkPlace : N -> Prep -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,at,to -> {
|
||||
name = mkCN p ;
|
||||
at = at ;
|
||||
to = to ;
|
||||
isPl = False
|
||||
} ;
|
||||
|
||||
open_Adv = ParadigmsGer.mkAdv "geöffnet" ; ---- Adv to get right word order easily
|
||||
closed_Adv = ParadigmsGer.mkAdv "geschlossen" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxGer.mkDet the_Art (SyntaxGer.mkOrd a) ;
|
||||
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxGer.mkAdv by8means_Prep (mkNP the_Det n)
|
||||
} ;
|
||||
|
||||
far_IAdv = ss "wie weit" ** {lock_IAdv = <>} ;
|
||||
|
||||
}
|
||||
280
testsuite/lpgf/phrasebook/WordsHin.gf
Normal file
280
testsuite/lpgf/phrasebook/WordsHin.gf
Normal file
@@ -0,0 +1,280 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
concrete WordsHin of Words = SentencesHin **
|
||||
open
|
||||
SyntaxHin,
|
||||
CommonHindustani,
|
||||
ParadigmsHin,
|
||||
(L = LexiconHin),
|
||||
(P = ParadigmsHin),
|
||||
-- IrregHin,
|
||||
ExtraHin,
|
||||
Prelude in {
|
||||
flags coding = utf8 ;
|
||||
|
||||
-- param Gender = Masc | Fem ;
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "पनीर" Fem) ;
|
||||
Chicken = mkCN (mkN "मुरग़ी") ;
|
||||
Coffee = mkCN (mkN "काफ़ी") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "गोश्त") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "पिज़्ज़ा") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "चाय" Fem) ;
|
||||
Water = mkCN L.water_N;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "उबाऊ" ;
|
||||
Cheap = mkA "सस्ता" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "मज़ेदार" ;
|
||||
Expensive = mkA "महंगा" ;
|
||||
Fresh = mkA "ताज़ा" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "बुरा" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace "हवाई अड्डा" "पर" ;
|
||||
AmusementPark = mkCompoundPlace "मनोरंजन" "उद्यान" "में" ;
|
||||
Bank = mkPlace "बैंक" "में" ;
|
||||
Bar = mkPlace "बार" "में" ;
|
||||
Cafeteria = mkPlace "जलपान घर" "में" ;
|
||||
Center = mkPlace "केन्द्र" "पर" ;
|
||||
Cinema = mkPlace "सिनेमा" "में" ;
|
||||
Church = mkPlace "गिरजा" "में" ;
|
||||
Disco = mkPlace "डिस्को" "में" ;
|
||||
Hospital = mkPlace "अस्पताल" "में" ;
|
||||
Hotel = mkPlace "होटेल" "में" ;
|
||||
Museum = mkPlace "संग्रहालय" "पर" ;
|
||||
Park = mkPlace "उद्यान" "में" ;
|
||||
Parking = mkCompoundPlace "कार" "पार्क" "में" ;
|
||||
Pharmacy = mkPlace "दवासाजी" "पर" ;
|
||||
PostOffice = mkCompoundPlace "डाक" "घर" "पर" ;
|
||||
Pub = mkPlace "पब" "में" ;
|
||||
Restaurant = mkPlace "रेस्तोरां" "में" ;
|
||||
School = mkPlace "स्कूल" "में" ;
|
||||
Shop = mkPlaceFem "दुकान" "में" Fem;
|
||||
Station = mkPlace "स्टेशन" "पर" ;
|
||||
Supermarket = mkPlace "सुपर बाज़ार" "में" ;
|
||||
Theatre = mkPlace "रंगशाला" "पर" ;
|
||||
Toilet = mkPlace "शौचालय" "में" ;
|
||||
University = mkPlaceFem "विश्वविद्यालय" "में" Fem;
|
||||
Zoo = mkPlace "चिड़ियाघर" "में" ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "रेस्तोरां")) in_Prep to_Prep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA "डेनिश") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
|
||||
Dollar = mkCN (mkN "डालर") ;
|
||||
Euro = mkCN (mkN "यूरो") ; -- to prevent euroes
|
||||
Lei = mkCN (mkN "लेई") ;
|
||||
Leva = mkCN (mkN "लेवा") ;
|
||||
NorwegianCrown = mkCN (mkA "नारवीजियन") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
|
||||
Pound = mkCN (mkN "पाउंड") ;
|
||||
Rouble = mkCN (mkN "रूबल") ;
|
||||
SwedishCrown = mkCN (mkA "स्वीडिश") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
|
||||
Zloty = mkCN (mkN "ज़्लोटी" Fem) ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA "बेल्जियन" ;
|
||||
Belgium = mkNP (mkPN "बेल्जियम") ;
|
||||
Bulgarian = mkNat "बुलगेरियाई" "बुलगेरिया" ;
|
||||
Catalan = mkNPNationality (mkNP (mkPN "केटलान")) (mkNP (mkPN "केटलान")) (mkA "केटलान") ;
|
||||
Danish = mkNat "डेनिश" "डेनमार्क" ;
|
||||
Dutch = mkNPNationality (mkNP (mkPN "डच")) (mkNP the_Quant (mkN "नीदरलैंड्स")) (mkA "डच") ;
|
||||
English = mkNat "अंग्रेज़" "इंगलैंड" ;
|
||||
Finnish = mkNat "फ़िनिश" "फ़िनलैंड" ;
|
||||
Flemish = mkNP (mkPN "फ़्लेमिश") ;
|
||||
French = mkNat "फ़्रान्सीसी" "फ़्रान्स" ;
|
||||
German = mkNat "जर्मन" "जर्मनी" ;
|
||||
Italian = mkNat "इतालवी" "इटली" ;
|
||||
Norwegian = mkNat "नार्वीजियन" "नार्वे" ;
|
||||
Polish = mkNat "पोलिश" "पोलैंड" ;
|
||||
Romanian = mkNat "रोमानियन" "रोमानिया" ;
|
||||
Russian = mkNat "रूसी" "रूस" ;
|
||||
Spanish = mkNat "स्पेनी" "स्पेन" ;
|
||||
Swedish = mkNat "स्वीडिश" "स्वीडन" ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "बस" Fem) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "फ़ेरी") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "सबवे") ;
|
||||
Taxi = mkTransport (mkN "टैक्सी") ;
|
||||
Train = mkTransport (mkN "रेल गाड़ी") ;
|
||||
Tram = mkTransport (mkN "ट्राम" Fem) ;
|
||||
|
||||
ByFoot = P.mkAdv "पैदल चलकर" ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
-- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsHin.mkAdv "का"));
|
||||
AHasAge p num = mkCl p.name (mkNP num (mkCN (modN 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 "कमरा")) (SyntaxHin.mkAdv for_Prep (mkNP num (P.mkN "व्यक्ति" "व्यक्ति" "व्यक्ति" "लोग" "लोगों" "लोगो" masculine)))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "मेज़")) (SyntaxHin.mkAdv for_Prep (mkNP num (P.mkN "व्यक्ति" "व्यक्ति" "व्यक्ति" "लोग" "लोगों" "लोगो" masculine)))) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHungry p = mkCl p.name (mkA "भूखा") ;
|
||||
AIll p = mkCl p.name (mkA "बीमार") ;
|
||||
AKnow p = mkCl p.name (mkV "जानना") ;
|
||||
ALike p item = mkCl p.name (L.like_V2) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxHin.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (L.love_V2) q.name ;
|
||||
AMarried p = mkCl p.name (P.mkIrregA "शादी शुदा") ;
|
||||
AReady p = mkCl p.name (mkA "तैयार") ;
|
||||
-- AScared p = mkCl p.name (P.mkCompoundA "डरा" "हुआ") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = mkCl p.name (mkA "प्यासा") ;
|
||||
-- ATired p = mkCl p.name (P.mkCompoundA "थका" "हुआ") ;
|
||||
AUnderstand p = mkCl p.name (mkV "समझना") ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV "चाहना")) obj ;
|
||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||
QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (P.mkN "नाम" "नाम" "नाम" "नाम" "नाम" "नाम" masculine))) ;
|
||||
-- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "उम्र"))) ;
|
||||
QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (P.mkN "उम्र" "उम्र" "उम्र" "उम्र" "उम्र" "उम्र" feminine))) ;
|
||||
HowMuchCost item = mkQS (mkQCl (mkCl (modNP item) (mkAdv ["की क़ीमत"]))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "क़ीमत")) price ;
|
||||
|
||||
PropOpen p = mkCl p.name open_Adv ;
|
||||
PropClosed p = mkCl p.name closed_Adv ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv);
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("मिलते हैं"))) ;
|
||||
PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("मिलते हैं"))) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
|
||||
(lin Text (Prelude.ss ("मिलते हैं"))) ;
|
||||
|
||||
-- Relations are expressed as "मय wिफ़e" or "मय सon'स wिफ़e", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "तहe wिफ़e oफ़ मय सoन" for non-pronouns.
|
||||
|
||||
Wife = xOf ssing (mkN "पत्नी") ;
|
||||
Husband = xOf ssing (mkN "पति") ;
|
||||
Son = xOf ssing (mkN "बेटा") ;
|
||||
Daughter = xOf ssing (mkN "बेटी") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "सोमवार" ;
|
||||
Tuesday = mkDay "मंगलवार" ;
|
||||
Wednesday = mkDay "बुधवार" ;
|
||||
Thursday = mkDay "गुरुवार" ;
|
||||
Friday = mkDay "शुक्रवार" ;
|
||||
Saturday = mkDay "शनिवार" ;
|
||||
Sunday = mkDay "रविवार" ;
|
||||
|
||||
Tomorrow = P.mkAdv "कल" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "सस्ता") ;
|
||||
TheMostExpensive = mkSuperl (mkA "महंगा") ;
|
||||
TheMostPopular = mkSuperl (mkA "मशहूर") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxHin.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxHin.mkAdv from_Prep x.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (SyntaxHin.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
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 (mkNP (mkCN (mkN d))) (SyntaxHin.mkAdv to_Prep (mkNP (mkCN (mkN d))))
|
||||
(SyntaxHin.mkAdv to_Prep (mkNP (mkCN (mkN d)))) ; --changed from plNum to sgNum
|
||||
|
||||
mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
|
||||
-- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
|
||||
mkCNPlace (mkCN (mkN (comp++p))) (P.mkPrep i i) to_Prep ;
|
||||
|
||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN p)) (P.mkPrep i i) to_Prep ;
|
||||
mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
|
||||
mkCNPlace (mkCN (P.mkN p g)) (P.mkPrep i i) to_Prep ;
|
||||
|
||||
open_Adv = P.mkAdv "खुला";
|
||||
closed_Adv = P.mkAdv "बंद" ;
|
||||
|
||||
xOf : SentencesHin.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN "नाम") p).name ;
|
||||
ssing = False ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxHin.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
-- mkSuperl : A -> Det = \a -> SyntaxHin.mkDet the_Art (SyntaxHin.mkOrd a) ;
|
||||
mkSuperl : A -> Det = \a -> lin Det { s = \\n,g,c => a.s ! n ! g ! c ! Superl ; n = Sg } ;
|
||||
|
||||
far_IAdv = ExtraHin.IAdvAdv (P.mkAdv "दूर") ;
|
||||
what_IAdv = lin IAdv {s = "क्या"} ;
|
||||
howMuch_IAdv = lin IAdv {s = "कितनी"} ;
|
||||
-- cost_Predet = lin Predet {s = ["की क़ीमत"]} ;
|
||||
-------------------
|
||||
modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"का" ; g =noun.g} ;
|
||||
modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
|
||||
modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
|
||||
|
||||
}
|
||||
269
testsuite/lpgf/phrasebook/WordsIta.gf
Normal file
269
testsuite/lpgf/phrasebook/WordsIta.gf
Normal file
@@ -0,0 +1,269 @@
|
||||
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsIta of Words = SentencesIta ** open
|
||||
SyntaxIta,
|
||||
BeschIta,
|
||||
(E = ExtraIta),
|
||||
(L = LexiconIta),
|
||||
(P = ParadigmsIta),
|
||||
ParadigmsIta,
|
||||
Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
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è") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "carne" feminine) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "tè") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "noioso" ;
|
||||
Cheap = mkA "conveniente";
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "delizioso" ;
|
||||
Expensive = mkA "costoso" ;
|
||||
Fresh = mkA "fresco" ;
|
||||
Good = L.good_A ;
|
||||
Warm = L.warm_A ;
|
||||
Suspect = mkA "sospetto" ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (mkN "aeroporto") dative ;
|
||||
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" 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") 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 ;
|
||||
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 ;
|
||||
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkV "distare")));
|
||||
|
||||
-- -- how far is place from x
|
||||
HowFarFrom x place = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkV2 (mkV "distare") from_Prep) x.name ))) ;
|
||||
|
||||
-- -- how far is place by t
|
||||
HowFarBy place t = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkVP (mkV "distare")) t)) );
|
||||
|
||||
-- -- how far is place from x by t
|
||||
HowFarFromBy x place t = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkVP (mkV2 (mkV "distare") from_Prep)x.name) t) ));
|
||||
|
||||
-- HowFarFromBy x y t = mkQS (mkQCl (mkIAdv (mkIAdv L.far_Adv (SyntaxIta.mkAdv from_Prep x.name)) t) y.name) ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||
Dollar = mkCN (mkN "dollar") ;
|
||||
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") ;
|
||||
Pound = mkCN (mkN "sterlina") ;
|
||||
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" ;
|
||||
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" "Spagna" ;
|
||||
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) ;
|
||||
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")) (SyntaxIta.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxIta.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")) (SyntaxIta.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) ;
|
||||
|
||||
|
||||
-- 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 "costare"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "costare")) 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) ;
|
||||
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("ci vediamo"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("ci vediamo"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("ci vediamo")))
|
||||
(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 "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
|
||||
|
||||
Monday = mkDay "lunedì" ;
|
||||
Tuesday = mkDay "martedì" ;
|
||||
Wednesday = mkDay "mercoledì" ;
|
||||
Thursday = mkDay "giovedì" ;
|
||||
Friday = mkDay "venerdì" ;
|
||||
Saturday = mkDay "sabato" ;
|
||||
Sunday = mkDay "domenica" ;
|
||||
|
||||
Tomorrow = P.mkAdv "domani" ;
|
||||
|
||||
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 (SyntaxIta.mkAdv for_Prep place.name)))) ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl True L.good_A ;
|
||||
TheClosest = mkSuperl False L.near_A ;
|
||||
TheCheapest = mkSuperl False (mkA (mkA "economico") (mkA "meno caro")) ;
|
||||
TheMostExpensive = mkSuperl False (mkA "costoso") ;
|
||||
TheMostPopular = mkSuperl False (mkA "alla moda") ;
|
||||
TheWorst = mkSuperl True L.bad_A ;
|
||||
|
||||
SuperlPlace sup kind =
|
||||
let
|
||||
det : Det = mkDet the_Art (mkOrd sup.s) ;
|
||||
name : NP = case sup.isPre of {
|
||||
True => mkNP det kind.name ; -- il migliore bar
|
||||
False => mkNP the_Art (mkCN (mkAP (mkOrd sup.s)) kind.name) -- il bar più caro
|
||||
}
|
||||
in {
|
||||
name = name ;
|
||||
at = SyntaxIta.mkAdv kind.at name ;
|
||||
to = SyntaxIta.mkAdv kind.to name
|
||||
} ;
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
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 d) (P.mkAdv ("di" ++ d)) ; ---- ?
|
||||
|
||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \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 = E.PrepCN P.in_Prep n
|
||||
} ;
|
||||
|
||||
mkSuperl : Bool -> A -> {s : A ; isPre : Bool} = \b,a ->
|
||||
{s = a ; isPre = b} ;
|
||||
|
||||
open_A = mkA "aperto" ;
|
||||
closed_A = mkA "chiuso" ;
|
||||
|
||||
}
|
||||
385
testsuite/lpgf/phrasebook/WordsJpn.gf
Normal file
385
testsuite/lpgf/phrasebook/WordsJpn.gf
Normal file
@@ -0,0 +1,385 @@
|
||||
--2 Implementations of Words, with Jpnlish as example
|
||||
|
||||
concrete WordsJpn of Words = SentencesJpn **
|
||||
open
|
||||
SyntaxJpn,
|
||||
ParadigmsJpn,
|
||||
(L = LexiconJpn),
|
||||
(P = ParadigmsJpn),
|
||||
(R = ResJpn),
|
||||
-- IrregJpn,
|
||||
ExtraJpn,
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "チーズ" R.Inanim) ; -- "chiizu"
|
||||
Chicken = mkCN (mkN "鶏" R.Inanim "切れ" False) ; -- "tori" "kire"
|
||||
Coffee = mkCN (mkN "コーヒー" R.Inanim "杯" False) ; -- "koohi" "hai" (cups of)
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "肉" R.Inanim "切れ" False) ; -- "niku" "kire"
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "ピザ" R.Inanim "枚" False) ; -- "piza" "mai" (smth flat)
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "お茶" R.Inanim "杯" False) ; -- "ocha" "hai" (cups of)
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "つまらない" ;
|
||||
Cheap = mkA "安い" ; -- "yasui"
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "美味しい" ; -- "oishii"
|
||||
Expensive = mkA "高い" ; -- "takai"
|
||||
Fresh = mkA "新鮮な" ; -- "shinsenna"
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "怪しい" ; -- "ayashii"
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace "空港" "で" ; -- "kuukou" "de"
|
||||
AmusementPark = mkPlace "遊園地" "で" ; -- "yuuenchi" "de"
|
||||
Bank = mkPlace "銀行" "で" ; -- "ginkou" "de"
|
||||
Bar = mkPlace "バー" "で" ; -- "baa" "de"
|
||||
Cafeteria = mkPlace "食堂" "で" ; -- "shokudou" "de"
|
||||
Center = mkPlace "センター" "で" ; -- "sentaa" "de"
|
||||
Cinema = mkPlace "映画館" "で" ; -- "eigakan" "de"
|
||||
Church = mkPlace "教会" "で" ; -- "kyoukai" "de"
|
||||
Disco = mkPlace "ディスコ" "で" ; -- "disuko" "de"
|
||||
Hospital = mkPlace "病院" "で" ; -- "byouin" "de"
|
||||
Hotel = mkPlace "ホテル" "で" ; -- "hoteru" "de"
|
||||
Museum = mkPlace "博物館" "で" ; -- "hakubutsukan" "de"
|
||||
Park = mkPlace "公園" "で" ; -- "kouen" "de"
|
||||
Parking = mkPlace "駐車場" "で" ; -- "chuushajou" "de"
|
||||
Pharmacy = mkPlace "薬局" "で" ; -- "kyoukai" "de"
|
||||
PostOffice = mkPlace "郵便局" "で" ; -- "yuubinkyoku" "de"
|
||||
Pub = mkPlace "パブ" "で" ; -- "pabu" "de"
|
||||
Restaurant = mkPlace "レストラン" "で" ; -- "resutoran" "de"
|
||||
School = mkPlace "学校" "で" ; -- "gakkou" "de"
|
||||
Shop = mkPlace "商店" "で" ; -- "mise" "de"
|
||||
Station = mkPlace "駅" "で" ; -- "eki" "de"
|
||||
Supermarket = mkPlace "スーパー" "で" ; -- "suupaa" "de"
|
||||
Theatre = mkPlace "劇場" "で" ; -- "gekijou" "de"
|
||||
Toilet = mkPlace "お手洗い" "で" ; -- "otearai" "de"
|
||||
University = mkPlace "大学" "で" ; -- "daigaku" "de"
|
||||
Zoo = mkPlace "動物園" "で" ; -- "doubutsuen" "de"
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit.prop (mkN "レストラン")) in_Prep to_Prep ; -- "resutoran"
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCur "デンマーク・クローネ" | mkCur "クローナ" ; -- "denmaaku kuroune"
|
||||
Dollar = mkCur "ドル" ; -- "doru"
|
||||
Euro = mkCur "ユーロ" ; -- "yuuro"
|
||||
Lei = mkCur "レウ" ; -- "reu"
|
||||
Leva = mkCur "レフ" ; -- "refu"
|
||||
NorwegianCrown = mkCur "ノルウェー・クローネ" | mkCur "クローナ" ; -- "noruwee kuroune"
|
||||
Pound = mkCur "ポンド" ; -- "pondo"
|
||||
Rouble = mkCur "ルーブル" ; -- "ruuburu"
|
||||
Rupee = mkCur "ルピ" ; -- "rupii"
|
||||
SwedishCrown = mkCur "スウェーデン・クローナ" | mkCur "クローナ" ; -- "Suu~eeden kurouna"
|
||||
Zloty = mkCur "ズロティ" ; -- "zuroti"
|
||||
Yuan = mkCur "元" ; -- "gen"
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = {prop = mkA "ベルギー の" ; citizenship = mkNP (mkN "ベルギー 人")} ; -- "berugii no"
|
||||
Belgium = mkNP (mkPN "ベルギー") ; -- "berugii"
|
||||
Bulgarian = mkNat "ブルガリア" ; -- "burugaria"
|
||||
Catalan = mkNat "カタロニア" ; -- "kataronia"
|
||||
Chinese = mkNat"中国" ; -- "chuugoku"
|
||||
Danish = mkNat "デンマーク" ; -- "denmaaku"
|
||||
Dutch = mkNat "オランダ" ; -- "oranda"
|
||||
English = mkNPNationality (mkNP (mkPN "英語")) (mkNP (mkPN "イギリス")) -- "eigo"
|
||||
(mkA "イギリスの") (mkNP (mkPN "イギリス人")) ;
|
||||
Finnish = mkNat "フィンランド" ; -- "finrando"
|
||||
Flemish = mkNP (mkPN "フラマン 語") ; -- "furaman go"
|
||||
French = mkNat "フランス" ; -- "furansu"
|
||||
German = mkNat "ドイツ" ; -- "doitsu"
|
||||
Hindi = mkNP (mkPN "ヒンディー語") ; -- "hindii"
|
||||
India = mkNP (mkPN "インド") ; -- "indo"
|
||||
Indian = {prop = mkA "インドの" ; citizenship = mkNP (mkN "インド人")} ; -- "indo no"
|
||||
Italian = mkNat "イタリア" ; -- "itaria"
|
||||
Norwegian = mkNat "ノルウェー" ; -- "noruwee"
|
||||
Polish = mkNat "ポーランド" ; -- "porando"
|
||||
Romanian = mkNat "ルーマニア" ; -- "ruumania"
|
||||
Russian = mkNat "ロシア" ; -- "roshia"
|
||||
Spanish = mkNat "スペイン" ; -- "supein"
|
||||
Swedish = mkNat "スウェーデン" ; -- "suweeden"
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "バス") ; -- "basu"
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "フェリー") ; -- "ferii"
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "地下鉄") ; -- "chikatetsu"
|
||||
Taxi = mkTransport (mkN "タクシー") ; -- "takushii"
|
||||
Train = mkTransport (mkN "電車") ; -- "densha"
|
||||
Tram = mkTransport (mkN "市電") ; -- "shiden"
|
||||
|
||||
ByFoot = P.mkAdv "徒歩で" ; -- "toho de"
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num (mkNounWOCounter "歳")) ;
|
||||
AHasChildren p num = mkCl p.name (mkV2 "いる" "が" R.Gr2) (mkNP num L.child_N) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHasRoom p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "部屋")) (SyntaxJpn.mkAdv for_Prep (mkNP num (mkNounWOCounter "人")))) ; -- "heya"
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "テーブル")) (SyntaxJpn.mkAdv for_Prep (mkNP num (mkNounWOCounter "人")))) ;
|
||||
AHungry p = mkCl p.name (P.mkV "お腹が空いている" R.Gr1) ; -- "onaka ga suite iru"
|
||||
AIll p = mkCl p.name (mkA "病気の") ;
|
||||
AKnow p = mkCl p.name mkKnow ;
|
||||
ALike p item = mkCl p.name (mkA2 "好きな" "が") item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "住んでいる" R.Gr2)) (SyntaxJpn.mkAdv in_Prep co)) ; -- "sundeiru"
|
||||
ALove p q = mkCl p.name (mkV2 "愛している" "を" R.Gr2) q.name ; -- "aishiteiru"
|
||||
AMarried p = mkCl p.name (mkA "結婚している" "既婚の") ; -- "kekkonshiteiru" "kikonno"
|
||||
AReady p = mkCl p.name L.ready_A ;
|
||||
AScared p = mkCl p.name (mkA "怖い") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = mkCl p.name (mkA "喉が乾いている" "渇した") ;
|
||||
-- "nodo ga kawaiteiru" "kasshita"
|
||||
ATired p = mkCl p.name (mkA "疲れている" "疲れた") ;
|
||||
-- "tsukareteiru" "tsukareta"
|
||||
AUnderstand p = case p.name.meaning of {
|
||||
R.SomeoneElse => mkCl p.name (v2toVP L.understand_V2) ;
|
||||
R.Me => mkCl p.name (mkV "分かる" R.Gr1) -- "wakaru"
|
||||
} ;
|
||||
AWant p obj = case (p.name).meaning of {
|
||||
R.Me => mkCl p.name (mkA2 "欲しい" "が") obj ;
|
||||
R.SomeoneElse => mkCl p.name (mkA2 "欲しがっている" "欲しい" "が") obj
|
||||
} ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl (mkIComp whatSg_IP) (nameOf p)) ;
|
||||
QWhatAge p = mkQS (mkQCl howOld_IAdv (mkCl p.name R.mkCopula)) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "かかる"))) ;
|
||||
ItCost item price = mkCl item (mkV2 "かかる" "" R.Gr1) price ;
|
||||
|
||||
PropOpen p = mkCl p.name mkOpen ;
|
||||
PropClosed p = mkCl p.name mkClosed ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP mkOpen) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP mkClosed) d) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP mkOpen) d.habitual) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP mkClosed) d.habitual) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (ss ("会いましょう"))) ; -- "aimashou"
|
||||
PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (ss ("会いましょう"))) ; -- "aimashou"
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
|
||||
(lin Text (ss ("会いましょう"))) ; -- "aimashou"
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf (mkN "妻" "奥さん" R.Anim "人" False "妻たち") ; -- "tsuma" "okusan"
|
||||
Husband = xOf (mkN "夫" "ご主人" R.Anim "人" False "夫たち") ; -- "otto" "goshujin"
|
||||
Son = xOf (mkN "息子" "息子さん" R.Anim "人" False "息子たち") ; -- "musuko"
|
||||
Daughter = xOf (mkN "娘" "お嬢さん" R.Anim "人" False "娘たち") ; -- "musume" "ojousan"
|
||||
Children = xOf L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "月曜日" ; -- "getsuyoubi"
|
||||
Tuesday = mkDay "火曜日" ; -- "kayoubi"
|
||||
Wednesday = mkDay "水曜日" ; -- "suiyoubi"
|
||||
Thursday = mkDay "木曜日" ; -- "mokuyoubi"
|
||||
Friday = mkDay "金曜日" ; -- "kin'youbi"
|
||||
Saturday = mkDay "土曜日" ; -- "doyoubi"
|
||||
Sunday = mkDay "日曜日" ; -- "nichiyoubi"
|
||||
|
||||
Tomorrow = P.mkAdv "明日" ; -- "ashita"
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "安い") ; -- "yasui"
|
||||
TheMostExpensive = mkSuperl (mkA "高い") ; -- "takai"
|
||||
TheMostPopular = mkSuperl (mkA "盛んな") ; -- "sakanna"
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl howFar_IAdv (mkCl place.name (mkA "遠い"))) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl howFar_IAdv (mkCl (mkNP y.name (SyntaxJpn.mkAdv from_Prep x.name)) (mkA "遠い"))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl howFar_IAdv (mkCl
|
||||
(mkNP y.name (SyntaxJpn.mkAdv from_Prep (mkNP x.name t))) (mkA "遠い"))) ;
|
||||
HowFarBy y t = mkQS (mkQCl howFar_IAdv (mkCl (mkNP y.name t) (mkA "遠い"))) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
|
||||
mkNat : Str -> NPNationality = \co ->
|
||||
mkNPNationality (mkNP (mkPN (co + "語"))) (mkNP (mkPN co))
|
||||
(mkA (co + "の")) (mkNP (mkPN (co + "人"))) ; ---- mkA ...
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day : NP = mkNP (mkPN d) in
|
||||
mkNPDay day (SyntaxJpn.mkAdv in_Prep day)
|
||||
(SyntaxJpn.mkAdv in_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
|
||||
mkCNPlace (mkCN (P.mkN (comp + p))) (P.mkPrep i) to_Prep ;
|
||||
|
||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||
|
||||
xOf : N -> NPPerson -> NPPerson = \f,p ->
|
||||
{name = mkNP the_Det (mkCN f (SyntaxJpn.mkAdv possess_Prep p.name)) ;
|
||||
isPron = False ; poss = the_Quant} ; ---- poss not used
|
||||
|
||||
mkOpen : A = mkA "開いている" "開いた" ; -- "aiteiru"
|
||||
mkClosed : A = mkA "閉まっている" "閉まった" ; -- "shimatteiru"
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf (mkN "名前") p).name ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxJpn.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxJpn.mkDet the_Art (SyntaxJpn.mkOrd a) ;
|
||||
|
||||
howFar_IAdv : IAdv = lin IAdv {s = \\st => "どのくらい" ; particle = "" ; wh8re = False} ;
|
||||
|
||||
howOld_IAdv : IAdv = lin IAdv {s = \\st => "何歳" ; particle = "" ; wh8re = False} ;
|
||||
|
||||
mkCur : Str -> Currency = \c -> lin Currency (lin CN {
|
||||
s = \\n,st => c ;
|
||||
anim = R.Inanim ;
|
||||
counter = c ;
|
||||
counterReplace = True ;
|
||||
counterTsu, hasAttr = False ;
|
||||
object, prepositive = \\st => ""
|
||||
} ) ;
|
||||
|
||||
mkNounWOCounter : Str -> CN = \noun -> lin CN {
|
||||
s = \\n,st => noun ;
|
||||
anim = R.Inanim ;
|
||||
counter = noun ;
|
||||
counterReplace = True ;
|
||||
counterTsu, hasAttr = False ;
|
||||
object, prepositive = \\st => ""
|
||||
} ;
|
||||
|
||||
mkKnow : V = lin V {
|
||||
s = table {
|
||||
R.Resp => table {
|
||||
(R.TPres|R.TFut) => table {
|
||||
R.Pos => "知っています" ;
|
||||
R.Neg => "知りません"
|
||||
} ;
|
||||
R.TPast => table {
|
||||
R.Pos => "知っていました" ;
|
||||
R.Neg => "知りませんでした"
|
||||
}
|
||||
} ;
|
||||
R.Plain => table {
|
||||
(R.TPres|R.TFut) => table {
|
||||
R.Pos => "知っている" ;
|
||||
R.Neg => "知らない"
|
||||
} ;
|
||||
R.TPast => table {
|
||||
R.Pos => "知っていた" ;
|
||||
R.Neg => "知らなかった"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = table {
|
||||
R.Pos => "知って" ;
|
||||
R.Neg => "知らないで"
|
||||
} ;
|
||||
a_stem = "知ら" ;
|
||||
i_stem = "知り" ;
|
||||
ba = table {
|
||||
R.Pos => "知れば" ;
|
||||
R.Neg => "知らなければ"
|
||||
} ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat "タイ" ; -- "tai"
|
||||
Baht = mkCur "バーツ" ; -- "baatsu"
|
||||
|
||||
Rice = mkCN (mkN "ご飯") ; -- "gohan"
|
||||
Pork = mkCN (mkN "豚肉") ; -- "butaniku"
|
||||
Beef = mkCN (mkN "牛肉") ; -- "gyuuniku"
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "ヌードル") ; -- "nuudoru"
|
||||
Shrimps = mkCN (mkN "海老") ; -- "ebi"
|
||||
Chili = mkCN (mkN "チリ") ; -- "chiri"
|
||||
Garlic = mkCN (mkN "大蒜") ; -- "ninniku"
|
||||
Durian = mkCN (mkN "ドリアン") ; -- "dorian"
|
||||
Mango = mkCN (mkN "マンゴ") ; -- "mango"
|
||||
Pineapple = mkCN (mkN "パイナップル") ; -- "painappuru"
|
||||
Coke = mkCN (mkN "コーク") ; -- "kooku"
|
||||
IceCream = mkCN (mkN "アイスクリーム") ; -- "aisukuriimu"
|
||||
Salad = mkCN (mkN "サラダ") ; -- "sarada"
|
||||
OrangeJuice = mkCN (mkN "オレンジジュース") ; -- "orenjijuusu"
|
||||
Lemonade = mkCN (mkN "レモネード") ; -- "remoneedo"
|
||||
|
||||
Beach = mkPlace "beach" "on" ;
|
||||
|
||||
ItsRaining = mkCl (mkVP R.mkRain) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (P.mkA "風が強い")) ;
|
||||
SunShine = mkCl (mkNP L.sun_N) (mkVP (mkV "輝いている" R.Gr2)) ;
|
||||
-- "taiyou wa kagayaite iru"
|
||||
|
||||
Smoke = mkVP (P.mkV "煙草を吸う" R.Gr1) ; -- "tabako o suu"
|
||||
|
||||
ADoctor = mkProfession (mkN "医者") ; -- "isha"
|
||||
AProfessor = mkProfession (mkN "教授") ; -- "kyouju"
|
||||
ALawyer = mkProfession (mkN "弁護士") ; -- "bengoshi"
|
||||
AEngineer = mkProfession (mkN "技術者") ; -- "gijutsusha"
|
||||
ATeacher = mkProfession (mkN "先生") ; -- "sensei"
|
||||
ACook = mkProfession (mkN "料理人") ; -- "ryourinin"
|
||||
AStudent = mkProfession (mkN "学生") ; -- "gakusei"
|
||||
ABusinessman = mkProfession (mkN "実業家") ; -- "jitsugyouka"
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
}
|
||||
319
testsuite/lpgf/phrasebook/WordsLav.gf
Normal file
319
testsuite/lpgf/phrasebook/WordsLav.gf
Normal file
@@ -0,0 +1,319 @@
|
||||
--# -path=.:present
|
||||
|
||||
concrete WordsLav of Words = SentencesLav **
|
||||
open
|
||||
SyntaxLav,
|
||||
ParadigmsLav,
|
||||
(P = ParadigmsLav),
|
||||
(L = LexiconLav),
|
||||
ExtraLav,
|
||||
ResLav,
|
||||
Prelude,
|
||||
Predef
|
||||
in {
|
||||
|
||||
flags
|
||||
coding = utf8 ;
|
||||
|
||||
lin
|
||||
-- Kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (mkN "vista") ;
|
||||
Coffee = mkCN (mkN "kafija") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN L.meat_N ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pica") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "tēja") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "garlaicīgs" ;
|
||||
Cheap = mkA "lēts" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "garšīgs" ;
|
||||
Expensive = mkA "dārgs" ;
|
||||
Fresh = mkA "svaigs" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "aizdomīgs" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places
|
||||
|
||||
Airport = mkPlace "lidosta" in_Prep ;
|
||||
AmusementPark = mkPlace "atrakciju parks" in_Prep ;
|
||||
Bank = mkPlace "banka" in_Prep ;
|
||||
Bar = mkPlace "bārs" in_Prep ;
|
||||
Cafeteria = mkPlace "kafejnīca" in_Prep ;
|
||||
Center = mkPlace "centrs" in_Prep ;
|
||||
Cinema = mkPlace "kino" in_Prep ;
|
||||
Church = mkPlace "baznīca" in_Prep ;
|
||||
Disco = mkPlace "diskotēka" in_Prep ;
|
||||
Hospital = mkPlace "slimnīca" in_Prep ;
|
||||
Hotel = mkPlace "viesnīca" in_Prep ;
|
||||
Museum = mkPlace "muzejs" in_Prep ;
|
||||
Park = mkPlace "parks" in_Prep ;
|
||||
Parking = mkPlace "autostāvvieta" in_Prep ;
|
||||
Pharmacy = mkPlace "aptieka" in_Prep ;
|
||||
PostOffice = mkPlace "pasts" in_Prep ;
|
||||
Pub = mkPlace "krogs" in_Prep ;
|
||||
Restaurant = mkPlace "restorāns" in_Prep ;
|
||||
School = mkPlace "skola" in_Prep ;
|
||||
Shop = mkPlace "veikals" in_Prep ;
|
||||
Station = mkPlace "stacija" in_Prep ;
|
||||
Supermarket = mkPlace "lielveikals" in_Prep ;
|
||||
Theatre = mkPlace "teātris" in_Prep ;
|
||||
Toilet = mkPlace "tualete" in_Prep ;
|
||||
University = mkPlace "universitāte" in_Prep ;
|
||||
Zoo = mkPlace "zoodārzs" in_Prep ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restorāns")) in_Prep to_Prep ;
|
||||
|
||||
-- Currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "dāņu") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Dollar = mkCN (mkN "dolārs") ;
|
||||
Euro = mkCN (mkN "eiro") ;
|
||||
Lei = mkCN (mkN "leja") ;
|
||||
Leva = mkCN (mkN "leva") ;
|
||||
NorwegianCrown = mkCN (mkA "norvēģu") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Pound = mkCN (mkN "mārciņa") ;
|
||||
Rouble = mkCN (mkN "rublis") ;
|
||||
SwedishCrown = mkCN (mkA "zviedru") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Zloty = mkCN (mkN "zlots") ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA "beļģu" ;
|
||||
Belgium = mkNP (mkPN "Beļģija") ;
|
||||
Bulgarian = mkNat (mkA "bulgāru") (P.mkAdv "bulgāriski") (mkPN "Bulgārija") ;
|
||||
Catalan = mkNat (mkA "kataloniešu") (P.mkAdv "kataloniski") (mkPN "Katalonija") ;
|
||||
Danish = mkNat (mkA "dāņu") (P.mkAdv "dāniski") (mkPN "Dānija") ;
|
||||
Dutch = mkNat (mkA "holandiešu") (P.mkAdv "holandiski") (mkPN "Nīderlande") ;
|
||||
English = mkNat (mkA "angļu") (P.mkAdv "angliski") (mkPN "Anglija") ;
|
||||
Finnish = mkNat (mkA "somu") (P.mkAdv "somiski") (mkPN "Somija") ;
|
||||
Flemish = mkLang (mkA "flāmu") (P.mkAdv "flāmiski") ;
|
||||
French = mkNat (mkA "franču") (P.mkAdv "franciski") (mkPN "Francija") ;
|
||||
German = mkNat (mkA "vācu") (P.mkAdv "vāciski") (mkPN "Vācija") ;
|
||||
Italian = mkNat (mkA "itāļu") (P.mkAdv "itāliski") (mkPN "Itālija") ;
|
||||
Norwegian = mkNat (mkA "norvēģu") (P.mkAdv "norvēģiski") (mkPN "Norvēģija") ;
|
||||
Polish = mkNat (mkA "poļu") (P.mkAdv "poliski") (mkPN "Polija") ;
|
||||
Romanian = mkNat (mkA "rumāņu") (P.mkAdv "rumāniski") (mkPN "Rumānija") ;
|
||||
Russian = mkNat (mkA "krievu") (P.mkAdv "krieviski") (mkPN "Krievija") ;
|
||||
Spanish = mkNat (mkA "spāņu") (P.mkAdv "spāniski") (mkPN "Spānija") ;
|
||||
Swedish = mkNat (mkA "zviedru") (P.mkAdv "zviedriski") (mkPN "Zviedrija") ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "autobuss") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "prāmis") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "metro") ;
|
||||
Taxi = mkTransport (mkN "taksometrs") ;
|
||||
Train = mkTransport (mkN "vilciens") ;
|
||||
Tram = mkTransport (mkN "tramvajs") ;
|
||||
ByFoot = P.mkAdv "kājām" ;
|
||||
|
||||
-- Actions
|
||||
|
||||
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_V3 (mkNP a_Det (mkN "istaba")) (mkNP num (mkN "persona")) ;
|
||||
AHasTable p num = mkCl p.name have_V3 (mkNP a_Det (mkN "galdiņš")) (mkNP num (mkN "persona")) ;
|
||||
|
||||
AHasName p name =
|
||||
mkCl p.name (mkV2 (mkV "saukt" "saucu" "saucu" Acc) nom_Prep) name |
|
||||
mkCl (nameOf p) name ;
|
||||
|
||||
AHungry p = mkCl p.name (mkA (mkV "izsalkt" "izsalkstu" "izsalku") active_voice) ;
|
||||
AIll p = mkCl p.name (mkA "slims") ;
|
||||
AKnow p = mkCl p.name (mkV "zināt" third_conjugation) ;
|
||||
ALike p item = mkCl p.name (mkV2 (mkV "garšot" second_conjugation Dat) nom_Prep) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "dzīvot" second_conjugation)) (SyntaxLav.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name L.love_V2 q.name ;
|
||||
AMarried p = mkCl p.name (mkA (mkV "precēties" third_conjugation) active_voice) ;
|
||||
AReady p = mkCl p.name (mkA "gatavs") ;
|
||||
|
||||
AScared p =
|
||||
mkCl p.name (mkV "baidīties" third_conjugation) |
|
||||
mkCl p.name (mkA (mkV "nobīties" "nobīstos" "nobijos") active_voice) ;
|
||||
|
||||
ASpeak p lang =
|
||||
mkCl p.name (mkVP (mkVP (mkV "runāt" second_conjugation)) lang.modif) |
|
||||
mkCl p.name (mkV2 (mkV "runāt" second_conjugation) loc_Prep) lang.lang ;
|
||||
|
||||
AThirsty p = mkCl p.name (mkA (mkV "izslāpt" "izslāpstu" "izslāpu") active_voice) ;
|
||||
ATired p = mkCl p.name (mkA (mkV "nogurt" "nogurstu" "noguru") active_voice) ;
|
||||
AUnderstand p = mkCl p.name (mkV "saprast" "saprotu" "sapratu") ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV "vēlēties" third_conjugation)) obj ;
|
||||
|
||||
-- TODO: IrregLav.doties_V
|
||||
AWantGo p place = mkCl p.name (mkVV (mkV "vēlēties" third_conjugation)) (mkVP (mkVP (mkV "doties" "dodos" "devos")) place.to) ;
|
||||
---- mkVV by AR 28/8/2012
|
||||
|
||||
-- Quick & dirty, or ok?
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (mkV2 (mkV "saukt" "saucu" "saucu" Acc) nom_Prep) (mkNP (mkN [])))) ;
|
||||
|
||||
-- Quick & dirty
|
||||
-- TODO: how8much_IAdv >>> how8many_IDet (but the word order!) or how8many_IAdv
|
||||
-- mkNP a_Quant pluralNum L.year_N >>> mkNP pluralNum L.year_N
|
||||
-- Cannot use have_V2 because of a different valence
|
||||
QWhatAge p = mkQS (mkQCl how8much_IAdv (mkCl p.name (mkV2 (mkV "būt" Dat) gen_Prep) (mkNP the_Quant pluralNum L.year_N))) ;
|
||||
|
||||
-- Quick & dirty
|
||||
-- TODO: item is the subject >>> use NP -> V -> Cl (changing the default word order)
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl (mkVP (mkV2 (mkV "maksāt" second_conjugation) nom_Prep) item))) ;
|
||||
|
||||
ItCost item price = mkCl item (mkV2 (mkV "maksāt" second_conjugation) acc_Prep) 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) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
PSeeYouDate d = mkText (lin Text (ss ("tiksimies"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("tiksimies"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d = mkText (lin Text (ss ("tiksimies"))) (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
Wife = xOf sing (mkN "sieva") ;
|
||||
Husband = xOf sing (mkN "vīrs") ;
|
||||
Son = xOf sing (mkN "dēls") ;
|
||||
Daughter = xOf sing (mkN "meita") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "pirmdiena" ;
|
||||
Tuesday = mkDay "otrdiena" ;
|
||||
Wednesday = mkDay "trešdiena" ;
|
||||
Thursday = mkDay "ceturtdiena" ;
|
||||
Friday = mkDay "piektdiena" ;
|
||||
Saturday = mkDay "sestdiena" ;
|
||||
Sunday = mkDay "svētdiena" ;
|
||||
|
||||
Tomorrow = P.mkAdv "rīt" ;
|
||||
|
||||
-- modifiers of places
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "lēts") ;
|
||||
TheMostExpensive = mkSuperl (mkA "dārgs") ;
|
||||
TheMostPopular = mkSuperl (mkA "populārs") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
-- transports
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxLav.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t = mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxLav.mkAdv from_Prep (mkNP x.name t)))) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl y.name t)) ;
|
||||
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))) ;
|
||||
|
||||
oper
|
||||
mkLang : A -> Adv -> NPLanguage = \la,mo -> {
|
||||
lang = mkNP (mkCN la (mkN "valoda")) ;
|
||||
modif = mo
|
||||
} ;
|
||||
|
||||
mkNat : A -> Adv -> PN -> NPNationality = \la,mo,co ->
|
||||
mkNPNationality (mkLang la mo) (mkNP co) la ;
|
||||
|
||||
mkDay : Str -> NPDay = \d ->
|
||||
mkNPDay (mkNP (mkPN d))
|
||||
(P.mkAdv (Predef.tk 1 d))
|
||||
(SyntaxLav.mkAdv in_Prep (mkNP the_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
--mkCompoundPlace : Str -> Str -> Prep -> {
|
||||
-- name : CN ;
|
||||
-- at : Prep ;
|
||||
-- to : Prep ;
|
||||
-- isPl : Bool
|
||||
--} = \comp,p,i -> mkCNPlace (mkCN (P.mkN comp (mkN p))) i to_Prep ;
|
||||
|
||||
mkPlace : Str -> Prep -> {name : CN ; at : SyntaxLav.Prep ; to : SyntaxLav.Prep ; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN p)) i to_Prep ; ---- SyntaxLav.Prep by AR 28/8/2012
|
||||
|
||||
open_A = P.mkA "atvērts" ;
|
||||
|
||||
closed_A = P.mkA "slēgts" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p ->
|
||||
(xOf sing (mkN "vārds") p).name ;
|
||||
|
||||
mkTransport : N -> {
|
||||
name : CN ;
|
||||
by : Adv
|
||||
} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxLav.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a ->
|
||||
SyntaxLav.mkDet the_Art (SyntaxLav.mkOrd a) ;
|
||||
|
||||
far_IAdv = ExtraLav.IAdvAdv (mkAdv "tālu") ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat (mkA "taizemiešu") (mkPN "Taizeme") ;
|
||||
Baht = mkCN (mkN "bats") ;
|
||||
Rice = mkCN (mkN "rīss") ;
|
||||
Pork = mkCN (mkN "cūkgaļa") ;
|
||||
Beef = mkCN (mkN "liellops") ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "nūdele") ;
|
||||
Shrimps = mkCN (mkN "garnele") ;
|
||||
Chili = mkCN (mkN "čili") ;
|
||||
Garlic = mkCN (mkN "ķiploks") ;
|
||||
Durian = mkCN (mkN "durians") ;
|
||||
Mango = mkCN (mkN "mango") ;
|
||||
Pineapple = mkCN (mkN "ananass") ;
|
||||
Coke = mkCN (mkN "kola") ;
|
||||
IceCream = mkCN (mkN "saldējums") ;
|
||||
Salad = mkCN (mkN "salāts") ;
|
||||
OrangeJuice = mkCN (mkA "apelsīnu") (mkN "sula") ;
|
||||
Lemonade = mkCN (mkN "limonāde") ;
|
||||
Beach = mkPlace "pludmale" in_Prep ;
|
||||
ItsRaining = mkCl (progressiveVP (mkVP L.rain_V0)) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (P.mkA "vējains")) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (progressiveVP (mkVP (mkV "spīdēt" third_conjugation))) ;
|
||||
Smoke = mkVP (P.mkV "smēķēt" second_conjugation) ;
|
||||
ADoctor = mkProfession (mkN "ārsts") ;
|
||||
AProfessor = mkProfession (mkN "profesors") ;
|
||||
ALawyer = mkProfession (mkN "jurists") ;
|
||||
AEngineer = mkProfession (mkN "inženieris") ;
|
||||
ATeacher = mkProfession (mkN "skolotājs") ;
|
||||
ACook = mkProfession (mkN "pavārs") ;
|
||||
AStudent = mkProfession (mkN "students") ;
|
||||
ABusinessman = mkProfession (mkN "uzņēmējs") ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
|
||||
}
|
||||
273
testsuite/lpgf/phrasebook/WordsNor.gf
Normal file
273
testsuite/lpgf/phrasebook/WordsNor.gf
Normal file
@@ -0,0 +1,273 @@
|
||||
-- (c) 2009 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsNor of Words = SentencesNor **
|
||||
open SyntaxNor, ParadigmsNor, IrregNor, (L = LexiconNor), ExtraNor, StructuralNor, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN (mkN "eple" "eplet" "epler" "eplene") ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "ost" "osten" "oster" "ostene") ;
|
||||
Chicken = mkCN (mkN "kylling" "kyllingen" "kyllinger" "kyllingene") ;
|
||||
Coffee = mkCN (mkN "kaffe" "kaffet" "kaffen" "kaffene") ; -- av kaffe ?
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "kjøtt" "kjøttet" "kjøtt" "kjøtta") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza" "pizzaen" "pizzaer" "pizzaene") ; -- av pizza ?
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "te" "teen" "teer" "teene") ; -- av te ?
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Cheap = mkA "billig" ;
|
||||
Boring = mkA "kjedelig" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "deilig" ;
|
||||
Expensive = mkA "dyr" ;
|
||||
Fresh = mkA "fersk" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "suspekt" "suspekt" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
|
||||
Airport = mkPlace (mkN "flyplass" "flyplassen" "flyplasser" "flyplassene") "på" "til";
|
||||
AmusementPark = mkPlace (mkN "fornøyelsespark" "fornøyelsesparken" "fornøyelsesparker" "fornøyelsesparkene") "i" "til";
|
||||
Bank = mkPlace (mkN "bank" "banken" "banker" "bankene") "i" "til";
|
||||
Bar = mkPlace (mkN "bar" "baren" "barer" "barene") "i" "til"; -- ?? check forms
|
||||
Cafeteria = mkPlace (mkN "kafeteria" "kafeterian" "kafeterier" "kafeteriene") "i" "til";
|
||||
Center = mkPlace (mkN "sentrum" "sentrum" "sentre" "sentrene") "i" "til";
|
||||
Cinema = mkPlace (mkN "kino" "kino" "kinoer" "kinoene") "på" "på";
|
||||
Church = mkPlace (mkN "kirke" "kirka" "kirker" "kirkene") "i" "til";
|
||||
Disco = mkPlace (mkN "diskotek" "diskoteket" "diskoteker" "diskotekene") "på" "på";
|
||||
Hospital = mkPlace (mkN "sykehus" "sykehuset" "sykehus" "sykehusa") "på" "til";
|
||||
|
||||
Hotel = mkPlace (mkN "hotel" "hotellet" "hoteller" "hotellene") "på" "til";
|
||||
Museum = mkPlace (mkN "museum" "museet" "museer" "museene") "i" "til";
|
||||
Park = mkPlace (mkN "park" "parken" "parker" "parkene") "i" "til";
|
||||
Parking = mkPlace (mkN "parkeringsplass" "parkeringsplassen" "parkeringsplasser" "parkeringplassene") "på" "til";
|
||||
Pharmacy = mkPlace (mkN "apotek" "apoteket" "apoteker" "apotekene") "på" "til";
|
||||
PostOffice = mkPlace (mkN "postkontor" "postkontoret" "postkontorer" "postkontorene") "på" "til";
|
||||
Pub = mkPlace (mkN "pub" "puben" "puber" "pubene") "på" "til";
|
||||
Restaurant = mkPlace (mkN "restaurant" "restauranten" "restauranter" "restaurantene") "på" "til";
|
||||
School = mkPlace (mkN "skole" "skola" "skoler" "skolene") "i" "til";
|
||||
Shop = mkPlace (mkN "butikk" "butikken" "butikker" "butikkene") "i" "til";
|
||||
Station = mkPlace (mkN "stasjon" "stasjonen" "stasjoner" "stasjonene") "på" "til";
|
||||
Supermarket = mkPlace (mkN "supermarked" "supermarkedet" "supermarkeder" "supermarkedene") "på" "til";
|
||||
Theatre = mkPlace (mkN "teater" "teatret" "teatre" "teatrene") "på" "til";
|
||||
Toilet = mkPlace (mkN "toalett" "toalettet" "toaletter" "toalettene") "på" "på";
|
||||
University = mkPlace (mkN "universitet" "universitetet" "universitet" "universiteta") "i" "til";
|
||||
Zoo = mkPlace (mkN "dyrepark" "dyreparken" "dyreparker" "dyreparkene") "på" "til";
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant" "restauranten" "restauranter" "restaurantene")) on_Prep to_Prep ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "dansk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
|
||||
Dollar = mkCN (mkN "dollar" "dollaren" "dollar" "dollar") ; -- i dollar ?
|
||||
Euro = mkCN (mkN "euro" "euroen" "euro" "euro") ; -- i euro
|
||||
Lei = mkCN (mkN "leu" "leu" "leis" "leis") ; -- den leis ?
|
||||
Leva = mkCN (mkN "lev" "lev" "leva" "leva") ; -- det leva ?
|
||||
NorwegianCrown = mkCN (mkA "norsk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
|
||||
Pound = mkCN (mkN "pund" "pundet" "pund" "punda") ; -- i pounds ?
|
||||
Rouble = mkCN (mkN "rubel" "rubelen" "rubler" "rublene") ; -- av rubler ?
|
||||
SwedishCrown = mkCN (mkA "svensk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
|
||||
Zloty = mkCN (mkN "zloty" "zloty" "zloty" "zloty") ; -- i/den zloty ?
|
||||
|
||||
-- nationalities
|
||||
|
||||
|
||||
Belgian = mkA "belgisk" ;
|
||||
Belgium = mkNP (mkPN "Belgia") ;
|
||||
Bulgarian = mkNat "bulgarsk" "Bulgaria" ;
|
||||
Catalan = mkNat "katalansk" "Katalonia" ;
|
||||
Danish = mkNat "dansk" "Danmark" ;
|
||||
Dutch = mkNat "nederlandsk" "Nederland" ;
|
||||
English = mkNat "engelsk" "England" ;
|
||||
Finnish = mkNat "finsk" "Finland" ;
|
||||
Flemish = mkNP (mkPN "flamsk") ;
|
||||
French = mkNat "fransk" "Frankrike" ;
|
||||
German = mkNat "tysk" "Tyskland" ;
|
||||
Italian = mkNat "italiensk" "Italia" ;
|
||||
Norwegian = mkNat "norsk" "Norge" ;
|
||||
Polish = mkNat "polsk" "Polen" ;
|
||||
Romanian = mkNat "rumensk" "Romania" ;
|
||||
Russian = mkNat "russisk" "Russland" ;
|
||||
Spanish = mkNat "spansk" "Spania" ;
|
||||
Swedish = mkNat "svensk" "Sverige" ;
|
||||
|
||||
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "buss" "bussen" "busser" "bussene") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "ferge" "fergen" "ferger" "fergene") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "undergrunnsbane" "undergrunnsbanen" "undergrunnsbaner" "undergrunnsbanene") ; -- check ?
|
||||
Taxi = mkTransport (mkN "drosje" "drosja" "drosjer" "drosjene") ;
|
||||
Train = mkTransport (mkN "tog" "toget" "tog" "toga") ;
|
||||
Tram = mkTransport (mkN "trikk" "trikken" "trikker" "trikkene") ;
|
||||
|
||||
ByFoot = ParadigmsNor.mkAdv "til fots" ;
|
||||
|
||||
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasName p name = mkCl p.name (mkV2 hete_V) name ;
|
||||
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 "rom" "rommet" "rommene" "romma"))
|
||||
(SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personen" "personer" "personene")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "bord" "bordet" "bord" "borda"))
|
||||
(SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personen" "personer" "personene")))) ;
|
||||
AHungry p = mkCl p.name (mkA "sulten" "sultet" "sultne") ;
|
||||
AIll p = mkCl p.name (mkA "syk") ;
|
||||
AKnow p = mkCl p.name vite_V ;
|
||||
ALike p item = mkCl p.name (dirV2 (mk2V "like" "likte")) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "bor")) (SyntaxNor.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (dirV2 (regV "elske")) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "gift") ;
|
||||
AReady p = mkCl p.name (mkA "klar") ;
|
||||
AScared p = mkCl p.name (mkA "redd") ;
|
||||
ASpeak p lang = mkCl p.name (dirV2 (regV "snakke")) lang ;
|
||||
AThirsty p = mkCl p.name (mkA "tørstig") ;
|
||||
ATired p = mkCl p.name (mkA "sliten") ;
|
||||
AUnderstand p = mkCl p.name (irregV "forstå" "forstod" "forstått") ;
|
||||
AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 hete_V)) ;
|
||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "koste"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "koste")) 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) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("vi ses")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "kone" "kona" "koner" "konene") ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (mkN "sønn" "sønnen" "sønner" "sønnene") ;
|
||||
Daughter = xOf sing (mkN "datter" "datteren" "døtre" "døtrene") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "mandag" ;
|
||||
Tuesday = mkDay "tirsdag" ;
|
||||
Wednesday = mkDay "onsdag" ;
|
||||
Thursday = mkDay "torsdag" ;
|
||||
Friday = mkDay "fredag" ;
|
||||
Saturday = mkDay "lørdag" ;
|
||||
Sunday = mkDay "søndag" ;
|
||||
|
||||
Tomorrow = ParadigmsNor.mkAdv "i morgen" ;
|
||||
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "billig") ;
|
||||
TheMostExpensive = mkSuperl (mkA "dyr") ;
|
||||
TheMostPopular = mkSuperl (mkA "populær") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to)
|
||||
(SyntaxNor.mkAdv from_Prep x.name)))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to)
|
||||
(SyntaxNor.mkAdv from_Prep x.name)) t))) ;
|
||||
HowFarBy place t =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) t))) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
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 (SyntaxNor.mkAdv on_Prep day)
|
||||
(SyntaxNor.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkPlace : N -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,t ->
|
||||
mkCNPlace (mkCN p) (mkPrep i) (mkPrep t) ;
|
||||
|
||||
open_A = mkA "åpen" "åpent";
|
||||
closed_A = mkA "stengt" "stengt";
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePersonNor n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxNor.mkAdv by8means_Prep (mkNP the_Det n)
|
||||
} ;
|
||||
|
||||
far_IAdv = ExtraNor.IAdvAdv (ParadigmsNor.mkAdv "langt") ;
|
||||
|
||||
how8much_IAdv : IAdv = ss "hvor mye" ** {lock_IAdv = <>};
|
||||
|
||||
relativePersonNor : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson =
|
||||
\n,x,f,p ->
|
||||
let num = if_then_else Num n plNum sgNum in {
|
||||
name = case p.isPron of {
|
||||
True => PossNPPron (mkNP the_Quant num x) p.name ;
|
||||
_ => f num p.name x
|
||||
} ;
|
||||
isPron = False ;
|
||||
poss = mkQuant he_Pron -- not used because not pron
|
||||
} ;
|
||||
|
||||
}
|
||||
289
testsuite/lpgf/phrasebook/WordsPes.gf
Normal file
289
testsuite/lpgf/phrasebook/WordsPes.gf
Normal file
@@ -0,0 +1,289 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
concrete WordsPes of Words = SentencesPes **
|
||||
open
|
||||
SyntaxPes,
|
||||
ResPes,
|
||||
ParadigmsPes,
|
||||
(L = LexiconPes),
|
||||
(P = ParadigmsPes),
|
||||
-- IrregPes,
|
||||
ExtraPes,
|
||||
Prelude in {
|
||||
flags coding = utf8 ;
|
||||
|
||||
-- param Gender = Masc | Fem ;
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN01$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN01 "پنیر" Inanimate) ;
|
||||
Chicken = mkCN (mkN01 "مرغ" Animate) ;
|
||||
Coffee = mkCN (mkN01 "قهوه" Inanimate) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN01 "گوشت" Inanimate) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN01 "پیتزا" Inanimate) ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN01 "چای" Inanimate) ;
|
||||
Water = mkCN L.water_N;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA ["خسته کننده"] ;
|
||||
Cheap = mkA "ارزان" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "خوشمزه" ;
|
||||
Expensive = mkA "گران" ;
|
||||
Fresh = mkA "تازه" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "مشکوک" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace "فرودگاه" "در" ;
|
||||
AmusementPark = mkPlace "شهربازی" "در" ;
|
||||
Bank = mkPlace "بانک" "در" ;
|
||||
Bar = mkPlace "بار" "در" ;
|
||||
Cafeteria = mkPlace ["کافه تریا"] "در" ;
|
||||
Center = mkPlace "مرکز" "در" ;
|
||||
Cinema = mkPlace "سینما" "در" ;
|
||||
Church = mkPlace "کلیسا" "در" ;
|
||||
Disco = mkPlace "دیسکو" "در" ;
|
||||
Hospital = mkPlace "بیمارستان" "در" ;
|
||||
Hotel = mkPlace "هتل" "در" ;
|
||||
Museum = mkPlace "موزه" "در" ;
|
||||
Park = mkPlace "پارک" "در" ;
|
||||
Parking = mkPlace "پارکینگ" "در" ;
|
||||
Pharmacy = mkPlace "داروخانه" "در" ;
|
||||
PostOffice = mkCompoundPlace "اداره" "پست" "در" ;
|
||||
Pub = mkPlace "میخانه" "در" ;
|
||||
Restaurant = mkPlace "رستوران" "در" ;
|
||||
School = mkPlace "مدرسه" "در" ;
|
||||
Shop = mkPlace "مغازه" "در";
|
||||
Station = mkPlace "ایستگاه" "در" ;
|
||||
Supermarket = mkPlace "فروشگاه" "در" ;
|
||||
Theatre = mkPlace "تئاتر" "در" ;
|
||||
Toilet = mkPlace "دستشویی" "در" ;
|
||||
University = mkPlace "دانشگاه" "در";
|
||||
Zoo = mkPlace ["باغ وحش"] "در" ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkCN (mkN01 "رستوران" Inanimate))) in_Prep to_Prep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA "دانمارک") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
|
||||
Dollar = mkCN (mkN01 "دلار" Inanimate) ;
|
||||
Euro = mkCN (mkN01 "یورو" Inanimate) ; -- to prevent euroes
|
||||
Lei = mkCN (mkN01 "لی" Inanimate) ; -- check this
|
||||
Leva = mkCN (mkN01 "لوا" Inanimate) ;
|
||||
NorwegianCrown = mkCN (mkA "نروژ") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
|
||||
Pound = mkCN (mkN01 "پوند" Inanimate) ;
|
||||
Rouble = mkCN (mkN01 "روبل" Inanimate) ;
|
||||
SwedishCrown = mkCN (mkA "سوئد") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
|
||||
Zloty = mkCN (mkN01 "زلوتی" Inanimate) ; check this
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA "بلژیکی" ;
|
||||
Belgium = mkNP (mkPN "بلژیک" Inanimate) ;
|
||||
Bulgarian = mkNat "بلغاری" "بلغارستان" ;
|
||||
Catalan = mkNPNationality (mkNP (mkPN "کاتالان" Inanimate)) (mkNP (mkPN "کاتالان" Inanimate)) (mkA "کاتالان") ;
|
||||
Danish = mkNat "دانمارکی" "دانمارک" ;
|
||||
Dutch = mkNPNationality (mkNP (mkPN "هلندی" Inanimate)) (mkNP the_Quant (mkCN (mkN01 "هلندی" Inanimate))) (mkA "هلندی") ;
|
||||
English = mkNat "انگلیسی" "انگلستان" ;
|
||||
Finnish = mkNat "فنلاندی" "فنلاند" ;
|
||||
Flemish = mkNP (mkPN "فلاندرز" Inanimate) ;
|
||||
French = mkNat "فرانسوی" "فرانسه" ;
|
||||
German = mkNat "آلمانی" "آلمان" ;
|
||||
Italian = mkNat "ایتالیایی" "ایتالیا" ;
|
||||
Norwegian = mkNat "نروژی" "نروژ" ;
|
||||
Polish = mkNat "لهستانی" "لهستان" ;
|
||||
Romanian = mkNat "رومانیایی" "رومانی" ;
|
||||
Russian = mkNat "روسی" "روسیه" ;
|
||||
Spanish = mkNat "اسپانیایی" "اسپانیا" ;
|
||||
Swedish = mkNat "سوئدی" "سوئد" ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN01 "اتوبوس" Inanimate) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN01 "قایق" Inanimate) ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN01 "مترو" Inanimate) ;
|
||||
Taxi = mkTransport (mkN01 "تاکسی" Inanimate) ;
|
||||
Train = mkTransport (mkN01 "قطار" Inanimate) ; -- check this
|
||||
Tram = mkTransport (mkN01 "تراموا" Inanimate) ;
|
||||
|
||||
ByFoot = P.mkAdv "پیاده" ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
-- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsPes.mkAdv "ک"));
|
||||
AHasAge p num = mkCl p.name (mkNP num (mkCN 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 (mkCN (mkN01 "اتاق" Inanimate))) (SyntaxPes.mkAdv for_Prep (mkNP num (mkCN (P.mkN01 "شخص" Animate))))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkCN (mkN01 "میز" Inanimate))) (SyntaxPes.mkAdv for_Prep (mkNP num (mkCN (P.mkN01 "شخص" Animate))))) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHungry p = mkCl p.name (mkA "گرسنه") ;
|
||||
AIll p = mkCl p.name (mkA "بیمار") ;
|
||||
AKnow p = mkCl p.name (mkV "داستن" "دان") ;
|
||||
ALike p item = mkCl p.name (L.like_V2) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxPes.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (L.love_V2) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "متأهل") ;
|
||||
AReady p = mkCl p.name (mkA "آماده") ;
|
||||
AScared p = mkCl p.name (P.mkA "ترسیده") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = mkCl p.name (mkA "تشنه") ;
|
||||
ATired p = mkCl p.name (P.mkA "خسته") ;
|
||||
AUnderstand p = mkCl p.name (mkV "فهمیدن" "فهم") ; -- "فهمید" is the past root and "فهمیدن" is the infinitive
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV "خواستن" "خواه")) obj ;
|
||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) (SyntaxPes.mkAdv (P.mkPrep "به") place.name)) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||
QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (lin N (mkN01 "نام" Inanimate)))) ;
|
||||
-- QWhatAge p = mkQS (mkQCl (mkCl (mkNP p.poss) (P.mkAdv "سال"))) ;
|
||||
QWhatAge p = mkQS (mkQCl howMuchAge_IAdv (mkNP (mkNP p.poss) (P.mkAdv "سال"))) ;
|
||||
-- HowMuchCost item = mkQS (mkQCl (mkCl item (P.mkAdv ["قیمت داشتن"]))) ;
|
||||
HowMuchCost item = mkQS (mkQCl howMuchCost_IAdv (mkNP (lin Predet {s = "قیمت"}) item)) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "قیمت" "")) price ;
|
||||
|
||||
PropOpen p = mkCl p.name open_Adv ;
|
||||
PropClosed p = mkCl p.name closed_Adv ;
|
||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
|
||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
|
||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual);
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkNP d.name open_Adv));
|
||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkNP d.name closed_Adv)) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (Prelude.ss ("شما را"))) (mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("می بینم")))) ;
|
||||
PSeeYouPlace p = mkText (lin Text (Prelude.ss ("شما را"))) (mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("می بینم")))) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (Prelude.ss ("شما را")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("می بینم"))))) ;
|
||||
|
||||
-- Relations are expressed as "می wفe" or "می سْn'س wفe", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "تهe wفe ْف می سْن" for non-pronouns.
|
||||
|
||||
Wife = xOf ssing (mkN01 "زن" Animate) ;
|
||||
Husband = xOf ssing (mkN01 "شوهر" Animate) ;
|
||||
Son = xOf ssing (mkN01 "پسر" Animate) ;
|
||||
Daughter = xOf ssing (mkN01 "دختر" Animate) ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "دوشنبه" ;
|
||||
Tuesday = mkDay "سه شنبه" ;
|
||||
Wednesday = mkDay "چهارشنبه" ;
|
||||
Thursday = mkDay "پنج شنبه" ;
|
||||
Friday = mkDay "جمعه" ;
|
||||
Saturday = mkDay "شنبه" ;
|
||||
Sunday = mkDay "یکشنبه" ;
|
||||
|
||||
Tomorrow = P.mkAdv "فردا" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "ارزان") ;
|
||||
TheMostExpensive = mkSuperl (mkA "گران") ;
|
||||
TheMostPopular = mkSuperl (mkA "پرطرفدار") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv (mkNP tA_Prep place.name)) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP from_Prep x.name) (SyntaxPes.mkAdv tA_Prep y.name ))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP (mkNP from_Prep x.name) (SyntaxPes.mkAdv tA_Prep y.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP (mkNP tA_Prep y.name) t)) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (SyntaxPes.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
|
||||
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||
mkNPNationality (mkNP (mkPN nat Inanimate)) (mkNP (mkPN co Inanimate)) (mkA nat) ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (mkPN d Inanimate) in
|
||||
mkNPDay day (SyntaxPes.mkAdv no_Prep day)
|
||||
(SyntaxPes.mkAdv to_Prep (mkNP a_Quant sgNum (mkCN (mkN01 d Inanimate)))) ; --changed from plNum to sgNum
|
||||
|
||||
mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
|
||||
-- mkCNPlace (mkCN (P.mkN01 comp (mkN01 p))) (P.mkPrep i) to_Prep ;
|
||||
mkCNPlace (mkCN (mkN01 (comp++p) Inanimate)) (P.mkPrep i) to_Prep ;
|
||||
|
||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN01 p Inanimate)) (P.mkPrep i) to_Prep ;
|
||||
-- mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
|
||||
-- mkCNPlace (mkCN (P.mkN01 p Inanimate)) (P.mkPrep i) to_Prep ;
|
||||
|
||||
open_Adv = P.mkAdv "باز";
|
||||
open_Predet = lin Predet {s = "باز"};
|
||||
closed_Adv = P.mkAdv "بسته" ;
|
||||
|
||||
xOf : SentencesPes.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN01 "نام" Inanimate) p).name ;
|
||||
ssing = False ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxPes.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
-- mkSuperl : A -> Det = \a -> SyntaxPes.mkDet the_Art (SyntaxPes.mkOrd a) ;
|
||||
mkSuperl : A -> Det = \a -> lin Det { s = a.s ! Bare ++ "ترین" ; n = Sg ; isNum = False ; mod = Bare} ;
|
||||
|
||||
-- far_IAdv = ExtraPes.IAdvAdv (P.mkAdv "دور") ;
|
||||
far_IAdv = lin IAdv {s = "چقدر راه"} ;
|
||||
howMuchAge_IAdv = lin IAdv {s = "چند"} ;
|
||||
howMuchCost_IAdv = lin IAdv {s = "چقدر"} ;
|
||||
what_IAdv = lin IAdv {s = ["چه چیزی"]} ;
|
||||
no_Prep = lin Prep {s = ""} ;
|
||||
tA_Prep = lin Prep {s = "تا"} ;
|
||||
-------------------
|
||||
--modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"ک" ; g =noun.g} ;
|
||||
--modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
|
||||
--modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
|
||||
|
||||
}
|
||||
354
testsuite/lpgf/phrasebook/WordsPol.gf
Normal file
354
testsuite/lpgf/phrasebook/WordsPol.gf
Normal file
@@ -0,0 +1,354 @@
|
||||
--2 Implementations of Words, with Polish as example
|
||||
|
||||
concrete WordsPol of Words = SentencesPol **
|
||||
open
|
||||
ResPol,
|
||||
SyntaxPol,
|
||||
(L = LexiconPol),
|
||||
(Q = QuestionPol),
|
||||
(N = NounPol),
|
||||
MorphoPol,
|
||||
Prelude in {
|
||||
|
||||
flags
|
||||
optimize =values ; coding =utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN kurczak ;
|
||||
Coffee = mkCN kawa;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN L.meat_N ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN pizza;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN herbata ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA (mkRegAdj "nudny" "nudniejszy" "nudno" "nudniej" );
|
||||
Cheap = mkA (mkRegAdj "tani" "tańszy" "tanio" "taniej" );
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA (mkRegAdj "pyszny" "pyszniejszy" "pysznie" "pyszniej") ;
|
||||
Expensive = mkA (mkRegAdj "drogi" "droższy" "drogo" "drożej" );
|
||||
Fresh = mkA (mkRegAdj "świeży" "świeższy" "świeżo" "świeżej" );
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA (mkCompAdj "podejrzany" "podejrzanie" );
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlaceNa lotnisko ;
|
||||
AmusementPark = mkPlaceDo ["wesołe miasteczko"] ["wesołego miasteczka"] ["wesołym miasteczku"] Neut;
|
||||
Bank = mkPlaceDo "bank" "banku" "banku" (Masc Inanimate);
|
||||
Bar = mkPlaceDo "bar" "baru" "barze" (Masc Inanimate);
|
||||
Cafeteria = mkPlaceDo "stołówka" "stołówki" "stołówce" Fem;
|
||||
Center = mkPlaceDo "centrum" "centrum" "centrum" Neut;
|
||||
Cinema = mkPlaceDo "kino" "kina" "kinie" Neut ;
|
||||
Church = mkPlaceDo "kościół" "kościoła" "kościele" (Masc Inanimate);
|
||||
Disco = mkPlaceNa "dyskoteka" "dyskotekę" "dyskotece" Fem ;
|
||||
Hospital = mkPlaceDo "szpital" "szpitala" "szpitalu" (Masc Inanimate);
|
||||
Hotel = mkPlaceDo "hotel" "hotelu" "hotelu" (Masc Inanimate) ;
|
||||
Museum = mkPlaceDo "muzeum" "muzeum" "muzeum" Neut ;
|
||||
Park = mkPlaceDo "park" "parku" "parku" (Masc Inanimate) ;
|
||||
Parking = mkPlaceNa "parking" "parking" "parkingu" (Masc Inanimate) ;
|
||||
Pharmacy = mkPlaceDo "apteka" "apteki" "aptece" Fem ;
|
||||
PostOffice = mkPlaceNa "poczta" "pocztę" "poczcie" Fem ;
|
||||
Pub = mkPlaceDo "pub" "pubu" "pubie" (Masc Inanimate) ;
|
||||
Restaurant = mkPlaceDo L.restaurant_N;
|
||||
School = mkPlaceDo L.school_N;
|
||||
Shop = mkPlaceDo "sklep" "sklepu" "sklepie" (Masc Inanimate) ;
|
||||
Station = mkPlaceNa "stacja" "stację" "stacji" Fem ;
|
||||
Supermarket = mkPlaceDo "supermarket" "supermarketu" "supermarkecie" (Masc Inanimate) ;
|
||||
Theatre = mkPlaceDo "teatr" "teatru" "teatrze" (Masc Inanimate) ;
|
||||
Toilet = mkPlaceDo "toaleta" "toalety" "toalecie" Fem ;
|
||||
University = mkPlaceNa L.university_N;
|
||||
Zoo = mkPlaceDo "zoo" "zoo" "zoo" Neut ;
|
||||
|
||||
CitRestaurant cit = { name=(mkCN cit.prop (mkCN L.restaurant_N));
|
||||
at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkCurrency "korona duńska" "korony duńskie" "koron duńskich" Fem);
|
||||
Dollar = mkCN dolar ;
|
||||
Euro = mkCN (mkCurrency "euro" "euro" "euro" Neut);
|
||||
Lei = mkCN (mkCurrency "leja" "leje" "lei" Fem);
|
||||
Leva = mkCN (mkCurrency "lew" "lewy" "lewów" (Masc Animate));
|
||||
NorwegianCrown = mkCN (mkCurrency "korona norweska" "korony norweskie" "koron norweskich" Fem);
|
||||
Pound = mkCN (mkCurrency "funt" "funty" "funtów" (Masc Animate));
|
||||
Rouble = mkCN (mkCurrency "rubel" "ruble" "rubli" (Masc Animate));
|
||||
SwedishCrown = mkCN (mkCurrency "korona szwedzka" "korony szwedzkie" "koron szwedzkich" Fem);
|
||||
Zloty = mkCN (mkCurrency "złoty" "złote" "złotych" (Masc Animate));
|
||||
|
||||
-- Nationalities
|
||||
-- język, po języku, obywatelstwo, kraj, obywatelem, obywatelami, obywatelką
|
||||
Belgian = {prop=mkA (mkCompAdj "belgijski"); citizenMSg="Belgiem"; citizenMPl="Belgami"; citizenF="Belgijką"};
|
||||
Belgium = mkNP belgia ;
|
||||
Bulgarian = mkNat "bułgarski" ["po bułgarsku"] "bułgarski" bulgaria "Bułgarem" "Bułgarami" "Bułgarką";
|
||||
Catalan = mkNat "kataloński" ["po katalońsku"] "kataloński" katalonia "Katalończykiem" "Katalończykami" "Katalonką";
|
||||
Danish = mkNat "duński" ["po duńsku"] "duński" katalonia "Duńczykiem" "Duńczykami" "Dunką";
|
||||
Dutch = mkNat "holenderski" ["po holendersku"] "holenderski" holandia "Holendrem" "Holendrami" "Holenderką";
|
||||
English = mkNat "angielski" ["po angielsku"] "angielski" anglia "Anglikiem" "Anglikami" "Angielką";
|
||||
Finnish = mkNat "fiński" ["po fińsku"] "finladzki" finlandia "Finem" "Finami" "Finką";
|
||||
Flemish = mkA (mkCompAdj "flamandzki" ["po flamandzku"]);
|
||||
French = mkNat "francuski" ["po francusku"] "francuski" francja "Framcuzem" "Francuzami" "Francuzką";
|
||||
German = mkNat "niemiecki" ["po niemiecku"] "niemiecki" niemcy "Niemcem" "Niemcami" "Niemką";
|
||||
Italian = mkNat "włoski" ["po włosku"] "włoski" wlochy "Włochem" "Włochami" "Włoszką";
|
||||
Norwegian = mkNat "norweski" ["po norwesku"] "norweski" norwegia "Norwegiem" "Norwegami" "Norweszką";
|
||||
Polish = mkNat "polski" ["po polsku"] "polski" polska "Polakiem" "Polakami" "Polką";
|
||||
Romanian = mkNat "rumuński" ["po rumuńsku"] "rumuński" rumunia "Rumunem" "Rumunami" "Rumunką";
|
||||
Russian = mkNat "rosyjski" ["po rosyjsku"] "rosyjski" rosja "Rosjaninem" "Rosjanami" "Rosjanką";
|
||||
Spanish = mkNat "hiszpański" ["po hiszpańsku"] "hiszpański" hiszpania "Hiszpanem" "Hiszpanami" "Hiszpanką";
|
||||
Swedish = mkNat "szwedzki" ["po szwedzku"] "szwedzki" szwecja "Szwedem" "Szwedami" "Szwedką";
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = {cn = mkCN L.bike_N ; verb="jedzie" };
|
||||
Bus = mkTransport "autobus" "autobusem" (Masc Inanimate) "jedzie";
|
||||
Car = {cn = mkCN L.car_N ; verb="jedzie" };
|
||||
Ferry = mkTransport "prom" "promem" (Masc Inanimate) "płynie";
|
||||
Plane = {cn = mkCN L.airplane_N ; verb="leci" };
|
||||
Subway = mkTransport "metro" "metrem" Neut "jedzie";
|
||||
Taxi = mkTransport "taksówka" "taksówką" Fem "jedzie";
|
||||
Train = mkTransport "pociąg" "pociągiem" (Masc Inanimate) "jedzie";
|
||||
Tram = mkTransport "tramwaj" "tramwajem" (Masc Inanimate) "jedzie";
|
||||
|
||||
ByFoot = ss "pieszo" ** {lock_Adv = <>};
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
AHasAge p num = mkCl p.name have_V2 (mkNP (mkDet num) (mkCN 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 (mkNTable0950 "pokój") (Masc Inanimate))) (SyntaxPol.mkAdv for_Prep (mkNP num (L.person_N)))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (L.table_N)) (SyntaxPol.mkAdv for_Prep (mkNP num (L.person_N)))) ;
|
||||
|
||||
|
||||
|
||||
AHasName p name = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "być" conj1 Imperfective) name.nom));
|
||||
AHungry p = mkCl p.name (mkA (mkRegAdj "głodny" "głodniejszy" "głodno" "głodniej" )) ;
|
||||
AIll p = mkCl p.name (mkA (mkCompAdj "chory")) ;
|
||||
AKnow p = mkCl p.name (mkVP (mkMonoVerb "wiedzieć" conj103 Imperfective)) ;
|
||||
ALike p item = mkCl p.name (L.like_V2) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "mieszkam" conj98 Imperfective) ("w" ++ co.dep!LocPrep)));
|
||||
ALove p q = mkCl p.name (L.love_V2) q.name ;
|
||||
AMarried p = mkCl p.name (case p.name.gn of {
|
||||
MascPersSg|MascAniSg|MascInaniSg|MascPersPl=> mkCompAdj "żonaty";
|
||||
_=>mkCompAdj "zamężny"}) ;
|
||||
AReady p = mkCl p.name (L.ready_A) ;
|
||||
AScared p = mkCl p.name (mkReflVerb (mkMonoVerb "bać" conjbac Imperfective)) ;
|
||||
ASpeak p lang = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "mówić" conj72 Imperfective) lang.advpos)) ;
|
||||
AThirsty p = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "chcieć" conj45 Imperfective) ["pić"]));
|
||||
ATired p = mkCl p.name (mkA (mkCompAdj "zmęczony")) ;
|
||||
AUnderstand p = mkCl p.name (mkVP (mkV "rozumieć" conj101 "zrozumieć" conj101)) ;
|
||||
AWant p obj = mkCl p.name (dirV2 (mkMonoVerb "chcieć" conj45 Imperfective)) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkComplicatedVerb (mkV1 "iść" conj41a "pójść" conj42) place.to.s)) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name
|
||||
(mkVP (mkComplicatedVerb (mkMonoVerb "mieć" conj100 Imperfective) ["na imię"]))));
|
||||
QWhatAge p = mkQS (mkQCl howmany_IAdv (mkCl p.name
|
||||
(mkVP (mkComplicatedVerb (mkMonoVerb "mieć" conj100 Imperfective) ["lat"]))));
|
||||
HowMuchCost item = { s="ile" ++
|
||||
(mkMonoVerb "kosztować" conj53 Imperfective).si!(VFinM (extract_num!item.gn) P3) ++ item.nom;
|
||||
lock_QS=<> } ;
|
||||
ItCost item price = mkCl item (dirV2 (mkMonoVerb "kosztować" conj53 Imperfective) ) price ;
|
||||
|
||||
PropOpen p = mkCl p.name open_A ;
|
||||
PropClosed p = mkCl p.name closed_A ;
|
||||
PropOpenDate p d = mkCl p.name (mkAP d open_A) ;
|
||||
PropClosedDate p d = mkCl p.name (mkAP d closed_A) ;
|
||||
PropOpenDay p d = mkCl p.name (mkAP (ss d.hab) open_A) ;
|
||||
PropClosedDay p d = mkCl p.name (mkAP (ss d.hab) closed_A) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("do zobaczenia"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("do zobaczenia"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("do zobaczenia")))
|
||||
(mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
|
||||
--
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
--
|
||||
Wife p = xOf p N.NumSg L.wife_N ;
|
||||
Husband p = xOf p N.NumSg L.husband_N ;
|
||||
Son p = xOf p N.NumSg (mkPer "syn" "syna" "syna" (Masc Personal)) ;
|
||||
Daughter p = xOf p N.NumSg (mkPer "córka" "córki" "córkę" Fem );
|
||||
Children p = xOf p N.NumPl L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = { name="poniedziałek"; hab=["w poniedziałki"]; adv=["w poniedziałek"] } ;
|
||||
Tuesday = { name="wtorek"; hab=["we wtorki"]; adv=["we wtorek"] } ;
|
||||
Wednesday = { name="środa"; hab=["we środy"]; adv=["we środę"] } ;
|
||||
Thursday = { name="czwartek"; hab=["w czwartki"]; adv=["w czwartek"] } ;
|
||||
Friday = { name="piątek"; hab=["w piątki"]; adv=["w piątek"] } ;
|
||||
Saturday = { name="sobota"; hab=["w soboty"]; adv=["w sobotę"] } ;
|
||||
Sunday = { name="niedziela"; hab=["w niedziele"]; adv=["w niedzielę"] } ;
|
||||
|
||||
Tomorrow = (ss "jutro") ** {lock_Adv = <>} ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA (mkRegAdj "tani" "tańszy" "tanio" "taniej") );
|
||||
TheMostExpensive = mkSuperl (mkA (mkRegAdj "drogi" "droższy" "drogo" "drożej" ) );
|
||||
TheMostPopular = mkSuperl (mkA (mkRegAdj "popularny" "popularniejszy" "popularnie" "popularniej" ) ) ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
HowFar place = mkQS (Q.QuestIComp (Q.CompIAdv far_IAdv) place.name) ;
|
||||
|
||||
--jak daleko jest z cenrum do hotelu
|
||||
HowFarFrom x y = { s=["jak daleko jest z"] ++ x.name.dep!GenPrep ++ y.to.s; lock_QS=<> };
|
||||
|
||||
--jak daleko jest pieszo z centrum do hotelu
|
||||
HowFarFromBy x y t =
|
||||
{ s=["jak daleko jest"] ++ t.s ++ "z" ++ x.name.dep!GenPrep ++ y.to.s; lock_QS=<> };
|
||||
|
||||
HowFarBy y t =
|
||||
{ s=["jak daleko jest"] ++ t.s ++ y.to.s; lock_QS=<> };
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
{ s= ktory ! AF (cast_gennum!<trans.cn.g,Sg>) Nom ++ trans.cn.s!Sg!Nom ++ trans.verb ++ place.to.s; lock_QS=<> };
|
||||
|
||||
IsTranspPlace trans place =
|
||||
{ s= ["czy jest stąd"] ++ trans.cn.s!Sg!Nom ++ place.to.s; lock_QS=<> };
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper kurczak = mkN (mkNTable0173 "kurczak") (Masc Animate) ;
|
||||
oper kawa = mkN (mkNTable0021 "kawa") (Fem) ;
|
||||
oper pizza = mkN (mkNTable0175 "pizza") (Fem) ;
|
||||
oper herbata = mkN (mkNTable0026 "herbata") (Fem) ;
|
||||
oper lotnisko = mkN (mkNTable0265 "lotnisko") (Neut) ;
|
||||
oper lilja = mkN (mkNTable0060 "lilia") (Fem) ;
|
||||
oper niemcy = mkN (mkNTable0387 "Niemcy") (Plur) ;
|
||||
oper wlochy = mkN (mkNTable0482 "Włochy") (Plur) ;
|
||||
oper belgia = mkN (mkNTable0005 "Belgia") (Fem) ;
|
||||
oper bulgaria = mkN (mkNTable0005 "Bułgaria") (Fem) ;
|
||||
oper katalonia = mkN (mkNTable0005 "Katalonia") (Fem) ;
|
||||
oper dania = mkN (mkNTable0055 "Dania") (Fem) ;
|
||||
oper anglia = mkN (mkNTable0005 "Anglia") (Fem) ;
|
||||
oper holandia = mkN (mkNTable0005 "Holandia") (Fem) ;
|
||||
oper finlandia = mkN (mkNTable0005 "Finlandia") (Fem) ;
|
||||
oper francja = mkN (mkNTable0005 "Francja") (Fem) ;
|
||||
oper norwegia = mkN (mkNTable0005 "Norwegia") (Fem) ;
|
||||
oper polska = mkN (mkNTable0041 "Polska") (Fem) ;
|
||||
oper rumunia = mkN (mkNTable0032 "Rumunia") (Fem) ;
|
||||
oper rosja = mkN (mkNTable0005 "Rosja") (Fem) ;
|
||||
oper hiszpania = mkN (mkNTable0032 "Hiszpania") (Fem) ;
|
||||
oper szwecja = mkN (mkNTable0005 "Szwecja") (Fem) ;
|
||||
oper pokoj = mkN (mkNTable0526 "pokój") (Masc Inanimate) ;
|
||||
oper dolar = mkN (mkNTable0064 "dolar") (Masc Animate) ;
|
||||
|
||||
oper
|
||||
|
||||
mkA : Adj -> A = \adj -> adj ** { lock_A = <> };
|
||||
|
||||
mkPlaceDo = overload {
|
||||
mkPlaceDo : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n -> {
|
||||
name = mkCN n; at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
|
||||
mkPlaceDo : Str -> Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \nom,gen,loc,g -> {
|
||||
name = mkCN {
|
||||
s = table {SF Sg Nom => nom; SF Sg Gen => gen; SF Sg Loc => loc; _ => ["not implemented"]};
|
||||
g = g;
|
||||
lock_N=<>
|
||||
};
|
||||
at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
|
||||
};
|
||||
|
||||
mkPlaceNa = overload {
|
||||
mkPlaceNa : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n -> {
|
||||
name = mkCN n; at = { s="na"; c=LocPrep; lock_Prep = <> }; to = {s="na"; c=AccPrep; lock_Prep = <>}; isPl = False };
|
||||
mkPlaceNa : Str -> Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \nom,acc,loc,g -> {
|
||||
name = mkCN {
|
||||
s = table {SF Sg Nom => nom; SF Sg Acc => acc; SF Sg Loc => loc; _ => ["not implemented"]};
|
||||
g = g;
|
||||
lock_N=<>
|
||||
};
|
||||
at = { s="na"; c=LocPrep; lock_Prep = <> }; to = {s="na"; c=AccPrep; lock_Prep = <>}; isPl = False };
|
||||
};
|
||||
|
||||
mkTransport : Str -> Str -> Gender -> Str -> {cn:CN; verb:Str} = \nom,instr,g,verb -> {
|
||||
cn = {
|
||||
s = \\n,c => case <n,c> of {<Sg,Nom> => nom; <Sg,Instr> => instr; _ => ["not implemented"]};
|
||||
g = g;
|
||||
lock_CN=<>
|
||||
};
|
||||
verb=verb
|
||||
};
|
||||
|
||||
mkCitizen = overload {
|
||||
mkCitizen : Str -> N = \s -> {
|
||||
s = table {SF Sg Instr => s; _ => ["not implemented"]};
|
||||
g = Fem;
|
||||
lock_N=<>
|
||||
};
|
||||
mkCitizen : Str -> Str -> N = \inst, instpl -> {
|
||||
s = table {SF Sg Instr => inst; SF Pl Instr => instpl; _ => ["not implemented"]};
|
||||
g = Masc Personal;
|
||||
lock_N=<>
|
||||
};
|
||||
};
|
||||
|
||||
mkPer : Str -> Str -> Str -> Gender -> N = \nom,gen,acc,g -> {
|
||||
s = table {SF Sg Nom => nom; SF Sg Gen => gen; SF Sg Acc => acc; _ => ["not implemented"]};
|
||||
g = g;
|
||||
lock_N=<>
|
||||
};
|
||||
|
||||
|
||||
mkCurrency : Str -> Str -> Str -> Gender -> N = \nom,nompl,genpl,g -> {
|
||||
s = table {SF Sg Nom => nom; SF Pl (Nom|Acc) => nompl; SF Pl Gen => genpl; _ => ["not implemented"]};
|
||||
g = g;
|
||||
lock_N=<>
|
||||
};
|
||||
|
||||
mkNat : Str -> Str -> Str -> N -> Str -> Str -> Str ->
|
||||
{ lang: A; prop: A; country: NP; citizenMSg:Str; citizenMPl: Str; citizenF:Str } =
|
||||
\lang,ladv,prop,country,citiMsg, citiMpl, citiF -> {
|
||||
lang = mkA (mkCompAdj lang ladv); prop = mkA (mkCompAdj prop);
|
||||
country=mkNP country; citizenMSg=citiMsg; citizenMPl=citiMpl; citizenF=citiF };
|
||||
|
||||
open_A : A = (mkA (mkCompAdj "otwarty"));
|
||||
closed_A : A = (mkA (mkCompAdj "zamknięty"));
|
||||
|
||||
xOf : NPPerson -> Num -> N -> NPPerson = \p,num,n ->
|
||||
{ name = case p.isPron of {
|
||||
True => mkNP (mkDet p.poss num) n;
|
||||
False => mkNP (mkNP (mkDet a_Quant num) n) ({s=p.name.dep!GenNoPrep; lock_Adv=<>})
|
||||
};
|
||||
isPron = False;
|
||||
poss = p.poss }; --it is not used, because it is not a pron
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxPol.mkDet the_Art (SyntaxPol.mkOrd a) ;
|
||||
|
||||
far_IAdv : IAdv = (ss ["jak daleko"]) ** {lock_IAdv = <>};
|
||||
howmany_IAdv : IAdv = (ss ["ile"]) ** {lock_IAdv = <>};
|
||||
|
||||
}
|
||||
277
testsuite/lpgf/phrasebook/WordsRon.gf
Normal file
277
testsuite/lpgf/phrasebook/WordsRon.gf
Normal file
@@ -0,0 +1,277 @@
|
||||
--# -path=.:../../dist/build/rgl/alltenses
|
||||
|
||||
|
||||
-- (c) 2010 Ramona Enache under LGPL
|
||||
|
||||
concrete WordsRon of Words = SentencesRon ** open
|
||||
SyntaxRon, ResRon, Prelude,
|
||||
(P = ParadigmsRon),
|
||||
(L = LexiconRon),
|
||||
BeschRon,
|
||||
ExtraRon in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (P.mkN "pui" "pui" P.masculine) ;
|
||||
Coffee = mkCN (P.mkN "cafea") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (P.mkN "carne" "cărnuri" "cărni") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (P.mkN "pizză") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (P.mkNR "ceai") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- qualities
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = P.mkA "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ;
|
||||
Cheap = P.mkA "ieftin" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = P.mkA "delicios" "delcioasă" "delicioşi" "delicioase" ;
|
||||
Expensive = P.mkA "scump" "scumpă" "scumpi" "scumpe" ;
|
||||
Fresh = P.mkA "proaspăt" "proaspătă" "proaspeţi" "proaspete" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = P.mkA "suspect" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (P.mkNR "aeroport") at_Prep ;
|
||||
AmusementPark = mkCNPlace (mkCN (mkCN (P.mkNR "parc")) (mkAdv by8means_Prep (mkNP (P.mkPN "distracții")))) in_Prep to_Prep;
|
||||
Bank = mkPlace (P.mkN "bancă" "bănci") at_Prep ;
|
||||
Bar = mkPlace (P.mkNR "bar") at_Prep ;
|
||||
Cafeteria = mkPlace (P.mkN "cantină" "cantine") in_Prep ;
|
||||
Center = mkCNPlace (mkCN (P.mkN "centru" "centre" )) in_Prep in_Prep;
|
||||
Church = mkPlace (P.mkN "biserică" "biserici") at_Prep ;
|
||||
Cinema = mkPlace (P.mkNR "cinematograf") at_Prep ;
|
||||
Disco = mkPlace (P.mkN "discotecă" "discoteci" ) at_Prep ;
|
||||
Hospital = mkPlace (P.mkN "spital") at_Prep ;
|
||||
Hotel = mkPlace (P.mkNR "hotel") at_Prep ;
|
||||
Museum = mkPlace (P.mkN "muzeu" "muzee") at_Prep ;
|
||||
Park = mkPlace (P.mkNR "parc") in_Prep ;
|
||||
Parking = mkPlace (P.mkN "parcare" "parcări") in_Prep ;
|
||||
Pharmacy = mkPlace (P.mkN "farmacie" "farmacii" P.feminine) at_Prep;
|
||||
PostOffice = mkPlace (P.mkN "poștă" "poște") at_Prep ;
|
||||
Pub = mkPlace (P.mkNR "pub") in_Prep ;
|
||||
Restaurant = mkPlace (P.mkN "restaurant") at_Prep ;
|
||||
School = mkPlace (P.mkN "şcoală" "şcoli") at_Prep ;
|
||||
Shop = mkPlace (P.mkN "magazin") at_Prep ;
|
||||
Station = mkPlace (P.mkN "gară" "gări") at_Prep ;
|
||||
Supermarket = mkPlace (P.mkNR "supermarket") at_Prep ;
|
||||
Theatre = mkPlace (P.mkN "teatru" "teatre") at_Prep ;
|
||||
Toilet = mkPlace (P.mkN "toaletă") at_Prep ;
|
||||
University = mkPlace (P.mkN "universitate") at_Prep ;
|
||||
Zoo = {name = mkCN (P.mkA "zoologic") (P.mkN "grădină" "grădini");
|
||||
to = to_Prep; at = at_Prep; isPl = False };
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit.prop (P.mkN "restaurant" "restaurante")) in_Prep to_Prep;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (P.mkA "danez") (P.mkN "coroană") ;
|
||||
Dollar = mkCN (P.mkN "dolar" P.masculine) ;
|
||||
Euro = mkCN (P.mkN "euro" "euro" P.masculine) ;
|
||||
Lei = mkCN (P.mkN "leu" "lei") ;
|
||||
Leva = mkCN (P.mkN "levă" "leve") ;
|
||||
NorwegianCrown = mkCN (P.mkA "norvegian") (P.mkN "coroană") ;
|
||||
Pound = mkCN (P.mkA "sterlin") (P.mkN "liră") ;
|
||||
Rouble = mkCN (P.mkN "rublă" "ruble") ;
|
||||
SwedishCrown = mkCN (P.mkA "suedez") (P.mkN "coroană") ;
|
||||
Zloty = mkCN (P.mkN "zlot" P.masculine) ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkCitizenshipRon (P.mkA "belgian" "belgiană" "belgieni" "belgiene") "belgian" "belgiancă" "belgieni" "belgience" ;
|
||||
Belgium = mkNP (P.mkPN "Belgia") ;
|
||||
Bulgarian = mkCompNat "bulgar" "Bulgaria" "bulgăresc" "bulgar" "bulgăroaică" "bulgari" "bulgăroaice";
|
||||
Catalan = mkSimpSimpNat "catalan" "Catalonia" ;
|
||||
Danish = mkSimpSimpNat "danez" "Danemarca" ;
|
||||
Dutch = mkSimpSimpNat "olandez" "Olanda" ;
|
||||
English = mkNat "englez" "Anglia" "englez" "englezoaică" "englezi" "englezoaice" ;
|
||||
Finnish = mkSimpSimpNat "finlandez" "Finlanda" ;
|
||||
Flemish = mkNP (P.mkPN "flamandă") ;
|
||||
French = mkCompNat "francez" "Franţa" "franțuzesc" "francez" "franțuzoaică" "francezi" "franțuzoaice";
|
||||
German = mkCompNat "german" "Germania" "nemțesc" "neamț" "nemțoaică" "nemți" "nemțoaice";
|
||||
Italian = mkSimpNat "italian" "Italia" "italian" "italiancă" "italieni" "italience" ;
|
||||
Norwegian = mkSimpSimpNat "norvegian" "Norvegia";
|
||||
Polish = mkSimpSimpNat "polonez" "Polonia" ;
|
||||
Romanian = mkNat "român" "România" "român" "româncă" "români" "românce" ;
|
||||
Russian = mkNat "rus" "Rusia" "rus" "rusoaică" "ruși" "rusoaice";
|
||||
Spanish = mkSimpSimpNat "spaniol" "Spania" ;
|
||||
Swedish = mkSimpSimpNat "suedez" "Suedia" ;
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (P.mkN "autobuz" "autobuze") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (P.mkNR "feribot") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (P.mkNR "metrou") ;
|
||||
Taxi = mkTransport (P.mkNR "taxi") ;
|
||||
Train = mkTransport (P.mkNR "tren") ;
|
||||
Tram = mkTransport (P.mkN "tramvai" "tramvaie") ;
|
||||
|
||||
ByFoot = P.mkAdv "pe jos" ;
|
||||
|
||||
HowFar place = mkQS (mkQCl how8much_IAdv (mkDestination place.name)) ;
|
||||
HowFarFrom x y = mkQS (mkQCl how8much_IAdv (mkNP (mkDestination y.name) (SyntaxRon.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl how8much_IAdv (mkNP (mkNP (mkDestination y.name) (SyntaxRon.mkAdv from_Prep x.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl how8much_IAdv (mkNP (mkDestination y.name) t)) ;
|
||||
|
||||
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 (mkDestination place.name)))) ;
|
||||
|
||||
|
||||
-- actions
|
||||
|
||||
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 (P.mkN "cameră")) (SyntaxRon.mkAdv for_Prep (mkNP num (P.mkN "persoană")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (P.mkN "masa" "mese")) (SyntaxRon.mkAdv for_Prep (mkNP num (P.mkN "persoană")))) ;
|
||||
AHasName p name = mkCl p.name (P.mmkV2 (mkRVAcc (v_besch119 "numi")) (P.noPrep P.Nom)) name ;
|
||||
AHungry p = DatSubjCl p.name (mkVP (mkNP (P.mkN "foame"))) ;
|
||||
AIll p = mkCl p.name (P.mkA "bolnav") ;
|
||||
AKnow p = mkCl p.name (v_besch122 "şti") ;
|
||||
ALike p item = DatSubjCompCl p.name (mkVP (v_besch71 "plăcea")) item ;
|
||||
ALive p co =
|
||||
mkCl p.name (mkVP (mkVP (v_besch121 "locui")) (SyntaxRon.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (P.dirV2 (P.mkV "iubi")) q.name ;
|
||||
AMarried p = mkCl p.name (P.mkA "căsătorit") ;
|
||||
AReady p = mkCl p.name (P.mkA "gata" "gata" "gata" "gata") ;
|
||||
AScared p = mkCl p.name (P.mkA "speriat") ;
|
||||
ASpeak p lang = mkCl p.name (P.mmkV2 (P.mkV "vorbi") (P.noPrep P.Nom)) lang ;
|
||||
AThirsty p = DatSubjCl p.name (mkVP (mkNP (P.mkN "sete"))) ;
|
||||
ATired p = mkCl p.name (P.mkA "obosit") ;
|
||||
AUnderstand p = mkCl p.name (v_besch83 "înţelege") ;
|
||||
AWant p obj = mkCl p.name (P.mmkV2 (v_besch74 "vrea") (P.noPrep P.Nom)) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (AccSubjCl p.name (mkVP (v_besch29 "chema")))) ;
|
||||
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) ;
|
||||
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (v_besch18 "costa"))) ;
|
||||
ItCost item price = mkCl item (P.mmkV2 (v_besch18 "costa") (P.noPrep P.Nom)) price ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text {s = ("ne" ++ "vedem")}) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text { s = ("ne" ++ "vedem")})
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
PSeeYouPlace p = mkText (lin Text {s = ("ne" ++ "vedem")}) (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 (P.mkN "soţie") ;
|
||||
Husband = xOf sing (P.mkN "soţ" "soţi") ;
|
||||
Son = xOf sing (P.mkN "fiu" "fii") ;
|
||||
Daughter = xOf sing (P.mkN "fiică" "fiice") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "luni" ;
|
||||
Tuesday = mkDay "marţi" ;
|
||||
Wednesday = mkDay "miercuri" ;
|
||||
Thursday = mkDay "joi" ;
|
||||
Friday = mkDay "vineri" ;
|
||||
Saturday = mkDay "sâmbătă" ;
|
||||
Sunday = mkDay "duminică" ;
|
||||
|
||||
Tomorrow = P.mkAdv "mâine" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (P.mkA "ieftin") ;
|
||||
TheMostExpensive = mkSuperl (P.mkA "scump") ;
|
||||
TheMostPopular = mkSuperl (P.mkA "popular") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
oper
|
||||
|
||||
closed_A : A = P.mkA "închis" ;
|
||||
open_A : A = P.mkA "deschis" ;
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
mkSimpSimpNat : Str -> Str -> NPNationalityRon = \nat, co ->
|
||||
mkSimpNat nat co nat (nat + "a") (nat + "i") (nat+"e");
|
||||
|
||||
mkSimpNat : Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, citMS, citFS, citMP, citFP -> let adj = P.mkA nat in
|
||||
mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) adj citMS citFS citMP citFP ;
|
||||
|
||||
mkNat : Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, citMS, citFS, citMP, citFP -> let adj = P.mkA (nat+"esc") in
|
||||
mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) adj citMS citFS citMP citFP ;
|
||||
|
||||
mkCompNat : Str -> Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, adj, citMS, citFS, citMP, citFP -> let a = P.mkA adj in
|
||||
mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) a citMS citFS citMP citFP ;
|
||||
|
||||
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (P.mkPN d P.Feminine) ;
|
||||
ad = {s = d; lock_Adv=<>} in
|
||||
mkNPDay day ad ad; ---- difference is enforced by additional constructions
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (refCN x) p ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i -> {
|
||||
name = mkCN p ;
|
||||
at = i ; isPl = False ;
|
||||
to = to_Prep -- in Romanian, most of the time they would be the same
|
||||
} ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxRon.mkAdv with_Prep (mkNP the_Det n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> mkDet the_Art (SyntaxRon.mkOrd a) ;
|
||||
|
||||
mkDestination : NP -> NP = \np -> heavyNP {s = \\c => "pâna la"++np.indForm ;
|
||||
a = np.a; hasClit = HasRef False;
|
||||
ss = "pâna la"++np.indForm} ** {lock_NP =<>};
|
||||
|
||||
}
|
||||
275
testsuite/lpgf/phrasebook/WordsRus.gf
Normal file
275
testsuite/lpgf/phrasebook/WordsRus.gf
Normal file
@@ -0,0 +1,275 @@
|
||||
-- (C) 2009 Aarne Ranta under LGPL
|
||||
|
||||
concrete WordsRus of Words = SentencesRus **
|
||||
open SyntaxRus, (P = ParadigmsRus), (L = LexiconRus), ExtraRus, (R = ResRus), Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (P.mkN "курица") ;
|
||||
Coffee = mkCN (P.mkIndeclinableNoun "кофе" P.masculine P.inanimate) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (P.mkN "мясо") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (P.mkN "пицца") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (P.mkN "чай") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
|
||||
Bad = P.mkA "плохой" ;
|
||||
Cheap = P.mkA "дешевый" ;
|
||||
Boring = P.mkA "скучный" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = P.mkA "вкусный" ;
|
||||
Expensive = P.mkA "дорогой" ;
|
||||
Fresh = P.mkA "свежий" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = P.mkA "подозрительный" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace "аэропорт" in_Prep ;
|
||||
AmusementPark = mkPlace2 "развлечения" "парк" in_Prep;
|
||||
Bank = mkPlace "банк" in_Prep ;
|
||||
Bar = mkPlace "бар" in_Prep ;
|
||||
Cafeteria = mkPlace "кафетерий" in_Prep ;
|
||||
Center = mkPlace "центр" in_Prep ;
|
||||
Church = mkPlace "церковь" in_Prep ;
|
||||
Cinema = mkPlace "кино" in_Prep ;
|
||||
Disco = mkPlace "дискотека" on_Prep ;
|
||||
Hospital = mkPlace "больница" in_Prep ;
|
||||
Hotel = mkPlace "отель" in_Prep ;
|
||||
Museum = mkPlace "музей" in_Prep ;
|
||||
Park = mkPlace "парк" in_Prep ;
|
||||
Parking = mkPlace "автостоянка" on_Prep ;
|
||||
Pharmacy = mkPlace "аптека" in_Prep ;
|
||||
PostOffice = mkPlace "почта" on_Prep ;
|
||||
Pub = mkPlace "паб" in_Prep ;
|
||||
Restaurant = mkPlace "ресторан" in_Prep ;
|
||||
Shop = mkPlace "магазин" in_Prep ;
|
||||
School = mkPlace "школа" in_Prep ;
|
||||
Station = mkPlace "станция" on_Prep ;
|
||||
Supermarket = mkPlace "супермаркет" in_Prep ;
|
||||
Theatre = mkPlace "театр" in_Prep ;
|
||||
Toilet = mkPlace "туалет" in_Prep ;
|
||||
University = mkPlace "университет" in_Prep ;
|
||||
Zoo = mkPlace "зоопарк" in_Prep ;
|
||||
|
||||
|
||||
CitRestaurant cit =
|
||||
mkCNPlace (mkCN cit (P.mkN "ресторан")) in_Prep to2_Prep ;
|
||||
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (P.mkA "датский") (P.mkN "крона" P.inanimate) ;
|
||||
Dollar = mkCN (P.mkN "доллар" P.inanimate) ;
|
||||
Euro = mkCN (P.mkIndeclinableNoun "евро" P.neuter P.inanimate) ;
|
||||
Lei = mkCN (P.mkN "лей" P.inanimate) ;
|
||||
Leva = mkCN (P.mkN "лев" P.inanimate) ;
|
||||
NorwegianCrown = mkCN (P.mkA "норвежский") (P.mkN "крона" P.inanimate) ;
|
||||
Pound = mkCN (P.mkN "фунт" P.inanimate);
|
||||
Rouble = mkCN (P.mkN "рубль" P.inanimate) ;
|
||||
SwedishCrown = mkCN (P.mkA "шведский") (P.mkN "крона" P.inanimate) ;
|
||||
Zloty = mkCN (P.mkN "злотый" P.inanimate) ;
|
||||
|
||||
|
||||
-- Nationalities
|
||||
|
||||
-- Belgian = mkNat "бельгийский" (P.mkPN "Бельгия" P.feminine P.singular P.inanimate) ;
|
||||
Bulgarian = mkNat "болгарский" (P.mkPN "Болгария" P.feminine P.singular P.animate) ;
|
||||
Catalan = mkNat "каталонский" (P.mkPN "Каталония" P.feminine P.singular P.animate) ;
|
||||
Danish = mkNat "датский" (P.mkPN "Дания" P.feminine P.singular P.animate) ;
|
||||
Dutch = mkNat "нидерландский" (P.mkPN "Нидерланды" P.neuter P.plural P.inanimate) ;
|
||||
English = mkNat "английский" (P.mkPN "Англия" P.feminine P.singular P.animate) ;
|
||||
Finnish = mkNat "финский" (P.mkPN "Финляндия" P.feminine P.singular P.animate) ;
|
||||
-- Flemish = mkNat "фландрийский" (P.mkPN "Фландрия" P.feminine P.singular P.animate) ;
|
||||
French = mkNat "французский" (P.mkPN "Франция" P.feminine P.singular P.animate) ;
|
||||
German = mkNat "немецкий" (P.mkPN "Германия" P.feminine P.singular P.animate) ;
|
||||
Italian = mkNat "итальянский" (P.mkPN "Италия" P.feminine P.singular P.animate) ;
|
||||
Norwegian = mkNat "норвежский" (P.mkPN "Норвегия" P.feminine P.singular P.animate) ;
|
||||
Polish = mkNat "польский" (P.mkPN "Польша" P.feminine P.singular P.animate) ;
|
||||
Romanian = mkNat "румынский" (P.mkPN "Румыния" P.feminine P.singular P.animate) ;
|
||||
Russian = mkNat "русский" (P.mkPN "Россия" P.feminine P.singular P.animate) ;
|
||||
Spanish = mkNat "испанский" (P.mkPN "Испания" P.feminine P.singular P.inanimate) ;
|
||||
Swedish = mkNat "шведский" (P.mkPN "Швеция" P.feminine P.singular P.animate) ;
|
||||
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (P.mkN "автобус") ;
|
||||
Car = mkTransport (P.mkN "автомобиль");
|
||||
Ferry = mkTransport (P.mkN "паром") ;
|
||||
Plane = mkTransport (P.mkN "самолет") ;
|
||||
Subway = mkTransport (P.mkIndeclinableNoun "метро" P.neuter P.inanimate) ;
|
||||
Taxi = mkTransport (P.mkIndeclinableNoun "такси" P.neuter P.inanimate) ;
|
||||
Tram = mkTransport (P.mkN "трамвай") ;
|
||||
Train = mkTransport (P.mkN "поезд") ;
|
||||
|
||||
ByFoot = P.mkAdv "пешком" ;
|
||||
|
||||
|
||||
|
||||
-- actions
|
||||
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasAge p num = mkCl (mkVP be_V3 (mkNP num L.year_N) p.name) ;
|
||||
AHasName p name = mkCl (mkVP (P.mkV3 name_is_V "" "" P.nominative P.accusative) name p.name) ;
|
||||
AHasChildren p num = mkCl (mkVP have_V3 (mkNP num L.child_N) p.name) ;
|
||||
AHasRoom p num = mkCl (mkVP have2_V3
|
||||
(mkNP (mkNP a_Det (P.mkN "номер"))
|
||||
(SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ;
|
||||
AHasTable p num = mkCl (mkVP have2_V3
|
||||
(mkNP (mkNP a_Det (P.mkN "стол"))
|
||||
(SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ;
|
||||
AHungry p = mkCl p.name (P.mkA "голодный") ;
|
||||
AIll p = mkCl p.name (P.mkA "больной") ;
|
||||
AKnow p = mkCl p.name (P.regV P.imperfective P.first "зна" "ю" "знал" "знай" "знать" ) ;
|
||||
ALike p item = mkCl item (P.mkV2 (P.mkV P.imperfective "нравлюсь" "нравишься" "нравится" "нравимся" "нравитесь" "нравятся" "нравился" "нравься" "нравиться") [] P.dative) p.name ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (P.regV P.imperfective P.firstE "жив" "у" "жил" "живи" "жить")) (SyntaxRus.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (P.dirV2 (P.regV P.imperfective P.second "люб" "лю" "любил" "люби" "любить" )) q.name ;
|
||||
-- AMarried p = mkCl p.name (P.mkA "женатый") ;
|
||||
AMarried p = let status = case p.name.g of {
|
||||
R.PGen R.Masc => P.mkAdv "женат" ;
|
||||
_ => P.mkAdv "замужем"
|
||||
} in mkCl p.name status ;
|
||||
AReady p = mkCl p.name (P.mkA "готовый") ;
|
||||
AScared p = mkCl p.name (P.mkV P.imperfective "боюсь" "боишься" "боится" "боимся" "бойтесь" "боятся" "боялся" "бойся" "бояться") ;
|
||||
ASpeak p lang = mkCl p.name (P.mkV2 (P.regV P.imperfective P.secondA "говор" "ю" "говорил" "говори" "говорить") "на" P.prepositional) lang ;
|
||||
AThirsty p = mkCl p.name want_VV (mkVP (P.regV P.imperfective P.firstE "пь" "ю" "пил" "пей" "пить" )) ;
|
||||
ATired p = mkCl p.name (P.mkA "уставший" R.Rel) ;
|
||||
AUnderstand p = mkCl p.name (P.regV P.imperfective P.first "понима" "ю" "понимал" "понимай" "понимать") ;
|
||||
AWant p obj = mkCl p.name (P.dirV2 (P.regV P.imperfective P.mixed "хо" "чу" "хотел" "хоти" "хотеть")) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.perfective "пошёл" "пошёл" "пошёл" "пошли" "пошли" "пошли" "пошёл" "пойди" "пойти")) place.to) ;
|
||||
--AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.imperfective "иду" "идёшь" "идёт" "идём" "идёте" "идут" "шёл" "иди" "идти")) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl (mkVP (P.mkV2 name_is_V "" P.accusative) p.name))) ;
|
||||
QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name);
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item cost_V)) ;
|
||||
ItCost item price = mkCl item (P.mkV2 cost_V "" P.accusative) 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) ;
|
||||
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("увидимся"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p =
|
||||
mkText (lin Text (ss ("увидимся"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("увидимся")))
|
||||
(mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (P.mkN "жена" P.animate) ;
|
||||
Husband = xOf sing (P.mkN "муж" P.animate) ;
|
||||
Son = xOf sing (P.mkN "сын" P.animate) ;
|
||||
Daughter = xOf sing (P.mkN "дочь" "дочери" "дочери" "дочь" "дочерью" "дочери" "дочь" "дочери" "дочерей" "дочерям" "дочерей" "дочерьми" "дочерях" P.feminine P.animate) ;
|
||||
-- Daughter = xOf sing E.daughter_N ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "понедельник" P.masculine ;
|
||||
Tuesday = mkDay "вторник" P.masculine ;
|
||||
Wednesday = mkDay "среда" P.feminine ;
|
||||
Thursday = mkDay "четверг" P.masculine ;
|
||||
Friday = mkDay "пятница" P.feminine ;
|
||||
Saturday = mkDay "суббота" P.feminine ;
|
||||
Sunday = mkDay "воскресенье" P.neuter ;
|
||||
|
||||
Tomorrow = P.mkAdv "завтра" ;
|
||||
|
||||
-- modifiers of places
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (P.mkA "дешевый") ;
|
||||
TheMostExpensive = mkSuperl (P.mkA "дорогой") ;
|
||||
TheMostPopular = mkSuperl (P.mkA "популярный") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxRus.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxRus.mkAdv from_Prep x.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
|
||||
|
||||
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))) ;
|
||||
|
||||
|
||||
|
||||
|
||||
oper
|
||||
mkNat : Str -> PN -> NPNationality = \la,co ->
|
||||
mkNPNationality (mkNP (mkCN (P.mkA la) (P.mkN "язык"))) (mkNP co) (P.mkA la) ;
|
||||
|
||||
mkDay : Str -> P.Gender -> {name : NP ; point : Adv ; habitual : Adv} =
|
||||
\d,g -> mkNPDay (mkNP (P.mkPN d g P.singular P.inanimate)) (mkAdv (P.mkPrep "в" P.accusative) (mkNP (P.mkPN d g P.singular P.inanimate)))
|
||||
---- (mkAdv on_Prep (mkNP (P.mkPN d)))
|
||||
(mkAdv (P.mkPrep "по" P.dative) (mkNP a_Quant plNum (mkCN (P.mkN d)))) ;
|
||||
|
||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||
-- mkCNPlace (mkCN p) (P.mkPrep i P.prepositional) to_Prep ;
|
||||
mkPlace : Str -> Prep -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (P.mkN p)) i to_Prep;
|
||||
|
||||
mkPlace2 : Str -> Str -> Prep -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,p2,i ->
|
||||
mkCNPlace (mkCN (P.mkN2 (P.mkN p2)) (mkNP (P.mkN p))) i to_Prep;
|
||||
|
||||
open_A = P.mkA "открытый";
|
||||
closed_A = P.mkA "закрытый";
|
||||
|
||||
cost_V = P.regV P.imperfective P.secondA "сто" "ю" "стоил" "стой" "стоить" ;
|
||||
|
||||
name_is_V = P.mkV P.imperfective "зову" "зовëшь" "зовут" "зовëм" "зовëте" "зовут" "звал" "зови" "звать" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxRus.mkAdv possess_Prep b)) p ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxRus.mkAdv on_Prep (mkNP the_Det n)
|
||||
} ;
|
||||
|
||||
far_IAdv = ss "как далеко" ** {lock_IAdv = <>} ;
|
||||
long_IAdv = ss "как долго" ** {lock_IAdv = <>};
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxRus.mkDet the_Art (SyntaxRus.mkOrd a) ;
|
||||
|
||||
}
|
||||
281
testsuite/lpgf/phrasebook/WordsSnd.gf
Normal file
281
testsuite/lpgf/phrasebook/WordsSnd.gf
Normal file
@@ -0,0 +1,281 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
|
||||
|
||||
concrete WordsSnd of Words = SentencesSnd **
|
||||
|
||||
open
|
||||
|
||||
SyntaxSnd,
|
||||
|
||||
-- CommonHindustani,
|
||||
|
||||
ParadigmsSnd,
|
||||
|
||||
(L = LexiconSnd),
|
||||
|
||||
(P = ParadigmsSnd),
|
||||
MorphoSnd,
|
||||
|
||||
-- IrregSnd,
|
||||
|
||||
ExtraSnd,
|
||||
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
|
||||
Beer = mkCN L.beer_N ;
|
||||
|
||||
Bread = mkCN L.bread_N ;
|
||||
|
||||
Cheese = mkCN (mkN03 "پنير") ;
|
||||
|
||||
Chicken = mkCN (mkN04 "ڪڪڙ") ;
|
||||
|
||||
Coffee = mkCN (mkN03 "ڪافي") ;
|
||||
|
||||
Fish = mkCN L.fish_N ;
|
||||
|
||||
Meat = mkCN (mkN03 "گوشت") ;
|
||||
|
||||
Milk = mkCN L.milk_N ;
|
||||
|
||||
Pizza = mkCN (mkN12 "پيزا") ;
|
||||
|
||||
Salt = mkCN L.salt_N ;
|
||||
|
||||
Tea = mkCN (mkN09 "چانھ") ;
|
||||
|
||||
Water = mkCN L.water_N;
|
||||
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
|
||||
|
||||
Bad = L.bad_A ;
|
||||
|
||||
Boring = mkA "فضول" ;
|
||||
|
||||
Cheap = mkA "سستو" ;
|
||||
|
||||
Cold = L.cold_A ;
|
||||
|
||||
Delicious = mkA "ذائقيدار" ;
|
||||
|
||||
Expensive = mkA "مهانگو" ;
|
||||
|
||||
Fresh = mkA "تازو" ;
|
||||
|
||||
Good = L.good_A ;
|
||||
|
||||
Suspect = mkA "برو" ;
|
||||
|
||||
Warm = L.warm_A ;
|
||||
|
||||
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
|
||||
|
||||
Airport = mkPlace "هوائي اڏو" "تي" ;
|
||||
|
||||
-- AmusementPark = mkCompoundPlace "اميوزيم" "پارڪ" "۾" ;
|
||||
|
||||
Bank = mkPlace "بئنڪ" "۾" ;
|
||||
|
||||
Bar = mkPlace "بار" "۾" ;
|
||||
|
||||
Cafeteria = mkPlace "ڪينٽين" "۾" ;
|
||||
|
||||
Center = mkPlace "سينٽر" "تي" ;
|
||||
|
||||
Cinema = mkPlace "سينيما" "۾" ;
|
||||
|
||||
Church = mkPlace "چرچ" "۾" ;
|
||||
|
||||
Disco = mkPlace "ڊسڪو" "۾" ;
|
||||
|
||||
Hospital = mkPlace "اسپتال" "۾" ;
|
||||
|
||||
Hotel = mkPlace "هوٽل" "۾" ;
|
||||
|
||||
Museum = mkPlace "ميوزيم" "۾" ;
|
||||
|
||||
Park = mkPlace "پارڪ" "۾" ;
|
||||
|
||||
Parking = mkCompoundPlace "ڪار" "پارڪ" "۾" ;
|
||||
|
||||
Pharmacy = mkPlace "ميڊيڪل اسٽور" "تي" ;
|
||||
|
||||
PostOffice = mkCompoundPlace "پوسٽ" "آفيس" "۾" ;
|
||||
|
||||
Pub = mkPlace "پب" "۾" ;
|
||||
|
||||
Restaurant = mkPlace "هوٽل" "۾" ;
|
||||
|
||||
School = mkPlace "اسڪول" "۾" ;
|
||||
|
||||
Shop = mkPlaceFem "دڪان" "۾" Fem;
|
||||
|
||||
Station = mkPlace "اسٽيشن" "تي" ;
|
||||
|
||||
Supermarket = mkPlace "سپر مارڪيٽ" "۾" ;
|
||||
|
||||
Theatre = mkPlace "ٿيٽر" "۾" ;
|
||||
|
||||
Toilet = mkPlace "ڪاڪوس" "۾" ;
|
||||
|
||||
University = mkPlaceFem "يونيورسٽي" "۾" Fem;
|
||||
|
||||
Zoo = mkPlace "راڻي باغ" "۾" ;
|
||||
|
||||
|
||||
|
||||
-- CitRestaurant cit = mkCNPlace (mkCN cit (mkN09 "هوٽل")) in_Prep to_Prep ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
|
||||
|
||||
DanishCrown = mkCN (mkA "ڊينش") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
|
||||
|
||||
Dollar = mkCN (mkN03 "ڊالر") ;
|
||||
|
||||
Euro = mkCN (mkN12 "يورو") ; -- to prevent euroes
|
||||
|
||||
Lei = mkCN (mkN03 "لي") ;
|
||||
|
||||
Leva = mkCN (mkN12 "ليوا") ;
|
||||
|
||||
NorwegianCrown = mkCN (mkA "نارويجين") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
|
||||
|
||||
Pound = mkCN (mkN03 "پاؤنڊ") ;
|
||||
|
||||
Rouble = mkCN (mkN03 "روبل") ;
|
||||
|
||||
SwedishCrown = mkCN (mkA "سويڊش") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
|
||||
|
||||
Zloty = mkCN (mkN03 "زلوٽي") ;
|
||||
|
||||
|
||||
|
||||
-- Nationalities
|
||||
|
||||
|
||||
|
||||
Belgian = mkA "بيلجين" ;
|
||||
|
||||
Belgium = mkNP (mkPN "بيلجيم") ;
|
||||
|
||||
Bulgarian = mkNat "بلغارين" "بلغاريا" ;
|
||||
|
||||
-- Catalan = mkNPNationality (mkNP (mkPN "كیٹالان")) (mkNP (mkPN "كاٹالان")) (mkA "كاٹالانین") ;
|
||||
|
||||
Danish = mkNat "ڊينش" "ڊينمارڪ" ;
|
||||
|
||||
-- Dutch = mkNPNationality (mkNP (mkPN "ڊچ")) (mkNP the_Quant (mkN14 "نيدرلئنڊ")) (mkA "ڊچ") ;
|
||||
|
||||
English = mkNat "انگلش" "انگلئنڊ" ;
|
||||
|
||||
Finnish = mkNat "فنش" "فنلئنڊ" ;
|
||||
|
||||
Flemish = mkNP (mkPN "فليمش") ;
|
||||
|
||||
French = mkNat "فرانسيسي" "فرانس" ;
|
||||
|
||||
German = mkNat "جرمن" "جرمني" ;
|
||||
|
||||
Italian = mkNat "اٽالوي" "اٽلي" ;
|
||||
|
||||
Norwegian = mkNat "نارويجين" "ناروي" ;
|
||||
|
||||
Polish = mkNat "پولش" "پولئنڊ" ;
|
||||
|
||||
Romanian = mkNat "رومانين" "رومانيا" ;
|
||||
|
||||
Russian = mkNat "روسي" "روس" ;
|
||||
|
||||
Spanish = mkNat "سپيني" "سپين" ;
|
||||
|
||||
Swedish = mkNat "سويڊش" "سويڊن" ;
|
||||
|
||||
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
|
||||
Bus = mkTransport (mkN09 "بس" ) ;
|
||||
|
||||
Car = mkTransport L.car_N ;
|
||||
|
||||
Ferry = mkTransport (mkN09 "فيري") ;
|
||||
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
|
||||
Subway = mkTransport (mkN12 "سب وي") ;
|
||||
|
||||
Taxi = mkTransport (mkN09 "ٽئڪسي") ;
|
||||
|
||||
Train = mkTransport (mkN09 "ريل گاڏي") ;
|
||||
|
||||
Tram = mkTransport (mkN09 "ٽرام") ;
|
||||
|
||||
|
||||
|
||||
ByFoot = P.mkAdv "پيادو" ;
|
||||
|
||||
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
|
||||
|
||||
-- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsSnd.mkAdv "جو"));
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num (mkCN 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 (mkN01 "ڪمرو")) (SyntaxSnd.mkAdv for_Prep (mkNP num (mkN03 "شخص")))) ;
|
||||
|
||||
-- AHasTable p num = mkCl p.name have_V2
|
||||
|
||||
-- (mkNP (mkNP a_Det (mkN04 "ميز")) (SyntaxSnd.mkAdv for_Prep (mkNP num (mkN03 "شخص")))) ;
|
||||
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
|
||||
AHungry p = mkCl p.name (mkA "بکيو") ;
|
||||
|
||||
AIll p = mkCl p.name (mkA "بيمار") ;
|
||||
|
||||
AKnow p = mkCl p.name (mkV "ڄاڻڻ") ;
|
||||
|
||||
301
testsuite/lpgf/phrasebook/WordsSpa.gf
Normal file
301
testsuite/lpgf/phrasebook/WordsSpa.gf
Normal file
@@ -0,0 +1,301 @@
|
||||
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||
|
||||
concrete WordsSpa of Words = SentencesSpa ** open
|
||||
SyntaxSpa,
|
||||
BeschSpa,
|
||||
(E = ExtraSpa),
|
||||
(L = LexiconSpa),
|
||||
(P = ParadigmsSpa),
|
||||
(S = SyntaxSpa),
|
||||
ParadigmsSpa,
|
||||
StructuralSpa,
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- kinds
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "queso") ;
|
||||
Chicken = mkCN (mkN "pollo") ;
|
||||
Coffee = mkCN (mkN "café" "cafés" masculine) ;
|
||||
Fish = mkCN (mkN "pescado") ;
|
||||
Meat = mkCN (mkN "carne" feminine) ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "té" "tés" masculine) ;
|
||||
Water = mkCN (mkN "agua") ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "aburrido" ;
|
||||
Cheap = cheap_A ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "delicioso" ;
|
||||
Expensive = expensive_A ;
|
||||
Fresh = mkA "fresco" ;
|
||||
Good = L.good_A ;
|
||||
Warm = mkA "caliente" ;
|
||||
Suspect = mkA "sospechoso" ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (mkN "aeropuerto") in_Prep ;
|
||||
AmusementPark = mkPlace (compN (mkN "parque") ["de atracciones"]) in_Prep ;
|
||||
Bank = mkPlace (mkN "banco") in_Prep ;
|
||||
Bar = mkPlace (mkN "bar") in_Prep ;
|
||||
Cafeteria = mkPlace (mkN "cafetería") in_Prep;
|
||||
Center = mkPlace (mkN "centro") in_Prep;
|
||||
Church = mkPlace (mkN "iglesia") in_Prep ;
|
||||
Cinema = mkPlace (mkN "cine") in_Prep ;
|
||||
Disco = mkPlace (mkN "discoteca") 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 "aparcamiento") in_Prep ;
|
||||
Pharmacy = mkPlace (mkN "farmacia") in_Prep ;
|
||||
PostOffice = mkPlace (compN (mkN "oficina") ["de correos"]) in_Prep ;
|
||||
Pub = mkPlace (mkN "pub" "pubs" masculine) in_Prep ;
|
||||
Restaurant = mkPlace (mkN "restaurante") in_Prep ;
|
||||
School = mkPlace (mkN "escuela") in_Prep ;
|
||||
Shop = mkPlace (mkN "tienda") in_Prep ;
|
||||
Station = mkPlace (mkN "estación" feminine) in_Prep ;
|
||||
Supermarket = mkPlace (mkN "supermercado") in_Prep ;
|
||||
Theatre = mkPlace (mkN "teatro") in_Prep ;
|
||||
Toilet = mkPlace (mkN "baño") in_Prep ;
|
||||
University = mkPlace (mkN "universidad" feminine) in_Prep ;
|
||||
Zoo = mkPlace (mkN "zoo") in_Prep ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurante")) in_Prep to_Prep ;
|
||||
|
||||
-- currencies
|
||||
DanishCrown = mkCN (mkA "daneso") (mkN "corona") | mkCN (mkN "corona") ;
|
||||
Dollar = mkCN (mkN "dólar") ;
|
||||
Euro = mkCN (mkN "euro") ;
|
||||
Lei = mkCN (mkN "leu") ;
|
||||
Leva = mkCN (mkN "lev" "lev" masculine) ;
|
||||
NorwegianCrown = mkCN (mkA "noruego") (mkN "corona") | mkCN (mkN "corona") ;
|
||||
Pound = mkCN (mkN "libra") | mkCN (mkA "esterlino") (mkN "libra") ;
|
||||
Rouble = mkCN (mkN "rublo") ;
|
||||
SwedishCrown = mkCN (mkA "sueco") (mkN "corona") | mkCN (mkN "corona") ;
|
||||
Zloty = mkCN (mkN "zloty" "zlotys" masculine) ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belga" ;
|
||||
Belgium = mkNP (mkPN "Bélgica") ;
|
||||
Bulgarian = mkNat (mkA "búlgaro") "búlgaro" "Bulgaria" ;
|
||||
Catalan = mkNat (mkA "catalán") "catalán" "Cataluña" ;
|
||||
Danish = mkNat (mkA "danés") "danés" "Dinamarca" ;
|
||||
Dutch = mkNat (mkA "neerlandés") "neerlandés" "Holanda" ;
|
||||
English = mkNat (mkA "inglés") "inglés" "Inglaterra" ;
|
||||
Finnish = mkNat (mkA "finlandés") "finés" "Finlandia" ;
|
||||
Flemish = mkNP (mkPN "flamenco") ;
|
||||
French = mkNat (mkA "francés") "francés" "Francia" ;
|
||||
German = mkNat (mkA "alemán") "alemán" "Alemania" ;
|
||||
Italian = mkNat (mkA "italiano") "italiano" "Italia" ;
|
||||
Norwegian = mkNat (mkA "noruego") "noruego" "Noruega" ;
|
||||
Polish = mkNat (mkA "polaco") "polaco" "Polonia" ;
|
||||
Romanian = mkNat (mkA "rumano") "rumano" "Rumanía" ;
|
||||
Russian = mkNat (mkA "ruso") "ruso" "Rusia" ;
|
||||
Spanish = mkNat (mkA "español" "española") "español" "España" ;
|
||||
Swedish = mkNat (mkA "sueco") "sueco" "Suecia" ;
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport (mkN "bicicleta") ;
|
||||
Bus = mkTransport (mkN "autobús" "autobuses" masculine) ;
|
||||
Car = mkTransport L.car_N | mkTransport (mkN "coche") ;
|
||||
Ferry = mkTransport (mkN "ferry") | mkTransport (mkN "transbordador") ;
|
||||
Plane = mkTransport (mkN "avión" "aviones" masculine) ;
|
||||
Subway = mkTransport (mkN "metro") ;
|
||||
Taxi = mkTransport (mkN "taxi" masculine) ;
|
||||
Train = mkTransport (mkN "tren") ;
|
||||
Tram = mkTransport (mkN "tranvía") ;
|
||||
|
||||
ByFoot = P.mkAdv "a pie" ;
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||
AHasChildren p num = mkCl p.name have_V2 (mkNP num (mkN "hijo")) ;
|
||||
AHasRoom p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "habitación" feminine)) (S.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "mesa")) (S.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||
AHasName p name = mkCl p.name (mkV2 (reflV (mkV "llamar"))) name ;
|
||||
AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "hambre" feminine))) ;
|
||||
AIll p = mkCl p.name stateCopula (mkAP (mkA "enfermo")) ;
|
||||
AKnow p = mkCl p.name (mkV (saber_71 "saber")) ;
|
||||
ALike p item = mkCl item (mkV2 (mkV ("gustar")) dative) p.name ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "vivir")) (S.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (mkV2 (mkV "amar")) q.name ;
|
||||
AMarried p = mkCl p.name stateCopula (mkAP (mkA "casado")) ;
|
||||
AReady p = mkCl p.name stateCopula (mkAP (mkA "listo")) ;
|
||||
AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "miedo"))) ;
|
||||
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 stateCopula (mkAP (mkA "cansado")) ;
|
||||
AUnderstand p = mkCl p.name (mkV (defender_29 "entender")) ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV (querer_64 "querer"))) 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 "llamar")))) ;
|
||||
QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costar" "cuesto"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "costar" "cuesto")) price ;
|
||||
|
||||
PropOpen p = mkCl p.name stateCopula (mkAP open_A) ;
|
||||
PropClosed p = mkCl p.name stateCopula (mkAP closed_A) ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP closed_A)) d) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d.habitual) ;
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP closed_A)) d.habitual) ;
|
||||
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
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 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 "esposa" feminine) ;
|
||||
Husband = xOf sing (mkN "marido" masculine) ;
|
||||
Son = xOf sing (mkN "hijo" masculine) ;
|
||||
Daughter = xOf sing (mkN "hija" feminine) ;
|
||||
Children = xOf plur (mkN "hijo") ;
|
||||
|
||||
-- week days
|
||||
|
||||
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
|
||||
|
||||
--a qué distancia está PLACE
|
||||
HowFar place = mkQS (mkQCl what_distance_IAdv (mkCl place.name placeCopula) );
|
||||
|
||||
--a qué distancia está X de Y
|
||||
HowFarFrom x y = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP (mkVP placeCopula)
|
||||
(S.mkAdv from_Prep x.name))));
|
||||
|
||||
-- "a qué distancia está X de Y con T"
|
||||
-- x,y: Place ; t: ByTransport
|
||||
HowFarFromBy x y t = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP
|
||||
(mkVP (mkVP placeCopula)
|
||||
(S.mkAdv from_Prep x.name))
|
||||
t)));
|
||||
|
||||
-- "a qué distancia está Y con T"
|
||||
-- y: Place ; t: ByTransport
|
||||
HowFarBy y t = mkQS (mkQCl what_distance_IAdv
|
||||
(mkCl y.name (mkVP (mkVP placeCopula) t)));
|
||||
|
||||
oper
|
||||
what_distance_IAdv = ss "a qué distancia"**{lock_IAdv=<>};
|
||||
placeCopula = mkV (estar_2 "estar") ;
|
||||
|
||||
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 (SyntaxSpa.mkAdv for_Prep place.name)))) ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
------------------------------------------------------------------
|
||||
-- Common adjectives like "good" or "bad" come before the noun,
|
||||
-- but most of them come after. So, when making a superlative
|
||||
-- place, we have to know in which place it belongs.
|
||||
--
|
||||
-- The lincat of Superlative is defined in SentencesSpa as a type
|
||||
-- OrdSuperlative, consisting of {ord: Ord ; isPre: Bool}.
|
||||
--
|
||||
-- The function mkSuperl returns an OrdSuperlative. SuperlPlace
|
||||
-- takes two parameters, OrdSuperlative and PlaceKind, and gives
|
||||
-- them to placeNPSuperl (defined in SentencesSpa).
|
||||
-- In placeNPSuperl the value of isPre determines whether the
|
||||
-- superlative is placed before or after the noun.
|
||||
------------------------------------------------------------------
|
||||
|
||||
TheBest = mkSuperl L.good_A True;
|
||||
TheClosest = mkSuperl L.near_A False;
|
||||
TheCheapest = mkSuperl cheap_A False ;
|
||||
TheMostExpensive = mkSuperl expensive_A False ;
|
||||
TheMostPopular =
|
||||
let popular = mkA "popular"
|
||||
in mkSuperl popular False ;
|
||||
TheWorst = mkSuperl L.bad_A True ;
|
||||
|
||||
SuperlPlace sup p = placeNPSuperl sup p ;
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
mkNat : A -> Str -> Str -> NPNationality = \nat,lang,co ->
|
||||
mkNPNationality (mkNP (mkPN lang)) (mkNP (mkPN co)) nat ;
|
||||
|
||||
|
||||
-- not the most elegant solution, but it works
|
||||
mkDay : Str -> NPDay = \d ->
|
||||
case last d of {
|
||||
"s" => mkNPDay (mkNP (mkN d)) (P.mkAdv d) (P.mkAdv ("los" ++ d)) ;
|
||||
_ => mkNPDay (mkNP (mkN d)) (P.mkAdv d) (P.mkAdv ("los" ++ d + "s"))
|
||||
} ;
|
||||
|
||||
mkPlace : N -> Prep -> CNPlace = \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 = S.mkAdv with_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Bool -> OrdSuperlative = \a,bool ->
|
||||
let ord : Ord = S.mkOrd a in {
|
||||
ord = ord ;
|
||||
isPre = bool ;
|
||||
} ;
|
||||
|
||||
|
||||
-- for adjectives that express temporary state
|
||||
stateCopula = mkVA (mkV (estar_2 "estar")) ;
|
||||
|
||||
cheap_A = mkA "barato" ;
|
||||
expensive_A = mkA "caro" ;
|
||||
open_A = mkA "abierto" ;
|
||||
closed_A = mkA "cerrado" ;
|
||||
|
||||
}
|
||||
302
testsuite/lpgf/phrasebook/WordsSwe.gf
Normal file
302
testsuite/lpgf/phrasebook/WordsSwe.gf
Normal file
@@ -0,0 +1,302 @@
|
||||
-- (c) 2010 Aarne Ranta under LGPL
|
||||
--# -coding=latin1
|
||||
|
||||
concrete WordsSwe of Words = SentencesSwe **
|
||||
open SyntaxSwe, ParadigmsSwe, IrregSwe, (L = LexiconSwe), ExtraSwe, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
-- kinds of food
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "ost") ;
|
||||
Chicken = mkCN (mkN "kyckling") ;
|
||||
Coffee = mkCN (mkN "kaffe" neutrum) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "kött" "kött") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "pizza") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "te" neutrum) ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- properties
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Cheap = mkA "billig" ;
|
||||
Boring = mkA "tråkig" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "läcker" ;
|
||||
Expensive = mkA "dyr" ;
|
||||
Fresh = mkA "färsk" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "suspekt" "suspekt" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- places
|
||||
|
||||
Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
||||
AmusementPark = mkPlace (mkN "nöjespark" "nöjesparker") "i" ;
|
||||
Bank = mkPlace (mkN "bank" "banker") "i" ;
|
||||
Bar = mkPlace (mkN "bar" "barer") "i" ;
|
||||
Cafeteria = mkPlace (mkN "café" "café") "på" ;
|
||||
Center = mkPlace (mkN "innerstad" "innerstäder") "på" ; ----
|
||||
Church = mkPlace (mkN "kyrka") "i" ;
|
||||
Cinema = mkPlace (mkN "bio" "bion" "biografer" "biograferna") "på" ; ---- ?
|
||||
Disco = mkPlace (mkN "diskotek" "diskotek") "på" ;
|
||||
Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
||||
Hotel = mkPlace (mkN "hotell" "hotell") "på" ;
|
||||
Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
||||
Park = mkPlace (mkN "park" "parker") "i" ;
|
||||
Parking = mkPlace (mkN "parkering") "på" ;
|
||||
Pharmacy = mkPlace (mkN "apotek" "apotek") "i" ;
|
||||
PostOffice = mkPlace (mkN "post" "poster") "på" ;
|
||||
Pub = mkPlace (mkN "pub") "på" ;
|
||||
Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
||||
Shop = mkPlace (mkN "affär" "affärer") "i" ;
|
||||
School = mkPlace (mkN "skola") "på" ;
|
||||
Station = mkPlace (mkN "station" "stationer") "på" ;
|
||||
Supermarket = mkPlace (mkN "snabbköp" "snabbköp") "på" ;
|
||||
Theatre = mkPlace (mkN "teater" "teatrar") "på" ;
|
||||
Toilet = mkPlace2 (mkN "toalett" "toaletter") "på" "på" ;
|
||||
University = mkPlace (mkN "universitet" "universitet") "på" ;
|
||||
Zoo = mkPlace (mkN "djurpark" "djurparker") "i" ;
|
||||
|
||||
CitRestaurant cit =
|
||||
mkCNPlace (mkCN cit (mkN "restaurang" "restauranger")) on_Prep to_Prep ;
|
||||
|
||||
-- currencies
|
||||
|
||||
DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||
Euro = mkCN (mkN "euro" "euro") ;
|
||||
Lei = mkCN (mkN "lei" "lei") ;
|
||||
Leva = mkCN (mkN "leva" "leva") ;
|
||||
NorwegianCrown = mkCN (mkA "norsk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Pound = mkCN (mkN "pund" "pund") ; ---- ett pund ?
|
||||
Rouble = mkCN (mkN "rubel" "rubeln" "rubel" "rubeln") ; ---- ?
|
||||
Rupee = mkCN (mkN "rupee" "rupee") ; ----
|
||||
SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||
Zloty = mkCN (mkN "zloty" "zloty") ;
|
||||
Yuan = mkCN (mkN "yuan" "yuan") ;
|
||||
|
||||
-- nationalities
|
||||
|
||||
Belgian = mkA "belgisk" ;
|
||||
Belgium = mkNP (mkPN "Belgien") ;
|
||||
Bulgarian = mkNat "bulgarisk" "Bulgarien" ;
|
||||
Catalan = mkNat "katalansk" "Katalonien" ;
|
||||
China = mkNat "kinesisk" "Kina" ;
|
||||
Danish = mkNat "dansk" "Danmark" ;
|
||||
Dutch = mkNat "nederländsk" "Nederländerna" ;
|
||||
English = mkNat "engelsk" "England" ;
|
||||
Finnish = mkNat "finsk" "Finland" ;
|
||||
Flemish = mkNP (mkPN "flamländska") ;
|
||||
French = mkNat "fransk" "Frankrike" ;
|
||||
German = mkNat "tysk" "Tyskland" ;
|
||||
Hindi = mkNP (mkPN "hindi") ;
|
||||
Indian = mkA "indisk" ;
|
||||
India = mkNP (mkPN "Indien") ;
|
||||
Italian = mkNat "italiensk" "Italien" ;
|
||||
Norwegian = mkNat "norsk" "Norge" ;
|
||||
Polish = mkNat "polsk" "Polen" ;
|
||||
Romanian = mkNat "rumänsk" "Rumänien" ;
|
||||
Russian = mkNat "rysk" "Ryssland" ;
|
||||
Spanish = mkNat "spansk" "Spanien" ;
|
||||
Swedish = mkNat "svensk" "Sverige" ;
|
||||
|
||||
-- means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "buss") ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "färja") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "tunnelbana") ;
|
||||
Taxi = mkTransport (mkN "taxi" "taxin" "taxibilar" "taxibilarna") ; ----
|
||||
Train = mkTransport L.train_N ;
|
||||
Tram = mkTransport (mkN "spårvagn") ;
|
||||
|
||||
ByFoot = ParadigmsSwe.mkAdv "till fots" ;
|
||||
|
||||
-- actions
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||
AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
||||
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 "rum" "rum"))
|
||||
(SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "bord" "bord"))
|
||||
(SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||
AHungry p = mkCl p.name (mkA "hungrig") ;
|
||||
AIll p = mkCl p.name (mkA "sjuk") ;
|
||||
AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||
ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "gift") ;
|
||||
AReady p = mkCl p.name (mkA "färdig") ;
|
||||
AScared p = mkCl p.name (mkA "rädd") ;
|
||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
||||
AThirsty p = mkCl p.name (mkA "törstig") ;
|
||||
ATired p = mkCl p.name (mkA "trött") ;
|
||||
AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
||||
AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "kosta")) 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) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss ("vi ses")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "the wife of my son" for non-pronouns.
|
||||
|
||||
Wife = xOf sing (mkN "fru" "fruar") ;
|
||||
Husband = xOf sing L.man_N ;
|
||||
Son = xOf sing (mkN "son" "söner") ;
|
||||
Daughter = xOf sing (mkN "dotter" "döttrar") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "måndag" ;
|
||||
Tuesday = mkDay "tisdag" ;
|
||||
Wednesday = mkDay "onsdag" ;
|
||||
Thursday = mkDay "torsdag" ;
|
||||
Friday = mkDay "fredag" ;
|
||||
Saturday = mkDay "lördag" ;
|
||||
Sunday = mkDay "söndag" ;
|
||||
|
||||
Tomorrow = ParadigmsSwe.mkAdv "imorgon" ;
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ;
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to)
|
||||
(SyntaxSwe.mkAdv from_Prep x.name)))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to)
|
||||
(SyntaxSwe.mkAdv from_Prep x.name)) t))) ;
|
||||
HowFarBy place t =
|
||||
mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) t))) ;
|
||||
|
||||
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 "billig") ;
|
||||
TheMostExpensive = mkSuperl (mkA "dyr") ;
|
||||
TheMostPopular = mkSuperl (mkA "populär") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
oper
|
||||
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||
mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = mkNP (mkPN d) in
|
||||
mkNPDay day (SyntaxSwe.mkAdv on_Prep day)
|
||||
(SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||
mkPlace2 : N -> Str -> Str -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} =
|
||||
\p,i,t -> mkCNPlace (mkCN p) (mkPrep i) (mkPrep t) ;
|
||||
|
||||
open_A = mkA "öppen" "öppet" ;
|
||||
closed_A = mkA "stängd" "stängt" ;
|
||||
|
||||
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxSwe.mkAdv with_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
|
||||
|
||||
far_IAdv = ExtraSwe.IAdvAdv L.far_Adv ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNPNationality (mkNP (mkPN "thai")) (mkNP (mkPN "Thailand")) (mkA "thailändsk") ;
|
||||
Baht = mkCN (mkN "baht" "baht") ;
|
||||
|
||||
Rice = mkCN (mkN "ris" "ris") ;
|
||||
Pork = mkCN (mkN "fläsk" "fläsk") ;
|
||||
Beef = mkCN (mkN "nötkött" "nötkött") ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN "nudel" "nudlar") ;
|
||||
Shrimps = mkCN (mkN "räka") ;
|
||||
Chili = mkCN (mkN "chili" "chilier") ;
|
||||
Garlic = mkCN (mkN "vitlök") ;
|
||||
Durian = mkCN (mkN "durian" "durianer") ;
|
||||
Mango = mkCN (mkN "mango" "mangoer") ;
|
||||
Pineapple = mkCN (mkN "ananas" "ananaser") ;
|
||||
Coke = mkCN (mkN "kola") ;
|
||||
IceCream = mkCN (mkN "glass") ;
|
||||
Salad = mkCN (mkN "sallad" "sallader") ;
|
||||
OrangeJuice = mkCN (mkN "apelsinjuice" "apelsinjuicer") ;
|
||||
Lemonade = mkCN (mkN "läsk") ;
|
||||
Beach = mkPlace (mkN "badstrand" "badstränder") "på" ;
|
||||
|
||||
ItsRaining = mkCl (mkVP L.rain_V0) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (mkV "blåser")) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (skina_V) ;
|
||||
|
||||
Smoke = mkVP (mkV "röker") ;
|
||||
|
||||
ADoctor = mkProfession (mkN "läkare" "läkare") ;
|
||||
AProfessor = mkProfession (mkN "professor" "professorer") ;
|
||||
ALawyer = mkProfession (mkN "jurist" "jurister") ;
|
||||
AEngineer = mkProfession (mkN "ingenjör" "ingenjörer") ;
|
||||
ATeacher = mkProfession (mkN "lärare" "lärare") ;
|
||||
ACook = mkProfession (mkN "kock") ;
|
||||
AStudent = mkProfession (mkN "student" "srudenter") ;
|
||||
ABusinessman = mkProfession (mkN "affärsman" "affärsmannen" "affärsmän" "affärsmännen") ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name (mkVP (CompBareCN (mkCN n))) ;
|
||||
|
||||
}
|
||||
319
testsuite/lpgf/phrasebook/WordsTha.gf
Normal file
319
testsuite/lpgf/phrasebook/WordsTha.gf
Normal file
@@ -0,0 +1,319 @@
|
||||
concrete WordsTha of Words = SentencesTha **
|
||||
open
|
||||
SyntaxTha,
|
||||
ParadigmsTha,
|
||||
(P = ParadigmsTha),
|
||||
(R = ResTha),
|
||||
(L = LexiconTha),
|
||||
Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN L.cheese_N ;
|
||||
Chicken = mkCN (mkN "ไก่") ;
|
||||
Coffee = mkCN (mkN (R.thword "กา" "แฟ")) ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN L.meat_N ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN (R.thword "พิซ" "ซา") "ถาด") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "ชา") ;
|
||||
Water = mkCN L.water_N ;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA (R.thword "น่า" "เบื่อ") ;
|
||||
Cheap = mkA (R.thword "รา" "คา" "ถูก") ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "อร่อย" ;
|
||||
Expensive = mkA "แพง" ;
|
||||
Fresh = mkA "สด" ;
|
||||
Good = mkA "ดี" ;
|
||||
Suspect = mkA (R.thword "สง" "สัย") ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace (placeN (R.thword "สนาม" "บิน")) ;
|
||||
AmusementPark = mkPlace (placeN (R.thword "สวน" "สนุก")) ;
|
||||
Bank = mkPlace (placeN (R.thword "ธนา" "คาร")) ;
|
||||
Bar = mkPlace (placeN (R.thword "บาร์")) ;
|
||||
Cafeteria = mkPlace (placeN (R.thword "โรง" "อา" "หาร")) ;
|
||||
Center = mkPlace (placeN (R.thword "ศูนย์" "กลาง")) ;
|
||||
Cinema = mkPlace (placeN (R.thword "โรง" "หนัง")) ;
|
||||
Church = mkPlace (placeN (R.thword "โบส" "ถ์")) ;
|
||||
Disco = mkPlace (placeN (R.thword "ดิส" "โก้")) ;
|
||||
Hospital = mkPlace (placeN (R.thword "โรง" "พยา" "บาล")) ;
|
||||
Hotel = mkPlace (placeN (R.thword "โรง" "แรม")) ;
|
||||
Museum = mkPlace (placeN (R.thword "พิ" " พิธ" "ภัณ" "ฑ์")) ;
|
||||
Park = mkPlace (placeN (R.thword "สวน")) ;
|
||||
Parking = mkPlace (placeN (R.thword "ที่" "จอด" "รถ")) ;
|
||||
Pharmacy = mkPlace (placeN (R.thword "ร้าน" "ขาย" "ยา")) ;
|
||||
PostOffice = mkPlace (placeN (R.thword "ไปร" "ษณี" "ย์")) ;
|
||||
Pub = mkPlace (placeN (R.thword "ร้าน" "เหล้า")) ;
|
||||
Restaurant = mkPlace L.restaurant_N ;
|
||||
School = mkPlace L.school_N ;
|
||||
Shop = mkPlace L.shop_N ;
|
||||
Station = mkPlace (placeN (R.thword "สถา" "นี")) ;
|
||||
Supermarket = mkPlace (placeN (R.thword "ซุป" "เปอ" "ร์" "มา" "เก็ต")) ;
|
||||
Theatre = mkPlace (placeN (R.thword "โรง" "ละ" "คร")) ;
|
||||
Toilet = mkPlace (placeN (R.thword "ห้อง" "น้ำ")) ;
|
||||
University = mkPlace L.university_N ;
|
||||
Zoo = mkPlace (placeN (R.thword "สวน" "สัต" "ว์")) ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit L.restaurant_N) at_Prep noPrep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA (R.thword "เดน" "มาร์ค")) (mkN "โครน") | mkCurrency "โครน" ; ---#
|
||||
Dollar = mkCurrency (R.thword "ดอล" "ล่า" "ห์") ;
|
||||
Euro = mkCurrency (R.thword "ยู" "โร") ;
|
||||
Lei = mkCurrency "ลี" ;
|
||||
Leva = mkCurrency (R.thword "ลี" "วา") ;
|
||||
NorwegianCrown = mkCN (mkA (R.thword "นอร" "เว" "ย์")) (mkN "โครน") | mkCurrency "โครน" ;
|
||||
Pound = mkCurrency (R.thword "ปอน" "ด์") ;
|
||||
Rouble = mkCurrency (R.thword "รู" "เบิล") ;
|
||||
SwedishCrown = mkCN (mkA (R.thword "สวี" "ดิช")) (mkN "โครน") | mkCurrency "โครน" ;
|
||||
Zloty = mkCurrency (R.thword "สะ" "ลอ" "ตี้") ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA (R.thword "เบล" "เยี่ยน") ;
|
||||
Belgium = mkNP (mkPN (R.thword "เบล" "เยี่ยม")) ;
|
||||
Bulgarian = mkNat (R.thword "บัล" "แก" "เรียน") ;
|
||||
Catalan = mkNat (R.thword "คะ" "ตะ" "ลัน") ;
|
||||
Danish = mkNat (R.thword "เดน" "นิช") ;
|
||||
Dutch = mkNat (R.thword "ดัทช์") ;
|
||||
English = mkNat (R.thword "อัง" "กฤษ") ;
|
||||
Finnish = mkNat (R.thword "ฟิน" "นิช") ;
|
||||
Flemish = mkNP (mkPN (R.thword "เฟลม" "มิช")) ;
|
||||
French = mkNat (R.thword "ฝรั่ง" "เศส") ;
|
||||
German = mkNat (R.thword "เยอร" "มัน") ;
|
||||
Italian = mkNat (R.thword "อิ" "ตา" "เลียน") ;
|
||||
Norwegian = mkNat (R.thword "นอร" "เวย์" "เจี้ยน") ;
|
||||
Polish = mkNat (R.thword "โป" "ลิช") ;
|
||||
Romanian = mkNat (R.thword "โร" "มา" "เนียน") ;
|
||||
Russian = mkNat (R.thword "รัส" "เซียน") ;
|
||||
Spanish = mkNat (R.thword "สแปน" "นิช") ;
|
||||
Swedish = mkNat (R.thword "สวี" "ดิช") ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN (R.thword "รถ" "เม" "ล์")) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN (R.thword "เรือ" "เฟอ" "รี่")) ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN (R.thword "รถ" "ไฟ" "ใต้" "ดิน")) ;
|
||||
Taxi = mkTransport (mkN (R.thword "รถ" "แท็ก" "ซี่")) ;
|
||||
Train = mkTransport L.train_N ;
|
||||
Tram = mkTransport (mkN (R.thword "รถ" "ราง")) ;
|
||||
|
||||
ByFoot = P.mkAdv (R.thword "ด้วย" "การ" "เดิน") ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsTha.mkAdv (R.thword "อา" "ยุ"))) ;
|
||||
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 "ห้อง")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "หมาย" "เลข")))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "โต๊ะ")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "ตัว" "ที่")))) ;
|
||||
AHasName p name = mkCl p.name (mkV2 "ชื่อ") name ; ---
|
||||
AHungry p = mkCl p.name (mkA (R.thword "หิว" "ข้าว")) ;
|
||||
AIll p = mkCl p.name (mkA (R.thword "เจ็บ" "ปวย")) ;
|
||||
AKnow p = mkCl p.name <lin V L.know_V2 : V> ;
|
||||
ALike p item = mkCl p.name (mkV2 (mkV "ชอบ")) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV (R.thword "อา" "ศัย" "อยู่"))) (SyntaxTha.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name L.love_V2 q.name ;
|
||||
AMarried p = mkCl p.name (mkAP L.married_A2) ;
|
||||
AReady p = mkCl p.name L.ready_A ;
|
||||
AScared p = mkCl p.name (mkA "กลัว") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = mkCl p.name (mkA (R.thword "กระ" "หาย" "น้ำ")) ;
|
||||
ATired p = mkCl p.name (mkA "เหนื่อย") ;
|
||||
AUnderstand p = mkCl p.name (mkV (R.thword "เข้า" "ใจ")) ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV (R.thword "ต้อง" "การ"))) obj ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 "ชื่อ")) ; ---
|
||||
QWhatAge p = mkQS (mkQCl (mkIComp how8much_IAdv) (mkNP p.name (ParadigmsTha.mkAdv (R.thword "อา" "ยุ")))) ; --- Adv
|
||||
HowMuchCost item = mkQS (mkQCl (mkIComp how8much_IAdv) item) ;
|
||||
ItCost item price = mkCl item (mkV2 (R.thword "เป็น" "รา" "คา")) 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) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (lin Text (ss (R.thword "เจอ" "กัน"))) (mkPhrase (mkUtt d)) ;
|
||||
PSeeYouPlace p = mkText (lin Text (ss (R.thword "เจอ" "กัน" "ที่"))) (mkPhrase (mkUtt p.at)) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (lin Text (ss (R.thword "เจอ" "กัน" "ที่")))
|
||||
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||
|
||||
-- Relations are expressed as "มย วิฝเ" or "มย สoณส วิฝเ", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "ตหเ วิฝเ oฝ มย สoน" for non-pronouns.
|
||||
|
||||
Wife = xOf (R.thword "ภร" "รยา") ; -- polite
|
||||
Husband = xOf (R.thword "สา" "มี") ; -- polite
|
||||
--- Wife = xOf "เมีย" ; ---- familiar
|
||||
--- Husband = xOf "ผัว" ; ---- familiar
|
||||
Son = xOf (R.thword "ลูก" "ชาย") ;
|
||||
Daughter = xOf (R.thword "ลูก" "สาว") ;
|
||||
Children = xOf L.child_N.s ; ----
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay (R.thword "วัน" "จั" "นท" "ร์") ;
|
||||
Tuesday = mkDay (R.thword "วัน" "อัง" "คาร") ;
|
||||
Wednesday = mkDay (R.thword "วัน" "พุธ") ;
|
||||
Thursday = mkDay (R.thword "วัน" "พฤ" "หัส" "บดี") ;
|
||||
Friday = mkDay (R.thword "วัน" "ศุกร์") ;
|
||||
Saturday = mkDay (R.thword "วัน" "เสาร์") ;
|
||||
Sunday = mkDay (R.thword "วัน" "อา" "ทิตย์") ;
|
||||
|
||||
Tomorrow = P.mkAdv (R.thword "วัน" "พรุ่ง" "นี้") ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA (R.thword "รา" "คา" "ถูก")) ;
|
||||
TheMostExpensive = mkSuperl (mkA "แพง") ;
|
||||
TheMostPopular = mkSuperl (mkA (R.thword "โด่ง" "ดัง")) ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
HowFar place = mkQS (mkQCl howFar.howfar place.name) ; ---- (mkNP place.name howFar.far)) ;
|
||||
|
||||
HowFarFrom x y =
|
||||
mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far) (lin AP (R.thbind from_Prep x.name)))) ; --- no yuu
|
||||
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
|
||||
(lin AP (R.thbind from_Prep (mkNP x.name t))))) ;
|
||||
-- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
|
||||
-- (SyntaxTha.mkAdv from_Prep (mkNP x.name t)))) ;
|
||||
|
||||
HowFarBy y t = mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far) <t : AP>)) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkCN (mkCN trans.name (mkSC (mkVP L.go_V))) place.to))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
oper
|
||||
-- thpron = R.thpron ;
|
||||
|
||||
mkNat : Str -> NPNationality = \nat ->
|
||||
mkNPNationality (mkNP (mkCN (mkA nat) L.language_N)) (mkNP (mkCN (mkA nat) L.country_N)) (mkA nat) ;
|
||||
|
||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||
let day = lin NP (ss d) in
|
||||
mkNPDay day (SyntaxTha.mkAdv noPrep day)
|
||||
(SyntaxTha.mkAdv noPrep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||
|
||||
mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
|
||||
mkCNPlace (mkCN p) at_Prep noPrep ;
|
||||
|
||||
open_A = P.mkA "เปิด" ;
|
||||
closed_A = P.mkA "ปิด" ;
|
||||
|
||||
xOf : Str -> NPPerson -> NPPerson = \f,p ->
|
||||
{name = mkNP the_Det (mkCN (personN f) (SyntaxTha.mkAdv possess_Prep p.name)) ;
|
||||
isPron = False ; poss = the_Quant} ; ---- poss not used
|
||||
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxTha.mkAdv (mkPrep "โดย") (mkNP n)
|
||||
} ;
|
||||
|
||||
mkSuperl : A -> Det = \a -> SyntaxTha.mkDet the_Art (SyntaxTha.mkOrd a) ;
|
||||
|
||||
mkCurrency : Str -> CN = \s -> mkCN (mkN [] s) ; ---- just a classifier
|
||||
|
||||
howFar : {howfar : IComp ; far : Adv ; how : IAdv} = { --- to avoid yuu
|
||||
howfar = lin IComp (ss ("ไกล" + "เท่า" + "ไร")) ; far = lin Adv (ss ("ไกล" + "เท่า" + "ไร")) ; how = lin IAdv (ss [])
|
||||
} ;
|
||||
|
||||
at_Prep = mkPrep "ที่" ;
|
||||
noPrep = mkPrep [] ;
|
||||
|
||||
--------------------------------------------------
|
||||
-- New 30/11/2011 AR
|
||||
--------------------------------------------------
|
||||
|
||||
lin
|
||||
Thai = mkNat "ไทย" ;
|
||||
Baht = mkCurrency "บาท" ;
|
||||
|
||||
Rice = mkCN (mkN ("ข้าว")) ;
|
||||
Pork = mkCN (mkN ("หมู")) ;
|
||||
Beef = mkCN (mkN ("เนื้อ")) ;
|
||||
Egg = mkCN L.egg_N ;
|
||||
Noodles = mkCN (mkN (R.thword "ก๋วย" "เตี๋ยว")) ;
|
||||
Shrimps = mkCN (mkN ("กุ้ง")) ;
|
||||
Chili = mkCN (mkN "พริก") ;
|
||||
Garlic = mkCN (mkN (R.thword "กะ" "เทียม")) ;
|
||||
Durian = mkCN (mkN (R.thword "ทุ" "เรียน")) ;
|
||||
Mango = mkCN (mkN (R.thword "มะ" "ม่วง")) ;
|
||||
Pineapple = mkCN (mkN (R.thword "สับ" "ปะ" "รด")) ;
|
||||
Coke = mkCN (mkN ("โค้ก")) ;
|
||||
IceCream = mkCN (mkN (R.thword "ไอ" "ศ" "กรีม")) ;
|
||||
Salad = mkCN (mkN "สลัด") ;
|
||||
OrangeJuice = mkCN (mkN (R.thword "น้ำ" "ส้ม" "คั้น")) ;
|
||||
Lemonade = mkCN (mkN (R.thword "น้ำ" "มะ" "นาว")) ;
|
||||
Beach = mkPlace (placeN (R.thword "หาด")) ;
|
||||
|
||||
ItsRaining = mkCl (mkVP L.rain_V0) ;
|
||||
ItsCold = mkCl (mkVP L.cold_A) ;
|
||||
ItsWarm = mkCl (mkVP L.warm_A) ;
|
||||
ItsWindy = mkCl (mkVP (P.mkA (R.thword "ลม" "จัด"))) ;
|
||||
SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (R.regV (R.thword "ฉาย" "แสง"))) ;
|
||||
|
||||
Smoke = mkVP (P.mkV (R.thword "สูบ" "บุ" "รี")) ;
|
||||
|
||||
ADoctor = mkProfession (P.personN "หมอ") ;
|
||||
AProfessor = mkProfession (P.personN (R.thword "อา" "จารย์")) ;
|
||||
ALawyer = mkProfession (P.personN (R.thword "มัก" "กฎ" "หมาย")) ;
|
||||
AEngineer = mkProfession (P.personN (R.thword "วิ" "ศวกร")) ;
|
||||
ATeacher = mkProfession (P.personN "ครู") ;
|
||||
ACook = mkProfession (P.personN (R.thword "ภัก" "ษกาน")) ;
|
||||
AStudent = mkProfession (P.personN (R.thword "นัก" "ศึก" "ษา")) ;
|
||||
ABusinessman = mkProfession (P.personN (R.thword "ฝู้" "ประ" "กอบ" "การ")) ;
|
||||
|
||||
oper
|
||||
mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
|
||||
}
|
||||
|
||||
280
testsuite/lpgf/phrasebook/WordsUrd.gf
Normal file
280
testsuite/lpgf/phrasebook/WordsUrd.gf
Normal file
@@ -0,0 +1,280 @@
|
||||
--2 Implementations of Words, with English as example
|
||||
|
||||
concrete WordsUrd of Words = SentencesUrd **
|
||||
open
|
||||
SyntaxUrd,
|
||||
CommonHindustani,
|
||||
ParadigmsUrd,
|
||||
(L = LexiconUrd),
|
||||
(P = ParadigmsUrd),
|
||||
-- IrregUrd,
|
||||
ExtraUrd,
|
||||
Prelude in {
|
||||
flags coding = utf8 ;
|
||||
lin
|
||||
|
||||
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||
|
||||
Apple = mkCN L.apple_N ;
|
||||
Beer = mkCN L.beer_N ;
|
||||
Bread = mkCN L.bread_N ;
|
||||
Cheese = mkCN (mkN "پنیر" Fem) ;
|
||||
Chicken = mkCN (mkN "مرغی") ;
|
||||
Coffee = mkCN (mkN "كافی") ;
|
||||
Fish = mkCN L.fish_N ;
|
||||
Meat = mkCN (mkN "گوشت") ;
|
||||
Milk = mkCN L.milk_N ;
|
||||
Pizza = mkCN (mkN "پیزہ") ;
|
||||
Salt = mkCN L.salt_N ;
|
||||
Tea = mkCN (mkN "چاے" Fem) ;
|
||||
Water = mkCN L.water_N;
|
||||
Wine = mkCN L.wine_N ;
|
||||
|
||||
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||
|
||||
Bad = L.bad_A ;
|
||||
Boring = mkA "فضول" ;
|
||||
Cheap = mkA "سستا" ;
|
||||
Cold = L.cold_A ;
|
||||
Delicious = mkA "مزیدار" ;
|
||||
Expensive = mkA "مہنگا" ;
|
||||
Fresh = mkA "تازہ" ;
|
||||
Good = L.good_A ;
|
||||
Suspect = mkA "برا" ;
|
||||
Warm = L.warm_A ;
|
||||
|
||||
-- Places require different prepositions to express location; in some languages
|
||||
-- also the directional preposition varies, but in English we use $to$, as
|
||||
-- defined by $mkPlace$.
|
||||
|
||||
Airport = mkPlace "ہوای اڈہ" "پر" ;
|
||||
AmusementPark = mkCompoundPlace "ایمیوزیم" "پارك" "میں" ;
|
||||
Bank = mkPlace "بینك" "میں" ;
|
||||
Bar = mkPlace "بار" "میں" ;
|
||||
Cafeteria = mkPlace "كنتین" "میں" ;
|
||||
Center = mkPlace "سنٹر" "پر" ;
|
||||
Cinema = mkPlace "سینما" "میں" ;
|
||||
Church = mkPlace "چرچ" "میں" ;
|
||||
Disco = mkPlace "ڈسكو" "میں" ;
|
||||
Hospital = mkPlace "ہسپتال" "میں" ;
|
||||
Hotel = mkPlace "ہوٹل" "میں" ;
|
||||
Museum = mkPlace "میوزیم" "پر" ;
|
||||
Park = mkPlace "پارك" "میں" ;
|
||||
Parking = mkCompoundPlace "كار" "پارك" "میں" ;
|
||||
Pharmacy = mkPlace "فارمیسی" "پر" ;
|
||||
PostOffice = mkCompoundPlace "ڈاك" "خانہ" "پر" ;
|
||||
Pub = mkPlace "پب" "میں" ;
|
||||
Restaurant = mkPlace "ہوٹل" "میں" ;
|
||||
School = mkPlace "سكول" "میں" ;
|
||||
Shop = mkPlaceFem "دوكان" "میں" Fem;
|
||||
Station = mkPlace "سٹیشن" "پر" ;
|
||||
Supermarket = mkPlace "سپر ماركیٹ" "میں" ;
|
||||
Theatre = mkPlace "تھیٹر" "پر" ;
|
||||
Toilet = mkPlace "غسل خانہ" "میں" ;
|
||||
University = mkPlaceFem "یونیورسٹی" "میں" Fem;
|
||||
Zoo = mkPlace "چڑیا گھر" "میں" ;
|
||||
|
||||
CitRestaurant cit = mkCNPlace (mkCN cit (mkN "ہوٹل")) in_Prep to_Prep ;
|
||||
|
||||
|
||||
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||
|
||||
DanishCrown = mkCN (mkA "ڈینش") (mkN "كراون") | mkCN (mkN "كراون") ;
|
||||
Dollar = mkCN (mkN "ڈالر") ;
|
||||
Euro = mkCN (mkN "یورو") ; -- to prevent euroes
|
||||
Lei = mkCN (mkN "لی") ;
|
||||
Leva = mkCN (mkN "لیوا") ;
|
||||
NorwegianCrown = mkCN (mkA "نارویجن") (mkN "كراون") | mkCN (mkN "كراون") ;
|
||||
Pound = mkCN (mkN "پاونڈ") ;
|
||||
Rouble = mkCN (mkN "روبل") ;
|
||||
SwedishCrown = mkCN (mkA "سویڈش") (mkN "كراون") | mkCN (mkN "كراون") ;
|
||||
Zloty = mkCN (mkN "زلوٹی" Fem) ;
|
||||
|
||||
-- Nationalities
|
||||
|
||||
Belgian = mkA "بلجیم" ;
|
||||
Belgium = mkNP (mkPN "بلجیم") ;
|
||||
Bulgarian = mkNat "بلغارین" "بلغاریہ" ;
|
||||
Catalan = mkNPNationality (mkNP (mkPN "كیٹالان")) (mkNP (mkPN "كاٹالان")) (mkA "كاٹالانین") ;
|
||||
Danish = mkNat "ڈینش" "ڈنمارك" ;
|
||||
Dutch = mkNPNationality (mkNP (mkPN "ڈچ")) (mkNP the_Quant (mkN "نیدرلینڈ")) (mkA "ڈچ") ;
|
||||
English = mkNat "انگلش" "انگلینڈ" ;
|
||||
Finnish = mkNat "فنش" "فنلینڈ" ;
|
||||
Flemish = mkNP (mkPN "فلیمش") ;
|
||||
French = mkNat "فرانسیسی" "فرانس" ;
|
||||
German = mkNat "جرمن" "جرمنی" ;
|
||||
Italian = mkNat "اطالوی" "اٹلی" ;
|
||||
Norwegian = mkNat "نارویجن" "ناروے" ;
|
||||
Polish = mkNat "پولش" "پولینڈ" ;
|
||||
Romanian = mkNat "رومانین" "رومانیہ" ;
|
||||
Russian = mkNat "روسی" "روس" ;
|
||||
Spanish = mkNat "سپینی" "سپین" ;
|
||||
Swedish = mkNat "سویڈش" "سویڈن" ;
|
||||
|
||||
-- Means of transportation
|
||||
|
||||
Bike = mkTransport L.bike_N ;
|
||||
Bus = mkTransport (mkN "بس" Fem) ;
|
||||
Car = mkTransport L.car_N ;
|
||||
Ferry = mkTransport (mkN "فیری") ;
|
||||
Plane = mkTransport L.airplane_N ;
|
||||
Subway = mkTransport (mkN "سب وے") ;
|
||||
Taxi = mkTransport (mkN "ٹیكسی") ;
|
||||
Train = mkTransport (mkN "ریل گاڑی") ;
|
||||
Tram = mkTransport (mkN "ٹرام" Fem) ;
|
||||
|
||||
ByFoot = P.mkAdv "پیدل" ;
|
||||
|
||||
-- Actions: the predication patterns are very often language-dependent.
|
||||
|
||||
-- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsUrd.mkAdv "كا"));
|
||||
AHasAge p num = mkCl p.name (mkNP num (mkCN (modN 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 "كمرہ")) (SyntaxUrd.mkAdv for_Prep (mkNP num (P.mkN "شخص" "شخص" "شخص" "اشخاص" "اشخاص" "شخصو" masculine)))) ;
|
||||
AHasTable p num = mkCl p.name have_V2
|
||||
(mkNP (mkNP a_Det (mkN "میز")) (SyntaxUrd.mkAdv for_Prep (mkNP num (P.mkN "شخص" "شخص" "شخص" "اشخاص" "اشخاص" "شخصو" masculine)))) ;
|
||||
AHasName p name = mkCl (nameOf p) name ;
|
||||
AHungry p = mkCl p.name (mkA "بھوكا") ;
|
||||
AIll p = mkCl p.name (mkA "بیمار") ;
|
||||
AKnow p = mkCl p.name (mkV "جاننا") ;
|
||||
ALike p item = mkCl p.name (L.like_V2) item ;
|
||||
ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxUrd.mkAdv in_Prep co)) ;
|
||||
ALove p q = mkCl p.name (L.love_V2) q.name ;
|
||||
AMarried p = mkCl p.name (mkA "شادی شدہ") ;
|
||||
AReady p = mkCl p.name (mkA "تیار") ;
|
||||
AScared p = mkCl p.name (P.mkCompoundA "ڈرا" "ہوا") ;
|
||||
ASpeak p lang = mkCl p.name L.speak_V2 lang ;
|
||||
AThirsty p = mkCl p.name (mkA "پیاسا") ;
|
||||
ATired p = mkCl p.name (P.mkCompoundA "تھكا" "ہوا") ;
|
||||
AUnderstand p = mkCl p.name (mkV "سمجھنا") ;
|
||||
AWant p obj = mkCl p.name (mkV2 (mkV "چاہنا")) obj ;
|
||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
|
||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||
|
||||
-- miscellaneous
|
||||
|
||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||
QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (P.mkN "نام" "نام" "نام" "نام" "نام" "نام" masculine))) ;
|
||||
-- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "عمر"))) ;
|
||||
QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (P.mkN "عمر" feminine))) ;
|
||||
HowMuchCost item = mkQS (mkQCl (mkCl (modNP item) (mkAdv ["كی قیمت"]))) ;
|
||||
-- HowMuchCost item = mkQS (mkQCl howMuch_IAdv (mkNP cost_Predet (modNP item))) ;
|
||||
ItCost item price = mkCl item (mkV2 (mkV "قیمت")) price ;
|
||||
|
||||
PropOpen p = mkCl p.name open_Adv ;
|
||||
PropClosed p = mkCl p.name closed_Adv ;
|
||||
PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
|
||||
PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
|
||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv);
|
||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
|
||||
|
||||
-- Building phrases from strings is complicated: the solution is to use
|
||||
-- mkText : Text -> Text -> Text ;
|
||||
|
||||
PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("ملتے ہیں"))) ;
|
||||
PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("ملتے ہیں"))) ;
|
||||
PSeeYouPlaceDate p d =
|
||||
mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
|
||||
(lin Text (Prelude.ss ("ملتے ہیں"))) ;
|
||||
|
||||
-- Relations are expressed as "می وiفع" or "می سon'س وiفع", as defined by $xOf$
|
||||
-- below. Languages without productive genitives must use an equivalent of
|
||||
-- "تہع وiفع oف می سoن" for non-pronouns.
|
||||
|
||||
Wife = xOf ssing (mkN "بیوی") ;
|
||||
Husband = xOf ssing (mkN "شوہر") ;
|
||||
Son = xOf ssing (mkN "بیٹا") ;
|
||||
Daughter = xOf ssing (mkN "بیٹی") ;
|
||||
Children = xOf plur L.child_N ;
|
||||
|
||||
-- week days
|
||||
|
||||
Monday = mkDay "سوموار" ;
|
||||
Tuesday = mkDay "منگل" ;
|
||||
Wednesday = mkDay "بدھ" ;
|
||||
Thursday = mkDay "جمعرات" ;
|
||||
Friday = mkDay "جمعہ" ;
|
||||
Saturday = mkDay "ہفتہ" ;
|
||||
Sunday = mkDay "اتوار" ;
|
||||
|
||||
Tomorrow = P.mkAdv "كل" ;
|
||||
|
||||
-- modifiers of places
|
||||
|
||||
TheBest = mkSuperl L.good_A ;
|
||||
TheClosest = mkSuperl L.near_A ;
|
||||
TheCheapest = mkSuperl (mkA "سستا") ;
|
||||
TheMostExpensive = mkSuperl (mkA "مہنگا") ;
|
||||
TheMostPopular = mkSuperl (mkA "مشہور") ;
|
||||
TheWorst = mkSuperl L.bad_A ;
|
||||
|
||||
SuperlPlace sup p = placeNP sup p ;
|
||||
|
||||
|
||||
-- transports
|
||||
|
||||
|
||||
HowFar place = mkQS (mkQCl far_IAdv place.name) ;
|
||||
HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxUrd.mkAdv from_Prep x.name))) ;
|
||||
HowFarFromBy x y t =
|
||||
mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxUrd.mkAdv from_Prep x.name)) t)) ;
|
||||
HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
|
||||
|
||||
WhichTranspPlace trans place =
|
||||
mkQS (mkQCl (SyntaxUrd.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
|
||||
|
||||
IsTranspPlace trans place =
|
||||
mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
|
||||
|
||||
|
||||
|
||||
-- auxiliaries
|
||||
|
||||
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
|
||||
-- let day = (mkNP (mkCN (mkN d))) in
|
||||
mkNPDay (mkNP (mkCN (mkN d))) (SyntaxUrd.mkAdv to_Prep (mkNP (mkCN (mkN d))))
|
||||
(SyntaxUrd.mkAdv to_Prep (mkNP (mkCN (mkN d)))) ; --changed from plNum to sgNum
|
||||
|
||||
mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
|
||||
-- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
|
||||
mkCNPlace (mkCN (mkN (comp++p))) (P.mkPrep i i) to_Prep ;
|
||||
|
||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
|
||||
mkCNPlace (mkCN (mkN p)) (P.mkPrep i i) to_Prep ;
|
||||
mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
|
||||
mkCNPlace (mkCN (P.mkN p g)) (P.mkPrep i i) to_Prep ;
|
||||
|
||||
open_Adv = P.mkAdv "كھلا" "كھلی";
|
||||
closed_Adv = P.mkAdv "بند" ;
|
||||
|
||||
xOf : SentencesUrd.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||
|
||||
nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN "نام") p).name ;
|
||||
ssing = False ;
|
||||
|
||||
mkTransport : N -> {name : CN ; by : Adv} = \n -> {
|
||||
name = mkCN n ;
|
||||
by = SyntaxUrd.mkAdv by8means_Prep (mkNP n)
|
||||
} ;
|
||||
|
||||
-- mkSuperl : A -> Det = \a -> SyntaxUrd.mkDet the_Art (SyntaxUrd.mkOrd a) ;
|
||||
mkSuperl : A -> Det = \a -> lin Det { s = \\n,g,c => a.s ! n ! g ! c ! Superl ; n = Sg } ;
|
||||
|
||||
far_IAdv = ExtraUrd.IAdvAdv (P.mkAdv "دور") ;
|
||||
what_IAdv = lin IAdv {s = "كیا"} ;
|
||||
howMuch_IAdv = lin IAdv {s = "كتنی"} ;
|
||||
-- cost_Predet = lin Predet {s = ["كی قیمت"]} ;
|
||||
-------------------
|
||||
modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"كا" ; g =noun.g} ;
|
||||
modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
|
||||
modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user