diff --git a/src/dutch/ExtendDut.gf b/src/dutch/ExtendDut.gf index 00d57f33b..93f55b28a 100644 --- a/src/dutch/ExtendDut.gf +++ b/src/dutch/ExtendDut.gf @@ -2,7 +2,11 @@ concrete ExtendDut of Extend = CatDut ** ExtendFunctor - - [PastPartAP,ICompAP,IAdvAdv] + - [PastPartAP,ICompAP,IAdvAdv, + VPS, + BaseVPS, ConsVPS, + MkVPS, ConjVPS, PredVPS + ] with (Grammar = GrammarDut) ** open @@ -12,8 +16,7 @@ concrete ExtendDut of Extend = Prelude, ParadigmsDut in { -lin - +lin --# notpresent PastPartAP vp = { --# notpresent s = \\agr,af => let aForm = case vp.isHeavy of { --# notpresent True => APred ; --# notpresent @@ -21,8 +24,81 @@ lin in (infClause [] agr vp aForm).s ! Past ! Anter ! Pos ! Sub ; --# notpresent isPre = notB vp.isHeavy ; --# notpresent } ; --# notpresent - + +lincat + VPS = {s : Order => Agr => Str} ; + [VPS] = {s1,s2 : Order => Agr => Str} ; + +lin + BaseVPS = twoTable2 Order Agr ; + ConsVPS = consrTable2 Order Agr comma ; + + PredVPS np vpi = + let + subj = np.s ! NPNom ; + agr = np.a ; + in { + s = \\o => + let verb = vpi.s ! o ! agr + in case o of { + Main => subj ++ verb ; + Inv => verb ++ subj ; ---- älskar henne och sover jag + Sub => subj ++ verb + } + } ; + + MkVPS tm p vp = { + s = \\o,agr => + let + ord = case o of { + Sub => True ; -- glue prefix to verb + _ => False + } ; + subj = [] ; + t = tm.t ; + a = tm.a ; + b = p.p ; + vform = vForm t agr.g agr.n agr.p o ; + auxv = (auxVerb vp.s.aux).s ; + vperf = vp.s.s ! VPerf APred ; + verb : Str * Str = case of { + => ; --# notpresent + => ; --# notpresent + <_, Anter> => ; --# notpresent + <_, Simul> => + } ; + fin = verb.p1 ; + neg = vp.a1 ! b ; + obj0 = vp.n0 ! agr ; + obj = vp.n2 ! agr ; + compl = obj0 ++ neg ++ obj ++ vp.a2 ++ vp.s.prefix ; + inf = + case of { --# notpresent + => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent + _ => --# notpresent + vp.inf.p1 ++ verb.p2 + } --# notpresent + ; + extra = vp.ext ; + inffin = + case of { --# notpresent + => fin ++ inf ; -- double inf --# notpresent + _ => --# notpresent + inf ++ fin --- or just auxiliary vp + } --# notpresent + in + tm.s ++ p.s ++ + case o of { + Main => subj ++ fin ++ compl ++ inf ++ extra ; + Inv => fin ++ subj ++ compl ++ inf ++ extra ; + Sub => subj ++ compl ++ inffin ++ extra + } + } ; + +lin + ConjVPS = conjunctDistrTable2 Order Agr ; + ICompAP ap = {s = \\agr => "hoe" ++ ap.s ! agr ! APred} ; IAdvAdv adv = {s = "hoe" ++ adv.s} ; -} \ No newline at end of file +}