return r;
}
-/*
- * generate the program for name or sym coerced to type
- */
-
-int
-excc(Excc_t* cc, const char* name, Exid_t* sym, int type)
-{
- char* t;
-
- if (!cc)
- return -1;
- if (!sym)
- sym = name ? dtmatch(cc->expr->symbols, name) : &cc->expr->main;
- if (sym && sym->lex == PROCEDURE && sym->value)
- {
- t = extype(type);
- sfprintf(cc->ccdisc->text, "\n%s %s%s(data) char** data; {\n%s _%svalue = 0;\n", t, cc->id, sym->name, t, cc->id);
- gen(cc, sym->value->data.procedure.body);
- sfprintf(cc->ccdisc->text, ";\n");
- if (cc->lastop != RETURN)
- sfprintf(cc->ccdisc->text, "return _%svalue;\n", cc->id);
- sfprintf(cc->ccdisc->text, "}\n");
- return 0;
- }
- return -1;
-}
-
/*
* dump an expression tree on sp
*/
Expr_t* exopen(Exdisc_t*);
Excc_t* exccopen(Expr_t*, Exccdisc_t*);
-int excc(Excc_t*, const char*, Exid_t*, int);
int exccclose(Excc_t*);
void exclose(Expr_t*, int);
char* excontext(Expr_t*, char*, int);
extern Exnode_t* excast(Expr_t*, Exnode_t*, int, Exnode_t*, int);
extern Exnode_t* exnoncast(Exnode_t *);
-extern int excc(Excc_t*, const char*, Exid_t*, int);
extern int exccclose(Excc_t*);
extern Excc_t* exccopen(Expr_t*, Exccdisc_t*);
extern void exclose(Expr_t*, int);