diff --git a/WebSetup.hs b/WebSetup.hs index ee9f741d6..e18847a6b 100644 --- a/WebSetup.hs +++ b/WebSetup.hs @@ -1,12 +1,13 @@ module WebSetup(buildWeb,installWeb,copyWeb,numJobs,execute) where -import System.Directory(createDirectoryIfMissing,copyFile) +import System.Directory(createDirectoryIfMissing,copyFile,doesDirectoryExist) import System.FilePath((),dropExtension) import System.Process(rawSystem) import System.Exit(ExitCode(..)) import Distribution.Simple.Setup(BuildFlags(..),Flag(..),CopyDest(..),copyDest) import Distribution.Simple.LocalBuildInfo(datadir,buildDir,absoluteInstallDirs) -import Distribution.Simple.Utils(die) +import Distribution.Simple.Utils(die,noticeNoWrap) +import qualified Distribution.Verbosity {- To test the GF web services, the minibar and the grammar editor, use @@ -16,6 +17,16 @@ import Distribution.Simple.Utils(die) Chrome). The example grammars listed below will be available in the minibar. -} +{- + Update 2018-07-04 + + The example grammars have now been removed from the GF repository. + This script will look for them in ../gf-contrib and build them from there if possible. + If not, the user will be given a message and nothing is build or copied. + (Unfortunately cabal install seems to hide all messages from stdout, + so users won't see this message unless they check the log.) +-} + example_grammars = -- :: [(pgf, subdir, src)] [("Letter.pgf","letter",letterSrc) ,("Foods.pgf","foods",foodsSrc) @@ -34,10 +45,20 @@ example_grammars = -- :: [(pgf, subdir, src)] letterSrc = ["Letter"++lang++".gf"|lang<-letterLangs] letterLangs = words "Eng Fin Fre Heb Rus Swe" +contrib_dir :: FilePath +contrib_dir = "..""gf-contrib" -buildWeb gf (flags,pkg,lbi) = - do --putStrLn "buildWeb" - mapM_ build_pgf example_grammars +buildWeb gf (flags,pkg,lbi) = do + contrib_exists <- doesDirectoryExist contrib_dir + if contrib_exists + then mapM_ build_pgf example_grammars + else noticeNoWrap Distribution.Verbosity.normal $ unlines + [ "---" + , "Example grammars are no longer included in the main GF repository, but have moved to gf-contrib." + , "If you want these example grammars to be built, clone this repository in the same top-level directory as GF:" + , "https://github.com/GrammaticalFramework/gf-contrib.git" + , "---" + ] where gfo_dir = buildDir lbi "examples" @@ -47,7 +68,7 @@ buildWeb gf (flags,pkg,lbi) = execute gf args where tmp_dir = gfo_dirsubdir - dir = "examples"subdir + dir = contrib_dirsubdir args = numJobs flags++["-make","-s"] -- ,"-optimize-pgf" ++["--gfo-dir="++tmp_dir, "--gf-lib-path="++buildDir lbi "rgl", @@ -63,10 +84,13 @@ copyWeb flags = setupWeb dest NoFlag -> NoCopyDest Flag d -> d -setupWeb dest (pkg,lbi) = - do mapM_ (createDirectoryIfMissing True) [grammars_dir,cloud_dir] - mapM_ copy_pgf example_grammars - copyGFLogo +setupWeb dest (pkg,lbi) = do + mapM_ (createDirectoryIfMissing True) [grammars_dir,cloud_dir] + contrib_exists <- doesDirectoryExist contrib_dir + if contrib_exists + then mapM_ copy_pgf example_grammars + else return () -- message already displayed from buildWeb + copyGFLogo where grammars_dir = www_dir "grammars" cloud_dir = www_dir "tmp" -- hmm diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index e073602ab..000000000 --- a/examples/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# `/examples` - -All contributions (`contrib` and `examples` folders) have now been -moved to a separate git repository at: - -https://github.com/GrammaticalFramework/gf-contrib - -This `examples` folder remains because its contents are compiled by -SetupWeb, so that when you run the GF cloud server locally you already -have some toy grammars to play with. - -Any updates to these grammars should be made at the gf-contrib repository -above; changes will be copied from there to here manually. - -John J. Camilleri, -2013-09-16 diff --git a/examples/foods/CharactersGla.gf b/examples/foods/CharactersGla.gf deleted file mode 100644 index 007ca7a24..000000000 --- a/examples/foods/CharactersGla.gf +++ /dev/null @@ -1,13 +0,0 @@ ---# -coding=latin1 -resource CharactersGla = { - - --Character classes - oper - vowel : pattern Str = #("a"|"e"|"i"|"o"|"u"|""|""|""|""|"") ; - vowelCap : pattern Str = #("A"|"E"|"I"|"O"|"U"|""|""|""|""|"") ; - consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ; - consonantCap : pattern Str = #("B"|"C"|"D"|"F"|"G"|"H"|"J"|"K"|"L"|"M"|"N"|"P"|"Q"|"R"|"S"|"T"|"V"|"W"|"X"|"Z") ; - broadVowel : pattern Str = #("a"|"o"|"u"|""|""|"") ; - slenderVowel : pattern Str = #("e"|"i"|""|"") ; - -} \ No newline at end of file diff --git a/examples/foods/CharactersGle.gf b/examples/foods/CharactersGle.gf deleted file mode 100644 index 8315703a6..000000000 --- a/examples/foods/CharactersGle.gf +++ /dev/null @@ -1,13 +0,0 @@ ---# -coding=latin1 -resource CharactersGle = { - - --Character classes - oper - vowel : pattern Str = #("a"|"e"|"i"|"o"|"u"|""|""|""|""|"") ; - vowelCap : pattern Str = #("A"|"E"|"I"|"O"|"U"|""|""|""|""|"") ; - consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ; - consonantCap : pattern Str = #("B"|"C"|"D"|"F"|"G"|"H"|"J"|"K"|"L"|"M"|"N"|"P"|"Q"|"R"|"S"|"T"|"V"|"W"|"X"|"Z") ; - broadVowel : pattern Str = #("a"|"o"|"u"|""|""|"") ; - slenderVowel : pattern Str = #("e"|"i"|""|"") ; - -} \ No newline at end of file diff --git a/examples/foods/Foods.gf b/examples/foods/Foods.gf deleted file mode 100644 index 8ea02f39d..000000000 --- a/examples/foods/Foods.gf +++ /dev/null @@ -1,15 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -abstract Foods = { - flags startcat = Comment ; - cat - Comment ; Item ; Kind ; Quality ; - fun - Pred : Item -> Quality -> Comment ; - This, That, These, Those : Kind -> Item ; - Mod : Quality -> Kind -> Kind ; - Wine, Cheese, Fish, Pizza : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, - Expensive, Delicious, Boring : Quality ; -} diff --git a/examples/foods/FoodsAfr.gf b/examples/foods/FoodsAfr.gf deleted file mode 100644 index a9c4eec77..000000000 --- a/examples/foods/FoodsAfr.gf +++ /dev/null @@ -1,77 +0,0 @@ --- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL ---# -coding=latin1 - -concrete FoodsAfr of Foods = open Prelude, Predef in{ - lincat - Comment = {s: Str} ; - Kind = {s: Number => Str} ; - Item = {s: Str ; n: Number} ; - Quality = {s: AdjAP => Str} ; - - lin - Pred item quality = {s = item.s ++ "is" ++ (quality.s ! Predic)}; - This kind = {s = "hierdie" ++ (kind.s ! Sg); n = Sg}; - That kind = {s = "daardie" ++ (kind.s ! Sg); n = Sg}; - These kind = {s = "hierdie" ++ (kind.s ! Pl); n = Pl}; - Those kind = {s = "daardie" ++ (kind.s ! Pl); n = Pl}; - Mod quality kind = {s = table{n => (quality.s ! Attr) ++ (kind.s!n)}}; - - Wine = declNoun_e "wyn"; - Cheese = declNoun_aa "kaas"; - Fish = declNoun_ss "vis"; - Pizza = declNoun_s "pizza"; - - Very quality = veryAdj quality; - - Fresh = regAdj "vars"; - Warm = regAdj "warm"; - Italian = smartAdj_e "Italiaans"; - Expensive = regAdj "duur"; - Delicious = smartAdj_e "heerlik"; - Boring = smartAdj_e "vervelig"; - - param - AdjAP = Attr | Predic ; - Number = Sg | Pl ; - - oper - --Noun operations (wyn, kaas, vis, pizza) - - declNoun_aa: Str -> {s: Number => Str} = \x -> - let v = tk 2 x - in - {s = table{Sg => x ; Pl => v + (last x) +"e"}}; - - declNoun_e: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "e"}} ; - declNoun_s: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "s"}} ; - - declNoun_ss: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + (last x) + "e"}} ; - - - --Adjective operations - - mkAdj : Str -> Str -> {s: AdjAP => Str} = \x,y -> {s = table{Attr => x; Predic => y}}; - - declAdj_e : Str -> {s : AdjAP=> Str} = \x -> mkAdj (x + "e") x; - declAdj_g : Str -> {s : AdjAP=> Str} = \w -> - let v = init w - in mkAdj (v + "") w ; - - declAdj_oog : Str -> {s : AdjAP=> Str} = \w -> - let v = init w - in - let i = init v - in mkAdj (i + "") w ; - - regAdj : Str -> {s : AdjAP=> Str} = \x -> mkAdj x x; - - veryAdj : {s: AdjAP => Str} -> {s : AdjAP=> Str} = \x -> {s = table{a => "baie" ++ (x.s!a)}}; - - - smartAdj_e : Str -> {s : AdjAP=> Str} = \a -> case a of - { - _ + "oog" => declAdj_oog a ; - _ + ("e" | "ie" | "o" | "oe") + "g" => declAdj_g a ; - _ => declAdj_e a - }; -} diff --git a/examples/foods/FoodsAmh.gf b/examples/foods/FoodsAmh.gf deleted file mode 100644 index e8915d86f..000000000 --- a/examples/foods/FoodsAmh.gf +++ /dev/null @@ -1,21 +0,0 @@ -concrete FoodsAmh of Foods ={ - flags coding = utf8; - lincat - Comment,Item,Kind,Quality = Str; - lin - Pred item quality = item ++ quality++ "ነው::" ; - This kind = "ይህ" ++ kind; - That kind = "ያ" ++ kind; - Mod quality kind = quality ++ kind; - Wine = "ወይን"; - Cheese = "አይብ"; - Fish = "ዓሳ"; - Very quality = "በጣም" ++ quality; - Fresh = "አዲስ"; - Warm = "ትኩስ"; - Italian = "የጥልያን"; - Expensive = "ውድ"; - Delicious = "ጣፋጭ"; - Boring = "አስቀያሚ"; - -} \ No newline at end of file diff --git a/examples/foods/FoodsBul.gf b/examples/foods/FoodsBul.gf deleted file mode 100644 index ac9127669..000000000 --- a/examples/foods/FoodsBul.gf +++ /dev/null @@ -1,43 +0,0 @@ --- (c) 2009 Krasimir Angelov under LGPL - -concrete FoodsBul of Foods = { - - flags - coding = utf8; - - param - Gender = Masc | Fem | Neutr; - Number = Sg | Pl; - Agr = ASg Gender | APl ; - - lincat - Comment = Str ; - Quality = {s : Agr => Str} ; - Item = {s : Str; a : Agr} ; - Kind = {s : Number => Str; g : Gender} ; - - lin - Pred item qual = item.s ++ case item.a of {ASg _ => "е"; APl => "са"} ++ qual.s ! item.a ; - - This kind = {s=case kind.g of {Masc=>"този"; Fem=>"тази"; Neutr=>"това" } ++ kind.s ! Sg; a=ASg kind.g} ; - That kind = {s=case kind.g of {Masc=>"онзи"; Fem=>"онази"; Neutr=>"онова"} ++ kind.s ! Sg; a=ASg kind.g} ; - These kind = {s="тези" ++ kind.s ! Pl; a=APl} ; - Those kind = {s="онези" ++ kind.s ! Pl; a=APl} ; - - Mod qual kind = {s=\\n => qual.s ! (case n of {Sg => ASg kind.g; Pl => APl}) ++ kind.s ! n; g=kind.g} ; - - Wine = {s = table {Sg => "вино"; Pl => "вина"}; g = Neutr}; - Cheese = {s = table {Sg => "сирене"; Pl => "сирена"}; g = Neutr}; - Fish = {s = table {Sg => "риба"; Pl => "риби"}; g = Fem}; - Pizza = {s = table {Sg => "пица"; Pl => "пици"}; g = Fem}; - - Very qual = {s = \\g => "много" ++ qual.s ! g}; - - Fresh = {s = table {ASg Masc => "свеж"; ASg Fem => "свежа"; ASg Neutr => "свежо"; APl => "свежи"}}; - Warm = {s = table {ASg Masc => "горещ"; ASg Fem => "гореща"; ASg Neutr => "горещо"; APl => "горещи"}}; - Italian = {s = table {ASg Masc => "италиански"; ASg Fem => "италианска"; ASg Neutr => "италианско"; APl => "италиански"}}; - Expensive = {s = table {ASg Masc => "скъп"; ASg Fem => "скъпа"; ASg Neutr => "скъпо"; APl => "скъпи"}}; - Delicious = {s = table {ASg Masc => "превъзходен"; ASg Fem => "превъзходна"; ASg Neutr => "превъзходно"; APl => "превъзходни"}}; - Boring = {s = table {ASg Masc => "еднообразен"; ASg Fem => "еднообразна"; ASg Neutr => "еднообразно"; APl => "еднообразни"}}; - -} diff --git a/examples/foods/FoodsCat.gf b/examples/foods/FoodsCat.gf deleted file mode 100644 index 35e4efba6..000000000 --- a/examples/foods/FoodsCat.gf +++ /dev/null @@ -1,6 +0,0 @@ - --- (c) 2009 Jordi Saludes under LGPL - -concrete FoodsCat of Foods = FoodsI with - (Syntax = SyntaxCat), - (LexFoods = LexFoodsCat) ; diff --git a/examples/foods/FoodsChi.gf b/examples/foods/FoodsChi.gf deleted file mode 100644 index 163aa0eb1..000000000 --- a/examples/foods/FoodsChi.gf +++ /dev/null @@ -1,35 +0,0 @@ -concrete FoodsChi of Foods = { -flags coding = utf8 ; -lincat - Comment, Item = Str ; - Kind = {s,c : Str} ; - Quality = {s,p : Str} ; -lin - Pred item quality = item ++ "是" ++ quality.s ++ quality.p ; - This kind = "这" ++ kind.c ++ kind.s ; - That kind = "那" ++ kind.c ++ kind.s ; - These kind = "这" ++ "些" ++ kind.s ; - Those kind = "那" ++ "些" ++ kind.s ; - Mod quality kind = { - s = quality.s ++ quality.p ++ kind.s ; - c = kind.c - } ; - Wine = geKind "酒" ; - Pizza = geKind "比 萨 饼" ; - Cheese = geKind "奶 酪" ; - Fish = geKind "鱼" ; - Very quality = longQuality ("非 常" ++ quality.s) ; - Fresh = longQuality "新 鲜" ; - Warm = longQuality "温 热" ; - Italian = longQuality "意 大 利 式" ; - Expensive = longQuality "昂 贵" ; - Delicious = longQuality "美 味" ; - Boring = longQuality "难 吃" ; -oper - mkKind : Str -> Str -> {s,c : Str} = \s,c -> - {s = s ; c = c} ; - geKind : Str -> {s,c : Str} = \s -> - mkKind s "个" ; - longQuality : Str -> {s,p : Str} = \s -> - {s = s ; p = "的"} ; -} diff --git a/examples/foods/FoodsCze.gf b/examples/foods/FoodsCze.gf deleted file mode 100644 index 3fec68141..000000000 --- a/examples/foods/FoodsCze.gf +++ /dev/null @@ -1,35 +0,0 @@ --- (c) 2011 Katerina Bohmova under LGPL - -concrete FoodsCze of Foods = open ResCze in { - flags - coding = utf8 ; - lincat - Comment = {s : Str} ; - Quality = Adjective ; - Kind = Noun ; - Item = NounPhrase ; - lin - Pred item quality = - {s = item.s ++ copula ! item.n ++ - quality.s ! item.g ! item.n} ; - This = det Sg "tento" "tato" "toto" ; - That = det Sg "tamten" "tamta" "tamto" ; - These = det Pl "tyto" "tyto" "tato" ; - Those = det Pl "tamty" "tamty" "tamta" ; - Mod quality kind = { - s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; - g = kind.g - } ; - Wine = noun "víno" "vína" Neutr ; - Cheese = noun "sýr" "sýry" Masc ; - Fish = noun "ryba" "ryby" Fem ; - Pizza = noun "pizza" "pizzy" Fem ; - Very qual = {s = \\g,n => "velmi" ++ qual.s ! g ! n} ; - Fresh = regAdj "čerstv" ; - Warm = regAdj "tepl" ; - Italian = regAdj "italsk" ; - Expensive = regAdj "drah" ; - Delicious = regnfAdj "vynikající" ; - Boring = regAdj "nudn" ; -} - diff --git a/examples/foods/FoodsDut.gf b/examples/foods/FoodsDut.gf deleted file mode 100644 index d4855e5c6..000000000 --- a/examples/foods/FoodsDut.gf +++ /dev/null @@ -1,58 +0,0 @@ --- (c) 2009 Femke Johansson under LGPL - -concrete FoodsDut of Foods = { - - lincat - Comment = {s : Str}; - Quality = {s : AForm => Str}; - Kind = { s : Number => Str}; - Item = {s : Str ; n : Number}; - - lin - Pred item quality = - {s = item.s ++ copula ! item.n ++ quality.s ! APred}; - This = det Sg "deze"; - These = det Pl "deze"; - That = det Sg "die"; - Those = det Pl "die"; - - Mod quality kind = - {s = \\n => quality.s ! AAttr ++ kind.s ! n}; - Wine = regNoun "wijn"; - Cheese = noun "kaas" "kazen"; - Fish = noun "vis" "vissen"; - Pizza = noun "pizza" "pizza's"; - - Very a = {s = \\f => "erg" ++ a.s ! f}; - - Fresh = regadj "vers"; - Warm = regadj "warm"; - Italian = regadj "Italiaans"; - Expensive = adj "duur" "dure"; - Delicious = regadj "lekker"; - Boring = regadj "saai"; - - param - Number = Sg | Pl; - AForm = APred | AAttr; - - oper - det : Number -> Str -> - {s : Number => Str} -> {s : Str ; n: Number} = - \n,det,noun -> {s = det ++ noun.s ! n ; n=n}; - - noun : Str -> Str -> {s : Number => Str} = - \man,men -> {s = table {Sg => man; Pl => men}}; - - regNoun : Str -> {s : Number => Str} = - \wijn -> noun wijn (wijn + "en"); - - regadj : Str -> {s : AForm => Str} = - \koud -> adj koud (koud+"e"); - - adj : Str -> Str -> {s : AForm => Str} = - \duur, dure -> {s = table {APred => duur; AAttr => dure}}; - - copula : Number => Str = - table {Sg => "is" ; Pl => "zijn"}; -} diff --git a/examples/foods/FoodsEng.gf b/examples/foods/FoodsEng.gf deleted file mode 100644 index e7359a4ff..000000000 --- a/examples/foods/FoodsEng.gf +++ /dev/null @@ -1,43 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsEng of Foods = { - flags language = en_US; - lincat - Comment, Quality = {s : Str} ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - lin - Pred item quality = - {s = item.s ++ copula ! item.n ++ quality.s} ; - This = det Sg "this" ; - That = det Sg "that" ; - These = det Pl "these" ; - Those = det Pl "those" ; - Mod quality kind = - {s = \\n => quality.s ++ kind.s ! n} ; - Wine = regNoun "wine" ; - Cheese = regNoun "cheese" ; - Fish = noun "fish" "fish" ; - Pizza = regNoun "pizza" ; - Very a = {s = "very" ++ a.s} ; - Fresh = adj "fresh" ; - Warm = adj "warm" ; - Italian = adj "Italian" ; - Expensive = adj "expensive" ; - Delicious = adj "delicious" ; - Boring = adj "boring" ; - param - Number = Sg | Pl ; - oper - det : Number -> Str -> - {s : Number => Str} -> {s : Str ; n : Number} = - \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ; - noun : Str -> Str -> {s : Number => Str} = - \man,men -> {s = table {Sg => man ; Pl => men}} ; - regNoun : Str -> {s : Number => Str} = - \car -> noun car (car + "s") ; - adj : Str -> {s : Str} = - \cold -> {s = cold} ; - copula : Number => Str = - table {Sg => "is" ; Pl => "are"} ; -} diff --git a/examples/foods/FoodsEpo.gf b/examples/foods/FoodsEpo.gf deleted file mode 100644 index dd2400fe7..000000000 --- a/examples/foods/FoodsEpo.gf +++ /dev/null @@ -1,48 +0,0 @@ --- (c) 2009 Julia Hammar under LGPL - -concrete FoodsEpo of Foods = open Prelude in { - - flags coding =utf8 ; - - lincat - Comment = SS ; - Kind, Quality = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Pred item quality = ss (item.s ++ copula ! item.n ++ quality.s ! item.n) ; - This = det Sg "ĉi tiu" ; - That = det Sg "tiu" ; - These = det Pl "ĉi tiuj" ; - Those = det Pl "tiuj" ; - Mod quality kind = {s = \\n => quality.s ! n ++ kind.s ! n} ; - Wine = regNoun "vino" ; - Cheese = regNoun "fromaĝo" ; - Fish = regNoun "fiŝo" ; - Pizza = regNoun "pico" ; - Very quality = {s = \\n => "tre" ++ quality.s ! n} ; - Fresh = regAdj "freŝa" ; - Warm = regAdj "varma" ; - Italian = regAdj "itala" ; - Expensive = regAdj "altekosta" ; - Delicious = regAdj "bongusta" ; - Boring = regAdj "enuiga" ; - - param - Number = Sg | Pl ; - - oper - det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = - \n,d,cn -> { - s = d ++ cn.s ! n ; - n = n - } ; - regNoun : Str -> {s : Number => Str} = - \vino -> {s = table {Sg => vino ; Pl => vino + "j"} - } ; - regAdj : Str -> {s : Number => Str} = - \nova -> {s = table {Sg => nova ; Pl => nova + "j"} - } ; - copula : Number => Str = \\_ => "estas" ; -} - diff --git a/examples/foods/FoodsFin.gf b/examples/foods/FoodsFin.gf deleted file mode 100644 index 962199805..000000000 --- a/examples/foods/FoodsFin.gf +++ /dev/null @@ -1,6 +0,0 @@ - --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsFin of Foods = FoodsI with - (Syntax = SyntaxFin), - (LexFoods = LexFoodsFin) ; diff --git a/examples/foods/FoodsFre.gf b/examples/foods/FoodsFre.gf deleted file mode 100644 index f95db827b..000000000 --- a/examples/foods/FoodsFre.gf +++ /dev/null @@ -1,31 +0,0 @@ - -concrete FoodsFre of Foods = open SyntaxFre, ParadigmsFre in { - - flags coding = utf8 ; - - lincat - Comment = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - - lin - Pred item quality = mkUtt (mkCl item quality) ; - This kind = mkNP this_QuantSg kind ; - That kind = mkNP that_QuantSg kind ; - These kind = mkNP these_QuantPl kind ; - Those kind = mkNP those_QuantPl kind ; - Mod quality kind = mkCN quality kind ; - Very quality = mkAP very_AdA quality ; - - Wine = mkCN (mkN "vin" masculine) ; - Pizza = mkCN (mkN "pizza" feminine) ; - Cheese = mkCN (mkN "fromage" masculine) ; - Fish = mkCN (mkN "poisson" masculine) ; - Fresh = mkAP (mkA "frais" "fraîche" "frais" "fraîchement") ; - Warm = mkAP (mkA "chaud") ; - Italian = mkAP (mkA "italien") ; - Expensive = mkAP (mkA "cher") ; - Delicious = mkAP (mkA "délicieux") ; - Boring = mkAP (mkA "ennuyeux") ; - } diff --git a/examples/foods/FoodsGer.gf b/examples/foods/FoodsGer.gf deleted file mode 100644 index df3a371de..000000000 --- a/examples/foods/FoodsGer.gf +++ /dev/null @@ -1,6 +0,0 @@ - --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsGer of Foods = FoodsI with - (Syntax = SyntaxGer), - (LexFoods = LexFoodsGer) ; diff --git a/examples/foods/FoodsGla.gf b/examples/foods/FoodsGla.gf deleted file mode 100644 index 127ef22e9..000000000 --- a/examples/foods/FoodsGla.gf +++ /dev/null @@ -1,67 +0,0 @@ ---# -coding=latin1 -concrete FoodsGla of Foods = open MutationsGla, CharactersGla, Prelude in { - param Gender = Masc|Fem ; - param Number = Sg|Pl ; - param Breadth = Broad|Slender|NoBreadth ; - param Beginning = Bcgmp|Other ; - - lincat Comment = Str; - lin Pred item quality = "tha" ++ item ++ quality.s!Sg!Unmutated ; - - lincat Item = Str; - lin - This kind = (addArticleSg kind) ++ "seo" ; - That kind = (addArticleSg kind) ++ "sin"; - These kind = (addArticlePl kind) ++ "seo" ; - Those kind = (addArticlePl kind) ++ "sin" ; - oper addArticleSg : {s : Number => Mutation => Str; g : Gender} -> Str = - \kind -> case kind.g of { Masc => "an" ++ kind.s!Sg!PrefixT; Fem => "a'" ++ kind.s!Sg!Lenition1DNTLS } ; - oper addArticlePl : {s : Number => Mutation => Str; g : Gender} -> Str = - \kind -> "na" ++ kind.s!Pl!PrefixH ; - - oper Noun : Type = {s : Number => Mutation => Str; g : Gender; pe : Breadth; beginning: Beginning; }; - lincat Kind = Noun; - lin - Mod quality kind = { - s = table{ - Sg => table{mutation => kind.s!Sg!mutation ++ case kind.g of {Masc => quality.s!Sg!Unmutated; Fem => quality.s!Sg!Lenition1} }; - Pl => table{mutation => kind.s!Pl!mutation ++ case kind.pe of {Slender => quality.s!Pl!Lenition1; _ => quality.s!Pl!Unmutated} } - }; - g = kind.g; - pe = kind.pe; - beginning = kind.beginning - } ; - Wine = makeNoun "fon" "fontan" Masc ; - Cheese = makeNoun "cise" "cisean" Masc ; - Fish = makeNoun "iasg" "isg" Masc ; - Pizza = makeNoun "pizza" "pizzathan" Masc ; - oper makeNoun : Str -> Str -> Gender -> Noun = \sg,pl,g -> { - s = table{Sg => (mutate sg); Pl => (mutate pl)}; - g = g; - pe = pe; - beginning = Bcgmp - } - where { - pe : Breadth = case pl of { - _ + v@(#broadVowel) + c@(#consonant*) + #consonant => Broad; - _ + v@(#slenderVowel) + c@(#consonant*) + #consonant => Slender; - _ => NoBreadth - } - }; - - oper Adjective : Type = {s : Number => Mutation => Str; sVery : Number => Str}; - lincat Quality = Adjective; - lin - Very quality = {s=table{number => table{_ => quality.sVery!number}}; sVery=quality.sVery } ; - Fresh = makeAdjective "r" "ra" ; - Warm = makeAdjective "blth" "bltha" ; - Italian = makeAdjective "Eadailteach" "Eadailteach" ; - Expensive = makeAdjective "daor" "daora" ; - Delicious = makeAdjective "blasta" "blasta" ; - Boring = makeAdjective "leamh" "leamha" ; - oper makeAdjective : Str -> Str -> Adjective = - \sg,pl -> { - s=table{Sg => (mutate sg); Pl => (mutate pl)}; - sVery=table{Sg => "gl"++(lenition1dntls sg); Pl => "gl"++(lenition1dntls pl)} - } ; -} \ No newline at end of file diff --git a/examples/foods/FoodsGle.gf b/examples/foods/FoodsGle.gf deleted file mode 100644 index f137da6aa..000000000 --- a/examples/foods/FoodsGle.gf +++ /dev/null @@ -1,60 +0,0 @@ ---# -coding=latin1 -concrete FoodsGle of Foods = open MutationsGle, CharactersGle in { - param Gender = Masc|Fem ; - param Number = Sg|Pl ; - param Breadth = Broad|Slender|NoBreadth ; - - lincat Comment = Str; - lin Pred item quality = "t" ++ item ++ quality.s!Sg!Unmutated ; - - lincat Item = Str; - lin - This kind = (addArticleSg kind) ++ "seo" ; - That kind = (addArticleSg kind) ++ "sin"; - These kind = (addArticlePl kind) ++ "seo" ; - Those kind = (addArticlePl kind) ++ "sin" ; - oper addArticleSg : {s : Number => Mutation => Str; g : Gender} -> Str = - \kind -> "an" ++ case kind.g of { Masc => kind.s!Sg!PrefixT; Fem => kind.s!Sg!Lenition1DNTLS } ; - oper addArticlePl : {s : Number => Mutation => Str; g : Gender} -> Str = - \kind -> "na" ++ kind.s!Pl!PrefixH ; - - lincat Kind = {s : Number => Mutation => Str; g : Gender; pe : Breadth} ; - lin - Mod quality kind = { - s = table{ - Sg => table{mutation => kind.s!Sg!mutation ++ case kind.g of {Masc => quality.s!Sg!Unmutated; Fem => quality.s!Sg!Lenition1} }; - Pl => table{mutation => kind.s!Pl!mutation ++ case kind.pe of {Slender => quality.s!Pl!Lenition1; _ => quality.s!Pl!Unmutated} } - }; - g = kind.g; - pe = kind.pe - } ; - Wine = makeNoun "fon" "fonta" Masc ; - Cheese = makeNoun "cis" "ciseanna" Fem ; - Fish = makeNoun "iasc" "isc" Masc ; - Pizza = makeNoun "potsa" "potsa" Masc ; - oper makeNoun : Str -> Str -> Gender -> {s : Number => Mutation => Str; g : Gender; pe : Breadth} = - \sg,pl,g -> { - s = table{Sg => (mutate sg); Pl => (mutate pl)}; - g = g; - pe = case pl of { - _ + v@(#broadVowel) + c@(#consonant*) + #consonant => Broad; - _ + v@(#slenderVowel) + c@(#consonant*) + #consonant => Slender; - _ => NoBreadth - } - } ; - - lincat Quality = {s : Number => Mutation => Str; sVery : Number => Str} ; - lin - Very quality = {s=table{number => table{_ => quality.sVery!number}}; sVery=quality.sVery } ; - Fresh = makeAdjective "r" "ra" ; - Warm = makeAdjective "te" "te" ; - Italian = makeAdjective "Iodlach" "Iodlacha" ; - Expensive = makeAdjective "daor" "daora" ; - Delicious = makeAdjective "blasta" "blasta" ; - Boring = makeAdjective "leamh" "leamha" ; - oper makeAdjective : Str -> Str -> {s : Number => Mutation => Str; sVery : Number => Str} = - \sg,pl -> { - s=table{Sg => (mutate sg); Pl => (mutate pl)}; - sVery=table{Sg => "an-"+(lenition1dntls sg); Pl => "an-"+(lenition1dntls pl)} - } ; -} \ No newline at end of file diff --git a/examples/foods/FoodsHeb.gf b/examples/foods/FoodsHeb.gf deleted file mode 100644 index b68b383be..000000000 --- a/examples/foods/FoodsHeb.gf +++ /dev/null @@ -1,107 +0,0 @@ - ---(c) 2009 Dana Dannells --- Licensed under LGPL - -concrete FoodsHeb of Foods = open Prelude in { - - flags coding=utf8 ; - - lincat - Comment = SS ; - Quality = {s: Number => Species => Gender => Str} ; - Kind = {s : Number => Species => Str ; g : Gender ; mod : Modified} ; - Item = {s : Str ; g : Gender ; n : Number ; sp : Species ; mod : Modified} ; - - - lin - Pred item quality = ss (item.s ++ quality.s ! item.n ! Indef ! item.g ) ; - This = det Sg Def "הזה" "הזאת"; - That = det Sg Def "ההוא" "ההיא" ; - These = det Pl Def "האלה" "האלה" ; - Those = det Pl Def "ההם" "ההן" ; - Mod quality kind = { - s = \\n,sp => kind.s ! n ! sp ++ quality.s ! n ! sp ! kind.g; - g = kind.g ; - mod = T - } ; - Wine = regNoun "יין" "יינות" Masc ; - Cheese = regNoun "גבינה" "גבינות" Fem ; - Fish = regNoun "דג" "דגים" Masc ; - Pizza = regNoun "פיצה" "פיצות" Fem ; - Very qual = {s = \\g,n,sp => "מאוד" ++ qual.s ! g ! n ! sp} ; - Fresh = regAdj "טרי" ; - Warm = regAdj "חם" ; - Italian = regAdj2 "איטלקי" ; - Expensive = regAdj "יקר" ; - Delicious = regAdj "טעים" ; - Boring = regAdj2 "משעמם"; - - param - Number = Sg | Pl ; - Gender = Masc | Fem ; - Species = Def | Indef ; - Modified = T | F ; - - oper - Noun : Type = {s : Number => Species => Str ; g : Gender ; mod : Modified } ; - Adj : Type = {s : Number => Species => Gender => Str} ; - - det : Number -> Species -> Str -> Str -> Noun -> - {s : Str ; g :Gender ; n : Number ; sp : Species ; mod : Modified} = - \n,sp,m,f,cn -> { - s = case cn.mod of { _ => cn.s ! n ! sp ++ case cn.g of {Masc => m ; Fem => f} }; - g = cn.g ; - n = n ; - sp = sp ; - mod = cn.mod - } ; - - noun : (gvina,hagvina,gvinot,hagvinot : Str) -> Gender -> Noun = - \gvina,hagvina,gvinot,hagvinot,g -> { - s = table { - Sg => table { - Indef => gvina ; - Def => hagvina - } ; - Pl => table { - Indef => gvinot ; - Def => hagvinot - } - } ; - g = g ; - mod = F - } ; - - regNoun : Str -> Str -> Gender -> Noun = - \gvina,gvinot, g -> - noun gvina (defH gvina) gvinot (defH gvinot) g ; - - defH : Str -> Str = \cn -> - case cn of {_ => "ה" + cn}; - - replaceLastLetter : Str -> Str = \c -> - case c of {"ף" => "פ" ; "ם" => "מ" ; "ן" => "נ" ; "ץ" => "צ" ; "ך" => "כ"; _ => c} ; - - adjective : (_,_,_,_ : Str) -> Adj = - \tov,tova,tovim,tovot -> { - s = table { - Sg => table { - Indef => table { Masc => tov ; Fem => tova } ; - Def => table { Masc => defH tov ; Fem => defH tova } - } ; - Pl => table { - Indef => table {Masc => tovim ; Fem => tovot } ; - Def => table { Masc => defH tovim ; Fem => defH tovot } - } - } - } ; - - regAdj : Str -> Adj = \tov -> - case tov of { to + c@? => - adjective tov (to + replaceLastLetter (c) + "ה" ) (to + replaceLastLetter (c) +"ים" ) (to + replaceLastLetter (c) + "ות" )}; - - regAdj2 : Str -> Adj = \italki -> - case italki of { italk+ c@? => - adjective italki (italk + replaceLastLetter (c) +"ת" ) (italk + replaceLastLetter (c)+ "ים" ) (italk + replaceLastLetter (c) + "ות" )}; - -} -- FoodsHeb diff --git a/examples/foods/FoodsHin.gf b/examples/foods/FoodsHin.gf deleted file mode 100644 index 67c29df8b..000000000 --- a/examples/foods/FoodsHin.gf +++ /dev/null @@ -1,75 +0,0 @@ --- (c) 2010 Vikash Rauniyar under LGPL - -concrete FoodsHin of Foods = { - - flags coding=utf8 ; - - param - Gender = Masc | Fem ; - Number = Sg | Pl ; - lincat - Comment = {s : Str} ; - Item = {s : Str ; g : Gender ; n : Number} ; - Kind = {s : Number => Str ; g : Gender} ; - Quality = {s : Gender => Number => Str} ; - lin - Pred item quality = { - s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n - } ; - This kind = {s = "यह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; - That kind = {s = "वह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; - These kind = {s = "ये" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; - Those kind = {s = "वे" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; - Mod quality kind = { - s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; - g = kind.g - } ; - Wine = regN "मदिरा" ; - Cheese = regN "पनीर" ; - Fish = regN "मछली" ; - Pizza = regN "पिज़्ज़ा" ; - Very quality = {s = \\g,n => "अति" ++ quality.s ! g ! n} ; - Fresh = regAdj "ताज़ा" ; - Warm = regAdj "गरम" ; - Italian = regAdj "इटली" ; - Expensive = regAdj "बहुमूल्य" ; - Delicious = regAdj "स्वादिष्ट" ; - Boring = regAdj "अरुचिकर" ; - - oper - mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = - \s,p,g -> { - s = table { - Sg => s ; - Pl => p - } ; - g = g - } ; - - regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of { - lark + "ा" => mkN s (lark + "े") Masc ; - lark + "ी" => mkN s (lark + "ीयँा") Fem ; - _ => mkN s s Masc - } ; - - mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> { - s = table { - Masc => table { - Sg => ms ; - Pl => mp - } ; - Fem => \\_ => f - } - } ; - - regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of { - acch + "ा" => mkAdj a (acch + "े") (acch + "ी") ; - _ => mkAdj a a a - } ; - - copula : Number -> Str = \n -> case n of { - Sg => "है" ; - Pl => "हैं" - } ; - - } diff --git a/examples/foods/FoodsI.gf b/examples/foods/FoodsI.gf deleted file mode 100644 index f4113b724..000000000 --- a/examples/foods/FoodsI.gf +++ /dev/null @@ -1,29 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -incomplete concrete FoodsI of Foods = - open Syntax, LexFoods in { - lincat - Comment = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - lin - Pred item quality = mkUtt (mkCl item quality) ; - This kind = mkNP this_Det kind ; - That kind = mkNP that_Det kind ; - These kind = mkNP these_Det kind ; - Those kind = mkNP those_Det kind ; - Mod quality kind = mkCN quality kind ; - Very quality = mkAP very_AdA quality ; - - Wine = mkCN wine_N ; - Pizza = mkCN pizza_N ; - Cheese = mkCN cheese_N ; - Fish = mkCN fish_N ; - Fresh = mkAP fresh_A ; - Warm = mkAP warm_A ; - Italian = mkAP italian_A ; - Expensive = mkAP expensive_A ; - Delicious = mkAP delicious_A ; - Boring = mkAP boring_A ; -} diff --git a/examples/foods/FoodsIce.gf b/examples/foods/FoodsIce.gf deleted file mode 100644 index 61b1a95b2..000000000 --- a/examples/foods/FoodsIce.gf +++ /dev/null @@ -1,83 +0,0 @@ - --- (c) 2009 Martha Dis Brandt under LGPL - -concrete FoodsIce of Foods = open Prelude in { - - flags coding=utf8; - - lincat - Comment = SS ; - Quality = {s : Gender => Number => Defin => Str} ; - Kind = {s : Number => Str ; g : Gender} ; - Item = {s : Str ; g : Gender ; n : Number} ; - - lin - Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ; - This, That = det Sg "þessi" "þessi" "þetta" ; - These, Those = det Pl "þessir" "þessar" "þessi" ; - Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ; - Wine = noun "vín" "vín" Neutr ; - Cheese = noun "ostur" "ostar" Masc ; - Fish = noun "fiskur" "fiskar" Masc ; - -- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it - Pizza = noun "flatbaka" "flatbökur" Fem ; - Very qual = {s = \\g,n,defOrInd => "mjög" ++ qual.s ! g ! n ! defOrInd } ; - Fresh = regAdj "ferskur" ; - Warm = regAdj "heitur" ; - Boring = regAdj "leiðinlegur" ; - -- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef - Italian = adjective "ítalskur" "ítölsk" "ítalskt" "ítalskir" "ítalskar" "ítölsk" "ítalski" "ítalska" "ítalsku" ; - Expensive = adjective "dýr" "dýr" "dýrt" "dýrir" "dýrar" "dýr" "dýri" "dýra" "dýru" ; - Delicious = adjective "ljúffengur" "ljúffeng" "ljúffengt" "ljúffengir" "ljúffengar" "ljúffeng" "ljúffengi" "ljúffenga" "ljúffengu" ; - - param - Number = Sg | Pl ; - Gender = Masc | Fem | Neutr ; - Defin = Ind | Def ; - - oper - det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} -> - {s : Str ; g : Gender ; n : Number} = - \n,masc,fem,neutr,cn -> { - s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ; - g = cn.g ; - n = n - } ; - - noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = - \man,men,g -> { - s = table { - Sg => man ; - Pl => men - } ; - g = g - } ; - - adjective : (x1,_,_,_,_,_,_,_,x9 : Str) -> {s : Gender => Number => Defin => Str} = - \ferskur,fersk,ferskt,ferskir,ferskar,fersk_pl,ferski,ferska,fersku -> { - s = \\g,n,t => case of { - < Masc, Sg, Ind > => ferskur ; - < Masc, Pl, Ind > => ferskir ; - < Fem, Sg, Ind > => fersk ; - < Fem, Pl, Ind > => ferskar ; - < Neutr, Sg, Ind > => ferskt ; - < Neutr, Pl, Ind > => fersk_pl; - < Masc, Sg, Def > => ferski ; - < Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ; - < _ , Pl, Def > => fersku - } - } ; - - regAdj : Str -> {s : Gender => Number => Defin => Str} = \ferskur -> - let fersk = Predef.tk 2 ferskur - in adjective - ferskur fersk (fersk + "t") - (fersk + "ir") (fersk + "ar") fersk - (fersk + "i") (fersk + "a") (fersk + "u") ; - - copula : Number -> Str = - \n -> case n of { - Sg => "er" ; - Pl => "eru" - } ; -} diff --git a/examples/foods/FoodsIta.gf b/examples/foods/FoodsIta.gf deleted file mode 100644 index 0f959d2e5..000000000 --- a/examples/foods/FoodsIta.gf +++ /dev/null @@ -1,7 +0,0 @@ - --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsIta of Foods = FoodsI with - (Syntax = SyntaxIta), - (LexFoods = LexFoodsIta) ; - diff --git a/examples/foods/FoodsJpn.gf b/examples/foods/FoodsJpn.gf deleted file mode 100644 index 855a95175..000000000 --- a/examples/foods/FoodsJpn.gf +++ /dev/null @@ -1,71 +0,0 @@ - --- (c) 2009 Zofia Stankiewicz under LGPL - -concrete FoodsJpn of Foods = open Prelude in { - -flags coding=utf8 ; - - lincat - Comment = {s: Style => Str}; - Quality = {s: AdjUse => Str ; t: AdjType} ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Pred item quality = {s = case quality.t of { - IAdj => table {Plain => item.s ++ quality.s ! APred ; Polite => item.s ++ quality.s ! APred ++ copula ! Polite ! item.n } ; - NaAdj => \\p => item.s ++ quality.s ! APred ++ copula ! p ! item.n } - } ; - This = det Sg "この" ; - That = det Sg "その" ; - These = det Pl "この" ; - Those = det Pl "その" ; - Mod quality kind = {s = \\n => quality.s ! Attr ++ kind.s ! n} ; - Wine = regNoun "ワインは" ; - Cheese = regNoun "チーズは" ; - Fish = regNoun "魚は" ; - Pizza = regNoun "ピザは" ; - Very quality = {s = \\a => "とても" ++ quality.s ! a ; t = quality.t } ; - Fresh = adj "新鮮な" "新鮮"; - Warm = regAdj "あたたかい" ; - Italian = adj "イタリアの" "イタリアのもの"; - Expensive = regAdj "たかい" ; - Delicious = regAdj "おいしい" ; - Boring = regAdj "つまらない" ; - - param - Number = Sg | Pl ; - AdjUse = Attr | APred ; -- na-adjectives have different forms as noun attributes and predicates - Style = Plain | Polite ; -- for phrase types - AdjType = IAdj | NaAdj ; -- IAdj can form predicates without the copula, NaAdj cannot - - oper - det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = - \n,d,cn -> { - s = d ++ cn.s ! n ; - n = n - } ; - noun : Str -> Str -> {s : Number => Str} = - \sakana,sakana -> {s = \\_ => sakana } ; - - regNoun : Str -> {s : Number => Str} = - \sakana -> noun sakana sakana ; - - adj : Str -> Str -> {s : AdjUse => Str ; t : AdjType} = - \chosenna, chosen -> { - s = table { - Attr => chosenna ; - APred => chosen - } ; - t = NaAdj - } ; - - regAdj : Str -> {s: AdjUse => Str ; t : AdjType} =\akai -> { - s = \\_ => akai ; t = IAdj} ; - - copula : Style => Number => Str = - table { - Plain => \\_ => "だ" ; - Polite => \\_ => "です" } ; - -} diff --git a/examples/foods/FoodsLav.gf b/examples/foods/FoodsLav.gf deleted file mode 100644 index 2d5357ff9..000000000 --- a/examples/foods/FoodsLav.gf +++ /dev/null @@ -1,90 +0,0 @@ - --- (c) 2009 Inese Bernsone under LGPL - -concrete FoodsLav of Foods = open Prelude in { - - flags - coding=utf8 ; - - lincat - Comment = SS ; - Quality = {s : Q => Gender => Number => Defin => Str } ; - Kind = {s : Number => Str ; g : Gender} ; - Item = {s : Str ; g : Gender ; n : Number } ; - - lin - Pred item quality = ss (item.s ++ {- copula item.n -} "ir" ++ quality.s ! Q1 ! item.g ! item.n ! Ind ) ; - This = det Sg "šis" "šī" ; - That = det Sg "tas" "tā" ; - These = det Pl "šie" "šīs" ; - Those = det Pl "tie" "tās" ; - Mod quality kind = {s = \\n => quality.s ! Q1 ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ; - Wine = noun "vīns" "vīni" Masc ; - Cheese = noun "siers" "sieri" Masc ; - Fish = noun "zivs" "zivis" Fem ; - Pizza = noun "pica" "picas" Fem ; - Very qual = {s = \\q,g,n,spec => "ļoti" ++ qual.s ! Q2 ! g ! n ! spec }; - - Fresh = adjective "svaigs" "svaiga" "svaigi" "svaigas" "svaigais" "svaigā" "svaigie" "svaigās" ; - Warm = regAdj "silts" ; - Italian = specAdj "itāļu" (regAdj "itālisks") ; - Expensive = regAdj "dārgs" ; - Delicious = regAdj "garšīgs" ; - Boring = regAdj "garlaicīgs" ; - - param - Number = Sg | Pl ; - Gender = Masc | Fem ; - Defin = Ind | Def ; - Q = Q1 | Q2 ; - - oper - det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} -> - {s : Str ; g : Gender ; n : Number} = - \n,m,f,cn -> { - s = case cn.g of {Masc => m ; Fem => f} ++ cn.s ! n ; - g = cn.g ; - n = n - } ; - noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = - \man,men,g -> { - s = table { - Sg => man ; - Pl => men - } ; - g = g - } ; - adjective : (_,_,_,_,_,_,_,_ : Str) -> {s : Q => Gender => Number => Defin => Str} = - \skaists,skaista,skaisti,skaistas,skaistais,skaistaa,skaistie,skaistaas -> { - s = table { - _ => table { - Masc => table { - Sg => table {Ind => skaists ; Def => skaistais} ; - Pl => table {Ind => skaisti ; Def => skaistie} - } ; - Fem => table { - Sg => table {Ind => skaista ; Def => skaistaa} ; - Pl => table {Ind => skaistas ; Def => skaistaas} - } - } - } - } ; - - {- irregAdj : Str -> {s : Gender => Number => Defin => Str} = \itaalju -> - let itaalju = itaalju - in adjective itaalju (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) ; -} - - regAdj : Str -> {s : Q => Gender => Number => Defin => Str} = \skaists -> - let skaist = init skaists - in adjective skaists (skaist + "a") (skaist + "i") (skaist + "as") (skaist + "ais") (skaist + "ā") (skaist + "ie") (skaist + "ās"); - - Adjective : Type = {s : Q => Gender => Number => Defin => Str} ; - - specAdj : Str -> Adjective -> Adjective = \s,a -> { - s = table { - Q2 => a.s ! Q1 ; - Q1 => \\_,_,_ => s - } - } ; - - } diff --git a/examples/foods/FoodsMkd.gf b/examples/foods/FoodsMkd.gf deleted file mode 100644 index 7df235132..000000000 --- a/examples/foods/FoodsMkd.gf +++ /dev/null @@ -1,120 +0,0 @@ --- (c) 2009 Krasimir Angelov under LGPL - -concrete FoodsMkd of Foods = { - -flags coding = utf8 ; - -lincat - Comment = Str; - Quality = {s : Agr => Str}; - Item = {s : Str; a : Agr}; - Kind = {s : Number => Str; g : Gender}; - -lin - Pred item qual = - item.s ++ - case item.a of { - ASg _ => "е"; - APl => "се" - } ++ - qual.s ! item.a; - This kind = { - s = case kind.g of { - Masc => "овоj"; - Fem => "оваа"; - Neutr => "ова" - } ++ - kind.s ! Sg; - a = ASg kind.g}; - That kind = { - s = case kind.g of { - Masc => "оноj"; - Fem => "онаа"; - Neutr => "она" - } ++ - kind.s ! Sg; - a = ASg kind.g}; - These kind = {s = "овие" ++ kind.s ! Pl; a = APl}; - Those kind = {s = "оние" ++ kind.s ! Pl; a = APl}; - Mod qual kind = { - s = \\n => qual.s ! case n of { - Sg => ASg kind.g; - Pl => APl - } ++ - kind.s ! n; - g = kind.g}; - Wine = { - s = table { - Sg => "вино"; - Pl => "вина" - }; - g = Neutr}; - Cheese = { - s = table { - Sg => "сирење"; - Pl => "сирењa" - }; - g = Neutr}; - Fish = { - s = table { - Sg => "риба"; - Pl => "риби" - }; - g = Fem}; - Pizza = { - s = table { - Sg => "пица"; - Pl => "пици" - }; - g = Fem - }; - Very qual = {s = \\g => "многу" ++ qual.s ! g}; - Fresh = { - s = table { - ASg Masc => "свеж"; - ASg Fem => "свежа"; - ASg Neutr => "свежо"; - APl => "свежи"} - }; - Warm = { - s = table { - ASg Masc => "топол"; - ASg Fem => "топла"; - ASg Neutr => "топло"; - APl => "топли"} - }; - Italian = { - s = table { - ASg Masc => "италијански"; - ASg Fem => "италијанска"; - ASg Neutr => "италијанско"; - APl => "италијански"} - }; - Expensive = { - s = table { - ASg Masc => "скап"; - ASg Fem => "скапа"; - ASg Neutr => "скапо"; - APl => "скапи"} - }; - Delicious = { - s = table { - ASg Masc => "вкусен"; - ASg Fem => "вкусна"; - ASg Neutr => "вкусно"; - APl => "вкусни"} - }; - Boring = { - s = table { - ASg Masc => "досаден"; - ASg Fem => "досадна"; - ASg Neutr => "досадно"; - APl => "досадни"} - }; - -param - Gender = Masc | Fem | Neutr; - Number = Sg | Pl; - Agr = ASg Gender | APl; - -} diff --git a/examples/foods/FoodsMlt.gf b/examples/foods/FoodsMlt.gf deleted file mode 100644 index 5fcd4de78..000000000 --- a/examples/foods/FoodsMlt.gf +++ /dev/null @@ -1,105 +0,0 @@ --- (c) 2013 John J. Camilleri under LGPL - -concrete FoodsMlt of Foods = open Prelude in { - flags coding=utf8 ; - - lincat - Comment = SS ; - Quality = {s : Gender => Number => Str} ; - Kind = {s : Number => Str ; g : Gender} ; - Item = {s : Str ; g : Gender ; n : Number} ; - - lin - -- Pred item quality = ss (item.s ++ copula item.n item.g ++ quality.s ! item.g ! item.n) ; - Pred item quality = ss (item.s ++ quality.s ! item.g ! item.n) ; - - This kind = det Sg "dan" "din" kind ; - That kind = det Sg "dak" "dik" kind ; - These kind = det Pl "dawn" "" kind ; - Those kind = det Pl "dawk" "" kind ; - - Mod quality kind = { - s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; - g = kind.g - } ; - - Wine = noun "inbid" "inbejjed" Masc ; - Cheese = noun "ġobon" "ġobniet" Masc ; - Fish = noun "ħuta" "ħut" Fem ; - Pizza = noun "pizza" "pizzez" Fem ; - - Very qual = {s = \\g,n => qual.s ! g ! n ++ "ħafna"} ; - - Warm = adjective "sħun" "sħuna" "sħan" ; - Expensive = adjective "għali" "għalja" "għaljin" ; - Delicious = adjective "tajjeb" "tajba" "tajbin" ; - Boring = uniAdj "tad-dwejjaq" ; - Fresh = regAdj "frisk" ; - Italian = regAdj "Taljan" ; - - param - Number = Sg | Pl ; - Gender = Masc | Fem ; - - oper - --Create an adjective (full function) - --Params: Sing Masc, Sing Fem, Plural - adjective : (_,_,_ : Str) -> {s : Gender => Number => Str} = \iswed,sewda,suwed -> { - s = table { - Masc => table { - Sg => iswed ; - Pl => suwed - } ; - Fem => table { - Sg => sewda ; - Pl => suwed - } - } - } ; - - --Create a regular adjective - --Param: Sing Masc - regAdj : Str -> {s : Gender => Number => Str} = \frisk -> - adjective frisk (frisk + "a") (frisk + "i") ; - - --Create a "uni-adjective" eg tal-buzz - --Param: Sing Masc - uniAdj : Str -> {s : Gender => Number => Str} = \uni -> - adjective uni uni uni ; - - --Create a noun - --Params: Singular, Plural, Gender (inherent) - noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = \ktieb,kotba,g -> { - s = table { - Sg => ktieb ; - Pl => kotba - } ; - g = g - } ; - - --Copula is a linking verb - --Params: Number, Gender - -- copula : Number -> Gender -> Str = \n,g -> case n of { - -- Sg => case g of { Masc => "huwa" ; Fem => "hija" } ; - -- Pl => "huma" - -- } ; - - --Create an article, taking into account first letter of next word - article = pre { - "a"|"e"|"i"|"o"|"u" => "l-" ; - --cons@("ċ"|"d"|"n"|"r"|"s"|"t"|"x"|"ż") => "i" + cons + "-" ; - _ => "il-" - } ; - - --Create a determinant - --Params: Sg/Pl, Masc, Fem - det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} -> {s : Str ; g : Gender ; n : Number} = \n,m,f,cn -> { - s = case n of { - Sg => case cn.g of {Masc => m ; Fem => f}; --string - Pl => m --default to masc - } ++ article ++ cn.s ! n ; - g = cn.g ; --gender - n = n --number - } ; - -} diff --git a/examples/foods/FoodsMon.gf b/examples/foods/FoodsMon.gf deleted file mode 100644 index c0d58f722..000000000 --- a/examples/foods/FoodsMon.gf +++ /dev/null @@ -1,48 +0,0 @@ - --- (c) 2009 Nyamsuren Erdenebadrakh under LGPL - -concrete FoodsMon of Foods = open Prelude in { - flags coding=utf8; - - lincat - Comment, Quality = SS ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Pred item quality = ss (item.s ++ "бол" ++ quality.s) ; - This = det Sg "энэ" ; - That = det Sg "тэр" ; - These = det Pl "эдгээр" ; - Those = det Pl "тэдгээр" ; - Mod quality kind = {s = \\n => quality.s ++ kind.s ! n} ; - Wine = regNoun "дарс" ; - Cheese = regNoun "бяслаг" ; - Fish = regNoun "загас" ; - Pizza = regNoun "пицца" ; - Very = prefixSS "маш" ; - Fresh = ss "шинэ" ; - Warm = ss "халуун" ; - Italian = ss "итали" ; - Expensive = ss "үнэтэй" ; - Delicious = ss "амттай" ; - Boring = ss "амтгүй" ; - - param - Number = Sg | Pl ; - - oper - det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = - \n,d,cn -> { - s = d ++ cn.s ! n ; - n = n - } ; - - regNoun : Str -> {s : Number => Str} = - \x -> {s = table { - Sg => x ; - Pl => x + "нууд"} - } ; - } - - diff --git a/examples/foods/FoodsNep.gf b/examples/foods/FoodsNep.gf deleted file mode 100644 index ea02e64a6..000000000 --- a/examples/foods/FoodsNep.gf +++ /dev/null @@ -1,60 +0,0 @@ --- (c) 2011 Dinesh Simkhada under LGPL - -concrete FoodsNep of Foods = { - - flags coding = utf8 ; - - lincat - Comment, Quality = {s : Str} ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Pred item quality = - {s = item.s ++ quality.s ++ copula ! item.n} ; - - This = det Sg "यो" ; - That = det Sg "त्यो" ; - These = det Pl "यी" ; - Those = det Pl "ती" ; - Mod quality kind = - {s = \\n => quality.s ++ kind.s ! n} ; - - Wine = regNoun "रक्सी" ; - Cheese = regNoun "चिज" ; - Fish = regNoun "माछा" ; - Pizza = regNoun "पिज्जा" ; - Very a = {s = "धेरै" ++ a.s} ; - Fresh = adj "ताजा" ; - Warm = adj "तातो" ; - Italian = adj "इटालियन" ; - Expensive = adj "महँगो" | adj "बहुमूल्य" ; - Delicious = adj "स्वादिष्ट" | adj "मीठो" ; - Boring = adjPl "नमिठो" ; - - param - Number = Sg | Pl ; - - oper - det : Number -> Str -> - {s : Number => Str} -> {s : Str ; n : Number} = - \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ; - - noun : Str -> Str -> {s : Number => Str} = - \man,men -> {s = table {Sg => man ; Pl => men}} ; - - regNoun : Str -> {s : Number => Str} = - \car -> noun car (car + "हरु") ; - - adjPl : Str -> {s : Str} = \a -> case a of { - bor + "ठो" => adj (bor + "ठा") ; - _ => adj a - } ; - - adj : Str -> {s : Str} = - \cold -> {s = cold} ; - - copula : Number => Str = - table {Sg => "छ" ; Pl => "छन्"} ; -} - diff --git a/examples/foods/FoodsOri.gf b/examples/foods/FoodsOri.gf deleted file mode 100644 index ad4f492f6..000000000 --- a/examples/foods/FoodsOri.gf +++ /dev/null @@ -1,30 +0,0 @@ -concrete FoodsOri of Foods = { - -flags coding = utf8 ; - -lincat - Comment = Str; - Item = Str; - Kind = Str; - Quality = Str; - -lin - Pred item quality = item ++ quality ++ "ଅଟେ"; - This kind = "ଏଇ" ++ kind; - That kind = "ସେଇ" ++ kind; - These kind = "ଏଇ" ++ kind ++ "ଗୁଡିକ" ; - Those kind = "ସେଇ" ++ kind ++ "ଗୁଡିକ" ; - Mod quality kind = quality ++ kind; - Wine = "ମଦ"; - Cheese = "ଛେନା"; - Fish = "ମାଛ"; - Pizza = "ପିଜଜ଼ା" ; - Very quality = "ଅତି" ++ quality; - Fresh = "ତାଜା"; - Warm = "ଗରମ"; - Italian = "ଇଟାଲି"; - Expensive = "ମୁଲ୍ୟବାନ୍"; - Delicious = "ସ୍ଵାଦିସ୍ଟ "; - Boring = "ଅରୁଚିକର"; - -} diff --git a/examples/foods/FoodsPes.gf b/examples/foods/FoodsPes.gf deleted file mode 100644 index c2e631e81..000000000 --- a/examples/foods/FoodsPes.gf +++ /dev/null @@ -1,65 +0,0 @@ -concrete FoodsPes of Foods = { - - flags optimize=noexpand ; coding=utf8 ; - - lincat - Comment = {s : Str} ; - Quality = {s : Add => Str; prep : Str} ; - Kind = {s : Add => Number => Str ; prep : Str}; - Item = {s : Str ; n : Number}; - lin - Pred item quality = {s = item.s ++ quality.s ! Indep ++ copula ! item.n} ; - This = det Sg "این" ; - That = det Sg "آن" ; - These = det Pl "این" ; - Those = det Pl "آن" ; - - Mod quality kind = {s = \\a,n => kind.s ! Attr ! n ++ kind.prep ++ quality.s ! a ; - prep = quality.prep - }; - Wine = regN "شراب" ; - Cheese = regN "پنیر" ; - Fish = regN "ماهى" ; - Pizza = regN "پیتزا" ; - Very a = {s = \\at => "خیلی" ++ a.s ! at ; prep = a.prep} ; - Fresh = adj "تازه" ; - Warm = adj "گرم" ; - Italian = adj "ایتالیایی" ; - Expensive = adj "گران" ; - Delicious = adj "لذىذ" ; - Boring = adj "ملال آور" ; -- it must be written as ملال آور. - - param - Number = Sg | Pl ; - Add = Indep | Attr ; - oper - det : Number -> Str -> {s: Add => Number => Str ; prep : Str} -> {s : Str ; n: Number} = - \n,det,noun -> {s = det ++ noun.s ! Indep ! n ; n = n }; - - noun : (x1,_,_,x4 : Str) -> {s : Add => Number => Str ; prep : Str} = \pytzA, pytzAy, pytzAhA,pr -> - {s = \\a,n => case of - { => pytzA ; => pytzAhA ; - =>pytzA ; => pytzAhA + "ى" }; - prep = pr - }; - - regN : Str -> {s: Add => Number => Str ; prep : Str} = \mrd -> - case mrd of - { _ + ("ا"|"ه"|"ى"|"و"|"") => noun mrd (mrd+"ى") (mrd + "ها") ""; - _ => noun mrd mrd (mrd + "ها") "e" - }; - - adj : Str -> {s : Add => Str; prep : Str} = \tAzh -> - case tAzh of - { _ + ("ا"|"ه"|"ى"|"و"|"") => mkAdj tAzh (tAzh ++ "ى") "" ; - _ => mkAdj tAzh tAzh "ه" - }; - - mkAdj : Str -> Str -> Str -> {s : Add => Str; prep : Str} = \tAzh, tAzhy, pr -> - {s = table {Indep => tAzh; - Attr => tAzhy}; - prep = pr - }; - copula : Number => Str = table {Sg => "است"; Pl => "هستند"}; - -} \ No newline at end of file diff --git a/examples/foods/FoodsPor.gf b/examples/foods/FoodsPor.gf deleted file mode 100644 index 76ffa3109..000000000 --- a/examples/foods/FoodsPor.gf +++ /dev/null @@ -1,78 +0,0 @@ --- (c) 2009 Rami Shashati under LGPL ---# -coding=latin1 - -concrete FoodsPor of Foods = open Prelude in { - lincat - Comment = {s : Str} ; - Quality = {s : Gender => Number => Str} ; - Kind = {s : Number => Str ; g : Gender} ; - Item = {s : Str ; n : Number ; g : Gender } ; - - lin - Pred item quality = - {s = item.s ++ copula ! item.n ++ quality.s ! item.g ! item.n } ; - This = det Sg (table {Masc => "este" ; Fem => "esta"}) ; - That = det Sg (table {Masc => "esse" ; Fem => "essa"}) ; - These = det Pl (table {Masc => "estes" ; Fem => "estas"}) ; - Those = det Pl (table {Masc => "esses" ; Fem => "essas"}) ; - - Mod quality kind = { s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; g = kind.g } ; - - Wine = regNoun "vinho" Masc ; - Cheese = regNoun "queijo" Masc ; - Fish = regNoun "peixe" Masc ; - Pizza = regNoun "pizza" Fem ; - - Very a = { s = \\g,n => "muito" ++ a.s ! g ! n } ; - - Fresh = mkAdjReg "fresco" ; - Warm = mkAdjReg "quente" ; - Italian = mkAdjReg "Italiano" ; - Expensive = mkAdjReg "caro" ; - Delicious = mkAdjReg "delicioso" ; - Boring = mkAdjReg "chato" ; - - param - Number = Sg | Pl ; - Gender = Masc | Fem ; - - oper - QualityT : Type = {s : Gender => Number => Str} ; - - mkAdj : (_,_,_,_ : Str) -> QualityT = \bonito,bonita,bonitos,bonitas -> { - s = table { - Masc => table { Sg => bonito ; Pl => bonitos } ; - Fem => table { Sg => bonita ; Pl => bonitas } - } ; - } ; - - -- regular pattern - adjSozinho : Str -> QualityT = \sozinho -> - let sozinh = Predef.tk 1 sozinho - in mkAdj sozinho (sozinh + "a") (sozinh + "os") (sozinh + "as") ; - - -- for gender-independent adjectives - adjUtil : Str -> Str -> QualityT = \util,uteis -> - mkAdj util util uteis uteis ; - - -- smart paradigm for adjcetives - mkAdjReg : Str -> QualityT = \a -> case last a of { - "o" => adjSozinho a ; - "e" => adjUtil a (a + "s") - } ; - - ItemT : Type = {s : Str ; n : Number ; g : Gender } ; - - det : Number -> (Gender => Str) -> KindT -> ItemT = - \num,det,noun -> {s = det ! noun.g ++ noun.s ! num ; n = num ; g = noun.g } ; - - KindT : Type = {s : Number => Str ; g : Gender} ; - - noun : Str -> Str -> Gender -> KindT = - \animal,animais,gen -> {s = table {Sg => animal ; Pl => animais} ; g = gen } ; - - regNoun : Str -> Gender -> KindT = - \carro,gen -> noun carro (carro + "s") gen ; - - copula : Number => Str = table {Sg => "" ; Pl => "so"} ; -} diff --git a/examples/foods/FoodsRon.gf b/examples/foods/FoodsRon.gf deleted file mode 100644 index d7d917ffc..000000000 --- a/examples/foods/FoodsRon.gf +++ /dev/null @@ -1,72 +0,0 @@ --- (c) 2009 Ramona Enache under LGPL - -concrete FoodsRon of Foods = -{ -flags coding=utf8 ; - -param Number = Sg | Pl ; - Gender = Masc | Fem ; - NGender = NMasc | NFem | NNeut ; -lincat -Comment = {s : Str}; -Quality = {s : Number => Gender => Str}; -Kind = {s : Number => Str; g : NGender}; -Item = {s : Str ; n : Number; g : Gender}; - -lin - -This = det Sg (mkTab "acest" "această"); -That = det Sg (mkTab "acel" "acea"); -These = det Pl (mkTab "acești" "aceste"); -Those = det Pl (mkTab "acei" "acele"); - -Wine = mkNoun "vin" "vinuri" NNeut ; -Cheese = mkNoun "brânză" "brânzeturi" NFem ; -Fish = mkNoun "peşte" "peşti" NMasc ; -Pizza = mkNoun "pizza" "pizze" NFem; - -Very a = {s = \\n,g => "foarte" ++ a.s ! n ! g}; - -Fresh = mkAdj "proaspăt" "proaspătă" "proaspeţi" "proaspete" ; -Warm = mkAdj "cald" "caldă" "calzi" "calde" ; -Italian = mkAdj "italian" "italiană" "italieni" "italiene" ; -Expensive = mkAdj "scump" "scumpă" "scumpi" "scumpe" ; -Delicious = mkAdj "delicios" "delcioasă" "delicioşi" "delicioase" ; -Boring = mkAdj "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ; - -Pred item quality = {s = item.s ++ copula ! item.n ++ quality.s ! item.n ! item.g} ; - -Mod quality kind = {s = \\n => kind.s ! n ++ quality.s ! n ! (getAgrGender kind.g n) ; g = kind.g}; - -oper - -mkTab : Str -> Str -> {s : Gender => Str} = \acesta, aceasta -> -{s = table{Masc => acesta; - Fem => aceasta}}; - -det : Number -> {s : Gender => Str} -> {s : Number => Str ; g : NGender} -> {s : Str; n : Number; g : Gender} = -\n,det,noun -> let gg = getAgrGender noun.g n - in - {s = det.s ! gg ++ noun.s ! n ; n = n ; g = gg}; - -mkNoun : Str -> Str -> NGender -> {s : Number => Str; g : NGender} = \peste, pesti,g -> -{s = table {Sg => peste; - Pl => pesti}; - g = g -}; - -oper mkAdj : (x1,_,_,x4 : Str) -> {s : Number => Gender => Str} = \scump, scumpa, scumpi, scumpe -> -{s = \\n,g => case of -{ => scump ; => scumpa; - => scumpi ; => scumpe -}}; - -copula : Number => Str = table {Sg => "este" ; Pl => "sunt"}; - -getAgrGender : NGender -> Number -> Gender = \ng,n -> -case of -{ => Masc ; => Fem; - => Masc ; => Fem -}; - -} diff --git a/examples/foods/FoodsSpa.gf b/examples/foods/FoodsSpa.gf deleted file mode 100644 index 693d77d06..000000000 --- a/examples/foods/FoodsSpa.gf +++ /dev/null @@ -1,30 +0,0 @@ - -concrete FoodsSpa of Foods = open SyntaxSpa, StructuralSpa, ParadigmsSpa in { - - lincat - Comment = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - - lin - Pred item quality = mkUtt (mkCl item quality) ; - This kind = mkNP this_QuantSg kind ; - That kind = mkNP that_QuantSg kind ; - These kind = mkNP these_QuantPl kind ; - Those kind = mkNP those_QuantPl kind ; - Mod quality kind = mkCN quality kind ; - Very quality = mkAP very_AdA quality ; - Wine = mkCN (mkN "vino") ; - Pizza = mkCN (mkN "pizza") ; - Cheese = mkCN (mkN "queso") ; - Fish = mkCN (mkN "pescado") ; - Fresh = mkAP (mkA "fresco") ; - Warm = mkAP (mkA "caliente") ; - Italian = mkAP (mkA "italiano") ; - Expensive = mkAP (mkA "caro") ; - Delicious = mkAP (mkA "delicioso") ; - Boring = mkAP (mkA "aburrido") ; - -} - diff --git a/examples/foods/FoodsSwe.gf b/examples/foods/FoodsSwe.gf deleted file mode 100644 index c3ed38abb..000000000 --- a/examples/foods/FoodsSwe.gf +++ /dev/null @@ -1,6 +0,0 @@ - --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsSwe of Foods = FoodsI with - (Syntax = SyntaxSwe), - (LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ; diff --git a/examples/foods/FoodsTha.gf b/examples/foods/FoodsTha.gf deleted file mode 100644 index 68245e1af..000000000 --- a/examples/foods/FoodsTha.gf +++ /dev/null @@ -1,32 +0,0 @@ - -concrete FoodsTha of Foods = open SyntaxTha, LexiconTha, - ParadigmsTha, (R=ResTha) in { - - flags coding = utf8 ; - - lincat - Comment = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - - lin - Pred item quality = mkUtt (mkCl item quality) ; - This kind = mkNP this_Det kind ; - That kind = mkNP that_Det kind ; - These kind = mkNP these_Det kind ; - Those kind = mkNP those_Det kind ; - Mod quality kind = mkCN quality kind ; - Very quality = mkAP very_AdA quality ; - Wine = mkCN (mkN (R.thword "เหล้าอ" "งุ่น") "ขวด") ; - Pizza = mkCN (mkN (R.thword "พิซ" "ซา") "ถาด") ; - Cheese = mkCN (mkN (R.thword "เนย" "แข็ง") "ก้อน") ; - Fish = mkCN fish_N ; - Fresh = mkAP (mkA "สด") ; - Warm = mkAP warm_A ; - Italian = mkAP (mkA " อิตาลี") ; - Expensive = mkAP (mkA "แพง") ; - Delicious = mkAP (mkA "อร่อย") ; - Boring = mkAP (mkA (R.thword "น่า" "เบิ่อ")) ; - -} diff --git a/examples/foods/FoodsTsn.gf b/examples/foods/FoodsTsn.gf deleted file mode 100644 index dae2bdfba..000000000 --- a/examples/foods/FoodsTsn.gf +++ /dev/null @@ -1,177 +0,0 @@ - --- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL - -concrete FoodsTsn of Foods = open Prelude, Predef in { - flags coding = utf8; - lincat - Comment = {s:Str}; - Item = {s:Str; c:NounClass; n:Number}; - Kind = {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool}; - Quality = {s: NounClass => Number => Str; p_form: Str; t: TType}; - lin - Pred item quality = {s = item.s ++ ((mkPredDescrCop quality.t) ! item.c ! item.n) ++ quality.p_form}; - - This kind = {s = (kind.w ! Sg) ++ (mkDemPron1 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg}; - That kind = {s = (kind.w ! Sg) ++ (mkDemPron2 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg}; - These kind = {s = (kind.w ! Pl) ++ (mkDemPron1 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl}; - Those kind = {s = (kind.w ! Pl) ++ (mkDemPron2 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl}; - - Mod quality kind = mkMod quality kind; - - -- Lexicon - Wine = mkNounNC14_6 "jalwa"; - Cheese = mkNounNC9_10 "kase"; - Fish = mkNounNC9_10 "thlapi"; - Pizza = mkNounNC9_10 "pizza"; - Very quality = smartVery quality; - Fresh = mkVarAdj "ntsha"; - Warm = mkOrdAdj "bothitho"; - Italian = mkPerAdj "Itali"; - Expensive = mkVerbRel "tura"; - Delicious = mkOrdAdj "monate"; - Boring = mkOrdAdj "bosula"; - - param - NounClass = NC9_10 | NC14_6; - Number = Sg | Pl; - TType = P | V | ModV | R ; - oper - mkMod : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; - b: Bool} = \x,y -> case y.b of - { - True => {w = y.w; r = y.r; c = y.c; - q = table { - Sg => ((y.q ! Sg) ++ "le" ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg)); - Pl => ((y.q ! Pl) ++ "le" ++ ((smartQualRelPart (x.t))! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl)) - }; b = True - }; - False => {w = y.w; r = y.r; c = y.c; - q = table { - Sg => ((y.q ! Sg) ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg)); - Pl => ((y.q ! Pl) ++ ((smartQualRelPart (x.t)) ! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl)) - }; b = True - } - }; - - mkNounNC14_6 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "bo" + x; Pl => "ma" + x}; r = x; c = NC14_6; - q = table {Sg => ""; Pl => ""}; b = False}; - - mkNounNC9_10 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "" + x; Pl => "di" + x}; r = x; c = NC9_10; - q = table {Sg => ""; Pl => ""}; b = False}; - - mkVarAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table { - NC9_10 => table {Sg => "" + x; Pl => "di" + x}; - NC14_6 => table {Sg => "bo" + x; Pl => "ma" + x} - }; - p_form = x; - t = R; - }; - - mkOrdAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table { - NC9_10 => table {Sg => "" + x; Pl => "" + x}; - NC14_6 => table {Sg => "" + x; Pl => "" + x} - }; - p_form = x; - t = R; - }; - - mkVerbRel : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table { - NC9_10 => table {Sg => x + "ng"; Pl => x + "ng"}; - NC14_6 => table {Sg => x + "ng"; Pl => x + "ng"} - }; - p_form = x; - t = V; - }; - - mkPerAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table { - NC9_10 => table {Sg => "" + x; Pl => "" + x}; - NC14_6 => table {Sg => "" + x; Pl => "" + x} - }; - p_form = "mo" ++ x; - t = P; - }; - - mkVeryAdj : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = x.t - }; - - mkVeryVerb : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> - { - s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = ModV - }; - - smartVery : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = -\x -> case x.t of --(x.s!c!n) - { - (V | ModV) => mkVeryVerb x; - --ModV => mkVeryVerb x; - _ => mkVeryAdj x - }; - - mkDemPron1 : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "e"; Pl => "tse"}; - NC14_6 => table {Sg => "bo"; Pl => "a"} - }; - - mkDemPron2 : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "eo"; Pl => "tseo"}; - NC14_6 => table {Sg => "boo"; Pl => "ao"} - }; - - smartQualRelPart : TType -> (NounClass => Number => Str) = \x -> case x of - { - P => mkQualRelPart_PName; - _ => mkQualRelPart - }; - - mkQualRelPart : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "e"; Pl => "tse"}; - NC14_6 => table {Sg => "bo"; Pl => "a"} - }; - - mkQualRelPart_PName : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "ya"; Pl => "tsa"}; - NC14_6 => table {Sg => "ba"; Pl => "a"} - }; - - smartDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of - { - P => mkDescrCop_PName; - _ => mkDescrCop - }; - - mkDescrCop : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "e"; Pl => "di"}; - NC14_6 => table {Sg => "bo"; Pl => "a"} - }; - - mkDescrCop_PName : NounClass => Number => Str = table - { - NC9_10 => table {Sg => "ga"; Pl => "ga"}; - NC14_6 => table {Sg => "ga"; Pl => "ga"} - }; - - mkPredDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of - { - V => table {NC9_10 => table {Sg => "e" ++ "a"; Pl => "di" ++ "a"}; - NC14_6 => table {Sg => "bo" ++ "a"; Pl => "a" ++ "a"}}; - - _ => table {NC9_10 => table {Sg => "e"; Pl => "di"}; - NC14_6 => table {Sg => "bo"; Pl => "a"}} - }; - -} diff --git a/examples/foods/FoodsTur.gf b/examples/foods/FoodsTur.gf deleted file mode 100644 index 9347a6bf7..000000000 --- a/examples/foods/FoodsTur.gf +++ /dev/null @@ -1,140 +0,0 @@ -{- - File : FoodsTur.gf - Author : Server Çimen - Version : 1.0 - Created on: August 26, 2009 - - This file contains concrete grammar of Foods abstract grammar for Turkish Language. - This grammar is to be used for Fridge demo and developed in the scope of GF Resource - Grammar Summer School. - --} - -concrete FoodsTur of Foods = open Predef in { - flags - coding=utf8 ; - lincat - Comment = {s : Str} ; - Quality = {s : Str ; c : Case; softness : Softness; h : Harmony} ; - Kind = {s : Case => Number => Str} ; - Item = {s : Str; n : Number} ; - lin - This = det Sg "bu" ; - That = det Sg "şu" ; - These = det Pl "bu" ; - Those = det Pl "şu" ; - -- Reason for excluding plural form of copula: In Turkish if subject is not a human being, - -- then singular form of copula is used regardless of the number of subject. Since all - -- possible subjects are non human, copula do not need to have plural form. - Pred item quality = {s = item.s ++ quality.s ++ BIND ++ copula ! quality.softness ! quality.h} ;--! item.n} ; - Mod quality kind = {s = case quality.c of { - Nom => \\t,n => quality.s ++ kind.s ! t ! n ; - Gen => \\t,n => quality.s ++ kind.s ! Gen ! n - } - } ; - Wine = mkN "şarap" "şaraplar" "şarabı" "şarapları" ; - Cheese = mkN "peynir" "peynirler" "peyniri" "peynirleri" ; - Fish = mkN "balık" "balıklar" "balığı" "balıkları" ; - Pizza = mkN "pizza" "pizzalar" "pizzası" "pizzaları" ; - Very a = {s = "çok" ++ a.s ; c = a.c; softness = a.softness; h = a.h} ; - Fresh = adj "taze" Nom; - Warm = adj "ılık" Nom; - Italian = adj "İtalyan" Gen ; - Expensive = adj "pahalı" Nom; - Delicious = adj "lezzetli" Nom; - Boring = adj "sıkıcı" Nom; - param - Number = Sg | Pl ; - Case = Nom | Gen ; - Harmony = I_Har | Ih_Har | U_Har | Uh_Har ; --Ih = İ; Uh = Ü - Softness = Soft | Hard ; - oper - det : Number -> Str -> {s : Case => Number => Str} -> {s : Str; n : Number} = - \num,det,noun -> {s = det ++ noun.s ! Nom ! num; n = num} ; - mkN = overload { - mkN : Str -> Str -> {s : Case => Number => Str} = regNoun ; - mkn : Str -> Str -> Str -> Str-> {s : Case => Number => Str} = noun ; - } ; - regNoun : Str -> Str -> {s : Case => Number => Str} = - \peynir,peynirler -> noun peynir peynirler [] [] ; - noun : Str -> Str -> Str -> Str-> {s : Case => Number => Str} = - \sarap,saraplar,sarabi,saraplari -> { - s = table { - Nom => table { - Sg => sarap ; - Pl => saraplar - } ; - Gen => table { - Sg => sarabi ; - Pl => saraplari - } - } - }; - {- - Since there is a bug in overloading, this overload is useless. - - mkA = overload { - mkA : Str -> {s : Str; c : Case; softness : Softness; h : Harmony} = \base -> adj base Nom ; - mkA : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} = adj ; - } ; - -} - adj : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} = - \italyan,ca -> {s = italyan ; c = ca; softness = (getSoftness italyan); h = (getHarmony italyan)} ; - -- See the comment at lines 26 and 27 for excluded plural form of copula. - copula : Softness => Harmony {-=> Number-} => Str = - table { - Soft => table { - I_Har => "dır" ;--table { - -- Sg => "dır" ; - -- Pl => "dırlar" - --} ; - Ih_Har => "dir" ;--table { - --Sg => "dir" ; - --Pl => "dirler" - --} ; - U_Har => "dur" ;--table { - -- Sg => "dur" ; - -- Pl => "durlar" - --} ; - Uh_Har => "dür" --table { - --Sg => "dür" ; - --Pl => "dürler" - --} - } ; - Hard => table { - I_Har => "tır" ;--table { - --Sg => "tır" ; - --Pl => "tırlar" - --} ; - Ih_Har => "tir" ;--table { - --Sg => "tir" ; - --Pl => "tirler" - --} ; - U_Har => "tur" ;--table { - -- Sg => "tur" ; - -- Pl => "turlar" - --} ; - Uh_Har => "tür"--table { - --Sg => "tür" ; - --Pl => "türler" - --} - } - } ; - - getHarmony : Str -> Harmony - = \base -> case base of { - _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+ - ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => - case c of { - ("ı"|"a") => I_Har ; - ("i"|"e") => Ih_Har ; - ("u"|"o") => U_Har ; - ("ü"|"ö") => Uh_Har - } - } ; - getSoftness : Str -> Softness - = \base -> case base of { - _+("f"|"s"|"t"|"k"|"ç"|"ş"|"h"|"p") => Hard ; - _ => Soft - } ; -} \ No newline at end of file diff --git a/examples/foods/FoodsUrd.gf b/examples/foods/FoodsUrd.gf deleted file mode 100644 index 186b2f929..000000000 --- a/examples/foods/FoodsUrd.gf +++ /dev/null @@ -1,53 +0,0 @@ --- (c) 2009 Shafqat Virk under LGPL - -concrete FoodsUrd of Foods = { - - flags coding=utf8 ; - - - param Number = Sg | Pl ; - param Gender = Masc | Fem; - - oper coupla : Number -> Str =\n -> case n of {Sg => "ہے" ; Pl => "ہیں"}; - - - lincat - Comment = {s : Str} ; - Item = {s: Str ; n: Number ; g:Gender}; - Kind = {s: Number => Str ; g:Gender}; - Quality = {s: Gender => Number => Str}; - - lin - Pred item quality = {s = item.s ++ quality.s ! item.g ! item.n ++ coupla item.n} ; - This kind = {s = "یھ" ++ kind.s ! Sg; n= Sg ; g = kind.g } ; - These kind = {s = "یھ" ++ kind.s ! Pl; n = Pl ; g = kind.g} ; - That kind = {s = "وہ" ++ kind.s ! Sg; n= Sg ; g = kind.g} ; - Those kind = {s = "وہ" ++ kind.s ! Pl; n=Pl ; g = kind.g} ; - Mod quality kind = {s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; g = kind.g}; - Wine = {s = table { Sg => "شراب" ; Pl => "شرابیں"} ; g = Fem}; - Cheese = {s = table { Sg => "پنیر" ; Pl => "پنیریں"} ; g = Fem}; - Fish = {s = table { Sg => "مچھلی" ; Pl => "مچھلیاں"} ; g = Fem}; - Pizza = {s = table { Sg => "پیزہ" ; Pl => "پیزے"} ; g = Masc}; - Very quality = {s = \\g,n => "بہت" ++ quality.s ! g ! n} ; - Fresh = regAdj "تازہ" ; - Warm = regAdj "گرم" ; - Italian = regAdj "اٹا لوی" ; - Expensive = regAdj "مہنگا" ; - Delicious = regAdj "مزیدار" ; - Boring = regAdj "فضول" ; - - oper - regAdj : Str -> {s: Gender => Number => Str} = \a -> case a of { - x + "ا" => mkAdj a (x+"ے") (x+"ی"); - _ => mkAdj a a a - }; - mkAdj : Str -> Str -> Str -> {s: Gender => Number => Str} = \s,p,f -> { - s = table { - Masc => table { - Sg => s; - Pl => p - }; - Fem => \\_ => f - } - }; - } \ No newline at end of file diff --git a/examples/foods/LexFoods.gf b/examples/foods/LexFoods.gf deleted file mode 100644 index 12ace208c..000000000 --- a/examples/foods/LexFoods.gf +++ /dev/null @@ -1,15 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -interface LexFoods = open Syntax in { - oper - wine_N : N ; - pizza_N : N ; - cheese_N : N ; - fish_N : N ; - fresh_A : A ; - warm_A : A ; - italian_A : A ; - expensive_A : A ; - delicious_A : A ; - boring_A : A ; -} diff --git a/examples/foods/LexFoodsCat.gf b/examples/foods/LexFoodsCat.gf deleted file mode 100644 index 624fc98c8..000000000 --- a/examples/foods/LexFoodsCat.gf +++ /dev/null @@ -1,18 +0,0 @@ --- (c) 2009 Jordi Saludes under LGPL - -instance LexFoodsCat of LexFoods = - open SyntaxCat, ParadigmsCat, (M = MorphoCat) in { - flags - coding = utf8 ; - oper - wine_N = mkN "vi" "vins" M.Masc ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "formatge" ; - fish_N = mkN "peix" "peixos" M.Masc; - fresh_A = mkA "fresc" "fresca" "frescos" "fresques" "frescament"; - warm_A = mkA "calent" ; - italian_A = mkA "italià" "italiana" "italians" "italianes" "italianament" ; - expensive_A = mkA "car" ; - delicious_A = mkA "deliciós" "deliciosa" "deliciosos" "delicioses" "deliciosament"; - boring_A = mkA "aburrit" "aburrida" "aburrits" "aburrides" "aburridament" ; -} diff --git a/examples/foods/LexFoodsFin.gf b/examples/foods/LexFoodsFin.gf deleted file mode 100644 index da6a26b8a..000000000 --- a/examples/foods/LexFoodsFin.gf +++ /dev/null @@ -1,21 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL ---# -coding=latin1 - -instance LexFoodsFin of LexFoods = - open SyntaxFin, ParadigmsFin in { - oper - wine_N = mkN "viini" ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "juusto" ; - fish_N = mkN "kala" ; - fresh_A = mkA "tuore" ; - warm_A = mkA - (mkN "lmmin" "lmpimn" "lmmint" "lmpimn" "lmpimn" - "lmpimin" "lmpimi" "lmpimien" "lmpimiss" "lmpimiin" - ) - "lmpimmpi" "lmpimin" ; - italian_A = mkA "italialainen" ; - expensive_A = mkA "kallis" ; - delicious_A = mkA "herkullinen" ; - boring_A = mkA "tyls" ; -} diff --git a/examples/foods/LexFoodsGer.gf b/examples/foods/LexFoodsGer.gf deleted file mode 100644 index 5df504d8c..000000000 --- a/examples/foods/LexFoodsGer.gf +++ /dev/null @@ -1,17 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL ---# -coding=latin1 - -instance LexFoodsGer of LexFoods = - open SyntaxGer, ParadigmsGer in { - oper - wine_N = mkN "Wein" ; - pizza_N = mkN "Pizza" "Pizzen" feminine ; - cheese_N = mkN "Kse" "Kse" masculine ; - fish_N = mkN "Fisch" ; - fresh_A = mkA "frisch" ; - warm_A = mkA "warm" "wrmer" "wrmste" ; - italian_A = mkA "italienisch" ; - expensive_A = mkA "teuer" ; - delicious_A = mkA "kstlich" ; - boring_A = mkA "langweilig" ; -} diff --git a/examples/foods/LexFoodsIta.gf b/examples/foods/LexFoodsIta.gf deleted file mode 100644 index 11de5fcda..000000000 --- a/examples/foods/LexFoodsIta.gf +++ /dev/null @@ -1,16 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -instance LexFoodsIta of LexFoods = - open SyntaxIta, ParadigmsIta in { - oper - wine_N = mkN "vino" ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "formaggio" ; - fish_N = mkN "pesce" ; - fresh_A = mkA "fresco" ; - warm_A = mkA "caldo" ; - italian_A = mkA "italiano" ; - expensive_A = mkA "caro" ; - delicious_A = mkA "delizioso" ; - boring_A = mkA "noioso" ; -} diff --git a/examples/foods/LexFoodsSwe.gf b/examples/foods/LexFoodsSwe.gf deleted file mode 100644 index 6718e9fab..000000000 --- a/examples/foods/LexFoodsSwe.gf +++ /dev/null @@ -1,17 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL ---# -coding=latin1 - -instance LexFoodsSwe of LexFoods = - open SyntaxSwe, ParadigmsSwe in { - oper - wine_N = mkN "vin" "vinet" "viner" "vinerna" ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "ost" ; - fish_N = mkN "fisk" ; - fresh_A = mkA "frsk" ; - warm_A = mkA "varm" ; - italian_A = mkA "italiensk" ; - expensive_A = mkA "dyr" ; - delicious_A = mkA "lcker" ; - boring_A = mkA "trkig" ; -} diff --git a/examples/foods/Makefile b/examples/foods/Makefile deleted file mode 100644 index 5f42041ae..000000000 --- a/examples/foods/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -all:: Foods.pgf - -Foods.pgf: Foods???.gf - gf -make -s Foods???.gf - -clean: - rm -rf *.gfo Foods.pgf diff --git a/examples/foods/MutationsGla.gf b/examples/foods/MutationsGla.gf deleted file mode 100644 index 41eb11006..000000000 --- a/examples/foods/MutationsGla.gf +++ /dev/null @@ -1,53 +0,0 @@ -resource MutationsGla = open CharactersGla in { - param Mutation = Unmutated|Lenition1|Lenition1DNTLS|Lenition2|PrefixT|PrefixH; - - --Turns a string into a mutation table - oper mutate : (_ : Str) -> (Mutation => Str) = \str -> table { - Unmutated => str ; - Lenition1 => lenition1 str ; - Lenition1DNTLS => lenition1dntls str ; - Lenition2 => lenition2 str ; - PrefixT => prefixT str ; - PrefixH => prefixH str - }; - - --Performs lenition 1: inserts "h" if the word begins with a lenitable character - oper lenition1 : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"t"|"d"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"T"|"D"|"C"|"G") + rest => start + "h" + rest ; - ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated - start@("s"|"S") + rest => start + "h" + rest ; - _ => str - }; - - --Performs lenition 1 with dentals: same as lenition 1 but leaves "d", "t" and "s" unmutated - oper lenition1dntls : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ; - _ => str - }; - - --Performs lenition 2: same as lenition 1 with dentals but also changes "s" into "ts" - oper lenition2 : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ; - ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated - start@("s"|"S") + rest => "t-" + start + rest ; - _ => str - }; - - --Prefixes a "t" to words beginning with a vowel - oper prefixT : Str -> Str = \str -> case str of { - start@(#vowel) + rest => "t-" + start + rest ; - start@(#vowelCap) + rest => "t-" + start + rest ; - _ => str - }; - - --Prefixes a "h" to words beginning with a vowel - oper prefixH : Str -> Str = \str -> case str of { - start@(#vowel) + rest => "h-" + start + rest ; - start@(#vowelCap) + rest => "h-" + start + rest ; - _ => str - }; - -} \ No newline at end of file diff --git a/examples/foods/MutationsGle.gf b/examples/foods/MutationsGle.gf deleted file mode 100644 index 9ae734a90..000000000 --- a/examples/foods/MutationsGle.gf +++ /dev/null @@ -1,92 +0,0 @@ -resource MutationsGle = open CharactersGle in { - param Mutation = Unmutated|Lenition1|Lenition1DNTLS|Lenition2|Eclipsis1|Eclipsis2|Eclipsis3|PrefixT|PrefixH; - - --Turns a string into a mutation table - oper mutate : (_ : Str) -> (Mutation => Str) = \str -> table { - Unmutated => str ; - Lenition1 => lenition1 str ; - Lenition1DNTLS => lenition1dntls str ; - Lenition2 => lenition2 str ; - Eclipsis1 => eclipsis1 str ; - Eclipsis2 => eclipsis2 str ; - Eclipsis3 => eclipsis3 str ; - PrefixT => prefixT str ; - PrefixH => prefixH str - }; - - --Performs lenition 1: inserts "h" if the word begins with a lenitable character - oper lenition1 : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"t"|"d"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"T"|"D"|"C"|"G") + rest => start + "h" + rest ; - ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated - start@("s"|"S") + rest => start + "h" + rest ; - _ => str - }; - - --Performs lenition 1 with dentals: same as lenition 1 but leaves "d", "t" and "s" unmutated - oper lenition1dntls : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ; - _ => str - }; - - --Performs lenition 2: same as lenition 1 with dentals but also changes "s" into "ts" - oper lenition2 : Str -> Str = \str -> case str of { - start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ; - start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ; - ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated - start@("s"|"S") + rest => "t" + start + rest ; - _ => str - }; - - --Performs eclisis 1: prefixes something to every word that begins with an ecliptable character - oper eclipsis1 : Str -> Str = \str -> case str of { - start@("p"|"P") + rest => "b" + start + rest ; - start@("b"|"B") + rest => "m" + start + rest ; - start@("f"|"F") + rest => "bh" + start + rest ; - start@("c"|"C") + rest => "g" + start + rest ; - start@("g"|"G") + rest => "n" + start + rest ; - start@("t"|"T") + rest => "d" + start + rest ; - start@("d"|"D") + rest => "n" + start + rest ; - start@(#vowel) + rest => "n-" + start + rest ; - start@(#vowelCap) + rest => "n" + start + rest ; - _ => str - }; - - --Performs eclipsis 2: same as eclipsis 1 but leaves "t", "d" and vowels unchanges - oper eclipsis2 : Str -> Str = \str -> case str of { - start@("p"|"P") + rest => "b" + start + rest ; - start@("b"|"B") + rest => "m" + start + rest ; - start@("f"|"F") + rest => "bh" + start + rest ; - start@("c"|"C") + rest => "g" + start + rest ; - start@("g"|"G") + rest => "n" + start + rest ; - _ => str - }; - - --Performs eclipsis 3: same as eclipsis 2 but also changes "s" to "ts" - eclipsis3 : Str -> Str = \str -> case str of { - start@("p"|"P") + rest => "b" + start + rest ; - start@("b"|"B") + rest => "m" + start + rest ; - start@("f"|"F") + rest => "bh" + start + rest ; - start@("c"|"C") + rest => "g" + start + rest ; - start@("g"|"G") + rest => "n" + start + rest ; - ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated - start@("s"|"S") + rest => "t" + start + rest ; - _ => str - }; - - --Prefixes a "t" to words beginning with a vowel - oper prefixT : Str -> Str = \str -> case str of { - start@(#vowel) + rest => "t-" + start + rest ; - start@(#vowelCap) + rest => "t" + start + rest ; - _ => str - }; - - --Prefixes a "h" to words beginning with a vowel - oper prefixH : Str -> Str = \str -> case str of { - start@(#vowel) + rest => "h" + start + rest ; - start@(#vowelCap) + rest => "h" + start + rest ; - _ => str - }; - -} \ No newline at end of file diff --git a/examples/foods/README b/examples/foods/README deleted file mode 100644 index 64bc4ed5b..000000000 --- a/examples/foods/README +++ /dev/null @@ -1,8 +0,0 @@ -Foods grammars from GF Summer School 2009. To build: - - $ gf -make -s Foods???.gf -- to create Foods.pgf - - $ mv Foods.pgf ~/GF/src/server/gwt/www/grammars/ -- to use in web applications - - - diff --git a/examples/foods/ResCze.gf b/examples/foods/ResCze.gf deleted file mode 100644 index 56b4aa6ee..000000000 --- a/examples/foods/ResCze.gf +++ /dev/null @@ -1,46 +0,0 @@ --- (c) 2011 Katerina Bohmova under LGPL - -resource ResCze = open Prelude in { - flags - coding = utf8 ; - param - Number = Sg | Pl ; - Gender = Masc | Fem | Neutr; - oper - NounPhrase : Type = - {s : Str ; g : Gender ; n : Number} ; - Noun : Type = {s : Number => Str ; g : Gender} ; - Adjective : Type = {s : Gender => Number => Str} ; - - det : Number -> Str -> Str -> Str -> Noun -> NounPhrase = - \n,m,f,ne,cn -> { - s = table {Masc => m ; Fem => f; Neutr => ne} ! cn.g ++ - cn.s ! n ; - g = cn.g ; - n = n - } ; - noun : Str -> Str -> Gender -> Noun = - \muz,muzi,g -> { - s = table {Sg => muz ; Pl => muzi} ; - g = g - } ; - adjective : (msg,fsg,nsg,mpl,fpl,npl : Str) -> Adjective = - \msg,fsg,nsg,mpl,fpl,npl -> { - s = table { - Masc => table {Sg => msg ; Pl => mpl} ; - Fem => table {Sg => fsg ; Pl => fpl} ; - Neutr => table {Sg => nsg ; Pl => npl} - } - } ; - regAdj : Str -> Adjective = - \mlad -> - adjective (mlad+"ý") (mlad+"á") (mlad+"é") - (mlad+"é") (mlad+"é") (mlad+"á") ; - regnfAdj : Str -> Adjective = - \vynikajici -> - adjective vynikajici vynikajici vynikajici - vynikajici vynikajici vynikajici; - copula : Number => Str = - table {Sg => "je" ; Pl => "jsou"} ; -} - diff --git a/examples/foods/transFoodsHin.gf b/examples/foods/transFoodsHin.gf deleted file mode 100644 index 21d1d2ac1..000000000 --- a/examples/foods/transFoodsHin.gf +++ /dev/null @@ -1,75 +0,0 @@ --- (c) 2009 Aarne Ranta under LGPL - -concrete FoodsHin of Foods = { - - flags coding=utf8 ; - - param - Gender = Masc | Fem ; - Number = Sg | Pl ; - lincat - Comment = {s : Str} ; - Item = {s : Str ; g : Gender ; n : Number} ; - Kind = {s : Number => Str ; g : Gender} ; - Quality = {s : Gender => Number => Str} ; - lin - Pred item quality = { - s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n - } ; - This kind = {s = "yah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; - That kind = {s = "vah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; - These kind = {s = "ye" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; - Those kind = {s = "ve" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; - Mod quality kind = { - s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; - g = kind.g - } ; - Wine = regN "madirA" ; - Cheese = regN "panIr" ; - Fish = regN "maClI" ; - Pizza = regN "pijjA" ; - Very quality = {s = \\g,n => "bahut" ++ quality.s ! g ! n} ; - Fresh = regAdj "tAzA" ; - Warm = regAdj "garam" ; - Italian = regAdj "i-t.alI" ; - Expensive = regAdj "mahaNgA" ; - Delicious = regAdj "rucikar" ; - Boring = regAdj "pEriyA" ; - - oper - mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = - \s,p,g -> { - s = table { - Sg => s ; - Pl => p - } ; - g = g - } ; - - regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of { - lark + "A" => mkN s (lark + "e") Masc ; - lark + "I" => mkN s (lark + "iyaM") Fem ; - _ => mkN s s Masc - } ; - - mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> { - s = table { - Masc => table { - Sg => ms ; - Pl => mp - } ; - Fem => \\_ => f - } - } ; - - regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of { - acch + "A" => mkAdj a (acch + "e") (acch + "I") ; - _ => mkAdj a a a - } ; - - copula : Number -> Str = \n -> case n of { - Sg => "hE" ; - Pl => "hEN" - } ; - - } diff --git a/examples/letter/Letter.gf b/examples/letter/Letter.gf deleted file mode 100644 index 537750cb0..000000000 --- a/examples/letter/Letter.gf +++ /dev/null @@ -1,83 +0,0 @@ -abstract Letter = { - ---1 An Abstract Syntax for Business and Love Letters --- --- This file defines the abstract syntax of a grammar set whose concrete syntax --- has so far been written to five languages: English, Finnish, French, Russian, --- and Swedish. --- --- The main category of the grammar is $Letter$. The other categories are --- parts of the letter. - -flags startcat=Letter ; - -cat - Letter ; - Recipient ; Author ; - Message ; - Heading ; Ending ; - Mode ; Sentence ; NounPhrase ; Position ; - --- There is just one top-level letter structure. - -fun - MkLetter : Heading -> Message -> Ending -> Letter ; - --- The heading consists of a greeting of the recipient. The $JustHello$ --- function will actually suppress the name (and title) of the recipient, --- but the $Recipient$ argument keeps track of the gender and number. - - DearRec : Recipient -> Heading ; - PlainRec : Recipient -> Heading ; - HelloRec : Recipient -> Heading ; - JustHello : Recipient -> Heading ; - --- A message is a sentence with of without a *mode*, which is either --- regret or honour. - - ModeSent : Mode -> Sentence -> Message ; - PlainSent : Sentence -> Message ; - - Honour, Regret : Mode ; - --- The ending is either formal or informal. It does not currently depend on --- the heading: making it so would eliminate formality mismatches between --- the heading and the ending. - - FormalEnding : Author -> Ending ; - InformalEnding : Author -> Ending ; - --- The recipient is either a colleague, colleagues, or darling. --- It can also be a named person. The gender distinction is made --- because there are things in the body of the letter that depend on it. - - ColleagueHe, ColleagueShe : Recipient ; - ColleaguesHe, ColleaguesShe : Recipient ; - DarlingHe, DarlingShe : Recipient ; - - NameHe, NameShe : String -> Recipient ; - --- For the author, there is likewise a fixed set of titles, plus the named author. --- Gender distinctions could be useful even here, for the same reason as with --- $Recipient$. Notice that the rendering of $Spouse$ will depend on the --- gender of the recipient. - - President, Mother, Spouse, Dean : Author ; - Name : String -> Author ; - --- As for the message body, no much choice is yet available: one can say that --- the recipient is promoted to some position, that someone has gone bankrupt, --- or that the author loves the recipient. - - BePromoted : Position -> Sentence ; - GoBankrupt : NounPhrase -> Sentence ; - ILoveYou : Sentence ; - - Competitor : NounPhrase ; - Company : NounPhrase ; - OurCustomers : NounPhrase ; - - Senior : Position ; - ProjectManager : Position ; - -} diff --git a/examples/letter/LetterEng.gf b/examples/letter/LetterEng.gf deleted file mode 100644 index 6bc3fc884..000000000 --- a/examples/letter/LetterEng.gf +++ /dev/null @@ -1,158 +0,0 @@ -concrete LetterEng of Letter = { - ---1 An English Concrete Syntax for Business and Love Letters --- --- This file defines the English syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - -flags lexer=textlit ; unlexer=textlit ; - -param Sex = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex -oper SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex -oper SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs -oper SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's -oper SSSrcNum = {s : Str ; n : Num} ; -- gives Num only - - -oper - ss : Str -> SS = \s -> {s = s} ; - constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex -> - {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - - RET = "" ; -- &- - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcNum ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ RET ++ - mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ RET ++ - end.s ! head.n ! head.x) ; - -DearRec rec = {s = "Dear" ++ rec.s ; n = rec.n ; x = rec.x} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Hello" ++ rec.s ; n = rec.n ; x = rec.x} ; -JustHello rec = {s = "Hello" ; n = rec.n ; x = rec.x} ; - -ModeSent mode sent = - {s = - table {dna => table {xa => table {nr => table {xr => - mode.s ! dna ! xa ! nr ! xr ++ sent.s ! dna ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {x => - ["Sincerely yours"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; -InformalEnding auth = - {s = table {n => table {x => - ["With best regards"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ; -ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ; -ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ; -ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ; -DarlingHe = {s = "darling" ; n = sg ; x = masc} ; -DarlingShe = {s = "darling" ; n = sg ; x = fem} ; -NameHe s = {s = s.s ; n = sg ; x = masc} ; -NameShe s = {s = s.s ; n = sg ; x = fem} ; - - -Honour = {s = - table {dna => table {xa => table {nr => table {xr => - let {na = dep2num dna nr} in - ego ! na ! nom ++ ["have the honour to inform you that"]}}}} - } ; - -Regret = {s = - table {dna => table {xa => table {nr => table {xr => - let {na = dep2num dna nr} in - ego ! na ! nom ++ am ! na ++ ["sorry to inform you that"]}}}} - } ; - - -President = constNX ["the President"] sg masc ; -Mother = constNX "Mom" sg fem ; -Spouse = {s = table { - sg => table {fem => ["your husband"] ; masc => ["your wife"]} ; - pl => table {fem => ["your husbands"] ; masc => ["your wives"]} - } ; n = depnum ; x = masc} ; -- sex does not matter here -Dean = constNX ["the Dean"] sg masc ; -Name s = constNX s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - ["you have been promoted to"] ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ have ! np.n ++ ["gone bankrupt"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - ego ! dep2num na nr ! nom ++ ["love you"]}}}} - } ; - -Company = {s = ["our company"] ; n = sg} ; -Competitor = {s = ["our worst competitor"] ; n = sg} ; -OurCustomers = {s = ["our customers"] ; n = pl} ; - -Senior = {s = - table { - sg => table {x => ["a senior fellow"]} ; - pl => table {x => ["senior fellows"]} - }} ; -ProjectManager = {s = - table { - sg => table {_ => ["a project manager"]} ; - pl => table {_ => ["project managers"]} - }} ; - -oper - -kollega : - Num => Str = - table {sg => "colleague" ; pl => "colleagues"} ; - -am : - Num => Str = - table {sg => "am" ; pl => "are"} ; - -have : - Num => Str = - table {sg => "has" ; pl => "have"} ; - -ego : - Num => Kas => Str = - table { - sg => table {nom => "I" ; acc => "me"} ; - pl => table {nom => "we" ; acc => "us"} - } ; - - -- added by John 2013-01-11 for testing syntax editor - printname cat Recipient = "Someone who receives a letter"; - printname fun HelloRec = "Saying hello to a recipient"; - -} diff --git a/examples/letter/LetterFin.gf b/examples/letter/LetterFin.gf deleted file mode 100644 index 6892bfcd4..000000000 --- a/examples/letter/LetterFin.gf +++ /dev/null @@ -1,181 +0,0 @@ -concrete LetterFin of Letter = { - ---1 A Finnish Concrete Syntax for Business and Love Letters --- --- This file defines the Finnish syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - -flags lexer=textlit ; unlexer=textlit ; coding=utf8; - --- modified from French in 20 min, 15/6/2002 - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - - noDep : (P : Type) -> Str -> P => Str = \_,s -> table {_ => s} ; - - cher : Num => Gen => Tok = - table {sg => noDep Gen "rakas" ; pl => noDep Gen "rakkaat"} ; - - egosum : Num => Str = - table {sg => "olen" ; pl => "olemme"} ; - egohabeo : Num => Str = - table {sg => "minulla" ++ "on" ; pl => "meillä" ++ "on"} ; - fuisti : Num => Str = - table {sg => "sinut" ++ "on"; pl => "teidät" ++ "on"} ; - quePrep = "että" ; ---- - tuinformare : Num => Str = - table {sg => "ilmoittaa" ++ "sinulle" ; pl => "ilmoittaa" ++ "teille"} ; - - regNom : Str -> Num => Str = \pora -> table {sg => pora ; pl => pora + "t"} ; - - avoir : Num => Str = - table {sg => "on"; pl => "ovat"} ; - - mes : Num => Str = table {sg => "minun" ; pl => "meidän"} ; - - teamo : Num => Num => Str = table { - sg => table {sg => "rakastan" ++ "sinua" ; - pl => "rakastan" ++ "teitä"} ; - pl => table {sg => "rakastamme" ++ "sinua" ; - pl => "rakastamme" ++ "teitä"} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - RET = "" ; -- &- - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ RET ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Terve" ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = "Terve" ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {g => ["parhain terveisin"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["terveisin"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = regNom "kollega" ! pl ; n = pl ; g = masc} ; -ColleaguesShe = {s = regNom "kollega" ! pl ; n = pl ; g = fem} ; -ColleagueHe = {s = regNom "kollega" ! sg ; n = sg ; g = masc} ; -ColleagueShe = {s = regNom "kollega" ! sg ; n = sg ; g = fem} ; -DarlingHe = {s = "kulta" ; n = sg ; g = masc} ; -DarlingShe = {s = "kulta" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egohabeo ! dep2num na nr ++ - ["kunnia"] ++ tuinformare ! nr ++ quePrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - mes ! dep2num na nr ++ - ["on valitettavasti ilmoitettava"] ++ quePrep}}}} - } ; - - -President = constNG ["presidentti"] sg masc ; -Mother = constNG ["äiti"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["miehesi"] ; masc => ["vaimosi"]} ; - pl => table {fem => ["miehenne"] ; masc => ["vaimonne"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["dekaani"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - fuisti ! nr ++ "ylennetty" ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => - table {xa => - table {nr => - table {xr => - np.s ++ avoir ! np.n ++ - (case np.n of {sg => "mennyt" ; pl => "menneet"}) ++ - "konkurssiin" - } - } - } - } - } ; - -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - teamo ! dep2num na nr ! nr}}}}} ; - -Company = {s = ["yrityksemme"] ; n = sg ; g = fem} ; -Competitor = {s = ["pahin kilpailijamme"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["asiakkaamme"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["vanhemmaksi tutkijaksi"]} ; - pl => table {g => ["vanhemmiksi tutkijoiksi"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["projektipäälliköksi"]} ; - pl => table {_ => ["projektipäälliköiksi"]} - }} ; - -} diff --git a/examples/letter/LetterFre.gf b/examples/letter/LetterFre.gf deleted file mode 100644 index 4eb40e6d0..000000000 --- a/examples/letter/LetterFre.gf +++ /dev/null @@ -1,171 +0,0 @@ -concrete LetterFre of Letter = { - ---1 An French Concrete Syntax for Business and Love Letters --- --- This file defines the French syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - - -flags lexer=textlit ; unlexer=textlit ; coding=utf8; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - cher : Num => Gen => Tok = - table {n => table {masc => regNom "cher" ! n ; fem => regNom "chère" ! n}}; - regAdj : Str -> Gen => Num => Str = \s -> - table {masc => regNom s ; fem => regNom (s + "e")} ; - regNom : Str -> Num => Str = \s -> table {sg => s ; pl => s + "s"} ; - egosum : Num => Str = - table {sg => "je" ++ "suis" ; pl => "nous" ++ "sommes"} ; - egohabeo : Num => Str = - table {sg => "j'ai" ; pl => "nous" ++ "avons"} ; - fuisti : Num => Str = - table {sg => "tu" ++ "as" ++ "été"; pl => "vous" ++ "avez" ++ "été"} ; - quePrep = "que" ; ---- - tuinformare : Num => Str = - table {sg => "t'informer"; pl => "vous" ++ "informer"} ; - - avoir : Num => Str = - table {sg => "a"; pl => "ont"} ; - - mes : Num => Str = table {sg => "mes" ; pl => "nos"} ; - - teamo : Num => Num => Str = table { - sg => table {sg => "je" ++ "t'aime" ; - pl => "je" ++ "vous" ++ "aime"} ; - pl => table {sg => "nous" ++ "t'aimons" ; - pl => "nous" ++ "vous" ++ "aimons"} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum sg => sg ; - cnum pl => pl - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - RET = "" ; -- &- - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ RET ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Bonjour" ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = "Bonjour" ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - "avec" ++ mes ! dep2num auth.n n ++ - ["salutations distinguées"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["Amicalement"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = regNom "collègue" ! pl ; n = pl ; g = masc} ; -ColleaguesShe = {s = regNom "collègue" ! pl ; n = pl ; g = fem} ; -ColleagueHe = {s = regNom "collègue" ! sg ; n = sg ; g = masc} ; -ColleagueShe = {s = regNom "collègue" ! sg ; n = sg ; g = fem} ; -DarlingHe = {s = "chéri" ; n = sg ; g = masc} ; -DarlingShe = {s = "chérie" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egohabeo ! dep2num na nr ++ - ["l'honneur de"] ++ tuinformare ! nr ++ quePrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - let {dga = dep2gen ga gr ; dna = dep2num na nr} in - egosum ! dna ++ regAdj "désolé" ! dga ! dna ++ - ["d'informer"] ++ quePrep}}}} - } ; - - -President = constNG ["le président"] sg masc ; -Mother = constNG ["maman"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["ton mari"] ; masc => ["ta femme"]} ; - pl => table {fem => ["vos maris"] ; masc => ["vos femmes"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["le doyen"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - fuisti ! nr ++ regAdj "promu" ! xr ! nr ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ avoir ! np.n ++ ["fait banqueroute"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - teamo ! dep2num na nr ! nr}}}} - } ; - -Company = {s = ["notre entreprise"] ; n = sg ; g = fem} ; -Competitor = {s = ["notre pire compétiteur"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["nos clients"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["responsable scientifique"]} ; - pl => table {g => ["responsables scientifiques"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["chef de projet"]} ; - pl => table {_ => ["chefs de projets"]} - }} ; -} diff --git a/examples/letter/LetterHeb.gf b/examples/letter/LetterHeb.gf deleted file mode 100644 index c50d6102c..000000000 --- a/examples/letter/LetterHeb.gf +++ /dev/null @@ -1,216 +0,0 @@ -concrete LetterHeb of Letter = { - --- (c) Alex Kutsela 2005 - -flags lexer=textlit ; unlexer=textlit ; coding=utf8 ; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | dat | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - regAdj : Str -> Num => Gen => Tok =\s -> table { - sg => table {masc => s; fem => s+"ה"}; - pl => table {masc => s+"ים"; fem => s+"ות"} - }; - -hello : Str -> Num => Str = \s -> table {sg => s ; pl => s} ; - -regVerPerf : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s; fem => s+"ה"}; - pl => table {masc => s+"ו"; fem => s+"ו"} - }; - -ego : Num => Str = table {sg => "אןי" ; pl => "אןחןו" } ; - -tu : Num => Gen => Kas => Str = - table {sg => table {fem => table {nom => "את"; dat => "לך"; acc => "אותך"} ; - masc => table {nom => "אתה"; dat => "לך"; acc => "אותך"} - } ; - pl => table {fem => table {nom => "אתן"; dat => "לכן"; acc => "אתכן"} ; - masc => table {nom => "אתם"; dat => "לכם"; acc => "אתכם"} - } - }; - -hereIam : Num => Str = - table {sg => "הןןי" ; pl => "הןןו" } ; - -haveBeen : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s+"ת"; fem => s+"ת"}; - pl => table {masc => s+"תם"; fem => s+"תן"} - }; - -thatConj = ["ש"] ; - -regVer : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s; fem => s+"ת"}; - pl => table {masc => s+"ים"; fem => s+"ות"} - }; - -constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - -dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; -dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - RET = "" ; -- &- - - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss ("," ++ head.s ++ RET ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ RET ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = rec.s ++ regAdj "יקר" ! rec.n ! rec.g; - n = rec.n; - g = rec.g}; -PlainRec rec = rec ; -HelloRec rec = {s = hello "שלום" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = hello "שלום" ! rec.n ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - [", בכבוד רב"] ++ RET ++ - auth.s ! n ! g - }} ; - n = auth.n ; g = auth.g} ; - -InformalEnding auth = - {s = table {n => table {g => [", בברכה"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleagueHe = {s = "עמית" ; n = sg ; g = masc} ; -ColleagueShe = {s = "עמיתה" ; n = sg ; g = fem} ; -ColleaguesHe = {s = "עמיתים" ; n = pl ; g = masc} ; -ColleaguesShe = {s = "עמיתות" ; n = pl ; g = fem} ; -DarlingHe = {s = "אהובי" ; n = sg ; g = masc} ; -DarlingShe = {s = "אהובתי" ; n = sg ; g = fem} ; - -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - -Honour = {s = table { - na => table { - xa => table { - nr => table { - xr => hereIam ! dep2num na nr ++ - regVer "מתכבד" ! dep2num na nr ! dep2gen xa xr ++ - ["להודיע"] ++ tu ! nr ! xr ! dat ++ thatConj - } - } - } - } - } ; - -Regret = {s = table { - na => table { - ga => table { - nr => table { - gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "מצטער" ! dna ! dga ++ - ["להודיע"] ++ tu ! nr ! gr ! dat ++ thatConj - } - } - } - } - } ; - -Dean = constNG ["דיקן"] sg masc ; -President = constNG ["ןשיא"] sg masc ; -Mother = constNG ["אמא"] sg fem ; -Name s = constNG s.s sg masc ; --- -Spouse = {s = table { - sg => table {fem => ["בעלך"] ; masc => ["אישתך"]} ; - pl => table {fem => ["בעליכן"] ; masc => ["ןשותיכם"]} - } ; n = depnum ; g = depgen} ; - -BePromoted pos = {s = table { - na => table { - xa => table { - nr => table { - xr => haveBeen "קודמ" ! nr !xr ++ "לתפקיד" ++ "של" ++ pos.s ! nr ! xr - } - } - } - } - } ; - -GoBankrupt np = - {s = table - {na => table - {xa => table - {nr => table - {xr => np.s ++ regVerPerf "פשט" ! np.n ! np.g ++ "רגל"} - } - } - } - } ; - -ILoveYou = {s = table - {na => table - {ga => table - {nr => table - {gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "אוהב" ! dna ! dga ++ - tu ! nr ! gr ! acc} - } - } - } - } ; - -Company = {s = ["חברתןו"] ; n = sg ; g = fem} ; -Competitor = {s = ["המתחרה הגרוע ביותר שלןו"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["לקוחותיןו"] ; n = pl ; g = masc} ; - -Senior = {s = table - {sg => table {g => ["חבר בכיר"]} ; - pl => table {g => ["חברים בכירים"]} - } - } ; - -ProjectManager = {s = table { - sg => table {fem => ["מןהלת פרוייקט"]; masc => ["מןהל פרוייקט"]} ; - pl => table {fem => ["מןהלות פרוייקט"]; mask =>["מןהלי פרוייקט"]} - } - } ; -} diff --git a/examples/letter/LetterRus.gf b/examples/letter/LetterRus.gf deleted file mode 100644 index cad177946..000000000 --- a/examples/letter/LetterRus.gf +++ /dev/null @@ -1,178 +0,0 @@ -concrete LetterRus of Letter = { - -flags lexer=textlit ; unlexer=textlit ; coding=utf8 ; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - regAdj : Str -> Num => Gen => Tok =\s -> table { - sg => table {masc => s+"ой"; fem => s+"ая"}; - pl => table {masc => s+"ие"; fem => s+"ие"} - }; - regVer : Str -> Num => Gen => Str = \s -> table { - sg => table {masc => s; fem => s+"а"}; - pl => table {masc => s+"ы"; fem => s+"ы"} - }; - - hello : Str -> Num => Str = \s -> - table {sg => s ; pl => s+"те" } ; - - regVerPerf : Str -> Num => Gen => Str = \s -> table { - sg => table {masc => s+"ся"; fem => s+"ось"}; - pl => table {masc => s+"ись"; fem => s+"ись"} - }; - - ego : Num => Str = - table {sg => "я" ; pl => "вы" } ; - egoHave : Num => Str = - table {sg => ["я имею"] ; pl => ["мы имеем"]} ; - - haveBeen : Num => Gen => Str = table { - sg => table {masc => ["ты был"] ; fem => ["ты была"] }; - pl => table {masc => ["вы были"]; fem => ["вы были"]} - }; - - thatPrep = [", что"] ; - informYou : Num => Str = - table {sg => ["сообщить тебе"]; pl => ["сообщить вам"]} ; - - loveYou : Num => Num => Str = table { - sg => table {sg => ["я тебя люблю"] ; - pl => ["я вас люблю"]} ; - pl => table {sg => ["мы тебя любим"] ; - pl => ["мы вас любим"]} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - RET = "" ; -- &- - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ RET ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = regAdj "Дорог" - ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = hello "Здравствуй" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = hello "Здравствуй" ! rec.n ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - "С" ++ - ["наилучшими пожеланиями ,"] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["С дружеским приветом , "] ++ RET ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = "коллеги" ; n = pl ; g = masc} ; -ColleaguesShe = {s = "коллеги" ; n = pl ; g = fem} ; -ColleagueHe = {s = "коллега" ; n = sg ; g = masc} ; -ColleagueShe = {s = "коллега" ; n = sg ; g = fem} ; -DarlingHe = {s = "любимый" ; n = sg ; g = masc} ; -DarlingShe = {s = "любимая" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egoHave ! dep2num na nr ++ - ["честь"] ++ informYou ! nr ++ thatPrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "вынужден" ! dna ! dga ++ - ["сообщить"] ++ thatPrep}}}} - } ; - - -President = constNG ["президент"] sg masc ; -Mother = constNG ["мама"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["твой муж"] ; masc => ["твоя жена"]} ; - pl => table {fem => ["ваши мужья"] ; masc => ["ваши жены"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["декан"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - haveBeen ! nr ! xr ++ regVer "назначен" ! nr ! xr ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ regVerPerf "обанкротил" ! np.n ! np.g }}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - loveYou ! dep2num na nr ! nr}}}} - } ; - -Company = {s = ["наше предприятие"] ; n = sg ; g = fem} ; -Competitor = {s = ["наш конкурент"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["наши клиенты"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["старшим научным сотрудником"]} ; - pl => table {g =>[ "старшими научными сотрудниками"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["менеджером проекта"]} ; - pl => table {_ => ["менеджерами проектов"]} - }} ; - -} diff --git a/examples/letter/LetterSwe.gf b/examples/letter/LetterSwe.gf deleted file mode 100644 index a2ca59aa9..000000000 --- a/examples/letter/LetterSwe.gf +++ /dev/null @@ -1,164 +0,0 @@ -concrete LetterSwe of Letter = { - ---1 An Swedish Concrete Syntax for Business and Love Letters --- --- This file defines the Swedish syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - - -flags lexer=textlit ; unlexer=textlit ; coding=utf8; - -printname cat Letter = "Brev" ; -printname fun MkLetter = "brevmall" ; - -param Sex = masc | fem ; -param Gen = en | ett ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; - -oper SS = {s : Str} ; -oper SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex -oper SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex -oper SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs -oper SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's -oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - - -oper - ss : Str -> SS = \s -> {s = s} ; - - constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex -> - {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - - RET = "" ; -- &- - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ RET ++ - mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ RET ++ - end.s ! head.n ! head.x) ; - -DearRec rec = {s = kaer ! rec.n ! rec.x ++ rec.s ; n = rec.n ; x = rec.x} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Hej" ++ rec.s ; n = rec.n ; x = rec.x} ; -JustHello rec = {s = "Hej" ; n = rec.n ; x = rec.x} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {x => - ["Med vänlig hälsning"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -InformalEnding auth = - {s = table {n => table {x => - ["Med hälsningar"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ; -ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ; -ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ; -ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ; -DarlingHe = {s = "älskling" ; n = sg ; x = masc} ; -DarlingShe = {s = "älskling" ; n = sg ; x = fem} ; -NameHe s = {s = s.s ; n = sg ; x = masc} ; -NameShe s = {s = s.s ; n = sg ; x = fem} ; - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["har äran att meddela"] ++ - du ! nr ! acc ++ "att"}}}} - } ; - -Regret = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["måste tyvärr meddela"] ++ - du ! nr ! acc ++ "att"}}}} - } ; - - -President = constNX ["Presidenten"] sg masc ; -Mother = constNX ["Mamma"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["din man"] ; masc => ["din hustru"]} ; - pl => table {fem => ["era män"] ; masc => ["era hustrur"]} - } ; n = depnum ; x = masc} ; -- sex does not matter here -Dean = constNX ["Dekanus"] sg masc ; -Name s = constNX s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - du ! nr ! nom ++ ["har blivit"] ++ befordrad ! nr ++ - "till" ++ pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ ["har gått i konkurs"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["älskar"] ++ du ! nr ! acc}}}} - } ; - -Company = {s = ["vårt företag"] ; n = sg ; g = ett} ; -Competitor = {s = ["vår värsta konkurrent"] ; n = sg ; g = en} ; -OurCustomers = {s = ["våra kunder"] ; n = pl ; g = en} ; - -Senior = {s = table {n => table {x => ["äldre forskare"]}}} ; -ProjectManager = {s = - table { - sg => table {_ => "projektchef"} ; - pl => table {_ => "projektchefer"} - }} ; - -oper - -kaer : - Num => Sex => Str = - table { - sg => table {masc => "Käre" ; fem => "Kära"} ; - pl => table {_ => "Kära"} - } ; - -kollega : - Num => Str = - table {sg => "kollega" ; pl => "kollegor"} ; - -befordrad : - Num => Str = - table {sg => "befordrad" ; pl => "befordrade"} ; - -jag : - Num => Kas => Str = - table { - sg => table {nom => "jag" ; acc => "mig"} ; - pl => table {nom => "vi" ; acc => "oss"} - } ; -du : - Num => Kas => Str = - table { - sg => table {nom => "du" ; acc => "dig"} ; - pl => table {nom => "ni" ; acc => "er"} - } ; -} diff --git a/examples/letter/README b/examples/letter/README deleted file mode 100644 index d1691f721..000000000 --- a/examples/letter/README +++ /dev/null @@ -1,35 +0,0 @@ -GF challenges Microsoft Works! Here you find templates for -multilingual authoring of business and love letters! - -Another point of these grammars is to illustrate how -local updates are propagated everywhere in the document. -Form, in the editor - - Dear Colleague, - - I love you. - - With best regards, - - your wife - -and change between ColleagueHe, ColleagueShe, ColleaguesHe, ColleaguesShe. - -The grammars are somewhat ad hoc and messy, and could be improved -with better abstractions. - -(AR 2001) - -To use the grammars in an editor, first compile them to javascript: - - gfc --make --output-format=js Letter???.gf - -Then open the file ./editor/editor.html in a web browser. You also need the javascript -libraries from - - GF/lib/javascript/ - -Copyright (c) 2001-2008 Janna Khegai, Alex Kutsela, Aarne Ranta -under GNU General Public License (GPL). - -Document last updated December 4, 2008, by Aarne Ranta. diff --git a/examples/letter/editor/editor.html b/examples/letter/editor/editor.html deleted file mode 100644 index 5c9aa4fc5..000000000 --- a/examples/letter/editor/editor.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - Web-based Syntax Editor - - -
-
- - diff --git a/examples/phrasebook/Clone.hs b/examples/phrasebook/Clone.hs deleted file mode 100644 index 4619c13ed..000000000 --- a/examples/phrasebook/Clone.hs +++ /dev/null @@ -1,65 +0,0 @@ -module Main where - -import Control.Monad -import Data.Maybe -import Data.Char -import System.Cmd -import System.Directory -import System.Environment -import System.Exit - - --- To clone a project from one language to another: --- --- 1. for each Module in 'modules', copy ModuleFROM to ModuleTO --- 2. in each ModuleTO, replace substrings FROM by TO, if not prefixes of an Ident --- 3. in each ModuleTO in 'specifics', comment out every line in the body, except --- those whose first word is in 'commons'. --- --- Syntax: runghc Clone FROM TO --- Example: runhugs Clone Swe Nor - --- The following lines are for the phrasebook project, and can be changed --- to fit other projects. - -modules = "Phrasebook":"Sentences":specifics -specifics = ["Words","Greetings"] -commons = ["Apple","Beer","Bread","Fish","Milk","Salt","Water","Wine", - "Bad","Cold","Good","Warm","AHasChildren"] - - -main = do - from:to:_ <- getArgs - mapM_ (clone from to) modules - -clone from to pref = do - s <- readFile (pref ++ from ++ ".gf") - writeFile (pref ++ to ++ ".gf") (commentIf (isSpecific pref) (replaceLang from to s)) - -isSpecific = flip elem specifics - -replaceLang s1 s2 = repl where - repl s = case s of - c:cs -> case splitAt lgs s of - (pre,c:rest) | pre == s1 && elem c " \n\t,:=(){}.-[];" -> s2 ++ [c] ++ repl rest - _ -> c : repl cs - _ -> s - lgs = 3 -- length s1 - --- the file name has the form p....pLLL.gf, i.e. 3-letter lang name, suffix .gf -getLangName fi = - let (nal,ferp) = splitAt 3 (drop 3 (reverse fi)) in - (reverse ferp,reverse nal) - -commentIf c = if c then (unlines . commentBody . lines) else id - -commentBody ss = header ++ map comment body ++ ["}"] where - (header,body) = break (isJment . words) ss - isJment ws = case ws of - k:_ | elem k ["flags","lin","lincat","oper","param"] -> True - _ -> False - comment l = case l of - _ | take 2 l == "--" -> l -- already commented - _ | all isSpace l -> l -- empty line - _ | elem (head (words l)) commons -> l -- in 'commons' - _ -> "--" ++ l diff --git a/examples/phrasebook/Compile.hs b/examples/phrasebook/Compile.hs deleted file mode 100644 index bc64a6f30..000000000 --- a/examples/phrasebook/Compile.hs +++ /dev/null @@ -1,47 +0,0 @@ -import Data.List(partition) -import Control.Monad(when) -import System.Cmd(system) -import System.Environment(getArgs) - --- (c) Aarne Ranta 2010 under GNU LGPL - --- Compile files into pgf, in chosen combinations. - --- Usage: runghc Compile (-make | -link)? Eng Fre Fin ... --- The -make option links all pgf files to one in the end --- The -link option only links, without first compiling --- Arguments whose length are 3 characters are prefixed with mainmodu. --- Other arguments are passed literally. - --- Thus, for instance, to produce an English-Swedish-Romanian phrasebook with English --- disambiguation, the command is --- --- runghc Compile -link Eng Swe Ron DisambPhrasebookEng - - --- change this to apply to another project; alternatively, just use full file names -mainmodu = "Phrasebook" - -main = do - (opts,langs) <- partition ((=='-') . head) `fmap` getArgs - let modus = [mkFile la | la <- langs] - let opt = elem "-opt" opts - putStrLn $ unwords modus - when (notElem "-link" opts) $ mapM_ (compileOne opt) modus - case opts of - _ | elem "-make" opts || elem "-link" opts -> do - let comm = "gf -make -s " ++ unwords (map (++ ".pgf") modus) - putStrLn comm - system comm - return () - _ -> return () - -compileOne opt modu = do - let optim = if opt then " -optimize-pgf" else "" - comm = "gf -make -s" ++ optim ++ " -name=" ++ - modu ++ " " ++ modu ++ ".gf" ++ - " +RTS -K32M" - putStrLn comm - system comm - -mkFile la = if length la == 3 then mainmodu ++ la else la diff --git a/examples/phrasebook/DisambPhrasebookEng.gf b/examples/phrasebook/DisambPhrasebookEng.gf deleted file mode 100644 index af8753869..000000000 --- a/examples/phrasebook/DisambPhrasebookEng.gf +++ /dev/null @@ -1,84 +0,0 @@ ---# -path=.:present - -concrete DisambPhrasebookEng of Phrasebook = PhrasebookEng - - [ - PGreetingMale, PGreetingFemale, - IMale, IFemale, - YouFamMale, YouFamFemale, - YouPolMale, YouPolFemale, - LangNat, -- CitiNat, - GExcuse, GExcusePol, - GSorry, GSorryPol, - GPleaseGive, GPleaseGivePol, - GNiceToMeetYou, -- GNiceToMeetYouPol, - PYes, PYesToNo, ObjMass, - MKnow, - WeMale, WeFemale, - YouPlurFamMale, YouPlurFamFemale, - YouPlurPolMale, YouPlurPolFemale, - TheyMale, TheyFemale, - PImperativeFamPos, - PImperativeFamNeg, - PImperativePolPos, - PImperativePolNeg, - PImperativePlurPos, - PImperativePlurNeg - ] - ** open SyntaxEng, ParadigmsEng, IrregEng, Prelude in { -lin - PGreetingMale g = mkText (lin Text g) (lin Text (ss "(by male)")) ; - PGreetingFemale g = mkText (lin Text g) (lin Text (ss "(by female)")) ; - IMale = mkP i_Pron "(male)" ; - IFemale = mkP i_Pron "(female)" ; - WeMale = mkP we_Pron "(male)" ; - WeFemale = mkP we_Pron "(female)" ; - YouFamMale = mkP youSg_Pron "(singular,familiar,male)" ; - YouFamFemale = mkP youSg_Pron "(singular,familiar,female)" ; - YouPolMale = mkP youPol_Pron "(singular,polite,male)" ; - YouPolFemale = mkP youPol_Pron "(singular,polite,female)" ; - YouPlurFamMale = mkP youSg_Pron "(plural,familiar,male)" ; - YouPlurFamFemale = mkP youSg_Pron "(plural,familiar,female)" ; - YouPlurPolMale = mkP youPol_Pron "(plural,polite,male)" ; - YouPlurPolFemale = mkP youPol_Pron "(plural,polite,female)" ; - TheyMale = mkP they_Pron "(male)" ; - TheyFemale = mkP they_Pron "(female)" ; - - MKnow = mkVV (partV know_V "how") ; --- - - LangNat nat = mkNP nat.lang (ParadigmsEng.mkAdv "(language)") ; --- CitiNat nat = nat.prop ; - - GExcuse = fam "excuse me" ; - GExcusePol = pol "excuse me" ; - GSorry = fam "sorry" ; - GSorryPol = pol "sorry" ; - GPleaseGive = fam "please" ; - GPleaseGivePol = pol "please" ; - GNiceToMeetYou = fam "nice to meet you" ; --- GNiceToMeetYouPol = pol "nice to meet you" ; - - PYes = mkPhrase (lin Utt (ss "yes (answer to positive question)")) ; - PYesToNo = mkPhrase (lin Utt (ss "yes (answer to negative question)")) ; - - ObjMass x = mkNP (mkNP x) (ParadigmsEng.mkAdv "(a portion of)") ; - - PImperativeFamPos v = phrasePlease (mkUtt (mkImp (addAdv ("singular,familiar") v))) ; - PImperativeFamNeg v = phrasePlease (mkUtt negativePol (mkImp (addAdv ("singular,familiar") v))) ; - PImperativePolPos v = phrasePlease (mkUtt politeImpForm (mkImp (addAdv ("singular,polite") v))) ; - PImperativePolNeg v = phrasePlease (mkUtt politeImpForm negativePol (mkImp (addAdv ("singular,polite") v))) ; - PImperativePlurPos v = phrasePlease (mkUtt pluralImpForm (mkImp (addAdv ("plural,familiar") v))) ; - PImperativePlurNeg v = phrasePlease (mkUtt pluralImpForm negativePol (mkImp (addAdv ("plural,familiar") v))) ; - - -oper - fam : Str -> SS = \s -> postfixSS "(familiar)" (ss s) ; - pol : Str -> SS = \s -> postfixSS "(polite)" (ss s) ; - - mkP : Pron -> Str -> {name : NP ; isPron : Bool ; poss : Quant} = \p,s -> - {name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ; - isPron = False ; -- to show the disambiguation - poss = SyntaxEng.mkQuant youSg_Pron - } ; - - addAdv : Str -> VP -> VP = \s,vp -> mkVP vp (ParadigmsEng.mkAdv ("("+s+")")) ; -} diff --git a/examples/phrasebook/DisambPhrasebookRon.gf b/examples/phrasebook/DisambPhrasebookRon.gf deleted file mode 100644 index c6cdf9aae..000000000 --- a/examples/phrasebook/DisambPhrasebookRon.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present - -concrete DisambPhrasebookRon of Phrasebook = PhrasebookRon - - [PSentence, PQuestion, ObjIndef - ] - ** open SyntaxRon, Prelude in { -lin - PSentence s = mkText s ; -- punctuation not optional - PQuestion s = mkText s ; - ObjIndef k = mkNP someSg_Det k ; -} diff --git a/examples/phrasebook/Greetings.gf b/examples/phrasebook/Greetings.gf deleted file mode 100644 index 580b1560b..000000000 --- a/examples/phrasebook/Greetings.gf +++ /dev/null @@ -1,28 +0,0 @@ -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 ; - -} diff --git a/examples/phrasebook/GreetingsBul.gf b/examples/phrasebook/GreetingsBul.gf deleted file mode 100644 index f271d7717..000000000 --- a/examples/phrasebook/GreetingsBul.gf +++ /dev/null @@ -1,31 +0,0 @@ -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 "колко е часът" ; - -} diff --git a/examples/phrasebook/GreetingsCat.gf b/examples/phrasebook/GreetingsCat.gf deleted file mode 100644 index db8992e22..000000000 --- a/examples/phrasebook/GreetingsCat.gf +++ /dev/null @@ -1,31 +0,0 @@ ---# -coding=latin1 -concrete GreetingsCat of Greetings = SentencesCat [Greeting,mkGreeting] ** open Prelude in { - -lin - GBye = mkGreeting "adu" ; - 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 conixer-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 "grcies" ; - GTheCheck = mkGreeting "el compte" ; - -} diff --git a/examples/phrasebook/GreetingsChi.gf b/examples/phrasebook/GreetingsChi.gf deleted file mode 100644 index 40d532e0d..000000000 --- a/examples/phrasebook/GreetingsChi.gf +++ /dev/null @@ -1,33 +0,0 @@ -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 "现在是什么时候" ; - -} diff --git a/examples/phrasebook/GreetingsDan.gf b/examples/phrasebook/GreetingsDan.gf deleted file mode 100644 index 3aa8e8be9..000000000 --- a/examples/phrasebook/GreetingsDan.gf +++ /dev/null @@ -1,29 +0,0 @@ ---# -coding=latin1 -concrete GreetingsDan of Greetings = SentencesDan [Greeting,mkGreeting] ** open Prelude in { - -lin - GBye = mkGreeting "hej hej" ; -- not google translate - GCheers = mkGreeting "skl" ; - 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 "hjlp" ; - GHowAreYou = mkGreeting "hvordan har du det" ; - GLookOut = mkGreeting "pas p" ; - GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggeligt at mde dig" ; -- more common than rart (google translate) - GPleaseGive = mkGreeting "vr s sd" ; -- 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 fdselsdagen" ; - GGoodLuck = mkGreeting "held og lykke" ; - -} diff --git a/examples/phrasebook/GreetingsDut.gf b/examples/phrasebook/GreetingsDut.gf deleted file mode 100644 index bb7e2745b..000000000 --- a/examples/phrasebook/GreetingsDut.gf +++ /dev/null @@ -1,30 +0,0 @@ -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" ; -} diff --git a/examples/phrasebook/GreetingsEng.gf b/examples/phrasebook/GreetingsEng.gf deleted file mode 100644 index 1bfb75287..000000000 --- a/examples/phrasebook/GreetingsEng.gf +++ /dev/null @@ -1,27 +0,0 @@ -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" ; -} diff --git a/examples/phrasebook/GreetingsEst.gf b/examples/phrasebook/GreetingsEst.gf deleted file mode 100644 index fc29f2c3f..000000000 --- a/examples/phrasebook/GreetingsEst.gf +++ /dev/null @@ -1,26 +0,0 @@ -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" ; -} diff --git a/examples/phrasebook/GreetingsFin.gf b/examples/phrasebook/GreetingsFin.gf deleted file mode 100644 index 4fc71c1aa..000000000 --- a/examples/phrasebook/GreetingsFin.gf +++ /dev/null @@ -1,30 +0,0 @@ ---# -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 piv" ; - GGoodEvening = mkGreeting "hyv iltaa" ; - GGoodMorning = mkGreeting "hyv huomenta" ; - GGoodNight = mkGreeting "hyv yt" ; - GGoodbye = mkGreeting "nkemiin" ; - 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 "nhdn pian" ; - GSorry, GSorryPol = mkGreeting "anteeksi" ; - GThanks = mkGreeting "kiitos" ; - GTheCheck = mkGreeting "lasku" ; - GCongratulations = mkGreeting "onnittelut"; - GHappyBirthday = mkGreeting "hyv syntympiv" ; - GGoodLuck = mkGreeting "onnea" ; - GWhatTime = mkGreeting "paljonko kello on" | mkGreeting "mit kello on" ; - -} diff --git a/examples/phrasebook/GreetingsFre.gf b/examples/phrasebook/GreetingsFre.gf deleted file mode 100644 index 71faf5c66..000000000 --- a/examples/phrasebook/GreetingsFre.gf +++ /dev/null @@ -1,31 +0,0 @@ ---# -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 plat" ; - GPleaseGivePol = mkGreeting "s'il vous plat" ; - GSeeYouSoon = mkGreeting " bientt" ; - GSorry, GSorryPol = mkGreeting "pardon" ; - GThanks = mkGreeting "merci" ; - GTheCheck = mkGreeting "l'addition" ; - GCongratulations = mkGreeting "flicitations"; - GHappyBirthday = mkGreeting "joyeux anniversaire" ; - GGoodLuck = mkGreeting "bonne chance" ; - GWhatTime = mkGreeting "quelle heure est-il" ; - -} diff --git a/examples/phrasebook/GreetingsGer.gf b/examples/phrasebook/GreetingsGer.gf deleted file mode 100644 index f027d70ac..000000000 --- a/examples/phrasebook/GreetingsGer.gf +++ /dev/null @@ -1,31 +0,0 @@ ---# -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 Glckwunsch"; - GHappyBirthday = mkGreeting "alles Gute zum Geburtstag" ; - GGoodLuck = mkGreeting "viel Glck" ; - GWhatTime = mkGreeting "wieviel Uhr ist es" | mkGreeting "wie spt ist es" ; - -} - diff --git a/examples/phrasebook/GreetingsHin.gf b/examples/phrasebook/GreetingsHin.gf deleted file mode 100644 index 06b641b33..000000000 --- a/examples/phrasebook/GreetingsHin.gf +++ /dev/null @@ -1,31 +0,0 @@ -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 "कितने बजे हैं" ; - -} diff --git a/examples/phrasebook/GreetingsIta.gf b/examples/phrasebook/GreetingsIta.gf deleted file mode 100644 index 968c523eb..000000000 --- a/examples/phrasebook/GreetingsIta.gf +++ /dev/null @@ -1,31 +0,0 @@ -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" ; - -} diff --git a/examples/phrasebook/GreetingsJpn.gf b/examples/phrasebook/GreetingsJpn.gf deleted file mode 100644 index ca68697c5..000000000 --- a/examples/phrasebook/GreetingsJpn.gf +++ /dev/null @@ -1,30 +0,0 @@ -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 "今何時ですか" ; -} diff --git a/examples/phrasebook/GreetingsLav.gf b/examples/phrasebook/GreetingsLav.gf deleted file mode 100644 index fa80f6730..000000000 --- a/examples/phrasebook/GreetingsLav.gf +++ /dev/null @@ -1,33 +0,0 @@ ---# -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" ; - -} diff --git a/examples/phrasebook/GreetingsNor.gf b/examples/phrasebook/GreetingsNor.gf deleted file mode 100644 index 38c215c60..000000000 --- a/examples/phrasebook/GreetingsNor.gf +++ /dev/null @@ -1,28 +0,0 @@ ---# -coding=latin1 -concrete GreetingsNor of Greetings = SentencesNor [Greeting,mkGreeting] ** open Prelude in { - -lin - GBye = mkGreeting "ha det" ; - GCheers = mkGreeting "skl" ; -- 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 gr det" ; - GLookOut = mkGreeting "se opp" ; -- google translate ! - GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggelig treffe deg" ; - GPleaseGive, GPleaseGivePol = mkGreeting "vr 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" ; - -} diff --git a/examples/phrasebook/GreetingsPes.gf b/examples/phrasebook/GreetingsPes.gf deleted file mode 100644 index ba968c9f8..000000000 --- a/examples/phrasebook/GreetingsPes.gf +++ /dev/null @@ -1,29 +0,0 @@ -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 ["موفق باشید"] ; -} diff --git a/examples/phrasebook/GreetingsPol.gf b/examples/phrasebook/GreetingsPol.gf deleted file mode 100644 index 9c561c500..000000000 --- a/examples/phrasebook/GreetingsPol.gf +++ /dev/null @@ -1,27 +0,0 @@ -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" ; -} diff --git a/examples/phrasebook/GreetingsRon.gf b/examples/phrasebook/GreetingsRon.gf deleted file mode 100644 index 380e8dbc5..000000000 --- a/examples/phrasebook/GreetingsRon.gf +++ /dev/null @@ -1,31 +0,0 @@ -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ă" ; - -} diff --git a/examples/phrasebook/GreetingsRus.gf b/examples/phrasebook/GreetingsRus.gf deleted file mode 100644 index cb6f9a37a..000000000 --- a/examples/phrasebook/GreetingsRus.gf +++ /dev/null @@ -1,29 +0,0 @@ -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 "желаю удачи" ; - -} diff --git a/examples/phrasebook/GreetingsSnd.gf b/examples/phrasebook/GreetingsSnd.gf deleted file mode 100644 index bc579d189..000000000 --- a/examples/phrasebook/GreetingsSnd.gf +++ /dev/null @@ -1,29 +0,0 @@ -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 "قسمت ڀلي هجي" ; -} diff --git a/examples/phrasebook/GreetingsSpa.gf b/examples/phrasebook/GreetingsSpa.gf deleted file mode 100644 index d0b39abd9..000000000 --- a/examples/phrasebook/GreetingsSpa.gf +++ /dev/null @@ -1,31 +0,0 @@ -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é ora es" ; - -} diff --git a/examples/phrasebook/GreetingsSwe.gf b/examples/phrasebook/GreetingsSwe.gf deleted file mode 100644 index 63d576884..000000000 --- a/examples/phrasebook/GreetingsSwe.gf +++ /dev/null @@ -1,29 +0,0 @@ ---# -coding=latin1 -concrete GreetingsSwe of Greetings = SentencesSwe [Greeting,mkGreeting] ** open Prelude in { - -lin - GBye = mkGreeting "hej d" ; - GCheers = mkGreeting "skl" ; - GDamn = mkGreeting "fan" ; - GExcuse, GExcusePol = mkGreeting "urskta" ; - 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 "hjlp" ; - GHowAreYou = mkGreeting "hur str det till" ; - GLookOut = mkGreeting "se upp" ; - GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "trevligt att trffas" ; - GPleaseGive, GPleaseGivePol = mkGreeting "var s god" ; - GSeeYouSoon = mkGreeting "vi ses snart" ; - GSorry, GSorryPol = mkGreeting "frlt" ; - GThanks = mkGreeting "tack" ; - GTheCheck = mkGreeting "notan" ; - GCongratulations = mkGreeting "grattis"; - GHappyBirthday = mkGreeting "grattis p fdelsedagen" ; - GGoodLuck = mkGreeting "lycka till" ; - GWhatTime = mkGreeting "vad r klockan" | mkGreeting "hur mycket r klockan" ; - -} diff --git a/examples/phrasebook/GreetingsTha.gf b/examples/phrasebook/GreetingsTha.gf deleted file mode 100644 index 3463306d9..000000000 --- a/examples/phrasebook/GreetingsTha.gf +++ /dev/null @@ -1,35 +0,0 @@ -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 "โชค" "ดี" "นะ") ; -} - - diff --git a/examples/phrasebook/GreetingsUrd.gf b/examples/phrasebook/GreetingsUrd.gf deleted file mode 100644 index 1d004e2ca..000000000 --- a/examples/phrasebook/GreetingsUrd.gf +++ /dev/null @@ -1,29 +0,0 @@ -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 "گڈ لك" ; -} diff --git a/examples/phrasebook/Implementation.html b/examples/phrasebook/Implementation.html deleted file mode 100644 index ff2275979..000000000 --- a/examples/phrasebook/Implementation.html +++ /dev/null @@ -1,500 +0,0 @@ - - - Produced by -gfdoc - a rudimentary GF document generator. -(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL. - -

