Metropoli BBS
VIEWER: execspeq.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.	All Rights Reserved. */
/* execspeq APL2 V1.0.0 ************************************************
* Called by execspex to locate the token for the variable to be indexed*
* for selective specifiecation, e.g. the r in (Er)#...       		 *
***********************************************************************/
#define INCLUDES APLCHDEF+APLDERIV+APLTOKEN+APLCB+TREE
#include "includes.h"
Apltoken execspeq(pp)
Avlnode *pp;
{
	Treenode;
	extern Treelist treehdr;
	Apltoken nametok=NULL;
	int i;
	Aplcb cb;
	Avlnode p=NULL;
	Treelist treetest;

	treetest = treehdr;
	i = 1;
	nametok = treehdr->avltokhd;
	while (i && nametok != NULL) {
		if (nametok->token_code == OPERAND_TOKEN) {
			p = treenode(nametok->token_ptr.token_string);
			if (NULL != p && NULL != (cb = p->avlleaf) &&
				cb->aplflags & (APLMASK | APLAPL))
				break; /* found it */
		}
		else if (nametok->token_code == RIGHT_PAREN) i++;
		else if (nametok->token_code == LEFT_PAREN) {
			i--;
			if (i == 0) {
				nametok = NULL;
				break;
			}
		}
		nametok = nametok->token_queue.token_next_ptr;
	}
	*pp = p;
	return(nametok);
}
[ RETURN TO DIRECTORY ]