fixed problems with Dutch infinitives

This commit is contained in:
andrea.christina.unger
2015-07-19 08:26:50 +00:00
parent b3acc4d4c3
commit ff3f9d59a2
5 changed files with 47 additions and 35 deletions

View File

@@ -52,7 +52,7 @@ lin heffen_V = mkV "heffen" "hief" "hieven" "geheven" ;
lin helpen_V = mkV "helpen" "hielp" "hielpen" "geholpen" ; lin helpen_V = mkV "helpen" "hielp" "hielpen" "geholpen" ;
lin heten_V = mkV "heten" "heette" "heetten" "geheten" ; lin heten_V = mkV "heten" "heette" "heetten" "geheten" ;
lin hijsen_V = mkV "hijsen" "hees" "hesen" "gehesen" ; 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 houden_V = mkV "houden" "hield" "hielden" "gehouden" ;
lin houwen_V = mkV "houwen" "houwde" "houwden" "gehouwen" ; lin houwen_V = mkV "houwen" "houwde" "houwden" "gehouwen" ;
lin jagen_V = mkV "jagen" "joeg" "joegen" "gejaagd" ; 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 krijgen_V = mkV "krijgen" "kreeg" "kregen" "gekregen" ;
lin krimpen_V = mkZijnV "krimpen" "kromp" "krompen" "gekrompen" ; lin krimpen_V = mkZijnV "krimpen" "kromp" "krompen" "gekrompen" ;
lin kruipen_V = mkZijnHebbenV "kruipen" "kroop" "kropen" "gekropen" ; 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 lachen_V = mkV "lachen" "lachte" "lachten" "gelachen" ;
lin laden_V = mkV "laden" "laadde" "laadden" "geladen" ; lin laden_V = mkV "laden" "laadde" "laadden" "geladen" ;
lin laten_V = mkV "laten" "liet" "lieten" "gelaten" ; 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 vechten_V = mkV "vechten" "vocht" "vochten" "gevochten" ;
lin verdrieten_V = mkV "verdrieten" "verdroot" "verdroten" "verdroten" ; lin verdrieten_V = mkV "verdrieten" "verdroot" "verdroten" "verdroten" ;
lin verdwijnen_V = mkZijnV "verdwijnen" "verdween" "verdwenen" "verdwenen" ; 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 verliezen_V = mkV "verliezen" "verloor" "verloren" "verloren" ;
lin vinden_V = mkV "vinden" "vond" "vonden" "gevonden" ; lin vinden_V = mkV "vinden" "vond" "vonden" "gevonden" ;
lin vlechten_V = mkV "vlechten" "vlocht" "vlochten" "gevlochten" ; lin vlechten_V = mkV "vlechten" "vlocht" "vlochten" "gevlochten" ;

View File