-

Implementation of MOLTO Phrasebook

- -

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 ;
-      Sentence = S ;
-      Question = QS ;
-      Proposition = Cl ;
-      Item = NP ;
-      Kind = CN ;
-      MassKind = CN ;
-      Quality = AP ;
-      Property = A ;
-      Object = NP ;
-      PrimObject = NP ;
-      Place = NPPlace ; -- {name : NP ; at : Adv ; to : 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 : Adv ; habitual : Adv} ;
-      Date = Adv ;
-      Name = NP ;
-      Number = Card ;
-      ByTransport = Adv ;
-      Transport = {name : CN ; by : Adv} ;
-      Superlative = Det ;
-    lin
-      PSentence s = mkText s | lin Text (mkUtt s) ;  -- optional '.'
-      PQuestion s = mkText s | lin Text (mkUtt s) ;  -- optional '?'
-  
-      PObject x = mkPhrase (mkUtt x) ;
-      PKind x = mkPhrase (mkUtt x) ;
-      PMassKind x = mkPhrase (mkUtt x) ;
-      PQuality x = mkPhrase (mkUtt x) ;
-      PNumber x = mkPhrase (mkUtt x) ;
-      PPlace x = mkPhrase (mkUtt x.name) ;
-      PPlaceKind x = mkPhrase (mkUtt x.name) ;
-      PCurrency x = mkPhrase (mkUtt x) ;
-      PPrice x = mkPhrase (mkUtt x) ;
-      PLanguage x = mkPhrase (mkUtt x) ;
-      PCountry x = mkPhrase (mkUtt x) ;
-      PCitizenship x = mkPhrase (mkUtt (mkAP x)) ;
-      PDay d = mkPhrase (mkUtt d.name) ;
-      PTransport t = mkPhrase (mkUtt t.name) ;
-      PByTransport t = mkPhrase (mkUtt t) ;
-  
-      PYes = mkPhrase yes_Utt ;
-      PNo = mkPhrase no_Utt ;
-      PYesToNo = mkPhrase yes_Utt ;
-  
-      Is = mkCl ;
-  
-      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 ;
-      ObjMass k = mkNP k ;
-      ObjAndObj = mkNP and_Conj ;
-      OneObj o = o ; 
-  
-      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 ;
-  
-      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 = if_then_else Det kind.isPl thePl_Det theSg_Det 
-                       in placeNP dd kind ;
-      APlace kind = let dd = if_then_else Det kind.isPl thePl_Det theSg_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
-
- -
-      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 ;
-  
-  oper 
-
- -These operations are used internally in Sentences. -
-    mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
-  
-    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 : Adv ; habitual : Adv} ;
-  
-    mkNPDay : NP -> Adv -> Adv -> NPDay = \d,p,h ->
-        {name = d ; 
-         point = p ;
-         habitual = h
-        } ;
-  
-    NPPlace : Type = {name : NP ; at : Adv ; to : 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 = mkAdv kind.at name ;
-        to = 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 ; -
-  }
-
- -

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") ;
-      SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
-      Zloty = mkCN (mkN "zloty" "zloty") ;
-
- -Nationalities -
-      Belgian = mkA "Belgian" ;
-      Belgium = mkNP (mkPN "Belgium") ;
-      Bulgarian = mkNat "Bulgarian" "Bulgaria" ;
-      Catalan = mkNPNationality (mkNP (mkPN "Catalan")) (mkNP (mkPN "Catalonia")) (mkA "Catalonian") ;
-      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" ;
-      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 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 (mkNP y.name (SyntaxEng.mkAdv from_Prep x.name))) ;
-      HowFarFromBy x y t = 
-        mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxEng.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))) ;
-
- -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") ;
-  
-  }
-
- - - diff --git a/examples/phrasebook/Makefile b/examples/phrasebook/Makefile deleted file mode 100644 index 01b14c748..000000000 --- a/examples/phrasebook/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -compile = runghc Compile - -forApp: - $(compile) -opt Bul Cat Chi Dut Eng Est Fin Fre Ger Hin Ita Jpn Rus Spa Swe Tha Urd - make gfos - -.PHONY: gfos - -Chi: - $(compile) Chi - -all: demo missing gfos - -gfos: - mkdir -p gfos && cp -p *.gfo gfos - -thaidroid: #thaiscript - cp -p Phrasebook.pgf FullPhrasebook.pgf - $(compile) -opt Eng Swe Tha Thb DisambPhrasebookEng - $(compile) -link Eng Fin Swe Tha Thb DisambPhrasebookEng - mv Phrasebook.pgf Thaidroid.pgf - mv FullPhrasebook.pgf Phrasebook.pgf - -thaiscript: - runghc ../../lib/src/thai/ThaiScript.hs - -demo: compdemo fin linkdemo - -compdemo: - $(compile) -opt Bul Cat Chi Dan Dut Eng Fre Ger Hin Ita Jpn Lav Nor Pes Pol Ron Rus Spa Swe Tha Urd DisambPhrasebookEng - -linkdemo: - $(compile) -link Eng Bul Cat Chi Dan Dut Fin Fre Ger Hin Ita Jpn Lav Nor Pes Pol Ron Rus Spa Swe Tha Urd DisambPhrasebookEng - -linkdemothb: - $(compile) -link Eng Bul Cat Chi Dan Dut Fin Fre Ger Ita Jpn Nor Pol Ron Rus Spa Swe Tha Thb Urd DisambPhrasebookEng - -#separate, because slow... -fin: - $(compile) -opt Fin - -missing: - echo "pg -missing | wf -file=missing.txt" | gf -run Phrasebook.pgf - -doc: - cat Sentences.gf Words.gf >Ontology.gf - gfdoc Ontology.gf - rm -f Ontology.gf - cat SentencesI.gf WordsEng.gf >Implementation.gf - gfdoc Implementation.gf - txt2tags -thtml --toc doc-phrasebook.txt - txt2tags -thtml help-phrasebook.txt - rm -f Ontology.gf Implementation.gf - -clean: - rm *.gfo *.pgf - -upload:: Phrasebook.pgf - rsync -avb Phrasebook.pgf www.grammaticalframework.org:/usr/local/www/GF-demos/www/grammars diff --git a/examples/phrasebook/Makefile2 b/examples/phrasebook/Makefile2 deleted file mode 100644 index 8d0eae4a9..000000000 --- a/examples/phrasebook/Makefile2 +++ /dev/null @@ -1,38 +0,0 @@ - -# Use 'make -j' to compile everything in parallel -# Use e.g. 'make -j4' to compile at most 4 things in parallel - -S=-s -GFOPT=gf -make $S -optimize-pgf - -all: Phrasebook.pgf - -Phrasebook.pgf: PhrasebookFre.pgf PhrasebookGer.pgf PhrasebookFin.pgf PhrasebookEng.pgf PhrasebookBul.pgf PhrasebookCat.pgf PhrasebookChi.pgf PhrasebookDan.pgf PhrasebookDut.pgf PhrasebookHin.pgf PhrasebookIta.pgf PhrasebookJpn.pgf PhrasebookLav.pgf PhrasebookNor.pgf PhrasebookPes.pgf PhrasebookPol.pgf PhrasebookRon.pgf PhrasebookRus.pgf PhrasebookSnd.pgf PhrasebookSpa.pgf PhrasebookSwe.pgf PhrasebookTha.pgf PhrasebookUrd.pgf DisambPhrasebookEng.pgf - gf -make $^ - -PhrasebookEng.pgf:: ; $(GFOPT) -name=PhrasebookEng PhrasebookEng.gf -PhrasebookBul.pgf:: ; $(GFOPT) -name=PhrasebookBul PhrasebookBul.gf -PhrasebookCat.pgf:: ; $(GFOPT) -name=PhrasebookCat PhrasebookCat.gf -PhrasebookChi.pgf:: ; $(GFOPT) -name=PhrasebookChi PhrasebookChi.gf -PhrasebookDan.pgf:: ; $(GFOPT) -name=PhrasebookDan PhrasebookDan.gf -PhrasebookDut.pgf:: ; $(GFOPT) -name=PhrasebookDut PhrasebookDut.gf -PhrasebookFin.pgf:: ; $(GFOPT) -name=PhrasebookFin PhrasebookFin.gf -PhrasebookFre.pgf:: ; $(GFOPT) -name=PhrasebookFre PhrasebookFre.gf -PhrasebookGer.pgf:: ; $(GFOPT) -name=PhrasebookGer PhrasebookGer.gf -PhrasebookHin.pgf:: ; $(GFOPT) -name=PhrasebookHin PhrasebookHin.gf -PhrasebookIta.pgf:: ; $(GFOPT) -name=PhrasebookIta PhrasebookIta.gf -PhrasebookJpn.pgf:: ; $(GFOPT) -name=PhrasebookJpn PhrasebookJpn.gf -PhrasebookLav.pgf:: ; $(GFOPT) -name=PhrasebookLav PhrasebookLav.gf -PhrasebookNor.pgf:: ; $(GFOPT) -name=PhrasebookNor PhrasebookNor.gf -PhrasebookPes.pgf:: ; $(GFOPT) -name=PhrasebookPes PhrasebookPes.gf -PhrasebookPol.pgf:: ; $(GFOPT) -name=PhrasebookPol PhrasebookPol.gf -PhrasebookRon.pgf:: ; $(GFOPT) -name=PhrasebookRon PhrasebookRon.gf -PhrasebookRus.pgf:: ; $(GFOPT) -name=PhrasebookRus PhrasebookRus.gf -PhrasebookSnd.pgf:: ; $(GFOPT) -name=PhrasebookSnd PhrasebookSnd.gf -PhrasebookSpa.pgf:: ; $(GFOPT) -name=PhrasebookSpa PhrasebookSpa.gf -PhrasebookSwe.pgf:: ; $(GFOPT) -name=PhrasebookSwe PhrasebookSwe.gf -PhrasebookTha.pgf:: ; $(GFOPT) -name=PhrasebookTha PhrasebookTha.gf -PhrasebookUrd.pgf:: ; $(GFOPT) -name=PhrasebookUrd PhrasebookUrd.gf - -DisambPhrasebookEng.pgf:: - $(GFOPT) -name=DisambPhrasebookEng DisambPhrasebookEng.gf diff --git a/examples/phrasebook/Ontology.html b/examples/phrasebook/Ontology.html deleted file mode 100644 index 48059049a..000000000 --- a/examples/phrasebook/Ontology.html +++ /dev/null @@ -1,372 +0,0 @@ - - - Produced by -gfdoc - a rudimentary GF document generator. -(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL. - -

