From 200b1d5473bdf31f78a8a1a52078a182194a4ce9 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 17 Nov 2009 10:29:33 +0000 Subject: [PATCH] Dutch syntax complete (but not checked) --- lib/src/dutch/AdjectiveDut.gf | 80 +++++++++--------- lib/src/dutch/AdverbDut.gf | 16 ++-- lib/src/dutch/ConjunctionDut.gf | 85 +++++++++---------- lib/src/dutch/IdiomDut.gf | 94 ++++++++++----------- lib/src/dutch/NounDut.gf | 145 ++++++++++++++++---------------- lib/src/dutch/PhraseDut.gf | 10 +-- lib/src/dutch/RelativeDut.gf | 22 +++-- lib/src/dutch/ResDut.gf | 42 ++++----- lib/src/dutch/SentenceDut.gf | 34 ++++---- lib/src/dutch/VerbDut.gf | 99 +++++++++++----------- lib/src/german/ResGer.gf | 2 +- 11 files changed, 309 insertions(+), 320 deletions(-) diff --git a/lib/src/dutch/AdjectiveDut.gf b/lib/src/dutch/AdjectiveDut.gf index 08ba64627..dcc2f5e5d 100644 --- a/lib/src/dutch/AdjectiveDut.gf +++ b/lib/src/dutch/AdjectiveDut.gf @@ -14,46 +14,44 @@ concrete AdjectiveDut of Adjective = CatDut ** open ResDut, Prelude in s = \\af => a.s ! Compar ! af ++ "dan" ++ np.s ! NPNom ; isPre = True } ; --- CAdvAP ad ap np = { --- s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! Nom ; --- isPre = False --- } ; --- UseComparA a = { --- s = \\af => a.s ! Compar ! af ; --- isPre = True --- } ; --- AdjOrd a = { --- s = a.s ; --- isPre = True --- } ; --- ----- $SuperlA$ belongs to determiner syntax in $Noun$. --- --- ComplA2 a np = { --- s = \\af => a.s ! Posit ! af ++ appPrep a.c2 np.s ; --- isPre = True --- } ; --- --- ReflA2 a = { --- s = \\af => a.s ! Posit ! APred ++ appPrep a.c2 (reflPron ! agrP3 Sg) ; --- agr --- isPre = True --- } ; --- --- SentAP ap sc = { --- s = \\a => ap.s ! a ++ sc.s ; --- isPre = False --- } ; --- --- AdAP ada ap = { --- s = \\a => ada.s ++ ap.s ! a ; --- isPre = ap.isPre --- } ; --- --- UseA2 a = { --- s = a.s ! Posit ; --- isPre = True --- } ; --- ---} + CAdvAP ad ap np = { + s = \\af => ad.s ++ ap.s ! af ++ ad.p ++ np.s ! NPNom ; + isPre = False + } ; + UseComparA a = { + s = \\af => a.s ! Compar ! af ; + isPre = True + } ; + AdjOrd a = { + s = a.s ; + isPre = True + } ; + +-- $SuperlA$ belongs to determiner syntax in $Noun$. + + ComplA2 a np = { + s = \\af => a.s ! Posit ! af ++ appPrep a.c2 np.s ; + isPre = True + } ; + + ReflA2 a = { + s = \\af => a.s ! Posit ! APred ++ appPrep a.c2 (\\_ => reflPron ! agrP3 Sg) ; --- agr + isPre = True + } ; + + SentAP ap sc = { + s = \\a => ap.s ! a ++ sc.s ; + isPre = False + } ; + + AdAP ada ap = { + s = \\a => ada.s ++ ap.s ! a ; + isPre = ap.isPre + } ; + + UseA2 a = { + s = a.s ! Posit ; + isPre = True + } ; } diff --git a/lib/src/dutch/AdverbDut.gf b/lib/src/dutch/AdverbDut.gf index f4f9e6d0f..c249dfa0d 100644 --- a/lib/src/dutch/AdverbDut.gf +++ b/lib/src/dutch/AdverbDut.gf @@ -4,12 +4,12 @@ concrete AdverbDut of Adverb = CatDut ** open ResDut, Prelude in { lin PositAdvAdj a = {s = a.s ! Posit ! APred} ; --- ComparAdvAdj cadv a np = { --- s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! Nom --- } ; --- ComparAdvAdjS cadv a s = { --- s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub --- } ; + ComparAdvAdj cadv a np = { + s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ np.s ! NPNom + } ; + ComparAdvAdjS cadv a s = { + s = cadv.s ++ a.s ! Posit ! APred ++ cadv.p ++ s.s ! Sub + } ; PrepNP prep np = {s = appPrep prep.s np.s} ; @@ -17,6 +17,6 @@ concrete AdverbDut of Adverb = CatDut ** open ResDut, Prelude in { SubjS subj s = {s = subj.s ++ s.s ! Sub} ; --- AdnCAdv cadv = {s = cadv.s ++ conjThan} ; --- + AdnCAdv cadv = {s = cadv.s ++ conjThan} ; + } diff --git a/lib/src/dutch/ConjunctionDut.gf b/lib/src/dutch/ConjunctionDut.gf index c64995543..f75b6823d 100644 --- a/lib/src/dutch/ConjunctionDut.gf +++ b/lib/src/dutch/ConjunctionDut.gf @@ -1,49 +1,42 @@ concrete ConjunctionDut of Conjunction = - CatDut ** open ResDut, Coordination, Prelude in -{ ---{ --- --- flags optimize=all_subs ; --- --- lin --- --- ConjS conj ss = conjunctDistrTable Order conj ss ; --- --- ConjAdv conj ss = conjunctDistrSS conj ss ; --- --- ConjNP conj ss = conjunctDistrTable Case conj ss ** { --- a = {g = Fem ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} --- } ; --- --- ConjAP conj ss = conjunctDistrTable AForm conj ss ** { --- isPre = ss.isPre --- } ; --- --- ConjRS conj ss = conjunctDistrTable GenNum conj ss ** { --- c = ss.c --- } ; --- --- ----- These fun's are generated from the list cat's. --- --- BaseS = twoTable Order ; --- ConsS = consrTable Order comma ; --- BaseAdv = twoSS ; --- ConsAdv = consrSS comma ; --- BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ; --- ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ; --- BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ; --- ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ; --- BaseRS x y = twoTable GenNum x y ** {c = y.c} ; --- ConsRS xs x = consrTable GenNum comma xs x ** {c = xs.c} ; --- --- lincat --- [S] = {s1,s2 : Order => Str} ; --- [Adv] = {s1,s2 : Str} ; --- [NP] = {s1,s2 : Case => Str ; a : Agr} ; --- [AP] = {s1,s2 : AForm => Str ; isPre : Bool} ; --- [RS] = {s1,s2 : GenNum => Str ; c : Case} ; --- ---} + CatDut ** open ResDut, Coordination, Prelude in { + + flags optimize=all_subs ; + + lin + + ConjS conj ss = conjunctDistrTable Order conj ss ; + + ConjAdv conj ss = conjunctDistrSS conj ss ; + + ConjNP conj ss = conjunctDistrTable NPCase conj ss ** { + a = {g = Utr ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} + } ; + + ConjAP conj ss = conjunctDistrTable AForm conj ss ** { + isPre = ss.isPre + } ; + + ConjRS conj ss = conjunctDistrTable2 Gender Number conj ss ; + +-- These fun's are generated from the list cat's. + + BaseS = twoTable Order ; + ConsS = consrTable Order comma ; + BaseAdv = twoSS ; + ConsAdv = consrSS comma ; + BaseNP x y = twoTable NPCase x y ** {a = conjAgr x.a y.a} ; + ConsNP xs x = consrTable NPCase comma xs x ** {a = conjAgr xs.a x.a} ; + BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ; + ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ; + BaseRS x y = twoTable2 Gender Number x y ** {c = y.c} ; + ConsRS xs x = consrTable2 Gender Number comma xs x ; + + lincat + [S] = {s1,s2 : Order => Str} ; + [Adv] = {s1,s2 : Str} ; + [NP] = {s1,s2 : NPCase => Str ; a : Agr} ; + [AP] = {s1,s2 : AForm => Str ; isPre : Bool} ; + [RS] = {s1,s2 : Gender => Number => Str} ; } diff --git a/lib/src/dutch/IdiomDut.gf b/lib/src/dutch/IdiomDut.gf index 386dfa7c1..fffbed849 100644 --- a/lib/src/dutch/IdiomDut.gf +++ b/lib/src/dutch/IdiomDut.gf @@ -1,50 +1,50 @@ concrete IdiomDut of Idiom = CatDut ** - open MorphoDut, ParadigmsDut, Prelude in -{ ---{ --- --- flags optimize=all_subs ; --- --- lin --- ImpersCl vp = mkClause "es" (agrP3 Sg) vp ; --- GenericCl vp = mkClause "man" (agrP3 Sg) vp ; --- --- CleftNP np rs = mkClause "es" (agrP3 Sg) --- (insertExtrapos (rs.s ! gennum np.a.g np.a.n) ---- --- (insertObj (\\_ => np.s ! rs.c) (predV MorphoDut.sein_V))) ; --- --- CleftAdv ad s = mkClause "es" (agrP3 Sg) --- (insertExtrapos (conjThat ++ s.s ! Sub) --- (insertObj (\\_ => ad.s) (predV MorphoDut.sein_V))) ; --- --- --- ExistNP np = --- mkClause "es" (agrP3 Sg) --- (insertObj (\\_ => appPrep geben.c2 np.s) --- (predV geben)) ; --- --- ExistIP ip = { --- s = \\m,t,a,p => --- let --- cls = --- (mkClause "es" (agrP3 Sg) (predV geben)).s ! m ! t ! a ! p ; --- who = ip.s ! Acc --- in table { --- QDir => who ++ cls ! Inv ; --- QIndir => who ++ cls ! Sub --- } --- } ; --- --- ProgrVP = insertAdv "eben" ; ---- --- --- ImpPl1 vp = {s = --- (mkClause "wir" {g = Fem ; n = Pl ; p = P1} vp).s ! --- MConjunct ! Pres ! Simul ! Pos ! Inv --- } ; --- --- oper --- geben = dirV2 (mk6V "geben" "gibt" "gib" "gab" "gäbe" "gegeben") ; ---} --- + open MorphoDut, ParadigmsDut, IrregDut, Prelude in { + + flags optimize=all_subs ; + + lin + ImpersCl vp = mkClause "'t" (agrP3 Sg) vp ; + GenericCl vp = mkClause "men" (agrP3 Sg) vp ; + + CleftNP np rs = mkClause "'t" (agrP3 Sg) + (insertExtrapos (rs.s ! np.a.g ! np.a.n) ---- + (insertObj (\\_ => np.s ! NPNom) (predV zijn_V))) ; + + CleftAdv ad s = mkClause "'t" (agrP3 Sg) + (insertExtrapos (conjThat ++ s.s ! Sub) + (insertObj (\\_ => ad.s) (predV zijn_V))) ; + + ExistNP np = + mkClause "er" (agrP3 np.a.n) + (insertObj (\\_ => np.s ! NPNom) + (predV zijn_V)) ; + + ExistIP ip = { + s = \\t,a,p => + let + cls = + (mkClause "er" (agrP3 ip.n) (predV zijn_V)).s ! t ! a ! p ; + who = ip.s ! NPNom + in table { + QDir => who ++ cls ! Inv ; + QIndir => who ++ cls ! Sub + } + } ; + + ProgrVP = insertAdv "even" ; ---- + + ImpPl1 vp = + let + v = laten_V ; + vpi = infVP True vp ; + vvp = insertExtrapos vpi.p3 ( + insertInf vpi.p2 ( + insertObj vpi.p1 ( + predVGen True v))) ; + in + {s = (mkClause "we" {g = Utr ; n = Pl ; p = P1} vvp).s ! + Pres ! Simul ! Pos ! Inv + } ; } diff --git a/lib/src/dutch/NounDut.gf b/lib/src/dutch/NounDut.gf index e739d4a76..2bd2e0fa3 100644 --- a/lib/src/dutch/NounDut.gf +++ b/lib/src/dutch/NounDut.gf @@ -28,28 +28,28 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in { a = np.a } ; --- PPartNP np v2 = { --- s = \\c => np.s ! c ++ v2.s ! VPastPart APred ; --- invar part --- a = np.a --- } ; --- --- AdvNP np adv = { --- s = \\c => np.s ! c ++ adv.s ; --- a = np.a --- } ; --- --- DetQuantOrd quant num ord = --- let --- n = num.n ; --- a = quant.a --- in { --- s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ --- num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; --- sp = \\g,c => quant.sp ! n ! g ! c ++ --- num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; --- n = n ; --- a = a --- } ; + PPartNP np v2 = { + s = \\c => np.s ! c ++ v2.s ! VPerf ; -- invar part + a = np.a + } ; + + AdvNP np adv = { + s = \\c => np.s ! c ++ adv.s ; + a = np.a + } ; + + DetQuantOrd quant num ord = + let + n = num.n ; + a = quant.a + in { + s = \\g => quant.s ! num.isNum ! n ! g ++ + num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ; + sp = \\g => quant.sp ! n ! g ++ + num.s ++ ord.s ! agrAdj g quant.a (NF n Nom) ; + n = n ; + a = a + } ; DetQuant quant num = let @@ -62,12 +62,11 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in { a = a } ; --- --- PossPron p = { --- s = \\_,n,g,c => p.s ! NPPoss (gennum g n) c ; --- sp = \\n,g,c => p.s ! NPPoss (gennum g n) c ; --- a = Strong --- need separately weak for Pl ? --- } ; + PossPron p = { + s = \\_,n,g => p.unstressed.poss ; + sp = \\n,g => p.substposs ; + a = Strong + } ; NumCard n = {s = n.s ! Utr ! Nom ; n = n.n ; isNum = True} ; @@ -116,29 +115,29 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in { g = n.g } ; --- ComplN2 f x = { --- s = \\_,n,c => f.s ! n ! c ++ appPrep f.c2 x.s ; --- g = f.g --- } ; --- --- ComplN3 f x = { --- s = \\n,c => f.s ! n ! c ++ appPrep f.c2 x.s ; --- g = f.g ; --- c2 = f.c3 --- } ; --- --- Use2N3 f = { --- s = f.s ; --- g = f.g ; --- c2 = f.c2 --- } ; --- --- Use3N3 f = { --- s = f.s ; --- g = f.g ; --- c2 = f.c3 --- } ; --- + ComplN2 f x = { + s = \\_,nc => f.s ! nc ++ appPrep f.c2 x.s ; + g = f.g + } ; + + ComplN3 f x = { + s = \\nc => f.s ! nc ++ appPrep f.c2 x.s ; + g = f.g ; + c2 = f.c3 + } ; + + Use2N3 f = { + s = f.s ; + g = f.g ; + c2 = f.c2 + } ; + + Use3N3 f = { + s = f.s ; + g = f.g ; + c2 = f.c3 + } ; + AdjCN ap cn = let g = cn.g @@ -155,28 +154,26 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in { g = cn.g } ; --- RelNP np rs = { --- s = \\c => np.s ! c ++ "," ++ rs.s ! gennum np.a.g np.a.n ; --- a = np.a ; --- isPron = False --- } ; --- --- SentCN cn s = { --- s = \\a,n,c => cn.s ! a ! n ! c ++ s.s ; --- g = cn.g --- } ; --- --- AdvCN cn s = { --- s = \\a,n,c => cn.s ! a ! n ! c ++ s.s ; --- g = cn.g --- } ; --- --- ApposCN cn np = let g = cn.g in { --- s = \\a,n,c => cn.s ! a ! n ! c ++ np.s ! c ; --- g = g ; --- isMod = cn.isMod --- } ; --- ---} + RelNP np rs = { + s = \\c => np.s ! c ++ "," ++ rs.s ! np.a.g ! np.a.n ; + a = np.a ; + isPron = False + } ; + + SentCN cn s = { + s = \\a,nc => cn.s ! a ! nc ++ s.s ; + g = cn.g + } ; + + AdvCN cn s = { + s = \\a,nc => cn.s ! a ! nc ++ s.s ; + g = cn.g + } ; + + ApposCN cn np = let g = cn.g in { + s = \\a,nc => cn.s ! a ! nc ++ np.s ! NPNom ; + g = g ; + isMod = cn.isMod + } ; } diff --git a/lib/src/dutch/PhraseDut.gf b/lib/src/dutch/PhraseDut.gf index 922d6cb78..7e2c13559 100644 --- a/lib/src/dutch/PhraseDut.gf +++ b/lib/src/dutch/PhraseDut.gf @@ -16,15 +16,13 @@ concrete PhraseDut of Phrase = CatDut ** open Prelude, ResDut in UttIP ip = {s = ip.s ! NPNom} ; --- Acc also UttIAdv iadv = iadv ; UttNP np = {s = np.s ! NPNom} ; --- UttVP vp = {s = useInfVP True vp} ; -- without zu + UttVP vp = {s = useInfVP True vp} ; -- without zu UttAdv adv = adv ; NoPConj = {s = []} ; --- PConjConj conj = ss (conj.s2) ; --- + PConjConj conj = ss (conj.s2) ; + NoVoc = {s = []} ; --- VocNP np = {s = "," ++ np.s ! Nom} ; --- ---} + VocNP np = {s = "," ++ np.s ! NPNom} ; } diff --git a/lib/src/dutch/RelativeDut.gf b/lib/src/dutch/RelativeDut.gf index 2b2a4e445..74ff961d4 100644 --- a/lib/src/dutch/RelativeDut.gf +++ b/lib/src/dutch/RelativeDut.gf @@ -5,11 +5,10 @@ concrete RelativeDut of Relative = CatDut ** open ResDut in { lin --- RelCl cl = { --- s = \\m,t,a,b,_ => "derart" ++ conjThat ++ cl.s ! m ! t ! a ! b ! Sub ; --- c = Nom --- } ; --- + RelCl cl = { + s = \\t,a,b,_,_ => "zodat" ++ cl.s ! t ! a ! b ! Sub + } ; + RelVP rp vp = { s = \\t,ant,b,g,n => let @@ -19,8 +18,7 @@ concrete RelativeDut of Relative = CatDut ** open ResDut in { } ; cl = mkClause (rp.s ! g ! n) agr vp in - cl.s ! t ! ant ! b ! Sub ; - c = Nom + cl.s ! t ! ant ! b ! Sub } ; RelSlash rp slash = { @@ -29,11 +27,11 @@ concrete RelativeDut of Relative = CatDut ** open ResDut in { c = slash.c2.c } ; --- FunRP p np rp = { --- s = \\gn,c => np.s ! c ++ appPrep p (rp.s ! gn) ; --- a = RAg {n = np.a.n ; p = np.a.p} --- } ; --- + FunRP p np rp = { + s = \\g,n => np.s ! NPNom ++ appPrep p.s (\\_ => rp.s ! g ! n) ; + a = RAg np.a.n np.a.p + } ; + IdRP = {s = relPron ; a = RNoAg} ; oper diff --git a/lib/src/dutch/ResDut.gf b/lib/src/dutch/ResDut.gf index 7d438f66f..bda1a2bcf 100644 --- a/lib/src/dutch/ResDut.gf +++ b/lib/src/dutch/ResDut.gf @@ -312,7 +312,10 @@ resource ResDut = ParamX ** open Prelude in { prefix = [] ; vtype = VAct ; } ; - + + worden_V = irregVerb2 "worden" "werd" "werden" "geworden" ** { + aux = VZijn ; prefix = [] ; vtype = VAct} ; + Pronoun : Type = { unstressed,stressed : {nom, acc, poss : Str} ; substposs : Str ; @@ -578,30 +581,29 @@ param vp.inf ++ vp.ext > ; --- useInfVP : Bool -> VP -> Str = \isAux,vp -> --- let vpi = infVP isAux vp in --- vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ; --- ----- The nominative case is not used as reflexive, but defined here ----- so that we can reuse this in personal pronouns. ----- The missing Sg "ihrer" shows that a dependence on gender would ----- be needed. --- --- reflPron : Agr => Case => Str = table { --- {n = Sg ; p = P1} => caselist "ich" "mich" "mir" "meiner" ; --- {n = Sg ; p = P2} => caselist "du" "dich" "dir" "deiner" ; --- {g = Masc ; n = Sg ; p = P3} => caselist "er" "sich" "sich" "seiner" ; --- {g = Fem ; n = Sg ; p = P3} => caselist "sie" "sich" "sich" "ihrer" ; --- {g = Neutr ; n = Sg ; p = P3} => caselist "es" "sich" "sich" "seiner" ; --- {n = Pl ; p = P1} => caselist "wir" "uns" "uns" "unser" ; --- {n = Pl ; p = P2} => caselist "ihr" "euch" "euch" "euer" ; --- {n = Pl ; p = P3} => caselist "sie" "sich" "sich" "ihrer" --- } ; + useInfVP : Bool -> VP -> Str = \isAux,vp -> + let vpi = infVP isAux vp in + vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ; + + reflPron : Agr => Str = table { + {n = Sg ; p = P1} => "me" ; + {n = Sg ; p = P2} => "je" ; + {n = Sg ; p = P3} => "zich" ; + {n = Pl ; p = P1} => "ons" ; + {n = Pl ; p = P2} => "je" ; + {n = Pl ; p = P3} => "zich" + } ; conjThat : Str = "dat" ; conjThan : Str = "dan" ; + conjAgr : Agr -> Agr -> Agr = \a,b -> { + g = Utr ; ---- + n = conjNumber a.n b.n ; + p = conjPerson a.p b.p + } ; + -- The infinitive particle "zu" is used if and only if $vv.isAux = False$. infPart : Bool -> Str = \b -> if_then_Str b [] "te" ; diff --git a/lib/src/dutch/SentenceDut.gf b/lib/src/dutch/SentenceDut.gf index bf9e07706..41cee0574 100644 --- a/lib/src/dutch/SentenceDut.gf +++ b/lib/src/dutch/SentenceDut.gf @@ -29,21 +29,21 @@ concrete SentenceDut of Sentence = CatDut ** open ResDut, Prelude in { vp ** {c2 = vp.c2} ; --- AdvSlash slash adv = { --- s = \\m,t,a,b,o => slash.s ! m ! t ! a ! b ! o ++ adv.s ; --- c2 = slash.c2 --- } ; --- --- SlashPrep cl prep = cl ** {c2 = prep} ; --- --- SlashVS np vs slash = --- mkClause (np.s ! Nom) np.a --- (insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) ** --- {c2 = slash.c2} ; --- --- EmbedS s = {s = conjThat ++ s.s ! Sub} ; --- EmbedQS qs = {s = qs.s ! QIndir} ; --- EmbedVP vp = {s = useInfVP False vp} ; + AdvSlash slash adv = { + s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ; + c2 = slash.c2 + } ; + + SlashPrep cl prep = cl ** {c2 = prep.s} ; + + SlashVS np vs slash = + mkClause (np.s ! NPNom) np.a + (insertExtrapos (conjThat ++ slash.s ! Sub) (predV vs)) ** + {c2 = slash.c2} ; + + EmbedS s = {s = conjThat ++ s.s ! Sub} ; + EmbedQS qs = {s = qs.s ! QIndir} ; + EmbedVP vp = {s = useInfVP False vp} ; UseCl t p cl = { s = \\o => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! o @@ -61,8 +61,6 @@ concrete SentenceDut of Sentence = CatDut ** open ResDut, Prelude in { AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ; --- RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! gennum Neutr Sg} ; --- "welches" --- ---} + RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! Neutr ! Sg} ; } diff --git a/lib/src/dutch/VerbDut.gf b/lib/src/dutch/VerbDut.gf index b31a4af01..9e2167c26 100644 --- a/lib/src/dutch/VerbDut.gf +++ b/lib/src/dutch/VerbDut.gf @@ -12,7 +12,7 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { insertExtrapos vpi.p3 ( insertInf vpi.p2 ( insertObj vpi.p1 ( - predVGen v.isAux {s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = v.vtype}))) ; ---- subtyp + predVGen v.isAux (v2v v)))) ; ---- subtyp ComplVS v s = insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ; @@ -20,49 +20,49 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { insertExtrapos (q.s ! QIndir) (predV v) ; ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ; - SlashV2a v = predV {s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = v.vtype} ** {c2 = v.c2} ; --- --- Slash2V3 v np = --- insertObj (\\_ => appPrep v.c2 np.s) (predV v) ** {c2 = v.c3} ; --- Slash3V3 v np = --- insertObj (\\_ => appPrep v.c3 np.s) (predV v) ** {c2 = v.c2} ; --- --- SlashV2S v s = --- insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ** {c2 = v.c2} ; --- SlashV2Q v q = --- insertExtrapos (q.s ! QIndir) (predV v) ** {c2 = v.c2} ; --- SlashV2V v vp = --- let --- vpi = infVP False vp --- in --- insertExtrapos vpi.p3 ( --- insertInf vpi.p2 ( --- insertObj vpi.p1 ((predV v)))) ** {c2 = v.c2} ; --- --- SlashV2A v ap = --- insertObj (\\_ => ap.s ! APred) (predV v) ** {c2 = v.c2} ; --- + SlashV2a v = predV (v2v v) ** {c2 = v.c2} ; + + Slash2V3 v np = + insertObj (\\_ => appPrep v.c2 np.s) (predVv v) ** {c2 = v.c3} ; + Slash3V3 v np = + insertObj (\\_ => appPrep v.c3 np.s) (predVv v) ** {c2 = v.c2} ; + + SlashV2S v s = + insertExtrapos (conjThat ++ s.s ! Sub) (predVv v) ** {c2 = v.c2} ; + SlashV2Q v q = + insertExtrapos (q.s ! QIndir) (predVv v) ** {c2 = v.c2} ; + SlashV2V v vp = + let + vpi = infVP False vp + in + insertExtrapos vpi.p3 ( + insertInf vpi.p2 ( + insertObj vpi.p1 ((predVv v)))) ** {c2 = v.c2} ; + + SlashV2A v ap = + insertObj (\\_ => ap.s ! APred) (predVv v) ** {c2 = v.c2} ; + ComplSlash vp np = insertObj (\\_ => appPrep vp.c2 np.s) vp ; --- --- SlashVV v vp = --- let --- vpi = infVP v.isAux vp --- in --- insertExtrapos vpi.p3 ( --- insertInf vpi.p2 ( --- insertObj vpi.p1 ( --- predVGen v.isAux v))) ** {c2 = vp.c2} ; --- --- SlashV2VNP v np vp = --- let --- vpi = infVP False vp --- in --- insertExtrapos vpi.p3 ( --- insertInf vpi.p2 ( --- insertObj vpi.p1 ( --- insertObj (\\_ => appPrep v.c2 np.s) ( --- predV v)))) ** {c2 = v.c2} ; --- + + SlashVV v vp = + let + vpi = infVP v.isAux vp + in + insertExtrapos vpi.p3 ( + insertInf vpi.p2 ( + insertObj vpi.p1 ( + predVGen v.isAux (v2v v)))) ** {c2 = vp.c2} ; + + SlashV2VNP v np vp = + let + vpi = infVP False vp + in + insertExtrapos vpi.p3 ( + insertInf vpi.p2 ( + insertObj vpi.p1 ( + insertObj (\\_ => appPrep v.c2 np.s) ( + predVv v)))) ** {c2 = v.c2} ; + UseComp comp = insertAdv (comp.s ! agrP3 Sg) (predV zijn_V) ; -- agr not used CompAP ap = {s = \\_ => ap.s ! APred} ; CompNP np = {s = \\_ => np.s ! NPNom} ; @@ -70,9 +70,14 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { AdvVP vp adv = insertAdv adv.s vp ; AdVVP adv vp = insertAdV adv.s vp ; --- --- ReflVP vp = insertObj (\\a => appPrep vp.c2 (reflPron ! a)) vp ; --- --- PassV2 v = insertInf (v.s ! VPastPart APred) (predV werdenPass) ; + ReflVP vp = insertObj (\\a => appPrep vp.c2 (\\_ => reflPron ! a)) vp ; + + PassV2 v = insertInf (v.s ! VPerf) (predV worden_V) ; + +---- workaround for a subtyping bug + oper + v2v : VVerb -> VVerb = \v -> + {s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = v.vtype} ; + predVv : V -> VP = \v -> predV (v2v v) ; } diff --git a/lib/src/german/ResGer.gf b/lib/src/german/ResGer.gf index ea87cabbd..9cd581499 100644 --- a/lib/src/german/ResGer.gf +++ b/lib/src/german/ResGer.gf @@ -152,7 +152,7 @@ resource ResGer = ParamX ** open Prelude in { } ; conjAgr : Agr -> Agr -> Agr = \a,b -> { - g = Neutr ; ---- + g = Utr ; ---- n = conjNumber a.n b.n ; p = conjPerson a.p b.p } ;