--# -path=.:../common:../abstract

resource MakeStructuralEng = open CatEng, ParadigmsEng, ResEng, MorphoEng, Prelude in {

oper
  mkSubj : Str -> Subj = \x ->
    lin Subj {s = x} ;
  mkNP : Str -> ParadigmsEng.Number -> NP = \s,n ->
    lin NP (regNP s n) ;
  mkIDet : Str -> ParadigmsEng.Number -> IDet = \s,n ->
    lin IDet {s = s ; n = n} ;
  mkIQuant : Str -> Str -> IQuant = \s,n ->
    lin IQuant {s = table {Sg => s ; Pl => n}} ;

  mkDet = overload {
    mkDet : Str -> Det = \s ->
      lin Det (mkDeterminer singular s) ;
    mkDet : Str -> Number -> Det = \s,n ->
      lin Det (mkDeterminer n s) ;
    mkDet : Str -> Det -> Det = \s,d ->
      d ** {
        s = s ++ d.s ;
	sp = \\g,b,c => s ++ d.sp ! g ! b ! c ;
      } ;
    } ;

}
