diff --git a/lib/src/dutch/IrregDut.gf b/lib/src/dutch/IrregDut.gf index dc1ce8cee..1b5fd1498 100644 --- a/lib/src/dutch/IrregDut.gf +++ b/lib/src/dutch/IrregDut.gf @@ -52,7 +52,7 @@ lin heffen_V = mkV "heffen" "hief" "hieven" "geheven" ; lin helpen_V = mkV "helpen" "hielp" "hielpen" "geholpen" ; lin heten_V = mkV "heten" "heette" "heetten" "geheten" ; lin hijsen_V = mkV "hijsen" "hees" "hesen" "gehesen" ; -lin hoeven_V = mkV "hoeven" "hoefde" "hoefden" "gehoeven" ; +lin hoeven_V = mkV "hoeven" "hoeft" "hoeven" "hoefde" "hoefden" "gehoefd" ; lin houden_V = mkV "houden" "hield" "hielden" "gehouden" ; lin houwen_V = mkV "houwen" "houwde" "houwden" "gehouwen" ; lin jagen_V = mkV "jagen" "joeg" "joegen" "gejaagd" ; @@ -67,7 +67,7 @@ lin kopen_V = mkV "kopen" "kocht" "kochten" "gekocht" ; lin krijgen_V = mkV "krijgen" "kreeg" "kregen" "gekregen" ; lin krimpen_V = mkZijnV "krimpen" "kromp" "krompen" "gekrompen" ; lin kruipen_V = mkZijnHebbenV "kruipen" "kroop" "kropen" "gekropen" ; -lin zich_V = mkV "zich" "kwijten" "van" "kweet" ; +lin zich_V = mkV "zich" "kwijten" "van" "kweet" ; -- ?? lin lachen_V = mkV "lachen" "lachte" "lachten" "gelachen" ; lin laden_V = mkV "laden" "laadde" "laadden" "geladen" ; lin laten_V = mkV "laten" "liet" "lieten" "gelaten" ; @@ -150,7 +150,7 @@ lin varen_V = mkZijnHebbenV "varen" "voer" "voeren" "gevaren" ; lin vechten_V = mkV "vechten" "vocht" "vochten" "gevochten" ; lin verdrieten_V = mkV "verdrieten" "verdroot" "verdroten" "verdroten" ; lin verdwijnen_V = mkZijnV "verdwijnen" "verdween" "verdwenen" "verdwenen" ; -lin vergeten_V = mkV "vergeten" "+" "vergat" "vergaten" ; +lin vergeten_V = mkV "vergeten" "vergat" "vergeten" "vergaten" ; lin verliezen_V = mkV "verliezen" "verloor" "verloren" "verloren" ; lin vinden_V = mkV "vinden" "vond" "vonden" "gevonden" ; lin vlechten_V = mkV "vlechten" "vlocht" "vlochten" "gevlochten" ; diff --git a/lib/src/dutch/LexiconDut.gf b/lib/src/dutch/LexiconDut.gf index bb6821770..3da339d29 100644 --- a/lib/src/dutch/LexiconDut.gf +++ b/lib/src/dutch/LexiconDut.gf @@ -6,7 +6,7 @@ concrete LexiconDut of Lexicon = CatDut ** open Prelude, ParadigmsDut, IrregDut in { flags - coding=utf8 ; + coding=utf8 ; optimize=all_subs ; lin @@ -14,7 +14,7 @@ lin already_Adv = mkAdv "al" ; answer_V2S = mkV2S (mkV "antwoorden") noPrep ; ask_V2Q = mkV2Q vragen_V noPrep ; - bad_A = mkA "boos" ; + bad_A = mkA "slecht" ; beautiful_A = mkA "mooi" ; become_VA = mkVA worden_V ; beer_N = mkN "bier" "bieren" neuter ; @@ -337,7 +337,7 @@ understand_V2 = mkV2 (mkV "begrijpen" "begreep" "begrepen" "begrepen") ; university_N = mkN "universiteit" utrum ; village_N = mkN "dorp" neuter ; vomit_V = mkV "braken" ; -wait_V2 = mkV2 "wachen" ; +wait_V2 = mkV2 (mkV "wachten") (mkPrep "op") ; walk_V = mkV "lopen" ; war_N = mkN "oorlog" utrum ; wash_V2 = mkV2 wassen_V ; diff --git a/lib/src/dutch/ParadigmsDut.gf b/lib/src/dutch/ParadigmsDut.gf index 4f38ec995..ef4b84308 100644 --- a/lib/src/dutch/ParadigmsDut.gf +++ b/lib/src/dutch/ParadigmsDut.gf @@ -173,6 +173,10 @@ oper mkV2V : V -> Prep -> V2V ; mkV2V : V -> V2V ; } ; + auxV2V : overload { -- without "te" + auxV2V : V -> V2V ; + auxV2V : V -> Prep -> V2V ; + } ; mkV2S : overload { mkV2S : V -> Prep -> V2S ; mkV2S : V -> V2S ; @@ -502,6 +506,10 @@ oper mkV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = False}) ; mkV2V : V -> V2V = \v -> lin V2V (prepV2 v (mkPrep []) ** {isAux = False}) ; } ; + auxV2V = overload { + auxV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = True}) ; + auxV2V : V -> V2V = \v -> lin V2V (prepV2 v (mkPrep []) ** {isAux = True}) ; + } ; mkV2S = overload { mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (prepV2 v p) ; mkV2S : V -> V2S = \v -> lin V2S (prepV2 v (mkPrep [])) ; diff --git a/lib/src/dutch/ResDut.gf b/lib/src/dutch/ResDut.gf index 28ac7fbef..c33b39693 100644 --- a/lib/src/dutch/ResDut.gf +++ b/lib/src/dutch/ResDut.gf @@ -109,6 +109,7 @@ resource ResDut = ParamX ** open Prelude, Predef in { param VForm = VInf -- zijn + | VInfFull -- zijn (including prefix, e.g. oplossen) | VPresSg1 -- ben | VPresSg2 -- bent | VPresSg3 -- is @@ -131,7 +132,7 @@ param mkVerb : (_,_,_,_,_,_,_ : Str) -> Verb = \aai, aait, aaien, aaide, _, aaiden, geaaid -> { s = table { - VInf | VImpPl | VPresPl => aaien; -- hij/zij/het/wij aaien + VInf | VInfFull | VImpPl | VPresPl => aaien; -- hij/zij/het/wij aaien VPresSg1 | VImp2 => aai; -- ik aai VPresSg2 | VPresSg3 | VImp3 => aait; -- jij aait VPastSg => aaide; -- ik aaide --# notpresent @@ -159,12 +160,12 @@ param prefixV : Str -> VVerb -> VVerb = \ein,verb -> let vs = verb.s ; - einb : Bool -> Str -> Str = \b,geb -> - if_then_Str b (ein + geb) geb ; + -- einb : Bool -> Str -> Str = \b,geb -> + -- if_then_Str b (ein + geb) geb ; in {s = table { - f@(VInf | VPerf) => ein + vs ! f ; ---- TODO: eingegeven - f => vs ! f + f@(VInfFull | VPerf) => ein + vs ! f; + f => vs ! f } ; prefix = ein ; aux = verb.aux ; @@ -281,6 +282,7 @@ param zijn_V : VVerb = { s = table { VInf => "zijn" ; + VInfFull => "zijn" ; VPresSg1 => "ben" ; VPresSg2 => "bent" ; VPresSg3 => "is" ; @@ -303,6 +305,7 @@ param hebben_V : VVerb = { s = table { VInf => "hebben" ; + VInfFull => "hebben" ; VPresSg1 => "heb" ; VPresSg2 => "hebt" ; VPresSg3 => "heeft" ; @@ -325,6 +328,7 @@ param zullen_V : VVerb = { s = table { VInf => "zullen" ; + VInfFull => "zullen" ; VPresSg1 => "zal" ; VPresSg2 => "zult" ; VPresSg3 => "zal" ; @@ -347,6 +351,7 @@ param kunnen_V : VVerb = { s = table { VInf => "kunnen" ; + VInfFull => "kunnen" ; VPresSg1 => "kan" ; VPresSg2 => "kunt" ; VPresSg3 => "kan" ; ---- kun je @@ -605,25 +610,22 @@ param inf : Str = case of { => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent - _ => - vp.inf.p1 ++ verb.p2 - } - ; + _ => verb.p2 ++ vp.inf.p1 } ; -- cunger: changed from vp.inf.p1 ++ verb.p2 extra = vp.ext ; - --for the Sub word order + --for the Sub word order inffin : Str = case of { - -- gezien zou/zal hebben - => vperf ++ fin ++ auxv ! VInf ; --# notpresent - => vperf ++ fin ++ auxv ! VInf ; --# notpresent - -- zou/zal zien - => fin ++ verb.p2 ; - => fin ++ verb.p2 ; - -- wil kunnen zien (first line in inf) - <_,Anter,True> => fin ++ inf ; -- double inf --# notpresent - _ => fin ++ inf - -- no inf ++ fin, this is not German :-P + -- gezien zou/zal hebben + => vperf ++ fin ++ auxv ! VInf ; --# notpresent + => vperf ++ fin ++ auxv ! VInf ; --# notpresent + -- zou/zal zien + => fin ++ verb.p2 ; + => fin ++ verb.p2 ; + -- wil kunnen zien (first line in inf) + <_,Anter,True> => fin ++ inf ; -- double inf --# notpresent + _ => fin ++ inf + -- no inf ++ fin, this is not German :-P } in case o of { @@ -640,15 +642,17 @@ param infVP : Bool -> VP -> ((Agr => Str) * Str * Str) = \isAux, vp -> < - \\agr => vp.n0 ! agr ++ vp.n2 ! agr ++ vp.a2, + \\agr => vp.n0 ! agr ++ vp.n2 ! agr ++ vp.a2, + let vverb = vp.s + in vp.a1 ! Pos ++ - if_then_Str isAux [] "te" ++ vp.s.s ! VInf, + if_then_Str isAux (vverb.s ! VInfFull) (vverb.prefix ++ "te" ++ vverb.s ! VInf), vp.inf.p1 ++ vp.ext > ; useInfVP : Bool -> VP -> Str = \isAux,vp -> let vpi = infVP isAux vp in - vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ; + "om" ++ vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ; -- TODO reflPron : Agr => Str = table { {n = Sg ; p = P1} => "me" ; @@ -669,7 +673,7 @@ param p = conjPerson a.p b.p } ; --- The infinitive particle "zu" is used if and only if $vv.isAux = False$. +-- The infinitive particle "te" is used if and only if $vv.isAux = False$. infPart : Bool -> Str = \b -> if_then_Str b [] "te" ; diff --git a/lib/src/dutch/VerbDut.gf b/lib/src/dutch/VerbDut.gf index 799a0a407..6b9569376 100644 --- a/lib/src/dutch/VerbDut.gf +++ b/lib/src/dutch/VerbDut.gf @@ -18,7 +18,7 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ; ComplVQ v q = insertExtrapos (q.s ! QIndir) (predV v) ; - ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ; + ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ; SlashV2a v = predV (v2v v) ** {c2 = v.c2} ; @@ -33,11 +33,11 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { insertExtrapos (q.s ! QIndir) (predVv v) ** {c2 = v.c2} ; SlashV2V v vp = let - vpi = infVP False vp + vpi = infVP v.isAux vp in insertExtrapos vpi.p3 ( insertInf vpi.p2 ( - insertObj vpi.p1 ((predVv v)))) ** {c2 = v.c2} ; + insertObj vpi.p1 ((predVGen v.isAux v)))) ** {c2 = v.c2} ; SlashV2A v ap = insertObj (\\_ => ap.s ! APred) (predVv v) ** {c2 = v.c2} ; @@ -56,13 +56,13 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in { SlashV2VNP v np vp = let - vpi = infVP False vp + vpi = infVP v.isAux vp in insertExtrapos vpi.p3 ( insertInf vpi.p2 ( insertObj vpi.p1 ( insertObj (\\_ => appPrep v.c2.p1 np.s) ( - predVv v)))) ** {c2 = v.c2} ; + predVGen v.isAux v)))) ** {c2 = v.c2} ; -- True, because negation comes before copula complement -- "ik ben niet groot" but "ik begrijp hem niet"