packages feed

gf-3.6: lib/src/english/SymbolEng.gf

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

concrete SymbolEng of Symbol = CatEng ** open Prelude, ResEng in {

lin
  SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ;
  IntPN i  = {s = addGenitiveS i.s ; g = Neutr} ;
  FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ;
  NumPN i = {s = i.s ; g = Neutr} ;
  CNIntNP cn i = {
    s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! npcase2case c ;
    a = agrgP3 Sg cn.g
    } ;
  CNSymbNP det cn xs = {
    s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! npcase2case c ; 
    a = agrgP3 det.n cn.g
    } ;
  CNNumNP cn i = {
    s = \\c => cn.s ! Sg ! Nom ++ i.s ! npcase2case c ;
    a = agrgP3 Sg cn.g
    } ;

  SymbS sy = sy ; 

  SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ;
  SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ;

lincat 

  Symb, [Symb] = SS ;

lin
  MkSymb s = s ;

  BaseSymb = infixSS "and" ;
  ConsSymb = infixSS frontComma ;

oper
    -- Note: this results in a space before 's, but there's
    -- not mauch we can do about that.
    addGenitiveS : Str -> Case => Str = \s -> 
      table { Gen => s ++ "'s"; _ => s } ;

}