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

Diff for /OpenXM_contrib2/asir2018/parse/eval.c between version 1.1 and 1.5

version 1.1, 2018/09/19 05:45:08 version 1.5, 2020/10/06 06:31:20
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: OpenXM_contrib2/asir2018/parse/eval.c,v 1.4 2019/11/12 10:53:23 kondoh Exp $
 */  */
 #include <ctype.h>  #include <ctype.h>
 #include "ca.h"  #include "ca.h"
Line 173  pointer eval(FNODE f)
Line 173  pointer eval(FNODE f)
       evalnodebody((NODE)FA0(f),&tn); nodetod(tn,&dp); val = (pointer)dp;        evalnodebody((NODE)FA0(f),&tn); nodetod(tn,&dp); val = (pointer)dp;
       break;        break;
     case I_EVM:      case I_EVM:
       evalnodebody((NODE)FA0(f),&tn); pos = (Obj)eval((FNODE)FA1(f)); nodetodpm(tn,pos,&dpm); val = (pointer)dpm;        evalnodebody((NODE)FA0(f),&tn); pos = (Obj)eval((FNODE)FA1(f));
         if ( !pos )
           error("position of a module element must be positive.");
         nodetodpm(tn,pos,&dpm); val = (pointer)dpm;
       break;        break;
     case I_FUNC:      case I_FUNC:
       val = evalf((FUNC)FA0(f),(FNODE)FA1(f),0); break;        val = evalf((FUNC)FA0(f),(FNODE)FA1(f),0); break;
Line 196  pointer eval(FNODE f)
Line 199  pointer eval(FNODE f)
         int interval;          int interval;
         Obj expired;          Obj expired;
   
         interval = QTOS((Q)eval((FNODE)FA0(f)));          interval = ZTOS((Q)eval((FNODE)FA0(f)));
         expired = (Obj)eval((FNODE)FA2(f));          expired = (Obj)eval((FNODE)FA2(f));
         set_timer(interval);          set_timer(interval);
         savepvs();          savepvs();
Line 432  FNODE fnode_to_nary(FNODE f)
Line 435  FNODE fnode_to_nary(FNODE f)
   
     default:      default:
       error("fnode_to_nary : not implemented yet");        error("fnode_to_nary : not implemented yet");
         return 0;
   }    }
 }  }
   
Line 503  FNODE fnode_to_bin(FNODE f,int dir)
Line 507  FNODE fnode_to_bin(FNODE f,int dir)
   
     default:      default:
       error("fnode_to_bin : not implemented yet");        error("fnode_to_bin : not implemented yet");
         return 0;
   }    }
 }  }
   
Line 580  FNODE partial_eval(FNODE f)
Line 585  FNODE partial_eval(FNODE f)
   
     default:      default:
       error("partial_eval : not implemented yet");        error("partial_eval : not implemented yet");
         return 0;
   }    }
 }  }
   
Line 663  FNODE rewrite_fnode(FNODE f,NODE arg,int qarg)
Line 669  FNODE rewrite_fnode(FNODE f,NODE arg,int qarg)
   
     default:      default:
       error("rewrite_fnode : not implemented yet");        error("rewrite_fnode : not implemented yet");
         return 0;
   }    }
 }  }
   
