forked from GitHub/gf-core
added voice parameter to Scandinavian VP to enable PassVPSlash with the s-passive; some additions and corrections in DictEngSwe
This commit is contained in:
@@ -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
|
||||
} ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <<t,a> : STense * Anteriority> of {
|
||||
<SPres,Simul> => vps.fin
|
||||
;<SPast,Simul> => vps.fin; --# notpresent
|
||||
<_ ,Simul> => vps.inf; --# notpresent
|
||||
<SPres,Anter> => vps.inf; --# notpresent
|
||||
<SPast,Anter> => 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))
|
||||
|
||||
Reference in New Issue
Block a user