-

The Ontology of the Phrasebook

- -

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?"
-      Sentence ;    -- declarative sentence                      e.g. "I am in the bar"
-      Question ;    -- question, either yes/no or wh             e.g. "where are you"
-      -- Greeting ; -- idiomatic phrase, not inflected,          e.g. "hello"
-      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"
-      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"
-
- -Many of the categories are accessible as Phrases, i.e. as translation units. -
-    fun
-      PSentence    : Sentence -> Phrase ;
-      PQuestion    : Question -> Phrase ;
-  
-      PObject      : Object      -> Phrase ;
-      PKind        : Kind        -> Phrase ;
-      PMassKind    : MassKind    -> Phrase ;
-      PQuality     : Quality     -> Phrase ;
-      PNumber      : Number      -> Phrase ;
-      PPlace       : Place       -> Phrase ;
-      PPlaceKind   : PlaceKind   -> Phrase ;
-      PCurrency    : Currency    -> Phrase ;
-      PPrice       : Price       -> Phrase ;
-      PLanguage    : Language    -> Phrase ;
-      PCitizenship : Citizenship -> Phrase ;
-      PCountry     : Country     -> Phrase ;
-      PDay         : Day         -> Phrase ;
-      PByTransport : ByTransport -> Phrase ;
-      PTransport   : Transport   -> Phrase ;
-  
-      PYes, PNo, PYesToNo : Phrase ;  -- yes, no, si/doch (pos. answer to neg. question)
-
- -This is the way to build propositions about inanimate items. -
-      Is       : Item -> Quality -> Proposition ;  -- this pizza 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
-      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
-
- -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
-  
-      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"
-
- -
-      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
-  
-  }
-
- -

