add: return (0);
context: relex()		/* lexical analyzer for reparse */{	register int c;	uchar cbuf[RECSIZE];	int clen, cflag;	switch (c = *prestr++) {	case '|': return OR;	case '*': return STAR;	case '+': return PLUS;	case '?': return QUEST;	case '.': return DOT;	case '\0': prestr--; return '\0';	case '^':	case '$':	case '(':	case ')':		return c;	case '\\':		if ((c = *prestr++) == 't')			c = '\t';		else if (c == 'n')			c = '\n';		else if (c == 'f')			c = '\f';		else if (c == 'r')			c = '\r';		else if (c == 'b')			c = '\b';		else if (c == '\\')			c = '\\';		else if (isdigit(c)) {			int n = c - '0';			if (isdigit(*prestr)) {				n = 8 * n + *prestr++ - '0';				if (isdigit(*prestr))					n = 8 * n + *prestr++ - '0';			}			c = n;		} /* else it's now in c */		rlxval = c;		return CHAR;	default:		rlxval = c;		return CHAR;	case '[': 		clen = 0;		if (*prestr == '^') {			cflag = 1;			prestr++;		}		else			cflag = 0;		for (;;) {			if ((c = *prestr++) == '\\') {				cbuf[clen++] = '\\';				if ((c = *prestr++) == '\0')					ERROR "nonterminated character class %s", lastre FATAL;				cbuf[clen++] = c;			} else if (c == ']') {				cbuf[clen] = 0;				rlxstr = tostring(cbuf);				if (cflag == 0)					return CCL;				else					return NCCL;			} else if (c == '\n') {				ERROR "newline in character class %s...", lastre FATAL;			} else if (c == '\0') {				ERROR "nonterminated character class %s", lastre FATAL;			} else				cbuf[clen++] = c;		}	}}