From 05fb0c35fadb16f01255c912dfd3920cfd997f01 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Tue, 3 Sep 2013 08:30:06 +0200 Subject: [PATCH 1/5] Add Grammatical Framework --- lib/linguist/languages.yml | 10 + .../Grammatical Framework/CharactersGla.gf | 12 ++ .../Grammatical Framework/CharactersGle.gf | 12 ++ samples/Grammatical Framework/Foods.gf | 15 ++ samples/Grammatical Framework/FoodsAfr.gf | 76 ++++++++ samples/Grammatical Framework/FoodsAmh.gf | 21 +++ samples/Grammatical Framework/FoodsBul.gf | 43 +++++ samples/Grammatical Framework/FoodsCat.gf | 7 + samples/Grammatical Framework/FoodsChi.gf | 35 ++++ samples/Grammatical Framework/FoodsCze.gf | 35 ++++ samples/Grammatical Framework/FoodsDut.gf | 58 ++++++ samples/Grammatical Framework/FoodsEng.gf | 43 +++++ samples/Grammatical Framework/FoodsEpo.gf | 48 +++++ samples/Grammatical Framework/FoodsFin.gf | 7 + samples/Grammatical Framework/FoodsFre.gf | 32 ++++ samples/Grammatical Framework/FoodsGer.gf | 7 + samples/Grammatical Framework/FoodsGla.gf | 66 +++++++ samples/Grammatical Framework/FoodsGle.gf | 59 ++++++ samples/Grammatical Framework/FoodsHeb.gf | 108 +++++++++++ samples/Grammatical Framework/FoodsHin.gf | 75 ++++++++ samples/Grammatical Framework/FoodsI.gf | 29 +++ samples/Grammatical Framework/FoodsIce.gf | 84 +++++++++ samples/Grammatical Framework/FoodsIta.gf | 8 + samples/Grammatical Framework/FoodsJpn.gf | 72 +++++++ samples/Grammatical Framework/FoodsLav.gf | 91 +++++++++ samples/Grammatical Framework/FoodsMlt.gf | 105 +++++++++++ samples/Grammatical Framework/FoodsMon.gf | 49 +++++ samples/Grammatical Framework/FoodsNep.gf | 60 ++++++ samples/Grammatical Framework/FoodsOri.gf | 30 +++ samples/Grammatical Framework/FoodsPes.gf | 65 +++++++ samples/Grammatical Framework/FoodsPor.gf | 77 ++++++++ samples/Grammatical Framework/FoodsRon.gf | 72 +++++++ samples/Grammatical Framework/FoodsSpa.gf | 31 +++ samples/Grammatical Framework/FoodsSwe.gf | 7 + samples/Grammatical Framework/FoodsTha.gf | 33 ++++ samples/Grammatical Framework/FoodsTsn.gf | 178 ++++++++++++++++++ samples/Grammatical Framework/FoodsTur.gf | 140 ++++++++++++++ samples/Grammatical Framework/FoodsUrd.gf | 53 ++++++ samples/Grammatical Framework/LexFoods.gf | 15 ++ samples/Grammatical Framework/LexFoodsCat.gf | 18 ++ samples/Grammatical Framework/LexFoodsFin.gf | 20 ++ samples/Grammatical Framework/LexFoodsGer.gf | 16 ++ samples/Grammatical Framework/LexFoodsIta.gf | 16 ++ samples/Grammatical Framework/LexFoodsSwe.gf | 16 ++ samples/Grammatical Framework/MutationsGla.gf | 53 ++++++ samples/Grammatical Framework/MutationsGle.gf | 92 +++++++++ samples/Grammatical Framework/ResCze.gf | 46 +++++ .../Grammatical Framework/transFoodsHin.gf | 75 ++++++++ 48 files changed, 2320 insertions(+) create mode 100644 samples/Grammatical Framework/CharactersGla.gf create mode 100644 samples/Grammatical Framework/CharactersGle.gf create mode 100644 samples/Grammatical Framework/Foods.gf create mode 100644 samples/Grammatical Framework/FoodsAfr.gf create mode 100644 samples/Grammatical Framework/FoodsAmh.gf create mode 100644 samples/Grammatical Framework/FoodsBul.gf create mode 100644 samples/Grammatical Framework/FoodsCat.gf create mode 100644 samples/Grammatical Framework/FoodsChi.gf create mode 100644 samples/Grammatical Framework/FoodsCze.gf create mode 100644 samples/Grammatical Framework/FoodsDut.gf create mode 100644 samples/Grammatical Framework/FoodsEng.gf create mode 100644 samples/Grammatical Framework/FoodsEpo.gf create mode 100644 samples/Grammatical Framework/FoodsFin.gf create mode 100644 samples/Grammatical Framework/FoodsFre.gf create mode 100644 samples/Grammatical Framework/FoodsGer.gf create mode 100644 samples/Grammatical Framework/FoodsGla.gf create mode 100644 samples/Grammatical Framework/FoodsGle.gf create mode 100644 samples/Grammatical Framework/FoodsHeb.gf create mode 100644 samples/Grammatical Framework/FoodsHin.gf create mode 100644 samples/Grammatical Framework/FoodsI.gf create mode 100644 samples/Grammatical Framework/FoodsIce.gf create mode 100644 samples/Grammatical Framework/FoodsIta.gf create mode 100644 samples/Grammatical Framework/FoodsJpn.gf create mode 100644 samples/Grammatical Framework/FoodsLav.gf create mode 100644 samples/Grammatical Framework/FoodsMlt.gf create mode 100644 samples/Grammatical Framework/FoodsMon.gf create mode 100644 samples/Grammatical Framework/FoodsNep.gf create mode 100644 samples/Grammatical Framework/FoodsOri.gf create mode 100644 samples/Grammatical Framework/FoodsPes.gf create mode 100644 samples/Grammatical Framework/FoodsPor.gf create mode 100644 samples/Grammatical Framework/FoodsRon.gf create mode 100644 samples/Grammatical Framework/FoodsSpa.gf create mode 100644 samples/Grammatical Framework/FoodsSwe.gf create mode 100644 samples/Grammatical Framework/FoodsTha.gf create mode 100644 samples/Grammatical Framework/FoodsTsn.gf create mode 100644 samples/Grammatical Framework/FoodsTur.gf create mode 100644 samples/Grammatical Framework/FoodsUrd.gf create mode 100644 samples/Grammatical Framework/LexFoods.gf create mode 100644 samples/Grammatical Framework/LexFoodsCat.gf create mode 100644 samples/Grammatical Framework/LexFoodsFin.gf create mode 100644 samples/Grammatical Framework/LexFoodsGer.gf create mode 100644 samples/Grammatical Framework/LexFoodsIta.gf create mode 100644 samples/Grammatical Framework/LexFoodsSwe.gf create mode 100644 samples/Grammatical Framework/MutationsGla.gf create mode 100644 samples/Grammatical Framework/MutationsGle.gf create mode 100644 samples/Grammatical Framework/ResCze.gf create mode 100644 samples/Grammatical Framework/transFoodsHin.gf diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 981abfbe..08d85695 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -529,6 +529,16 @@ Gosu: color: "#82937f" primary_extension: .gs +Grammatical Framework: + type: programming + lexer: haskell + aliases: + - gf + wrap: false + primary_extension: .gf + searchable: true + color: "#ff0000" + Groff: primary_extension: .man extensions: diff --git a/samples/Grammatical Framework/CharactersGla.gf b/samples/Grammatical Framework/CharactersGla.gf new file mode 100644 index 00000000..453741a5 --- /dev/null +++ b/samples/Grammatical Framework/CharactersGla.gf @@ -0,0 +1,12 @@ +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/samples/Grammatical Framework/CharactersGle.gf b/samples/Grammatical Framework/CharactersGle.gf new file mode 100644 index 00000000..4e7f454c --- /dev/null +++ b/samples/Grammatical Framework/CharactersGle.gf @@ -0,0 +1,12 @@ +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/samples/Grammatical Framework/Foods.gf b/samples/Grammatical Framework/Foods.gf new file mode 100644 index 00000000..8ea02f39 --- /dev/null +++ b/samples/Grammatical Framework/Foods.gf @@ -0,0 +1,15 @@ +-- (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/samples/Grammatical Framework/FoodsAfr.gf b/samples/Grammatical Framework/FoodsAfr.gf new file mode 100644 index 00000000..1a251ceb --- /dev/null +++ b/samples/Grammatical Framework/FoodsAfr.gf @@ -0,0 +1,76 @@ +-- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL + +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/samples/Grammatical Framework/FoodsAmh.gf b/samples/Grammatical Framework/FoodsAmh.gf new file mode 100644 index 00000000..e8915d86 --- /dev/null +++ b/samples/Grammatical Framework/FoodsAmh.gf @@ -0,0 +1,21 @@ +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/samples/Grammatical Framework/FoodsBul.gf b/samples/Grammatical Framework/FoodsBul.gf new file mode 100644 index 00000000..ac912766 --- /dev/null +++ b/samples/Grammatical Framework/FoodsBul.gf @@ -0,0 +1,43 @@ +-- (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/samples/Grammatical Framework/FoodsCat.gf b/samples/Grammatical Framework/FoodsCat.gf new file mode 100644 index 00000000..5ad38d0d --- /dev/null +++ b/samples/Grammatical Framework/FoodsCat.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Jordi Saludes under LGPL + +concrete FoodsCat of Foods = FoodsI with + (Syntax = SyntaxCat), + (LexFoods = LexFoodsCat) ; diff --git a/samples/Grammatical Framework/FoodsChi.gf b/samples/Grammatical Framework/FoodsChi.gf new file mode 100644 index 00000000..163aa0eb --- /dev/null +++ b/samples/Grammatical Framework/FoodsChi.gf @@ -0,0 +1,35 @@ +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/samples/Grammatical Framework/FoodsCze.gf b/samples/Grammatical Framework/FoodsCze.gf new file mode 100644 index 00000000..3fec6814 --- /dev/null +++ b/samples/Grammatical Framework/FoodsCze.gf @@ -0,0 +1,35 @@ +-- (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/samples/Grammatical Framework/FoodsDut.gf b/samples/Grammatical Framework/FoodsDut.gf new file mode 100644 index 00000000..d4855e5c --- /dev/null +++ b/samples/Grammatical Framework/FoodsDut.gf @@ -0,0 +1,58 @@ +-- (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/samples/Grammatical Framework/FoodsEng.gf b/samples/Grammatical Framework/FoodsEng.gf new file mode 100644 index 00000000..e7359a4f --- /dev/null +++ b/samples/Grammatical Framework/FoodsEng.gf @@ -0,0 +1,43 @@ +-- (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/samples/Grammatical Framework/FoodsEpo.gf b/samples/Grammatical Framework/FoodsEpo.gf new file mode 100644 index 00000000..dd2400fe --- /dev/null +++ b/samples/Grammatical Framework/FoodsEpo.gf @@ -0,0 +1,48 @@ +-- (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/samples/Grammatical Framework/FoodsFin.gf b/samples/Grammatical Framework/FoodsFin.gf new file mode 100644 index 00000000..34da5764 --- /dev/null +++ b/samples/Grammatical Framework/FoodsFin.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsFin of Foods = FoodsI with + (Syntax = SyntaxFin), + (LexFoods = LexFoodsFin) ; diff --git a/samples/Grammatical Framework/FoodsFre.gf b/samples/Grammatical Framework/FoodsFre.gf new file mode 100644 index 00000000..ac6c8c63 --- /dev/null +++ b/samples/Grammatical Framework/FoodsFre.gf @@ -0,0 +1,32 @@ +--# -path=.:../foods:present + +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") ; + } \ No newline at end of file diff --git a/samples/Grammatical Framework/FoodsGer.gf b/samples/Grammatical Framework/FoodsGer.gf new file mode 100644 index 00000000..934cefb9 --- /dev/null +++ b/samples/Grammatical Framework/FoodsGer.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsGer of Foods = FoodsI with + (Syntax = SyntaxGer), + (LexFoods = LexFoodsGer) ; diff --git a/samples/Grammatical Framework/FoodsGla.gf b/samples/Grammatical Framework/FoodsGla.gf new file mode 100644 index 00000000..691b26bb --- /dev/null +++ b/samples/Grammatical Framework/FoodsGla.gf @@ -0,0 +1,66 @@ +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/samples/Grammatical Framework/FoodsGle.gf b/samples/Grammatical Framework/FoodsGle.gf new file mode 100644 index 00000000..e48c0c21 --- /dev/null +++ b/samples/Grammatical Framework/FoodsGle.gf @@ -0,0 +1,59 @@ +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/samples/Grammatical Framework/FoodsHeb.gf b/samples/Grammatical Framework/FoodsHeb.gf new file mode 100644 index 00000000..3d76b639 --- /dev/null +++ b/samples/Grammatical Framework/FoodsHeb.gf @@ -0,0 +1,108 @@ +--# -path=alltenses + +--(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/samples/Grammatical Framework/FoodsHin.gf b/samples/Grammatical Framework/FoodsHin.gf new file mode 100644 index 00000000..67c29df8 --- /dev/null +++ b/samples/Grammatical Framework/FoodsHin.gf @@ -0,0 +1,75 @@ +-- (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/samples/Grammatical Framework/FoodsI.gf b/samples/Grammatical Framework/FoodsI.gf new file mode 100644 index 00000000..f4113b72 --- /dev/null +++ b/samples/Grammatical Framework/FoodsI.gf @@ -0,0 +1,29 @@ +-- (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/samples/Grammatical Framework/FoodsIce.gf b/samples/Grammatical Framework/FoodsIce.gf new file mode 100644 index 00000000..9889d5da --- /dev/null +++ b/samples/Grammatical Framework/FoodsIce.gf @@ -0,0 +1,84 @@ +--# -path=.:prelude + +-- (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 "vn" "vn" 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" "flatbkur" Fem ; + Very qual = {s = \\g,n,defOrInd => "mjg" ++ qual.s ! g ! n ! defOrInd } ; + Fresh = regAdj "ferskur" ; + Warm = regAdj "heitur" ; + Boring = regAdj "leiinlegur" ; + -- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef + Italian = adjective "talskur" "tlsk" "talskt" "talskir" "talskar" "tlsk" "talski" "talska" "talsku" ; + Expensive = adjective "dr" "dr" "drt" "drir" "drar" "dr" "dri" "dra" "dru" ; + Delicious = adjective "ljffengur" "ljffeng" "ljffengt" "ljffengir" "ljffengar" "ljffeng" "ljffengi" "ljffenga" "ljffengu" ; + + 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/samples/Grammatical Framework/FoodsIta.gf b/samples/Grammatical Framework/FoodsIta.gf new file mode 100644 index 00000000..51baf9d7 --- /dev/null +++ b/samples/Grammatical Framework/FoodsIta.gf @@ -0,0 +1,8 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsIta of Foods = FoodsI with + (Syntax = SyntaxIta), + (LexFoods = LexFoodsIta) ; + diff --git a/samples/Grammatical Framework/FoodsJpn.gf b/samples/Grammatical Framework/FoodsJpn.gf new file mode 100644 index 00000000..9525ff16 --- /dev/null +++ b/samples/Grammatical Framework/FoodsJpn.gf @@ -0,0 +1,72 @@ +--# -path=.:../lib/src/prelude + +-- (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/samples/Grammatical Framework/FoodsLav.gf b/samples/Grammatical Framework/FoodsLav.gf new file mode 100644 index 00000000..efab6345 --- /dev/null +++ b/samples/Grammatical Framework/FoodsLav.gf @@ -0,0 +1,91 @@ +--# -path=.:prelude + +-- (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/samples/Grammatical Framework/FoodsMlt.gf b/samples/Grammatical Framework/FoodsMlt.gf new file mode 100644 index 00000000..5fcd4de7 --- /dev/null +++ b/samples/Grammatical Framework/FoodsMlt.gf @@ -0,0 +1,105 @@ +-- (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/samples/Grammatical Framework/FoodsMon.gf b/samples/Grammatical Framework/FoodsMon.gf new file mode 100644 index 00000000..eda2012f --- /dev/null +++ b/samples/Grammatical Framework/FoodsMon.gf @@ -0,0 +1,49 @@ +--# -path=.:/GF/lib/src/prelude + +-- (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/samples/Grammatical Framework/FoodsNep.gf b/samples/Grammatical Framework/FoodsNep.gf new file mode 100644 index 00000000..ea02e64a --- /dev/null +++ b/samples/Grammatical Framework/FoodsNep.gf @@ -0,0 +1,60 @@ +-- (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/samples/Grammatical Framework/FoodsOri.gf b/samples/Grammatical Framework/FoodsOri.gf new file mode 100644 index 00000000..ad4f492f --- /dev/null +++ b/samples/Grammatical Framework/FoodsOri.gf @@ -0,0 +1,30 @@ +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/samples/Grammatical Framework/FoodsPes.gf b/samples/Grammatical Framework/FoodsPes.gf new file mode 100644 index 00000000..c2e631e8 --- /dev/null +++ b/samples/Grammatical Framework/FoodsPes.gf @@ -0,0 +1,65 @@ +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/samples/Grammatical Framework/FoodsPor.gf b/samples/Grammatical Framework/FoodsPor.gf new file mode 100644 index 00000000..2a497f8f --- /dev/null +++ b/samples/Grammatical Framework/FoodsPor.gf @@ -0,0 +1,77 @@ +-- (c) 2009 Rami Shashati under LGPL + +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/samples/Grammatical Framework/FoodsRon.gf b/samples/Grammatical Framework/FoodsRon.gf new file mode 100644 index 00000000..d7d917ff --- /dev/null +++ b/samples/Grammatical Framework/FoodsRon.gf @@ -0,0 +1,72 @@ +-- (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/samples/Grammatical Framework/FoodsSpa.gf b/samples/Grammatical Framework/FoodsSpa.gf new file mode 100644 index 00000000..972282ae --- /dev/null +++ b/samples/Grammatical Framework/FoodsSpa.gf @@ -0,0 +1,31 @@ +--# -path=.:present + +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/samples/Grammatical Framework/FoodsSwe.gf b/samples/Grammatical Framework/FoodsSwe.gf new file mode 100644 index 00000000..cbb35fb9 --- /dev/null +++ b/samples/Grammatical Framework/FoodsSwe.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsSwe of Foods = FoodsI with + (Syntax = SyntaxSwe), + (LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ; diff --git a/samples/Grammatical Framework/FoodsTha.gf b/samples/Grammatical Framework/FoodsTha.gf new file mode 100644 index 00000000..b031a7e2 --- /dev/null +++ b/samples/Grammatical Framework/FoodsTha.gf @@ -0,0 +1,33 @@ +--# -path=.:alltenses + +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/samples/Grammatical Framework/FoodsTsn.gf b/samples/Grammatical Framework/FoodsTsn.gf new file mode 100644 index 00000000..a7a69a1a --- /dev/null +++ b/samples/Grammatical Framework/FoodsTsn.gf @@ -0,0 +1,178 @@ +--# -path=alltenses + +-- (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/samples/Grammatical Framework/FoodsTur.gf b/samples/Grammatical Framework/FoodsTur.gf new file mode 100644 index 00000000..9d6cd035 --- /dev/null +++ b/samples/Grammatical Framework/FoodsTur.gf @@ -0,0 +1,140 @@ +{- + 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 ++ "&+" ++ 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/samples/Grammatical Framework/FoodsUrd.gf b/samples/Grammatical Framework/FoodsUrd.gf new file mode 100644 index 00000000..186b2f92 --- /dev/null +++ b/samples/Grammatical Framework/FoodsUrd.gf @@ -0,0 +1,53 @@ +-- (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/samples/Grammatical Framework/LexFoods.gf b/samples/Grammatical Framework/LexFoods.gf new file mode 100644 index 00000000..12ace208 --- /dev/null +++ b/samples/Grammatical Framework/LexFoods.gf @@ -0,0 +1,15 @@ +-- (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/samples/Grammatical Framework/LexFoodsCat.gf b/samples/Grammatical Framework/LexFoodsCat.gf new file mode 100644 index 00000000..624fc98c --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsCat.gf @@ -0,0 +1,18 @@ +-- (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/samples/Grammatical Framework/LexFoodsFin.gf b/samples/Grammatical Framework/LexFoodsFin.gf new file mode 100644 index 00000000..4cf26511 --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsFin.gf @@ -0,0 +1,20 @@ +-- (c) 2009 Aarne Ranta under LGPL + +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/samples/Grammatical Framework/LexFoodsGer.gf b/samples/Grammatical Framework/LexFoodsGer.gf new file mode 100644 index 00000000..a420e22d --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsGer.gf @@ -0,0 +1,16 @@ +-- (c) 2009 Aarne Ranta under LGPL + +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/samples/Grammatical Framework/LexFoodsIta.gf b/samples/Grammatical Framework/LexFoodsIta.gf new file mode 100644 index 00000000..11de5fcd --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsIta.gf @@ -0,0 +1,16 @@ +-- (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/samples/Grammatical Framework/LexFoodsSwe.gf b/samples/Grammatical Framework/LexFoodsSwe.gf new file mode 100644 index 00000000..72e7e3e8 --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsSwe.gf @@ -0,0 +1,16 @@ +-- (c) 2009 Aarne Ranta under LGPL + +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/samples/Grammatical Framework/MutationsGla.gf b/samples/Grammatical Framework/MutationsGla.gf new file mode 100644 index 00000000..41eb1100 --- /dev/null +++ b/samples/Grammatical Framework/MutationsGla.gf @@ -0,0 +1,53 @@ +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/samples/Grammatical Framework/MutationsGle.gf b/samples/Grammatical Framework/MutationsGle.gf new file mode 100644 index 00000000..9ae734a9 --- /dev/null +++ b/samples/Grammatical Framework/MutationsGle.gf @@ -0,0 +1,92 @@ +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/samples/Grammatical Framework/ResCze.gf b/samples/Grammatical Framework/ResCze.gf new file mode 100644 index 00000000..56b4aa6e --- /dev/null +++ b/samples/Grammatical Framework/ResCze.gf @@ -0,0 +1,46 @@ +-- (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/samples/Grammatical Framework/transFoodsHin.gf b/samples/Grammatical Framework/transFoodsHin.gf new file mode 100644 index 00000000..21d1d2ac --- /dev/null +++ b/samples/Grammatical Framework/transFoodsHin.gf @@ -0,0 +1,75 @@ +-- (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" + } ; + + } From 200473ba27e9cdcbff5cd7624f1b6fb647a007a0 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Tue, 3 Sep 2013 08:44:22 +0200 Subject: [PATCH 2/5] Change GF lexer from haskell to Haskell --- lib/linguist/languages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 08d85695..f689c58b 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -531,7 +531,7 @@ Gosu: Grammatical Framework: type: programming - lexer: haskell + lexer: Haskell aliases: - gf wrap: false From d6e3bcc8750f193b719efc2f6522194c6673bb20 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Tue, 3 Sep 2013 08:51:39 +0200 Subject: [PATCH 3/5] Remove Gla and Gle from Gf test samples --- .../Grammatical Framework/CharactersGla.gf | 12 --- .../Grammatical Framework/CharactersGle.gf | 12 --- samples/Grammatical Framework/FoodsGla.gf | 66 ------------- samples/Grammatical Framework/FoodsGle.gf | 59 ------------ samples/Grammatical Framework/MutationsGla.gf | 53 ----------- samples/Grammatical Framework/MutationsGle.gf | 92 ------------------- 6 files changed, 294 deletions(-) delete mode 100644 samples/Grammatical Framework/CharactersGla.gf delete mode 100644 samples/Grammatical Framework/CharactersGle.gf delete mode 100644 samples/Grammatical Framework/FoodsGla.gf delete mode 100644 samples/Grammatical Framework/FoodsGle.gf delete mode 100644 samples/Grammatical Framework/MutationsGla.gf delete mode 100644 samples/Grammatical Framework/MutationsGle.gf diff --git a/samples/Grammatical Framework/CharactersGla.gf b/samples/Grammatical Framework/CharactersGla.gf deleted file mode 100644 index 453741a5..00000000 --- a/samples/Grammatical Framework/CharactersGla.gf +++ /dev/null @@ -1,12 +0,0 @@ -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/samples/Grammatical Framework/CharactersGle.gf b/samples/Grammatical Framework/CharactersGle.gf deleted file mode 100644 index 4e7f454c..00000000 --- a/samples/Grammatical Framework/CharactersGle.gf +++ /dev/null @@ -1,12 +0,0 @@ -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/samples/Grammatical Framework/FoodsGla.gf b/samples/Grammatical Framework/FoodsGla.gf deleted file mode 100644 index 691b26bb..00000000 --- a/samples/Grammatical Framework/FoodsGla.gf +++ /dev/null @@ -1,66 +0,0 @@ -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/samples/Grammatical Framework/FoodsGle.gf b/samples/Grammatical Framework/FoodsGle.gf deleted file mode 100644 index e48c0c21..00000000 --- a/samples/Grammatical Framework/FoodsGle.gf +++ /dev/null @@ -1,59 +0,0 @@ -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/samples/Grammatical Framework/MutationsGla.gf b/samples/Grammatical Framework/MutationsGla.gf deleted file mode 100644 index 41eb1100..00000000 --- a/samples/Grammatical Framework/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/samples/Grammatical Framework/MutationsGle.gf b/samples/Grammatical Framework/MutationsGle.gf deleted file mode 100644 index 9ae734a9..00000000 --- a/samples/Grammatical Framework/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 From 6df8bd62d3be44b6a3fcce60c771f998ecad3178 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Tue, 3 Sep 2013 09:02:29 +0200 Subject: [PATCH 4/5] Try to fix encoding probs by converting to utf8 --- samples/Grammatical Framework/FoodsAfr.gf | 51 +++++++++++--------- samples/Grammatical Framework/FoodsIce.gf | 44 ++++++++--------- samples/Grammatical Framework/FoodsPor.gf | 38 ++++++++------- samples/Grammatical Framework/LexFoodsFin.gf | 15 +++--- samples/Grammatical Framework/LexFoodsGer.gf | 9 ++-- samples/Grammatical Framework/LexFoodsSwe.gf | 9 ++-- 6 files changed, 87 insertions(+), 79 deletions(-) diff --git a/samples/Grammatical Framework/FoodsAfr.gf b/samples/Grammatical Framework/FoodsAfr.gf index 1a251ceb..d0226710 100644 --- a/samples/Grammatical Framework/FoodsAfr.gf +++ b/samples/Grammatical Framework/FoodsAfr.gf @@ -1,76 +1,79 @@ -- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL concrete FoodsAfr of Foods = open Prelude, Predef in{ + + flags coding=utf8; + lincat Comment = {s: Str} ; Kind = {s: Number => Str} ; Item = {s: Str ; n: Number} ; Quality = {s: AdjAP => Str} ; - - lin + + 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"}}; - + {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 ; - + in mkAdj (v + "ë") w ; + declAdj_oog : Str -> {s : AdjAP=> Str} = \w -> let v = init w - in + in let i = init v - in mkAdj (i + "") w ; - + 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 + + + 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 + _ => declAdj_e a }; } diff --git a/samples/Grammatical Framework/FoodsIce.gf b/samples/Grammatical Framework/FoodsIce.gf index 9889d5da..ab1297c7 100644 --- a/samples/Grammatical Framework/FoodsIce.gf +++ b/samples/Grammatical Framework/FoodsIce.gf @@ -4,32 +4,32 @@ concrete FoodsIce of Foods = open Prelude in { ---flags coding=utf8; + 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} ; + 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" ; + 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 "vn" "vn" Neutr ; - Cheese = noun "ostur" "ostar" Masc ; - Fish = noun "fiskur" "fiskar" Masc ; + 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" "flatbkur" Fem ; - Very qual = {s = \\g,n,defOrInd => "mjg" ++ qual.s ! g ! n ! defOrInd } ; + 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 "leiinlegur" ; + 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" "tlsk" "talskt" "talskir" "talskar" "tlsk" "talski" "talska" "talsku" ; - Expensive = adjective "dr" "dr" "drt" "drir" "drar" "dr" "dri" "dra" "dru" ; - Delicious = adjective "ljffengur" "ljffeng" "ljffengt" "ljffengir" "ljffengar" "ljffeng" "ljffengi" "ljffenga" "ljffengu" ; + 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 ; @@ -37,19 +37,19 @@ concrete FoodsIce of Foods = open Prelude in { Defin = Ind | Def ; oper - det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} -> - {s : Str ; g : Gender ; n : Number} = + 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} = + noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = \man,men,g -> { s = table { Sg => man ; - Pl => men + Pl => men } ; g = g } ; @@ -65,7 +65,7 @@ concrete FoodsIce of Foods = open Prelude in { < Neutr, Pl, Ind > => fersk_pl; < Masc, Sg, Def > => ferski ; < Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ; - < _ , Pl, Def > => fersku + < _ , Pl, Def > => fersku } } ; @@ -76,7 +76,7 @@ concrete FoodsIce of Foods = open Prelude in { (fersk + "ir") (fersk + "ar") fersk (fersk + "i") (fersk + "a") (fersk + "u") ; - copula : Number -> Str = + copula : Number -> Str = \n -> case n of { Sg => "er" ; Pl => "eru" diff --git a/samples/Grammatical Framework/FoodsPor.gf b/samples/Grammatical Framework/FoodsPor.gf index 2a497f8f..6171c707 100644 --- a/samples/Grammatical Framework/FoodsPor.gf +++ b/samples/Grammatical Framework/FoodsPor.gf @@ -1,50 +1,52 @@ -- (c) 2009 Rami Shashati under LGPL concrete FoodsPor of Foods = open Prelude in { + flags coding=utf8; + lincat Comment = {s : Str} ; Quality = {s : Gender => Number => Str} ; Kind = {s : Number => Str ; g : Gender} ; Item = {s : Str ; n : Number ; g : Gender } ; - - lin + + 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"}) ; + 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 @@ -59,19 +61,19 @@ concrete FoodsPor of Foods = open Prelude in { "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"} ; + + copula : Number => Str = table {Sg => "é" ; Pl => "são"} ; } diff --git a/samples/Grammatical Framework/LexFoodsFin.gf b/samples/Grammatical Framework/LexFoodsFin.gf index 4cf26511..dbf8af6b 100644 --- a/samples/Grammatical Framework/LexFoodsFin.gf +++ b/samples/Grammatical Framework/LexFoodsFin.gf @@ -1,20 +1,21 @@ -- (c) 2009 Aarne Ranta under LGPL -instance LexFoodsFin of LexFoods = +instance LexFoodsFin of LexFoods = open SyntaxFin, ParadigmsFin in { + flags coding=utf8; 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" ; + warm_A = mkA + (mkN "lämmin" "lämpimän" "lämmintä" "lämpimänä" "lämpimään" + "lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin" + ) + "lämpimämpi" "lämpimin" ; italian_A = mkA "italialainen" ; expensive_A = mkA "kallis" ; delicious_A = mkA "herkullinen" ; - boring_A = mkA "tyls" ; + boring_A = mkA "tylsä" ; } diff --git a/samples/Grammatical Framework/LexFoodsGer.gf b/samples/Grammatical Framework/LexFoodsGer.gf index a420e22d..253384f2 100644 --- a/samples/Grammatical Framework/LexFoodsGer.gf +++ b/samples/Grammatical Framework/LexFoodsGer.gf @@ -1,16 +1,17 @@ -- (c) 2009 Aarne Ranta under LGPL -instance LexFoodsGer of LexFoods = +instance LexFoodsGer of LexFoods = open SyntaxGer, ParadigmsGer in { + flags coding=utf8; oper wine_N = mkN "Wein" ; pizza_N = mkN "Pizza" "Pizzen" feminine ; - cheese_N = mkN "Kse" "Kse" masculine ; + cheese_N = mkN "Käse" "Käse" masculine ; fish_N = mkN "Fisch" ; fresh_A = mkA "frisch" ; - warm_A = mkA "warm" "wrmer" "wrmste" ; + warm_A = mkA "warm" "wärmer" "wärmste" ; italian_A = mkA "italienisch" ; expensive_A = mkA "teuer" ; - delicious_A = mkA "kstlich" ; + delicious_A = mkA "köstlich" ; boring_A = mkA "langweilig" ; } diff --git a/samples/Grammatical Framework/LexFoodsSwe.gf b/samples/Grammatical Framework/LexFoodsSwe.gf index 72e7e3e8..f9f02c33 100644 --- a/samples/Grammatical Framework/LexFoodsSwe.gf +++ b/samples/Grammatical Framework/LexFoodsSwe.gf @@ -1,16 +1,17 @@ -- (c) 2009 Aarne Ranta under LGPL -instance LexFoodsSwe of LexFoods = +instance LexFoodsSwe of LexFoods = open SyntaxSwe, ParadigmsSwe in { + flags coding=utf8; oper wine_N = mkN "vin" "vinet" "viner" "vinerna" ; pizza_N = mkN "pizza" ; cheese_N = mkN "ost" ; fish_N = mkN "fisk" ; - fresh_A = mkA "frsk" ; + fresh_A = mkA "färsk" ; warm_A = mkA "varm" ; italian_A = mkA "italiensk" ; expensive_A = mkA "dyr" ; - delicious_A = mkA "lcker" ; - boring_A = mkA "trkig" ; + delicious_A = mkA "läcker" ; + boring_A = mkA "tråkig" ; } From 62e34caa4c2d4a620f4cee509c3219c9cc1aed3a Mon Sep 17 00:00:00 2001 From: Rick Bradley Date: Mon, 21 Apr 2014 11:46:01 -0500 Subject: [PATCH 5/5] regen samples.json on new master --- lib/linguist/samples.json | 681 +++++++++++++++++++++++++++++++++++++- 1 file changed, 678 insertions(+), 3 deletions(-) diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json index 5eaff50e..ad387e04 100644 --- a/lib/linguist/samples.json +++ b/lib/linguist/samples.json @@ -162,6 +162,9 @@ ".gsx", ".vark" ], + "Grammatical Framework": [ + ".gf" + ], "Groovy": [ ".gradle", ".script!" @@ -591,8 +594,8 @@ ".gemrc" ] }, - "tokens_total": 506816, - "languages_total": 591, + "tokens_total": 517423, + "languages_total": 632, "tokens": { "ABAP": { "*/**": 1, @@ -21839,6 +21842,676 @@ "PersonCSVTemplate.renderToString": 1, "PersonCSVTemplate.render": 1 }, + "Grammatical Framework": { + "-": 594, + "(": 256, + "c": 73, + ")": 256, + "Aarne": 13, + "Ranta": 13, + "under": 33, + "LGPL": 33, + "abstract": 1, + "Foods": 34, + "{": 579, + "flags": 32, + "startcat": 1, + "Comment": 31, + ";": 1399, + "cat": 1, + "Item": 31, + "Kind": 33, + "Quality": 34, + "fun": 1, + "Pred": 30, + "This": 29, + "That": 29, + "These": 28, + "Those": 28, + "Mod": 29, + "Wine": 29, + "Cheese": 29, + "Fish": 29, + "Pizza": 28, + "Very": 29, + "Fresh": 29, + "Warm": 29, + "Italian": 29, + "Expensive": 29, + "Delicious": 29, + "Boring": 29, + "}": 580, + "Laurette": 2, + "Pretorius": 2, + "Sr": 2, + "&": 2, + "Jr": 2, + "and": 4, + "Ansu": 2, + "Berg": 2, + "concrete": 33, + "FoodsAfr": 1, + "of": 89, + "open": 23, + "Prelude": 11, + "Predef": 3, + "in": 32, + "coding": 29, + "utf8": 29, + "lincat": 28, + "s": 365, + "Str": 394, + "Number": 207, + "n": 206, + "AdjAP": 10, + "lin": 28, + "item": 36, + "quality": 90, + "item.s": 24, + "+": 480, + "quality.s": 50, + "Predic": 3, + "kind": 115, + "kind.s": 46, + "Sg": 184, + "Pl": 182, + "table": 148, + "Attr": 9, + "declNoun_e": 2, + "declNoun_aa": 2, + "declNoun_ss": 2, + "declNoun_s": 2, + "veryAdj": 2, + "regAdj": 61, + "smartAdj_e": 4, + "param": 22, + "|": 122, + "oper": 29, + "Noun": 9, + "operations": 2, + "wyn": 1, + "kaas": 1, + "vis": 1, + "pizza": 1, + "x": 74, + "let": 8, + "v": 6, + "tk": 1, + "last": 3, + "Adjective": 9, + "mkAdj": 27, + "y": 3, + "declAdj_e": 2, + "declAdj_g": 2, + "w": 15, + "init": 4, + "declAdj_oog": 2, + "i": 2, + "a": 57, + "x.s": 8, + "case": 44, + "_": 68, + "FoodsAmh": 1, + "Krasimir": 1, + "Angelov": 1, + "FoodsBul": 1, + "Gender": 94, + "Masc": 67, + "Fem": 65, + "Neutr": 21, + "Agr": 3, + "ASg": 23, + "APl": 11, + "g": 132, + "qual": 8, + "item.a": 2, + "qual.s": 8, + "kind.g": 38, + "#": 14, + "path": 14, + ".": 13, + "present": 7, + "Jordi": 2, + "Saludes": 2, + "FoodsCat": 1, + "FoodsI": 6, + "with": 5, + "Syntax": 7, + "SyntaxCat": 2, + "LexFoods": 12, + "LexFoodsCat": 2, + "FoodsChi": 1, + "p": 11, + "quality.p": 2, + "kind.c": 11, + "geKind": 5, + "longQuality": 8, + "mkKind": 2, + "Katerina": 2, + "Bohmova": 2, + "FoodsCze": 1, + "ResCze": 2, + "NounPhrase": 3, + "copula": 33, + "item.n": 29, + "item.g": 12, + "det": 86, + "noun": 51, + "regnfAdj": 2, + "Femke": 1, + "Johansson": 1, + "FoodsDut": 1, + "AForm": 4, + "APred": 8, + "AAttr": 3, + "regNoun": 38, + "f": 16, + "a.s": 8, + "regadj": 6, + "adj": 38, + "noun.s": 7, + "man": 10, + "men": 10, + "wijn": 3, + "koud": 3, + "duur": 2, + "dure": 2, + "FoodsEng": 1, + "language": 2, + "en_US": 1, + "car": 6, + "cold": 4, + "Julia": 1, + "Hammar": 1, + "FoodsEpo": 1, + "SS": 6, + "ss": 13, + "d": 6, + "cn": 11, + "cn.s": 8, + "vino": 3, + "nova": 3, + "FoodsFin": 1, + "SyntaxFin": 2, + "LexFoodsFin": 2, + "../foods": 1, + "FoodsFre": 1, + "SyntaxFre": 1, + "ParadigmsFre": 1, + "Utt": 4, + "NP": 4, + "CN": 4, + "AP": 4, + "mkUtt": 4, + "mkCl": 4, + "mkNP": 16, + "this_QuantSg": 2, + "that_QuantSg": 2, + "these_QuantPl": 2, + "those_QuantPl": 2, + "mkCN": 20, + "mkAP": 28, + "very_AdA": 4, + "mkN": 46, + "masculine": 4, + "feminine": 2, + "mkA": 47, + "FoodsGer": 1, + "SyntaxGer": 2, + "LexFoodsGer": 2, + "alltenses": 3, + "Dana": 1, + "Dannells": 1, + "Licensed": 1, + "FoodsHeb": 2, + "Species": 8, + "mod": 7, + "Modified": 5, + "sp": 11, + "Indef": 6, + "Def": 21, + "T": 2, + "regAdj2": 3, + "F": 2, + "Type": 9, + "Adj": 4, + "m": 9, + "cn.mod": 2, + "cn.g": 10, + "gvina": 6, + "hagvina": 3, + "gvinot": 6, + "hagvinot": 3, + "defH": 7, + "replaceLastLetter": 7, + "adjective": 22, + "tov": 6, + "tova": 3, + "tovim": 3, + "tovot": 3, + "to": 6, + "c@": 3, + "italki": 3, + "italk": 4, + "Vikash": 1, + "Rauniyar": 1, + "FoodsHin": 2, + "regN": 15, + "lark": 8, + "ms": 4, + "mp": 4, + "acch": 6, + "incomplete": 1, + "this_Det": 2, + "that_Det": 2, + "these_Det": 2, + "those_Det": 2, + "wine_N": 7, + "pizza_N": 7, + "cheese_N": 7, + "fish_N": 8, + "fresh_A": 7, + "warm_A": 8, + "italian_A": 7, + "expensive_A": 7, + "delicious_A": 7, + "boring_A": 7, + "prelude": 2, + "Martha": 1, + "Dis": 1, + "Brandt": 1, + "FoodsIce": 1, + "Defin": 9, + "Ind": 14, + "the": 7, + "word": 3, + "is": 6, + "more": 1, + "commonly": 1, + "used": 2, + "Iceland": 1, + "but": 1, + "Icelandic": 1, + "for": 6, + "it": 2, + "defOrInd": 2, + "order": 1, + "given": 1, + "forms": 2, + "mSg": 1, + "fSg": 1, + "nSg": 1, + "mPl": 1, + "fPl": 1, + "nPl": 1, + "mSgDef": 1, + "f/nSgDef": 1, + "_PlDef": 1, + "masc": 3, + "fem": 2, + "neutr": 2, + "x1": 3, + "x9": 1, + "ferskur": 5, + "fersk": 11, + "ferskt": 2, + "ferskir": 2, + "ferskar": 2, + "fersk_pl": 2, + "ferski": 2, + "ferska": 2, + "fersku": 2, + "t": 28, + "": 1, + "<": 10, + "Predef.tk": 2, + "FoodsIta": 1, + "SyntaxIta": 2, + "LexFoodsIta": 2, + "../lib/src/prelude": 1, + "Zofia": 1, + "Stankiewicz": 1, + "FoodsJpn": 1, + "Style": 3, + "AdjUse": 4, + "AdjType": 4, + "quality.t": 3, + "IAdj": 4, + "Plain": 3, + "Polite": 4, + "NaAdj": 4, + "na": 1, + "adjectives": 2, + "have": 2, + "different": 1, + "as": 2, + "attributes": 1, + "predicates": 2, + "phrase": 1, + "types": 1, + "can": 1, + "form": 4, + "without": 1, + "cannot": 1, + "sakana": 6, + "chosenna": 2, + "chosen": 2, + "akai": 2, + "Inese": 1, + "Bernsone": 1, + "FoodsLav": 1, + "Q": 5, + "Q1": 5, + "q": 10, + "spec": 2, + "Q2": 3, + "specAdj": 2, + "skaists": 5, + "skaista": 2, + "skaisti": 2, + "skaistas": 2, + "skaistais": 2, + "skaistaa": 2, + "skaistie": 2, + "skaistaas": 2, + "skaist": 8, + "John": 1, + "J.": 1, + "Camilleri": 1, + "FoodsMlt": 1, + "uniAdj": 2, + "Create": 6, + "an": 2, + "full": 1, + "function": 1, + "Params": 4, + "Sing": 4, + "Plural": 2, + "iswed": 2, + "sewda": 2, + "suwed": 3, + "regular": 2, + "Param": 2, + "frisk": 4, + "eg": 1, + "tal": 1, + "buzz": 1, + "uni": 4, + "Singular": 1, + "inherent": 1, + "ktieb": 2, + "kotba": 2, + "Copula": 1, + "linking": 1, + "verb": 1, + "article": 3, + "taking": 1, + "into": 1, + "account": 1, + "first": 1, + "letter": 1, + "next": 1, + "pre": 1, + "cons@": 1, + "cons": 1, + "determinant": 1, + "Sg/Pl": 1, + "string": 1, + "default": 1, + "gender": 2, + "number": 2, + "/GF/lib/src/prelude": 1, + "Nyamsuren": 1, + "Erdenebadrakh": 1, + "FoodsMon": 1, + "prefixSS": 1, + "Dinesh": 1, + "Simkhada": 1, + "FoodsNep": 1, + "adjPl": 2, + "bor": 2, + "FoodsOri": 1, + "FoodsPes": 1, + "optimize": 1, + "noexpand": 1, + "Add": 8, + "prep": 11, + "Indep": 4, + "kind.prep": 1, + "quality.prep": 1, + "at": 3, + "a.prep": 1, + "must": 1, + "be": 1, + "written": 1, + "x4": 2, + "pytzA": 3, + "pytzAy": 1, + "pytzAhA": 3, + "pr": 4, + "": 1, + "": 1, + "": 1, + "": 1, + "": 1, + "mrd": 8, + "tAzh": 8, + "tAzhy": 2, + "Rami": 1, + "Shashati": 1, + "FoodsPor": 1, + "mkAdjReg": 7, + "QualityT": 5, + "bonito": 2, + "bonita": 2, + "bonitos": 2, + "bonitas": 2, + "pattern": 1, + "adjSozinho": 2, + "sozinho": 3, + "sozinh": 4, + "independent": 1, + "adjUtil": 2, + "util": 3, + "uteis": 3, + "smart": 1, + "paradigm": 1, + "adjcetives": 1, + "ItemT": 2, + "KindT": 4, + "num": 6, + "noun.g": 3, + "animal": 2, + "animais": 2, + "gen": 4, + "carro": 3, + "Ramona": 1, + "Enache": 1, + "FoodsRon": 1, + "NGender": 6, + "NMasc": 2, + "NFem": 3, + "NNeut": 2, + "mkTab": 5, + "mkNoun": 5, + "getAgrGender": 3, + "acesta": 2, + "aceasta": 2, + "gg": 3, + "det.s": 1, + "peste": 2, + "pesti": 2, + "scump": 2, + "scumpa": 2, + "scumpi": 2, + "scumpe": 2, + "": 1, + "": 1, + "": 1, + "": 1, + "": 1, + "ng": 1, + "": 1, + "": 1, + "": 1, + "": 1, + "": 1, + "FoodsSpa": 1, + "SyntaxSpa": 1, + "StructuralSpa": 1, + "ParadigmsSpa": 1, + "FoodsSwe": 1, + "SyntaxSwe": 2, + "LexFoodsSwe": 2, + "**": 1, + "sv_SE": 1, + "FoodsTha": 1, + "SyntaxTha": 1, + "LexiconTha": 1, + "ParadigmsTha": 1, + "R": 4, + "ResTha": 1, + "R.thword": 4, + "FoodsTsn": 1, + "NounClass": 28, + "r": 9, + "b": 9, + "Bool": 5, + "p_form": 18, + "TType": 16, + "mkPredDescrCop": 2, + "item.c": 1, + "quality.p_form": 1, + "kind.w": 4, + "mkDemPron1": 3, + "kind.q": 4, + "mkDemPron2": 3, + "mkMod": 2, + "Lexicon": 1, + "mkNounNC14_6": 2, + "mkNounNC9_10": 4, + "smartVery": 2, + "mkVarAdj": 2, + "mkOrdAdj": 4, + "mkPerAdj": 2, + "mkVerbRel": 2, + "NC9_10": 14, + "NC14_6": 14, + "P": 4, + "V": 4, + "ModV": 4, + "y.b": 1, + "True": 3, + "y.w": 2, + "y.r": 2, + "y.c": 14, + "y.q": 4, + "smartQualRelPart": 5, + "x.t": 10, + "smartDescrCop": 5, + "False": 3, + "mkVeryAdj": 2, + "x.p_form": 2, + "mkVeryVerb": 3, + "mkQualRelPart_PName": 2, + "mkQualRelPart": 2, + "mkDescrCop_PName": 2, + "mkDescrCop": 2, + "FoodsTur": 1, + "Case": 10, + "softness": 4, + "Softness": 5, + "h": 4, + "Harmony": 5, + "Reason": 1, + "excluding": 1, + "plural": 3, + "In": 1, + "Turkish": 1, + "if": 1, + "subject": 1, + "not": 2, + "human": 2, + "being": 1, + "then": 1, + "singular": 1, + "regardless": 1, + "subject.": 1, + "Since": 1, + "all": 1, + "possible": 1, + "subjects": 1, + "are": 1, + "non": 1, + "do": 1, + "need": 1, + "form.": 1, + "quality.softness": 1, + "quality.h": 1, + "quality.c": 1, + "Nom": 9, + "Gen": 5, + "a.c": 1, + "a.softness": 1, + "a.h": 1, + "I_Har": 4, + "Ih_Har": 4, + "U_Har": 4, + "Uh_Har": 4, + "Ih": 1, + "Uh": 1, + "Soft": 3, + "Hard": 3, + "overload": 1, + "mkn": 1, + "peynir": 2, + "peynirler": 2, + "[": 2, + "]": 2, + "sarap": 2, + "saraplar": 2, + "sarabi": 2, + "saraplari": 2, + "italyan": 4, + "ca": 2, + "getSoftness": 2, + "getHarmony": 2, + "See": 1, + "comment": 1, + "lines": 1, + "excluded": 1, + "copula.": 1, + "base": 4, + "*": 1, + "Shafqat": 1, + "Virk": 1, + "FoodsUrd": 1, + "coupla": 2, + "interface": 1, + "N": 4, + "A": 6, + "instance": 5, + "ParadigmsCat": 1, + "M": 1, + "MorphoCat": 1, + "M.Masc": 2, + "ParadigmsFin": 1, + "ParadigmsGer": 1, + "ParadigmsIta": 1, + "ParadigmsSwe": 1, + "resource": 1, + "ne": 2, + "muz": 2, + "muzi": 2, + "msg": 3, + "fsg": 3, + "nsg": 3, + "mpl": 3, + "fpl": 3, + "npl": 3, + "mlad": 7, + "vynikajici": 7 + }, "Groovy": { "task": 1, "echoDirListViaAntBuilder": 1, @@ -52594,6 +53267,7 @@ "GLSL": 3766, "Gnuplot": 1023, "Gosu": 410, + "Grammatical Framework": 10607, "Groovy": 69, "Groovy Server Pages": 91, "Haml": 4, @@ -52750,6 +53424,7 @@ "GLSL": 3, "Gnuplot": 6, "Gosu": 4, + "Grammatical Framework": 41, "Groovy": 2, "Groovy Server Pages": 4, "Haml": 1, @@ -52860,5 +53535,5 @@ "Xtend": 2, "YAML": 2 }, - "md5": "0c653c413ad8572c59974462a5ae4dab" + "md5": "a37b96a29c39d400ee3b98dabd43da4e" } \ No newline at end of file