mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-05 09:12:51 -06:00
84 lines
1.5 KiB
Plaintext
84 lines
1.5 KiB
Plaintext
|
|
concrete NounSwa of Noun = CatSwa ** open MorphoSwa, ResSwa, Prelude in {
|
|
|
|
flags optimize=all_subs ;
|
|
|
|
lin
|
|
|
|
UseN noun = {
|
|
s = noun.s ;
|
|
s1 = noun.s ;
|
|
s2 = noun.s ;
|
|
g = noun.g ;
|
|
anim = noun.anim ;
|
|
hasAdj = False
|
|
} ;
|
|
|
|
UseN2 noun = {
|
|
s = noun.s ;
|
|
s1 = noun.s ;
|
|
s2 = noun.s ;
|
|
g = noun.g ;
|
|
anim = noun.anim ;
|
|
hasAdj = False
|
|
} ;
|
|
|
|
|
|
-- Num
|
|
|
|
NumSg = {s = \\_ => [] ; n = Sg} ;
|
|
NumPl = {s = \\_ => [] ; n = Pl} ;
|
|
|
|
|
|
DetQuant quant num = {
|
|
s = \\g,c,anim => quant.s ! num.n ! g ! anim ! c ++ num.s ! g;
|
|
n = num.n
|
|
};
|
|
|
|
AdjCN ap cn =
|
|
let
|
|
anim = cn.anim ;
|
|
g = cn.g;
|
|
mod = cn.hasAdj
|
|
in{
|
|
s = \\n => cn.s ! n ++ ap.s ! (AF n g anim) ;
|
|
s1 = \\n => cn.s1 ! n;
|
|
s2=case <mod> of {
|
|
<False> => \\n => ap.s ! (AF n g anim);
|
|
<True> => \\n => cn.s2 ! n ++ ap.s ! (AF n g anim)
|
|
};
|
|
g = g ;
|
|
anim = anim ;
|
|
hasAdj=True
|
|
|
|
} ;
|
|
|
|
|
|
--DetCN : Det -> CN -> NP ; -- mtu huyo
|
|
|
|
|
|
DetCN det cn =
|
|
let
|
|
anim = cn.anim ;
|
|
g = cn.g ;
|
|
n = det.n ;
|
|
mod = cn.hasAdj
|
|
in case <mod> of {
|
|
<False> => {
|
|
s = \\c => cn.s ! n ++ det.s ! g ! c ! anim ;
|
|
a = agr n g anim P3
|
|
} ;
|
|
<True> => {
|
|
s = \\c => cn.s1 ! n ++ det.s ! g ! c ! anim ++ cn.s2 ! n ;
|
|
a = agr n g anim P3
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|