if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen) {  re_token_t token2; (void) peek_token_bracket (&token2, regexp, syntax); if (token2.type != OP_CLOSE_BRACKET)  return REG_ERANGE; }
parse_bracket_element (elem, regexp, token, token_len, dfa, syntax)     bracket_elem_t *elem;     re_string_t *regexp;     re_token_t *token;     int token_len;     re_dfa_t *dfa;     reg_syntax_t syntax;{#ifdef RE_ENABLE_I18N  int cur_char_size;  cur_char_size = re_string_char_size_at (regexp, re_string_cur_idx (regexp));  if (cur_char_size > 1)    {      elem->type = MB_CHAR;      elem->opr.wch = re_string_wchar_at (regexp, re_string_cur_idx (regexp));      re_string_skip_bytes (regexp, cur_char_size);      return REG_NOERROR;    }#endif /* RE_ENABLE_I18N */  re_string_skip_bytes (regexp, token_len); /* Skip a token.  */  if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS      || token->type == OP_OPEN_EQUIV_CLASS)    return parse_bracket_symbol (elem, regexp, token);  elem->type = SB_CHAR;  elem->opr.ch = token->opr.c;  return REG_NOERROR;}