mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
more general discourse particles in Finnish
This commit is contained in:
@@ -9,16 +9,17 @@ abstract Discourse =
|
||||
flags startcat = S ;
|
||||
|
||||
cat
|
||||
Clause ; -- clause with subject, verb, object
|
||||
Part ; -- discource particle
|
||||
Marker ; -- discourse marker
|
||||
|
||||
fun
|
||||
ClauseS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juo nyt maitoa
|
||||
SubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussikinhan juo nyt maitoa
|
||||
VerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juokin nyt maitoa
|
||||
AdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- Jussihan juo nytkin maitoa
|
||||
ObjKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juo nyt maitoakin
|
||||
ClauseS : Marker -> Temp -> Pol -> NP -> VP -> S ; -- Jussihan juo maitoa nyt
|
||||
|
||||
FocSubjS : Marker -> Temp -> Pol -> NP -> VP -> S ; -- Jussikinhan juo maitoa nyt
|
||||
FocVerbS : Marker -> Temp -> Pol -> NP -> VP -> S ; -- Jussihan juokin maitoa nyt
|
||||
FocObjS : Marker -> Temp -> Pol -> NP -> VPSlash -> NP -> S ; -- Jussihan juo maitoakin nyt
|
||||
FocAdvS : Marker -> Temp -> Pol -> NP -> VP -> Adv -> S ; -- Jussihan juo maitoa nytkin
|
||||
|
||||
{-
|
||||
PreAdvS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän Jussi juo maitoa
|
||||
PreAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nytkinhän Jussi juo maitoa
|
||||
PreAdvSubjKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän Jussikin juo maitoa
|
||||
@@ -29,14 +30,12 @@ fun
|
||||
PreObjSubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- maitoahan Jussikin juo nyt
|
||||
PreObjVerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- maitoahan Jussi juokin nyt
|
||||
|
||||
PreVerbS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussi nyt maitoa
|
||||
PreVerbSubKinS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussikin nyt maitoa
|
||||
PreVerbS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussi maitoa nyt
|
||||
PreVerbSubKinS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussikin maitoa nyt
|
||||
PreVerbAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- juohan Jussi nytkin maitoa
|
||||
PreVerbObjKinS : Part -> Temp -> Pol -> NP -> Clause -> S ; -- juohan Jussi nyt maitoakin
|
||||
PreVerbObjKinS : Part -> Temp -> Pol -> NP -> Clause -> S ; -- juohan Jussi maitoa nytkin
|
||||
-}
|
||||
|
||||
|
||||
PredClause : NP -> VP -> Clause ;
|
||||
|
||||
noPart, han_Part, pas_Part : Part ;
|
||||
neutralMarker, remindMarker, contrastMarker : Marker ;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,49 +2,29 @@
|
||||
|
||||
concrete DiscourseFin of Discourse =
|
||||
LexiconFin,
|
||||
NounFin, VerbFin - [SlashV2VNP,SlashVV],
|
||||
NounFin, VerbFin - [SlashV2VNP,SlashVV, Slash2V3, Slash3V3],
|
||||
AdjectiveFin, AdverbFin,
|
||||
StructuralFin - [nobody_NP,nothing_NP],
|
||||
TenseX
|
||||
** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), (E = ExtraFin), Prelude in {
|
||||
|
||||
lincat
|
||||
Clause = {subj : NP ; vp : VP} ;
|
||||
OClause = {subj : NP ; v : V2 ; obj : NP} ;
|
||||
Part = Adv ;
|
||||
Marker = E.Part ;
|
||||
|
||||
lin
|
||||
ClauseS part temp pol cl =
|
||||
mkS temp pol (mkCl (mkNP cl.subj part) cl.vp) ;
|
||||
SubjKinS part temp pol cl =
|
||||
mkS temp pol (mkCl (mkNP (mkNP cl.subj (kin.s ! pol.p)) part) cl.vp) ;
|
||||
VerbKinS part temp pol cl =
|
||||
mkS temp pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ;
|
||||
AdvKinS part temp pol adv cl =
|
||||
mkS temp pol (mkCl (mkNP cl.subj part) (mkVP (mkVP cl.vp adv) (kin.s ! pol.p))) ;
|
||||
ClauseS marker temp pol np vp =
|
||||
E.S_SVO marker temp pol (E.PredClPlus np vp) ;
|
||||
FocSubjS marker temp pol np vp =
|
||||
E.S_SVO marker temp pol (E.PredClPlusFocSubj np vp) ;
|
||||
FocVerbS marker temp pol np vp =
|
||||
E.S_SVO marker temp pol (E.PredClPlusFocVerb np vp) ;
|
||||
FocObjS marker temp pol np vp obj =
|
||||
E.S_SVO marker temp pol (E.PredClPlusFocObj np vp obj) ;
|
||||
FocAdvS marker temp pol np vp adv =
|
||||
E.S_SVO marker temp pol (E.PredClPlusFocAdv np vp adv) ;
|
||||
|
||||
PreAdvS part temp pol adv cl =
|
||||
mkS adv (mkS part (mkS temp pol (mkCl cl.subj cl.vp))) ;
|
||||
PreAdvKinS part temp pol adv cl =
|
||||
mkS adv (mkS part (mkS (kin.s ! pol.p) (mkS temp pol (mkCl cl.subj cl.vp)))) ;
|
||||
PreAdvSubjKinS part temp pol adv cl =
|
||||
mkS adv (mkS part (mkS temp pol (mkCl (mkNP cl.subj (kin.s ! pol.p)) cl.vp))) ;
|
||||
PreAdvVerbKinS part temp pol adv cl =
|
||||
mkS adv (mkS part (mkS temp pol (mkCl cl.subj (mkVP cl.vp (kin.s ! pol.p))))) ;
|
||||
|
||||
PredClause subj v = {subj = subj ; vp = v} ;
|
||||
PredOClause subj v obj = {subj = subj ; v = v ; obj = obj} ;
|
||||
UseOClause oc = {subj = oc.subj ; vp = mkVP oc.v oc.obj} ;
|
||||
|
||||
noPart = P.mkAdv [] ;
|
||||
han_Part = P.mkAdv (glueTok "han") ;
|
||||
pa_Part = P.mkAdv (glueTok "pa") ;
|
||||
pas_Part = P.mkAdv (glueTok "pas") ;
|
||||
|
||||
oper
|
||||
kin : {s : R.Polarity => Adv} =
|
||||
{s = table {R.Pos => P.mkAdv (glueTok "kin") ; R.Neg => P.mkAdv (glueTok "kaan")}} ;
|
||||
|
||||
glueTok : Str -> Str = \s -> "&+" ++ s ;
|
||||
neutralMarker = E.noPart ;
|
||||
remindMarker = E.han_Part ;
|
||||
contrastMarker = E.pas_Part ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete AllFin of AllFinAbs =
|
||||
LangFin,
|
||||
ExtraFin
|
||||
LangFin - [SlashV2VNP,SlashVV, TFut], ---- to speed up linking; to remove spurious parses
|
||||
ExtraFin - [ProDrop, ProDropPoss, S_OSV, S_VSO, S_ASV] -- to exclude spurious parses
|
||||
** {} ;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--# -path=.:abstract:common:prelude
|
||||
|
||||
concrete ExtraFin of ExtraFinAbs = CatFin **
|
||||
open ResFin, MorphoFin, Coordination, Prelude, NounFin, StructuralFin in {
|
||||
open ResFin, MorphoFin, Coordination, Prelude, NounFin, StructuralFin, (R = ParamX) in {
|
||||
|
||||
lin
|
||||
GenNP np = {
|
||||
@@ -48,7 +48,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
|
||||
mkClause (\_ -> adv.s) np.a (insertObj
|
||||
(\\_,b,_ => np.s ! NPCase Nom) (predV v)) ;
|
||||
|
||||
i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ;
|
||||
-- i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ;
|
||||
whatPart_IP = {
|
||||
s = table {
|
||||
NPCase Nom | NPAcc => "mitä" ;
|
||||
@@ -104,35 +104,58 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
|
||||
isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing
|
||||
} ;
|
||||
|
||||
lincat ClPlus = ClausePlus ;
|
||||
lincat
|
||||
ClPlus, ClPlusObj, ClPlusAdv = ClausePlus ;
|
||||
Part = {s : Bool => Str} ;
|
||||
|
||||
lin
|
||||
S_SVO t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
S_SVO part t p clp =
|
||||
let
|
||||
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||
pa = part.s ! True ----
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ;
|
||||
S_SOV t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
{s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ;
|
||||
S_OSV part t p clp =
|
||||
let
|
||||
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||
pa = part.s ! True ----
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.subj ++ cl.compl ++ cl.fin ++ cl.inf ++ cl.ext} ;
|
||||
S_OSV t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
{s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ;
|
||||
S_VSO part t p clp =
|
||||
let
|
||||
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||
pa = part.s ! cl.qp
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.compl ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.ext} ;
|
||||
S_OVS t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
{s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ;
|
||||
S_ASV part t p clp =
|
||||
let
|
||||
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||
pa = part.s ! cl.qp
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.compl ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.ext} ;
|
||||
S_VSO t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.fin ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.ext} ;
|
||||
S_VOS t p clp =
|
||||
let cl = clp.s ! t.t ! t.a ! p.p
|
||||
in
|
||||
{s = t.s ++ p.s ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.subj ++ cl.ext} ;
|
||||
{s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ;
|
||||
|
||||
PredClPlus np vp = mkClausePlus (subjForm np vp.sc) np.a vp ;
|
||||
PredClPlusFocSubj np vp = insertKinClausePlus 0 (mkClausePlus (subjForm np vp.sc) np.a vp) ;
|
||||
PredClPlusFocVerb np vp = insertKinClausePlus 1 (mkClausePlus (subjForm np vp.sc) np.a vp) ;
|
||||
PredClPlusObj np vps obj =
|
||||
insertObjClausePlus 0 False (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ;
|
||||
PredClPlusFocObj np vps obj =
|
||||
insertObjClausePlus 0 True (\\b => appCompl True b vps.c2 obj) (mkClausePlus (subjForm np vps.sc) np.a vps) ;
|
||||
PredClPlusAdv np vp adv =
|
||||
insertObjClausePlus 1 False (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ;
|
||||
PredClPlusFocAdv np vp adv =
|
||||
insertObjClausePlus 1 True (\\_ => adv.s) (mkClausePlus (subjForm np vp.sc) np.a vp) ;
|
||||
|
||||
ClPlusWithObj c = c ;
|
||||
ClPlusWithAdv c = c ;
|
||||
|
||||
noPart = {s = \\_ => []} ;
|
||||
han_Part = mkPart "han" "hän" ;
|
||||
pa_Part = mkPart "pa" "pä" ;
|
||||
pas_Part = mkPart "pas" "päs" ;
|
||||
ko_Part = mkPart "ko" "kö" ;
|
||||
kos_Part = mkPart "kos" "kös" ;
|
||||
kohan_Part = mkPart "kohan" "köhän" ;
|
||||
pahan_Part = mkPart "pahan" "pähän" ;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ abstract ExtraFinAbs = Extra [
|
||||
|
||||
RelExistNP : Prep -> RP -> NP -> RCl ; -- jossa on jazzia
|
||||
|
||||
i_implicPron : Pron ; -- (minä), minut, ...
|
||||
-- i_implicPron : Pron ; -- (minä), minut, ...
|
||||
whatPart_IP : IP ;
|
||||
|
||||
PartCN : CN -> NP ; -- olutta
|
||||
@@ -21,19 +21,33 @@ abstract ExtraFinAbs = Extra [
|
||||
|
||||
cat
|
||||
ClPlus ; -- clause with more variation
|
||||
ClPlusObj ; -- which has a focusable object
|
||||
ClPlusAdv ; -- which has a focusable adverb
|
||||
Part ; -- discourse particle
|
||||
|
||||
fun
|
||||
S_SVO : Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa
|
||||
S_SOV : Temp -> Pol -> ClPlus -> S ; -- mepäs maitoa juomme
|
||||
S_OSV : Temp -> Pol -> ClPlus -> S ; -- maitoapas me juomme
|
||||
S_OVS : Temp -> Pol -> ClPlus -> S ; -- maitoapas juomme me
|
||||
S_VSO : Temp -> Pol -> ClPlus -> S ; -- juommepas me maitoa
|
||||
S_VOS : Temp -> Pol -> ClPlus -> S ; -- juommepas maitoa me
|
||||
S_SVO : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa nyt
|
||||
S_OSV : Part -> Temp -> Pol -> ClPlusObj -> S ; -- maitoapas me juomme nyt
|
||||
S_VSO : Part -> Temp -> Pol -> ClPlus -> S ; -- juommepas me maitoa nyt
|
||||
S_ASV : Part -> Temp -> Pol -> ClPlusAdv -> S ; -- nytpäs me juomme maitoa
|
||||
|
||||
PredClPlus : NP -> VP -> ClPlus ;
|
||||
-- S_SOV : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs maitoa juomme
|
||||
-- S_OVS : Part -> Temp -> Pol -> ClPlus -> S ; -- maitoapas juomme me
|
||||
-- S_VOS : Part -> Temp -> Pol -> ClPlus -> S ; -- juommepas maitoa me
|
||||
|
||||
---- noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part,
|
||||
---- kohan_Part, pahan_Part : Part ;
|
||||
|
||||
PredClPlus : NP -> VP -> ClPlus ; -- me nukumme
|
||||
PredClPlusFocSubj : NP -> VP -> ClPlus ; -- mekin nukumme
|
||||
PredClPlusFocVerb : NP -> VP -> ClPlus ; -- me nukummekin
|
||||
PredClPlusObj : NP -> VPSlash -> NP -> ClPlusObj ; -- maitoa me juomme
|
||||
PredClPlusFocObj : NP -> VPSlash -> NP -> ClPlusObj ; -- maitoakin me juomme
|
||||
PredClPlusAdv : NP -> VP -> Adv -> ClPlusAdv ; -- nyt me nukumme
|
||||
PredClPlusFocAdv : NP -> VP -> Adv -> ClPlusAdv ; -- nytkin me nukumme
|
||||
|
||||
ClPlusWithObj : ClPlusObj -> ClPlus ; -- to make non-fronted obj focusable
|
||||
ClPlusWithAdv : ClPlusAdv -> ClPlus ; -- to make non-fronted adv focusable
|
||||
|
||||
noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part,
|
||||
kohan_Part, pahan_Part : Part ;
|
||||
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ concrete IdiomFin of Idiom = CatFin **
|
||||
GenericCl vp = mkClause noSubj (agrP3 Sg) {
|
||||
s = \\_ => vp.s ! VIPass ;
|
||||
s2 = vp.s2 ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
@@ -52,6 +53,7 @@ concrete IdiomFin of Idiom = CatFin **
|
||||
in {
|
||||
s = on.s ;
|
||||
s2 = \\b,p,a => inf ++ vp.s2 ! b ! p ! a ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
|
||||
concrete LangFin of Lang =
|
||||
GrammarFin - [SlashV2VNP,SlashVV], ---- to speed up compilation
|
||||
-- GrammarFin,
|
||||
-- GrammarFin - [SlashV2VNP,SlashVV], ---- to speed up compilation
|
||||
GrammarFin,
|
||||
LexiconFin
|
||||
** {
|
||||
|
||||
|
||||
@@ -67,10 +67,10 @@ lin
|
||||
doctor_N = mk2N "tohtori" "tohtoreita" ;
|
||||
dog_N = mkN "koira" ;
|
||||
door_N = mkN "ovi" "ovia" ;
|
||||
drink_V2 = mkV2 (mkV "juoda") ;
|
||||
drink_V2 = mkV2 (mkV "juoda") (casePrep partitive) ;
|
||||
easy_A2V = mkA2 (mkA (mkN "helppo") "helpompi" "helpoin")
|
||||
(casePrep allative) ;
|
||||
eat_V2 = mkV2 (mkV "syödä") ;
|
||||
eat_V2 = mkV2 (mkV "syödä") (casePrep partitive) ;
|
||||
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
|
||||
enemy_N = mkN "vihollinen" ;
|
||||
factory_N = mkN "tehdas" ;
|
||||
|
||||
@@ -185,6 +185,7 @@ oper
|
||||
VP = {
|
||||
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||
s2 : Bool => Polarity => Agr => Str ; -- talo/talon/taloa
|
||||
adv : Polarity => Str ; -- ainakin/ainakaan
|
||||
ext : Str ;
|
||||
sc : NPForm ;
|
||||
qp : Bool -- True = back vowel
|
||||
@@ -248,6 +249,7 @@ oper
|
||||
} ;
|
||||
|
||||
s2 = \\_,_,_ => [] ;
|
||||
adv = \\_ => [] ;
|
||||
ext = [] ;
|
||||
sc = verb.sc ;
|
||||
qp = verb.qp
|
||||
@@ -256,6 +258,7 @@ oper
|
||||
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
@@ -264,15 +267,26 @@ oper
|
||||
insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a ;
|
||||
adv = vp.adv ;
|
||||
ext = vp.ext ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
} ;
|
||||
|
||||
insertAdv : (Polarity => Str) -> VP -> VP = \adv,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = vp.s2 ;
|
||||
ext = vp.ext ;
|
||||
adv = \\b => vp.adv ! b ++ adv ! b ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
} ;
|
||||
|
||||
insertExtrapos : Str -> VP -> VP = \obj,vp -> {
|
||||
s = vp.s ;
|
||||
s2 = vp.s2 ;
|
||||
ext = vp.ext ++ obj ;
|
||||
adv = vp.adv ;
|
||||
sc = vp.sc ;
|
||||
qp = vp.qp
|
||||
} ;
|
||||
@@ -284,15 +298,15 @@ oper
|
||||
} ;
|
||||
|
||||
ClausePlus : Type = {
|
||||
s : Tense => Anteriority => Polarity => {subj,fin,inf,compl,ext : Str ; qp : Bool}
|
||||
s : Tense => Anteriority => Polarity => {subj,fin,inf,compl,adv,ext : Str ; qp : Bool}
|
||||
} ;
|
||||
|
||||
mkClause : (Polarity -> Str) -> Agr -> VP -> Clause =
|
||||
\sub,agr,vp -> {
|
||||
s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b in
|
||||
table {
|
||||
SDecl => c.subj ++ c.fin ++ c.inf ++ c.compl ++ c.ext ;
|
||||
SQuest => c.fin ++ BIND ++ questPart c.qp ++ c.subj ++ c.inf ++ c.compl ++ c.ext
|
||||
SDecl => c.subj ++ c.fin ++ c.inf ++ c.compl ++ c.adv ++ c.ext ;
|
||||
SQuest => c.fin ++ BIND ++ questPart c.qp ++ c.subj ++ c.inf ++ c.compl ++ c.adv ++ c.ext
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -308,12 +322,49 @@ oper
|
||||
in {subj = sub b ;
|
||||
fin = verb.fin ;
|
||||
inf = verb.inf ;
|
||||
compl = vp.s2 ! agrfin.p2 ! b ! agr ;
|
||||
compl = vp.s2 ! agrfin.p2 ! b ! agr ;
|
||||
adv = vp.adv ! b ;
|
||||
ext = vp.ext ;
|
||||
qp = selectPart vp a b
|
||||
}
|
||||
} ;
|
||||
|
||||
insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> {
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
c = cl.s ! t ! a ! b
|
||||
in
|
||||
case p of {
|
||||
0 => {subj = c.subj ++ kin b True ; fin = c.fin ; inf = c.inf ; -- Jussikin nukkuu
|
||||
compl = c.compl ; adv = c.adv ; ext = c.ext ; qp = c.qp} ;
|
||||
1 => {subj = c.subj ; fin = c.fin ++ kin b c.qp ; inf = c.inf ; -- Jussi nukkuukin
|
||||
compl = c.compl ; adv = c.adv ; ext = c.ext ; qp = c.qp}
|
||||
}
|
||||
} ;
|
||||
|
||||
insertObjClausePlus : Predef.Ints 1 -> Bool -> (Polarity => Str) -> ClausePlus -> ClausePlus =
|
||||
\p,ifKin,obj,cl -> {
|
||||
s = \\t,a,b =>
|
||||
let
|
||||
c = cl.s ! t ! a ! b ;
|
||||
co = obj ! b ++ if_then_Str ifKin (kin b True) [] ;
|
||||
in case p of {
|
||||
0 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
compl = co ; adv = c.compl ++ c.adv ; ext = c.ext ; qp = c.qp} ; -- Jussi juo maitoakin
|
||||
1 => {subj = c.subj ; fin = c.fin ; inf = c.inf ;
|
||||
compl = c.compl ; adv = co ; ext = c.adv ++ c.ext ; qp = c.qp} -- Jussi nukkuu nytkin
|
||||
}
|
||||
} ;
|
||||
|
||||
kin : Polarity -> Bool -> Str =
|
||||
\p,b -> case p of {Pos => (mkPart "kin" "kin").s ! b ; Neg => (mkPart "kaan" "kään").s ! b} ;
|
||||
|
||||
mkPart : Str -> Str -> {s : Bool => Str} = \ko,koe ->
|
||||
{s = table {True => glueTok ko ; False => glueTok koe}} ;
|
||||
|
||||
glueTok : Str -> Str = \s -> "&+" ++ s ;
|
||||
|
||||
|
||||
-- This is used for subjects of passives: therefore isFin in False.
|
||||
|
||||
subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b ->
|
||||
|
||||
@@ -73,15 +73,16 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in {
|
||||
infVP v.sc b a vp v.vi)
|
||||
(predV v) ** {c2 = vp.c2} ;
|
||||
|
||||
AdvVP vp adv = insertObj (\\_,_,_ => adv.s) vp ;
|
||||
AdvVP vp adv = insertAdv (\\_ => adv.s) vp ;
|
||||
|
||||
AdVVP adv vp = insertObj (\\_,_,_ => adv.s) vp ;
|
||||
AdVVP adv vp = insertAdv (\\_ => adv.s) vp ;
|
||||
|
||||
ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ;
|
||||
|
||||
PassV2 v = let vp = predV v in {
|
||||
s = \\_ => vp.s ! VIPass ;
|
||||
s2 = \\_,_,_ => [] ;
|
||||
adv = \\_ => [] ;
|
||||
ext = [] ;
|
||||
qp = v.qp ;
|
||||
sc = v.c2.c -- minut valitaan ; minua rakastetaan ; minulle kuiskataan
|
||||
|
||||
Reference in New Issue
Block a user