new_idx = re_dfa_add_node (dfa, alt_token, 0);
parse_reg_exp (regexp, preg, token, syntax, nest, err)     re_string_t *regexp;     regex_t *preg;     re_token_t *token;     reg_syntax_t syntax;     int nest;     reg_errcode_t *err;{  re_dfa_t *dfa = (re_dfa_t *) preg->buffer;  bin_tree_t *tree, *branch = NULL;  int new_idx;  tree = parse_branch (regexp, preg, token, syntax, nest, err);  if (BE (*err != REG_NOERROR && tree == NULL, 0))    return NULL;  while (token->type == OP_ALT)    {      re_token_t alt_token = *token;      new_idx = re_dfa_add_node (dfa, alt_token, 0);      *token = fetch_token (regexp, syntax | RE_CARET_ANCHORS_HERE);      if (token->type != OP_ALT && token->type != END_OF_RE	  && (nest == 0 || token->type != OP_CLOSE_SUBEXP))	{	  branch = parse_branch (regexp, preg, token, syntax, nest, err);	  if (BE (*err != REG_NOERROR && branch == NULL, 0))	    {	      free_bin_tree (tree);	      return NULL;	    }	}      else	branch = NULL;      tree = create_tree (tree, branch, 0, new_idx);      if (BE (new_idx == -1 || tree == NULL, 0))	{	  *err = REG_ESPACE;	  return NULL;	}      dfa->has_plural_match = 1;    }  return tree;}