packages feed

gf-3.5: lib/src/sindhi/RelativeSnd.gf

concrete RelativeSnd of Relative = CatSnd ** open ResSnd in {

  flags optimize=all_subs ;
  coding = utf8;

  lin

    RelCl cl = {
      s = \\t,p,o,agr => case <t,giveNumber agr,giveGender agr> of {
	                    <VPImpPast,Sg,_> => "جھنکي" ++ cl.s ! t ! p ! o ; 
			    <VPImpPast,Pl,_> => "جھنجو" ++ cl.s ! t ! p ! o ;
			    <_,Sg,Masc>          => "جيھڙو" ++ cl.s ! t ! p ! o ;
			    <_,Sg,Fem>          => "جيھڙا" ++ cl.s ! t ! p ! o ;
			    <_,Pl,Masc>          => "جيھڙا" ++ cl.s ! t ! p ! o ;
			    <_,Pl,Fem>          => "جيھڙيون" ++ cl.s ! t ! p ! o 
			};
      c = Dir
      } ;
-- RelVP and RelSlash slows the linking process a lot this is why it is commented for test purposes

    RelVP rp vp = {
      s = \\t,p,o,ag => 
        let 
          agr = case rp.a of {
            RNoAg => ag ;
            RAg a => a
            } ;
		 cl = mkSClause (rp.s ! (giveNumber agr) ! (giveGender agr) ! Dir) agr vp;
		  
--          cl = case t of {
--                VPImpPast =>  mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp;
--				_         =>  mkSClause (rp.s ! (giveNumber agr) ! Dir) agr vp
--				};
        in
        cl.s ! t ! p ! ODir ;
      c = Dir
      } ;
      

---- Pied piping: "ات whiچh wع ارع looڪiنگ". Stranding and empty
---- relative are defined in $ExtraHin.gf$ ("تhات wع ارع looڪiنگ ات", 
---- "wع ارع looڪiنگ ات").
--
    RelSlash rp slash = {
      s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! (giveGender agr) ! Obl ++ slash.c2.s ++  slash.s ! t ! p ! o  ;
      c = Dir
      } ;

    FunRP p np rp = {
      s = \\n,g,c => rp.s ! n ! g ! c ++ np.s ! NPC c ++ p.s  ;
      a = RAg np.a
      } ;

    IdRP = {
      s = table {
        Sg => table {
	  Masc => table {
		
    	    ResSnd.Dir  => "جھڙا" ; 
            ResSnd.Obl  => "جنھن" ;
            ResSnd.Voc  => "جھڙي" ;
	    ResSnd.Abl => "جھڙي"
	    };
	  Fem => table {
		
    	    ResSnd.Dir  => "جھڙي" ; 
            ResSnd.Obl  => "جنھن" ;
            ResSnd.Voc  => "جھڙي" ;
	    ResSnd.Abl => "جھڙي"
	    }
	    };
	Pl => table {
	    Masc => table {
                    ResSnd.Dir  => "جھڙي" ;
		    ResSnd.Obl  => "جھڙي" ;
		    ResSnd.Voc  => "جھڙي" ;
		    ResSnd.Abl => "جھڙي"
			};
	    Fem => table {
                    ResSnd.Dir  => "جھڙي" ;
		    ResSnd.Obl  => "جھڙي" ;
		    ResSnd.Voc  => "جھڙي" ;
		    ResSnd.Abl => "جھڙي"
			}
	  }
       }; 
      a = RNoAg
      } ;

}