functor
import FS
Entry(
category : Category
agreement : Agreement
marks : Marks
vprefixes : Vprefixes
)
export
Subject
Zu
Vp_zu
Adj
Nominative Object Dative Det Vpref
Vp_inf Vp_past Adv Pp_np
define
CATS_NP = {Category encode([n pro] $)}
CATS_V = {Category encode([vfin vinf vpast] $)}
CATS_NPV = {FS.union CATS_NP CATS_V}
CAT_DET = Category.toint.det
CAT_PART = Category.toint.part
CAT_VPREF = Category.toint.vpref
CAT_VFIN = Category.toint.vfin
CAT_VINF = Category.toint.vinf
CAT_VPAST = Category.toint.vpast
CAT_N = Category.toint.n
CAT_ADJ = Category.toint.adj
CAT_ADV = Category.toint.adv
CAT_PREP = Category.toint.prep
AGRS_NOM = {Agreement encode([nom] $)}
AGRS_ACC = {Agreement encode([acc] $)}
AGRS_DAT = {Agreement encode([dat] $)}
MARK_ZU = Marks.toint.zu
MARK_VPREF = Marks.toint.vpref
proc {Subject Mother Daughter}
{FS.include Daughter.cat CATS_NP}
Mother.agr = Daughter.agr
{FS.include Daughter.agr AGRS_NOM}
end
proc {Zu Mother Daughter}
Daughter.cat=CAT_PART
Daughter.word = 'zu'
{FS.exclude MARK_ZU Mother.marks}
{FS.exclude MARK_VPREF Mother.marks}
end
proc {Vp_zu Mother Daughter}
Daughter.cat=CAT_VINF
Daughter.haszu=1
end
proc {Adj Mother Daughter}
Mother.cat=CAT_N
Daughter.cat=CAT_ADJ
Mother.agr=Daughter.agr
end
proc {Nominative Mother Daughter}
{FS.include Daughter.cat CATS_NP}
{FS.include Daughter.cat AGRS_NOM}
end
proc {Object Mother Daughter}
{FS.include Daughter.cat CATS_NP}
{FS.include Daughter.agr AGRS_ACC}
end
proc {Dative Mother Daughter}
{FS.include Daughter.cat CATS_NP}
{FS.include Daughter.agr AGRS_DAT}
end
proc {Det Mother Daughter}
Daughter.cat=CAT_DET
Mother.agr = Daughter.agr
end
proc {Vpref Mother Daughter}
Daughter.cat=CAT_VPREF
Mother.cat=CAT_VFIN
{FS.exclude MARK_ZU Mother.marks}
{FS.exclude MARK_VPREF Mother.marks}
{FS.include Vprefixes.toint.(Daughter.word) Mother.vpref}
end
proc {Vp_inf Mother Daughter}
Daughter.cat=CAT_VINF
Daughter.haszu=0
end
proc {Vp_past Mother Daughter}
Daughter.cat=CAT_VPAST
{FS.subset Mother.aux Daughter.marks}
end
proc {Adv Mother Daughter}
{FS.include Mother.cat CATS_V}
Daughter.cat=CAT_ADV
end
proc {Pp_np Mother Daughter}
Daughter.cat=CAT_PREP
{FS.include Mother.cat CATS_NPV}
end
end