A.10 Gamma.oz

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


Denys Duchier
Version 1.2.0 (20010221)