diff --git a/lib/src/swedish/MakeStructuralSwe.gf b/lib/src/swedish/MakeStructuralSwe.gf index 60e46fde5..bd3b5a250 100644 --- a/lib/src/swedish/MakeStructuralSwe.gf +++ b/lib/src/swedish/MakeStructuralSwe.gf @@ -4,10 +4,16 @@ resource MakeStructuralSwe = open CatSwe, (P=ParadigmsSwe), MorphoSwe, Prelude in { oper - mkConj : Str -> Str -> P.Number -> Conj = \x,y,n -> - {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> - {s = x ; lock_Subj = <>} ; + mkConj = overload { + mkConj : Str -> Conj + = \s -> lin Conj {s1 = [] ; s2 = s ; n = P.plural} ; + mkConj : Str -> Str -> P.Number -> Conj + = \x,y,n -> {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; + } ; + + mkSubj : Str -> Subj + = \x -> {s = x ; lock_Subj = <>} ; + mkIQuant : Str -> Str -> Str -> DetSpecies -> IQuant = \vilken,vilket,vilka,d -> {s = table (P.Number) [table (P.Gender) [vilken;vilket] ; table (P.Gender) [vilka;vilka]] ; @@ -21,8 +27,14 @@ oper det = DIndef } ; - mkDet : Str -> P.Number -> Det = \s,n -> - lin Det {s,sp = \\_,_ => s ; n = n ; det = DDef Indef} ; + mkDet = overload { + mkDet : Str -> Det + = \s -> lin Det {s,sp = \\_,_ => s ; n = P.singular ; det = DDef Indef} ; + mkDet : Str -> P.Number -> Det + = \s,n -> lin Det {s,sp = \\_,_ => s ; n = n ; det = DDef Indef} ; + mkDet : Str -> Str -> P.Number -> Det + = \ingen,inget,n -> lin Det {s,sp = \\_ => table NGender [ingen ; inget] ; n = n ; det = DDef Indef} ; + } ; dDefIndef : DetSpecies = DDef Indef ; ---- other DetSpecies diff --git a/lib/src/swedish/ParadigmsSwe.gf b/lib/src/swedish/ParadigmsSwe.gf index 3cce2dde3..e78f5504c 100644 --- a/lib/src/swedish/ParadigmsSwe.gf +++ b/lib/src/swedish/ParadigmsSwe.gf @@ -278,7 +278,12 @@ oper mkV0 : V -> V0 ; --% mkVS : V -> VS ; - mkV2S : V -> Prep -> V2S ; + + mkV2S : overload { + mkV2S : V -> V2S ; + mkV2S : V -> Prep -> V2S ; + } ; + mkVV : V -> VV ; auxVV : V -> VV ; mkV2V : overload { @@ -286,9 +291,19 @@ oper mkV2V : V -> Prep -> Prep -> V2V ; } ; mkVA : V -> VA ; - mkV2A : V -> Prep -> V2A ; + + mkV2A : overload { + mkV2A : V -> V2A ; + mkV2A : V -> Prep -> V2A ; + } ; + mkVQ : V -> VQ ; - mkV2Q : V -> Prep -> V2Q ; + + mkV2Q : overload { + mkV2Q : V -> V2Q ; + mkV2Q : V -> Prep -> V2Q ; + } ; + mkAS : A -> AS ; --% mkA2S : A -> Prep -> A2S ; --% @@ -301,6 +316,9 @@ oper V0 : Type ; --% AS, A2S, AV, A2V : Type ; --% + mkInterj : Str -> Interj + = \s -> lin Interj {s = s} ; + --. --2 Definitions of the paradigms -- @@ -604,7 +622,11 @@ oper mk6V sälja (säljer.s ! VF (VPres Act)) (säljer.s ! (VF (VImper Act))) sålde sålt såld ** {s1 = [] ; lock_V = <>} ; - partV v p = {s = v.s ; part = p ; vtype = v.vtype ; lock_V = <>} ; + partV v p = case p of { + "sig" => {s = v.s ; part = [] ; vtype = VRefl ; lock_V = <>} ; + _ => {s = v.s ; part = p ; vtype = v.vtype ; lock_V = <>} + } ; + depV v = {s = v.s ; part = v.part ; vtype = VPass ; lock_V = <>} ; reflV v = {s = v.s ; part = v.part ; vtype = VRefl ; lock_V = <>} ; @@ -642,14 +664,20 @@ oper mkVQ v = v ** {lock_VQ = <>} ; mkVA v = v ** {lock_VA = <>} ; - mkV2A v p = mmkV2 v p ** {lock_V2A = <>} ; + + mkV2A = overload { + mkV2A : V -> V2A = \v -> lin V2A (mmkV2 v (mkPrep [])) ; + mkV2A : V -> Prep -> V2A = \v, p -> lin V2A (mmkV2 v p) ; + } ; V0 : Type = V ; --- V2S, V2V, V2Q : Type = V2 ; AS, A2S, AV : Type = A ; A2V : Type = A2 ; - mkV2S v p = mmkV2 v p ** {lock_V2S = <>} ; + mkV2S = overload { + mkV2S : V -> V2S = \v -> lin V2S (mmkV2 v (mkPrep [])) ; + mkV2S : V -> Prep -> V2S = \v, p -> lin V2S (mmkV2 v p) ; + } ; mkV2V = overload { @@ -659,7 +687,10 @@ oper \v, p, t -> mmkV2 v p ** {c3 = mkComplement p.s ; lock_V2V = <>} ; } ; - mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ; + mkV2Q = overload { + mkV2Q : V -> V2Q = \v -> lin V2Q (mmkV2 v (mkPrep [])) ; + mkV2Q : V -> Prep -> V2Q = \v, p -> lin V2Q (mmkV2 v p) ; + } ; mkAS v = v ** {lock_A = <>} ; mkA2S v p = mkA2 v p ** {lock_A = <>} ; diff --git a/lib/src/swedish/ParseSwe.gf b/lib/src/swedish/ParseSwe.gf index c6e29062a..8ab3e8da5 100644 --- a/lib/src/swedish/ParseSwe.gf +++ b/lib/src/swedish/ParseSwe.gf @@ -18,7 +18,7 @@ concrete ParseSwe of ParseEngAbs = VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ClSlash, RCl, EmptyRelSlash], - DictEngSwe ** + WDictEngSwe ** open MorphoSwe, ResSwe, ParadigmsSwe, SyntaxSwe, Prelude in { flags