version 1.15, 2001/09/20 04:08:21 |
version 1.16, 2001/10/09 01:36:24 |
|
|
* 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.14 2001/09/05 09:01:28 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/parse/eval.c,v 1.15 2001/09/20 04:08:21 noro Exp $ |
*/ |
*/ |
#include <ctype.h> |
#include <ctype.h> |
#include "ca.h" |
#include "ca.h" |
Line 64 int f_break,f_return,f_continue; |
|
Line 64 int f_break,f_return,f_continue; |
|
int evalstatline; |
int evalstatline; |
int recv_intr; |
int recv_intr; |
|
|
pointer bevalf(), evalmapf(), evall(); |
pointer eval(FNODE f) |
pointer eval_rec_mapf(), beval_rec_mapf(); |
|
Obj getopt_from_cpvs(); |
|
|
|
pointer eval(f) |
|
FNODE f; |
|
{ |
{ |
LIST t; |
LIST t; |
STRING str; |
STRING str; |
|
|
return ( val ); |
return ( val ); |
} |
} |
|
|
pointer evalstat(f) |
pointer evalstat(SNODE f) |
SNODE f; |
|
{ |
{ |
pointer val = 0,t,s,s1; |
pointer val = 0,t,s,s1; |
P u; |
P u; |
|
|
return ( val ); |
return ( val ); |
} |
} |
|
|
pointer evalnode(node) |
pointer evalnode(NODE node) |
NODE node; |
|
{ |
{ |
NODE tn; |
NODE tn; |
pointer val; |
pointer val; |
|
|
extern FUNC cur_binf; |
extern FUNC cur_binf; |
extern NODE PVSS; |
extern NODE PVSS; |
|
|
pointer evalf(f,a,opt) |
pointer evalf(FUNC f,FNODE a,FNODE opt) |
FUNC f; |
|
FNODE a; |
|
FNODE opt; |
|
{ |
{ |
LIST args; |
LIST args; |
pointer val; |
pointer val; |
|
|
return val; |
return val; |
} |
} |
|
|
pointer evalmapf(f,a) |
pointer evalmapf(FUNC f,FNODE a) |
FUNC f; |
|
FNODE a; |
|
{ |
{ |
LIST args; |
LIST args; |
NODE node,rest,t,n,r,r0; |
NODE node,rest,t,n,r,r0; |
|
|
return val; |
return val; |
} |
} |
|
|
pointer eval_rec_mapf(f,a) |
pointer eval_rec_mapf(FUNC f,FNODE a) |
FUNC f; |
|
FNODE a; |
|
{ |
{ |
LIST args; |
LIST args; |
|
|
|
|
return beval_rec_mapf(f,BDY(args)); |
return beval_rec_mapf(f,BDY(args)); |
} |
} |
|
|
pointer beval_rec_mapf(f,node) |
pointer beval_rec_mapf(FUNC f,NODE node) |
FUNC f; |
|
NODE node; |
|
{ |
{ |
LIST args; |
|
NODE rest,t,n,r,r0; |
NODE rest,t,n,r,r0; |
Obj head; |
Obj head; |
VECT v,rv; |
VECT v,rv; |
|
|
return val; |
return val; |
} |
} |
|
|
pointer bevalf(f,a) |
pointer bevalf(FUNC f,NODE a) |
FUNC f; |
|
NODE a; |
|
{ |
{ |
pointer val; |
pointer val; |
int i,n; |
int i,n; |
NODE tn,sn; |
NODE tn,sn; |
VS pvs; |
VS pvs; |
struct oLIST list; |
|
struct oFNODE fnode; |
|
char errbuf[BUFSIZ]; |
char errbuf[BUFSIZ]; |
|
|
if ( f->id == A_UNDEF ) { |
if ( f->id == A_UNDEF ) { |
|
|
return val; |
return val; |
} |
} |
|
|
pointer evalif(f,a) |
pointer evalif(FNODE f,FNODE a) |
FNODE f,a; |
|
{ |
{ |
Obj g; |
Obj g; |
|
|
|
|
return evalf((FUNC)VR((P)g)->priv,a,0); |
return evalf((FUNC)VR((P)g)->priv,a,0); |
else { |
else { |
error("invalid function pointer"); |
error("invalid function pointer"); |
|
/* NOTREACHED */ |
|
return (pointer)-1; |
} |
} |
} |
} |
|
|
pointer evalpf(pf,args) |
pointer evalpf(PF pf,NODE args) |
PF pf; |
|
NODE args; |
|
{ |
{ |
Obj s,s1; |
Obj s,s1; |
int i; |
int i; |
NODE node; |
NODE node; |
PFINS ins; |
PFINS ins; |
PFAD ad; |
PFAD ad; |
char errbuf[BUFSIZ]; |
|
|
|
if ( !pf->body ) { |
if ( !pf->body ) { |
ins = (PFINS)CALLOC(1,sizeof(PF)+pf->argc*sizeof(struct oPFAD)); |
ins = (PFINS)CALLOC(1,sizeof(PF)+pf->argc*sizeof(struct oPFAD)); |
|
|
return (pointer)s; |
return (pointer)s; |
} |
} |
|
|
void evalnodebody(sn,dnp) |
void evalnodebody(NODE sn,NODE *dnp) |
NODE sn; |
|
NODE *dnp; |
|
{ |
{ |
NODE n,n0,tn; |
NODE n,n0,tn; |
int line; |
int line; |
|
|
NEXT(n) = 0; *dnp = n0; |
NEXT(n) = 0; *dnp = n0; |
} |
} |
|
|
void gen_searchf(name,r) |
void gen_searchf(char *name,FUNC *r) |
char *name; |
|
FUNC *r; |
|
{ |
{ |
FUNC val; |
FUNC val; |
|
|
|
|
*r = val; |
*r = val; |
} |
} |
|
|
void searchf(fn,name,r) |
void searchf(NODE fn,char *name,FUNC *r) |
NODE fn; |
|
char *name; |
|
FUNC *r; |
|
{ |
{ |
NODE tn; |
NODE tn; |
|
|
|
|
*r = 0; |
*r = 0; |
} |
} |
|
|
void appenduf(name,r) |
void appenduf(char *name,FUNC *r) |
char *name; |
|
FUNC *r; |
|
{ |
{ |
NODE tn; |
NODE tn; |
FUNC f; |
FUNC f; |
|
|
*r = f; |
*r = f; |
} |
} |
|
|
void mkparif(name,r) |
void mkparif(char *name,FUNC *r) |
char *name; |
|
FUNC *r; |
|
{ |
{ |
FUNC f; |
FUNC f; |
|
|
|
|
f->name = name; f->id = A_PARI; f->argc = 0; f->f.binf = 0; |
f->name = name; f->id = A_PARI; f->argc = 0; f->f.binf = 0; |
} |
} |
|
|
void mkuf(name,fname,args,body,startl,endl,desc) |
void mkuf(char *name,char *fname,NODE args,SNODE body,int startl,int endl,char *desc) |
char *name,*fname; |
|
NODE args; |
|
SNODE body; |
|
int startl,endl; |
|
char *desc; |
|
{ |
{ |
FUNC f; |
FUNC f; |
USRF t; |
USRF t; |
|
|
CVS->opt = BDY([[key,value],[key,value],...]) |
CVS->opt = BDY([[key,value],[key,value],...]) |
*/ |
*/ |
|
|
Obj getopt_from_cpvs(key) |
Obj getopt_from_cpvs(char *key) |
char *key; |
|
{ |
{ |
NODE opts,opt; |
NODE opts,opt; |
Obj value; |
|
LIST r; |
LIST r; |
extern Obj VOIDobj; |
extern Obj VOIDobj; |
|
|