mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
65 lines
2.4 KiB
Plaintext
65 lines
2.4 KiB
Plaintext
concrete FoodsPes of Foods = {
|
||
|
||
flags optimize=noexpand ; coding=utf8 ;
|
||
|
||
lincat
|
||
Comment = {s : Str} ;
|
||
Quality = {s : Add => Str; prep : Str} ;
|
||
Kind = {s : Add => Number => Str ; prep : Str};
|
||
Item = {s : Str ; n : Number};
|
||
lin
|
||
Pred item quality = {s = item.s ++ quality.s ! Indep ++ copula ! item.n} ;
|
||
This = det Sg "این" ;
|
||
That = det Sg "آن" ;
|
||
These = det Pl "این" ;
|
||
Those = det Pl "آن" ;
|
||
|
||
Mod quality kind = {s = \\a,n => kind.s ! Attr ! n ++ kind.prep ++ quality.s ! a ;
|
||
prep = quality.prep
|
||
};
|
||
Wine = regN "شراب" ;
|
||
Cheese = regN "پنیر" ;
|
||
Fish = regN "ماهى" ;
|
||
Pizza = regN "پیتزا" ;
|
||
Very a = {s = \\at => "خیلی" ++ a.s ! at ; prep = a.prep} ;
|
||
Fresh = adj "تازه" ;
|
||
Warm = adj "گرم" ;
|
||
Italian = adj "ایتالیایی" ;
|
||
Expensive = adj "گران" ;
|
||
Delicious = adj "لذىذ" ;
|
||
Boring = adj "ملال آور" ; -- it must be written as ملال آور.
|
||
|
||
param
|
||
Number = Sg | Pl ;
|
||
Add = Indep | Attr ;
|
||
oper
|
||
det : Number -> Str -> {s: Add => Number => Str ; prep : Str} -> {s : Str ; n: Number} =
|
||
\n,det,noun -> {s = det ++ noun.s ! Indep ! n ; n = n };
|
||
|
||
noun : (x1,_,_,x4 : Str) -> {s : Add => Number => Str ; prep : Str} = \pytzA, pytzAy, pytzAhA,pr ->
|
||
{s = \\a,n => case <a,n> of
|
||
{<Indep,Sg> => pytzA ; <Indep,Pl> => pytzAhA ;
|
||
<Attr,Sg> =>pytzA ; <Attr,Pl> => pytzAhA + "ى" };
|
||
prep = pr
|
||
};
|
||
|
||
regN : Str -> {s: Add => Number => Str ; prep : Str} = \mrd ->
|
||
case mrd of
|
||
{ _ + ("ا"|"ه"|"ى"|"و"|"") => noun mrd (mrd+"ى") (mrd + "ها") "";
|
||
_ => noun mrd mrd (mrd + "ها") "e"
|
||
};
|
||
|
||
adj : Str -> {s : Add => Str; prep : Str} = \tAzh ->
|
||
case tAzh of
|
||
{ _ + ("ا"|"ه"|"ى"|"و"|"") => mkAdj tAzh (tAzh ++ "ى") "" ;
|
||
_ => mkAdj tAzh tAzh "ه"
|
||
};
|
||
|
||
mkAdj : Str -> Str -> Str -> {s : Add => Str; prep : Str} = \tAzh, tAzhy, pr ->
|
||
{s = table {Indep => tAzh;
|
||
Attr => tAzhy};
|
||
prep = pr
|
||
};
|
||
copula : Number => Str = table {Sg => "است"; Pl => "هستند"};
|
||
|
||
} |