forked from GitHub/gf-rgl
(Ara) bind CN's np field if it comes from a pronoun
This commit is contained in:
@@ -29,11 +29,13 @@ lin
|
|||||||
False => determiner c'
|
False => determiner c'
|
||||||
++ noun c'
|
++ noun c'
|
||||||
++ adj c'
|
++ adj c'
|
||||||
++ cn.np ! c' ;
|
++ bindIf cn.np.binds -- ?
|
||||||
|
++ cn.np.s ! c' ;
|
||||||
True => noun (cas c) -- deal with possessive suffix
|
True => noun (cas c) -- deal with possessive suffix
|
||||||
++ determiner c'
|
++ determiner c'
|
||||||
++ adj c'
|
++ adj c'
|
||||||
++ cn.np ! c'
|
++ bindIf cn.np.binds -- ?
|
||||||
|
++ cn.np.s ! c'
|
||||||
};
|
};
|
||||||
a = { pgn = agrP3 cn.h cn.g number;
|
a = { pgn = agrP3 cn.h cn.g number;
|
||||||
isPron = False } ;
|
isPron = False } ;
|
||||||
@@ -179,7 +181,10 @@ lin
|
|||||||
Use2N3 n3 = n3 ;
|
Use2N3 n3 = n3 ;
|
||||||
Use3N3 n3 = n3 ** {c2 = n3.c3} ;
|
Use3N3 n3 = n3 ** {c2 = n3.c3} ;
|
||||||
|
|
||||||
ComplN2 n2 np = UseN n2 ** {np = \\c => n2.c2.s ++ bindIf n2.c2.binds ++ np.s ! n2.c2.c} ;
|
ComplN2 n2 np = UseN n2 ** {
|
||||||
|
np = {s = \\c => n2.c2.s ++ bindIf n2.c2.binds ++ np.s ! n2.c2.c ;
|
||||||
|
binds = False}
|
||||||
|
} ;
|
||||||
|
|
||||||
ComplN3 n3 np = ComplN2 n3 np ** {c2 = n3.c3} ;
|
ComplN3 n3 np = ComplN2 n3 np ** {c2 = n3.c3} ;
|
||||||
|
|
||||||
@@ -195,13 +200,17 @@ lin
|
|||||||
AdvCN,
|
AdvCN,
|
||||||
SentCN = \cn,ss -> cn ** {s2 = \\n,d,c => cn.s2 ! n ! d ! c ++ ss.s} ;
|
SentCN = \cn,ss -> cn ** {s2 = \\n,d,c => cn.s2 ! n ! d ! c ++ ss.s} ;
|
||||||
|
|
||||||
ApposCN cn np = cn ** { np = \\c => cn.np ! c ++ np.s ! c } ;
|
ApposCN cn np = cn ** {
|
||||||
|
np = {s = \\c => cn.np.s ! c ++ np.s ! c ;
|
||||||
|
binds = False} -- even if it's pron, it shouldn't be a suffix
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
||||||
PossNP cn np = cn ** {
|
PossNP cn np = cn ** {
|
||||||
s = \\n,_d,c => cn.s ! n ! Const ! c ;
|
s = \\n,_d,c => cn.s ! n ! Const ! c ;
|
||||||
s2 = \\n,_d,c => cn.s2 ! n ! Const ! Gen ;
|
s2 = \\n,_d,c => cn.s2 ! n ! Const ! Gen ;
|
||||||
np = \\c => cn.np ! c ++ np.s ! Gen
|
np = {s = \\c => cn.np.s ! c ++ np.s ! Gen ;
|
||||||
|
binds = np.a.isPron} ; -- will be weird if the CN's np field already has something. but that'd be weird in any case, binds or not. /IL
|
||||||
};
|
};
|
||||||
|
|
||||||
-- : CN -> NP -> CN ; -- glass of wine
|
-- : CN -> NP -> CN ; -- glass of wine
|
||||||
|
|||||||
@@ -173,15 +173,16 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
|
|||||||
uttAP : AP -> (Gender => Str) ;
|
uttAP : AP -> (Gender => Str) ;
|
||||||
uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Indef ! Bare ; ----IL
|
uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Indef ! Bare ; ----IL
|
||||||
|
|
||||||
CN : Type = Noun ** {np : Case => Str};
|
CN : Type = Noun ** {np : {s : Case => Str ; binds : Bool}};
|
||||||
|
|
||||||
-- All fields of NP
|
-- All fields of NP
|
||||||
cn2str : CN -> Number -> State -> Case -> Str = \cn,n,s,c ->
|
cn2str : CN -> Number -> State -> Case -> Str = \cn,n,s,c ->
|
||||||
cn.s ! n ! s ! c ++
|
cn.s ! n ! s ! c ++
|
||||||
cn.s2 ! n ! s ! c ++
|
cn.s2 ! n ! s ! c ++
|
||||||
cn.np ! c ;
|
bindIf cn.np.binds ++
|
||||||
|
cn.np.s ! c ;
|
||||||
|
|
||||||
useN : Noun -> CN = \n -> n ** {np = \\_ => []} ;
|
useN : Noun -> CN = \n -> n ** {np = {s = \\_ => []; binds = False}} ;
|
||||||
|
|
||||||
uttCN : CN -> (Gender => Str) ;
|
uttCN : CN -> (Gender => Str) ;
|
||||||
uttCN cn = \\_ => cn2str cn Sg Indef Bare ;
|
uttCN cn = \\_ => cn2str cn Sg Indef Bare ;
|
||||||
|
|||||||
Reference in New Issue
Block a user