(Dut) Add all AForms into VForm for past participle; update rest of the modules accordingly. Fix agreement in PastPartAP.

This commit is contained in:
Inari Listenmaa
2018-04-19 12:01:05 +02:00
parent b5ca8710cf
commit 34d27a6876
7 changed files with 179 additions and 172 deletions

View File

@@ -176,7 +176,7 @@ oper
tr (th (heading imperative_Parameter ++ heading singular_Parameter) ++ td (vfin VImp2 ++ Predef.BIND ++ "," ++ vfin VImp3)) ++ tr (th (heading imperative_Parameter ++ heading singular_Parameter) ++ td (vfin VImp2 ++ Predef.BIND ++ "," ++ vfin VImp3)) ++
tr (th (heading imperative_Parameter ++ heading plural_Parameter) ++ td (vfin (VImpPl))) ++ tr (th (heading imperative_Parameter ++ heading plural_Parameter) ++ td (vfin (VImpPl))) ++
tr (th (heading infinitive_Parameter) ++ td (verb.s ! VInf)) ++ tr (th (heading infinitive_Parameter) ++ td (verb.s ! VInf)) ++
tr (th (heading perfect_Parameter ++ heading participle_Parameter) ++ td (verb.s ! VPerf)) ++ tr (th (heading perfect_Parameter ++ heading participle_Parameter) ++ td (verb.s ! VPerf APred)) ++
tr (th (heading imperfect_Parameter ++ heading participle_Parameter) ++ td (verb.s ! VPresPart)) ++ tr (th (heading imperfect_Parameter ++ heading participle_Parameter) ++ td (verb.s ! VPresPart)) ++
tr (th (heading gerund_Parameter) ++ td (verb.s ! VGer)) ++ tr (th (heading gerund_Parameter) ++ td (verb.s ! VGer)) ++
tr (th (heading aux_verb_Parameter) ++ td (case verb.aux of {VHebben => "hebben" ; VZijn => "zijn"})) tr (th (heading aux_verb_Parameter) ++ td (case verb.aux of {VHebben => "hebben" ; VZijn => "zijn"}))

View File

@@ -13,9 +13,12 @@ concrete ExtendDut of Extend =
ParadigmsDut in { ParadigmsDut in {
lin lin
PastPartAP vp = { PastPartAP vp = {
s = \\agr,af => (infClause [] agr vp).s ! Past ! Anter ! Pos ! Sub ; s = \\agr,af => let aForm = case vp.isHeavy of {
isPre = notB vp.inf.p2 True => APred ;
} ; False => af } ;
in (infClause [] agr vp aForm).s ! Past ! Anter ! Pos ! Sub ;
isPre = notB vp.isHeavy ;
} ;
} }

View File

@@ -58,7 +58,7 @@ lin
b = p.p ; b = p.p ;
vform = vForm t agr.g agr.n agr.p o ; vform = vForm t agr.g agr.n agr.p o ;
auxv = (auxVerb vp.s.aux).s ; auxv = (auxVerb vp.s.aux).s ;
vperf = vp.s.s ! VPerf ; vperf = vp.s.s ! VPerf APred ;
verb : Str * Str = case <t,a> of { verb : Str * Str = case <t,a> of {
<Fut|Cond,Simul> => <zullen_V.s ! vform, vp.s.s ! VInf> ; --# notpresent <Fut|Cond,Simul> => <zullen_V.s ! vform, vp.s.s ! VInf> ; --# notpresent
<Fut|Cond,Anter> => <zullen_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent <Fut|Cond,Anter> => <zullen_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent
@@ -96,9 +96,9 @@ lin
ConjVPS = conjunctDistrTable2 Order Agr ; ConjVPS = conjunctDistrTable2 Order Agr ;
PassVPSlash vps = PassVPSlash vps =
insertInf (vps.s.s ! VPerf) (predV ResDut.worden_V) ; insertInf (vps.s.s ! VPerf APred) (predV ResDut.worden_V) ;
PassAgentVPSlash vps np = PassAgentVPSlash vps np =
insertAdv (appPrep (P.mkPrep "door") np) (insertInf (vps.s.s ! VPerf) (predV ResDut.worden_V)) ; insertAdv (appPrep (P.mkPrep "door") np) (insertInf (vps.s.s ! VPerf APred) (predV ResDut.worden_V)) ;
lin lin
NominalizeVPSlashNP vpslash np = NominalizeVPSlashNP vpslash np =

View File

@@ -34,7 +34,7 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
} ; } ;
PPartNP np v2 = heavyNP { PPartNP np v2 = heavyNP {
s = \\c => np.s ! c ++ v2.s ! VPerf ; -- invar part s = \\c => np.s ! c ++ v2.s ! VPerf APred ; -- invar part
a = np.a ; a = np.a ;
} ; } ;