Words and idiomatic phrases of the Phrasebook

-
-  abstract Words = Sentences ** {
-  
-    fun
-
- -kinds of items (so far mostly food stuff) -
-      Apple : Kind ;
-      Beer : MassKind ;
-      Bread : MassKind ; 
-      Cheese : MassKind ;
-      Chicken : MassKind ; 
-      Coffee : MassKind ; 
-      Fish : MassKind ; 
-      Meat : MassKind ;
-      Milk : MassKind ; 
-      Pizza : Kind ; 
-      Salt : MassKind ; 
-      Tea : MassKind ; 
-      Water : MassKind ; 
-      Wine : MassKind ;
-
- -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
-      SwedishCrown : Currency ;
-      Zloty : Currency ; -- Poland
-
- -nationalities, countries, languages, citizenships -
-      Belgian : Citizenship ;
-      Belgium : Country ;
-      Bulgarian : Nationality ;
-      Catalan : Nationality ;
-      Danish : Nationality ;
-      Dutch : Nationality ;
-      English : Nationality ;
-      Finnish : Nationality ;
-      Flemish : Language ;
-      French : Nationality ;
-      German : Nationality ;
-      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 -> Phrase ;     -- see you in the bar on Monday
-      PSeeYouPlace     : Place         -> Phrase ;     -- see you in the bar
-      PSeeYouDate      :          Date -> Phrase ;     -- 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
-  
-  }
-
- - - diff --git a/examples/phrasebook/Phrasebook.gf b/examples/phrasebook/Phrasebook.gf deleted file mode 100644 index 9ebc13106..000000000 --- a/examples/phrasebook/Phrasebook.gf +++ /dev/null @@ -1,8 +0,0 @@ -abstract Phrasebook = - Greetings, - Words - ** { - -flags startcat = Phrase ; - -} diff --git a/examples/phrasebook/PhrasebookBul.gf b/examples/phrasebook/PhrasebookBul.gf deleted file mode 100644 index bbc092963..000000000 --- a/examples/phrasebook/PhrasebookBul.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present - -concrete PhrasebookBul of Phrasebook = - GreetingsBul, - WordsBul ** open - SyntaxBul, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookCat.gf b/examples/phrasebook/PhrasebookCat.gf deleted file mode 100644 index 5021079d8..000000000 --- a/examples/phrasebook/PhrasebookCat.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present - -concrete PhrasebookCat of Phrasebook = - GreetingsCat, - WordsCat - ** open - SyntaxCat, - Prelude in { - -} - diff --git a/examples/phrasebook/PhrasebookChi.gf b/examples/phrasebook/PhrasebookChi.gf deleted file mode 100644 index 35c890d98..000000000 --- a/examples/phrasebook/PhrasebookChi.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:alltenses - -concrete PhrasebookChi of Phrasebook = - GreetingsChi, - WordsChi - ** open - SyntaxChi, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookDan.gf b/examples/phrasebook/PhrasebookDan.gf deleted file mode 100644 index d362d1b39..000000000 --- a/examples/phrasebook/PhrasebookDan.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present:alltenses - -concrete PhrasebookDan of Phrasebook = - GreetingsDan, - WordsDan ** open - SyntaxDan, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookDut.gf b/examples/phrasebook/PhrasebookDut.gf deleted file mode 100644 index c8b4fd969..000000000 --- a/examples/phrasebook/PhrasebookDut.gf +++ /dev/null @@ -1,10 +0,0 @@ ---# -path=.:present - -concrete PhrasebookDut of Phrasebook = - GreetingsDut, - WordsDut ** open - SyntaxDut, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookEng.gf b/examples/phrasebook/PhrasebookEng.gf deleted file mode 100644 index ab4f05d0d..000000000 --- a/examples/phrasebook/PhrasebookEng.gf +++ /dev/null @@ -1,12 +0,0 @@ ---# -path=.:present - -concrete PhrasebookEng of Phrasebook = - GreetingsEng, - WordsEng ** open - SyntaxEng, - Prelude in { - -flags - language = en_US ; - -} diff --git a/examples/phrasebook/PhrasebookEst.gf b/examples/phrasebook/PhrasebookEst.gf deleted file mode 100644 index 4172ff99a..000000000 --- a/examples/phrasebook/PhrasebookEst.gf +++ /dev/null @@ -1,7 +0,0 @@ -concrete PhrasebookEst of Phrasebook = - GreetingsEst, - WordsEst ** open - SyntaxEst, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookFin.gf b/examples/phrasebook/PhrasebookFin.gf deleted file mode 100644 index e0728ab10..000000000 --- a/examples/phrasebook/PhrasebookFin.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present - -concrete PhrasebookFin of Phrasebook = - GreetingsFin, - WordsFin ** open - SyntaxFin, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookFre.gf b/examples/phrasebook/PhrasebookFre.gf deleted file mode 100644 index ecbd74c9a..000000000 --- a/examples/phrasebook/PhrasebookFre.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present - -concrete PhrasebookFre of Phrasebook = - GreetingsFre, - WordsFre - ** open - SyntaxFre, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookGer.gf b/examples/phrasebook/PhrasebookGer.gf deleted file mode 100644 index 69a61187c..000000000 --- a/examples/phrasebook/PhrasebookGer.gf +++ /dev/null @@ -1,10 +0,0 @@ ---# -path=.:present - -concrete PhrasebookGer of Phrasebook = - GreetingsGer, - WordsGer ** open - SyntaxGer, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookHin.gf b/examples/phrasebook/PhrasebookHin.gf deleted file mode 100644 index 7cf2fa58a..000000000 --- a/examples/phrasebook/PhrasebookHin.gf +++ /dev/null @@ -1,10 +0,0 @@ ---# -path=.:alltenses - - -concrete PhrasebookHin of Phrasebook = - GreetingsHin, - WordsHin ** open - SyntaxHin, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookIta.gf b/examples/phrasebook/PhrasebookIta.gf deleted file mode 100644 index 00d3f5488..000000000 --- a/examples/phrasebook/PhrasebookIta.gf +++ /dev/null @@ -1,13 +0,0 @@ ---# -path=.:present - -concrete PhrasebookIta of Phrasebook = - GreetingsIta, - WordsIta - ** open - SyntaxIta, - Prelude in { - -flags language = it_IT ; - -} - diff --git a/examples/phrasebook/PhrasebookJpn.gf b/examples/phrasebook/PhrasebookJpn.gf deleted file mode 100644 index b79d64379..000000000 --- a/examples/phrasebook/PhrasebookJpn.gf +++ /dev/null @@ -1,7 +0,0 @@ -concrete PhrasebookJpn of Phrasebook = - GreetingsJpn, - WordsJpn ** open - SyntaxJpn, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookLav.gf b/examples/phrasebook/PhrasebookLav.gf deleted file mode 100644 index 93170159a..000000000 --- a/examples/phrasebook/PhrasebookLav.gf +++ /dev/null @@ -1,7 +0,0 @@ ---# -path=.:present - -concrete PhrasebookLav of Phrasebook = GreetingsLav, WordsLav ** -open - SyntaxLav, - Prelude -in {} ; diff --git a/examples/phrasebook/PhrasebookNor.gf b/examples/phrasebook/PhrasebookNor.gf deleted file mode 100644 index eb4f76d8e..000000000 --- a/examples/phrasebook/PhrasebookNor.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present - -concrete PhrasebookNor of Phrasebook = - GreetingsNor, - WordsNor ** open - SyntaxNor, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookPes.gf b/examples/phrasebook/PhrasebookPes.gf deleted file mode 100644 index 16c21a94c..000000000 --- a/examples/phrasebook/PhrasebookPes.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:alltenses - -concrete PhrasebookPes of Phrasebook = - GreetingsPes, - WordsPes ** open - SyntaxPes, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookPol.gf b/examples/phrasebook/PhrasebookPol.gf deleted file mode 100644 index d933d6b55..000000000 --- a/examples/phrasebook/PhrasebookPol.gf +++ /dev/null @@ -1,13 +0,0 @@ ---# -path=.:present - -concrete PhrasebookPol of Phrasebook = - GreetingsPol, - WordsPol ** open - SyntaxPol, - Prelude in { - -flags - language = pl_PL ; optimize =values ; coding =utf8 ; - - -} diff --git a/examples/phrasebook/PhrasebookRon.gf b/examples/phrasebook/PhrasebookRon.gf deleted file mode 100644 index 810b09b0a..000000000 --- a/examples/phrasebook/PhrasebookRon.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present - -concrete PhrasebookRon of Phrasebook = - GreetingsRon, - WordsRon - ** open - SyntaxRon, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookRus.gf b/examples/phrasebook/PhrasebookRus.gf deleted file mode 100644 index 7b2683240..000000000 --- a/examples/phrasebook/PhrasebookRus.gf +++ /dev/null @@ -1,12 +0,0 @@ ---# -path=.:present - -concrete PhrasebookRus of Phrasebook = - GreetingsRus, - WordsRus ** open - SyntaxRus, - Prelude in { - - -- lin - -- PGreeting g = lin Text g ; - -} diff --git a/examples/phrasebook/PhrasebookSnd.gf b/examples/phrasebook/PhrasebookSnd.gf deleted file mode 100644 index 7f15d7ecf..000000000 --- a/examples/phrasebook/PhrasebookSnd.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present - -concrete PhrasebookSnd of Phrasebook = - GreetingsSnd, - WordsSnd ** open - SyntaxSnd, - Prelude in { - -} diff --git a/examples/phrasebook/PhrasebookSpa.gf b/examples/phrasebook/PhrasebookSpa.gf deleted file mode 100644 index 75b7ae8bf..000000000 --- a/examples/phrasebook/PhrasebookSpa.gf +++ /dev/null @@ -1,12 +0,0 @@ ---# -path=.:present - -concrete PhrasebookSpa of Phrasebook = - GreetingsSpa, - WordsSpa - ** open - SyntaxSpa, - Prelude in { - - -} - diff --git a/examples/phrasebook/PhrasebookSwe.gf b/examples/phrasebook/PhrasebookSwe.gf deleted file mode 100644 index 6b7c99194..000000000 --- a/examples/phrasebook/PhrasebookSwe.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present - -concrete PhrasebookSwe of Phrasebook = - GreetingsSwe, - WordsSwe ** open - SyntaxSwe, - Prelude in { -flags - language = sv_SE ; - -} diff --git a/examples/phrasebook/PhrasebookTha.gf b/examples/phrasebook/PhrasebookTha.gf deleted file mode 100644 index 956599009..000000000 --- a/examples/phrasebook/PhrasebookTha.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:alltenses - -concrete PhrasebookTha of Phrasebook = - GreetingsTha, - WordsTha - ** open --- SyntaxTha, - Prelude in { - - -} diff --git a/examples/phrasebook/PhrasebookUrd.gf b/examples/phrasebook/PhrasebookUrd.gf deleted file mode 100644 index e24ff4a01..000000000 --- a/examples/phrasebook/PhrasebookUrd.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present - -concrete PhrasebookUrd of Phrasebook = - GreetingsUrd, - WordsUrd ** open - SyntaxUrd, - Prelude in { - -} diff --git a/examples/phrasebook/Sentences.gf b/examples/phrasebook/Sentences.gf deleted file mode 100644 index 6798c2127..000000000 --- a/examples/phrasebook/Sentences.gf +++ /dev/null @@ -1,222 +0,0 @@ ---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) - -} - diff --git a/examples/phrasebook/SentencesBul.gf b/examples/phrasebook/SentencesBul.gf deleted file mode 100644 index 113af0900..000000000 --- a/examples/phrasebook/SentencesBul.gf +++ /dev/null @@ -1,54 +0,0 @@ -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; relPost = False; - 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; relPost = False; - 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)) ; - -} diff --git a/examples/phrasebook/SentencesCat.gf b/examples/phrasebook/SentencesCat.gf deleted file mode 100644 index 752c6b9c7..000000000 --- a/examples/phrasebook/SentencesCat.gf +++ /dev/null @@ -1,93 +0,0 @@ ---# -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 (conixer_27 "conixer")) - 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 ; - }; -} diff --git a/examples/phrasebook/SentencesChi.gf b/examples/phrasebook/SentencesChi.gf deleted file mode 100644 index 7ca72eb56..000000000 --- a/examples/phrasebook/SentencesChi.gf +++ /dev/null @@ -1,62 +0,0 @@ -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 "请上" ; - - -} diff --git a/examples/phrasebook/SentencesDan.gf b/examples/phrasebook/SentencesDan.gf deleted file mode 100644 index 8b8804e09..000000000 --- a/examples/phrasebook/SentencesDan.gf +++ /dev/null @@ -1,8 +0,0 @@ -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") ; - -} diff --git a/examples/phrasebook/SentencesDut.gf b/examples/phrasebook/SentencesDut.gf deleted file mode 100644 index 537bb8ae3..000000000 --- a/examples/phrasebook/SentencesDut.gf +++ /dev/null @@ -1,53 +0,0 @@ -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)) ; - -} - diff --git a/examples/phrasebook/SentencesEng.gf b/examples/phrasebook/SentencesEng.gf deleted file mode 100644 index caaf9daca..000000000 --- a/examples/phrasebook/SentencesEng.gf +++ /dev/null @@ -1,4 +0,0 @@ -concrete SentencesEng of Sentences = NumeralEng ** SentencesI with - (Syntax = SyntaxEng), - (Symbolic = SymbolicEng), - (Lexicon = LexiconEng) ; diff --git a/examples/phrasebook/SentencesEst.gf b/examples/phrasebook/SentencesEst.gf deleted file mode 100644 index 667880f33..000000000 --- a/examples/phrasebook/SentencesEst.gf +++ /dev/null @@ -1,63 +0,0 @@ -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 ; -} diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf deleted file mode 100644 index ae9dff1eb..000000000 --- a/examples/phrasebook/SentencesFin.gf +++ /dev/null @@ -1,56 +0,0 @@ ---# -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)) ; -- tm 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"))) ; - - - } diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf deleted file mode 100644 index f600a5d29..000000000 --- a/examples/phrasebook/SentencesFre.gf +++ /dev/null @@ -1,47 +0,0 @@ -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 ; - -} diff --git a/examples/phrasebook/SentencesGer.gf b/examples/phrasebook/SentencesGer.gf deleted file mode 100644 index cc0922d5f..000000000 --- a/examples/phrasebook/SentencesGer.gf +++ /dev/null @@ -1,50 +0,0 @@ -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 ; -} diff --git a/examples/phrasebook/SentencesHin.gf b/examples/phrasebook/SentencesHin.gf deleted file mode 100644 index da2719795..000000000 --- a/examples/phrasebook/SentencesHin.gf +++ /dev/null @@ -1,42 +0,0 @@ -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 = ["आप के"] ; - } ; diff --git a/examples/phrasebook/SentencesI.gf b/examples/phrasebook/SentencesI.gf deleted file mode 100644 index 913aa11ad..000000000 --- a/examples/phrasebook/SentencesI.gf +++ /dev/null @@ -1,302 +0,0 @@ ---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 ; - - 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 ; - VEat = mkVP ; - VRead = mkVP ; - VWait = mkVP ; - VWrite = mkVP ; - - 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 ; - -} diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf deleted file mode 100644 index e845c1c54..000000000 --- a/examples/phrasebook/SentencesIta.gf +++ /dev/null @@ -1,78 +0,0 @@ -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} ; - - -} - - diff --git a/examples/phrasebook/SentencesJpn.gf b/examples/phrasebook/SentencesJpn.gf deleted file mode 100644 index 4fdaf5fb5..000000000 --- a/examples/phrasebook/SentencesJpn.gf +++ /dev/null @@ -1,62 +0,0 @@ -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 ; - - 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 - } ; - -} diff --git a/examples/phrasebook/SentencesLav.gf b/examples/phrasebook/SentencesLav.gf deleted file mode 100644 index 33d34b99d..000000000 --- a/examples/phrasebook/SentencesLav.gf +++ /dev/null @@ -1,50 +0,0 @@ -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 - } ; -} diff --git a/examples/phrasebook/SentencesNor.gf b/examples/phrasebook/SentencesNor.gf deleted file mode 100644 index cd8b068c1..000000000 --- a/examples/phrasebook/SentencesNor.gf +++ /dev/null @@ -1,10 +0,0 @@ -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") ; - -} diff --git a/examples/phrasebook/SentencesPes.gf b/examples/phrasebook/SentencesPes.gf deleted file mode 100644 index 32a181473..000000000 --- a/examples/phrasebook/SentencesPes.gf +++ /dev/null @@ -1,8 +0,0 @@ -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 ; - }; - diff --git a/examples/phrasebook/SentencesPol.gf b/examples/phrasebook/SentencesPol.gf deleted file mode 100644 index 00815e6bc..000000000 --- a/examples/phrasebook/SentencesPol.gf +++ /dev/null @@ -1,52 +0,0 @@ -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); -} diff --git a/examples/phrasebook/SentencesRon.gf b/examples/phrasebook/SentencesRon.gf deleted file mode 100644 index 70d3e34d0..000000000 --- a/examples/phrasebook/SentencesRon.gf +++ /dev/null @@ -1,71 +0,0 @@ - -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 of - { => True ; - => False ; - _ => True - }; -} - diff --git a/examples/phrasebook/SentencesRus.gf b/examples/phrasebook/SentencesRus.gf deleted file mode 100644 index cdde941e1..000000000 --- a/examples/phrasebook/SentencesRus.gf +++ /dev/null @@ -1,25 +0,0 @@ -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) ; - -} \ No newline at end of file diff --git a/examples/phrasebook/SentencesSnd.gf b/examples/phrasebook/SentencesSnd.gf deleted file mode 100644 index c8d1c8c88..000000000 --- a/examples/phrasebook/SentencesSnd.gf +++ /dev/null @@ -1,38 +0,0 @@ -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 = ["آپ كے"] ; - -} - } ; diff --git a/examples/phrasebook/SentencesSpa.gf b/examples/phrasebook/SentencesSpa.gf deleted file mode 100644 index 162d5ab78..000000000 --- a/examples/phrasebook/SentencesSpa.gf +++ /dev/null @@ -1,104 +0,0 @@ -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 ; - }; -} diff --git a/examples/phrasebook/SentencesSwe.gf b/examples/phrasebook/SentencesSwe.gf deleted file mode 100644 index 9e3ae577f..000000000 --- a/examples/phrasebook/SentencesSwe.gf +++ /dev/null @@ -1,14 +0,0 @@ -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... - -} diff --git a/examples/phrasebook/SentencesTha.gf b/examples/phrasebook/SentencesTha.gf deleted file mode 100644 index ea5d7fbe9..000000000 --- a/examples/phrasebook/SentencesTha.gf +++ /dev/null @@ -1,26 +0,0 @@ -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 ; -} diff --git a/examples/phrasebook/SentencesUrd.gf b/examples/phrasebook/SentencesUrd.gf deleted file mode 100644 index f94c0cdc9..000000000 --- a/examples/phrasebook/SentencesUrd.gf +++ /dev/null @@ -1,36 +0,0 @@ -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 = ["آپ كے"] ; - } ; diff --git a/examples/phrasebook/Update.hs b/examples/phrasebook/Update.hs deleted file mode 100644 index 3d9232d61..000000000 --- a/examples/phrasebook/Update.hs +++ /dev/null @@ -1,27 +0,0 @@ -import System - -main = do - file:_ <- getArgs - updates <- readFile file >= return . readUpdates - mapM_ (doUpdate file) updates - return () - -type Update = (FilePath, [String]) - -readUpdates :: String -> [Update] -readUpdates s = [] - -doUpdate :: FilePath -> Update -> IO () -doUpdate src (target,ls) = do - s <- readFile target - let beg = dropLastBracket s - let tmp = tmpFile target - writeFile tmp beg - appendFile tmp $ unlines [(line ++ "-- UPDATE FROM " ++ src) | line <- ls] - appendFile tmp "\n}\n" - -tmpFile file = "tmp-update/"++ file - ----- quick and dirty -dropLastBracket = reverse . init . dropWhile (/='}') . reverse - diff --git a/examples/phrasebook/Words.gf b/examples/phrasebook/Words.gf deleted file mode 100644 index 08704990a..000000000 --- a/examples/phrasebook/Words.gf +++ /dev/null @@ -1,254 +0,0 @@ ---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 ; --} - -} diff --git a/examples/phrasebook/WordsBul.gf b/examples/phrasebook/WordsBul.gf deleted file mode 100644 index 527b3604a..000000000 --- a/examples/phrasebook/WordsBul.gf +++ /dev/null @@ -1,305 +0,0 @@ ---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 ; - -} diff --git a/examples/phrasebook/WordsCat.gf b/examples/phrasebook/WordsCat.gf deleted file mode 100644 index 63383edaf..000000000 --- a/examples/phrasebook/WordsCat.gf +++ /dev/null @@ -1,302 +0,0 @@ --- (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 "delicis" ; - Expensive = expensive_A ; - Fresh = mkA "fresc" ; - Good = L.good_A ; - Suspect = mkA "sospits" ; - 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 "esglsia") ; - 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 "farmcia") ; - 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 "dans" "danesa" "danesos" "daneses" "a la danesa") ; - Dollar = mkCN (mkN "dlar") ; - 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 "Blgica") ; - Bulgarian = mkNat3 "blgar" "blgara" "blgars" "blgueres" "Bulgria" ; - Catalan = mkNat5 "catal" "Catalunya" ; - Danish = mkNat4 "dan" "Dinamarca" ; - Dutch = mkNat4 "holand" "Holanda" ; - English = mkNat4 "angl" "Anglaterra" ; - Finnish = mkNat4 "fin" "Finlndia" ; - Flemish = mkNP (mkPN "flamenc") ; - French = mkNat4 "franc" "Frana" ; - German = mkNat3 "alemany" "alemanya" "alemanys" "alemanyes" "Alemania" ; - Italian = mkNat5 "itali" "Itlia" ; - Norwegian = mkNat3 "noruec" "noruega" "noruecs" "noruegues" "Noruega" ; - Polish = mkNat4 "polon" "Polnia" ; - Romanian = mkNat4 "roman" "Romania" ; - Russian = mkNat3 "rus" "russa" "russos" "russes" "Rssia" ; - Spanish = mkNat3 "espanyol" "espanyola" "espanyols" "espanyoles" "Espanya" ; - Swedish = mkNat3 "suec" "sueca" "suecs" "sueques" "Sucia" ; - - --- means of transportation - - Bike = mkTransport (mkN "bici" feminine) ; - Bus = mkTransport (mkN "autobs" "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") - in mkQS (mkQCl how8much_IAdv (mkCl item valer)) ; - ItCost item price = - let valer = mkV (valer_114 "valer") - 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 distncia 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 distncia"**{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" ; -} - - diff --git a/examples/phrasebook/WordsChi.gf b/examples/phrasebook/WordsChi.gf deleted file mode 100644 index 5b9baeb73..000000000 --- a/examples/phrasebook/WordsChi.gf +++ /dev/null @@ -1,334 +0,0 @@ -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 ; -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 ; - - -} diff --git a/examples/phrasebook/WordsDan.gf b/examples/phrasebook/WordsDan.gf deleted file mode 100644 index dbacd8511..000000000 --- a/examples/phrasebook/WordsDan.gf +++ /dev/null @@ -1,260 +0,0 @@ --- (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 "kd" "kdet" "kd" "kdet") ; - 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 "lkker" ; - Expensive = mkA "dyr" ; -- or dyrt - Fresh = mkA "frisk" ; - Good = L.good_A ; - Suspect = mkA "mistnkelig" ; - 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 "rumnsk" "Rumnien" ; - 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 "frge" "frgen" "frger" "frgerne") ; - 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 "vrelse" "vrelset" "vrelser" "vrelserne")) - (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 "frdig") ; - AScared p = mkCl p.name (mkA "bange") ; - ASpeak p lang = mkCl p.name (mkV2 (mkV "tale")) lang ; - AThirsty p = mkCl p.name (mkA "trstig") ; - ATired p = mkCl p.name (mkA "trt") ; - AUnderstand p = mkCl p.name (irregV "forst" "forstod" "forstet") ; - 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 "sn" "snnen" "snner" "snnerne") ; - Daughter = xOf sing (mkN "datter" "datteren" "dtre" "dtrene") ; - 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 "lrdag" ; - Sunday = mkDay "sndag" ; - - 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 "populr") ; - 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 = <>}; -} diff --git a/examples/phrasebook/WordsDut.gf b/examples/phrasebook/WordsDut.gf deleted file mode 100644 index 12cab7861..000000000 --- a/examples/phrasebook/WordsDut.gf +++ /dev/null @@ -1,294 +0,0 @@ --- (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 - - --} - - -} diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf deleted file mode 100644 index ca8a55172..000000000 --- a/examples/phrasebook/WordsEng.gf +++ /dev/null @@ -1,314 +0,0 @@ ---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 ; -} diff --git a/examples/phrasebook/WordsEst.gf b/examples/phrasebook/WordsEst.gf deleted file mode 100644 index 442c79341..000000000 --- a/examples/phrasebook/WordsEst.gf +++ /dev/null @@ -1,372 +0,0 @@ --- (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 ; -} diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf deleted file mode 100644 index e59eeccf6..000000000 --- a/examples/phrasebook/WordsFin.gf +++ /dev/null @@ -1,334 +0,0 @@ --- (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 "epilyttv" ; - 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 "pyskinti" (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 "elin" (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 "venj") (mkPN "Venj") (mkA "venlinen") ; - 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 "pyt")) ; - AHungry p = E.AdvExistNP (SyntaxFin.mkAdv on_Prep p.name) (mkNP (mkN "nlk")) ; - 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 "vsytt")) ; - AUnderstand p = mkCl p.name (mkV "ymmrt") ; - 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 ("nhdn"))) (mkPhrase (mkUtt d)) ; - PSeeYouPlace p = mkText (lin Text (ss ("nhdn"))) (mkPhrase (mkUtt p.at)) ; - PSeeYouPlaceDate p d = - mkText (lin Text (ss ("nhdn"))) - (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 "tytr") ; - 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 "pst")) place.to) trans.by))) ; - -- pseek 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 "lheinen") "lhempi" "lhin") ; - 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 "jtel" "jtelit") ; - 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 "lkri" "lkreit") ; - AProfessor = mkProfession (mkN "professori" "professoreita") ; - ALawyer = mkProfession (mkN "laki" L.man_N) ; - AEngineer = mkProfession (mkN "insinri" "insinrej") ; - 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 ; - -} diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf deleted file mode 100644 index 46d02defa..000000000 --- a/examples/phrasebook/WordsFre.gf +++ /dev/null @@ -1,277 +0,0 @@ --- (c) 2009 Ramona Enache and Aarne Ranta under LGPL ---# -coding=latin1 - -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 "dlicieux" ; - Expensive = mkA "cher" ; - Fresh = mkA "frais" "frache" "frais" "frachement" ; - Good = L.good_A ; - Suspect = mkA "suspect" ; - Warm = L.warm_A ; - --- places - - Airport = mkPlace (mkN "aroport") dative ; - AmusementPark = mkPlace (compN (mkN "parc") ["d'attractions"]) dative ; - Bank = mkPlace (mkN "banque") dative ; - Bar = mkPlace (mkN "bar") dative ; - Cafeteria = mkPlace (mkN "caftria") dative ; - Center = mkPlace (mkN "centre" "centres" ParadigmsFre.masculine) dative ; - Church = mkPlace (mkN "glise") dative ; - Cinema = mkPlace (mkN "cinma" masculine) dative ; - Disco = mkPlace (mkN "discothque" feminine) dative ; - Hospital = mkPlace (mkN "hpital") dative ; - Hotel = mkPlace (mkN "htel") dative ; - Museum = mkPlace (mkN "muse" 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 "thtre" 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 "norvgien") (mkN "couronne") | mkCN (mkN "couronne") ; - Pound = mkCN (compN (mkN "livre") ["sterling"]); - Rouble = mkCN (mkN "rouble" "rouble" masculine) ; - SwedishCrown = mkCN (mkA "sudois") (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 "franais" "France" ; - German = mkNat "allemand" "Allemagne" ; - Italian = mkNat "italien" "Italie" ; - Norwegian = mkNat "norvgien" "Norvge" ; - Polish = mkNat "polonais" "Pologne" ; - Romanian = mkNat "roumain" "Roumanie" ; - Russian = mkNat "russe" "Russie" ; - Spanish = mkNat "espagnol" "Espagne" ; - Swedish = mkNat "sudois" "Sude" ; - --- 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 "mtro") ; - 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 "prt") ; - 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 "coter"))) ; - ItCost item price = mkCl item (mkV2 (mkV "coter")) 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 ; 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 vlo - } ; - - 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) ; - - -} diff --git a/examples/phrasebook/WordsGer.gf b/examples/phrasebook/WordsGer.gf deleted file mode 100644 index 4984eb080..000000000 --- a/examples/phrasebook/WordsGer.gf +++ /dev/null @@ -1,262 +0,0 @@ --- (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 "Kse" "Kse" "Kse" "Kse" "Kse" "Kse" masculine) ; - Chicken = mkCN (mkN "Huhn" "Huhn" "Huhn" "Huhn" "Hhner" "Hhner" 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 "verdchtig" ; - --- places - - Airport = mkPlace (mkN "Flughafen" "Flughfen" masculine) on_Prep zu_Prep ; - Church = mkPlace (mkN "Kirche") in_Prep inAcc_Prep ; - Hospital = mkPlace (mkN "Krankenhaus" "Krankenhuser" neuter) in_Prep inAcc_Prep ; - Restaurant = mkPlace (mkN "Restaurant" "Restaurants" neuter) in_Prep inAcc_Prep ; - Station = mkPlace (mkN "Bahnhof" "Bahnhfe" masculine) on_Prep zu_Prep ; - University = mkPlace (mkN "Universitt" "Universitten" feminine) in_Prep zu_Prep ; - - AmusementPark = mkPlace (mkN "Vergngungspark" "Vergngungspark" "Vergngungspark" "Vergngungspark" "Vergngungsparks" "Vergngungsparks" 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 "Geschft" "Geschft" "Geschft" "Geschft" "Geschfte" "Geschfte" neuter) in_Prep inAcc_Prep ; - Supermarket = mkPlace (mkN "Supermarkt" "Supermarkt" "Supermarkt" "Supermarkt" "Supermrkten" "Supermrkte" 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 "Dnisch") (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 "Dnemark" "Dnisch" "dnisch" ; - Dutch = mkNat "den Niederlanden" "Niederlndisch" "niederlndisch" ; - English = mkNat "England" "Englisch" "englisch" ; - Finnish = mkNat "Finnland" "Finnisch" "finnisch" ; - Flemish = mkCN (mkN "Flmisch" "Flmisch" neuter) ; - French = mkNat "Frankreich" "Franzsisch" "franzsisch" ; - German = mkNat "Deutschland" "Deutsch" "deutsche" ; - Italian = mkNat "Italien" "Italienisch" "italienisch" ; - Norwegian = mkNat "Norwegen" "Norwegisch" "norwegisch" ; - Polish = mkNat "Polen" "Polnisch" "polnisch" ; - Romanian = mkNat "Rumnien" "Rumnisch" "rumnisch" ; - 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 heien_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 mgen_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 "mde")) ; - 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 heien_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" "Shne" masculine) ; - Daughter = xOf sing (mkN "Tochter" "Tchter" 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 "Fhre" "Fhre" "Fhre" "Fhre" "Fhren" "Fhren" 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" "Zge" "Zge" masculine) ; - Tram = mkTransport (mkN "Straenbahn" "Straenbahn" "Straenbahn" "Straenbahn" "Straenbahnen" "Straenbahnen" 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 "geffnet" ; ---- 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 = <>} ; - -} diff --git a/examples/phrasebook/WordsHin.gf b/examples/phrasebook/WordsHin.gf deleted file mode 100644 index 6c640a104..000000000 --- a/examples/phrasebook/WordsHin.gf +++ /dev/null @@ -1,280 +0,0 @@ ---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}; - -} diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf deleted file mode 100644 index cd8b6d5f8..000000000 --- a/examples/phrasebook/WordsIta.gf +++ /dev/null @@ -1,269 +0,0 @@ --- (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" ; - -} diff --git a/examples/phrasebook/WordsJpn.gf b/examples/phrasebook/WordsJpn.gf deleted file mode 100644 index 6cc406a45..000000000 --- a/examples/phrasebook/WordsJpn.gf +++ /dev/null @@ -1,385 +0,0 @@ ---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 ; -} diff --git a/examples/phrasebook/WordsLav.gf b/examples/phrasebook/WordsLav.gf deleted file mode 100644 index bcc13a091..000000000 --- a/examples/phrasebook/WordsLav.gf +++ /dev/null @@ -1,319 +0,0 @@ ---# -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 ; - -} diff --git a/examples/phrasebook/WordsNor.gf b/examples/phrasebook/WordsNor.gf deleted file mode 100644 index 861ad9c79..000000000 --- a/examples/phrasebook/WordsNor.gf +++ /dev/null @@ -1,273 +0,0 @@ --- (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 "kjtt" "kjttet" "kjtt" "kjtta") ; - 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 "fornyelsespark" "fornyelsesparken" "fornyelsesparker" "fornyelsesparkene") "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 "trstig") ; - ATired p = mkCl p.name (mkA "sliten") ; - AUnderstand p = mkCl p.name (irregV "forst" "forstod" "forsttt") ; - 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 "snn" "snnen" "snner" "snnene") ; - Daughter = xOf sing (mkN "datter" "datteren" "dtre" "dtrene") ; - 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 "lrdag" ; - Sunday = mkDay "sndag" ; - - 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 "populr") ; - 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 - } ; - -} diff --git a/examples/phrasebook/WordsPes.gf b/examples/phrasebook/WordsPes.gf deleted file mode 100644 index 69ff86802..000000000 --- a/examples/phrasebook/WordsPes.gf +++ /dev/null @@ -1,289 +0,0 @@ ---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 ! bEzafa ++ "ترین" ; n = Sg ; isNum = False ; fromPron = False} ; - --- 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}; - -} diff --git a/examples/phrasebook/WordsPol.gf b/examples/phrasebook/WordsPol.gf deleted file mode 100644 index 2b7fe292f..000000000 --- a/examples/phrasebook/WordsPol.gf +++ /dev/null @@ -1,354 +0,0 @@ ---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!) 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 of { => nom; => 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 = <>}; - -} diff --git a/examples/phrasebook/WordsRon.gf b/examples/phrasebook/WordsRon.gf deleted file mode 100644 index 4563ff735..000000000 --- a/examples/phrasebook/WordsRon.gf +++ /dev/null @@ -1,277 +0,0 @@ ---# -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 =<>}; - -} diff --git a/examples/phrasebook/WordsRus.gf b/examples/phrasebook/WordsRus.gf deleted file mode 100644 index 71459f848..000000000 --- a/examples/phrasebook/WordsRus.gf +++ /dev/null @@ -1,275 +0,0 @@ --- (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) ; - -} diff --git a/examples/phrasebook/WordsSnd.gf b/examples/phrasebook/WordsSnd.gf deleted file mode 100644 index 99f37dcf8..000000000 --- a/examples/phrasebook/WordsSnd.gf +++ /dev/null @@ -1,281 +0,0 @@ ---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 "ڄاڻڻ") ; - ALike p item = mkCl p.name (L.like_V2) item ; - ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxSnd.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 "سمجھڻ") ; - 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 (SyntaxSnd.mkNP p.poss (mkCN (mkN01 "نالو")))) ; --- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "ڄمار"))) ; - QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (mkCN (mkN09 "ڄمار")))) ; - 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 (mkN04 "زال") ; - Husband = xOf ssing (mkN03 "مڙس") ; - Son = xOf ssing (mkN03 "پٽ") ; - Daughter = xOf ssing (mkN07 "ڌي") ; - 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 (SyntaxSnd.mkAdv from_Prep x.name))) ; - HowFarFromBy x y t = - mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxSnd.mkAdv from_Prep x.name)) t)) ; - HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ; - --- WhichTranspPlace trans place = --- mkQS (mkQCl (SyntaxSnd.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 (mkN14 d))) in - mkNPDay (mkNP (mkCN (mkN14 d))) (SyntaxSnd.mkAdv to_Prep (mkNP (mkCN (mkN14 d)))) - (SyntaxSnd.mkAdv to_Prep (mkNP (mkCN (mkN14 d)))) ; --changed from plNum to sgNum - - mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i -> --- mkCNPlace (mkCN (mkN14 comp (mkN14 p))) (P.mkPrep i) to_Prep ; - mkCNPlace (mkCN (mkN14 (comp++p))) (P.mkPrep i) to_Prep ; - - mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i -> - mkCNPlace (mkCN (mkN14 p)) (P.mkPrep i) to_Prep ; - mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g -> - mkCNPlace (mkCN (mkN14 p)) (P.mkPrep i) to_Prep ; - - open_Adv = mkAdv "کلي"; - closed_Adv = mkAdv "بند" ; - - xOf : SentencesSnd.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 "نالو") p).name ; - ssing = False ; - - mkTransport : N -> {name : CN ; by : Adv} = \n -> { - name = mkCN n ; - by = SyntaxSnd.mkAdv by8means_Prep (mkNP n) - } ; - --- mkSuperl : A -> Det = \a -> SyntaxSnd.mkDet the_Art (SyntaxSnd.mkOrd a) ; - mkSuperl : A -> Det = \a -> lin Det { s = \\n,g => a.s ! n ! g ! Dir ; n = Sg } ; - - far_IAdv = ExtraSnd.IAdvAdv (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 ; isPron = np.isPron}; - -} diff --git a/examples/phrasebook/WordsSpa.gf b/examples/phrasebook/WordsSpa.gf deleted file mode 100644 index fd54e6282..000000000 --- a/examples/phrasebook/WordsSpa.gf +++ /dev/null @@ -1,301 +0,0 @@ --- (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" ; - -} diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf deleted file mode 100644 index ce22964c7..000000000 --- a/examples/phrasebook/WordsSwe.gf +++ /dev/null @@ -1,302 +0,0 @@ --- (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 "ktt" "ktt") ; - 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 "trkig" ; - Cold = L.cold_A ; - Delicious = mkA "lcker" ; - Expensive = mkA "dyr" ; - Fresh = mkA "frsk" ; - Good = L.good_A ; - Suspect = mkA "suspekt" "suspekt" ; - Warm = L.warm_A ; - --- places - - Airport = mkPlace (mkN "flygplats" "flygplatser") "p" ; - AmusementPark = mkPlace (mkN "njespark" "njesparker") "i" ; - Bank = mkPlace (mkN "bank" "banker") "i" ; - Bar = mkPlace (mkN "bar" "barer") "i" ; - Cafeteria = mkPlace (mkN "caf" "caf") "p" ; - Center = mkPlace (mkN "innerstad" "innerstder") "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 "affr" "affrer") "i" ; - School = mkPlace (mkN "skola") "p" ; - Station = mkPlace (mkN "station" "stationer") "p" ; - Supermarket = mkPlace (mkN "snabbkp" "snabbkp") "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 "nederlndsk" "Nederlnderna" ; - English = mkNat "engelsk" "England" ; - Finnish = mkNat "finsk" "Finland" ; - Flemish = mkNP (mkPN "flamlndska") ; - 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 "rumnsk" "Rumnien" ; - 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 "frja") ; - Plane = mkTransport L.airplane_N ; - Subway = mkTransport (mkN "tunnelbana") ; - Taxi = mkTransport (mkN "taxi" "taxin" "taxibilar" "taxibilarna") ; ---- - Train = mkTransport L.train_N ; - Tram = mkTransport (mkN "sprvagn") ; - - 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 "frdig") ; - AScared p = mkCl p.name (mkA "rdd") ; - ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ; - AThirsty p = mkCl p.name (mkA "trstig") ; - ATired p = mkCl p.name (mkA "trtt") ; - AUnderstand p = mkCl p.name (mkV "frst" "frstod" "frsttt") ; - 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" "sner") ; - Daughter = xOf sing (mkN "dotter" "dttrar") ; - Children = xOf plur L.child_N ; - --- week days - - Monday = mkDay "mndag" ; - Tuesday = mkDay "tisdag" ; - Wednesday = mkDay "onsdag" ; - Thursday = mkDay "torsdag" ; - Friday = mkDay "fredag" ; - Saturday = mkDay "lrdag" ; - Sunday = mkDay "sndag" ; - - 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 "populr") ; - 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 "stngd" "stngt" ; - - 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 "thailndsk") ; - Baht = mkCN (mkN "baht" "baht") ; - - Rice = mkCN (mkN "ris" "ris") ; - Pork = mkCN (mkN "flsk" "flsk") ; - Beef = mkCN (mkN "ntktt" "ntktt") ; - Egg = mkCN L.egg_N ; - Noodles = mkCN (mkN "nudel" "nudlar") ; - Shrimps = mkCN (mkN "rka") ; - Chili = mkCN (mkN "chili" "chilier") ; - Garlic = mkCN (mkN "vitlk") ; - 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 "lsk") ; - Beach = mkPlace (mkN "badstrand" "badstrnder") "p" ; - - ItsRaining = mkCl (mkVP L.rain_V0) ; - ItsCold = mkCl (mkVP L.cold_A) ; - ItsWarm = mkCl (mkVP L.warm_A) ; - ItsWindy = mkCl (mkVP (mkV "blser")) ; - SunShine = mkCl (mkNP the_Det L.sun_N) (skina_V) ; - - Smoke = mkVP (mkV "rker") ; - - ADoctor = mkProfession (mkN "lkare" "lkare") ; - AProfessor = mkProfession (mkN "professor" "professorer") ; - ALawyer = mkProfession (mkN "jurist" "jurister") ; - AEngineer = mkProfession (mkN "ingenjr" "ingenjrer") ; - ATeacher = mkProfession (mkN "lrare" "lrare") ; - ACook = mkProfession (mkN "kock") ; - AStudent = mkProfession (mkN "student" "srudenter") ; - ABusinessman = mkProfession (mkN "affrsman" "affrsmannen" "affrsmn" "affrsmnnen") ; - - oper - mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name (mkVP (CompBareCN (mkCN n))) ; - -} diff --git a/examples/phrasebook/WordsTha.gf b/examples/phrasebook/WordsTha.gf deleted file mode 100644 index 0fe8398a8..000000000 --- a/examples/phrasebook/WordsTha.gf +++ /dev/null @@ -1,319 +0,0 @@ -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 ; - 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) )) ; - - 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 ; -} - diff --git a/examples/phrasebook/WordsUrd.gf b/examples/phrasebook/WordsUrd.gf deleted file mode 100644 index e336968a4..000000000 --- a/examples/phrasebook/WordsUrd.gf +++ /dev/null @@ -1,280 +0,0 @@ ---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}; - -} diff --git a/examples/phrasebook/add_greetings.gfupdate b/examples/phrasebook/add_greetings.gfupdate deleted file mode 100644 index a1b2059c7..000000000 --- a/examples/phrasebook/add_greetings.gfupdate +++ /dev/null @@ -1,35 +0,0 @@ -+ Greetings -fun GCongratulations : Greeting ; -fun GLeaveMeAlone : Greeting ; -+ GreetingsEng -lin GCongratulations = ss "congratulations" ; -+ GreetingsFin -lin GCongratulations = ss "onneksi olkoon" ; -lin GLeaveMeAlone = ss "jt minut rauhaan" ; - -Fre = ss "flicitations" ; -Ita = ss "auguri" ; - -Swe = ss "grattis" ; - - -lin -Eng = ss "leave me alone" ; -Swe = ss "lt mig vara i fred" ; - - -abstract Words - -fun Library : PlaceKind ; - -lin -Eng = mkPlace "library" "in" ; -Fin = mkPlace (mkN "kirjasto") ssa ; -Fre = mkPlace (mkN "bibliothque") dative ; -Swe = mkPlace (mkN "bibliotek" "bibliotek") "p" ; - -concrete WordsGer - -lin Delicious = mkA "kstlich" ; -lin Expensive = mkA "teuer" ; - diff --git a/examples/phrasebook/doc-phrasebook.html b/examples/phrasebook/doc-phrasebook.html deleted file mode 100644 index a6b42a255..000000000 --- a/examples/phrasebook/doc-phrasebook.html +++ /dev/null @@ -1,688 +0,0 @@ - - - - - -MOLTO Multilingual Phrasebook - -

