diff --git a/lib/resource-1.0/abstract/Cat.gf b/lib/resource-1.0/abstract/Cat.gf index 7acc7b58a..88a93ce30 100644 --- a/lib/resource-1.0/abstract/Cat.gf +++ b/lib/resource-1.0/abstract/Cat.gf @@ -1,5 +1,7 @@ --1 The category system +-- Some categories are inherited from [Common Common.html]. + abstract Cat = Common ** { cat @@ -105,7 +107,6 @@ abstract Cat = Common ** { --2 Words of open classes -- These are constructed in [Lexicon Lexicon.html] and in additional lexicon modules. - V ; -- one-place verb e.g. "sleep" V2 ; -- two-place verb e.g. "love" V3 ; -- three-place verb e.g. "show" diff --git a/lib/resource-1.0/abstract/Noun.gf b/lib/resource-1.0/abstract/Noun.gf index e588c1ee0..26b05654d 100644 --- a/lib/resource-1.0/abstract/Noun.gf +++ b/lib/resource-1.0/abstract/Noun.gf @@ -19,7 +19,7 @@ abstract Noun = Cat ** { -- A noun phrase already formed can be modified by a Predeterminer. - PredetNP : Predet -> NP -> NP; -- only the man + PredetNP : Predet -> NP -> NP; -- only the man --2 Determiners diff --git a/lib/resource-1.0/finnish/IdiomFin.gf b/lib/resource-1.0/finnish/IdiomFin.gf index b6d77aa25..0d15a2e5c 100644 --- a/lib/resource-1.0/finnish/IdiomFin.gf +++ b/lib/resource-1.0/finnish/IdiomFin.gf @@ -3,5 +3,40 @@ concrete IdiomFin of Idiom = CatFin ** flags optimize=all_subs ; + lin + ExistNP np = + let + cas : Polarity -> NPForm = \p -> case p of { + Pos => NPCase Nom ; -- on olemassa luku + Neg => NPCase Part -- ei ole olemassa lukua + } + in + mkClause [] (agrP3 Sg) (insertObj + (\\_,b,_ => "olemassa" ++ np.s ! cas b) (predV olla)) ; + + ImpersCl vp = mkClause [] (agrP3 Sg) vp ; + + GenericCl vp = mkClause [] (agrP3 Sg) { + s = \\_ => vp.s ! VIPass ; + s2 = vp.s2 ; + ext = vp.ext ; + sc = vp.sc + } ; + + + ProgrVP vp = + let + inf = (vp.s ! VIInf Inf3Iness ! Simul ! Pos ! agrP3 Sg).fin ; + on = predV olla + in { + s = on.s ; + s2 = \\b,p,a => inf ++ vp.s2 ! b ! p ! a ; + ext = vp.ext ; + sc = vp.sc + } ; + + oper + olla = verbOlla ** {sc = NPCase Nom} ; + } diff --git a/lib/resource-1.0/french/CatFre.gf b/lib/resource-1.0/french/CatFre.gf index 4d793a0e6..dc0a09446 100644 --- a/lib/resource-1.0/french/CatFre.gf +++ b/lib/resource-1.0/french/CatFre.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../common:../abstract:../common:prelude -concrete CatFre of Cat = TenseX ** CatRomance with +concrete CatFre of Cat = CommonX ** CatRomance with (ResRomance = ResFre) ; diff --git a/lib/resource-1.0/german/IdiomGer.gf b/lib/resource-1.0/german/IdiomGer.gf index fae8cbb59..333688e7d 100644 --- a/lib/resource-1.0/german/IdiomGer.gf +++ b/lib/resource-1.0/german/IdiomGer.gf @@ -3,5 +3,17 @@ concrete IdiomGer of Idiom = CatGer ** flags optimize=all_subs ; + lin + ExistNP np = + let geben = dirV2 (mkV "geben" "gibt" "gib" "gab" "gäbe" "gegeben") + in + mkClause "es" (agrP3 Sg) + (insertObj (\\_ => appPrep geben.c2 np.s) + (predV geben)) ; + ImpersCl vp = mkClause "es" (agrP3 Sg) vp ; + GenericCl vp = mkClause "man" (agrP3 Sg) vp ; + + ProgrVP = insertAdv "eben" ; ---- + } diff --git a/lib/resource-1.0/italian/CatIta.gf b/lib/resource-1.0/italian/CatIta.gf index 36465b1bf..b44364a0e 100644 --- a/lib/resource-1.0/italian/CatIta.gf +++ b/lib/resource-1.0/italian/CatIta.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../abstract:../common:prelude -concrete CatIta of Cat = TenseX ** CatRomance with +concrete CatIta of Cat = CommonX ** CatRomance with (ResRomance = ResIta) ; diff --git a/lib/resource-1.0/italian/IdiomIta.gf b/lib/resource-1.0/italian/IdiomIta.gf index 0ad2bc9b0..833607f09 100644 --- a/lib/resource-1.0/italian/IdiomIta.gf +++ b/lib/resource-1.0/italian/IdiomIta.gf @@ -1,7 +1,27 @@ concrete IdiomIta of Idiom = CatIta ** - open MorphoIta, ParadigmsIta, Prelude in { + open PhonoIta, MorphoIta, ParadigmsIta, Prelude in { flags optimize=all_subs ; + lin + ExistNP np = + mkClause [] (agrP3 np.a.g np.a.n) + (insertClit2 (elision "ci" "c'" "ci") + (insertComplement (\\_ => np.s ! Ton Nom) + (predV copula))) ; + ImpersCl vp = mkClause [] (agrP3 Masc Sg) vp ; + GenericCl vp = mkClause "si" (agrP3 Masc Sg) vp ; ---- se ci fanno cose + + ProgrVP vp = + insertComplement + (\\agr => + let + clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ; + obj = clpr.p2 ++ vp.comp ! agr ++ vp.ext ! Pos ---- pol + in + (vp.s ! VPGerund).inf ! (aagr agr.g agr.n) ++ clpr.p1 ++ obj + ) + (predV (essereV (regV "stare"))) ; + } diff --git a/lib/resource-1.0/norwegian/CatNor.gf b/lib/resource-1.0/norwegian/CatNor.gf index b9db977fe..bfc4b5390 100644 --- a/lib/resource-1.0/norwegian/CatNor.gf +++ b/lib/resource-1.0/norwegian/CatNor.gf @@ -1,2 +1,2 @@ -concrete CatNor of Cat = TenseX ** CatScand with +concrete CatNor of Cat = CommonX ** CatScand with (ResScand = ResNor) ; diff --git a/lib/resource-1.0/norwegian/IdiomNor.gf b/lib/resource-1.0/norwegian/IdiomNor.gf index bb48fb3e2..aa6f2bd8b 100644 --- a/lib/resource-1.0/norwegian/IdiomNor.gf +++ b/lib/resource-1.0/norwegian/IdiomNor.gf @@ -1,7 +1,17 @@ concrete IdiomNor of Idiom = CatNor ** - open MorphoNor, ParadigmsNor, Prelude in { + open MorphoNor, ParadigmsNor, IrregNor, Prelude in { flags optimize=all_subs ; + lin + ExistNP np = + mkClause "det" (agrP3 neutrum Sg) (insertObj + (\\_ => np.s ! accusative) (predV (depV finne_V))) ; + ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ; + GenericCl vp = mkClause "man" (agrP3 neutrum Sg) vp ; + + ProgrVP vp = + insertObj (\\a => ["ved Ã¥"] ++ infVP vp a) (predV verbBe) ; + } diff --git a/lib/resource-1.0/romance/CommonRomance.gf b/lib/resource-1.0/romance/CommonRomance.gf index 3983ac530..68c1af91a 100644 --- a/lib/resource-1.0/romance/CommonRomance.gf +++ b/lib/resource-1.0/romance/CommonRomance.gf @@ -102,6 +102,7 @@ param VPForm = VPFinite TMood Anteriority | VPImperat + | VPGerund | VPInfinit Anteriority ; -- Agreement of adjectives, verb phrases, and relative pronouns. diff --git a/lib/resource-1.0/romance/ResRomance.gf b/lib/resource-1.0/romance/ResRomance.gf index f244bc5f7..36a4ce7c6 100644 --- a/lib/resource-1.0/romance/ResRomance.gf +++ b/lib/resource-1.0/romance/ResRomance.gf @@ -54,6 +54,7 @@ oper vfin : TMood -> Agr -> Str = \tm,a -> verb.s ! VFin tm a.n a.p ; vpart : AAgr -> Str = \a -> verb.s ! VPart a.g a.n ; vinf = verb.s ! VInfin ; + vger = verb.s ! VGer ; typ = verb.vtyp ; aux = auxVerb typ ; @@ -80,6 +81,7 @@ oper VPFinite t Simul => vf (vfin t) (\_ -> []) ; VPFinite t Anter => vf (habet t) vpart ; VPImperat => vf vimp (\_ -> []) ; + VPGerund => vf (\_ -> []) (\_ -> vger) ; VPInfinit Simul => vf (\_ -> []) (\_ -> vinf) ; VPInfinit Anter => vf (\_ -> []) (\a -> habere ++ vpart a) } ; @@ -192,7 +194,7 @@ oper inf = (vp.s ! VPInfinit Simul).inf ! (aagr agr.g agr.n) ; neg = vp.neg ! Pos ; --- Neg not in API clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ; - obj = clpr.p2 ++ vp.comp ! agr + obj = clpr.p2 ++ vp.comp ! agr ++ vp.ext ! Pos ---- pol in clitInf (clpr.p1 ++ vp.clit2) inf ++ obj ; diff --git a/lib/resource-1.0/spanish/CatSpa.gf b/lib/resource-1.0/spanish/CatSpa.gf index 833f6a2c1..5367eeaf9 100644 --- a/lib/resource-1.0/spanish/CatSpa.gf +++ b/lib/resource-1.0/spanish/CatSpa.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../abstract:../common:prelude -concrete CatSpa of Cat = TenseX ** CatRomance with +concrete CatSpa of Cat = CommonX ** CatRomance with (ResRomance = ResSpa) ; diff --git a/lib/resource-1.0/swedish/IdiomSwe.gf b/lib/resource-1.0/swedish/IdiomSwe.gf index 03679a42f..fd2be3d87 100644 --- a/lib/resource-1.0/swedish/IdiomSwe.gf +++ b/lib/resource-1.0/swedish/IdiomSwe.gf @@ -1,7 +1,17 @@ concrete IdiomSwe of Idiom = CatSwe ** - open MorphoSwe, ParadigmsSwe, Prelude in { + open MorphoSwe, ParadigmsSwe, IrregSwe, Prelude in { flags optimize=all_subs ; + lin + ExistNP np = + mkClause "det" (agrP3 neutrum Sg) (insertObj + (\\_ => np.s ! accusative) (predV (depV finna_V))) ; + ImpersCl vp = mkClause "det" (agrP3 neutrum Sg) vp ; + GenericCl vp = mkClause "man" (agrP3 neutrum Sg) vp ; + + ProgrVP vp = + insertObj (\\a => "att" ++ infVP vp a) (predV (partV hålla_V "på")) ; + }