diff --git a/src/hungarian/NounHun.gf b/src/hungarian/NounHun.gf index c132d348..b82df430 100644 --- a/src/hungarian/NounHun.gf +++ b/src/hungarian/NounHun.gf @@ -185,7 +185,7 @@ concrete NounHun of Noun = CatHun ** open -- : Pron -> Quant PossPron pron = pron ** { - s,sp = \\_ => pron.s ; + s,sp = \\_,_ => pre {"a" ; "az" / v} ++ pron.s ! Nom ; dt = DetPoss (agr2pstem pron.agr) ; caseagr = False ; } ; diff --git a/src/hungarian/ParamHun.gf b/src/hungarian/ParamHun.gf index bc40edc4..64e2f376 100644 --- a/src/hungarian/ParamHun.gf +++ b/src/hungarian/ParamHun.gf @@ -201,13 +201,6 @@ param | VPres Person Number | VPast Person Number ; -oper - agr2vf : Tense -> Person*Number -> VForm = \t,pn -> - case of { - => VPast p n ; - <_,p,n> => VPres p n - } ; - -------------------------------------------------------------------------------- -- Clauses diff --git a/src/hungarian/ResHun.gf b/src/hungarian/ResHun.gf index 1c7d87c8..71c5cd05 100644 --- a/src/hungarian/ResHun.gf +++ b/src/hungarian/ResHun.gf @@ -436,6 +436,22 @@ oper mkVerb2 : Str -> Verb2 = \sg3 -> vtov2 (mkVerb sg3) ; mkVerb3 : Str -> Verb3 = \sg3 -> v2tov3 (mkVerb2 sg3) ; + futureAux : ObjDef -> Person -> Number -> Str = \od,p,n -> + case of { + => "fogok" ; + => "fogsz" ; + => "fog" ; + => "fogunk" ; + => "fogtok" ; + => "fognak" ; + => "fogom" ; + => "fogod" ; + => "fogja" ; + => "fogjuk" ; + => "fogjátok" ; + => "fogják" + } ; + vtov2 : Verb -> Verb2 = \v -> v ** { s = table { Def => let vDef : Verb = mkVerbRegPast endingsDef endingsPastDef @@ -576,7 +592,11 @@ oper SCDat => Dat } in linNP' NoPoss subjcase np ++ if_then_Pol p [] "nem" - ++ vp.s ! agr2vf t np.agr + ++ case of { + => vp.s ! VPast p n ; + => futureAux Indef p n ++ vp.s ! VInf ; + <_,p,n> => vp.s ! VPres p n + } ++ vp.obj -- ! np.agr ++ vp.adv ++ np.empty -- standard trick for prodrop+metavariable problem @@ -597,7 +617,11 @@ oper ++ if_then_Pol p [] "nem" ++ vp.obj -- ! ++ vp.adv - ++ vp.s ! agr2vf t -- variable by number + ++ case of { + => vp.s ! VPast p n ; + => futureAux Indef p n ++ vp.s ! VInf ; + <_,p,n> => vp.s ! VPres p n + } -- variable by number } ; relSlash : RP -> ClSlash -> RClause = \rp,cls -> {