Ruby 1.9.3p327(2012-11-10revision37606)
Data Structures | Defines | Typedefs | Functions
regparse.h File Reference
#include "regint.h"
Include dependency graph for regparse.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  StrNode
struct  QtfrNode
struct  EncloseNode
struct  UnsetAddr
struct  UnsetAddrList
struct  CallNode
struct  BRefNode
struct  AnchorNode
struct  ConsAltNode
struct  CtypeNode
struct  _Node
struct  ScanEnv
struct  GroupNumRemap

Defines

#define NT_STR   0
#define NT_CCLASS   1
#define NT_CTYPE   2
#define NT_CANY   3
#define NT_BREF   4
#define NT_QTFR   5
#define NT_ENCLOSE   6
#define NT_ANCHOR   7
#define NT_LIST   8
#define NT_ALT   9
#define NT_CALL   10
#define NTYPE2BIT(type)   (1<<(type))
#define BIT_NT_STR   NTYPE2BIT(NT_STR)
#define BIT_NT_CCLASS   NTYPE2BIT(NT_CCLASS)
#define BIT_NT_CTYPE   NTYPE2BIT(NT_CTYPE)
#define BIT_NT_CANY   NTYPE2BIT(NT_CANY)
#define BIT_NT_BREF   NTYPE2BIT(NT_BREF)
#define BIT_NT_QTFR   NTYPE2BIT(NT_QTFR)
#define BIT_NT_ENCLOSE   NTYPE2BIT(NT_ENCLOSE)
#define BIT_NT_ANCHOR   NTYPE2BIT(NT_ANCHOR)
#define BIT_NT_LIST   NTYPE2BIT(NT_LIST)
#define BIT_NT_ALT   NTYPE2BIT(NT_ALT)
#define BIT_NT_CALL   NTYPE2BIT(NT_CALL)
#define IS_NODE_TYPE_SIMPLE(type)
#define NTYPE(node)   ((node)->u.base.type)
#define SET_NTYPE(node, ntype)   (node)->u.base.type = (ntype)
#define NSTR(node)   (&((node)->u.str))
#define NCCLASS(node)   (&((node)->u.cclass))
#define NCTYPE(node)   (&((node)->u.ctype))
#define NBREF(node)   (&((node)->u.bref))
#define NQTFR(node)   (&((node)->u.qtfr))
#define NENCLOSE(node)   (&((node)->u.enclose))
#define NANCHOR(node)   (&((node)->u.anchor))
#define NCONS(node)   (&((node)->u.cons))
#define NCALL(node)   (&((node)->u.call))
#define NCAR(node)   (NCONS(node)->car)
#define NCDR(node)   (NCONS(node)->cdr)
#define ANCHOR_ANYCHAR_STAR_MASK   (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)
#define ANCHOR_END_BUF_MASK   (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)
#define ENCLOSE_MEMORY   (1<<0)
#define ENCLOSE_OPTION   (1<<1)
#define ENCLOSE_STOP_BACKTRACK   (1<<2)
#define NODE_STR_MARGIN   16
#define NODE_STR_BUF_SIZE   24
#define NODE_BACKREFS_SIZE   6
#define NSTR_RAW   (1<<0)
#define NSTR_AMBIG   (1<<1)
#define NSTR_DONT_GET_OPT_INFO   (1<<2)
#define NSTRING_LEN(node)   (OnigDistance)((node)->u.str.end - (node)->u.str.s)
#define NSTRING_SET_RAW(node)   (node)->u.str.flag |= NSTR_RAW
#define NSTRING_CLEAR_RAW(node)   (node)->u.str.flag &= ~NSTR_RAW
#define NSTRING_SET_AMBIG(node)   (node)->u.str.flag |= NSTR_AMBIG
#define NSTRING_SET_DONT_GET_OPT_INFO(node)   (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO
#define NSTRING_IS_RAW(node)   (((node)->u.str.flag & NSTR_RAW) != 0)
#define NSTRING_IS_AMBIG(node)   (((node)->u.str.flag & NSTR_AMBIG) != 0)
#define NSTRING_IS_DONT_GET_OPT_INFO(node)   (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0)
#define BACKREFS_P(br)   (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);
#define NQ_TARGET_ISNOT_EMPTY   0
#define NQ_TARGET_IS_EMPTY   1
#define NQ_TARGET_IS_EMPTY_MEM   2
#define NQ_TARGET_IS_EMPTY_REC   3
#define NST_MIN_FIXED   (1<<0)
#define NST_MAX_FIXED   (1<<1)
#define NST_CLEN_FIXED   (1<<2)
#define NST_MARK1   (1<<3)
#define NST_MARK2   (1<<4)
#define NST_MEM_BACKREFED   (1<<5)
#define NST_STOP_BT_SIMPLE_REPEAT   (1<<6)
#define NST_RECURSION   (1<<7)
#define NST_CALLED   (1<<8)
#define NST_ADDR_FIXED   (1<<9)
#define NST_NAMED_GROUP   (1<<10)
#define NST_NAME_REF   (1<<11)
#define NST_IN_REPEAT   (1<<12)
#define NST_NEST_LEVEL   (1<<13)
#define NST_BY_NUMBER   (1<<14)
#define SET_ENCLOSE_STATUS(node, f)   (node)->u.enclose.state |= (f)
#define CLEAR_ENCLOSE_STATUS(node, f)   (node)->u.enclose.state &= ~(f)
#define IS_ENCLOSE_CALLED(en)   (((en)->state & NST_CALLED) != 0)
#define IS_ENCLOSE_ADDR_FIXED(en)   (((en)->state & NST_ADDR_FIXED) != 0)
#define IS_ENCLOSE_RECURSION(en)   (((en)->state & NST_RECURSION) != 0)
#define IS_ENCLOSE_MARK1(en)   (((en)->state & NST_MARK1) != 0)
#define IS_ENCLOSE_MARK2(en)   (((en)->state & NST_MARK2) != 0)
#define IS_ENCLOSE_MIN_FIXED(en)   (((en)->state & NST_MIN_FIXED) != 0)
#define IS_ENCLOSE_MAX_FIXED(en)   (((en)->state & NST_MAX_FIXED) != 0)
#define IS_ENCLOSE_CLEN_FIXED(en)   (((en)->state & NST_CLEN_FIXED) != 0)
#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(en)   (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0)
#define IS_ENCLOSE_NAMED_GROUP(en)   (((en)->state & NST_NAMED_GROUP) != 0)
#define SET_CALL_RECURSION(node)   (node)->u.call.state |= NST_RECURSION
#define IS_CALL_RECURSION(cn)   (((cn)->state & NST_RECURSION) != 0)
#define IS_CALL_NAME_REF(cn)   (((cn)->state & NST_NAME_REF) != 0)
#define IS_BACKREF_NAME_REF(bn)   (((bn)->state & NST_NAME_REF) != 0)
#define IS_BACKREF_NEST_LEVEL(bn)   (((bn)->state & NST_NEST_LEVEL) != 0)
#define IS_QUANTIFIER_IN_REPEAT(qn)   (((qn)->state & NST_IN_REPEAT) != 0)
#define IS_QUANTIFIER_BY_NUMBER(qn)   (((qn)->state & NST_BY_NUMBER) != 0)
#define CALLNODE_REFNUM_UNDEF   -1
#define NULL_NODE   ((Node* )0)
#define SCANENV_MEMNODES_SIZE   8
#define SCANENV_MEM_NODES(senv)
#define IS_SYNTAX_OP(syn, opm)   (((syn)->op & (opm)) != 0)
#define IS_SYNTAX_OP2(syn, opm)   (((syn)->op2 & (opm)) != 0)
#define IS_SYNTAX_BV(syn, bvm)   (((syn)->behavior & (bvm)) != 0)

