summaryrefslogtreecommitdiff
path: root/examples/foods/FoodsUrd.gf
blob: 186b2f92937586eaa1dab0f078e695c55120fcef (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
-- (c) 2009 Shafqat Virk under LGPL

concrete FoodsUrd of Foods = {

  flags coding=utf8 ;

  
	  param Number = Sg | Pl ;
        param Gender = Masc | Fem;
	  
	 oper coupla : Number -> Str =\n -> case n of {Sg => "ہے" ; Pl => "ہیں"};
	  
	 	  
      lincat
        Comment = {s : Str} ; 
	  Item = {s: Str ; n: Number ; g:Gender};
	  Kind = {s: Number => Str ; g:Gender};
        Quality = {s: Gender => Number => Str};
  
   lin
    Pred item quality = {s = item.s ++ quality.s ! item.g ! item.n ++  coupla item.n} ;
	This kind = {s = "یھ" ++ kind.s ! Sg; n= Sg ; g = kind.g } ;
	These kind = {s = "یھ" ++ kind.s ! Pl; n = Pl ; g = kind.g} ;
    That kind = {s = "وہ"  ++ kind.s ! Sg; n= Sg ; g = kind.g} ;
	Those kind = {s = "وہ" ++ kind.s ! Pl; n=Pl ; g = kind.g} ;
    Mod quality kind = {s = \\n => quality.s ! kind.g ! n  ++ kind.s ! n ;  g = kind.g};
	Wine = {s = table { Sg => "شراب" ; Pl => "شرابیں"} ; g = Fem};
    Cheese = {s = table { Sg => "پنیر" ; Pl => "پنیریں"} ; g = Fem};
    Fish = {s = table { Sg => "مچھلی" ; Pl => "مچھلیاں"} ; g = Fem};
    Pizza = {s = table { Sg => "پیزہ" ; Pl => "پیزے"} ; g = Masc};
	Very quality = {s = \\g,n => "بہت" ++ quality.s ! g ! n} ;
    Fresh = regAdj "تازہ" ;
    Warm = regAdj "گرم" ;
    Italian = regAdj "اٹا لوی" ;
    Expensive = regAdj "مہنگا" ;
    Delicious = regAdj "مزیدار" ;
    Boring = regAdj "فضول" ;
   
   oper
    regAdj : Str -> {s: Gender => Number => Str} = \a -> case a of {
        x + "ا" => mkAdj a (x+"ے") (x+"ی");
        _      => mkAdj a a a
       };
    mkAdj : Str -> Str -> Str -> {s: Gender => Number => Str} = \s,p,f -> {
      s = table {
           Masc => table {
              Sg => s;
              Pl => p
              };
           Fem => \\_ => f
         }
       };
	}