Line 747  pointer evalstat(SNODE f)
Line 754  pointer evalstat(SNODE f)
         makevar(buf,&u); a[i] = VR(u);          makevar(buf,&u); a[i] = VR(u);
         substr(CO,0,(Obj)s,VR((P)t),(Obj)u,(Obj *)&s1); s = s1;          substr(CO,0,(Obj)s,VR((P)t),(Obj)u,(Obj *)&s1); s = s1;
       }        }
   #if defined(INTERVAL)
         mkpf((char *)FA0(f),(Obj)s,ac,a,0,0,0,0,(PF *)&val); val = 0;
   #else
       mkpf((char *)FA0(f),(Obj)s,ac,a,0,0,0,(PF *)&val); val = 0;        mkpf((char *)FA0(f),(Obj)s,ac,a,0,0,0,(PF *)&val); val = 0;
   #endif
       v = searchvar((char *)FA0(f));        v = searchvar((char *)FA0(f));
       if ( v ) {        if ( v ) {
         searchpf((char *)FA0(f),&func);          searchpf((char *)FA0(f),&func);
Line 1326  pointer evalpf(PF pf,NODE args,NODE dargs)
Line 1337  pointer evalpf(PF pf,NODE args,NODE dargs)
       ad[i].arg = (Obj)node->body;        ad[i].arg = (Obj)node->body;
       if ( !dnode ) ad[i].d = 0;        if ( !dnode ) ad[i].d = 0;
       else        else
         ad[i].d = QTOS((Q)dnode->body);          ad[i].d = ZTOS((Q)dnode->body);
       node = NEXT(node);        node = NEXT(node);
       if ( dnode ) dnode = NEXT(dnode);        if ( dnode ) dnode = NEXT(dnode);
     }      }
Line 1335  pointer evalpf(PF pf,NODE args,NODE dargs)
Line 1346  pointer evalpf(PF pf,NODE args,NODE dargs)
     s = pf->body;      s = pf->body;
     if ( dargs ) {      if ( dargs ) {
       for ( i = 0, dnode = dargs; dnode; dnode = NEXT(dnode), i++ ) {        for ( i = 0, dnode = dargs; dnode; dnode = NEXT(dnode), i++ ) {
         di = QTOS((Q)dnode->body);          di = ZTOS((Q)dnode->body);
         for ( j = 0; j < di; j++ ) {          for ( j = 0; j < di; j++ ) {
           derivr(CO,s,pf->args[i],&s1); s = s1;            derivr(CO,s,pf->args[i],&s1); s = s1;
         }          }
Line 1389  void searchuf(char *name,FUNC *r)
Line 1400  void searchuf(char *name,FUNC *r)
   MODULE mod;    MODULE mod;
   char *name0,*dot;    char *name0,*dot;
   
   if ( dot = strchr(name,'.') ) {    if ( ( dot = strchr(name,'.') ) != 0 ) {
     name0 = (char *)ALLOCA(strlen(name)+1);      name0 = (char *)ALLOCA(strlen(name)+1);
     strcpy(name0,name);      strcpy(name0,name);
     dot = strchr(name0,'.');      dot = strchr(name0,'.');
Line 1448  void searchf(NODE fn,char *name,FUNC *r)
Line 1459  void searchf(NODE fn,char *name,FUNC *r)
 {  {
   NODE tn;    NODE tn;
   
   for ( tn = fn;    for ( tn = fn; tn && strcmp(NAME((FUNC)BDY(tn)),name); tn = NEXT(tn) )
     tn && strcmp(NAME((FUNC)BDY(tn)),name); tn = NEXT(tn) );      ;
     if ( tn ) {    if ( tn ) {
       *r = (FUNC)BDY(tn);      *r = (FUNC)BDY(tn);
       return;      return;
     }    }
   *r = 0;    *r = 0;
 }  }
   
Line 1469  void appenduf(char *name,FUNC *r)
Line 1480  void appenduf(char *name,FUNC *r)
   
   f=(FUNC)MALLOC(sizeof(struct oFUNC));    f=(FUNC)MALLOC(sizeof(struct oFUNC));
   f->id = A_UNDEF; f->argc = 0; f->f.binf = 0;    f->id = A_UNDEF; f->argc = 0; f->f.binf = 0;
   if ( dot = strchr(name,'.') ) {    if ( ( dot = strchr(name,'.') ) != 0 ) {
     /* undefined function in a module */      /* undefined function in a module */
     len = dot-name;      len = dot-name;
     modname = (char *)MALLOC_ATOMIC(len+1);      modname = (char *)MALLOC_ATOMIC(len+1);

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

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