#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'
};
