summaryrefslogtreecommitdiff
path: root/contrib/summerschool/foods/FoodsHeb.gf
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/summerschool/foods/FoodsHeb.gf')
-rw-r--r--contrib/summerschool/foods/FoodsHeb.gf85
1 files changed, 85 insertions, 0 deletions
diff --git a/contrib/summerschool/foods/FoodsHeb.gf b/contrib/summerschool/foods/FoodsHeb.gf
new file mode 100644
index 000000000..61710759c
--- /dev/null
+++ b/contrib/summerschool/foods/FoodsHeb.gf
@@ -0,0 +1,85 @@
+--# -path=alltenses
+
+-- (c) 2009 Dana Dannells under LGPL
+
+concrete FoodsHeb 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 ++ quality.s ! item.g ! item.n) ;
+ This = det Sg "זה" "זאת";
+ That = det Sg "הוא" "היא" ;
+ These = det Pl "אלה" "אלה" ;
+ Those = det Pl "הם" "הן" ;
+ Mod quality kind = {
+ s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ;
+ g = kind.g
+ } ;
+ Wine = regNoun "יין" "יינות"Fem ;
+ Cheese = regNoun "גבינה" "גבינות" Fem ;
+ Fish = regNoun "דג" "דגים" Masc ;
+ Pizza = regNoun "פיצה" "פיצוי" Fem ;
+ Very qual = {s = \\g,n => "מאוד" ++ qual.s ! g ! n} ;
+ Fresh = regAdj "טרי" ;
+ Warm = regAdj "חם" ;
+ Italian = irregAdj "איטלקי" ;
+ Expensive = regAdj "יקר" ;
+ Delicious = irregAdj "נהדר" ;
+ Boring = regAdj "משעמם";
+
+ param
+ Number = Sg | Pl ;
+ Gender = Masc | Fem ;
+
+ oper
+ det : Number -> Str -> Str -> {s : Number => Str ; g :Gender} ->
+ {s : Str ; g :Gender ; n : Number} =
+ \n,m,f,cn -> {
+ s = cn.s ! n ++ case cn.g of {Masc => m ; Fem => f} ;
+ g = cn.g ;
+ n = n
+ } ;
+
+ regNoun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
+ \gvina,gvinot,g -> {s = table {
+ Sg => gvina ;
+ Pl => gvinot
+ };
+ g=g
+ } ;
+
+ replaceLastLetter : Str -> Str = \s ->
+ init s + case last s of {
+ "מ" => "ם" ; "ן" => "נ" ; "פ" => "ף" ; "ץ" => "צ" ; "כ" => "ך" ; c => c
+ } ;
+
+ adjective : (_,_,_,_ : Str) -> {s : Gender => Number => Str} =
+ \tov,tova,tovim,tovot -> {
+ s = table {
+ Masc => table {
+ Sg => tov ;
+ Pl => tovim
+ } ;
+ Fem => table {
+ Sg => tova ;
+ Pl => tovot
+ }
+ }
+ } ;
+
+ regAdj : Str -> {s : Gender => Number => Str} = \tov ->
+ case tov of { to + c@? =>
+ adjective tov (replaceLastLetter (to + c + "ה" )) (replaceLastLetter (to + c +"ים" )) (replaceLastLetter (to + c + "ות" ))};
+
+ irregAdj : Str -> {s : Gender => Number => Str} = \italki ->
+ case italki of { italk+ c@? =>
+ adjective italki (replaceLastLetter (italk + c +"ת" )) (replaceLastLetter (italk + c+ "ים" )) (replaceLastLetter (italk + c+ "ות" ))};
+
+} -- FoodsHeb