Metropoli BBS
VIEWER: execpars.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1994 by Thomas Glen Smith.  All Rights Reserved.*/
/* execpars APL2 V1.0.0 ************************************************
* Called by apledit and executg to interface to the apl parsing        *
* routine, and display error messages when appropriate.                *
***********************************************************************/
#define INCLUDES APLTOKEN
#include "includes.h"
Apltoken execpars(stmtptr,stmtlen)
char *stmtptr;
int stmtlen;
{
	Aplparse; Execfree; Execmsg; Execpop; Pop;
     extern int aplerr;
     Apltoken bug,tokhdr;
     char *msg = NULL;
     int offset = 0; /* offset of error, if one occurs */

     if (aplerr) return(NULL);
     tokhdr = aplparse(stmtptr,stmtlen);
     if (tokhdr->token_code == MESSAGE_TOKEN) {
          aplerr = 58; /* syntax error */
          msg = tokhdr->token_ptr.token_string; /* error message */
          offset = tokhdr->token_offset; /* offset of error */
     }
     else {
          /* execfree(pop(&tokhdr)); * pop & free NO_MORE_TOKENS */
          /* the above statement didn't work - I don't know why. */
          bug = pop(&tokhdr);
          execfree(bug);
     }
     if (aplerr) {
          execmsg(stmtptr,stmtlen,offset,msg); /* print message */
          execpop(&tokhdr); /* pop/free any tokens on stack */
     }
     return(tokhdr); /* return list of tokens */
}
[ RETURN TO DIRECTORY ]