diff options
Diffstat (limited to 'contrib/summerschool/foods/FoodsHeb.gf')
| -rw-r--r-- | contrib/summerschool/foods/FoodsHeb.gf | 85 |
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 |
