summaryrefslogtreecommitdiff
path: root/examples/foods/FoodsJpn.gf
diff options
context:
space:
mode:
Diffstat (limited to 'examples/foods/FoodsJpn.gf')
-rw-r--r--examples/foods/FoodsJpn.gf72
1 files changed, 72 insertions, 0 deletions
diff --git a/examples/foods/FoodsJpn.gf b/examples/foods/FoodsJpn.gf
new file mode 100644
index 000000000..9525ff16b
--- /dev/null
+++ b/examples/foods/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 => \\_ => "です" } ;
+
+}