forked from GitHub/gf-rgl
more general discourse particles in Finnish
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common:prelude
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
concrete AllFin of AllFinAbs =
|
concrete AllFin of AllFinAbs =
|
||||||
LangFin,
|
LangFin - [SlashV2VNP,SlashVV, TFut], ---- to speed up linking; to remove spurious parses
|
||||||
ExtraFin
|
ExtraFin - [ProDrop, ProDropPoss, S_OSV, S_VSO, S_ASV] -- to exclude spurious parses
|
||||||
** {} ;
|
** {} ;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--# -path=.:abstract:common:prelude
|
--# -path=.:abstract:common:prelude
|
||||||
|
|
||||||
concrete ExtraFin of ExtraFinAbs = CatFin **
|
concrete ExtraFin of ExtraFinAbs = CatFin **
|
||||||
open ResFin, MorphoFin, Coordination, Prelude, NounFin, StructuralFin in {
|
open ResFin, MorphoFin, Coordination, Prelude, NounFin, StructuralFin, (R = ParamX) in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
GenNP np = {
|
GenNP np = {
|
||||||
@@ -48,7 +48,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
|
|||||||
mkClause (\_ -> adv.s) np.a (insertObj
|
mkClause (\_ -> adv.s) np.a (insertObj
|
||||||
(\\_,b,_ => np.s ! NPCase Nom) (predV v)) ;
|
(\\_,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 = {
|
whatPart_IP = {
|
||||||
s = table {
|
s = table {
|
||||||
NPCase Nom | NPAcc => "mitä" ;
|
NPCase Nom | NPAcc => "mitä" ;
|
||||||
@@ -104,35 +104,58 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
|
|||||||
isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing
|
isDef = True --- "minun kolme autoani ovat" ; thus "...on" is missing
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
lincat ClPlus = ClausePlus ;
|
lincat
|
||||||
|
ClPlus, ClPlusObj, ClPlusAdv = ClausePlus ;
|
||||||
|
Part = {s : Bool => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
S_SVO t p clp =
|
S_SVO part t p clp =
|
||||||
let cl = clp.s ! t.t ! t.a ! p.p
|
let
|
||||||
|
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||||
|
pa = part.s ! True ----
|
||||||
in
|
in
|
||||||
{s = t.s ++ p.s ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.ext} ;
|
{s = t.s ++ p.s ++ cl.subj ++ pa ++ cl.fin ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ;
|
||||||
S_SOV t p clp =
|
S_OSV part t p clp =
|
||||||
let cl = clp.s ! t.t ! t.a ! p.p
|
let
|
||||||
|
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||||
|
pa = part.s ! True ----
|
||||||
in
|
in
|
||||||
{s = t.s ++ p.s ++ cl.subj ++ cl.compl ++ cl.fin ++ cl.inf ++ cl.ext} ;
|
{s = t.s ++ p.s ++ cl.compl ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.adv ++ cl.ext} ;
|
||||||
S_OSV t p clp =
|
S_VSO part t p clp =
|
||||||
let cl = clp.s ! t.t ! t.a ! p.p
|
let
|
||||||
|
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||||
|
pa = part.s ! cl.qp
|
||||||
in
|
in
|
||||||
{s = t.s ++ p.s ++ cl.compl ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.ext} ;
|
{s = t.s ++ p.s ++ cl.fin ++ pa ++ cl.subj ++ cl.inf ++ cl.compl ++ cl.adv ++ cl.ext} ;
|
||||||
S_OVS t p clp =
|
S_ASV part t p clp =
|
||||||
let cl = clp.s ! t.t ! t.a ! p.p
|
let
|
||||||
|
cl = clp.s ! t.t ! t.a ! p.p ;
|
||||||
|
pa = part.s ! cl.qp
|
||||||
in
|
in
|
||||||
{s = t.s ++ p.s ++ cl.compl ++ cl.fin ++ cl.inf ++ cl.subj ++ cl.ext} ;
|
{s = t.s ++ p.s ++ cl.adv ++ pa ++ cl.subj ++ cl.fin ++ cl.inf ++ cl.compl ++ 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} ;
|
|
||||||
|
|
||||||
PredClPlus np vp = mkClausePlus (subjForm np vp.sc) np.a vp ;
|
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
|
RelExistNP : Prep -> RP -> NP -> RCl ; -- jossa on jazzia
|
||||||
|
|
||||||
i_implicPron : Pron ; -- (minä), minut, ...
|
-- i_implicPron : Pron ; -- (minä), minut, ...
|
||||||
whatPart_IP : IP ;
|
whatPart_IP : IP ;
|
||||||
|
|
||||||
PartCN : CN -> NP ; -- olutta
|
PartCN : CN -> NP ; -- olutta
|
||||||
@@ -21,19 +21,33 @@ abstract ExtraFinAbs = Extra [
|
|||||||
|
|
||||||
cat
|
cat
|
||||||
ClPlus ; -- clause with more variation
|
ClPlus ; -- clause with more variation
|
||||||
|
ClPlusObj ; -- which has a focusable object
|
||||||
|
ClPlusAdv ; -- which has a focusable adverb
|
||||||
Part ; -- discourse particle
|
Part ; -- discourse particle
|
||||||
|
|
||||||
fun
|
fun
|
||||||
S_SVO : Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa
|
S_SVO : Part -> Temp -> Pol -> ClPlus -> S ; -- mepäs juomme maitoa nyt
|
||||||
S_SOV : Temp -> Pol -> ClPlus -> S ; -- mepäs maitoa juomme
|
S_OSV : Part -> Temp -> Pol -> ClPlusObj -> S ; -- maitoapas me juomme nyt
|
||||||
S_OSV : Temp -> Pol -> ClPlus -> S ; -- maitoapas me juomme
|
S_VSO : Part -> Temp -> Pol -> ClPlus -> S ; -- juommepas me maitoa nyt
|
||||||
S_OVS : Temp -> Pol -> ClPlus -> S ; -- maitoapas juomme me
|
S_ASV : Part -> Temp -> Pol -> ClPlusAdv -> S ; -- nytpäs me juomme maitoa
|
||||||
S_VSO : Temp -> Pol -> ClPlus -> S ; -- juommepas me maitoa
|
|
||||||
S_VOS : Temp -> Pol -> ClPlus -> S ; -- juommepas maitoa me
|
|
||||||
|
|
||||||
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) {
|
GenericCl vp = mkClause noSubj (agrP3 Sg) {
|
||||||
s = \\_ => vp.s ! VIPass ;
|
s = \\_ => vp.s ! VIPass ;
|
||||||
s2 = vp.s2 ;
|
s2 = vp.s2 ;
|
||||||
|
adv = vp.adv ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
sc = vp.sc ;
|
sc = vp.sc ;
|
||||||
qp = vp.qp
|
qp = vp.qp
|
||||||
@@ -52,6 +53,7 @@ concrete IdiomFin of Idiom = CatFin **
|
|||||||
in {
|
in {
|
||||||
s = on.s ;
|
s = on.s ;
|
||||||
s2 = \\b,p,a => inf ++ vp.s2 ! b ! p ! a ;
|
s2 = \\b,p,a => inf ++ vp.s2 ! b ! p ! a ;
|
||||||
|
adv = vp.adv ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
sc = vp.sc ;
|
sc = vp.sc ;
|
||||||
qp = vp.qp
|
qp = vp.qp
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
--# -path=.:../abstract:../common:../prelude
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
concrete LangFin of Lang =
|
concrete LangFin of Lang =
|
||||||
GrammarFin - [SlashV2VNP,SlashVV], ---- to speed up compilation
|
-- GrammarFin - [SlashV2VNP,SlashVV], ---- to speed up compilation
|
||||||
-- GrammarFin,
|
GrammarFin,
|
||||||
LexiconFin
|
LexiconFin
|
||||||
** {
|
** {
|
||||||
|
|
||||||
|
|||||||
@@ -67,10 +67,10 @@ lin
|
|||||||
doctor_N = mk2N "tohtori" "tohtoreita" ;
|
doctor_N = mk2N "tohtori" "tohtoreita" ;
|
||||||
dog_N = mkN "koira" ;
|
dog_N = mkN "koira" ;
|
||||||
door_N = mkN "ovi" "ovia" ;
|
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")
|
easy_A2V = mkA2 (mkA (mkN "helppo") "helpompi" "helpoin")
|
||||||
(casePrep allative) ;
|
(casePrep allative) ;
|
||||||
eat_V2 = mkV2 (mkV "syödä") ;
|
eat_V2 = mkV2 (mkV "syödä") (casePrep partitive) ;
|
||||||
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
|
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
|
||||||
enemy_N = mkN "vihollinen" ;
|
enemy_N = mkN "vihollinen" ;
|
||||||
factory_N = mkN "tehdas" ;
|
factory_N = mkN "tehdas" ;
|
||||||
|
|||||||
@@ -185,6 +185,7 @@ oper
|
|||||||
VP = {
|
VP = {
|
||||||
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
s : VIForm => Anteriority => Polarity => Agr => {fin, inf : Str} ;
|
||||||
s2 : Bool => Polarity => Agr => Str ; -- talo/talon/taloa
|
s2 : Bool => Polarity => Agr => Str ; -- talo/talon/taloa
|
||||||
|
adv : Polarity => Str ; -- ainakin/ainakaan
|
||||||
ext : Str ;
|
ext : Str ;
|
||||||
sc : NPForm ;
|
sc : NPForm ;
|
||||||
qp : Bool -- True = back vowel
|
qp : Bool -- True = back vowel
|
||||||
@@ -248,6 +249,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
s2 = \\_,_,_ => [] ;
|
s2 = \\_,_,_ => [] ;
|
||||||
|
adv = \\_ => [] ;
|
||||||
ext = [] ;
|
ext = [] ;
|
||||||
sc = verb.sc ;
|
sc = verb.sc ;
|
||||||
qp = verb.qp
|
qp = verb.qp
|
||||||
@@ -256,6 +258,7 @@ oper
|
|||||||
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
insertObj : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||||
s = vp.s ;
|
s = vp.s ;
|
||||||
s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a ;
|
s2 = \\fin,b,a => vp.s2 ! fin ! b ! a ++ obj ! fin ! b ! a ;
|
||||||
|
adv = vp.adv ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
sc = vp.sc ;
|
sc = vp.sc ;
|
||||||
qp = vp.qp
|
qp = vp.qp
|
||||||
@@ -264,15 +267,26 @@ oper
|
|||||||
insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
insertObjPre : (Bool => Polarity => Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||||
s = vp.s ;
|
s = vp.s ;
|
||||||
s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a ;
|
s2 = \\fin,b,a => obj ! fin ! b ! a ++ vp.s2 ! fin ! b ! a ;
|
||||||
|
adv = vp.adv ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
sc = vp.sc ;
|
sc = vp.sc ;
|
||||||
qp = vp.qp
|
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 -> {
|
insertExtrapos : Str -> VP -> VP = \obj,vp -> {
|
||||||
s = vp.s ;
|
s = vp.s ;
|
||||||
s2 = vp.s2 ;
|
s2 = vp.s2 ;
|
||||||
ext = vp.ext ++ obj ;
|
ext = vp.ext ++ obj ;
|
||||||
|
adv = vp.adv ;
|
||||||
sc = vp.sc ;
|
sc = vp.sc ;
|
||||||
qp = vp.qp
|
qp = vp.qp
|
||||||
} ;
|
} ;
|
||||||
@@ -284,15 +298,15 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
ClausePlus : Type = {
|
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 =
|
mkClause : (Polarity -> Str) -> Agr -> VP -> Clause =
|
||||||
\sub,agr,vp -> {
|
\sub,agr,vp -> {
|
||||||
s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b in
|
s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b in
|
||||||
table {
|
table {
|
||||||
SDecl => c.subj ++ c.fin ++ 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.ext
|
SQuest => c.fin ++ BIND ++ questPart c.qp ++ c.subj ++ c.inf ++ c.compl ++ c.adv ++ c.ext
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -309,11 +323,48 @@ oper
|
|||||||
fin = verb.fin ;
|
fin = verb.fin ;
|
||||||
inf = verb.inf ;
|
inf = verb.inf ;
|
||||||
compl = vp.s2 ! agrfin.p2 ! b ! agr ;
|
compl = vp.s2 ! agrfin.p2 ! b ! agr ;
|
||||||
|
adv = vp.adv ! b ;
|
||||||
ext = vp.ext ;
|
ext = vp.ext ;
|
||||||
qp = selectPart vp a b
|
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.
|
-- This is used for subjects of passives: therefore isFin in False.
|
||||||
|
|
||||||
subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b ->
|
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)
|
infVP v.sc b a vp v.vi)
|
||||||
(predV v) ** {c2 = vp.c2} ;
|
(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 ;
|
ReflVP v = insertObjPre (\\fin,b,agr => appCompl fin b v.c2 (reflPron agr)) v ;
|
||||||
|
|
||||||
PassV2 v = let vp = predV v in {
|
PassV2 v = let vp = predV v in {
|
||||||
s = \\_ => vp.s ! VIPass ;
|
s = \\_ => vp.s ! VIPass ;
|
||||||
s2 = \\_,_,_ => [] ;
|
s2 = \\_,_,_ => [] ;
|
||||||
|
adv = \\_ => [] ;
|
||||||
ext = [] ;
|
ext = [] ;
|
||||||
qp = v.qp ;
|
qp = v.qp ;
|
||||||
sc = v.c2.c -- minut valitaan ; minua rakastetaan ; minulle kuiskataan
|
sc = v.c2.c -- minut valitaan ; minua rakastetaan ; minulle kuiskataan
|
||||||
|
|||||||
Reference in New Issue
Block a user