summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-03-05 07:22:57 +0000
committeraarne <aarne@chalmers.se>2010-03-05 07:22:57 +0000
commitefd1b5f252963ef869da2f0d1179838202ad428c (patch)
tree12e9e9e3f0ad3ac3564fa2eed1c83c1df4becb77
parent8e344646f01e2d97774eb2b99ceba189afd1ef23 (diff)
fixes in FoodsUrd and DemoRon compilation
-rw-r--r--contrib/summerschool/foods/FoodsUrd.gf84
1 files changed, 53 insertions, 31 deletions
diff --git a/contrib/summerschool/foods/FoodsUrd.gf b/contrib/summerschool/foods/FoodsUrd.gf
index a1685b17f..186b2f929 100644
--- a/contrib/summerschool/foods/FoodsUrd.gf
+++ b/contrib/summerschool/foods/FoodsUrd.gf
@@ -1,31 +1,53 @@
-concrete FoodsUrd of Foods = {
- flags coding = utf8 ;
- param Number = Sg | Pl ;
-
- oper coupla : Number -> Str =\n -> case n of {Sg => "ہے" ; Pl => "ہیں"};
-
-
- lincat
- Comment, Quality = {s : Str} ;
- Item = {s: Str ; n: Number};
- Kind = {s: Number => Str};
-
- lin
- Pred item quality = {s = item.s ++ quality.s ++ coupla item.n} ;
- This kind = {s = "یھ" ++ kind.s ! Sg; n= Sg} ;
- These kind = {s = "یھ" ++ kind.s ! Pl; n = Pl} ;
- That kind = {s = "وہ" ++ kind.s ! Sg; n= Sg} ;
- Those kind = {s = "وہ" ++ kind.s ! Pl; n=Pl} ;
- Mod quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
- Wine = {s = table { Sg => "شراب" ; Pl => "شرابیں"} };
- Cheese = {s = table { Sg => "پنیر" ; Pl => "پنیریں"} };
- Fish = {s = table { Sg => "مچھلی" ; Pl => "مچھلیاں"} };
- Pizza = {s = table { Sg => "پیزہ" ; Pl => "پیزے"} };
- Very quality = {s = "بہت" ++ quality.s} ;
- Fresh = {s = "تازہ"} ;
- Warm = {s = "گرم"} ;
- Italian = {s = "اٹا لوی"} ;
- Expensive = {s = "مہنگا"} ;
- Delicious = {s = "مزیدار"} ;
- Boring = {s = "فضول"} ;
- }
+-- (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
+ }
+ };
+ } \ No newline at end of file