diff --git a/src/finnish/infinitives/Infinitive.gf b/src/finnish/infinitives/Infinitive.gf index c94cd6df..d029d19d 100644 --- a/src/finnish/infinitives/Infinitive.gf +++ b/src/finnish/infinitives/Infinitive.gf @@ -1,12 +1,24 @@ abstract Infinitive = - Grammar - [VPSlashPrep], ---- to avoid certain spurious ambiguities, to be fixed + Grammar - [ + VPSlashPrep, --- to avoid certain spurious ambiguities, to be fixed + PassV2 ---- temporarily disabled, to be fixed + ], Lexicon ** { flags startcat = Utt ; -data +cat + RAdv ; -- reflexive adverbs, e.g. mennäkse (ni/si/...) + +fun + UseV2 : V2 -> VP ; -- to use V2 intransitively, suppressing object + RAdvVP : VP -> RAdv -> VP ; -- syödä elääkseni + + X_NP, Y_NP, Z_NP : NP ; -- unknown subjects and objects + tulla_VV : VV ; -- tulla (tekemään), explicit future tense + PresPartPassSubjVP : VP -> VP ; -- (minun) on mentävä PresPartPassObjVP : VPSlash -> VP ; -- (oluesta) on pidettävä @@ -19,13 +31,12 @@ data AgentPartAP : NP -> VPSlash -> AP ; -- koiran syömä - + Inf1LongRAdv : VP -> RAdv ; -- mennäkse (ni/si/...) + Inf2InessAdv : NP -> VP -> Adv ; -- junan mennessä Inf2InessPassAdv : VP -> Adv ; -- odotettaessa (junaa), touhuttaessa (junan kanssa) Inf2InessPassInvAdv : NP -> VPSlash -> Adv ; -- junaa odotettaessa, junan kanssa touhutessa - Inf2InstrAdv : VP -> Adv ; -- odottaen (junaa) - Inf2InstrInvAdv : NP -> VPSlash -> Adv ; -- junaa odottaen Inf2InstrAdv : VP -> Adv ; -- odottaen (junaa) Inf2InstrInvAdv : NP -> VPSlash -> Adv ; -- junaa odottaen diff --git a/src/finnish/infinitives/InfinitiveFin.gf b/src/finnish/infinitives/InfinitiveFin.gf index 220825b7..322f1645 100644 --- a/src/finnish/infinitives/InfinitiveFin.gf +++ b/src/finnish/infinitives/InfinitiveFin.gf @@ -1,15 +1,28 @@ --# -path=..:alltenses concrete InfinitiveFin of Infinitive = - GrammarFin - [VPSlashPrep], + GrammarFin - [ + VPSlashPrep, + PassV2], LexiconFin ** open ResFin, StemFin, - Prelude + Prelude, + ParadigmsFin in { +lincat + RAdv = {s : Agr => Str} ; + lin + UseV2 v2 = predSV v2 ; + RAdvVP vp radv = insertObj (\\_,_ => radv.s) vp ; ---- can be wrong word order + + X_NP = MassNP (UseN (mkN "X" "X:n")) ; + Y_NP = MassNP (UseN (mkN "Y" "Z:n")) ; + Z_NP = MassNP (UseN (mkN "Z" "Z:n")) ; + PresPartPassSubjVP vp = vp ** { s = vpVerbOlla ** {sc = SCGen} ; s2 = \\b,p,a => vp.s.s ! PresPartPass (AN (NCase Sg Nom)) ++ vp.s2 ! b ! p ! a ; @@ -64,6 +77,12 @@ lin p = [] } ; + Inf1LongRAdv vp = { + s = \\a => + infVP SCNom Pos infAdvAgr vp Inf1Long ++ BIND ++ + case vp.s.h of {Back => possSuffix a ; Front => possSuffixFront a} + } ; + Inf2InessAdv np vp = { s = np.s ! NPCase Gen ++ infVP SCNom Pos np.a vp Inf2Iness diff --git a/src/finnish/infinitives/InterpretInfinitives.hs b/src/finnish/infinitives/InterpretInfinitives.hs index 70c20f2e..4057e072 100644 --- a/src/finnish/infinitives/InterpretInfinitives.hs +++ b/src/finnish/infinitives/InterpretInfinitives.hs @@ -7,7 +7,7 @@ import PGF import Data.List data Fact = Fact { - content :: Maybe Fact, + content :: [Fact], tense :: Maybe GTemp, polarity :: Maybe GPol, source :: Maybe GNP, @@ -16,7 +16,7 @@ data Fact = Fact { action :: Maybe GVP } -initFact = Fact Nothing Nothing Nothing Nothing Nothing Nothing Nothing +initFact = Fact [] Nothing Nothing Nothing Nothing Nothing Nothing factTree fact = case action fact of (Just vp) ->