#define B 0100000 struct tab { int input; int lexval; int retval; } tab[] = { /* * one of a kind */ ':', unk,lpar, '"', unk,rpar, ';', unk,lbkt, '\'', unk,rbkt, '/', COM,com, 0200 , COM0,com0, '?', EXD,com, 0201 , EXD0,com0, 'K', unk,strng, 'J', unk,null, '.', IPROD,dot, 'L', QUAD,quad, 0202 , QQUAD,quad, 0203 , CQUAD,quad, '<', unk,semi, '>', unk,cln, 0204 , COMNT,comnt, 'C', COMNT,comnt, ']', BRAN0,tran, /* * dyadic scalars * op2 op1 v (dyadic op) */ '#', LT,dscal, '&', GT,dscal, '$', LE,dscal, '^', GE,dscal, '%', EQ,dscal, '*', NE,dscal, ')', AND,dscal, '(', OR,dscal, 0205 , NAND,dscal, 0206 , NOR,dscal, /* * monadic or dyadic scalars * op2 op1 v (dyadic op) * op1 v+1 (monadic op) */ '-', ADD,mdscal, '_', SUB,mdscal, '=', MUL,mdscal, '+', DIV,mdscal, 'M', MOD,mdscal, 'D', MIN,mdscal, 'S', MAX,mdscal, 'P', PWR,mdscal, 0207 , LOG,mdscal, 'O', CIR,mdscal, 0210 , COMB,mdscal, /* * monadic * op1 v (monadic op) */ 'T', NOT,m, /* * dyadic * op2 op1 v (dyadic op) */ 'N', REP,d, 'Y', TAKE,d, 'U', DROP,d, '[', ASGN,asg, /* * monadic or dyadic * op2 op1 v (dyadic op) * op1 v+1 (monadic op) */ 'E', EPS,md, 'B', BASE,md, 'Q', DEAL,md, 'R', DRHO,md, 'I', DIOT,md, 0211 , ROT0,md, 0212 , DTRN,md, 0213 , DIBM,md, 0214 , DDOM,md, /* * monadic with optional subscript * op1 v (monadic op) * op1 sub v+1 (subscripted monadic op) */ 0215 , GDU,msub, 0216 , GDD,msub, /* * dyadic with optional subscript * op2 op1 v (dyadic op) * op2 op1 sub v+1 (subscripted dyadic op) */ /* * monadic or dyadic with optional subscript * op2 op1 v (dyadic op) * op1 v+1 (monadic op) * op2 op1 sub v+2 (subscripted dyadic op) * op1 sub v+3 (subscripted monadic op) */ 0217 , ROT,mdsub, ',', CAT,mdsub, /* * end of list */ 0 }; int comtab[] = { "ascii", comnull, ASCII, "apl", comnull, APL, "clear", comnull, CLEAR, "continue", comnull, CONTIN, "copy", comnam, COPY, "csh", comnull, CSH, "debug", comnull, DEBUG, "digits", comexpr, DIGITS, "drop", comnam, DROPC, "edit", comnam, ED_IT, "ex", comnam, EX_IT, "erase", comnam, ERASE, "fns", comnull, FNS, "fuzz", comexpr, FUZZ, "lib", comnull, LIB, "load", comnam, LOAD, "off", comnull, OFF, "origin", comexpr, ORIGIN, "read", comnam, READ, "save", comnam, SAVE, "vars", comnull, VARS, "vi", comnam, EX_VI, "width", comexpr, WIDTH, #ifdef SOMED "symbols", comnull, SYMBOLS, #endif 0, unk }; struct charbox chartab[] = { '/','_', '?','_', 'K','L', 'L','O', 'C','J', ')','T', '(','T', 'O','P', '.','K', 'O','_', '?','O', 'B','N', '+','L', 'H','M', 'G','M', 'M','O', 'F','a', 'F','b', 'F','c', 'F','d', 'F','e', 'F','f', 'F','g', 'F','h', 'F','i', 'F','j', 'F','k', 'F','l', 'F','m', 'F','n', 'F','o', 'F','p', 'F','q', 'F','r', 'F','s', 'F','t', 'F','u', 'F','v', 'F','w', 'F','x', 'F','y', 'F','z' };