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

Diff for /OpenXM_contrib2/asir2018/builtin/print.c between version 1.2 and 1.3

version 1.2, 2018/09/28 08:20:27 version 1.3, 2020/02/22 06:23:35
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2018/builtin/print.c,v 1.1 2018/09/19 05:45:06 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2018/builtin/print.c,v 1.2 2018/09/28 08:20:27 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 143  void Pobjtoquote(NODE arg,QUOTE *rp)
Line 143  void Pobjtoquote(NODE arg,QUOTE *rp)
   
 void Pquotetolist(NODE arg,LIST *rp)  void Pquotetolist(NODE arg,LIST *rp)
 {  {
     QUOTE q;
   
   asir_assert(ARG0(arg),O_QUOTE,"quotetolist");    asir_assert(ARG0(arg),O_QUOTE,"quotetolist");
   fnodetotree((FNODE)BDY((QUOTE)(ARG0(arg))),rp);    q = (QUOTE)ARG0(arg);
     fnodetotree((FNODE)BDY(q),q->pvs,rp);
 }  }
   
 void Peval_variables_in_quote(NODE arg,QUOTE *rp)  void Peval_variables_in_quote(NODE arg,QUOTE *rp)
Line 158  void Peval_variables_in_quote(NODE arg,QUOTE *rp)
Line 161  void Peval_variables_in_quote(NODE arg,QUOTE *rp)
   
 /* fnode -> [tag,name,arg0,arg1,...] */  /* fnode -> [tag,name,arg0,arg1,...] */
   
 void fnodetotree(FNODE f,LIST *rp)  void fnodetotree(FNODE f,VS vs,LIST *rp)
 {  {
   LIST a1,a2,a3;    LIST a1,a2,a3;
   NODE n,t,t0;    NODE n,t,t0;
Line 186  void fnodetotree(FNODE f,LIST *rp)
Line 189  void fnodetotree(FNODE f,LIST *rp)
           MKSTR(op,"-");            MKSTR(op,"-");
           break;            break;
       }        }
       fnodetotree((FNODE)FA0(f),&a1);        fnodetotree((FNODE)FA0(f),vs,&a1);
       n = mknode(3,head,op,a1);        n = mknode(3,head,op,a1);
       MKLIST(*rp,n);        MKLIST(*rp,n);
       break;        break;
Line 199  void fnodetotree(FNODE f,LIST *rp)
Line 202  void fnodetotree(FNODE f,LIST *rp)
       /* arg list */        /* arg list */
       switch ( f->id ) {        switch ( f->id ) {
         case I_AND: case I_OR:          case I_AND: case I_OR:
           fnodetotree((FNODE)FA0(f),&a1);            fnodetotree((FNODE)FA0(f),vs,&a1);
           fnodetotree((FNODE)FA1(f),&a2);            fnodetotree((FNODE)FA1(f),vs,&a2);
           break;            break;
         default:          default:
           fnodetotree((FNODE)FA1(f),&a1);            fnodetotree((FNODE)FA1(f),vs,&a1);
           fnodetotree((FNODE)FA2(f),&a2);            fnodetotree((FNODE)FA2(f),vs,&a2);
           break;            break;
       }        }
   
Line 261  void fnodetotree(FNODE f,LIST *rp)
Line 264  void fnodetotree(FNODE f,LIST *rp)
       n = (NODE)FA1(f);        n = (NODE)FA1(f);
       for ( t0 = 0; n; n = NEXT(n) ) {        for ( t0 = 0; n; n = NEXT(n) ) {
         NEXTNODE(t0,t);          NEXTNODE(t0,t);
         fnodetotree((FNODE)BDY(n),&a1);          fnodetotree((FNODE)BDY(n),vs,&a1);
         BDY(t) = (pointer)a1;          BDY(t) = (pointer)a1;
       }        }
       MKSTR(op,((ARF)FA0(f))->name);        MKSTR(op,((ARF)FA0(f))->name);
