forked from GitHub/gf-rgl
(Hun) Add a separate table of possessive stems in CNs and NPs
This commit is contained in:
@@ -169,6 +169,11 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
-- : N2 -> CN ;
|
-- : N2 -> CN ;
|
||||||
UseN,UseN2 = \n -> n ** {
|
UseN,UseN2 = \n -> n ** {
|
||||||
compl = \\_,_ => [] ;
|
compl = \\_,_ => [] ;
|
||||||
|
pstems = table {
|
||||||
|
PossSg (dSg_rP3 _) => n.s ! PossdSg_PossrP3 ;
|
||||||
|
PossSg dSg_rPl1 => n.s ! PossdSg_PossrPl1 ;
|
||||||
|
PossSg dSg_rSg1P2 => n.s ! SgAccStem ;
|
||||||
|
PossPl => n.s ! PossdPl } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : N2 -> NP -> CN ;
|
-- : N2 -> NP -> CN ;
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ param
|
|||||||
|
|
||||||
SubjCase = SCNom | SCDat ; -- Limited set of subject cases
|
SubjCase = SCNom | SCDat ; -- Limited set of subject cases
|
||||||
|
|
||||||
|
CNPossStem = PossPl | PossSg PossStem ;
|
||||||
oper
|
oper
|
||||||
|
|
||||||
caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str =
|
caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str =
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ resource ResHun = NounMorphoHun ** open Prelude, Predef in {
|
|||||||
oper
|
oper
|
||||||
CNoun : Type = Noun ** {
|
CNoun : Type = Noun ** {
|
||||||
compl : Number => Case => Str ;
|
compl : Number => Case => Str ;
|
||||||
|
pstems : CNPossStem => Str ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
||||||
@@ -50,12 +51,15 @@ oper
|
|||||||
suf = case <det.n,det.dt> of {
|
suf = case <det.n,det.dt> of {
|
||||||
<Pl,DetPoss (dSg_rP3 Pl)> => "k" ;
|
<Pl,DetPoss (dSg_rP3 Pl)> => "k" ;
|
||||||
_ => det.poss ! cn.h } ;
|
_ => det.poss ! cn.h } ;
|
||||||
in applyCaseSuf suf cas cn stem casetable ;
|
in case cas of {
|
||||||
|
Nom => glue (cn.s ! stem) suf ; -- don't use applyCaseSuf, it adds BIND
|
||||||
|
_ => applyCaseSuf suf cas cn stem casetable
|
||||||
|
} ;
|
||||||
BaseNP : Type = {
|
BaseNP : Type = {
|
||||||
agr : Person*Number ;
|
agr : Person*Number ;
|
||||||
objdef : ObjDef ;
|
objdef : ObjDef ;
|
||||||
empty : Str ; -- standard trick for pro-drop
|
empty : Str ; -- standard trick for pro-drop
|
||||||
|
pstems : CNPossStem => Str ; -- Verbs might need to add poss. suffixes
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NounPhrase : Type = BaseNP ** {
|
NounPhrase : Type = BaseNP ** {
|
||||||
@@ -68,6 +72,7 @@ oper
|
|||||||
objdef = Indef ;
|
objdef = Indef ;
|
||||||
empty = [] ;
|
empty = [] ;
|
||||||
h = H_e ;
|
h = H_e ;
|
||||||
|
pstems = \\_ => [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;
|
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user