forked from GitHub/gf-core
Add FoodsChi, FoodsHeb to LPGF testsuite
This commit is contained in:
56
testsuite/lpgf/FoodsChi.gf
Normal file
56
testsuite/lpgf/FoodsChi.gf
Normal file
@@ -0,0 +1,56 @@
|
||||
concrete FoodsChi of Foods = open Prelude in {
|
||||
flags coding = utf8 ;
|
||||
lincat
|
||||
Comment, Item = Str;
|
||||
Kind = knd ;
|
||||
Quality = qual ;
|
||||
lin
|
||||
Pred = (\itm, ql ->
|
||||
case ql.hasVery of {
|
||||
True => itm ++ "是 非 常" ++ ql.s ++ ql.p ;
|
||||
False => itm ++ "是" ++ ql.s ++ ql.p } ) ;
|
||||
This kind = "这" ++ kind.c ++ kind.m ++ kind.s ;
|
||||
That kind = "那" ++ kind.c ++ kind.m ++ kind.s ;
|
||||
These kind = "这" ++ "几" ++ kind.c ++ kind.m ++ kind.s ;
|
||||
Those kind = "那" ++ "几" ++ kind.c ++ kind.m ++ kind.s ;
|
||||
Mod = modifier ;
|
||||
|
||||
Wine = geKind "酒" "瓶" ;
|
||||
Pizza = geKind "比 萨 饼" "张" ;
|
||||
Cheese = geKind "奶 酪" "块";
|
||||
Fish = geKind "鱼" "条";
|
||||
|
||||
Very = (\q -> {s = q.s ; p = q.p ; hasVery = True}) ;
|
||||
Fresh = longQuality "新 鲜" ;
|
||||
Warm = longQuality "温 热" ;
|
||||
Italian = longQuality "意 大 利 式" ;
|
||||
Expensive = longQuality "昂 贵" ;
|
||||
Delicious = longQuality "美 味" ;
|
||||
-- this technically translates to "unpalatable" instead of boring
|
||||
Boring = longQuality "难 吃" ;
|
||||
|
||||
oper
|
||||
-- lincat aliases
|
||||
qual : Type = {s,p : Str ; hasVery : Bool} ;
|
||||
knd : Type = {s,c,m : Str; hasMod : Bool} ;
|
||||
|
||||
-- Constructor functions
|
||||
mkKind : Str -> Str -> knd = \s,c ->
|
||||
{s = s ; c = c; m = ""; hasMod = False} ;
|
||||
geKind : Str -> Str -> knd = \s,cl ->
|
||||
mkKind s (classifier cl) ;
|
||||
longQuality : Str -> qual = \s ->
|
||||
{s = s ; p = "的" ; hasVery = False} ;
|
||||
modifier : qual -> knd -> knd = \q,k ->
|
||||
{ s = k.s ; c = k.c ; m = modJoin k.hasMod q k.m ;
|
||||
hasMod = True } ;
|
||||
|
||||
-- Helper functions
|
||||
classifier : Str -> Str = \s ->
|
||||
case s of {"" => "个" ; _ => s };
|
||||
modJoin : Bool -> qual -> Str -> Str = \bool, q,m ->
|
||||
case bool of {
|
||||
True => "又" ++ q.s ++ "又" ++ m ;
|
||||
False => q.s ++ q.p } ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user