MOLTO Multilingual Phrasebook

- -Krasimir Angelov, Olga Caprotti, Ramona Enache, Thomas Hallgren, Inari Listenmaa, Aarne Ranta, Jordi Saludes, Adam Slaski
-Showcase for project FP7-ICT-247914, Deliverable D10.2. -
- -

-
-

- - -

-
-

-

-


- -

-

-History -

-
    -
  • 1 September. Version 1.1: bug fixes, some new constructions. -
  • 2 June. Version 1.0 released! -
  • 29 May. Link to Google translate with the current language pair and phrase. -
  • 27 May. Polish added. -
  • 26 May. Version 0.9: - Catalan added, mass/count noun distinction to reduce overgeneration, - improved web interface. -
  • 20 May. Version 0.8: - Spanish added, Bulgarian complete. -
  • 9 May. Version 0.7: - Danish and Norwegian added (preliminary versions induced from statistical models - and resource grammars). -
  • 3 May. Version 0.6: - Extended API (now final for release), Dutch added; new user interface with text - input enabled. -
  • 10 April. Some additions in API, comments in implementation; regenerated clones. -
  • 8 April. Added German. -
  • 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages. -
  • 6 April. Version 0.4: weekdays, nationalities -
  • 30 March. Version 0.3: disambiguation grammar for English -
  • 28 March. Version 0.2: Swe, Ita; cat Action; small phrases. -
  • 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI. -
