diff --git a/src/hungarian/NounHun.gf b/src/hungarian/NounHun.gf index 11790168..6c3ec0d3 100644 --- a/src/hungarian/NounHun.gf +++ b/src/hungarian/NounHun.gf @@ -169,6 +169,11 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in { -- : N2 -> CN ; UseN,UseN2 = \n -> n ** { 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 ; diff --git a/src/hungarian/ParamHun.gf b/src/hungarian/ParamHun.gf index af7d8d23..dbcf51f8 100644 --- a/src/hungarian/ParamHun.gf +++ b/src/hungarian/ParamHun.gf @@ -75,6 +75,7 @@ param SubjCase = SCNom | SCDat ; -- Limited set of subject cases + CNPossStem = PossPl | PossSg PossStem ; oper caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str = diff --git a/src/hungarian/ResHun.gf b/src/hungarian/ResHun.gf index a48b990e..0c1a14c6 100644 --- a/src/hungarian/ResHun.gf +++ b/src/hungarian/ResHun.gf @@ -15,6 +15,7 @@ resource ResHun = NounMorphoHun ** open Prelude, Predef in { oper CNoun : Type = Noun ** { compl : Number => Case => Str ; + pstems : CNPossStem => Str ; } ; mkCaseNoun : Str -> Number => Case => Str = \s -> @@ -50,12 +51,15 @@ oper suf = case of { => "k" ; _ => 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 = { agr : Person*Number ; objdef : ObjDef ; empty : Str ; -- standard trick for pro-drop + pstems : CNPossStem => Str ; -- Verbs might need to add poss. suffixes } ; NounPhrase : Type = BaseNP ** { @@ -68,6 +72,7 @@ oper objdef = Indef ; empty = [] ; h = H_e ; + pstems = \\_ => [] ; } ; indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;