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

Diff for /OpenXM_contrib2/asir2000/parse/eval.c between version 1.51 and 1.54

version 1.51, 2005/10/12 03:31:04 version 1.54, 2005/11/06 01:27:28
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/asir2000/parse/eval.c,v 1.50 2005/10/05 09:39:13 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/eval.c,v 1.53 2005/10/19 14:09:13 noro Exp $
 */  */
 #include <ctype.h>  #include <ctype.h>
 #include "ca.h"  #include "ca.h"
Line 445  FNODE fnode_to_bin(FNODE f,int dir)
Line 445  FNODE fnode_to_bin(FNODE f,int dir)
                 case I_NARYOP:                  case I_NARYOP:
                         fun = (ARF)FA0(f);                          fun = (ARF)FA0(f);
                         len = length((NODE)FA1(f));                          len = length((NODE)FA1(f));
                           if ( len==1 ) return BDY((NODE)(FA1(f)));
   
                         arg = (FNODE *)ALLOCA(len*sizeof(FNODE));                          arg = (FNODE *)ALLOCA(len*sizeof(FNODE));
                         for ( i = 0, t = (NODE)FA1(f); i < len; i++, t = NEXT(t) )                          for ( i = 0, t = (NODE)FA1(f); i < len; i++, t = NEXT(t) )
                                 arg[i] = fnode_to_bin((FNODE)BDY(t),dir);                                  arg[i] = fnode_to_bin((FNODE)BDY(t),dir);
Line 611  FNODE rewrite_fnode(FNODE f,NODE arg)
Line 613  FNODE rewrite_fnode(FNODE f,NODE arg)
                         return mkfnode(3,f->id,a0,a1,a2);                          return mkfnode(3,f->id,a0,a1,a2);
                         break;                          break;
   
                 /* function */                  /* nary operators */
                   case I_NARYOP:
                           n = rewrite_fnode_node((NODE)FA1(f),arg);
                           return mkfnode(2,f->id,FA0(f),n);
   
                   /* and function */
                 case I_FUNC:                  case I_FUNC:
                         a1 = rewrite_fnode((FNODE)FA1(f),arg);                          a1 = rewrite_fnode((FNODE)FA1(f),arg);
                         return mkfnode(2,f->id,FA0(f),a1);                          return mkfnode(2,f->id,FA0(f),a1);
Line 1204  pointer evalif(FNODE f,FNODE a)
Line 1211  pointer evalif(FNODE f,FNODE a)
 pointer evalpf(PF pf,NODE args,NODE dargs)  pointer evalpf(PF pf,NODE args,NODE dargs)
 {  {
         Obj s,s1;          Obj s,s1;
         int i;          int i,di,j;
         NODE node,dnode;          NODE node,dnode;
         PFINS ins;          PFINS ins;
         PFAD ad;          PFAD ad;
Line 1223  pointer evalpf(PF pf,NODE args,NODE dargs)
Line 1230  pointer evalpf(PF pf,NODE args,NODE dargs)
                 }                  }
                 simplify_ins(ins,&s);                  simplify_ins(ins,&s);
         } else {          } else {
                 for ( i = 0, s = pf->body, node = args;                  s = pf->body;
                         node; node = NEXT(node), i++ ) {                  if ( dnode ) {
                           for ( i = 0, dnode = dargs; dnode; dnode = NEXT(dnode), i++ ) {
                                   di = QTOS((Q)dnode->body);
                                   for ( j = 0; j < di; j++ ) {
                                           derivr(CO,s,pf->args[i],&s1); s = s1;
                                   }
                           }
                   }
                   for ( i = 0, node = args; node; node = NEXT(node), i++ ) {
                         substr(CO,0,s,pf->args[i],(Obj)node->body,&s1); s = s1;                          substr(CO,0,s,pf->args[i],(Obj)node->body,&s1); s = s1;
                 }                  }
         }          }

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.54

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