default: abort();
binop(void){	const char *opnd1, *opnd2;	struct t_op const *op;	opnd1 = *t_wp;	(void) t_lex(*++t_wp);	op = t_wp_op;	if ((opnd2 = *++t_wp) == (char *)0)		syntax(op->op_text, "argument expected");			switch (op->op_num) {	case STREQ:		return strcmp(opnd1, opnd2) == 0;	case STRNE:		return strcmp(opnd1, opnd2) != 0;	case STRLT:		return strcmp(opnd1, opnd2) < 0;	case STRGT:		return strcmp(opnd1, opnd2) > 0;	case INTEQ:		return getn(opnd1) == getn(opnd2);	case INTNE:		return getn(opnd1) != getn(opnd2);	case INTGE:		return getn(opnd1) >= getn(opnd2);	case INTGT:		return getn(opnd1) > getn(opnd2);	case INTLE:		return getn(opnd1) <= getn(opnd2);	case INTLT:		return getn(opnd1) < getn(opnd2);	case FILNT:		return newerf (opnd1, opnd2);	case FILOT:		return olderf (opnd1, opnd2);	case FILEQ:		return equalf (opnd1, opnd2);	default:		abort();		/* NOTREACHED */	}}