=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/parse/eval.c,v retrieving revision 1.2 retrieving revision 1.5 diff -u -p -r1.2 -r1.5 --- OpenXM_contrib2/asir2018/parse/eval.c 2018/09/28 08:20:29 1.2 +++ OpenXM_contrib2/asir2018/parse/eval.c 2020/10/06 06:31:20 1.5 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2018/parse/eval.c,v 1.1 2018/09/19 05:45:08 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2018/parse/eval.c,v 1.4 2019/11/12 10:53:23 kondoh Exp $ */ #include #include "ca.h" @@ -173,7 +173,10 @@ pointer eval(FNODE f) evalnodebody((NODE)FA0(f),&tn); nodetod(tn,&dp); val = (pointer)dp; break; 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; case I_FUNC: val = evalf((FUNC)FA0(f),(FNODE)FA1(f),0); break; @@ -432,6 +435,7 @@ FNODE fnode_to_nary(FNODE f) default: error("fnode_to_nary : not implemented yet"); + return 0; } } @@ -503,6 +507,7 @@ FNODE fnode_to_bin(FNODE f,int dir) default: error("fnode_to_bin : not implemented yet"); + return 0; } } @@ -580,6 +585,7 @@ FNODE partial_eval(FNODE f) default: error("partial_eval : not implemented yet"); + return 0; } } @@ -663,6 +669,7 @@ FNODE rewrite_fnode(FNODE f,NODE arg,int qarg) default: error("rewrite_fnode : not implemented yet"); + return 0; } } @@ -747,7 +754,11 @@ pointer evalstat(SNODE f) makevar(buf,&u); a[i] = VR(u); 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; +#endif v = searchvar((char *)FA0(f)); if ( v ) { searchpf((char *)FA0(f),&func); @@ -1389,7 +1400,7 @@ void searchuf(char *name,FUNC *r) MODULE mod; char *name0,*dot; - if ( dot = strchr(name,'.') ) { + if ( ( dot = strchr(name,'.') ) != 0 ) { name0 = (char *)ALLOCA(strlen(name)+1); strcpy(name0,name); dot = strchr(name0,'.'); @@ -1448,12 +1459,12 @@ void searchf(NODE fn,char *name,FUNC *r) { NODE tn; - for ( tn = fn; - tn && strcmp(NAME((FUNC)BDY(tn)),name); tn = NEXT(tn) ); - if ( tn ) { - *r = (FUNC)BDY(tn); - return; - } + for ( tn = fn; tn && strcmp(NAME((FUNC)BDY(tn)),name); tn = NEXT(tn) ) + ; + if ( tn ) { + *r = (FUNC)BDY(tn); + return; + } *r = 0; } @@ -1469,7 +1480,7 @@ void appenduf(char *name,FUNC *r) f=(FUNC)MALLOC(sizeof(struct oFUNC)); 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 */ len = dot-name; modname = (char *)MALLOC_ATOMIC(len+1);