@@ -6,7 +6,7 @@ concrete LexiconDut of Lexicon = CatDut **
open Prelude, ParadigmsDut, IrregDut in { open Prelude, ParadigmsDut, IrregDut in {
flags flags
coding=utf8 ; coding=utf8 ;
optimize=all_subs ; optimize=all_subs ;
lin lin
@@ -14,7 +14,7 @@ lin
already_Adv = mkAdv "al" ; already_Adv = mkAdv "al" ;
answer_V2S = mkV2S (mkV "antwoorden") noPrep ; answer_V2S = mkV2S (mkV "antwoorden") noPrep ;
ask_V2Q = mkV2Q vragen_V noPrep ; ask_V2Q = mkV2Q vragen_V noPrep ;
bad_A = mkA "boos" ; bad_A = mkA "slecht" ;
beautiful_A = mkA "mooi" ; beautiful_A = mkA "mooi" ;
become_VA = mkVA worden_V ; become_VA = mkVA worden_V ;
beer_N = mkN "bier" "bieren" neuter ; beer_N = mkN "bier" "bieren" neuter ;
@@ -337,7 +337,7 @@ understand_V2 = mkV2 (mkV "begrijpen" "begreep" "begrepen" "begrepen") ;
university_N = mkN "universiteit" utrum ; university_N = mkN "universiteit" utrum ;
village_N = mkN "dorp" neuter ; village_N = mkN "dorp" neuter ;
vomit_V = mkV "braken" ; vomit_V = mkV "braken" ;
wait_V2 = mkV2 "wachen" ; wait_V2 = mkV2 (mkV "wachten") (mkPrep "op") ;
walk_V = mkV "lopen" ; walk_V = mkV "lopen" ;
war_N = mkN "oorlog" utrum ; war_N = mkN "oorlog" utrum ;
wash_V2 = mkV2 wassen_V ; wash_V2 = mkV2 wassen_V ;

View File

@@ -173,6 +173,10 @@ oper
mkV2V : V -> Prep -> V2V ; mkV2V : V -> Prep -> V2V ;
mkV2V : V -> V2V ; mkV2V : V -> V2V ;
} ; } ;
auxV2V : overload { -- without "te"
auxV2V : V -> V2V ;
auxV2V : V -> Prep -> V2V ;
} ;
mkV2S : overload { mkV2S : overload {
mkV2S : V -> Prep -> V2S ; mkV2S : V -> Prep -> V2S ;
mkV2S : V -> V2S ; mkV2S : V -> V2S ;
@@ -502,6 +506,10 @@ oper
mkV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = False}) ; mkV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = False}) ;
mkV2V : V -> V2V = \v -> lin V2V (prepV2 v (mkPrep []) ** {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 = overload {
mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (prepV2 v p) ; mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (prepV2 v p) ;
mkV2S : V -> V2S = \v -> lin V2S (prepV2 v (mkPrep [])) ; mkV2S : V -> V2S = \v -> lin V2S (prepV2 v (mkPrep [])) ;

View File

@@ -109,6 +109,7 @@ resource ResDut = ParamX ** open Prelude, Predef in {
param param
VForm = VForm =
VInf -- zijn VInf -- zijn
| VInfFull -- zijn (including prefix, e.g. oplossen)
| VPresSg1 -- ben | VPresSg1 -- ben
| VPresSg2 -- bent | VPresSg2 -- bent
| VPresSg3 -- is | VPresSg3 -- is
@@ -131,7 +132,7 @@ param
mkVerb : (_,_,_,_,_,_,_ : Str) -> mkVerb : (_,_,_,_,_,_,_ : Str) ->
Verb = \aai, aait, aaien, aaide, _, aaiden, geaaid -> { Verb = \aai, aait, aaien, aaide, _, aaiden, geaaid -> {
s = table { 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 VPresSg1 | VImp2 => aai; -- ik aai
VPresSg2 | VPresSg3 | VImp3 => aait; -- jij aait VPresSg2 | VPresSg3 | VImp3 => aait; -- jij aait
VPastSg => aaide; -- ik aaide --# notpresent VPastSg => aaide; -- ik aaide --# notpresent
@@ -159,12 +160,12 @@ param
prefixV : Str -> VVerb -> VVerb = \ein,verb -> prefixV : Str -> VVerb -> VVerb = \ein,verb ->
let let
vs = verb.s ; vs = verb.s ;
einb : Bool -> Str -> Str = \b,geb -> -- einb : Bool -> Str -> Str = \b,geb ->
if_then_Str b (ein + geb) geb ; -- if_then_Str b (ein + geb) geb ;
in in
{s = table { {s = table {
f@(VInf | VPerf) => ein + vs ! f ; ---- TODO: eingegeven f@(VInfFull | VPerf) => ein + vs ! f;
f => vs ! f f => vs ! f
} ; } ;
prefix = ein ; prefix = ein ;
aux = verb.aux ; aux = verb.aux ;
@@ -281,6 +282,7 @@ param
zijn_V : VVerb = { zijn_V : VVerb = {
s = table { s = table {
VInf => "zijn" ; VInf => "zijn" ;
VInfFull => "zijn" ;
VPresSg1 => "ben" ; VPresSg1 => "ben" ;
VPresSg2 => "bent" ; VPresSg2 => "bent" ;
VPresSg3 => "is" ; VPresSg3 => "is" ;
@@ -303,6 +305,7 @@ param
hebben_V : VVerb = { hebben_V : VVerb = {
s = table { s = table {
VInf => "hebben" ; VInf => "hebben" ;
VInfFull => "hebben" ;
VPresSg1 => "heb" ; VPresSg1 => "heb" ;
VPresSg2 => "hebt" ; VPresSg2 => "hebt" ;
VPresSg3 => "heeft" ; VPresSg3 => "heeft" ;
@@ -325,6 +328,7 @@ param
zullen_V : VVerb = { zullen_V : VVerb = {
s = table { s = table {
VInf => "zullen" ; VInf => "zullen" ;
VInfFull => "zullen" ;
VPresSg1 => "zal" ; VPresSg1 => "zal" ;
VPresSg2 => "zult" ; VPresSg2 => "zult" ;
VPresSg3 => "zal" ; VPresSg3 => "zal" ;
@@ -347,6 +351,7 @@ param
kunnen_V : VVerb = { kunnen_V : VVerb = {
s = table { s = table {
VInf => "kunnen" ; VInf => "kunnen" ;
VInfFull => "kunnen" ;
VPresSg1 => "kan" ; VPresSg1 => "kan" ;
VPresSg2 => "kunt" ; VPresSg2 => "kunt" ;
VPresSg3 => "kan" ; ---- kun je VPresSg3 => "kan" ; ---- kun je
@@ -605,25 +610,22 @@ param
inf : Str = inf : Str =
case <vp.isAux, vp.inf.p2, a> of { case <vp.isAux, vp.inf.p2, a> of {
<True,True,Anter> => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent <True,True,Anter> => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent
_ => _ => verb.p2 ++ vp.inf.p1 } ; -- cunger: changed from vp.inf.p1 ++ verb.p2
vp.inf.p1 ++ verb.p2
}
;
extra = vp.ext ; extra = vp.ext ;
--for the Sub word order --for the Sub word order
inffin : Str = inffin : Str =
case <t,a,vp.isAux> of { case <t,a,vp.isAux> of {
-- gezien zou/zal hebben -- gezien zou/zal hebben
<Cond,Anter,False> => vperf ++ fin ++ auxv ! VInf ; --# notpresent <Cond,Anter,False> => vperf ++ fin ++ auxv ! VInf ; --# notpresent
<Fut,Anter,False> => vperf ++ fin ++ auxv ! VInf ; --# notpresent <Fut,Anter,False> => vperf ++ fin ++ auxv ! VInf ; --# notpresent
-- zou/zal zien -- zou/zal zien
<Cond,Simul,False> => fin ++ verb.p2 ; <Cond,Simul,False> => fin ++ verb.p2 ;
<Fut,Simul,False> => fin ++ verb.p2 ; <Fut,Simul,False> => fin ++ verb.p2 ;
-- wil kunnen zien (first line in inf) -- wil kunnen zien (first line in inf)
<_,Anter,True> => fin ++ inf ; -- double inf --# notpresent <_,Anter,True> => fin ++ inf ; -- double inf --# notpresent
_ => fin ++ inf _ => fin ++ inf
-- no inf ++ fin, this is not German :-P -- no inf ++ fin, this is not German :-P
} }
in in
case o of { case o of {
@@ -640,15 +642,17 @@ param
infVP : Bool -> VP -> ((Agr => Str) * Str * Str) = \isAux, vp -> 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 ++ 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 vp.inf.p1 ++ vp.ext
> ; > ;
useInfVP : Bool -> VP -> Str = \isAux,vp -> useInfVP : Bool -> VP -> Str = \isAux,vp ->
let vpi = infVP isAux vp in 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 { reflPron : Agr => Str = table {
{n = Sg ; p = P1} => "me" ; {n = Sg ; p = P1} => "me" ;
@@ -669,7 +673,7 @@ param
p = conjPerson a.p b.p 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" ; infPart : Bool -> Str = \b -> if_then_Str b [] "te" ;

View File

@@ -18,7 +18,7 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ; insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ;
ComplVQ v q = ComplVQ v q =
insertExtrapos (q.s ! QIndir) (predV v) ; 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} ; 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} ; insertExtrapos (q.s ! QIndir) (predVv v) ** {c2 = v.c2} ;
SlashV2V v vp = SlashV2V v vp =
let let
vpi = infVP False vp vpi = infVP v.isAux vp
in in
insertExtrapos vpi.p3 ( insertExtrapos vpi.p3 (
insertInf vpi.p2 ( insertInf vpi.p2 (
insertObj vpi.p1 ((predVv v)))) ** {c2 = v.c2} ; insertObj vpi.p1 ((predVGen v.isAux v)))) ** {c2 = v.c2} ;
SlashV2A v ap = SlashV2A v ap =
insertObj (\\_ => ap.s ! APred) (predVv v) ** {c2 = v.c2} ; 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 = SlashV2VNP v np vp =
let let
vpi = infVP False vp vpi = infVP v.isAux vp
in in
insertExtrapos vpi.p3 ( insertExtrapos vpi.p3 (
insertInf vpi.p2 ( insertInf vpi.p2 (
insertObj vpi.p1 ( insertObj vpi.p1 (
insertObj (\\_ => appPrep v.c2.p1 np.s) ( 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 -- True, because negation comes before copula complement
-- "ik ben niet groot" but "ik begrijp hem niet" -- "ik ben niet groot" but "ik begrijp hem niet"