/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* execspec APL2 V1.0.0 ************************************************ * Called by execexed to perform specification (left) arrow. * ***********************************************************************/ #define INCLUDES APLCHDEF+APLTOKEN+APLCB+TREE #include "includes.h" int execspec(ptok) Apltoken *ptok; /* token for next operator */ { Execmona; Execsped; Execspex; extern int aplerr; extern Treelist treehdr; Apltoken op,tok; int code,noexit=1; tok = *ptok; if (aplerr || tok == NULL) return(!noexit); code = tok->token_code; /* save for later test */ execmona(tok); /* do monadic, stack left arrow or other function */ *ptok = NULL; /* token has been handled */ if (code != LEFT_ARROW) return(noexit); /* quit if not assignment */ if (execspex()) return(aplerr == 0); /* selective specification */ if ((noexit != execexee(&tok,&op)) || aplerr) return(!noexit); treehdr->lastfun = LEFT_ARROW; return(execsped(tok,op)); /* finish assignment */ }