- -

-Missing constructs -

-

-Back to the phrasebook -

-

- -


-

- -

Purpose

-

-This phrasebook is a program for translating touristic phrases -between 14 European languages included in the -MOLTO project -(Multilingual On-Line Translation): -

-
    -
  • Bulgarian, Catalan, Danish, Dutch, English, - Finnish, French, German, Italian, Norwegian, - Polish, Romanian, Spanish, Swedish -
- -

-A Russian version is not yet finished but is projected later. Also other languages may be added. -

-

-The phrasebook is implemented by using the GF programming language -(Grammatical Framework). -It is the first demo for the MOLTO project, released in the third month (by June 2010). -The first version is a very small system, but it will extended in the course of the project. -

-

-The phrasebook has the following requirement specification: -

-
    -
  • high quality: reliable translations to express yourself in any of the languages -
  • translation between all pairs of languages -
  • runnable in web browsers -
  • runnable on mobile phones (via web browser; Android stand-alone forthcoming) -
  • easily extensible by new words (forthcoming: semi-automatic extensions by users) -
- -

-The phrasebook is available as open-source software, licensed under GNU LGPL. -The source code resides in -www.grammaticalframework.org/examples/phrasebook/ -

- -

Points illustrated

- -

From the user perspective

-

-Interlingua-based translation -

