concrete AdjectiveGre of Adjective = CatGre ** open ResGre, Prelude in {

flags coding=utf8;

lin

    PositA  a = {
      s = \\_=> a.s ! Posit;
      adv = a.adv ;
    } ;


    ComparA a np = {
      s = \\d,g,n,c =>   a.s ! Compar!  g ! n ! Nom ++ "από" ++ (np.s ! CPrep PNul).comp ;
      adv = a.adv ;  
    } ;

    ComplA2 adj np = {
      s = \\d,g,n,c => adj.s ! Posit !g ! n ! Nom ++ appCompl adj.c2 np ;
      adv = adj.adv ; 
      isPre = False
    } ;


   ReflA2 adj = { 
      s = \\d,g,n,c => adj.s ! Posit !g ! n ! Nom ++ adj.c2.s ++ reflPron ! (Ag g n P3) !Acc ;
      isPre = False ;
      adv= adj.adv
    } ;



    UseA2 a = {
      s = \\_ =>  a.s ! Posit ; 
      adv = a.adv ;
     } ;



    UseComparA a = {
      s = \\_ =>  a.s ! Compar ; 
      adv = a.adv ;
    } ;


    CAdvAP ad ap np = {
     s = \\d,g,n,c => ad.s ++ ap.s ! d ! g ! n ! c ++ ad.p ++ (np.s ! ad.c).comp ; 
     adv =  ap.adv ;
    } ;


    AdjOrd ord = {
      s = \\_, g, n, c =>   ord.s ! Posit ! g !n ! c;   
      adv = ord.adv ;
    } ;



   SentAP ap sc = {
      s = \\d,g,n,c => ap.s ! d! g ! n! Nom ++ sc.s ;
      adv = ap.adv ;  
      isPre = False
     } ;


    AdAP ada ap = {
     s = \\d,g,n,c => ada.s ++ ap.s ! d ! g ! n ! c ; 
     adv =  ap.adv ;
    } ;

   
    AdvAP ap adv = {
      s = \\d,g,n,c=> ap.s ! d ! g! n ! Nom ++ adv.s  ;
      isPre = False ;
      adv= ap.adv
    } ;
   


}
