[BACK]Return to quote.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Diff for /OpenXM_contrib2/asir2000/parse/quote.c between version 1.7 and 1.8

version 1.7, 2004/03/03 09:25:30 version 1.8, 2004/03/04 01:41:32
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.6 2001/10/09 01:36:25 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.7 2004/03/03 09:25:30 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 183  void polytoquote(P a,QUOTE *c)
Line 183  void polytoquote(P a,QUOTE *c)
 void dptoquote(DP a,QUOTE *c)  void dptoquote(DP a,QUOTE *c)
 {  {
         MP t;          MP t;
         MP *m;          MP m;
         int i,n,nv;          int i,n,nv,sgn;
         QUOTE s,r,u;          QUOTE s,r,u;
   
         if ( !a ) {          if ( !a ) {
                 MKQUOTE(*c,mkfnode(1,I_FORMULA,(pointer)a));                  MKQUOTE(*c,mkfnode(1,I_FORMULA,(pointer)a));
                 return;                  return;
         }          }
         for ( t = BDY(a), n = 0; t; t = NEXT(t), n++ );  
         m = (MP *)ALLOCA(n*sizeof(MP));  
         for ( t = BDY(a), i = 0; t; t = NEXT(t), i++ )  
                 m[i] = t;  
         nv = NV(a);          nv = NV(a);
         mptoquote(m[n-1],nv,&r);          m = BDY(a);
         for ( i = n-2; i >= 0; i-- ) {          mptoquote(m,nv,&r,&sgn);
                 mptoquote(m[i],nv,&s);          if ( sgn == -1 ) {
                 addquote(CO,s,r,&u);                  MKQUOTE(u,mkfnode(1,I_MINUS,BDY(r)));
                 r = u;                  r = u;
         }          }
           for ( m = NEXT(m); m; m = NEXT(m) ) {
                   mptoquote(m,nv,&s,&sgn);
                   if ( sgn < 0 )
                           subquote(CO,r,s,&u);
                   else
                           addquote(CO,r,s,&u);
                   r = u;
           }
         *c = r;          *c = r;
 }  }
   
Line 250  void dctoquote(DCP dc,QUOTE v,QUOTE *q,int *sgn)
Line 254  void dctoquote(DCP dc,QUOTE v,QUOTE *q,int *sgn)
         *q = r;          *q = r;
 }  }
   
 void mptoquote(MP m,int n,QUOTE *c)  void mptoquote(MP m,int n,QUOTE *r,int *sgn)
 {  {
         QUOTE s,u;          QUOTE s,u;
           P c;
         NODE t,t1;          NODE t,t1;
         FNODE f;          FNODE f;
         Q q;          Q q;
         DL dl;          DL dl;
         int i;          int i;
   
         objtoquote((Obj)C(m),&s);          if ( mmono(C(m)) ) {
                   chsgnp(C(m),&c);
                   *sgn = -1;
           } else {
                   c = C(m);
                   *sgn = 1;
           }
           objtoquote((Obj)c,&s);
           if ( !NUM(c) && NEXT(DC(c)) ) {
                   MKQUOTE(u,mkfnode(1,I_PAREN,BDY(s)));
                   s = u;
           }
         dl = m->dl;          dl = m->dl;
         for ( i = n-1, t = 0; i >= 0; i-- ) {          if ( !dl->td )
                 STOQ(dl->d[i],q);                  *r = s;
                 f = mkfnode(1,I_FORMULA,q);          else {
                 MKNODE(t1,f,t);                  for ( i = n-1, t = 0; i >= 0; i-- ) {
                 t = t1;                          STOQ(dl->d[i],q);
                           f = mkfnode(1,I_FORMULA,q);
                           MKNODE(t1,f,t);
                           t = t1;
                   }
                   MKQUOTE(u,mkfnode(1,I_EV,t));
                   if ( UNIQ(c) )
                           *r = u;
                   else
                           mulquote(CO,s,u,r);
         }          }
         MKQUOTE(u,mkfnode(1,I_EV,t));  
         mulquote(CO,s,u,c);  
 }  }
   
 void vartoquote(V v,QUOTE *c)  void vartoquote(V v,QUOTE *c)

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>