-
    -
  • we translate meanings, rather than words -
- -

-Incremental parsing -

-
    -
  • the user is at every point guided by the list of possible next words -
- -

-Mixed modalities -

-
    -
  • selection of words ("fridge magnets") combined with text input -
- -

-Quasi-incremental translation: many basic types are also used as phrases -

-
    -
  • one can translate both words and complete sentences, and get intermediate results -
- -

-Disambiguation, esp. of politeness distinctions -

-
    -
  • if a phrase has many translations, each of them is shown and given an explanation - (currently just in English, later in any source language) -
- -

-Fall-back to statistical translation -

-
    -
  • currently just a link to Google translate (forthcoming: tailor-made statistical models) -
- -

-Feed-back from users -

-
    -
  • users are welcomed to send comments, bug reports, and better translation suggestions -
- - -

From the programmer's perspective

-

-The use of resource grammars and functors -

- - -

-Example-based grammar writing and grammar induction from statistical models -(Google translate) -

-
    -
  • many of the grammars were created semi-automatically by generalization from - examples -
- -

-Compile-time transfer: especially, in Action in Words -

-
    -
  • the structural differences between languages are treated at compile time, - for maximal run-time efficiency -
- -

-The level of skills involved in grammar development -

-
    -
  • testing different configurations (see table below) -
- -

-Grammar testing -

-
    -
  • use of treebanks with guided random generation for initial evaluation and regression testing -
- - -

Files

- -

Grammars

-

-Sentences: general syntactic structures implementable in a uniform way. -Concrete syntax via the functor SencencesI. -

-

-Words: words and predicates, typically language-dependent. -Separate concrete syntaxes. -

-

-Greetings: idiomatic phrases, string-based. -Separate concrete syntaxes. -

-

-Phrasebook: the top module putting everything together. -Separate concrete syntaxes. -

-

-DisambPhrasebook: disambiguation grammars generating feedback phrases if -the input language is ambiguous. -

-

-Numeral: resource grammar module directly inherited from the library. -

-

-Here is the module structure as produced in GF by -

-
-    > i -retain DisambPhrasebookEng.gf
-    > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,Numeral,NumeralEng,DisambPhrasebookEng
-    > ! dot -Tpng _gfdepgraph.dot >pgraph.png
-
-

-

- -

- -

Ontology

-

-The abstract syntax defines the ontology behind the phrasebook. -Some explanations can be found in the -ontology document, which is produced from the -abstract syntax files -Sentences.gf -and -Words.gf -by make doc. -

- -

Run-time system and user interface

-

-The phrasebook uses -the -PGF server -written in Haskell and the -minibar library -written in JavaScript. Since the sources of these systems are available, anyone can build the phrasebook -locally on her own computer. -

- -

Effort and cost

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LanguageGrammarian's language skillsGrammarian's GF skillsInformant used for developmentInformant used for testingUse of external toolsImpact of external toolsChanges on the resource grammarDevelopment time
Bulgarian######---?###
Catalan######---?##
Danish-###+++#####
Dutch-###+++#####
English#####-+--_#
Finnish######---?###
French#####-+-?##
German####+++#######
Italian####---?####
Norwegian####+-+#####
Polish######+++####
Romanian######--+#######
Spanish###---?_##
Swedish#####-+-?-##
- -

-Explanation on scores -

-
    -
  • Grammarian's language skills -
      -
    • - : no skills -
    • # : passive knowledge -
    • ## : fluent non-native -
    • ### : native speaker -
    -
- -
    -
  • Grammarian's GF skills -
      -
    • - : no skills -
    • # : basic skills (2-day GF tutorial) -
    • ## : medium skills (previous experience of similar task) -
    • ### : advanced skills (resource grammar writer/substantial contributor) -
    -
- -
    -
  • Informant used for development/Informant needed for testing/Use of external tools -
      -
    • - : no -
    • + : yes -
    -
- -
    -
  • Impact of external tools -
      -
    • ? : not investigated -
    • - : no effect on the Phrasebook -
    • # : small impact (literal translation, simple idioms) -
    • ## : medium effect (translation of more forms of words, contextual preposition) -
    • ### : great effect (no extra work needed, translations are correct) -
    -
- -
    -
  • Changes on the resource grammars -
      -
    • - : no changes -
    • # : 1-3 minor changes -
    • ## : 4-10 minor changes, 1-3 medium changes -
    • ### : >10 changes of any kind -
    -
- -
    -
  • Overall effort (including extra work on resource grammars) -
      -
    • # : less than 8 person hours -
    • ## : 8-24 person hours -
    • ### : >24 person hours -
    -
- - -

Example-based grammar writing prototype

-

-The figure presents the process of creating a Phrasebook using an example-based -approach for the language X, where X = {Danish, Dutch, German, Norwegian}. -

-

- -

-
    -
  • the first step assumes an analysis of the resource grammar and extracts the necessary - information that functions that build new lexical entries would need. - A model is built so that the proper forms of the word can be rendered, - and additional information, such as gender, can be inferred. The script applies - these rules to each entry that we want to translate into the target language, and - one obtains a set of constructions. -
  • they are furthermore given to an external translator tool (Google translate) - or a native speaker for translation. One needs the configuration file even if the - translator is human, because formal knowledge of grammar is not assumed. -
  • the translations into the target language are further more processed in order to - build the linearizations of the categories first, decoding the information received. - Furthermore, having the words in the lexicon, one can parse the translations of - functions with the GF parser and generalize from that. -
  • the resulting grammar is tested with the aid of a script that generates - constructions covering all the functions and categories from the grammar, along - with some other constructions that proved to be problematic in some language. - The result of the script contains for each construction in the target language - its English correspondent and the abstract syntax tree. A native speaker - evaluates the results and if corrections are needed, the algorithm runs again - with the new examples. Depending on the language skills of the grammar writer, - the changes can be made directly into the GF files, and the correct examples - given by the native informant are just kept for validating the results. - The algorithm is repeated as long as corrections are needed. -
- -

-The time needed for preparing the configuration files for a grammar will not be needed -in the future, since the files are reusable for other applications. -The time for the second step can be saved if automatic tools, like Google translate -are used. This is only possible in languages with a simpler morphology and syntax -and large corpora available. -Good results were obtained for German and Dutch with Google translate, but for -languages like Romanian or Polish, which are both complex and lack enough resources, -the results are discouraging. -

-

-If the statistical oracle works well, the only step where the presence of a human -translator is needed is the evaluation and feedback step. An average of 4 hours per -round and 2 rounds were needed in average for the languages for which we performed -the experiment. It is possible that more effort is needed for more complex languages. -

- -

To Do

-

-Disambiguation grammars for other languages than English -

-

-Extend the abstract lexicon in Words by hand or (semi)automatically for -

-
    -
  • food stuff -
  • places -
  • actions -
- -

-Customizable phone distribution: make your own selection of the 2^15 language subsets -when downloading the phrasebook to a phone -

- -

How to contribute

-

-The basic things "everyone" can do is -

-
    -
  • complete missing words in concrete syntaxes -
  • add new abstract words in Words and greetings in Greetings -
- -

