(Hun) Add a separate table of possessive stems in CNs and NPs

This commit is contained in:
Inari Listenmaa
2020-04-24 07:23:31 +02:00
parent b1e25c2167
commit 0442c0d7a7
3 changed files with 13 additions and 2 deletions

View File

@@ -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 ;

View File

@@ -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 =

View File

@@ -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} ;