View File

@@ -289,7 +289,7 @@ oper
no_geV v = let vs = v.s in { no_geV v = let vs = v.s in {
s = table { s = table {
VPerf => Predef.drop 2 (vs ! VPerf) ; VPerf x => Predef.drop 2 (vs ! VPerf x) ;
p => vs ! p p => vs ! p
} ; } ;
prefix = v.prefix ; lock_V = v.lock_V ; particle = v.particle ; aux = v.aux ; vtype = v.vtype prefix = v.prefix ; lock_V = v.lock_V ; particle = v.particle ; aux = v.aux ; vtype = v.vtype
@@ -297,7 +297,7 @@ oper
fixprefixV s v = let vs = v.s in { fixprefixV s v = let vs = v.s in {
s = table { s = table {
VPerf => s + Predef.drop 2 (vs ! VPerf) ; VPerf x => s + Predef.drop 2 (vs ! VPerf x) ;
p => s + vs ! p p => s + vs ! p
} ; } ;
prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; particle = v.particle ; vtype = v.vtype prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; particle = v.particle ; vtype = v.vtype

View File

@@ -122,8 +122,7 @@ param
| VImp2 -- wees | VImp2 -- wees
| VImp3 -- weest | VImp3 -- weest
| VImpPl -- wezen | VImpPl -- wezen
| VPerf -- geweest | VPerf AForm -- geweest / geweeste / geweests (e.g. "iets verdwaalds")
| VPerfInfl -- geweeste
| VPresPart -- zijnde | VPresPart -- zijnde
| VGer -- zijnde | VGer -- zijnde
; ;
@@ -135,24 +134,25 @@ param
mkVerb : (x1,_,_,_,_,_,x7 : Str) -> Verb = mkVerb : (x1,_,_,_,_,_,x7 : Str) -> Verb =
\aai, aait, aaien, aaide, aaidet, aaiden, geaaid -> \aai, aait, aaien, aaide, aaidet, aaiden, geaaid ->
mkVerb8 aai aait aait aaien aaide aaidet aaiden geaaid ; mkVerb8 aai aait aait aaien aaide aaidet aaiden geaaid ;
mkVerb8 : (_,_,_,_,_,_,_,_ : Str) -> Verb = mkVerb8 : (_,_,_,_,_,_,_,_ : Str) -> Verb =
\aai, aaitt, aait, aaien, aaide, _, aaiden, geaaid -> \aai, aaitt, aait, aaien, aaide, _, aaiden, geaaid ->
let geaaide = inflParticiple geaaid let geaaide = inflParticiple geaaid
in { s = table { in { s = table {
VInf | VInfFull | VInf | VInfFull |
VImpPl | VPresPl => aaien; -- hij/zij/het/wij aaien VImpPl | VPresPl => aaien; -- hij/zij/het/wij aaien
VPresSg1 | VImp2 => aai; -- ik aai VPresSg1 | VImp2 => aai; -- ik aai
VPresSg2 => aaitt ; -- jij aait VPresSg2 => aaitt ; -- jij aait
VPresSg3 | VImp3 => aait; -- hij/zij aait VPresSg3 | VImp3 => aait; -- hij/zij aait
VPastSg => aaide; -- ik aaide --# notpresent VPastSg => aaide; -- ik aaide --# notpresent
VPastPl => aaiden; -- hij/zij/het/wij aaiden --# notpresent VPastPl => aaiden; -- hij/zij/het/wij aaiden --# notpresent
VPerf => geaaid ; -- ik heb geaaid VPerf APred => geaaid ; -- ik heb geaaid
VPerfInfl => geaaide ; -- inflected form of participle VPerf AAttr => geaaide ; -- geaaide X
VPresPart => aaien + "de" ; VPerf AGen => geaaid + "s" ; -- iets geaaids
VGer => aaien + "d" VPresPart => aaien + "de" ;
} VGer => aaien + "d"
}
}; };
inflParticiple : Str -> Str = \gezien -> inflParticiple : Str -> Str = \gezien ->
@@ -187,7 +187,7 @@ param
-- if_then_Str b (ein + geb) geb ; -- if_then_Str b (ein + geb) geb ;
in in
{s = table { {s = table {
f@(VInfFull | VPerf) => ein + vs ! f; f@(VInfFull | VPerf _) => ein + vs ! f;
f => vs ! f f => vs ! f
} ; } ;
prefix = ein ; prefix = ein ;
@@ -196,25 +196,24 @@ param
vtype = verb.vtype vtype = verb.vtype
} ; } ;
-- Pattern matching verbs -- Pattern matching verbs
-- Checking if the verb starts with "ver" is due to a bugfix in mkStem regarding ≥2-syllable verbs. /IL2018 -- Checking if the verb starts with "ver" is due to a bugfix in mkStem regarding ≥2-syllable verbs. /IL2018
smartVerb : (_,_:Str) -> Verb = \verb,stem -> smartVerb : (_,_:Str) -> Verb = \verb,stem ->
let raw = Predef.tk 2 verb; let raw = Predef.tk 2 verb;
vg : {ver : Str ; geet : Str } = case verb of { vg : {ver : Str ; geet : Str } = case verb of {
"ver" + geten => {ver = "ver" ; geet = mkStem geten } ; "ver" + geten => {ver = "ver" ; geet = mkStem geten } ;
_ => {ver = [] ; geet = stem } } ; _ => {ver = [] ; geet = stem } } ;
vergeten : Str = verb ; vergeten : Str = verb ;
vergeet : Str = vg.ver + vg.geet ; vergeet : Str = vg.ver + vg.geet ;
in in
case raw of { case raw of {
_+ ("k"|"f"|"s"|"c"|"h"|"p") => t_regVerb vergeten vergeet ; _+ ("k"|"f"|"s"|"c"|"h"|"p") => t_regVerb vergeten vergeet ;
_+ "v" => v_regVerb vergeten vergeet ; _+ "v" => v_regVerb vergeten vergeet ;
_+ "z" => z_regVerb vergeten vergeet ; _+ "z" => z_regVerb vergeten vergeet ;
_+ ("t" | "tt") => t_end_regVerb vergeten vergeet ; _+ ("t" | "tt") => t_end_regVerb vergeten vergeet ;
_+ "d" => d_end_regVerb vergeten vergeet ; _+ "d" => d_end_regVerb vergeten vergeet ;
_ => d_regVerb vergeten vergeet _ => d_regVerb vergeten vergeet
};
};
consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"y"|"z") ; consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"y"|"z") ;
vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ; vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ;
@@ -230,10 +229,10 @@ param
lo = init lop ; lo = init lop ;
o = last lo ; o = last lo ;
p = case last lop of { p = case last lop of {
"v" => "f" ; "v" => "f" ;
"z" => "s" ; "z" => "s" ;
p => p p => p
} ; } ;
loop = lo + o + p ; -- voiced consonant to unvoiced, vowel doubling loop = lo + o + p ; -- voiced consonant to unvoiced, vowel doubling
kerf = lo + p ; -- voiced consonant to unvoiced, no vowel doubling kerf = lo + p ; -- voiced consonant to unvoiced, no vowel doubling
zeg = tk 3 lopen ; -- double consonant disappearing zeg = tk 3 lopen ; -- double consonant disappearing
@@ -249,74 +248,74 @@ param
_ + #vowel + ("w"|"j") => werk ; -- Don't double a vowel before a w or j (are there other consonants?) _ + #vowel + ("w"|"j") => werk ; -- Don't double a vowel before a w or j (are there other consonants?)
_ + #vowel + #consonant => loop ; -- In other cases, a single penultimate vowel doubles. _ + #vowel + #consonant => loop ; -- In other cases, a single penultimate vowel doubles.
_+ ("bb" | "dd" | "ff" | "gg" | "kk" | "ll" | "mm" | "nn" | "pp" | _+ ("bb" | "dd" | "ff" | "gg" | "kk" | "ll" | "mm" | "nn" | "pp" |
"rr" | "ss" | "tt") => zeg ; "rr" | "ss" | "tt") => zeg ;
_+ #consonant + ("v"|"z") => kerf ; _+ #consonant + ("v"|"z") => kerf ;
_ => werk --default case, #consonant + #consonant _ => werk --default case, #consonant + #consonant
}; };
-- To add a particle to a verb -- To add a particle to a verb
-- addPartVerb : Str -> Verb -> Verb = \aanmoedigen -> -- addPartVerb : Str -> Verb -> Verb = \aanmoedigen ->
-- let verbpiece = Predef.drop 3 aanmoedigen; -- let verbpiece = Predef.drop 3 aanmoedigen;
-- part = Predef.take 3 aanmoedigen; -- part = Predef.take 3 aanmoedigen;
-- in -- in
-- mkVerb (smartVerb verbpiece) part; -- mkVerb (smartVerb verbpiece) part;
-- For regular verbs with past tense 'd' -- For regular verbs with past tense 'd'
d_regVerb : (_,_ :Str) -> Verb = \geeuwen,geeuw -> d_regVerb : (_,_ :Str) -> Verb = \geeuwen,geeuw ->
mkVerb geeuw (geeuw + "t") geeuwen mkVerb geeuw (geeuw + "t") geeuwen
(geeuw + "de") (geeuw + "de") (geeuw + "den") (geeuw + "de") (geeuw + "de") (geeuw + "den")
("ge" + geeuw + "d"); ("ge" + geeuw + "d");
-- For regular verbs with past tense 't' -- For regular verbs with past tense 't'
t_regVerb : (_,_ :Str) -> Verb = \botsen,bots -> t_regVerb : (_,_ :Str) -> Verb = \botsen,bots ->
mkVerb bots (bots + "t") botsen mkVerb bots (bots + "t") botsen (bots + "te")
(bots + "te") (bots + "te") (bots + "ten") (bots + "te") (bots + "ten") ("ge" + bots + "t");
("ge" + bots + "t");
-- For verbs that dont need an extra 't' at the end
-- For verbs that dont need an extra 't' at the end
t_end_regVerb : (_,_ : Str) -> Verb = \achten,acht -> t_end_regVerb : (_,_ : Str) -> Verb = \achten,acht ->
mkVerb acht (acht) achten mkVerb acht (acht) achten (acht + "te")
(acht + "te") (acht +"te") (acht+"ten") ("ge"+acht); (acht +"te") (acht+"ten") ("ge"+acht);
-- For verbs that dont need an extra 'd' at the end -- For verbs that dont need an extra 'd' at the end
d_end_regVerb : (_,_ : Str) -> Verb = \aarden,aard -> d_end_regVerb : (_,_ : Str) -> Verb = \aarden,aard ->
mkVerb aard (aard+"t") aarden mkVerb aard (aard+"t") aarden (aard + "de")
(aard + "de") (aard +"de") (aard+"den") ("ge"+aard); (aard +"de") (aard+"den") ("ge"+aard);
-- For verbs that need a vowel doubled in singular -- For verbs that need a vowel doubled in singular
add_vowel_regVerb : (_,_ : Str) -> Verb = \absorberen,stem -> add_vowel_regVerb : (_,_ : Str) -> Verb = \absorberen,stem ->
case stem of { case stem of {
_+ ("t"|"k"|"f"|"s"|"c"|"h"|"p") => t_regVerb absorberen stem; _+ ("t"|"k"|"f"|"s"|"c"|"h"|"p") => t_regVerb absorberen stem;
_ => d_regVerb absorberen stem _ => d_regVerb absorberen stem };
};
-- For verbs that have their stem ending with a 'z' -- For verbs that have their stem ending with a 'z'
z_regVerb : (_,_ : Str) -> Verb = \omhelzen,stem -> z_regVerb : (_,_ : Str) -> Verb = \omhelzen,stem ->
d_regVerb omhelzen stem; d_regVerb omhelzen stem;
-- For verbs that have their stem ending with a 'v' -- For verbs that have their stem ending with a 'v'
v_regVerb : (_,_ : Str) -> Verb = \hoeven,hoef -> v_regVerb : (_,_ : Str) -> Verb = \hoeven,hoef ->
mkVerb hoef (hoef +"t") hoeven (hoef+"de") (hoef+"de") (hoef+"den") ("ge"+hoef+"d"); mkVerb hoef (hoef +"t") hoeven (hoef+"de")
(hoef+"de") (hoef+"den") ("ge"+hoef+"d");
zijn_V : VVerb = { zijn_V : VVerb = {
s = table { s = table {
VInf => "zijn" ; VInf => "zijn" ;
VInfFull => "zijn" ; VInfFull => "zijn" ;
VPresSg1 => "ben" ; VPresSg1 => "ben" ;
VPresSg2 => "bent" ; VPresSg2 => "bent" ;
VPresSg3 => "is" ; VPresSg3 => "is" ;
VPresPl => "zijn" ; VPresPl => "zijn" ;
VPastSg => "was" ; --# notpresent VPastSg => "was" ; --# notpresent
VPastPl => "waren" ; --# notpresent VPastPl => "waren" ; --# notpresent
VImp2 => "wees" ; VImp2 => "wees" ;
VImp3 => "weest" ; VImp3 => "weest" ;
VImpPl => "wezen" ; VImpPl => "wezen" ;
VPerf => "geweest" ; VPerf APred => "geweest" ;
VPerfInfl => "geweeste" ; VPerf AAttr => "geweeste" ;
VPresPart => "zijnde" ; VPerf AGen => "geweests" ;
VGer => "wezend" VPresPart => "zijnde" ;
VGer => "wezend"
} ; } ;
aux = VZijn ; aux = VZijn ;
prefix = [] ; prefix = [] ;
@@ -326,21 +325,22 @@ param
hebben_V : VVerb = { hebben_V : VVerb = {
s = table { s = table {
VInf => "hebben" ; VInf => "hebben" ;
VInfFull => "hebben" ; VInfFull => "hebben" ;
VPresSg1 => "heb" ; VPresSg1 => "heb" ;
VPresSg2 => "hebt" ; VPresSg2 => "hebt" ;
VPresSg3 => "heeft" ; VPresSg3 => "heeft" ;
VPresPl => "hebben" ; VPresPl => "hebben" ;
VPastSg => "had" ; --# notpresent VPastSg => "had" ; --# notpresent
VPastPl => "hadden" ; --# notpresent VPastPl => "hadden" ; --# notpresent
VImp2 => "heb" ; VImp2 => "heb" ;
VImp3 => "heeft" ; VImp3 => "heeft" ;
VImpPl => "hebben" ; VImpPl => "hebben" ;
VPerf => "gehad" ; VPerf APred => "gehad" ;
VPerfInfl => "gehadde" ; VPerf AAttr => "gehadde" ;
VPresPart => "hebbende" ; VPerf AGen => "gehads" ;
VGer => "hebbend" VPresPart => "hebbende" ;
VGer => "hebbend"
} ; } ;
aux = VHebben ; aux = VHebben ;
prefix = [] ; prefix = [] ;
@@ -350,21 +350,22 @@ param
zullen_V : VVerb = { zullen_V : VVerb = {
s = table { s = table {
VInf => "zullen" ; VInf => "zullen" ;
VInfFull => "zullen" ; VInfFull => "zullen" ;
VPresSg1 => "zal" ; VPresSg1 => "zal" ;
VPresSg2 => "zult" ; VPresSg2 => "zult" ;
VPresSg3 => "zal" ; VPresSg3 => "zal" ;
VPresPl => "zullen" ; VPresPl => "zullen" ;
VPastSg => "zou" ; --# notpresent VPastSg => "zou" ; --# notpresent
VPastPl => "zouden" ; --# notpresent VPastPl => "zouden" ; --# notpresent
VImp2 => "zoud" ; ---- not used VImp2 => "zoud" ; ---- not used
VImp3 => "zoudt" ; VImp3 => "zoudt" ;
VImpPl => "zouden" ; ---- VImpPl => "zouden" ; ----
VPerf => "gezoudt" ; VPerf APred => "gezoudt" ;
VPerfInfl => "gezoude" ; VPerf AAttr => "gezoude" ;
VPresPart => "zullende" ; VPerf AGen => "gezouds" ;
VGer => "zullend" VPresPart => "zullende" ;
VGer => "zullend"
} ; } ;
aux = VHebben ; aux = VHebben ;
prefix = [] ; prefix = [] ;
@@ -374,21 +375,22 @@ param
kunnen_V : VVerb = { kunnen_V : VVerb = {
s = table { s = table {
VInf => "kunnen" ; VInf => "kunnen" ;
VInfFull => "kunnen" ; VInfFull => "kunnen" ;
VPresSg1 => "kan" ; VPresSg1 => "kan" ;
VPresSg2 => "kunt" ; VPresSg2 => "kunt" ;
VPresSg3 => "kan" ; ---- kun je VPresSg3 => "kan" ; ---- kun je
VPresPl => "kunnen" ; VPresPl => "kunnen" ;
VPastSg => "kon" ; --# notpresent VPastSg => "kon" ; --# notpresent
VPastPl => "konden" ; --# notpresent VPastPl => "konden" ; --# notpresent
VImp2 => "kan" ; ---- not used VImp2 => "kan" ; ---- not used
VImp3 => "kan" ; VImp3 => "kan" ;
VImpPl => "kunnen" ; ---- VImpPl => "kunnen" ; ----
VPerf => "gekund" ; VPerf APred => "gekund" ;
VPerfInfl => "gekunde" ; VPerf AAttr => "gekunde" ;
VPresPart => "kunnende" ; VPerf AGen => "gekunds" ;
VGer => "kunnend" VPresPart => "kunnende" ;
VGer => "kunnend"
} ; } ;
aux = VHebben ; aux = VHebben ;
prefix = [] ; prefix = [] ;
@@ -425,9 +427,9 @@ param
oper VVerb = Verb ** {prefix : Str ; -- af + stappen oper VVerb = Verb ** {prefix : Str ; -- af + stappen
particle : Str ; -- non-inflecting component, e.g. leuk vinden particle : Str ; -- non-inflecting component, e.g. leuk vinden
aux : VAux ; -- hebben or zijn aux : VAux ; -- hebben or zijn
vtype : VType} ; -- active or reflexive vtype : VType} ; -- active or reflexive
param VAux = VHebben | VZijn ; param VAux = VHebben | VZijn ;
@@ -531,7 +533,8 @@ param
isAux : Bool ; -- is a double infinitive isAux : Bool ; -- is a double infinitive
negPos : NegPosition ; -- ik schoop X niet ; ik houd niet van X ; dat is niet leuk negPos : NegPosition ; -- ik schoop X niet ; ik houd niet van X ; dat is niet leuk
inf : Str * Bool ; -- zeggen (True = non-empty) inf : Str * Bool ; -- zeggen (True = non-empty)
ext : Str -- dat je komt ext : Str ; -- dat je komt
isHeavy : Bool ; -- has any other field than s. Affects any VP* -> AP function.
} ; } ;
predV : VVerb -> VP = predVGen False AfterObjs ; predV : VVerb -> VP = predVGen False AfterObjs ;
@@ -550,7 +553,8 @@ param
isAux = isAux ; isAux = isAux ;
negPos = negPos ; negPos = negPos ;
inf : Str * Bool = <[],False> ; inf : Str * Bool = <[],False> ;
ext : Str = [] ext : Str = [] ;
isHeavy = False ;
} ; } ;
negation : Polarity => Str = table { negation : Polarity => Str = table {
@@ -568,6 +572,7 @@ param
n0 = \\a => case isPron of {True => obj ! a ; _ => []} ++ vp.n0 ! a ; n0 = \\a => case isPron of {True => obj ! a ; _ => []} ++ vp.n0 ! a ;
n2 = \\a => case isPron of {False => obj ! a ; _ => []} ++ vp.n2 ! a ; n2 = \\a => case isPron of {False => obj ! a ; _ => []} ++ vp.n2 ! a ;
negPos = negPos ; negPos = negPos ;
isHeavy = True ;
} ; } ;
insertAdV : Str -> VP -> VP = \adv,vp -> vp ** { insertAdV : Str -> VP -> VP = \adv,vp -> vp ** {
@@ -579,11 +584,13 @@ param
} ; } ;
insertExtrapos : Str -> VP -> VP = \ext,vp -> vp ** { insertExtrapos : Str -> VP -> VP = \ext,vp -> vp ** {
ext = vp.ext ++ ext ext = vp.ext ++ ext ;
isHeavy = True ;
} ; } ;
insertInf : Str -> VP -> VP = \inf,vp -> vp ** { insertInf : Str -> VP -> VP = \inf,vp -> vp ** {
inf = <inf ++ vp.inf.p1, True> ; inf = <inf ++ vp.inf.p1, True> ;
isHeavy = True ;
} ; } ;
-- For $Sentence$. -- For $Sentence$.
@@ -596,34 +603,31 @@ param
s : Tense => Anteriority => Polarity => Order => Str s : Tense => Anteriority => Polarity => Order => Str
} ; } ;
-- To be used for normal clauses -- To be used for normal clauses. APred chooses the noninflected past participle.
mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp ->
mkClause' subj agr vp ! Fin ; mkClause' subj agr vp APred Fin ;
-- To be used for ExtendDut.PastPartAP -- To be used for ExtendDut.PastPartAP
-- If we need more variants, extend mkClause' -- If we need more variants, extend mkClause'
infClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> infClause : Str -> Agr -> VP -> AForm -> Clause = \subj,agr,vp,af ->
mkClause' subj agr vp ! Inf ; mkClause' subj agr vp af Inf ;
-- Lines 615-618 add a possibility to choose a participle verb form. -- Added a possibility to choose a participle verb form.
-- This is so far only used in ExtendDut.PastPartAP. /IL2018 -- This is so far only used in ExtendDut.PastPartAP. /IL2018
mkClause' : Str -> Agr -> VP -> (ClType => Clause) = \subj,agr,vp -> mkClause' : Str -> Agr -> VP -> AForm -> ClType -> Clause = \subj,agr,vp,af,isPart -> {
\\isPart => {
s = \\t,a,b,o => s = \\t,a,b,o =>
let let
vform = vForm t agr.g agr.n agr.p o ; vform = vForm t agr.g agr.n agr.p o ;
auxv = (auxVerb vp.s.aux).s ; auxv = (auxVerb vp.s.aux).s ;
vperf = vp.s.s ! VPerf ; vperf = vp.s.s ! VPerf af ;
verb : Str * Str = case <isPart,t,a> of { verb : Str * Str = case <isPart,t,a> of {
-- <Experimental: only used in ExtendDut.PastPartAP> -- <Experimental: only used in ExtendDut.PastPartAP>
<Inf,Pres, _> => <vp.s.s ! VPresPart, []> ; <Inf,Pres, _> => <vp.s.s ! VPresPart, []> ;
<Inf,_,_> => <case agr.g of { Utr => vp.s.s ! VPerfInfl ; <Inf,_, _> => <vperf,[]> ;
_ => vperf } -- </Experimental>
,[]> ;
-- </Experimental>
<_,Fut|Cond,Simul> => <zullen_V.s ! vform, vp.s.s ! VInf> ; --# notpresent <_,Fut|Cond,Simul> => <zullen_V.s ! vform, vp.s.s ! VInf> ; --# notpresent
<_,Fut|Cond,Anter> => <zullen_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent <_,Fut|Cond,Anter> => <zullen_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent
<_,_, Anter> => <auxv ! vform, vperf> ; --# notpresent <_,_, Anter> => <auxv ! vform, vperf> ; --# notpresent
<_,_, Simul> => <vp.s.s ! vform, []> <_,_, Simul> => <vp.s.s ! vform, []>
@@ -632,16 +636,16 @@ param
neg = vp.a1 ! b ; neg = vp.a1 ! b ;
obj0 = vp.n0 ! agr ; obj0 = vp.n0 ! agr ;
obj = vp.n2 ! agr ; obj = vp.n2 ! agr ;
part = vp.s.particle ; part = vp.s.particle ;
pref = case <a : Anteriority> of { pref = case <a : Anteriority> of {
Anter => [] ; -- prefix is part of participle: toegevoegd --# notpresent Anter => [] ; -- prefix is part of participle: toegevoegd --# notpresent
_ => vp.s.prefix -- prefix not present in verb form _ => vp.s.prefix -- prefix not present in verb form
} ; } ;
compl = case vp.negPos of { compl = case vp.negPos of {
BeforeObjs => neg ++ obj0 ++ obj ++ part ++ vp.a2 ++ pref ; BeforeObjs => neg ++ obj0 ++ obj ++ part ++ vp.a2 ++ pref ;
AfterObjs => obj0 ++ obj ++ neg ++ part ++ vp.a2 ++ pref ; AfterObjs => obj0 ++ obj ++ neg ++ part ++ vp.a2 ++ pref ;
BetweenObjs => obj0 ++ neg ++ obj ++ part ++ vp.a2 ++ pref BetweenObjs => obj0 ++ neg ++ obj ++ part ++ vp.a2 ++ pref
} ; } ;
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
@@ -676,7 +680,7 @@ param
let vverb = vp.s in { let vverb = vp.s in {
obj = \\agr => vp.n0 ! agr ++ vp.n2 ! agr ++ vp.a2 ; obj = \\agr => vp.n0 ! agr ++ vp.n2 ! agr ++ vp.a2 ;
inf = vp.a1 ! Pos ++ -- altijd inf = vp.a1 ! Pos ++ -- altijd
vverb.particle ++ -- leuk vverb.particle ++ -- leuk
if_then_Str isAux if_then_Str isAux
(vverb.s ! VInfFull) -- toevoegen (vverb.s ! VInfFull) -- toevoegen
(vverb.prefix ++ "te" ++ vverb.s ! VInf) ; -- te vinden (vverb.prefix ++ "te" ++ vverb.s ! VInf) ; -- te vinden
@@ -688,7 +692,7 @@ param
in in
\vps -> insertExtrapos vpi.ext \vps -> insertExtrapos vpi.ext
(insertInf vpi.inf (insertInf vpi.inf
(insertObj vpi.obj vps)) ; (insertObj vpi.obj (vps ** {isHeavy=True}))) ;
useInfVP : Bool -> VP -> Agr => Str = \isAux,vp -> useInfVP : Bool -> VP -> Agr => Str = \isAux,vp ->
let vpi = infVP isAux vp in let vpi = infVP isAux vp in

View File

@@ -80,7 +80,7 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
(npLite (\\_ => reflPron ! a)) (npLite (\\_ => reflPron ! a))
) vp ; ) vp ;
PassV2 v = insertInf (v.s ! VPerf) (predV worden_V) ; PassV2 v = insertInf (v.s ! VPerf APred) (predV worden_V) ;
VPSlashPrep vp prep = vp ** {c2 = <prep,True>} ; VPSlashPrep vp prep = vp ** {c2 = <prep,True>} ;