mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			179 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --# -path=alltenses
 | |
| 
 | |
| -- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL
 | |
| 
 | |
| concrete FoodsTsn of Foods = open Prelude, Predef in {
 | |
| 	flags coding = utf8;
 | |
| 	lincat
 | |
| 		Comment = {s:Str};
 | |
| 		Item = {s:Str; c:NounClass; n:Number};
 | |
| 		Kind = {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool};
 | |
| 		Quality = {s: NounClass => Number => Str; p_form: Str; t: TType};
 | |
| 	lin	
 | |
| 		Pred item quality = {s = item.s ++ ((mkPredDescrCop quality.t) ! item.c ! item.n) ++ quality.p_form};
 | |
| 
 | |
| 		This kind = {s = (kind.w ! Sg) ++ (mkDemPron1 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg};
 | |
| 		That kind = {s = (kind.w ! Sg) ++ (mkDemPron2 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg};
 | |
| 		These kind = {s = (kind.w ! Pl) ++ (mkDemPron1 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl};
 | |
| 		Those kind = {s = (kind.w ! Pl) ++ (mkDemPron2 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl};	
 | |
| 		
 | |
| 		Mod quality kind = mkMod quality kind;
 | |
| 
 | |
| 	-- Lexicon
 | |
| 		Wine = mkNounNC14_6 "jalwa";
 | |
| 		Cheese = mkNounNC9_10 "kase";
 | |
| 		Fish = mkNounNC9_10 "thlapi";
 | |
| 		Pizza = mkNounNC9_10 "pizza";
 | |
| 		Very quality = smartVery quality; 
 | |
| 		Fresh = mkVarAdj "ntsha";
 | |
| 		Warm = mkOrdAdj "bothitho";
 | |
| 		Italian = mkPerAdj "Itali";
 | |
| 		Expensive = mkVerbRel "tura"; 
 | |
| 		Delicious = mkOrdAdj "monate";
 | |
| 		Boring = mkOrdAdj "bosula";
 | |
| 		
 | |
| 	param
 | |
| 		NounClass = NC9_10 | NC14_6;
 | |
| 		Number = Sg | Pl;
 | |
| 		TType = P | V | ModV | R ;				
 | |
| 	oper
 | |
| 		mkMod : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; 
 | |
| 		b: Bool} = \x,y -> case y.b of
 | |
| 		{
 | |
| 			True => {w = y.w; r = y.r; c = y.c; 
 | |
| 				q = table {
 | |
| 				Sg => ((y.q ! Sg) ++ "le" ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! 					y.c ! Sg) ++ (x.s ! y.c ! Sg)); 
 | |
| 				Pl => ((y.q ! Pl) ++ "le" ++ ((smartQualRelPart (x.t))! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! 					y.c ! Pl) ++(x.s ! y.c ! Pl))
 | |
| 				  }; b = True
 | |
| 				};
 | |
| 			False => {w = y.w; r = y.r; c = y.c; 
 | |
| 				q = table {
 | |
| 				Sg => ((y.q ! Sg) ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) 					++ (x.s ! y.c ! Sg)); 
 | |
| 				Pl => ((y.q ! Pl) ++ ((smartQualRelPart (x.t)) ! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) 					++(x.s ! y.c ! Pl))
 | |
| 				  }; b = True
 | |
| 				}
 | |
| 		};
 | |
| 
 | |
| 		mkNounNC14_6 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "bo" + x; Pl => "ma" + x}; r = x; c = NC14_6; 
 | |
| 		q = table {Sg => ""; Pl => ""}; b = False};
 | |
| 		
 | |
| 		mkNounNC9_10 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "" + x; Pl => "di" + x}; r = x; c = NC9_10; 
 | |
| 		q = table {Sg => ""; Pl => ""}; b = False};
 | |
| 
 | |
| 		mkVarAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> 
 | |
| 		{
 | |
| 			s = table {
 | |
| 				NC9_10 => table {Sg => "" + x; Pl => "di" + x};
 | |
| 				NC14_6 => table {Sg => "bo" + x; Pl => "ma" + x}
 | |
| 				};
 | |
| 			p_form = x;
 | |
| 			t = R;
 | |
| 		};
 | |
| 
 | |
| 		mkOrdAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> 
 | |