-The missing concrete syntax entries are added to the WordsL.gf -files for each language L. The -morphological paradigms -of the GF resource library should be used. Actions (prefixed with A, as AWant) are -a little more demanding, since they also require syntax constructors. Greetings (prefixed -with G) are pure strings. -

-

-Some explanations can be found in the -implementation document, which is produced from the -concrete syntax files -SentencesI.gf -and -WordsEng.gf -by make doc. -

-

-Here are the steps to follow for contributors: -

-
    -
  1. Make sure you have the latest sources - from GF Darcs, - using darcs pull. -
  2. Also make sure that you have compiled the library by make present in gf/lib/src/. -
  3. Work in the directory - gf/examples/phrasebook/. -
  4. After you've finished your contribution, recompile the phrasebook by make pgf. -
  5. Save your changes in darcs record . (in the phrasebook subdirectory). -
  6. Make a patch file with darcs send -o my_phrasebook_patch, which you can - send to GF maintainers. -
  7. (Recommended:) Test the phrasebook on your local server: -
      -
    1. Go to gf/src/server/ and follow the instructions in the - project Wiki. -
    2. Make sure that Phrasebook.pgf is available to you GF server (see project wiki). -
    3. Launch lighttpd (see project wiki). -
    4. How you can open gf/examples/phrasebook/www/phrasebook.html and use your phrasebook! -
    -
- -
    -
  • Don't delete anything! But you are free to correct incorrect forms. -
  • Don't change the module structure! -
  • Don't compromise quality to gain coverage: non multa sed multum! -
- - -

Conclusions (tentative)

-

-The grammarian need not be a native speaker of the language. -

-

-For many languages, the grammarian need not even know the language - native informants are -enough. -

-

-However, evaluation by native speakers is necessary. -

-

-Correct and idiomatic translations are possible. -

-

-A typical development time was 2-3 person working days per language. -

-

-Google translate helps in bootstrapping grammars, but must be checked. -

-
    -
  • in particular, unreliable for morphologically rich languages -
- -

-Resource grammars should give some more support -

-
    -
  • higher-level access to constructions like negative expressions -
  • large-scale morphological lexica -
- - -

Acknowledgements

-

-The Phrasebook has been built in the MOLTO project funded by the European Commission. -

-

-The authors are grateful to their native speaker informants helping to bootstrap and evaluate -the grammars: -Richard Bubel, -Grégoire Détrez, -Rise Eilert, -Karin Keijzer, -Michał Pałka, -Willard Rafnsson, -Nick Smallbone. -

- - - - diff --git a/examples/phrasebook/doc-phrasebook.txt b/examples/phrasebook/doc-phrasebook.txt deleted file mode 100644 index 15a2e862d..000000000 --- a/examples/phrasebook/doc-phrasebook.txt +++ /dev/null @@ -1,410 +0,0 @@ -MOLTO Multilingual Phrasebook -Krasimir Angelov, Olga Caprotti, Ramona Enache, Thomas Hallgren, Inari Listenmaa, Aarne Ranta, Jordi Saludes, Adam Slaski -Showcase for project FP7-ICT-247914, Deliverable D10.2. - - -%!Encoding:utf-8 - -%!postproc(html): #HR
-%!postproc(html): #BSMALL -%!postproc(html): #ESMALL - - - - -#HR -#BSMALL - -History -- 1 September. Version 1.1: bug fixes, some new constructions. -- 2 June. Version 1.0 released! -- 29 May. Link to Google translate with the current language pair and phrase. -- 27 May. Polish added. -- 26 May. Version 0.9: - Catalan added, mass/count noun distinction to reduce overgeneration, - improved web interface. -- 20 May. Version 0.8: - Spanish added, Bulgarian complete. -- 9 May. Version 0.7: - Danish and Norwegian added (preliminary versions induced from statistical models - and resource grammars). -- 3 May. Version 0.6: - Extended API (now final for release), Dutch added; new user interface with text - input enabled. -- 10 April. Some additions in API, comments in implementation; regenerated clones. -- 8 April. Added German. -- 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages. -- 6 April. Version 0.4: weekdays, nationalities -- 30 March. Version 0.3: disambiguation grammar for English -- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases. -- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI. - - -[Missing constructs missing.txt] - -[Back to the phrasebook http://www.grammaticalframework.org/demos/phrasebook/] - -#ESMALL -#HR - - -=Purpose= - -This phrasebook is a program for translating touristic phrases -between 14 European languages included in the -[MOLTO http://www.molto-project.eu] project -(Multilingual On-Line Translation): -- Bulgarian, Catalan, Danish, Dutch, English, - Finnish, French, German, Italian, Norwegian, - Polish, Romanian, Spanish, Swedish - - -A Russian version is not yet finished but is projected later. Also other languages may be added. - -The phrasebook is implemented by using the GF programming language -([Grammatical Framework http://grammaticalframework.org]). -It is the first demo for the MOLTO project, released in the third month (by June 2010). -The first version is a very small system, but it will extended in the course of the project. - -The phrasebook has the following requirement specification: -- high quality: reliable translations to express yourself in any of the languages -- translation between all pairs of languages -- runnable in web browsers -- runnable on mobile phones (via web browser; Android stand-alone forthcoming) -- easily extensible by new words (forthcoming: semi-automatic extensions by users) - - -The phrasebook is available as open-source software, licensed under GNU LGPL. -The source code resides in -[``www.grammaticalframework.org/examples/phrasebook/`` http://www.grammaticalframework.org/examples/phrasebook/] - - - -=Points illustrated= - - -==From the user perspective== - -Interlingua-based translation -- we translate meanings, rather than words - - -Incremental parsing -- the user is at every point guided by the list of possible next words - - -Mixed modalities -- selection of words ("fridge magnets") combined with text input - - -Quasi-incremental translation: many basic types are also used as phrases -- one can translate both words and complete sentences, and get intermediate results - - -Disambiguation, esp. of politeness distinctions -- if a phrase has many translations, each of them is shown and given an explanation - (currently just in English, later in any source language) - - -Fall-back to statistical translation -- currently just a link to Google translate (forthcoming: tailor-made statistical models) - - -Feed-back from users -- users are welcomed to send comments, bug reports, and better translation suggestions - - - -==From the programmer's perspective== - -The use of resource grammars and functors -- the translator was implemented on top of an earlier linguistic knowledge base, - the [GF Resource Grammar Library http://www.grammaticalframework.org/lib] - - -Example-based grammar writing and grammar induction from statistical models -([Google translate http://translate.google.com]) -- many of the grammars were created semi-automatically by generalization from - examples - - -Compile-time transfer: especially, in Action in Words -- the structural differences between languages are treated at compile time, - for maximal run-time efficiency - - -The level of skills involved in grammar development -- testing different configurations (see table below) - - -Grammar testing -- use of treebanks with guided random generation for initial evaluation and regression testing - - - - -=Files= - -==Grammars== - -``Sentences``: general syntactic structures implementable in a uniform way. -Concrete syntax via the functor ``SencencesI``. - -``Words``: words and predicates, typically language-dependent. -Separate concrete syntaxes. - -``Greetings``: idiomatic phrases, string-based. -Separate concrete syntaxes. - -``Phrasebook``: the top module putting everything together. -Separate concrete syntaxes. - -``DisambPhrasebook``: disambiguation grammars generating feedback phrases if -the input language is ambiguous. - -``Numeral``: resource grammar module directly inherited from the library. - -Here is the module structure as produced in GF by -``` - > i -retain DisambPhrasebookEng.gf - > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,Numeral,NumeralEng,DisambPhrasebookEng - > ! dot -Tpng _gfdepgraph.dot >pgraph.png -``` - -[pgraph.png] - - -==Ontology== - -The abstract syntax defines the **ontology** behind the phrasebook. -Some explanations can be found in the -[ontology document Ontology.html], which is produced from the -abstract syntax files -[``Sentences.gf`` http://www.grammaticalframework.org/examples/phrasebook/Sentences.gf] -and -[``Words.gf`` http://www.grammaticalframework.org/examples/phrasebook/Words.gf] -by ``make doc``. - - - -==Run-time system and user interface== - -The phrasebook uses -the -[PGF server http://code.google.com/p/grammatical-framework/wiki/LaunchWebDemos] -written in Haskell and the -[minibar library http://www.grammaticalframework.org/demos/minibar/about.html] -written in JavaScript. Since the sources of these systems are available, anyone can build the phrasebook -locally on her own computer. - - -=Effort and cost= - -|| Language | Grammarian's language skills | Grammarian's GF skills | Informant used for development | Informant used for testing | Use of external tools | Impact of external tools | Changes on the resource grammar | Development time || -| Bulgarian | ### | ### | - | - | - | ? | # | ## | -| Catalan | ### | ### | - | - | - | ? | # | # | -| Danish | - | ### | + | + | + | ## | # | ## | -| Dutch | - | ### | + | + | + | ## | # | ## | -| English | ## | ### | - | + | - | - | _ | # | -| Finnish | ### | ### | - | - | - | ? | # | ## | -| French | ## | ### | - | + | - | ? | # | # | -| German | # | ### | + | + | + | ## | ## | ### | -| Italian | ### | # | - | - | - | ? | ## | ## | -| Norwegian | # | ### | + | - | + | ## | # | ## | -| Polish | ### | ### | + | + | + | # | # | ## | -| Romanian | ### | ### | - | - | + | # | ### | ### | -| Spanish | ## | # | - | - | - | ? | _ | ## | -| Swedish | ## | ### | - | + | - | ? | - | ## | - - -Explanation on scores - -- Grammarian's language skills - - - : no skills - - # : passive knowledge - - ## : fluent non-native - - ### : native speaker - - -- Grammarian's GF skills - - - : no skills - - # : basic skills (2-day GF tutorial) - - ## : medium skills (previous experience of similar task) - - ### : advanced skills (resource grammar writer/substantial contributor) - - -- Informant used for development/Informant needed for testing/Use of external tools - - - : no - - + : yes - - -- Impact of external tools - - ? : not investigated - - - : no effect on the Phrasebook - - # : small impact (literal translation, simple idioms) - - ## : medium effect (translation of more forms of words, contextual preposition) - - ### : great effect (no extra work needed, translations are correct) - - -- Changes on the resource grammars - - - : no changes - - # : 1-3 minor changes - - ## : 4-10 minor changes, 1-3 medium changes - - ### : >10 changes of any kind - - -- Overall effort (including extra work on resource grammars) - - # : less than 8 person hours - - ## : 8-24 person hours - - ### : >24 person hours - - -=Example-based grammar writing prototype= - -The figure presents the process of creating a Phrasebook using an example-based -approach for the language X, where X = {Danish, Dutch, German, Norwegian}. - -[picpic.jpg] - -- the first step assumes an analysis of the resource grammar and extracts the necessary - information that functions that build new lexical entries would need. - A model is built so that the proper forms of the word can be rendered, - and additional information, such as gender, can be inferred. The script applies - these rules to each entry that we want to translate into the target language, and - one obtains a set of constructions. -- they are furthermore given to an external translator tool (Google translate) - or a native speaker for translation. One needs the configuration file even if the - translator is human, because formal knowledge of grammar is not assumed. -- the translations into the target language are further more processed in order to - build the linearizations of the categories first, decoding the information received. - Furthermore, having the words in the lexicon, one can parse the translations of - functions with the GF parser and generalize from that. -- the resulting grammar is tested with the aid of a script that generates - constructions covering all the functions and categories from the grammar, along - with some other constructions that proved to be problematic in some language. - The result of the script contains for each construction in the target language - its English correspondent and the abstract syntax tree. A native speaker - evaluates the results and if corrections are needed, the algorithm runs again - with the new examples. Depending on the language skills of the grammar writer, - the changes can be made directly into the GF files, and the correct examples - given by the native informant are just kept for validating the results. - The algorithm is repeated as long as corrections are needed. - - -The time needed for preparing the configuration files for a grammar will not be needed -in the future, since the files are reusable for other applications. -The time for the second step can be saved if automatic tools, like Google translate -are used. This is only possible in languages with a simpler morphology and syntax -and large corpora available. -Good results were obtained for German and Dutch with Google translate, but for -languages like Romanian or Polish, which are both complex and lack enough resources, -the results are discouraging. - -If the statistical oracle works well, the only step where the presence of a human -translator is needed is the evaluation and feedback step. An average of 4 hours per -round and 2 rounds were needed in average for the languages for which we performed -the experiment. It is possible that more effort is needed for more complex languages. - - -=To Do= - -Disambiguation grammars for other languages than English - -Extend the abstract lexicon in ``Words`` by hand or (semi)automatically for -- food stuff -- places -- actions - - -Customizable phone distribution: make your own selection of the 2^15 language subsets -when downloading the phrasebook to a phone - - -=How to contribute= - -The basic things "everyone" can do is -- complete [missing words missing.txt] in concrete syntaxes -- add new abstract words in ``Words`` and greetings in ``Greetings`` - - -The missing concrete syntax entries are added to the ``Words``//L//``.gf`` -files for each language //L//. The -[morphological paradigms http://www.grammaticalframework.org/lib/doc/synopsis.html#toc78] -of the GF resource library should be used. Actions (prefixed with ``A``, as ``AWant``) are -a little more demanding, since they also require syntax constructors. Greetings (prefixed -with ``G``) are pure strings. - -Some explanations can be found in the -[implementation document Implementation.html], which is produced from the -concrete syntax files -[``SentencesI.gf`` http://www.grammaticalframework.org/examples/phrasebook/SentencesI.gf] -and -[``WordsEng.gf`` http://www.grammaticalframework.org/examples/phrasebook/WordsEng.gf] -by ``make doc``. - -Here are the steps to follow for contributors: -+ Make sure you have the latest sources - from [GF Darcs http://www.grammaticalframework.org/doc/gf-developers.html], - using ``darcs pull``. -+ Also make sure that you have compiled the library by ``make present`` in ``gf/lib/src/``. -+ Work in the directory - [``gf/examples/phrasebook/`` http://www.grammaticalframework.org/examples/phrasebook/]. -+ After you've finished your contribution, recompile the phrasebook by ``make pgf``. -+ Save your changes in ``darcs record .`` (in the ``phrasebook`` subdirectory). -+ Make a patch file with ``darcs send -o my_phrasebook_patch``, which you can - send to GF maintainers. -+ (Recommended:) Test the phrasebook on your local server: - + Go to ``gf/src/server/`` and follow the instructions in the - [project Wiki http://code.google.com/p/grammatical-framework/wiki/LaunchWebDemos]. - + Make sure that ``Phrasebook.pgf`` is available to you GF server (see project wiki). - + Launch ``lighttpd`` (see project wiki). - + How you can open ``gf/examples/phrasebook/www/phrasebook.html`` and use your phrasebook! - - -- Don't delete anything! But you are free to correct incorrect forms. -- Don't change the module structure! -- Don't compromise quality to gain coverage: //non multa sed multum!// - - - - -=Conclusions (tentative)= - -The grammarian need not be a native speaker of the language. - -For many languages, the grammarian need not even know the language - native informants are -enough. - -However, evaluation by native speakers is necessary. - -Correct and idiomatic translations are possible. - -A typical development time was 2-3 person working days per language. - -Google translate helps in bootstrapping grammars, but must be checked. -- in particular, unreliable for morphologically rich languages - - -Resource grammars should give some more support -- higher-level access to constructions like negative expressions -- large-scale morphological lexica - - - - - - -=Acknowledgements= - -The Phrasebook has been built in the MOLTO project funded by the European Commission. - -The authors are grateful to their native speaker informants helping to bootstrap and evaluate -the grammars: -Richard Bubel, -Grégoire Détrez, -Rise Eilert, -Karin Keijzer, -Michał Pałka, -Willard Rafnsson, -Nick Smallbone. - diff --git a/examples/phrasebook/help-phrasebook.html b/examples/phrasebook/help-phrasebook.html deleted file mode 100644 index 538ddf211..000000000 --- a/examples/phrasebook/help-phrasebook.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - -MOLTO Phrasebook Help - -

MOLTO Phrasebook Help

- -
- -

-To start: klick at a word or start typing. -

-

-From: source language -

-

-To: target language (either a single one or "All" simultaneously) -

-

-Del: delete last word -

-

-Clear: start over -

-

-Random: generate a random phrase -

-

-Google translate: the current input and language choice; opens in a new window or tab. -

-

-The symbol &+ means binding of two words. It will disappear in the complete translation. -

-

-The translator is slightly overgenerating, which means you can build some semantically strange phrases. -Before reporting them as bugs, ask yourself: could this be correct in some situation? is the translation -valid in that situation? -

- - - - diff --git a/examples/phrasebook/help-phrasebook.txt b/examples/phrasebook/help-phrasebook.txt deleted file mode 100644 index 99ff5f84b..000000000 --- a/examples/phrasebook/help-phrasebook.txt +++ /dev/null @@ -1,23 +0,0 @@ -MOLTO Phrasebook Help - - - -To start: klick at a word or start typing. - -**From**: source language - -**To**: target language (either a single one or "All" simultaneously) - -**Del**: delete last word - -**Clear**: start over - -**Random**: generate a random phrase - -Google translate: the current input and language choice; opens in a new window or tab. - -The symbol ``&+`` means binding of two words. It will disappear in the complete translation. - -The translator is slightly //overgenerating//, which means you can build some semantically strange phrases. -Before reporting them as bugs, ask yourself: could this be correct in some situation? is the translation -valid in that situation? diff --git a/examples/phrasebook/missing.txt b/examples/phrasebook/missing.txt deleted file mode 100644 index bd2bdb8a7..000000000 --- a/examples/phrasebook/missing.txt +++ /dev/null @@ -1,21 +0,0 @@ -DisambPhrasebookEng : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookBul : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookCat : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookDan : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookDut : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookEng : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookFin : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookFre : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookGer : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookHin : AScared ATired MMust ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookIta : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookLav : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookNor : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookPes : AHasAge AHasChildren AHasRoom AHasTable AmountCurrency Belgian DrinkNumber GWhatTime ItCost MCan MKnow MMust NNumeral ObjNumber ObjPlur PNumber PPrice ThesPlur ThesePlur ThosePlur V2Wait VWait -PhrasebookPol : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookRon : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookRus : Belgian Belgium Flemish GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookSpa : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookSwe : ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookTha : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur -PhrasebookUrd : GWhatTime MMust ObjPlur ThesPlur ThesePlur ThosePlur diff --git a/examples/phrasebook/pgraph.png b/examples/phrasebook/pgraph.png deleted file mode 100644 index 2027ade0c..000000000 Binary files a/examples/phrasebook/pgraph.png and /dev/null differ diff --git a/examples/phrasebook/picpic.jpg b/examples/phrasebook/picpic.jpg deleted file mode 100644 index aac20b611..000000000 Binary files a/examples/phrasebook/picpic.jpg and /dev/null differ diff --git a/examples/phrasebook/testScript.gfs b/examples/phrasebook/testScript.gfs deleted file mode 100644 index 444c2d704..000000000 --- a/examples/phrasebook/testScript.gfs +++ /dev/null @@ -1,109 +0,0 @@ --- invoke script with command : --- > gf PhrasebookX gf PhrasebookX rez.txt --- where rez.txt can be replaced by the name of the file that you want to write - -i PhrasebookEng.gf - -gt (PPlace (ThePlace (CitRestaurant ?))) | l -treebank -gr (AHasAge IMale ?) | l -treebank -gr (AHasChildren IMale ?) | l -treebank -gr (AHasName IMale ?) | l -treebank -gr (AHasRoom IMale ?) | l -treebank -gr (AHasTable IMale ?) | l -treebank -gr (AHungry ?) | l -treebank -gr (AIll ?) | l -treebank -gr (AKnow ?) | l -treebank -gr (ALike ? ?) | l -treebank ---gr (ALive ? ?) | l -treebank -gr (ALove ? ?) | l -treebank -gr (AMarried ?) | l -treebank -gr (AReady ?) | l -treebank -gr (AScared ?) | l -treebank -gr (ASpeak ? ?) | l -treebank -gr (AThirsty ?) | l -treebank -gr (ATired ?) | l -treebank -gr (AUnderstand ?) | l -treebank -gr (AWant IMale ?) | l -treebank -gr (AWantGo IMale ?) | l -treebank -gr (QWhatAge ?) | l -treebank -gr (QWhatName ?) | l -treebank -gr (HowMuchCost ?) | l -treebank -gr (ItCost ? ?) | l -treebank -gr (PropOpen ?) | l -treebank -gr (PropClosed ?) | l -treebank -gr (PropOpenDate ? ?) | l -treebank -gr (PropClosedDate ? ?) | l -treebank -gr (PropOpenDay ? ?) | l -treebank -gr (PropClosedDay ? ?) | l -treebank -gr (PSeeYouPlaceDate ? ?) | l -treebank -gr (PSeeYouPlace ?) | l -treebank -gr (PSeeYouDate ?) | l -treebank -gr (Wife ?) | l -treebank -gr (Husband ?) | l -treebank -gr (Son ?) | l -treebank -gr (Daughter ?) | l -treebank -gr (Children ?) | l -treebank -gr (HowFar ?) | l -treebank -gr (HowFarFrom ? ?) | l -treebank -gr (HowFarFromBy ? ? ?) | l -treebank -gt (HowFarBy (ThePlace Hospital) ?) | l -treebank -gr (WhichTranspPlace ? ?) | l -treebank -gr (IsTranspPlace ? ?) | l -treebank -gr (SuperlPlace ? ?) | l -treebank -gr (PSentence ?) | l -treebank -gr (PQuestion ?) | l -treebank -gr (PObject ?) | l -treebank -gr (PKind ?) | l -treebank -gr (PQuality ?) | l -treebank -gr (PNumber ?) | l -treebank -gr (PPlace ?) | l -treebank -gr (PPlaceKind ) | l -treebank -gr (PCurrency ?) | l -treebank -gr (PPrice ?) | l -treebank -gr (PLanguage ?) | l -treebank -gr (PCitizenship ?) | l -treebank -gr (PCountry ?) | l -treebank -gr (PDay ?) | l -treebank -gr (PByTransport ?) | l -treebank -gr (PTransport ?) | l -treebank -gr (Is ? ?) | l -treebank -gr (SProp ?) | l -treebank -gr (SPropNot ?) | l -treebank -gr (QProp ?) | l -treebank -gr (WherePlace ?) | l -treebank -gr (WherePerson ?) | l -treebank -gr (PropAction ?) | l -treebank -gr (ObjItem ?) | l -treebank -gr (ObjNumber ? ?) | l -treebank -gr (ObjIndef ?) | l -treebank -gr (ObjAndObj ? ?) | l -treebank -gr (OneObj ?) | l -treebank -gr (SuchKind ? ?) | l -treebank -gr (Very ?) | l -treebank -gr (Too ?) | l -treebank -gr (PropQuality ?) | l -treebank -gr (This ?) | l -treebank -gr (That ?) | l -treebank -gr (These ?) | l -treebank -gr (Those ?) | l -treebank -gr (The ?) | l -treebank -gr (Thes ?) | l -treebank -gr (AmountCurrency ? ?) | l -treebank -gr (ThePlace ?) | l -treebank -gr (APlace ?) | l -treebank -gr (LangNat ?) | l -treebank -gr (CitiNat ?) | l -treebank -gr (CountryNat ?) | l -treebank -gr (PropCit ?) | l -treebank -gr (OnDay ?) | l -treebank -gr (PersonName ?) | l -treebank -gr (NNumeral ?) | l -treebank -gr (AHave ? ?) | l -treebank -gr (AHaveCurr ? ?) | l -treebank -gt (ACitizen IMale ?) | l -treebank -gt (ABePlace IMale (ThePlace ?)) | l -treebank -gr (ByTransp ?) | l -treebank - diff --git a/examples/phrasebook/thai.png b/examples/phrasebook/thai.png deleted file mode 100644 index bf0c41e67..000000000 Binary files a/examples/phrasebook/thai.png and /dev/null differ diff --git a/examples/phrasebook/www/old-phrasebook.html b/examples/phrasebook/www/old-phrasebook.html deleted file mode 100644 index 4e6113bd4..000000000 --- a/examples/phrasebook/www/old-phrasebook.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Phrasebook - - - - - - - -
-
-
- - - -Based on -minibar, -powered by -GF, -see -doc. - - - - - - - - diff --git a/examples/phrasebook/www/phrasebook.css b/examples/phrasebook/www/phrasebook.css deleted file mode 100644 index 17d7350c9..000000000 --- a/examples/phrasebook/www/phrasebook.css +++ /dev/null @@ -1,37 +0,0 @@ -body { - background: #ccc url("http://www.grammaticalframework.org:41296/fridge/se.chalmers.cs.gf.gwt.FridgeApp/brushed-metal.png"); -} - -h1, h2, h3, small, th { font-family: sans-serif; } - -th, td { vertical-align: baseline; text-align: left; } - -div#surface { - min-height: 3ex; - margin: 5px; - padding: 5px; - border: 3px dashed #e0e0e0; -} - -div#words { - min-height: 3ex; - margin: 5px; - padding: 6px; - border: 3px solid #e0e0e0; -} - -div.word, span.word, div#words div { - display: inline-block; - font-family: sans-serif; - background-color: white; - border: 1px solid black; - padding: 3px; - margin: 3px; -} - -.invalid { color: red; } - -div.modtime { float: right; } -.modtime { color: #444; white-space: nowrap; } - -ul.space>li { margin-top: 0.5ex; } diff --git a/examples/phrasebook/www/phrasebook.js b/examples/phrasebook/www/phrasebook.js deleted file mode 100644 index c39dca7c0..000000000 --- a/examples/phrasebook/www/phrasebook.js +++ /dev/null @@ -1,213 +0,0 @@ - -//var server="http://www.grammaticalframework.org:41296" -//var server="http://tournesol.cs.chalmers.se:41296"; -var server="http://localhost:41296"; -var grammars_url=server+"/grammars/"; -var current_grammar_url=grammars_url+"Foods.pgf"; - -var tree_icon=server+"/translate/se.chalmers.cs.gf.gwt.TranslateApp/tree-btn.png"; - -function start_minibar() { - var minibar=element("minibar"); - minibar.appendChild(div_id("menubar")); - minibar.appendChild(div_id("surface")); - minibar.appendChild(div_id("words")); - minibar.appendChild(div_id("translations")); - /// jsonp(grammars_url+"grammars.cgi",""); // calls show_grammarlist - show_grammarlist(["Phrasebook.pgf","Foods.pgf", "ResourceDemo.pgf"]) ; -} - -function show_grammarlist(grammars) { - var menu=empty("select"); - for(var i=0;i0) box.appendChild(word(s)); - else emptycnt++; - } - if(emptycnt>0) - //setTimeout(function(){get_translations(menu);},200); - get_translations(menu); -} - -function get_translations(menu) { - jsonp(current_grammar_url - +"?command=translategroup" - // +"?command=translate" - +"&from="+encodeURIComponent(menu.current.from) - +"&input="+encodeURIComponent(menu.current.input), - "show_translations") -} - -function show_translations(translations) { - var trans=element("translations"); - var cnt=translations.length; - trans.innerHTML=""; - for(p=0;p 1) tbody.appendChild(tr([(text(lin[i].tree))])); - } - trans.appendChild(wrap("table",tbody)); - } -} - - -function toggle_img(i) { - var tmp=i.src; - i.src=i.other; - i.other=tmp; -} - - -/* -se.chalmers.cs.gf.gwt.TranslateApp/align-btn.png - -GET /grammars/Foods.pgf?&command=abstrtree&tree=Pred+(This+Fish)+(Very+Fresh) -GET /grammars/Foods.pgf?&command=parsetree&tree=Pred+(This+Fish)+Expensive&from=FoodsAfr -GET /grammars/Foods.pgf?&command=alignment&tree=Pred+(This+Fish)+Expensive -*/ diff --git a/examples/phrasebook/www/support.js b/examples/phrasebook/www/support.js deleted file mode 100644 index 7c34bad82..000000000 --- a/examples/phrasebook/www/support.js +++ /dev/null @@ -1,205 +0,0 @@ -/* --- Accessing document elements ------------------------------------------ */ - -function element(id) { - return document.getElementById(id); -} - -/* --- JSONP ---------------------------------------------------------------- */ - -// Inspired by the function jsonp from -// http://www.west-wind.com/Weblog/posts/107136.aspx -// See also http://niryariv.wordpress.com/2009/05/05/jsonp-quickly/ -// http://en.wikipedia.org/wiki/JSON#JSONP -function jsonp(url,callback) -{ - if (url.indexOf("?") > -1) - url += "&jsonp=" - else - url += "?jsonp=" - url += callback; - //url += "&" + new Date().getTime().toString(); // prevent caching - - var script = empty("script"); - script.setAttribute("src",url); - script.setAttribute("type","text/javascript"); - document.body.appendChild(script); -} - -var json = {next:0}; - -// Like jsonp, but instead of passing the name of the ballback function, you -// pass the callback function directly, making it possible to use anonymous -// functions. -function jsonpf(url,callback) -{ - var name="callback"+(json.next++); - json[name]=function(x) { delete json[name]; callback(x); } - jsonp(url,"json."+name); -} - -/* --- HTML construction ---------------------------------------------------- */ -function text(s) { return document.createTextNode(s); } - -function empty(tag,name,value) { - var el=document.createElement(tag); - if(name && value) el.setAttribute(name,value); - return el; -} - -function empty_id(tag,id) { return empty(tag,"id",id); } -function empty_class(tag,cls) { return empty(tag,"class",cls); } - -function div_id(id) { return empty_id("div",id); } -function span_id(id) { return empty_id("span",id); } - -function wrap(tag,contents) { - var el=empty(tag); - el.appendChild(contents); - return el; -} - -function wrap_class(tag,cls,contents) { - var el=empty_class(tag,cls); - if(contents) el.appendChild(contents); - return el; -} - -function span_class(cls,contents) { return wrap_class("span",cls,contents); } -function div_class(cls,contents) { return wrap_class("div",cls,contents); } - -function p(contents) { return wrap("p",contents); } -function dt(contents) { return wrap("dt",contents); } -function li(contents) { return wrap("li",contents); } - -function th(contents) { return wrap("th",contents); } -function td(contents) { return wrap("td",contents); } - -function tr(cells) { - var tr=empty("tr"); - for(var i=0;i"; - } - return result; -} - -function field_names(obj) { - var result = ""; - for (var i in obj) { - result += " " + i; - } - return result; -} - -/* --- Data manipulation ---------------------------------------------------- */ -function swap(a,i,j) { // Note: this doesn't work on strings. - var tmp=a[i]; - a[i]=a[j]; - a[j]=tmp; - return a; -} - -function sort(a) { -// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/sort - return a.sort(); - /* // Note: this doesn't work on strings. - for(var i=0;i