--# -path=.:../romance:../common:../abstract:../../prelude
concrete ExtraRon of ExtraRonAbs = CatRon ** 
  open ResRon, ParadigmsRon, Prelude, MorphoRon in {

  flags coding = utf8 ;

  lin
 at_Prep = mkPrep "la" Ac True;
 DatSubjCompCl np vp np2 = let ss = if_then_Str np.isPronoun "" (np.s ! Dat).comp
                              in 
                            mkClause ss np.isPol np2.a (insertDatClit (insertSimpObj (\\_ => (np2.s ! Nom).comp) vp) np);

 AccSubjCl np vp = let s1 = case np.nForm of
                           {HasRef False => "";
                            _            => "pe"};
                       ss = if_then_Str np.isPronoun "" (s1 ++ (np.s ! Ac).comp)
                     
                     in 
                       mkClause ss np.isPol (agrP3 Masc Sg) (insertAccClit vp np) ;

 DatSubjCl np vp = let ss = if_then_Str np.isPronoun "" (np.s ! Da).comp 
                      in mkClause ss np.isPol (agrP3 Masc Sg) (insertDatClit vp np);
i8fem_Pron = mkPronoun "eu" "mine" "mie" [] [] "meu" "mea" "mei" "mele" Fem Sg P1 ;
youSg8fem_Pron = mkPronoun "tu" "tine" "ţie" [] "tu" "tău" "ta" "tăi" "tale"  Fem Sg P2 ;
youPl8fem_Pron = mkPronoun "voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre" Fem Pl P2 ;
youPol8fem_Pron = let dvs = mkPronoun "dumneavoastră" "dumneavoastră" "dumneavoastră" [] "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" Fem Pl P2 
             in 
            {s = dvs.s; c1 = dvs.c1; 
                c2 = dvs.c2; a = dvs.a; isPol = True; poss = dvs.poss} ;  

refCN n = n ** {isComp = False; needsRefForm = True}; 
 
 oper     
insertDatClit : VerbPhrase -> NounPhrase -> VerbPhrase = \vp, np ->      
                        let  
                             vcDa = case np.nForm of 
                                        {HasClit => nextClit vp.nrClit PDat ;
                                         _       => vp.nrClit
                                         };                             
                             vpp = insertObje (\\_ => "") RNoAg (clitFromNoun np Da) False vcDa vp;
                            in 
                         {isRefl = vpp.isRefl; 
                          s = vpp.s ; isFemSg = vpp.isFemSg ; pReflClit = vp.pReflClit ;
                          nrClit = vpp.nrClit; clAcc = vpp.clAcc ; 
                          clDat = vpp.clDat ; neg   = vpp.neg ;
                          comp  = \\a => vpp.comp ! (np.a);
                          ext   = vpp.ext ;
                          lock_VP = <> };


insertAccClit : VerbPhrase -> NounPhrase -> VerbPhrase = \vp, np ->      
                        let  
                             vcAc = case np.nForm of 
                                        {HasClit => nextClit vp.nrClit PAcc ;
                                         _       => vp.nrClit
                                         };                             
                             vpp = insertObje (\\_ => "") (clitFromNoun np Ac) RNoAg (isAgrFSg np.a) vcAc vp ;
                            in 
                         {isRefl = vpp.isRefl; 
                          s = vpp.s ; isFemSg = vpp.isFemSg ; pReflClit = vp.pReflClit ;
                          nrClit = vpp.nrClit; clAcc = vpp.clAcc ; 
                          clDat = vpp.clDat ; neg   = vpp.neg ;
                          comp  = \\a => vpp.comp ! (np.a);
                          ext   = vpp.ext ;
                          lock_VP = <> };

    
} 