Typedefs

typedef struct _Node Node

Functions

int onig_renumber_name_table P_ ((regex_t *reg, GroupNumRemap *map))
int onig_strncmp P_ ((const UChar *s1, const UChar *s2, int n))
void onig_strcpy P_ ((UChar *dest, const UChar *src, const UChar *end))
void onig_scan_env_set_error_string P_ ((ScanEnv *env, int ecode, UChar *arg, UChar *arg_end))
int onig_scan_unsigned_number P_ ((UChar **src, const UChar *end, OnigEncoding enc))
void onig_reduce_nested_quantifier P_ ((Node *pnode, Node *cnode))
void onig_node_conv_to_str_node P_ ((Node *node, int raw))
int onig_node_str_cat P_ ((Node *node, const UChar *s, const UChar *end))
void onig_node_free P_ ((Node *node))
Node *onig_node_new_enclose P_ ((int type))
Node *onig_node_new_str P_ ((const UChar *s, const UChar *end))
Node *onig_node_new_list P_ ((Node *left, Node *right))
Node *onig_node_list_add P_ ((Node *list, Node *x))
int onig_free_node_list P_ ((void))
int onig_names_free P_ ((regex_t *reg))
int onig_parse_make_tree P_ ((Node **root, const UChar *pattern, const UChar *end, regex_t *reg, ScanEnv *env))

