packages feed

gf-3.4: lib/src/maltese/NounMlt.gf

-- NounMlt.gf: noun phrases and nouns
--
-- Maltese Resource Grammar Library
-- John J. Camilleri, 2012
-- Licensed under LGPL

concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude in {

  flags
    optimize=noexpand ;

  lin
    -- Det -> CN -> NP
    DetCN det cn = {
      s = \\c => det.s ++ cn.s ! numnum2nounnum det.n ; 
      a = case (numnum2nounnum det.n) of {
	Singular _ => mkAgr cn.g Sg P3 ;
	_ => mkAgr cn.g Pl P3
      } ;
      isPron = False ;
    } ;

    -- Quant -> Num -> Det
    DetQuant quant num = {
      s  = quant.s ! num.hasCard ! num.n ++ num.s ! NumNominative;
      n  = num.n ;
      hasNum = num.hasCard
    } ;

    -- Quant
    DefArt = {
      s  = \\hasCard,n => artDef ;
    } ;
    IndefArt = {
      s  = \\hasCard,n => artIndef ;
    } ;

    -- PN -> NP
    UsePN pn = {
      s = \\c => pn.s ;
      a = pn.a ;
      isPron = False ;
      } ;

    -- Pron -> NP
    UsePron p = {
      -- s = \\npcase => (p.s ! Personal).c1 ;
      s = table {
        Nom => (p.s ! Personal).c1 ;
        CPrep => (p.s ! Suffixed Acc).c1
        } ;
      a = p.a ;
      isPron = True ;
      } ;

    -- Num
    NumSg = {s = \\c => []; n = Num_Sg ; hasCard = False} ;
    NumPl = {s = \\c => []; n = Num_Pl ; hasCard = False} ;

    -- N -> CN
    UseN n = n ;

    -- N2 -> CN
    UseN2 n = n ;

-- Card
-- CN
-- Det
-- NP
-- Num
-- Ord

}