| 		{
 | |
| 			s = table {
 | |
| 				NC9_10 => table {Sg => "" + x; Pl => "" + x};
 | |
| 				NC14_6 => table {Sg => "" + x; Pl => "" + x}
 | |
| 				};
 | |
| 			p_form = x;
 | |
| 			t = R;
 | |
| 		};
 | |
| 
 | |
| 		mkVerbRel : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> 
 | |
| 		{
 | |
| 			s = table {
 | |
| 				NC9_10 => table {Sg => x + "ng"; Pl => x + "ng"};
 | |
| 				NC14_6 => table {Sg => x + "ng"; Pl => x + "ng"}
 | |
| 				};
 | |
| 			p_form = x;
 | |
| 			t = V;
 | |
| 		};
 | |
| 
 | |
| 		mkPerAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> 
 | |
| 		{
 | |
| 			s = table {
 | |
| 				NC9_10 => table {Sg => "" + x; Pl => "" + x};
 | |
| 				NC14_6 => table {Sg => "" + x; Pl => "" + x}
 | |
| 				};
 | |
| 			p_form = "mo" ++ x;
 | |
| 			t = P;
 | |
| 		};
 | |
| 
 | |
| 		mkVeryAdj : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
 | |
| 		{
 | |
| 			s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = x.t
 | |
| 		};
 | |
| 
 | |
| 		mkVeryVerb : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
 | |
| 		{
 | |
| 			s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = ModV
 | |
| 		};
 | |
| 
 | |
| 		smartVery : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = 
 | |
| \x -> case x.t of --(x.s!c!n)
 | |
| 		{
 | |
| 			(V | ModV)	=>	mkVeryVerb x;
 | |
| 			--ModV	=>	mkVeryVerb x;
 | |
| 			_	=>	mkVeryAdj x
 | |
| 		};
 | |
| 
 | |
| 		mkDemPron1 : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "e"; Pl => "tse"};
 | |
| 				NC14_6 => table {Sg => "bo"; Pl => "a"}
 | |
| 			};
 | |
| 		
 | |
| 		mkDemPron2 : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "eo"; Pl => "tseo"};
 | |
| 				NC14_6 => table {Sg => "boo"; Pl => "ao"}
 | |
| 			};
 | |
| 
 | |
| 		smartQualRelPart : TType -> (NounClass => Number => Str) = \x -> case x of 
 | |
| 		{
 | |
| 			P	=> mkQualRelPart_PName;
 | |
| 			_	=> mkQualRelPart
 | |
| 		};
 | |
| 
 | |
| 		mkQualRelPart : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "e"; Pl => "tse"};
 | |
| 				NC14_6 => table {Sg => "bo"; Pl => "a"}
 | |
| 			};
 | |
| 
 | |
| 		mkQualRelPart_PName : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "ya"; Pl => "tsa"};
 | |
| 				NC14_6 => table {Sg => "ba"; Pl => "a"}
 | |
| 			};
 | |
| 
 | |
| 		smartDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of
 | |
| 		{
 | |
| 			P	=> mkDescrCop_PName;
 | |
| 			_	=> mkDescrCop
 | |
| 		};
 | |
| 
 | |
| 		mkDescrCop : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "e"; Pl => "di"};
 | |
| 				NC14_6 => table {Sg => "bo"; Pl => "a"}
 | |
| 			};
 | |
| 
 | |
| 		mkDescrCop_PName : NounClass => Number => Str = table
 | |
| 			{
 | |
| 				NC9_10 => table {Sg => "ga"; Pl => "ga"};
 | |
| 				NC14_6 => table {Sg => "ga"; Pl => "ga"}
 | |
| 			};
 | |
| 
 | |
| 		mkPredDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of
 | |
| 			{
 | |
| 				V => table 	{NC9_10 => table {Sg => "e" ++ "a"; Pl => "di" ++ "a"};
 | |
| 						NC14_6 => table {Sg => "bo" ++ "a"; Pl => "a" ++ "a"}};
 | |
| 
 | |
| 				_ => table	{NC9_10 => table {Sg => "e"; Pl => "di"};
 | |
| 						NC14_6 => table {Sg => "bo"; Pl => "a"}}
 | |
| 			};
 | |
| 
 | |
| }
 |