diff --git a/lib/resource-1.0/abstract/Idiom.gf b/lib/resource-1.0/abstract/Idiom.gf index 8fdcef740..3b29102ce 100644 --- a/lib/resource-1.0/abstract/Idiom.gf +++ b/lib/resource-1.0/abstract/Idiom.gf @@ -6,12 +6,17 @@ abstract Idiom = Cat ** { -- often different even in closely related languages. fun - ImpersCl : VP -> Cl ; -- it rains - GenericCl : VP -> Cl ; -- one sleeps + ImpersCl : VP -> Cl ; -- it rains + GenericCl : VP -> Cl ; -- one sleeps - ExistNP : NP -> Cl ; -- there is a house - ExistIP : IP -> QCl ; -- which houses are there + CleftNP : NP -> RS -> Cl ; -- it is you who did it + CleftAdv : Adv -> S -> Cl ; -- it is yesterday she arrived - ProgrVP : VP -> VP ; -- be sleeping + ExistNP : NP -> Cl ; -- there is a house + ExistIP : IP -> QCl ; -- which houses are there + + ProgrVP : VP -> VP ; -- be sleeping + + ImpPl1 : VP -> Utt ; -- let's go } diff --git a/lib/resource-1.0/danish/IdiomDan.gf b/lib/resource-1.0/danish/IdiomDan.gf index 5b5e6757f..df3483c70 100644 --- a/lib/resource-1.0/danish/IdiomDan.gf +++ b/lib/resource-1.0/danish/IdiomDan.gf @@ -7,6 +7,15 @@ concrete IdiomDan of Idiom = CatDan ** ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ; GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ; + CleftNP np rs = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => rs.s ! np.a) + (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + + CleftAdv ad s = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => s.s ! Main) + (insertObj (\\_ => ad.s) (predV verbBe))) ; + + ExistNP np = mkClause "det" (agrP3 neutrum Sg) (insertObj (\\_ => np.s ! accusative) (predV (depV finde_V))) ; @@ -26,5 +35,7 @@ concrete IdiomDan of Idiom = CatDan ** ProgrVP vp = insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ; + ImpPl1 vp = {s = ["lad os"] ++ infVP vp {gn = Plg ; p = P1}} ; + } diff --git a/lib/resource-1.0/english/CatEng.gf b/lib/resource-1.0/english/CatEng.gf index 52e7a0b4e..204e8f7c0 100644 --- a/lib/resource-1.0/english/CatEng.gf +++ b/lib/resource-1.0/english/CatEng.gf @@ -8,7 +8,7 @@ concrete CatEng of Cat = CommonX ** open ResEng, Prelude in { S = {s : Str} ; QS = {s : QForm => Str} ; - RS = {s : Agr => Str} ; + RS = {s : Agr => Str ; c : Case} ; -- c for it clefts -- Sentence @@ -25,7 +25,7 @@ concrete CatEng of Cat = CommonX ** open ResEng, Prelude in { -- Relative - RCl = {s : Tense => Anteriority => Polarity => Agr => Str} ; + RCl = {s : Tense => Anteriority => Polarity => Agr => Str ; c : Case} ; RP = {s : RCase => Str ; a : RAgr} ; -- Verb diff --git a/lib/resource-1.0/english/IdiomEng.gf b/lib/resource-1.0/english/IdiomEng.gf index 432661a08..35ef4ba46 100644 --- a/lib/resource-1.0/english/IdiomEng.gf +++ b/lib/resource-1.0/english/IdiomEng.gf @@ -6,13 +6,25 @@ concrete IdiomEng of Idiom = CatEng ** open Prelude, ResEng in { ImpersCl vp = mkClause "it" (agrP3 Sg) vp ; GenericCl vp = mkClause "one" (agrP3 Sg) vp ; + CleftNP np rs = mkClause "it" (agrP3 Sg) + (insertObj (\\_ => rs.s ! np.a) + (insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ; + + CleftAdv ad s = mkClause "it" (agrP3 Sg) + (insertObj (\\_ => conjThat ++ s.s) + (insertObj (\\_ => ad.s) (predAux auxBe))) ; + ExistNP np = - mkClause "there" (agrP3 np.a.n) (insertObj (\\_ => np.s ! Acc) (predAux auxBe)) ; + mkClause "there" (agrP3 np.a.n) + (insertObj (\\_ => np.s ! Acc) (predAux auxBe)) ; ExistIP ip = - mkQuestion (ss (ip.s ! Nom)) (mkClause "there" (agrP3 ip.n) (predAux auxBe)) ; + mkQuestion (ss (ip.s ! Nom)) + (mkClause "there" (agrP3 ip.n) (predAux auxBe)) ; ProgrVP vp = insertObj (\\a => vp.ad ++ vp.prp ++ vp.s2 ! a) (predAux auxBe) ; + ImpPl1 vp = {s = "let's" ++ infVP True vp {n = Pl ; p = P1}} ; + } diff --git a/lib/resource-1.0/english/RelativeEng.gf b/lib/resource-1.0/english/RelativeEng.gf index 9b0b9b562..a25a42db3 100644 --- a/lib/resource-1.0/english/RelativeEng.gf +++ b/lib/resource-1.0/english/RelativeEng.gf @@ -5,7 +5,8 @@ concrete RelativeEng of Relative = CatEng ** open ResEng in { lin RelCl cl = { - s = \\t,a,p,_ => "such" ++ "that" ++ cl.s ! t ! a ! p ! ODir + s = \\t,a,p,_ => "such" ++ "that" ++ cl.s ! t ! a ! p ! ODir ; + c = Nom } ; RelVP rp vp = { @@ -17,14 +18,16 @@ concrete RelativeEng of Relative = CatEng ** open ResEng in { } ; cl = mkClause (rp.s ! RC Nom) agr vp in - cl.s ! t ! ant ! b ! ODir + cl.s ! t ! ant ! b ! ODir ; + c = Nom } ; -- Preposition stranding: "that we are looking at". Pied-piping is -- deferred to $ExtEng.gf$ ("at which we are looking"). RelSlash rp slash = { - s = \\t,a,p,_ => rp.s ! RC Acc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 + s = \\t,a,p,_ => rp.s ! RC Acc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 ; + c = Acc } ; FunRP p np rp = { diff --git a/lib/resource-1.0/english/SentenceEng.gf b/lib/resource-1.0/english/SentenceEng.gf index 1588393cc..130100285 100644 --- a/lib/resource-1.0/english/SentenceEng.gf +++ b/lib/resource-1.0/english/SentenceEng.gf @@ -42,6 +42,9 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in { UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! ODir} ; UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; - UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + UseRCl t a p cl = { + s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ; + c = cl.c + } ; } diff --git a/lib/resource-1.0/german/CatGer.gf b/lib/resource-1.0/german/CatGer.gf index 168192806..ba0a78aea 100644 --- a/lib/resource-1.0/german/CatGer.gf +++ b/lib/resource-1.0/german/CatGer.gf @@ -8,7 +8,7 @@ concrete CatGer of Cat = CommonX ** open ResGer, Prelude in { S = {s : Order => Str} ; QS = {s : QForm => Str} ; - RS = {s : GenNum => Str} ; + RS = {s : GenNum => Str ; c : Case} ; -- Sentence @@ -26,7 +26,7 @@ concrete CatGer of Cat = CommonX ** open ResGer, Prelude in { -- Relative - RCl = {s : Tense => Anteriority => Polarity => GenNum => Str} ; + RCl = {s : Tense => Anteriority => Polarity => GenNum => Str ; c : Case} ; RP = {s : GenNum => Case => Str ; a : RAgr} ; -- Verb diff --git a/lib/resource-1.0/german/ConjunctionGer.gf b/lib/resource-1.0/german/ConjunctionGer.gf index c4ccec76a..3b8ead2aa 100644 --- a/lib/resource-1.0/german/ConjunctionGer.gf +++ b/lib/resource-1.0/german/ConjunctionGer.gf @@ -12,10 +12,10 @@ concrete ConjunctionGer of Conjunction = DConjAdv conj ss = conjunctDistrSS conj ss ; ConjNP conj ss = conjunctTable Case conj ss ** { - a = {n = conjNumber conj.n ss.a.n ; p = ss.a.p} + a = {g = Fem ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} } ; DConjNP conj ss = conjunctDistrTable Case conj ss ** { - a = {n = conjNumber conj.n ss.a.n ; p = ss.a.p} + a = {g = Fem ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} } ; ConjAP conj ss = conjunctTable AForm conj ss ** { diff --git a/lib/resource-1.0/german/IdiomGer.gf b/lib/resource-1.0/german/IdiomGer.gf index 9c514f788..b4575cc46 100644 --- a/lib/resource-1.0/german/IdiomGer.gf +++ b/lib/resource-1.0/german/IdiomGer.gf @@ -7,6 +7,15 @@ concrete IdiomGer of Idiom = CatGer ** ImpersCl vp = mkClause "es" (agrP3 Sg) vp ; GenericCl vp = mkClause "man" (agrP3 Sg) vp ; + CleftNP np rs = mkClause "es" (agrP3 Sg) + (insertObj (\\_ => rs.s ! gennum np.a.g np.a.n) ---- + (insertObj (\\_ => np.s ! rs.c) (predV sein_V))) ; + + CleftAdv ad s = mkClause "es" (agrP3 Sg) + (insertObj (\\_ => s.s ! Main) + (insertObj (\\_ => ad.s) (predV sein_V))) ; + + ExistNP np = mkClause "es" (agrP3 Sg) (insertObj (\\_ => appPrep geben.c2 np.s) @@ -25,6 +34,10 @@ concrete IdiomGer of Idiom = CatGer ** ProgrVP = insertAdv "eben" ; ---- + ImpPl1 vp = {s = + (mkClause "wir" {g = Fem ; n = Pl ; p = P1} vp).s ! Pres ! Simul ! Pos ! Inv + } ; + oper geben = dirV2 (mkV "geben" "gibt" "gib" "gab" "gäbe" "gegeben") ; } diff --git a/lib/resource-1.0/german/RelativeGer.gf b/lib/resource-1.0/german/RelativeGer.gf index d73e8a647..e1ae60c29 100644 --- a/lib/resource-1.0/german/RelativeGer.gf +++ b/lib/resource-1.0/german/RelativeGer.gf @@ -5,7 +5,8 @@ concrete RelativeGer of Relative = CatGer ** open ResGer in { lin RelCl cl = { - s = \\t,a,b,_ => "derart" ++ conjThat ++ cl.s ! t ! a ! b ! Sub + s = \\t,a,b,_ => "derart" ++ conjThat ++ cl.s ! t ! a ! b ! Sub ; + c = Nom } ; RelVP rp vp = { @@ -13,16 +14,18 @@ concrete RelativeGer of Relative = CatGer ** open ResGer in { let agr = case rp.a of { RNoAg => agrP3 (numGenNum gn) ; - RAg a => a + RAg a => a ** {g = Neutr} } ; cl = mkClause (rp.s ! gn ! Nom) agr vp in - cl.s ! t ! ant ! b ! Sub + cl.s ! t ! ant ! b ! Sub ; + c = Nom } ; RelSlash rp slash = { s = \\t,a,p,gn => - appPrep slash.c2 (rp.s ! gn) ++ slash.s ! t ! a ! p ! Sub + appPrep slash.c2 (rp.s ! gn) ++ slash.s ! t ! a ! p ! Sub ; + c = slash.c2.c } ; FunRP p np rp = { diff --git a/lib/resource-1.0/german/ResGer.gf b/lib/resource-1.0/german/ResGer.gf index 6771a2911..de6a145cd 100644 --- a/lib/resource-1.0/german/ResGer.gf +++ b/lib/resource-1.0/german/ResGer.gf @@ -31,7 +31,7 @@ resource ResGer = ParamX ** open Prelude in { -- Agreement of $NP$ is a record. - oper Agr = {n : Number ; p : Person} ; + oper Agr = {g : Gender ; n : Number ; p : Person} ; -- Pronouns are the worst-case noun phrases, which have both case -- and possessive forms. @@ -85,8 +85,10 @@ resource ResGer = ParamX ** open Prelude in { --2 Transformations between parameter types oper - agrP3 : Number -> Agr = \n -> - {n = n ; p = P3} ; + agrP3 : Number -> Agr = agrgP3 Neutr ; + + agrgP3 : Gender -> Number -> Agr = \g,n -> + {g = g ; n = n ; p = P3} ; gennum : Gender -> Number -> GenNum = \g,n -> case n of { @@ -135,6 +137,7 @@ resource ResGer = ParamX ** open Prelude in { } ; conjAgr : Agr -> Agr -> Agr = \a,b -> { + g = Neutr ; ---- n = conjNumber a.n b.n ; p = conjPerson a.p b.p } ; @@ -267,14 +270,14 @@ resource ResGer = ParamX ** open Prelude in { -- All personal pronouns, except "ihr", conform to the simple -- pattern $mkPronPers$. - mkPronPers : (x1,_,_,_,x5 : Str) -> Number -> Person -> + mkPronPers : (x1,_,_,_,x5 : Str) -> Gender -> Number -> Person -> {s : NPForm => Str ; a : Agr} = - \ich,mich,mir,meiner,mein,n,p -> { + \ich,mich,mir,meiner,mein,g,n,p -> { s = table { NPCase c => caselist ich mich mir meiner ! c ; NPPoss gn c => mein + pronEnding ! gn ! c } ; - a = {n = n ; p = p} + a = {g = g ; n = n ; p = p} } ; pronEnding : GenNum => Case => Str = table { @@ -538,7 +541,9 @@ resource ResGer = ParamX ** open Prelude in { reflPron : Agr => Case => Str = table { {n = Sg ; p = P1} => caselist "ich" "mich" "mir" "meiner" ; {n = Sg ; p = P2} => caselist "du" "dich" "dir" "deiner" ; - {n = Sg ; p = P3} => caselist "er" "sich" "sich" "seiner" ; --- ihrer + {g = Masc ; n = Sg ; p = P3} => caselist "er" "sich" "sich" "seiner" ; + {g = Fem ; n = Sg ; p = P3} => caselist "sie" "sich" "sich" "ihrer" ; + {g = Neutr ; n = Sg ; p = P3} => caselist "es" "sich" "sich" "seiner" ; {n = Pl ; p = P1} => caselist "wir" "uns" "uns" "unser" ; {n = Pl ; p = P2} => caselist "ihr" "euch" "euch" "euer" ; {n = Pl ; p = P3} => caselist "sie" "sich" "sich" "ihrer" diff --git a/lib/resource-1.0/german/SentenceGer.gf b/lib/resource-1.0/german/SentenceGer.gf index 107ca8e41..4eb4dc562 100644 --- a/lib/resource-1.0/german/SentenceGer.gf +++ b/lib/resource-1.0/german/SentenceGer.gf @@ -11,7 +11,7 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer in { ImpVP vp = { s = \\pol,n => let - agr = {n = n ; p = P2} ; + agr = {g = Fem ; n = n ; p = P2} ; --- g does not matter verb = vp.s ! agr ! VPImperat ; in verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.inf ++ vp.ext @@ -39,6 +39,9 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer in { UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; - UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + UseRCl t a p cl = { + s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ; + c = cl.c + } ; } diff --git a/lib/resource-1.0/german/StructuralGer.gf b/lib/resource-1.0/german/StructuralGer.gf index 809865c91..c5c0b9474 100644 --- a/lib/resource-1.0/german/StructuralGer.gf +++ b/lib/resource-1.0/german/StructuralGer.gf @@ -36,7 +36,7 @@ concrete StructuralGer of Structural = CatGer ** few_Det = detLikeAdj Pl "wenig" ; first_Ord = {s = (regA "erst").s ! Posit} ; from_Prep = mkPrep "aus" Dat ; - he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Sg P3 ; + he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Masc Sg P3 ; here7to_Adv = ss ["hierher"] ; here7from_Adv = ss ["hieraus"] ; here_Adv = ss "hier" ; @@ -44,9 +44,9 @@ concrete StructuralGer of Structural = CatGer ** how8many_IDet = detLikeAdj Pl "wieviel" ; if_Subj = ss "wenn" ; in8front_Prep = mkPrep "vor" Dat ; - i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Sg P1 ; + i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Fem Sg P1 ; in_Prep = mkPrep "in" Dat ; - it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Sg P3 ; + it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ; less_CAdv = ss "weniger" ; many_Det = detLikeAdj Pl "viel" ; more_CAdv = ss "mehr" ; @@ -72,7 +72,7 @@ concrete StructuralGer of Structural = CatGer ** please_Voc = ss "bitte" ; possess_Prep = mkPrep "von" Dat ; quite_Adv = ss "ziemlich" ; - she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Sg P3 ; + she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Fem Sg P3 ; so_AdA = ss "so" ; somebody_NP = nameNounPhrase {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ; somePl_Det = detLikeAdj Pl "einig" ; @@ -90,7 +90,7 @@ concrete StructuralGer of Structural = CatGer ** there7from_Adv = ss ["daher"] ; therefore_PConj = ss "deshalb" ; these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ; - they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Pl P3 ; + they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ; this_Quant = {s = \\n => (detLikeAdj n "dies").s ; a = Weak} ; this_NP = nameNounPhrase {s = caselist "dies" "dies" "diesem" "dieses"} ; ---- those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ; @@ -105,7 +105,7 @@ concrete StructuralGer of Structural = CatGer ** "wollte" "wolltest" "wollten" "wolltet" "wollte" "gewollen" [] VHaben) ; - we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Pl P1 ; + we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Fem Pl P1 ; whatSg_IP = {s = caselist "was" "was" "was" "wessen" ; n = Sg} ; ---- whatPl_IP = {s = caselist "was" "was" "was" "wessen" ; n = Pl} ; ---- @@ -121,9 +121,9 @@ concrete StructuralGer of Structural = CatGer ** why_IAdv = ss "warum" ; without_Prep = mkPrep "ohne" Acc ; with_Prep = mkPrep "mit" Dat ; - youSg_Pron = mkPronPers "du" "dich" "dir" "deiner" "dein" Sg P2 ; - youPl_Pron = mkPronPers "ihr" "euch" "euch" "eurer" "euer" Pl P2 ; ---- poss - youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Pl P3 ; + youSg_Pron = mkPronPers "du" "dich" "dir" "deiner" "dein" Fem Sg P2 ; + youPl_Pron = mkPronPers "ihr" "euch" "euch" "eurer" "euer" Fem Pl P2 ; ---- poss + youPol_Pron = mkPronPers "Sie" "Sie" "Ihnen" "Ihrer" "Ihr" Fem Pl P3 ; yes_Phr = ss "ja" ; } diff --git a/lib/resource-1.0/norwegian/IdiomNor.gf b/lib/resource-1.0/norwegian/IdiomNor.gf index 29613da13..eb9942c2b 100644 --- a/lib/resource-1.0/norwegian/IdiomNor.gf +++ b/lib/resource-1.0/norwegian/IdiomNor.gf @@ -8,6 +8,14 @@ concrete IdiomNor of Idiom = CatNor ** ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ; GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ; + CleftNP np rs = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => rs.s ! np.a) + (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + + CleftAdv ad s = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => s.s ! Main) + (insertObj (\\_ => ad.s) (predV verbBe))) ; + ExistNP np = mkClause "det" (agrP3 neutrum Sg) (insertObj (\\_ => np.s ! accusative) (predV (depV finne_V))) ; @@ -27,5 +35,8 @@ concrete IdiomNor of Idiom = CatNor ** ProgrVP vp = insertObj (\\a => ["ved å"] ++ infVP vp a) (predV verbBe) ; + ImpPl1 vp = {s = ["lat oss"] ++ infVP vp {gn = Plg ; p = P1}} ; + + } diff --git a/lib/resource-1.0/scandinavian/CatScand.gf b/lib/resource-1.0/scandinavian/CatScand.gf index daf6fa094..ccb651eea 100644 --- a/lib/resource-1.0/scandinavian/CatScand.gf +++ b/lib/resource-1.0/scandinavian/CatScand.gf @@ -9,7 +9,7 @@ incomplete concrete CatScand of Cat = S = {s : Order => Str} ; QS = {s : QForm => Str} ; - RS = {s : Agr => Str} ; + RS = {s : Agr => Str ; c : NPForm} ; -- Sentence @@ -24,10 +24,10 @@ incomplete concrete CatScand of Cat = IComp = {s : AFormPos => Str} ; IDet = {s : Gender => Str ; n : Number ; det : DetSpecies} ; --- Relative +-- Relative; the case $c$ is for "det" clefts. - RCl = {s : Tense => Anteriority => Polarity => Agr => Str} ; - RP = {s : GenNum => RCase => Str ; a : RAgr} ; + RCl = {s : Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ; + RP = {s : GenNum => RCase => Str ; a : RAgr} ; -- Verb diff --git a/lib/resource-1.0/scandinavian/RelativeScand.gf b/lib/resource-1.0/scandinavian/RelativeScand.gf index 51dd8dfc8..b671e3442 100644 --- a/lib/resource-1.0/scandinavian/RelativeScand.gf +++ b/lib/resource-1.0/scandinavian/RelativeScand.gf @@ -6,7 +6,8 @@ incomplete concrete RelativeScand of Relative = lin RelCl cl = { - s = \\t,a,p,ag => pronSuch ! ag.gn ++ conjThat ++ cl.s ! t ! a ! p ! Sub + s = \\t,a,p,ag => pronSuch ! ag.gn ++ conjThat ++ cl.s ! t ! a ! p ! Sub ; + c = NPAcc } ; RelVP rp vp = { @@ -18,7 +19,8 @@ incomplete concrete RelativeScand of Relative = } ; cl = mkClause (rp.s ! ag.gn ! RNom) agr vp in - cl.s ! t ! ant ! b ! Sub + cl.s ! t ! ant ! b ! Sub ; + c = NPNom } ; --- We make this easy by using "som" and preposition stranding. It would be @@ -29,7 +31,8 @@ incomplete concrete RelativeScand of Relative = RelSlash rp slash = { s = \\t,a,p,ag => - rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2 + rp.s ! ag.gn ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.c2 ; + c = NPAcc } ; --- The case here could be genitive. diff --git a/lib/resource-1.0/scandinavian/SentenceScand.gf b/lib/resource-1.0/scandinavian/SentenceScand.gf index 5e24f8198..d5bb92e00 100644 --- a/lib/resource-1.0/scandinavian/SentenceScand.gf +++ b/lib/resource-1.0/scandinavian/SentenceScand.gf @@ -42,6 +42,9 @@ incomplete concrete SentenceScand of Sentence = UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; - UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + UseRCl t a p cl = { + s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ; + c = cl.c + } ; } diff --git a/lib/resource-1.0/swedish/IdiomSwe.gf b/lib/resource-1.0/swedish/IdiomSwe.gf index 4428381fa..1456c2720 100644 --- a/lib/resource-1.0/swedish/IdiomSwe.gf +++ b/lib/resource-1.0/swedish/IdiomSwe.gf @@ -6,6 +6,16 @@ concrete IdiomSwe of Idiom = CatSwe ** lin ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ; GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ; + + CleftNP np rs = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => rs.s ! np.a) + (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + + CleftAdv ad s = mkClause "det" (agrP3 neutrum Sg) + (insertObj (\\_ => s.s ! Main) + (insertObj (\\_ => ad.s) (predV verbBe))) ; + + ExistNP np = mkClause "det" (agrP3 neutrum Sg) (insertObj (\\_ => np.s ! accusative) (predV (depV finna_V))) ; @@ -26,5 +36,8 @@ concrete IdiomSwe of Idiom = CatSwe ** ProgrVP vp = insertObj (\\a => "att" ++ infVP vp a) (predV (partV hålla_V "på")) ; + ImpPl1 vp = {s = ["låt oss"] ++ infVP vp {gn = Plg ; p = P1}} ; + + }