Define Documentation

#define ANCHOR_ANYCHAR_STAR_MASK   (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)

Definition at line 88 of file regparse.h.

Referenced by optimize_node_left().

#define ANCHOR_END_BUF_MASK   (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)

Definition at line 89 of file regparse.h.

#define BACKREFS_P (   br)    (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);
#define BIT_NT_ALT   NTYPE2BIT(NT_ALT)

Definition at line 63 of file regparse.h.

#define BIT_NT_ANCHOR   NTYPE2BIT(NT_ANCHOR)

Definition at line 61 of file regparse.h.

#define BIT_NT_BREF   NTYPE2BIT(NT_BREF)

Definition at line 58 of file regparse.h.

#define BIT_NT_CALL   NTYPE2BIT(NT_CALL)

Definition at line 64 of file regparse.h.

#define BIT_NT_CANY   NTYPE2BIT(NT_CANY)

Definition at line 57 of file regparse.h.

#define BIT_NT_CCLASS   NTYPE2BIT(NT_CCLASS)

Definition at line 55 of file regparse.h.

#define BIT_NT_CTYPE   NTYPE2BIT(NT_CTYPE)

Definition at line 56 of file regparse.h.

#define BIT_NT_ENCLOSE   NTYPE2BIT(NT_ENCLOSE)

Definition at line 60 of file regparse.h.

#define BIT_NT_LIST   NTYPE2BIT(NT_LIST)

Definition at line 62 of file regparse.h.

#define BIT_NT_QTFR   NTYPE2BIT(NT_QTFR)

Definition at line 59 of file regparse.h.

#define BIT_NT_STR   NTYPE2BIT(NT_STR)

Definition at line 54 of file regparse.h.

#define CALLNODE_REFNUM_UNDEF   -1

Definition at line 162 of file regparse.h.

#define CLEAR_ENCLOSE_STATUS (   node,
 
)    (node)->u.enclose.state &= ~(f)
#define ENCLOSE_MEMORY   (1<<0)
#define ENCLOSE_OPTION   (1<<1)
#define ENCLOSE_STOP_BACKTRACK   (1<<2)
#define IS_BACKREF_NAME_REF (   bn)    (((bn)->state & NST_NAME_REF) != 0)

Definition at line 157 of file regparse.h.

Referenced by numbered_ref_check(), and renumber_node_backref().

#define IS_BACKREF_NEST_LEVEL (   bn)    (((bn)->state & NST_NEST_LEVEL) != 0)

Definition at line 158 of file regparse.h.

Referenced by compile_length_tree(), compile_tree(), and setup_tree().

#define IS_CALL_NAME_REF (   cn)    (((cn)->state & NST_NAME_REF) != 0)

Definition at line 156 of file regparse.h.

#define IS_CALL_RECURSION (   cn)    (((cn)->state & NST_RECURSION) != 0)
#define IS_ENCLOSE_ADDR_FIXED (   en)    (((en)->state & NST_ADDR_FIXED) != 0)

Definition at line 143 of file regparse.h.

Referenced by unset_addr_list_fix().

#define IS_ENCLOSE_CALLED (   en)    (((en)->state & NST_CALLED) != 0)
#define IS_ENCLOSE_CLEN_FIXED (   en)    (((en)->state & NST_CLEN_FIXED) != 0)

Definition at line 149 of file regparse.h.

Referenced by get_char_length_tree1().

#define IS_ENCLOSE_MARK1 (   en)    (((en)->state & NST_MARK1) != 0)

Definition at line 145 of file regparse.h.

Referenced by subexp_inf_recursive_check(), and subexp_recursive_check().

#define IS_ENCLOSE_MARK2 (   en)    (((en)->state & NST_MARK2) != 0)

Definition at line 146 of file regparse.h.

Referenced by subexp_inf_recursive_check(), and subexp_recursive_check().

#define IS_ENCLOSE_MAX_FIXED (   en)    (((en)->state & NST_MAX_FIXED) != 0)

Definition at line 148 of file regparse.h.

Referenced by get_max_match_length(), and optimize_node_left().

#define IS_ENCLOSE_MIN_FIXED (   en)    (((en)->state & NST_MIN_FIXED) != 0)

Definition at line 147 of file regparse.h.

Referenced by get_min_match_length(), and optimize_node_left().

#define IS_ENCLOSE_NAMED_GROUP (   en)    (((en)->state & NST_NAMED_GROUP) != 0)

Definition at line 152 of file regparse.h.

Referenced by noname_disable_map().

#define IS_ENCLOSE_RECURSION (   en)    (((en)->state & NST_RECURSION) != 0)
#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT (   en)    (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0)

Definition at line 150 of file regparse.h.

Referenced by compile_enclose_node(), and compile_length_enclose_node().

#define IS_NODE_TYPE_SIMPLE (   type)
Value:

Definition at line 66 of file regparse.h.

Referenced by next_setup(), and setup_tree().

#define IS_QUANTIFIER_BY_NUMBER (   qn)    (((qn)->state & NST_BY_NUMBER) != 0)

Definition at line 160 of file regparse.h.

Referenced by set_quantifier().

#define IS_QUANTIFIER_IN_REPEAT (   qn)    (((qn)->state & NST_IN_REPEAT) != 0)

Definition at line 159 of file regparse.h.

Referenced by compile_range_repeat_node().

#define IS_SYNTAX_BV (   syn,
  bvm 
)    (((syn)->behavior & (bvm)) != 0)
#define IS_SYNTAX_OP (   syn,
  opm 
)    (((syn)->op & (opm)) != 0)
#define IS_SYNTAX_OP2 (   syn,
  opm 
)    (((syn)->op2 & (opm)) != 0)
#define NANCHOR (   node)    (&((node)->u.anchor))
#define NBREF (   node)    (&((node)->u.bref))
#define NCALL (   node)    (&((node)->u.call))
#define NCAR (   node)    (NCONS(node)->car)
#define NCCLASS (   node)    (&((node)->u.cclass))
#define NCDR (   node)    (NCONS(node)->cdr)
#define NCONS (   node)    (&((node)->u.cons))

Definition at line 80 of file regparse.h.

#define NCTYPE (   node)    (&((node)->u.ctype))

Definition at line 75 of file regparse.h.

Referenced by compile_tree(), is_not_included(), node_new_ctype(), and optimize_node_left().

#define NENCLOSE (   node)    (&((node)->u.enclose))
#define NODE_BACKREFS_SIZE   6

Definition at line 97 of file regparse.h.

Referenced by node_new_backref().

#define NODE_STR_BUF_SIZE   24

Definition at line 96 of file regparse.h.

Referenced by onig_node_str_cat().

#define NODE_STR_MARGIN   16

Definition at line 95 of file regparse.h.

Referenced by onig_node_str_cat().

#define NQ_TARGET_IS_EMPTY   1

Definition at line 118 of file regparse.h.

Referenced by compile_tree_empty_check(), and setup_tree().

#define NQ_TARGET_IS_EMPTY_MEM   2

Definition at line 119 of file regparse.h.

Referenced by compile_tree_empty_check(), and quantifiers_memory_node_info().

#define NQ_TARGET_IS_EMPTY_REC   3

Definition at line 120 of file regparse.h.

Referenced by compile_tree_empty_check(), and quantifiers_memory_node_info().

#define NQ_TARGET_ISNOT_EMPTY   0

Definition at line 117 of file regparse.h.

Referenced by node_new_quantifier().

#define NQTFR (   node)    (&((node)->u.qtfr))
#define NST_ADDR_FIXED   (1<<9)

Definition at line 132 of file regparse.h.

Referenced by compile_enclose_node().

#define NST_BY_NUMBER   (1<<14)

Definition at line 137 of file regparse.h.

Referenced by node_new_quantifier().

#define NST_CALLED   (1<<8)

Definition at line 131 of file regparse.h.

Referenced by setup_subexp_call().

#define NST_CLEN_FIXED   (1<<2)

Definition at line 125 of file regparse.h.

Referenced by get_char_length_tree1().

#define NST_IN_REPEAT   (1<<12)

Definition at line 135 of file regparse.h.

Referenced by setup_tree().

#define NST_MARK1   (1<<3)

Definition at line 126 of file regparse.h.

Referenced by subexp_inf_recursive_check_trav(), and subexp_recursive_check_trav().

#define NST_MARK2   (1<<4)

Definition at line 127 of file regparse.h.

Referenced by subexp_inf_recursive_check(), and subexp_recursive_check().

#define NST_MAX_FIXED   (1<<1)

Definition at line 124 of file regparse.h.

Referenced by get_max_match_length().

#define NST_MEM_BACKREFED   (1<<5)

Definition at line 128 of file regparse.h.

Referenced by setup_tree().

#define NST_MIN_FIXED   (1<<0)

Definition at line 123 of file regparse.h.

Referenced by get_min_match_length().

#define NST_NAME_REF   (1<<11)

Definition at line 134 of file regparse.h.

Referenced by node_new_backref().

#define NST_NAMED_GROUP   (1<<10)

Definition at line 133 of file regparse.h.

Referenced by node_new_enclose_memory().

#define NST_NEST_LEVEL   (1<<13)

Definition at line 136 of file regparse.h.

Referenced by node_new_backref().

#define NST_RECURSION   (1<<7)
#define NST_STOP_BT_SIMPLE_REPEAT   (1<<6)

Definition at line 129 of file regparse.h.

Referenced by next_setup(), and setup_tree().

#define NSTR (   node)    (&((node)->u.str))
#define NSTR_AMBIG   (1<<1)

Definition at line 100 of file regparse.h.

#define NSTR_DONT_GET_OPT_INFO   (1<<2)

Definition at line 101 of file regparse.h.

#define NSTR_RAW   (1<<0)

Definition at line 99 of file regparse.h.

Referenced by str_node_split_last_char().

#define NSTRING_CLEAR_RAW (   node)    (node)->u.str.flag &= ~NSTR_RAW

Definition at line 105 of file regparse.h.

Referenced by parse_exp().

#define NSTRING_IS_AMBIG (   node)    (((node)->u.str.flag & NSTR_AMBIG) != 0)
#define NSTRING_IS_DONT_GET_OPT_INFO (   node)    (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0)

Definition at line 111 of file regparse.h.

Referenced by optimize_node_left().

#define NSTRING_IS_RAW (   node)    (((node)->u.str.flag & NSTR_RAW) != 0)
#define NSTRING_LEN (   node)    (OnigDistance)((node)->u.str.end - (node)->u.str.s)

Definition at line 103 of file regparse.h.

Referenced by is_not_included(), and setup_tree().

#define NSTRING_SET_AMBIG (   node)    (node)->u.str.flag |= NSTR_AMBIG

Definition at line 106 of file regparse.h.

Referenced by expand_case_fold_make_rem_string(), and i_apply_case_fold().

#define NSTRING_SET_DONT_GET_OPT_INFO (   node)    (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO

Definition at line 107 of file regparse.h.

Referenced by expand_case_fold_make_rem_string().

#define NSTRING_SET_RAW (   node)    (node)->u.str.flag |= NSTR_RAW

Definition at line 104 of file regparse.h.

Referenced by node_new_str_raw(), and str_node_split_last_char().

#define NT_ALT   9
#define NT_ANCHOR   7
#define NT_BREF   4
#define NT_CALL   10
#define NT_CANY   3
#define NT_CCLASS   1
#define NT_CTYPE   2
#define NT_ENCLOSE   6
#define NT_LIST   8
#define NT_QTFR   5
#define NT_STR   0
#define NTYPE (   node)    ((node)->u.base.type)
#define NTYPE2BIT (   type)    (1<<(type))

Definition at line 52 of file regparse.h.

Referenced by check_type_tree().

#define NULL_NODE   ((Node* )0)

Definition at line 275 of file regparse.h.

#define SCANENV_MEM_NODES (   senv)
Value:
(IS_NOT_NULL((senv)->mem_nodes_dynamic) ? \
    (senv)->mem_nodes_dynamic : (senv)->mem_nodes_static)

Definition at line 278 of file regparse.h.

Referenced by disable_noname_group_capture(), fetch_token(), get_max_match_length(), get_min_match_length(), node_new_backref(), optimize_node_left(), scan_env_set_mem_node(), setup_subexp_call(), and setup_tree().

#define SCANENV_MEMNODES_SIZE   8

Definition at line 277 of file regparse.h.

Referenced by scan_env_add_mem_entry(), and scan_env_clear().

#define SET_CALL_RECURSION (   node)    (node)->u.call.state |= NST_RECURSION

Definition at line 154 of file regparse.h.

Referenced by subexp_recursive_check().

#define SET_ENCLOSE_STATUS (   node,
 
)    (node)->u.enclose.state |= (f)
#define SET_NTYPE (   node,
  ntype 
)    (node)->u.base.type = (ntype)

Typedef Documentation

typedef struct _Node Node

Function Documentation

int onig_renumber_name_table P_ ( (regex_t *reg, GroupNumRemap *map)  )
int onig_parse_make_tree P_ ( (Node **root, const UChar *pattern, const UChar *end, regex_t *reg, ScanEnv *env)  )
int onig_names_free P_ ( (regex_t *reg)  )
int onig_free_node_list P_ ( (void)  )
Node* onig_node_list_add P_ ( (Node *list, Node *x)  )
Node* onig_node_new_list P_ ( (Node *left, Node *right)  )
Node* onig_node_new_str P_ ( (const UChar *s, const UChar *end)  )
Node* onig_node_new_enclose P_ ( (int type )
void onig_node_free P_ ( (Node *node )
int onig_node_str_cat P_ ( (Node *node, const UChar *s, const UChar *end)  )
void onig_node_conv_to_str_node P_ ( (Node *node, int raw)  )
void onig_reduce_nested_quantifier P_ ( (Node *pnode, Node *cnode)  )
int onig_scan_unsigned_number P_ ( (UChar **src, const UChar *end, OnigEncoding enc)  )
void onig_scan_env_set_error_string P_ ( (ScanEnv *env, int ecode, UChar *arg, UChar *arg_end)  )
void onig_strcpy P_ ( (UChar *dest, const UChar *src, const UChar *end)  )
int onig_strncmp P_ ( (const UChar *s1, const UChar *s2, int n)  )