diff --git a/src/hungarian/PhraseHun.gf b/src/hungarian/PhraseHun.gf index 68766841..8cc417d9 100644 --- a/src/hungarian/PhraseHun.gf +++ b/src/hungarian/PhraseHun.gf @@ -13,7 +13,7 @@ concrete PhraseHun of Phrase = CatHun ** open Prelude, ResHun in { -} UttIP, UttNP = \np -> {s = np.s ! NotPossessed ! Nom} ; - UttVP vp = {s = vp.obj ! ++ vp.adv ++ vp.s ! VInf} ; + UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ; UttAdv adv = adv ; UttCN cn = {s = linCN cn} ; UttCard n = {s = n.s ! Indep} ; diff --git a/src/hungarian/ResHun.gf b/src/hungarian/ResHun.gf index 55df9a1c..bbaabd65 100644 --- a/src/hungarian/ResHun.gf +++ b/src/hungarian/ResHun.gf @@ -457,7 +457,7 @@ oper -- VP VerbPhrase : Type = Verb ** { - obj : Person*Number => Str ; + obj : Str ; -- Person*Number => Str, if we want open word order in have_V2 adv : Str ; c2 : Case ; -- for RelSlash } ; -- TODO more fields @@ -467,7 +467,7 @@ oper } ; useV : Verb -> VerbPhrase = \v -> v ** { - obj = \\_ => [] ; + obj = [] ; adv = [] ; c2 = Acc ; -- TODO check } ; @@ -503,7 +503,7 @@ oper in np.s ! NotPossessed ! subjcase ++ if_then_Pol p [] "nem" ++ vp.s ! agr2vf np.agr - ++ vp.obj ! np.agr + ++ vp.obj -- ! np.agr ++ vp.adv ++ np.empty -- standard trick for prodrop+metavariable problem } ; @@ -521,7 +521,7 @@ oper SCDat => Dat } in rp.s ! n ! subjcase ++ if_then_Pol p [] "nem" - ++ vp.obj ! + ++ vp.obj -- ! ++ vp.adv ++ vp.s ! VPres rp.agr.p1 n -- variable by number } ; diff --git a/src/hungarian/SentenceHun.gf b/src/hungarian/SentenceHun.gf index e402dc22..82f884ca 100644 --- a/src/hungarian/SentenceHun.gf +++ b/src/hungarian/SentenceHun.gf @@ -15,7 +15,7 @@ lin --2 Clauses missing object noun phrases -- : NP -> VPSlash -> ClSlash ; - SlashVP np vps = predVP np (vps ** {s = vps.s ! Indef ; obj = \\_ => []}) ; + SlashVP np vps = predVP np (vps ** {s = vps.s ! Indef ; obj = []}) ; {- -- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today AdvSlash cls adv = cls ** insertAdv adv cls ; diff --git a/src/hungarian/VerbHun.gf b/src/hungarian/VerbHun.gf index c07e22ba..06cf2244 100644 --- a/src/hungarian/VerbHun.gf +++ b/src/hungarian/VerbHun.gf @@ -147,16 +147,21 @@ lin oper insertObj : ResHun.VPSlash -> NounPhrase -> VerbPhrase = \vps,np -> vps ** { - obj = \\agr => - -- have_V2 needs its object possessed by the subject - case of { - => np.s ! Poss agr.p1 agr.p2 ! vps.c2 ; - _ => np.s ! NotPossessed ! vps.c2 } ; + obj = case of { + => [] ; + _ => np.s ! NotPossessed ! vps.c2 } ; s = \\vf => -- If verb's subject case is Dat and object Nom, verb agrees with obj. - case of { - => vps.s ! np.objdef ! agr2vf np.agr; + case of { -- have_V2 needs its object possessed by the subject + => + let agr : Person*Number = case vf of { + VPres p n => ; + _ => } ; + in np.s ! Poss agr.p1 agr.p2 ! vps.c2 + ++ vps.s ! np.objdef ! agr2vf np.agr ; + + -- Default case: Verb agrees in person and number with subject _ => vps.s ! np.objdef ! vf } ; } ;