BSD 3 development
[unix-history] / usr / src / cmd / apl / tab.c
#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,
"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'
};