mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--# -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  
 |