bin_tree_t
static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
static bin_tree_t *create_tree (re_dfa_t *dfa,
bin_tree_t *left, bin_tree_t *right,
static bin_tree_t *create_token_tree (re_dfa_t *dfa,
bin_tree_t *left, bin_tree_t *right,
static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
bin_tree_t *node, *prev;
static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
bin_tree_t *node;
bin_tree_t *prev = NULL;
optimize_subexps (void *extra, bin_tree_t *node)
lower_subexps (void *extra, bin_tree_t *node)
static bin_tree_t *
lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
bin_tree_t *body = node->left;
bin_tree_t *op, *cls, *tree1, *tree;
calc_first (void *extra, bin_tree_t *node)
calc_next (void *extra, bin_tree_t *node)
link_nfa_nodes (void *extra, bin_tree_t *node)
static bin_tree_t *
bin_tree_t *tree, *eor, *root;
static bin_tree_t *
bin_tree_t *tree, *branch = NULL;
static bin_tree_t *
bin_tree_t *tree, *expr;
bin_tree_t *newtree = create_tree (dfa, tree, expr, CONCAT);
static bin_tree_t *
bin_tree_t *tree;
bin_tree_t *mbc_remain;
bin_tree_t *tree_first, *tree_last;
bin_tree_t *dup_tree = parse_dup_op (tree, regexp, dfa, token,
static bin_tree_t *
bin_tree_t *tree;
static bin_tree_t *
parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
bin_tree_t *tree = NULL, *old_tree = NULL;
static bin_tree_t *
bin_tree_t *work_tree;
bin_tree_t *mbc_tree;
static bin_tree_t *
bin_tree_t *tree;
bin_tree_t *mbc_tree;
static bin_tree_t *
create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
static bin_tree_t *
create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
bin_tree_t *tree;
mark_opt_subexp (void *extra, bin_tree_t *node)
free_tree (void *extra, bin_tree_t *node)
static bin_tree_t *
duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
static reg_errcode_t preorder (bin_tree_t *root,
const bin_tree_t *node;
bin_tree_t *dup_root;
bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
const bin_tree_t *prev = NULL;
reg_errcode_t (fn (void *, bin_tree_t *)),
static reg_errcode_t postorder (bin_tree_t *root,
reg_errcode_t (fn (void *, bin_tree_t *)),
static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
static reg_errcode_t lower_subexps (void *extra, bin_tree_t *node);
static bin_tree_t *lower_subexp (reg_errcode_t *err, regex_t *preg,
bin_tree_t *node);
static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
static bin_tree_t *parse (re_string_t *regexp, regex_t *preg,
static bin_tree_t *parse_reg_exp (re_string_t *regexp, regex_t *preg,
static bin_tree_t *parse_branch (re_string_t *regexp, regex_t *preg,
static bin_tree_t *parse_expression (re_string_t *regexp, regex_t *preg,
static bin_tree_t *parse_sub_exp (re_string_t *regexp, regex_t *preg,
static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
struct bin_tree_t *parent;
struct bin_tree_t *left;
struct bin_tree_t *right;
struct bin_tree_t *first;
struct bin_tree_t *next;
typedef struct bin_tree_t bin_tree_t;
((1024 - sizeof (void *)) / sizeof (bin_tree_t))
bin_tree_t data[BIN_TREE_STORAGE_SIZE];
bin_tree_t *str_tree;