/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */
/* execfun APL2 V1.0.0 *************************************************
* Called by dottran. *
* Called to pop the operator/function stack, returning the *
* operator/function code and setting offset as a side effect, after *
* freeing the popped token. *
***********************************************************************/
#define INCLUDES APLCHDEF+APLTOKEN+APLCB+TREE
#include "includes.h"
int execfun(pfunc)
void **pfunc; /* function definition structure */
{
Execfree; Getcode; Pop;
extern Treelist treehdr;
extern int aplerr;
Apltoken funtok;
int code;
if (NULL == (funtok = pop(&(treehdr->avlexec->avlfunst))))
aplerr = 63; /* missing operator/function */
else {
treehdr->avloff = funtok->token_offset; /* save offset */
code = getcode(pfunc, funtok);
execfree(funtok); /* free function/operator token */
}
return(code);
}