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

Diff for /OpenXM_contrib2/asir2018/parse/quote.c between version 1.1 and 1.4

version 1.1, 2018/09/19 05:45:08 version 1.4, 2021/03/11 09:20:49
Line 1 
Line 1 
 /* $OpenXM$ */  /* $OpenXM: OpenXM_contrib2/asir2018/parse/quote.c,v 1.3 2021/03/11 03:41:13 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 120  void objtoquote(Obj a,QUOTE *c)
Line 120  void objtoquote(Obj a,QUOTE *c)
         MKNODE(t1,BDY(nm),t);          MKNODE(t1,BDY(nm),t);
         t = t1;          t = t1;
       }        }
       STOQ(len,q);        STOZ(len,q);
       t = mknode(2,mkfnode(1,I_FORMULA,q),mkfnode(1,I_LIST,t));        t = mknode(2,mkfnode(1,I_FORMULA,q),mkfnode(1,I_LIST,t));
       gen_searchf("vector",&f);        gen_searchf("vector",&f);
       MKQUOTE(*c,mkfnode(2,I_FUNC,f,mkfnode(1,I_LIST,t)));        MKQUOTE(*c,mkfnode(2,I_FUNC,f,mkfnode(1,I_LIST,t)));
Line 143  void objtoquote(Obj a,QUOTE *c)
Line 143  void objtoquote(Obj a,QUOTE *c)
       }        }
       fn = mkfnode(1,I_LIST,t2);        fn = mkfnode(1,I_LIST,t2);
   
       STOQ(row,qrow);        STOZ(row,qrow);
       STOQ(col,qcol);        STOZ(col,qcol);
       t = mknode(3,        t = mknode(3,
         mkfnode(1,I_FORMULA,qrow),mkfnode(1,I_FORMULA,qcol),fn);          mkfnode(1,I_FORMULA,qrow),mkfnode(1,I_FORMULA,qcol),fn);
       gen_searchf("matrix",&f);        gen_searchf("matrix",&f);
Line 291  void mptoquote(MP m,int n,QUOTE *r,int *sgn)
Line 291  void mptoquote(MP m,int n,QUOTE *r,int *sgn)
   }    }
   dl = m->dl;    dl = m->dl;
   for ( i = n-1, t = 0; i >= 0; i-- ) {    for ( i = n-1, t = 0; i >= 0; i-- ) {
     STOQ(dl->d[i],q);      STOZ(dl->d[i],q);
     f = mkfnode(1,I_FORMULA,q);      f = mkfnode(1,I_FORMULA,q);
     MKNODE(t1,f,t);      MKNODE(t1,f,t);
     t = t1;      t = t1;
Line 311  void vartoquote(V v,QUOTE *c)
Line 311  void vartoquote(V v,QUOTE *c)
   QUOTE a,b,u;    QUOTE a,b,u;
   int i;    int i;
   FUNC f;    FUNC f;
   NODE t,t1;    Z z;
     FNODE fa,fd;
     NODE t,t1,s,s1;
   
   if ( NAME(v) ) {    if ( NAME(v) ) {
     MKV(v,x);      MKV(v,x);
Line 335  void vartoquote(V v,QUOTE *c)
Line 337  void vartoquote(V v,QUOTE *c)
       objtoquote(ad[1].arg,&b);        objtoquote(ad[1].arg,&b);
       pwrquote(CO,a,b,c);        pwrquote(CO,a,b,c);
     } else {      } else {
         gen_searchf(NAME(pf),&f);
       for ( i = 0; i < pf->argc; i++ )        for ( i = 0; i < pf->argc; i++ )
         if ( ad[i].d )          if ( ad[i].d )
           break;            break;
       if ( i < pf->argc )        if ( i < pf->argc ) {
         error("vartoquote : not implemented");          t = s = 0;
       gen_searchf(NAME(pf),&f);          for ( i = pf->argc-1; i >= 0; i-- ) {
       t = 0;            objtoquote(ad[i].arg,&a);
       for ( i = pf->argc-1; i >= 0; i-- ) {            MKNODE(t1,BDY(a),t);
         objtoquote(ad[i].arg,&a);            t = t1;
         MKNODE(t1,BDY(a),t);            STOZ(ad[i].d,z);
         t = t1;            objtoquote((Obj)z,&a);
             MKNODE(s1,BDY(a),s);
             s = s1;
           }
           fa = mkfnode(1,I_LIST,t);
           fd = mkfnode(1,I_LIST,s);
           MKQUOTE(*c,mkfnode(3,I_PFDERIV,f,fa,fd));
         } else {
           t = 0;
           for ( i = pf->argc-1; i >= 0; i-- ) {
             objtoquote(ad[i].arg,&a);
             MKNODE(t1,BDY(a),t);
             t = t1;
           }
           MKQUOTE(*c,mkfnode(2,I_FUNC,f,mkfnode(1,I_LIST,t)));
       }        }
       MKQUOTE(*c,mkfnode(2,I_FUNC,f,mkfnode(1,I_LIST,t)));  
     }      }
   }    }
 }  }
Line 378  struct fid_spec fid_spec_tab[] = {
Line 394  struct fid_spec fid_spec_tab[] = {
   {I_IFUNC,A_fnode,A_fnode,A_end},    {I_IFUNC,A_fnode,A_fnode,A_end},
   {I_MAP,A_func,A_fnode,A_end},    {I_MAP,A_func,A_fnode,A_end},
   {I_RECMAP,A_func,A_fnode,A_end},    {I_RECMAP,A_func,A_fnode,A_end},
   {I_PFDERIV,A_notimpl,A_end},    {I_PFDERIV,A_func,A_fnode,A_fnode,A_end},
   {I_ANS,A_int,A_end},    {I_ANS,A_int,A_end},
   {I_PVAR,A_int,A_node,A_end},    {I_PVAR,A_int,A_node,A_end},
   {I_ASSPVAR,A_fnode,A_fnode,A_end},    {I_ASSPVAR,A_fnode,A_fnode,A_end},

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

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