mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --# -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 => \\_ => "です" } ;
 | |
| 
 | |
| }   
 |