diff --git a/lib/src/scandinavian/CatScand.gf b/lib/src/scandinavian/CatScand.gf index fa9a57a74..6f5f8e5f9 100644 --- a/lib/src/scandinavian/CatScand.gf +++ b/lib/src/scandinavian/CatScand.gf @@ -38,7 +38,7 @@ incomplete concrete CatScand of Cat = -- Verb VP = { - s : VPForm => { + s : Voice => VPForm => { fin : Str ; -- V1 har ---s1 inf : Str -- V2 sagt ---s4 } ; diff --git a/lib/src/scandinavian/CommonScand.gf b/lib/src/scandinavian/CommonScand.gf index 098c20987..4f246ab03 100644 --- a/lib/src/scandinavian/CommonScand.gf +++ b/lib/src/scandinavian/CommonScand.gf @@ -269,7 +269,7 @@ oper -- For $Verb$. VP = { - s : VPForm => { + s : Voice => VPForm => { fin : Str ; -- V1 har ---s1 inf : Str -- V2 sagt ---s4 } ; @@ -337,10 +337,21 @@ oper eext = vp.eext } ; + passiveVP : VP -> VP = \vp -> { + s = \\_ => vp.s ! Pass ; -- forms the s-passive + a1 = vp.a1 ; + n2 = vp.n2 ; + a2 = vp.a2 ; + ext = vp.ext ; + en2 = vp.en2 ; + ea2 = vp.ea2 ; + eext = vp.eext + } ; + infVP : VP -> Agr -> Str = \vp,a -> infVPPlus vp a Simul Pos ; infVPPlus : VP -> Agr -> Anteriority -> Polarity -> Str = \vp,a,ant,pol -> - vp.a1 ! pol ++ (vp.s ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1 + vp.a1 ! pol ++ (vp.s ! Act ! VPInfinit ant).inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; --- a1 -- For $Sentence$. @@ -352,7 +363,7 @@ oper mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> { s = \\t,a,b,o => let - verb = vp.s ! VPFinite t a ; + verb = vp.s ! Act ! VPFinite t a ; neg = vp.a1 ! b ; compl = vp.n2 ! agr ++ vp.a2 ++ vp.ext in diff --git a/lib/src/scandinavian/ExtraScand.gf b/lib/src/scandinavian/ExtraScand.gf index 3387ee2e7..f90864696 100644 --- a/lib/src/scandinavian/ExtraScand.gf +++ b/lib/src/scandinavian/ExtraScand.gf @@ -76,7 +76,7 @@ incomplete concrete ExtraScand of ExtraScandAbs = CatScand ** s = \\o,a => let neg = vp.a1 ! p.p ; - verb = vp.s ! VPFinite t.t t.a ; + verb = vp.s ! Act ! VPFinite t.t t.a ; compl = verb.inf ++ vp.n2 ! a ++ vp.a2 ++ vp.ext ; in t.s ++ p.s ++ case o of { Main => verb.fin ++ neg ++ compl ; diff --git a/lib/src/scandinavian/ResScand.gf b/lib/src/scandinavian/ResScand.gf index ebc96aeca..d59cbfd20 100644 --- a/lib/src/scandinavian/ResScand.gf +++ b/lib/src/scandinavian/ResScand.gf @@ -25,13 +25,13 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in { oper predV : Verb -> VP = \verb -> let - diath = case verb.vtype of { + diath : Voice -> Voice = \d -> case verb.vtype of { VPass => Pass ; - _ => Act + _ => d } ; - vfin : STense -> Str = \t -> verb.s ! vFin t diath ; - vsup = verb.s ! VI (VSupin diath) ; --# notpresent - vinf = verb.s ! VI (VInfin diath) ; + vfin : Voice -> STense -> Str = \d,t -> verb.s ! vFin t (diath d) ; + vsup : Voice -> Str = \d -> verb.s ! VI (VSupin (diath d)) ; --# notpresent + vinf : Voice -> Str = \d -> verb.s ! VI (VInfin (diath d)) ; auxv = case hasAuxBe verb of { True => verbBe.s ; @@ -47,24 +47,24 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in { } ; in { - s = table { + s = \\d => table { VPFinite t Simul => case t of { --- SPres | SPast => vf (vfin t) [] ; -- the general rule - SPast => vf (vfin t) [] ; --# notpresent - SFut => vf auxFut vinf ; --# notpresent - SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ vinf) ; --# notpresent - SCond => vf auxCond vinf ; --# notpresent - SPres => vf (vfin t) [] +-- SPres | SPast => vf (vfin d t) [] ; -- the general rule + SPast => vf (vfin d t) [] ; --# notpresent + SFut => vf auxFut (vinf d) ; --# notpresent + SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ vinf d) ; --# notpresent + SCond => vf auxCond (vinf d) ; --# notpresent + SPres => vf (vfin d t) [] } ; VPFinite t Anter => case t of { --# notpresent - SPres | SPast => vf (har t) vsup ; --# notpresent - SFut => vf auxFut (ha ++ vsup) ; --# notpresent - SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ ha ++ vsup) ; --# notpresent - SCond => vf auxCond (ha ++ vsup) --# notpresent + SPres | SPast => vf (har t) (vsup d) ; --# notpresent + SFut => vf auxFut (ha ++ vsup d) ; --# notpresent + SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ ha ++ vsup d) ; --# notpresent + SCond => vf auxCond (ha ++ vsup d) --# notpresent } ; --# notpresent - VPImperat => vf (verb.s ! VF (VImper diath)) [] ; - VPInfinit Anter => vf [] (ha ++ vsup) ; --# notpresent - VPInfinit Simul => vf [] vinf + VPImperat => vf (verb.s ! VF (VImper (diath d))) [] ; + VPInfinit Anter => vf [] (ha ++ vsup d) ; --# notpresent + VPInfinit Simul => vf [] (vinf d) } ; a1 : Polarity => Str = negation ; n2 : Agr => Str = \\a => case verb.vtype of { diff --git a/lib/src/scandinavian/SentenceScand.gf b/lib/src/scandinavian/SentenceScand.gf index 81f68cffb..b44cc1b7b 100644 --- a/lib/src/scandinavian/SentenceScand.gf +++ b/lib/src/scandinavian/SentenceScand.gf @@ -12,7 +12,7 @@ incomplete concrete SentenceScand of Sentence = s = \\pol,n => let agr = {g = Utr ; n = n ; p = P2} ; - verb = vp.s ! VPImperat ; + verb = vp.s ! Act ! VPImperat ; in verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext } ; diff --git a/lib/src/swedish/DictEngSwe.gf b/lib/src/swedish/DictEngSwe.gf index ee361772a..46cc11d45 100644 --- a/lib/src/swedish/DictEngSwe.gf +++ b/lib/src/swedish/DictEngSwe.gf @@ -1935,6 +1935,7 @@ lin befall_V = drabba_vb_1_V ; -- comment=2 lin befit_V2 = passa_paa_vbm_1_1_V2 ; -- comment=1 lin before_Adv = innan_ab_1_Adv ; -- comment=9 lin before_Prep = S.before_Prep ; -- comment=CHECKED +lin before_Subj = lin Subj {s = "innan"} ; lin beforehand_Adv = dessfoerinnan_ab_1_1_Adv ; -- comment=1 lin beg_V = tigga_vb_1_V ; -- comment=3 lin beg_V2 = mkV2 (tigga_vb_1_V) ; -- status=guess, src=wikt @@ -5749,9 +5750,10 @@ lin decentralization_N = decentralisering_nn_1_N ; -- comment=1 lin deceptive_A = vilseledande_av_1_A ; -- comment=4 lin decibel_N = decibel_nn_1_N ; -- comment=1 lin decide_V = vaelja_vb_1_1_V ; -- comment=7 -lin decide_V2 = doema_ut_vbm_1_1_V2 ; -- comment=1 -lin decide_on_V2 = doema_ut_vbm_1_1_V2 ; -- comment=1 -lin decide_upon_V2 = doema_ut_vbm_1_1_V2 ; -- comment=1 +lin decide_V2 = mkV2 (mkV "bestämmer") (mkPrep "om") ; +lin decide_VS = mkVS (mkV "bestämmer") ; +lin decide_on_V2 = mkV2 (mkV "bestämmer") (mkPrep "om") ; +lin decide_upon_V2 = mkV2 (mkV "bestämmer") (mkPrep "om") ; lin decided_A = bestaemd_av_1_1_A ; -- comment=5 lin deciliter_N = deciliter_nn_1_N ; -- comment=1 lin decimal_A = mkA "decimal" ; -- status=guess @@ -6155,6 +6157,7 @@ lin devilry_N = djaevulskap_nn_1_1_N ; -- comment=3 lin devious_A = oaerlig_av_1_1_A ; -- comment=1 lin devolution_N = delegering_nn_1_N ; -- comment=2 lin devolve_V = oeverlaata_vb_1_1_V ; -- comment=1 +lin devote_V2 = mkV2 (mkV "devote") ; lin devotee_N = fantast_nn_1_N ; -- comment=2 lin devotion_N = tillgivenhet_nn_1_N ; -- comment=8 lin devotional_A = mkA "andäktig" | andaktsfull_av_1_A | mkA "compounds with andakt" ; -- status=guess status=guess status=guess @@ -11635,6 +11638,7 @@ lin intrinsic_A = inneboende_av_1_A ; -- comment=1 lin intrinsically_Adv = egentligen_ab_1_Adv ; -- comment=1 lin introduce_V2 = mkV2 (mkV "införa" "införde" "infört") ; -- lin introduction_N = introducering_nn_1_N ; -- comment=3 +lin introductory_A = mkA "inledande" ; lin introspection_N = sjaelviakttagelse_nn_1_1_N ; -- comment=2 lin introversion_N = inaatvaendhet_nn_1_1_N ; -- comment=2 lin introvert_N = slut_nn_1_N ; -- comment=1 @@ -23957,6 +23961,7 @@ lin when_Subj = S.when_Subj ; -- comment=CHECKED lin whence_Adv = mkAdv "varifrån" | mkAdv "var i från" | vadan_ab_1_Adv ; -- status=guess status=guess status=guess lin whenever_Adv = mkAdv "närsom" | mkAdv "när som helst" | mkAdv "närhelst" ; -- status=guess status=guess status=guess lin where_IAdv = S.where_IAdv ; -- comment=CHECKED +lin where_Subj = lin Subj {s = "där"} ; lin whereabouts_N = vistelseort_nn_1_N ; -- status=guess lin whereby_Adv = varmed_ab_1_Adv ; -- status=guess lin whereon_Adv = mkAdv "varpå" ; -- status=guess @@ -24154,7 +24159,7 @@ lin withdrawal_N = uttraede_nn_1_1_N ; -- comment=6 lin wither_V = vissna_vb_1_V ; -- comment=3 lin withers_N = manke_nn_1_N ; -- status=guess lin withholding_N = mkN "källskatt" | mkN "preliminärskatt" ; -- status=guess status=guess -lin within_Prep = mkPrep "inuti" ; -- +lin within_Prep = mkPrep "inom" ; -- lin without_Prep = S.without_Prep ; -- comment=CHECKED lin witness_N = vittne_nn_1_N ; -- comment=1 lin witness_V = bevittna_vb_1_V ; -- comment=2 diff --git a/lib/src/swedish/ExtraSwe.gf b/lib/src/swedish/ExtraSwe.gf index ee4c355f1..ebb735c8c 100644 --- a/lib/src/swedish/ExtraSwe.gf +++ b/lib/src/swedish/ExtraSwe.gf @@ -30,7 +30,7 @@ lin lin --TODO: fix this; just wrote something that it compiles and doesn't give [PassVPSlash] when parsing text PassVPSlash vps = - insertObj (\\a => vps.c2.s ++ vps.n3 ! a) vps ; + insertObj (\\a => vps.c2.s ++ vps.n3 ! a) (passiveVP vps) ; RelVS s rvs = {s = \\o => s.s ! o ++ "," ++ rvs.s ! agrP3 Neutr Sg ! RPrep True} ; @@ -40,8 +40,8 @@ lin {s = \\ag,rc => t.s ++ p.s ++ vilket ++ cl.s ! t.t ! t.a ! p.p ! Sub } ; - AdvFocVP adv vp = {s = \\vpf => {fin = adv.s ++ (vp.s ! vpf).fin ; - inf = (vp.s ! vpf).inf}; + AdvFocVP adv vp = {s = \\v,vpf => {fin = adv.s ++ (vp.s ! v ! vpf).fin ; + inf = (vp.s ! v ! vpf).inf}; a1 = vp.a1 ; n2 = vp.n2 ; a2 = vp.a2 ; ext = vp.ext ; en2 = vp.en2 ; ea2 = vp.ea2; eext = vp.eext } ; PredetAdvF adv = {s = \\_,_ => adv.s ; p = [] ; a = PNoAg} ; @@ -77,14 +77,14 @@ lin let subj = np.s ! CommonScand.nominative ; agr = np.a ; - vps = vp.s ! VPFinite t a ; + vps = vp.s ! Act ! VPFinite t a ; vf = case < : STense * Anteriority> of { => vps.fin ; => vps.fin; --# notpresent <_ ,Simul> => vps.inf; --# notpresent => vps.inf; --# notpresent => vps.inf; --# notpresent - <_ ,Anter> => (vp.s ! VPFinite SPast Anter).inf --# notpresent + <_ ,Anter> => (vp.s ! Act ! VPFinite SPast Anter).inf --# notpresent }; verb = mkClause subj agr (predV do_V) ; comp = vp.n2 ! agr ++ vp.a2 ++ vp.ext @@ -98,7 +98,7 @@ lin FocAP ap np = {s = \\t,a,p => let vp = UseComp ap ; - vps = vp.s ! VPFinite t a; + vps = vp.s ! Act ! VPFinite t a; npAgr = np.a in vp.n2 ! npAgr ++ vps.fin ++ np.s ! NPNom ++ negation ! p++ vps.inf }; @@ -106,9 +106,9 @@ lin FocVV vv vp np = {s = \\t,a,p => - let vps = vp.s ! VPInfinit Simul ; + let vps = vp.s ! Act ! VPInfinit Simul ; vvp = UseV vv ; - vvs = vvp.s ! VPFinite t a ; + vvs = vvp.s ! Act ! VPFinite t a ; always = vp.a1 ! Pos ++ vvp.a1 ! Pos ; already = vp.a2 ++ vvp.a2 in vps.inf ++ vp.n2 ! np.a ++ vvs.fin ++ np.s ! NPNom @@ -148,13 +148,13 @@ lin SupCl np vp pol = let sub = np.s ! nominative ; --# notpresent - verb = (vp.s ! VPFinite SPres Anter).inf ; --# notpresent + verb = (vp.s ! Act ! VPFinite SPres Anter).inf ; --# notpresent neg = vp.a1 ! pol.p ++ pol.s ; --# notpresent compl = vp.n2 ! np.a ++ vp.a2 ++ vp.ext in --# notpresent {s = \\_ => sub ++ neg ++ verb ++ compl }; --# notpresent - PassV2 v2 = predV (depV v2); + PassV2 v2 = predV (depV (lin V v2)); PassV2Be v = insertObj (\\a => v.s ! VI (VPtPret (agrAdjNP a DIndef) Nom))