diff --git a/lib/src/swedish/Konstruktikon.gf b/lib/src/swedish/Konstruktikon.gf index 9fb9f3763..c284bb7a9 100644 --- a/lib/src/swedish/Konstruktikon.gf +++ b/lib/src/swedish/Konstruktikon.gf @@ -49,11 +49,30 @@ fun -- grad_mod_attribut -- superlativ - unikhetQuant : Quant ; -- den enda (varelse) + unikhetQuant : Quant ; -- den enda (varelse) --- NP in K, but Quant gives the full generality, also "de enda fem" + i_adjaste_lagetComp : A -> Comp ; -- i sötaste laget --- AP i K, but this would be overgenerating + progpart_saettVP : V -> V -> VP ; -- en kille kommer springande ur en affär + progpart_addVP : V -> V -> VP ; -- han gick skrikande fram till fotograferna --- what is the difference? + reaktiv_dubbel_auxUtt : VV -> NP -> Pol -> Utt ; -- måste måste man väl inte men ... --- the "men" clause is not there in the first K example + reaktiv_x_och_xUtt : Utt -> Utt ; -- många och många ---- XP in K ; what exactly are the restrictions? can we use a lower category? + juxt_redupl_adj2AP : A -> AP ; -- liten liten stuga --- is this also possible as predicative? if not, we could + juxt_redupl_adj3AP : A -> AP ; -- liten liten liten by --- implement this by just using (mkCN a (mkCN a cn)). Also blocking "mycket liten liten" + + koord_redupl_adv2Adv : Adv -> Adv ; -- runt och runt + koord_redupl_adv3Adv : Adv -> Adv ; -- runt och runt +-- koord_redupl_adv_kompAdv --- seems to be just the same thing, except in the K example "närmare och närmare målet" + + juxt_redupl_intj : Interj -> Utt ; -- tack tack + + redupl_VP2cVP : V -> VP ; -- pratar och pratar --- K says the argument is VP, but all examples are one V only + redupl_VP3cVP : V -> VP ; -- pratar och pratar och pratar --- our impl also gives: jag har sovit och sovit, + redupl_VP3VP : V -> VP ; -- pratar pratar pratar --- and: jag passar och passar på + + pred_somAdv : Temp -> AP -> NP -> Adv ; -- dum som jag var --- not Adv in K, but "avm" @@ -69,6 +88,13 @@ fun DetNPGender : NPGender -> Det -> NP ; -- a generalization of DetNP + man_NP : NP ; -- man, the impersonal/"passive" subject + menUtt : Utt -> Utt -> Utt ; -- it is raining but what does it matter + + UttBareVP : VP -> Utt ; -- sova och sova / sleep and sleep ; no infinitive mark + + tack_Interj : Interj ; + goddag_Interj : Interj ; } diff --git a/lib/src/swedish/KonstruktikonSwe.gf b/lib/src/swedish/KonstruktikonSwe.gf index 23f3cb993..94498583e 100644 --- a/lib/src/swedish/KonstruktikonSwe.gf +++ b/lib/src/swedish/KonstruktikonSwe.gf @@ -40,6 +40,70 @@ lin det = DDef Def } ; + i_adjaste_lagetComp a = { + s = \\_ => "i" ++ a.s ! AF (ASuperl SupWeak) Nom ++ "laget" + } ; + + progpart_saettVP v w = insertAdv (w.s ! VI (VPtPres Sg Indef Nom)) (predV v) ; + progpart_addVP v w = insertAdv (w.s ! VI (VPtPres Sg Indef Nom)) (predV v) ; + + reaktiv_dubbel_auxUtt vv np pol = + let + verb = vv.s ! VF (VPres Act) ; + subj = np.s ! NPNom ; + inte = negation ! pol.p + in + {s = verb ++ verb ++ subj ++ "väl" ++ inte} ; + reaktiv_x_och_xUtt u = { + s = u.s ++ "och" ++ u.s + } ; + + juxt_redupl_adj2AP a = { + s = \\ap => let adj = a.s ! AF (APosit ap) Nom in adj ++ adj ; + isPre = True + } ; + + juxt_redupl_adj3AP a = { + s = \\ap => let adj = a.s ! AF (APosit ap) Nom in adj ++ adj ++ adj ; + isPre = True + } ; + + koord_redupl_adv2Adv ad = + let adv = lin Adv ad in + mkAdv and_Conj adv adv ; + + koord_redupl_adv3Adv ad = + let adv = lin Adv ad in + mkAdv and_Conj adv (mkAdv and_Conj adv adv) ; + + juxt_redupl_intj i = + {s = i.s ++ i.s} ; + + + redupl_VP2cVP v = predV verb where { + verb = { + s = table VForm {f => v.s ! f ++ "och" ++ v.s ! f} ; + part = v.part ; + vtype = v.vtype + } + } ; + redupl_VP3cVP v = predV verb where { + verb = { + s = table VForm {f => v.s ! f ++ "och" ++ v.s ! f ++ "och" ++ v.s ! f} ; + part = v.part ; + vtype = v.vtype + } + } ; + redupl_VP3VP v = predV verb where { + verb = { + s = table VForm {f => v.s ! f ++ v.s ! f ++ v.s ! f} ; + part = v.part ; + vtype = v.vtype + } + } ; + + pred_somAdv t ap np = + P.mkAdv (ap.s ! agrAdjNP np.a DIndef ++ (mkRS (lin Temp t) positivePol (mkRCl which_RP (lin NP np) (P.mkV2 verbBe))).s ! np.a ! RNom) ; lincat @@ -55,4 +119,20 @@ lin a = agrP3 npg.g det.n } ; + man_NP = { + s = table {NPNom => "man" ; NPAcc => "en" ; NPPoss _ _ => "ens"} ; + a = agrP3 Utr Sg + } ; + + menUtt u v = + {s = u.s ++ "men" ++ v.s} ; + + UttBareVP vp = + {s = infVP vp (agrP3 Utr Sg)} ; + + tack_Interj = P.mkInterj "tack" ; + goddag_Interj = P.mkInterj "goddag" ; + + + }