📄 re.h
字号:
/************************************************************* * * * Macros defining special characters. * * * *************************************************************/#define NUL '\0'#define ASCII_MIN '\001'#define ASCII_MAX '\177'/************************************************************* * * * Macros defining lexical categories. * * * *************************************************************/#define C_LIT 0 /* individual character literal */#define C_SET 1 /* character set literal */#define EOS 0 /* end-of-string */#define LITERAL 1#define OPSTAR 2#define OPALT 3#define OPOPT 4#define OPCAT 5#define LPAREN 6#define RPAREN 7/************************************************************* * * * Macros for manipulating syntax tree nodes. * * * *************************************************************/#define lit_type(x) (x->l_type)#define lit_pos(x) (x->pos)#define lit_char(x) ((x->val).c)#define lit_cset(x) ((x->val).cset)#define tok_type(x) (x->type)#define tok_val(x) (x->val)#define tok_op(x) (x->val->op)#define tok_lit(x) ((x->val->refs).lit)#define Op(x) (x->op)#define Lit(x) ((x->refs).lit)#define Child(x) ((x->refs).child)#define Lchild(x) ((x->refs).children.l_child)#define Rchild(x) ((x->refs).children.r_child)#define Nullable(x) (x->nullable)#define Firstpos(x) (x->firstposn)#define Lastpos(x) (x->lastposn)/************************************************************* * * * Macros for manipulating DFA states and sets of states. * * * *************************************************************/#define Positions(x) (x->posns)#define Final_St(x) (x->final)#define Goto(x, c) ((x->trans)[c])#define Next_State(x) ((x)->next_state)/*************************************************************/#define new_node(x) malloc(sizeof(*x))typedef struct { /* character range literals */ char low_bd, hi_bd; } *Ch_Range;typedef struct ch_set { /* character set literals */ Ch_Range elt; /* rep. as list of ranges */ struct ch_set *rest; } *Ch_Set;typedef struct { /* regular expression literal */ int pos; /* position in syntax tree */ short l_type; /* type of literal */ union { char c; /* for character literals */ Ch_Set cset; /* for character sets */ } val; } *Re_Lit, *(*Re_lit_array)[];typedef struct pnode { int posnum; struct pnode *nextpos; } *Pset, *(*Pset_array)[];typedef struct rnode { /* regular expression node */ short op; /* operator at that node */ union { Re_Lit lit; /* child is a leaf node */ struct rnode *child; /* child of unary op */ struct { struct rnode *l_child; struct rnode *r_child; } children; /* children of binary op */ } refs; short nullable; Pset firstposn, lastposn; } *Re_node;typedef struct { /* token node */ short type; Re_node val; } *Tok_node;typedef struct snode { Re_node val; int size; struct snode *next; } *Stack;typedef struct dfa_st { Pset posns; int final; /* 1 if the state is a final state, 0 o/w */ struct dfa_st *trans[128]; } *Dfa_state;typedef struct dfa_stset { Dfa_state st; struct dfa_stset *next_state; } *Dfa_state_set;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -