regexp
struct regexp *rxprg = rx.Compile(rxString.String());
regexp*
regexp* r;
r = (regexp*)malloc(sizeof(regexp) + fCodeSize);
regexp*
RegExp::RunMatcher(regexp* prog, const char* string) const
RegExp::Try(regexp* prog, const char* string) const
int32 RunMatcher(regexp*, const char*) const;
regexp* Compile(const char*);
regexp* Expression() const;
int32 Try(regexp*, const char*) const;
regexp* fRegExp;
parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
fetch_token (¤t_token, regexp, syntax | RE_CARET_ANCHORS_HERE);
tree = parse_reg_exp (regexp, preg, ¤t_token, syntax, 0, err);
parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
tree = parse_branch (regexp, preg, token, syntax, nest, err);
fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
branch = parse_branch (regexp, preg, token, syntax, nest, err);
parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
tree = parse_expression (regexp, preg, token, syntax, nest, err);
expr = parse_expression (regexp, preg, token, syntax, nest, err);
parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
while (!re_string_eoi (regexp)
&& !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
fetch_token (token, regexp, syntax);
tree = parse_sub_exp (regexp, preg, token, syntax, nest + 1, err);
tree = parse_bracket_exp (regexp, dfa, token, syntax, err);
fetch_token (token, regexp, syntax);
return parse_expression (regexp, preg, token, syntax, nest, err);
fetch_token (token, regexp, syntax);
tree = build_charclass_op (dfa, regexp->trans,
tree = build_charclass_op (dfa, regexp->trans,
fetch_token (token, regexp, syntax);
bin_tree_t *dup_tree = parse_dup_op (tree, regexp, dfa, token,
parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
Idx i, start, end, start_idx = re_string_cur_idx (regexp);
start = fetch_number (regexp, token, syntax);
? fetch_number (regexp, token, syntax) : -2));
re_string_set_index (regexp, start_idx);
fetch_token (token, regexp, syntax);
parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
token_len = peek_token_bracket (token, regexp, syntax);
re_string_skip_bytes (regexp, token_len); /* Skip a token. */
token_len = peek_token_bracket (token, regexp, syntax);
ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa,
token_len = peek_token_bracket (token, regexp, syntax);
re_string_skip_bytes (regexp, token_len); /* Skip '-'. */
token_len2 = peek_token_bracket (&token2, regexp, syntax);
re_string_skip_bytes (regexp, -token_len);
ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2,
token_len = peek_token_bracket (token, regexp, syntax);
*err = build_charclass (regexp->trans, sbcset,
re_string_skip_bytes (regexp, token_len); /* Skip a token. */
parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
cur_char_size = re_string_char_size_at (regexp, re_string_cur_idx (regexp));
elem->opr.wch = re_string_wchar_at (regexp, re_string_cur_idx (regexp));
re_string_skip_bytes (regexp, cur_char_size);
re_string_skip_bytes (regexp, token_len); /* Skip a token. */
return parse_bracket_symbol (elem, regexp, token);
(void) peek_token_bracket (&token2, regexp, syntax);
parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
if (re_string_eoi(regexp))
ch = re_string_fetch_byte_case (regexp);
ch = re_string_fetch_byte (regexp);
if (re_string_eoi(regexp))
if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
re_string_skip_bytes (regexp, 1);
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,
re_string_t regexp;
static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
err = re_string_construct (®exp, pattern, length, preg->translate,
re_string_destruct (®exp);
static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
dfa->str_tree = parse (®exp, preg, syntax, &err);
re_string_destruct (®exp);
re_string_t *regexp,
re_string_t *regexp,
struct regexp *rxprg = rx.Compile(rxString.String());