mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
completed infinitive and participle structures of Finnish
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
abstract Infinitive =
|
abstract Infinitive =
|
||||||
|
|
||||||
Grammar,
|
Grammar - [VPSlashPrep], ---- to avoid certain spurious ambiguities, to be fixed
|
||||||
Lexicon
|
Lexicon
|
||||||
** {
|
** {
|
||||||
|
|
||||||
@@ -9,10 +9,49 @@ fun
|
|||||||
PresPartPassObjVP : VPSlash -> VP ; -- (oluesta) on pidettävä
|
PresPartPassObjVP : VPSlash -> VP ; -- (oluesta) on pidettävä
|
||||||
|
|
||||||
PastPartPassAdv : NP -> VP -> Adv ; -- junan mentyä
|
PastPartPassAdv : NP -> VP -> Adv ; -- junan mentyä
|
||||||
AgentPartAP : NP -> VPSlash -> AP ; -- koiran syömä
|
|
||||||
|
PresPartActAP : VP -> AP ; -- (lihaa) syövä
|
||||||
|
PastPartActAP : VP -> AP ; -- (lihaa) syönyt
|
||||||
|
PresPartPassAP : VPSlash -> AP ; -- (tänään) syötävä
|
||||||
|
PastPartPassAP : VPSlash -> AP ; -- (tänään) syöty
|
||||||
|
|
||||||
|
AgentPartAP : NP -> VPSlash -> AP ; -- koiran syömä
|
||||||
|
|
||||||
|
|
||||||
Inf2InessAdv : NP -> VP -> Adv ; -- junan mennessä
|
Inf2InessAdv : NP -> VP -> Adv ; -- junan mennessä
|
||||||
Inf2InessPassAdv : NP -> VPSlash -> Adv ; -- junaa odotettaessa
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Inf3InessAdv : VP -> Adv ; -- odottamassa (junaa)
|
||||||
|
Inf3InessInvAdv : NP -> VPSlash -> Adv ; -- junaa odottamassa
|
||||||
|
|
||||||
|
Inf3ElatAdv : VP -> Adv ; -- odottamasta (junaa)
|
||||||
|
Inf3ElatInvAdv : NP -> VPSlash -> Adv ; -- junaa odottamasta
|
||||||
|
|
||||||
|
Inf3IllatAdv : VP -> Adv ; -- odottamaan (junaa)
|
||||||
|
Inf3IllatInvAdv : NP -> VPSlash -> Adv ; -- junaa odottamaan
|
||||||
|
|
||||||
|
Inf3AdessAdv : VP -> Adv ; -- odottamalla (junaa)
|
||||||
|
Inf3AdessInvAdv : NP -> VPSlash -> Adv ; -- junaa odottamalla
|
||||||
|
|
||||||
|
Inf3AbessAdv : VP -> Adv ; -- odottamatta (junaa)
|
||||||
|
Inf3AbessInvAdv : NP -> VPSlash -> Adv ; -- junaa odottamatta
|
||||||
|
|
||||||
|
ComplPresPartActVS : VS -> NP -> VP -> VP ; -- sanoa junan menevän
|
||||||
|
ComplPastPartActVS : VS -> NP -> VP -> VP ; -- sanoa junan menneen
|
||||||
|
|
||||||
|
ComplPresPartActAgrVS : VS -> VP -> VP ; -- sanoa menevänsä
|
||||||
|
ComplPastPartActAgrVS : VS -> VP -> VP ; -- sanoa menneensä
|
||||||
|
|
||||||
|
ComplPresPartPassVS : VS -> NP -> VPSlash -> VP ; -- sanoa junaa odotettavan
|
||||||
|
ComplPastPartPassVS : VS -> NP -> VPSlash -> VP ; -- sanoa junaa odotetun
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=..:alltenses
|
--# -path=..:alltenses
|
||||||
|
|
||||||
concrete InfinitiveFin of Infinitive =
|
concrete InfinitiveFin of Infinitive =
|
||||||
GrammarFin,
|
GrammarFin - [VPSlashPrep],
|
||||||
LexiconFin
|
LexiconFin
|
||||||
** open
|
** open
|
||||||
ResFin,
|
ResFin,
|
||||||
@@ -28,6 +28,30 @@ lin
|
|||||||
vp.ext
|
vp.ext
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
PresPartActAP vp = {
|
||||||
|
s = \\_, nf => preCompVP vp (PresPartAct (AN nf)) ;
|
||||||
|
hasPrefix = False ;
|
||||||
|
p = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PastPartActAP vp = {
|
||||||
|
s = \\_, nf => preCompVP vp (PastPartAct (AN nf)) ;
|
||||||
|
hasPrefix = False ;
|
||||||
|
p = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PresPartPassAP vp = {
|
||||||
|
s = \\_, nf => preCompVP <vp : VP> (PresPartPass (AN nf)) ;
|
||||||
|
hasPrefix = False ;
|
||||||
|
p = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PastPartPassAP vp = {
|
||||||
|
s = \\_, nf => preCompVP <vp : VP> (PastPartPass (AN nf)) ;
|
||||||
|
hasPrefix = False ;
|
||||||
|
p = []
|
||||||
|
} ;
|
||||||
|
|
||||||
AgentPartAP np vp = {
|
AgentPartAP np vp = {
|
||||||
s = \\_, nf =>
|
s = \\_, nf =>
|
||||||
np.s ! NPCase Gen ++
|
np.s ! NPCase Gen ++
|
||||||
@@ -45,21 +69,117 @@ lin
|
|||||||
infVP SCNom Pos np.a vp Inf2Iness
|
infVP SCNom Pos np.a vp Inf2Iness
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Inf2InessPassAdv np vps = {
|
Inf2InessPassAdv vp = {
|
||||||
s = np.s ! NPCase Part ++
|
s = infVP SCNom Pos infAdvAgr vp Inf2InessPass
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf2InessPassInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
infVP SCNom Pos np.a <vps : VP> Inf2InessPass
|
infVP SCNom Pos np.a <vps : VP> Inf2InessPass
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
Inf2InstrAdv vp = {
|
||||||
|
s = infVP SCNom Pos infAdvAgr vp Inf2Instr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf2InstrInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
|
infVP SCNom Pos np.a <vps : VP> Inf2Instr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3InessAdv vp = {
|
||||||
|
s = infVP SCNom Pos infAdvAgr vp Inf3Iness
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3InessInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
|
infVP SCNom Pos np.a <vps : VP> Inf3Iness
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3ElatAdv vp = {
|
||||||
|
s = infVP SCNom Pos infAdvAgr vp Inf3Elat
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3ElatInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
|
infVP SCNom Pos np.a <vps : VP> Inf3Elat
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3IllatAdv vp = {
|
||||||
|
s = infVP SCNom Pos infAdvAgr vp Inf3Illat
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3IllatInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
|
infVP SCNom Pos np.a <vps : VP> Inf3Illat
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- {s = vp.s.s ! Inf Inf1Long} ;
|
Inf3AdessAdv vp = {
|
||||||
-- {s = vp.s.s ! Inf Inf2Instr} ;
|
s = infVP SCNom Pos infAdvAgr vp Inf3Adess
|
||||||
|
} ;
|
||||||
|
|
||||||
-- {s = vp.s.s ! Inf Inf2InessPass} ;
|
Inf3AdessInvAdv np vps = {
|
||||||
-- {s = vp.s.s ! Inf Inf2Adess} ;
|
s = infAppCompl vps.c2 np ++
|
||||||
-- {s = vp.s.s ! Inf InfPresPart} ;
|
infVP SCNom Pos np.a <vps : VP> Inf3Adess
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
Inf3AbessAdv vp = {
|
||||||
|
s = infVP SCNom Pos infAdvAgr vp Inf3Abess
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Inf3AbessInvAdv np vps = {
|
||||||
|
s = infAppCompl vps.c2 np ++
|
||||||
|
infVP SCNom Pos np.a <vps : VP> Inf3Abess
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplPresPartActVS vs np vp =
|
||||||
|
insertExtrapos (subjPartVP np vp (NPCase Gen) (PresPartAct (AN (NCase Sg Gen)))) (predSV vs) ;
|
||||||
|
ComplPastPartActVS vs np vp =
|
||||||
|
insertExtrapos (subjPartVP np vp (NPCase Gen) (PastPartAct (AN (NCase Sg Gen)))) (predSV vs) ;
|
||||||
|
|
||||||
|
ComplPresPartActAgrVS vs vp =
|
||||||
|
insertObj (\\_,_,agr => subjPartAgrVP vp (PresPartAct (AN (NPossGen Sg))) agr) (predSV vs) ;
|
||||||
|
ComplPastPartActAgrVS vs vp =
|
||||||
|
insertObj (\\_,_,agr => subjPartAgrVP vp (PastPartAct (AN (NPossGen Sg))) agr) (predSV vs) ;
|
||||||
|
|
||||||
|
ComplPresPartPassVS vs np vps =
|
||||||
|
insertExtrapos (subjPartVP np <vps : VP> (NPCase Part) (PresPartPass (AN (NCase Sg Gen)))) (predSV vs) ;
|
||||||
|
ComplPastPartPassVS vs np vps =
|
||||||
|
insertExtrapos (subjPartVP np <vps : VP> (NPCase Part) (PastPartPass (AN (NCase Sg Gen)))) (predSV vs) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
oper
|
||||||
|
infAppCompl : Compl -> ResFin.NP -> Str = \co, np ->
|
||||||
|
appCompl False Neg co np ; -- not fin, Acc becomes Part
|
||||||
|
|
||||||
|
infAdvAgr : Agr = agrP3 Sg ; --- ?
|
||||||
|
|
||||||
|
-- hänen syövän, häntä syödyn, häntä syötävän
|
||||||
|
subjPartVP : ResFin.NP -> StemFin.VP -> NPForm -> VForm -> Str = \np, vp, npform, vform ->
|
||||||
|
np.s ! NPCase Gen ++
|
||||||
|
vp.s.s ! vform ++
|
||||||
|
vp.s2 ! True ! Pos ! np.a ++
|
||||||
|
vp.adv ! Pos ++
|
||||||
|
vp.ext ;
|
||||||
|
|
||||||
|
-- tiedän syöväni, tiedän syöneeni
|
||||||
|
subjPartAgrVP : StemFin.VP -> VForm -> Agr -> Str = \vp, vform, agr ->
|
||||||
|
vp.s.s ! vform ++ BIND ++
|
||||||
|
case vp.s.h of {Back => possSuffix agr ; Front => possSuffixFront agr} ++
|
||||||
|
vp.s2 ! True ! Pos ! agr ++
|
||||||
|
vp.adv ! Pos ++
|
||||||
|
vp.ext ;
|
||||||
|
|
||||||
|
|
||||||
|
-- ruohoa syövä, Ranskassa valmistettu
|
||||||
|
preCompVP : StemFin.VP -> VForm -> Str = \vp, vform ->
|
||||||
|
vp.s2 ! True ! Pos ! infAdvAgr ++
|
||||||
|
vp.adv ! Pos ++
|
||||||
|
vp.s.s ! vform ++
|
||||||
|
vp.ext ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user