/* Copyright (C) 1992 by Thomas Glen Smith. All Rights Reserved. */ /* aplpnum - APL2 V1.0.0 *********************************************** * Called from aplparsf when the current character is potentially the * * start of a numeric constant. * ***********************************************************************/ #define INCLUDES APLMEM+APLTOKEN+APLCB #include "includes.h" void aplpnum(cur,sp,spend) Apltoken cur; char *sp[]; /* pointer to pointer to string being parsed */ char *spend; /* pointer to after end of string */ { Vector; extern int aplerr; Aplcb concb; char *s; int i,j; s = sp[0] - 1; /* point to possible start of numeric constant(s) */ concb = vector(&s,spend,1); /* arg #3=0 for APL, 1 for APL2 */ if (concb == NULL) return; /* no constant found */ if (0 == concb->aplcount) { endoper(concb); /* no constant found */ return; } if (1 == concb->aplcount) { concb->apldim = NULL; /* it'll get freed later - the APLCB */ /* and the dimension array are obtained */ /* as a single unit of memory. */ concb->aplrank = 0; /* make it a scalar */ } cur->token_code = VECTOR_TOKEN; /* indicate constant found */ cur->token_ptr.token_vector = concb; /* save aplcb pointer */ sp[0] = s; /* update text pointer */ }