mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
-- (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"
 | 
						|
      } ;
 | 
						|
 | 
						|
  }
 |