/*Copyright (C) 1992, 1996 by Thomas Glen Smith. All Rights Reserved.*/
/* execqfxh APL2 V1.0.0 ************************************************
* Called from execqfxd when the form of the function header has been *
* determined, niladic, monadic, or dyadic, with or without result. *
* Execqfxh will process the list of local variables. *
***********************************************************************/
#define INCLUDES APLCHDEF+APLCB+APLFUNCI+APLTOKEN
#include "includes.h"
void execqfxh(fp,tokhdr,curtok,tokcnt,curvar)
Aplfunc fp; /* Function definition structure */
Apltoken tokhdr; /* Points to array of function header tokens */
Apltoken curtok; /* Points to token left of semicolon */
int tokcnt; /* Count of tokens right of current one */
Apltoken curvar; /* Current token on queue of local variables */
{
Execqfxe; Fifo;
extern int aplerr;
if (0 == tokcnt--) return; /* backup to semicolon */
while(tokcnt--) {
curtok = execqfxe(tokhdr + tokcnt,0,93);
if (aplerr) break; /* didn't get token type expected */
curvar = fifo(&(fp->funcvars),curvar,curtok); /* locals */
if (tokcnt == 0) return; /* all done */
curtok = execqfxe(tokhdr + --tokcnt,SEMICOLON,93);
if (aplerr) break; /* didn't find semicolon when expected */
}
if (aplerr == 0)
aplerr = 93; /* bad syntax in function header */
}