Line 274  void fnodetotree(FNODE f,LIST *rp)
Line 277  void fnodetotree(FNODE f,LIST *rp)
     case I_CE:      case I_CE:
       MKSTR(head,"t_op");        MKSTR(head,"t_op");
       MKSTR(op,"?:");        MKSTR(op,"?:");
       fnodetotree((FNODE)FA0(f),&a1);        fnodetotree((FNODE)FA0(f),vs,&a1);
       fnodetotree((FNODE)FA1(f),&a2);        fnodetotree((FNODE)FA1(f),vs,&a2);
       fnodetotree((FNODE)FA2(f),&a3);        fnodetotree((FNODE)FA2(f),vs,&a3);
       n = mknode(5,head,op,a1,a2,a3);        n = mknode(5,head,op,a1,a2,a3);
       MKLIST(*rp,n);        MKLIST(*rp,n);
       break;        break;
Line 286  void fnodetotree(FNODE f,LIST *rp)
Line 289  void fnodetotree(FNODE f,LIST *rp)
       n = (NODE)FA0(f);        n = (NODE)FA0(f);
       for ( t0 = 0; n; n = NEXT(n) ) {        for ( t0 = 0; n; n = NEXT(n) ) {
         NEXTNODE(t0,t);          NEXTNODE(t0,t);
         fnodetotree((FNODE)BDY(n),&a1);          fnodetotree((FNODE)BDY(n),vs,&a1);
         BDY(t) = (pointer)a1;          BDY(t) = (pointer)a1;
       }        }
       if ( t0 )        if ( t0 )
Line 302  void fnodetotree(FNODE f,LIST *rp)
Line 305  void fnodetotree(FNODE f,LIST *rp)
       switch ( f->id ) {        switch ( f->id ) {
         case I_FUNC: case I_FUNC_QARG:          case I_FUNC: case I_FUNC_QARG:
           MKSTR(op,((FUNC)FA0(f))->fullname);            MKSTR(op,((FUNC)FA0(f))->fullname);
           fnodetotree((FNODE)FA1(f),&a1);            fnodetotree((FNODE)FA1(f),vs,&a1);
           break;            break;
         case I_CAR:          case I_CAR:
           MKSTR(op,"car");            MKSTR(op,"car");
           fnodetotree((FNODE)FA0(f),&a1);            fnodetotree((FNODE)FA0(f),vs,&a1);
           break;            break;
         case I_CDR:          case I_CDR:
           MKSTR(op,"cdr");            MKSTR(op,"cdr");
           fnodetotree((FNODE)FA0(f),&a1);            fnodetotree((FNODE)FA0(f),vs,&a1);
           break;            break;
         case I_EV:          case I_EV:
           /* exponent vector; should be treated as function call */            /* exponent vector; should be treated as function call */
           MKSTR(op,"exponent_vector");            MKSTR(op,"exponent_vector");
           fnodetotree(mkfnode(1,I_LIST,FA0(f)),&a1);            fnodetotree(mkfnode(1,I_LIST,FA0(f)),vs,&a1);
           break;            break;
       }        }
       t0 = NEXT(BDY(a1)); /* XXX : skip the headers */        t0 = NEXT(BDY(a1)); /* XXX : skip the headers */
Line 341  void fnodetotree(FNODE f,LIST *rp)
Line 344  void fnodetotree(FNODE f,LIST *rp)
       if ( FA1(f) )        if ( FA1(f) )
         error("fnodetotree : not implemented yet");          error("fnodetotree : not implemented yet");
       MKSTR(head,"variable");        MKSTR(head,"variable");
       GETPVNAME(FA0(f),opname);        GETPVNAME2(FA0(f),opname,vs);
       MKSTR(op,opname);        MKSTR(op,opname);
       n = mknode(2,head,op);        n = mknode(2,head,op);
       MKLIST(*rp,n);        MKLIST(*rp,n);

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

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