summaryrefslogtreecommitdiff
path: root/examples/foods/FoodsMkd.gf
blob: 7df2351321300d97d0758b22626969a8dda3a056 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
-- (c) 2009 Krasimir Angelov under LGPL

concrete FoodsMkd of Foods = {

flags coding = utf8 ;

lincat
    Comment = Str;
    Quality = {s : Agr => Str};
    Item = {s : Str; a : Agr};
    Kind = {s : Number => Str; g : Gender};

lin
    Pred item qual = 
       item.s ++
       case item.a of {
         ASg _ => "е";
         APl => "се"
       } ++
       qual.s ! item.a;
    This kind = {
       s = case kind.g of {
             Masc  => "овоj";
             Fem   => "оваа";
             Neutr => "ова"
           } ++
           kind.s ! Sg;
       a = ASg kind.g};
    That kind = {
       s = case kind.g of {
             Masc  => "оноj";
             Fem   => "онаа";
             Neutr => "она"
           } ++ 
           kind.s ! Sg;
       a = ASg kind.g};
    These kind = {s = "овие" ++ kind.s ! Pl; a = APl};
    Those kind = {s = "оние" ++ kind.s ! Pl; a = APl};
    Mod qual kind = {
       s = \\n => qual.s ! case n of {
                             Sg => ASg kind.g;
                             Pl => APl
                           } ++
                  kind.s ! n;
       g = kind.g};
    Wine  = {
       s = table {
             Sg => "вино";
             Pl => "вина"
       };
       g = Neutr};
    Cheese = {
       s = table {
             Sg => "сирење";
             Pl => "сирењa"
           };
       g = Neutr};
    Fish = {
       s = table {
             Sg => "риба";
             Pl => "риби"
       };
       g = Fem};
    Pizza = {
       s = table {
             Sg => "пица";
             Pl => "пици"
           };
       g = Fem
       };
    Very qual = {s = \\g => "многу" ++ qual.s ! g};
    Fresh = {
       s = table {
             ASg Masc  => "свеж";
             ASg Fem   => "свежа";
             ASg Neutr => "свежо";
             APl       => "свежи"}
       };
    Warm  = {
      s = table {
            ASg Masc  => "топол";
            ASg Fem   => "топла";
            ASg Neutr => "топло";
            APl       => "топли"}
      };
    Italian  = {
      s = table {
            ASg Masc  => "италијански";
            ASg Fem   => "италијанска";
            ASg Neutr => "италијанско";
            APl       => "италијански"}
      };
    Expensive  = {
       s = table {
             ASg Masc  => "скап";
             ASg Fem   => "скапа";
             ASg Neutr => "скапо";
             APl       => "скапи"}
       };
    Delicious  = {
       s = table {
             ASg Masc  => "вкусен";
             ASg Fem   => "вкусна";
             ASg Neutr => "вкусно";
             APl       => "вкусни"}
       };
    Boring  = {
       s = table {
             ASg Masc  => "досаден";
             ASg Fem   => "досадна";
             ASg Neutr => "досадно";
             APl       => "досадни"}
       };

param
    Gender = Masc | Fem | Neutr;
    Number = Sg | Pl;
    Agr = ASg Gender | APl;

}