concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {

  flags coding = utf8;
  lin

  PositA a = a ** {s = a.s ! Positive} ;
 	UseComparA a = a ** {s = a.s ! Comparative} ;

  ComparA a np = a ** {
    s = \\m => a.s ! Comparative ! m ++ "تر" ++ "از" ++ np2str np ;
    adv = a.adv ++ "تر" ++ "از" ++ np2str np ;
    } ;

---- $SuperlA$ belongs to determiner syntax in $Noun$.

  ComplA2 a np = a ** {
    s = \\m => a.c2 ++ np2str np ++ a.s ! Positive ! m ;
    adv = np2str np ++ a.c2 ++ a.adv
    } ;

  ReflA2 a = a ** {
    s = \\m => a.s ! Positive ! m ++ reflPron ! defaultAgr ! Bare ; ---- s needs to be an inflection table from Agr to string, to choose the right reflexive pronoun
    adv = a.adv ++ reflPron ! defaultAgr ! Bare
    } ;

  SentAP ap sc = ap ** {
    s = \\m => ap.s ! m ++ sc.s ;
    adv = ap.adv ++ sc.s
    } ;

  AdAP ada ap = ap ** {
    s = \\m => ada.s ++ ap.s ! m ;
    adv = ada.s ++ ap.adv ;
    } ;

  UseA2 = PositA ;

  CAdvAP cadv ap np = ap ** {
    s = \\m => cadv.s ++ np2str np ++ ap.s ! m ;
    adv = cadv.s ++ ap.adv
    } ;

  AdjOrd ord = {
    s = \\_ => ord.s ;
    adv = ord.s ;
    isPre = ord.isPre ;
    afterPrefix = False ;
    } ;

  AdvAP ap adv = ap ** {
    s = \\m => ap.s ! m ++ adv.s ;
    adv = ap.adv ++ adv.s
    } ;
}
