summaryrefslogtreecommitdiff
path: root/examples/foods/FoodsDut.gf
blob: d4855e5c6d018621679489586c4d69e4b7b7a239 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
-- (c) 2009 Femke Johansson under LGPL

concrete FoodsDut of Foods = {

	lincat
		Comment = {s : Str};
		Quality = {s : AForm => Str};
		Kind = { s : Number => Str};
		Item = {s : Str ; n : Number};
	
	lin
		Pred item quality = 
			{s = item.s ++ copula ! item.n ++ quality.s ! APred};
		This = det Sg "deze";
		These = det Pl "deze";
		That = det Sg "die";
		Those = det Pl "die";
		
		Mod quality kind =
			{s = \\n => quality.s ! AAttr ++ kind.s ! n};
			Wine = regNoun "wijn";
			Cheese = noun "kaas" "kazen";
			Fish = noun "vis" "vissen";
			Pizza = noun "pizza" "pizza's";
			
			Very a = {s = \\f => "erg" ++ a.s ! f};
			
			Fresh = regadj "vers";
			Warm = regadj "warm";
			Italian = regadj "Italiaans";
			Expensive = adj "duur" "dure";
			Delicious = regadj "lekker";
			Boring = regadj "saai";
		
		param
			Number = Sg | Pl;
			AForm = APred | AAttr;
		
		oper
			det : Number -> Str ->
				{s : Number => Str} -> {s : Str ; n: Number} =
				\n,det,noun -> {s = det ++ noun.s ! n ; n=n};
				
			noun : Str -> Str -> {s : Number => Str} = 
				\man,men -> {s = table {Sg => man; Pl => men}};
				
			regNoun : Str -> {s : Number => Str} =
				\wijn -> noun wijn (wijn + "en");
				
			regadj : Str -> {s : AForm => Str} =
				\koud -> adj koud (koud+"e");
			
			adj : Str -> Str -> {s : AForm => Str} =
				\duur, dure -> {s = table {APred => duur; AAttr => dure}};
				
			copula : Number => Str =
				table {Sg => "is" ; Pl => "zijn"};
}