⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reg_charset.h

📁 我的一个利用有限状态机的正则表达式的实现。
💻 H
字号:
#ifndef REG_CHARSET_H
#define REG_CHARSET_H

// input
#define REG_TEXT 0x01  // REG_TEXT ::= acceptable char of regular expression
#define REG_OPER 0x02  // REG_OPER ::= operator of regulare expression
#define REG_DIGIT 0x05
#define REG_ALPHABET 0x09
#define REG_WILDCHAR 0x0F // that's everything !! XD
#define REG_HEX 0x10
#define REG_OCT 0x20

// ctrl
#define REG_ESCAPE 0x10
#define LEFT_JOIN 0x20 // if this operator is left join, other wise it is right join ( default ).
#define PAIR_MARK 0x40  // char with the flag might leads/ends an parenthese pair
#define END_MARK 0x80   // char with the flag might be a end of sub expression

// end mask
#define END_BY_PAREN   0x010000
#define END_BY_BRACKET  0x020000
#define END_BY_BRACE   0x040000

// range
#define REG_RANGE_INPUT 0x01000000

#define RPAREN ( PAIR_MARK | REG_OPER | END_MARK ) // right parentheses
#define LPAREN ( PAIR_MARK | REG_OPER ) // left parentheses
#define ASTER ( REG_OPER | LEFT_JOIN )

#define BACKSLASH ( REG_ESCAPE | REG_TEXT ) // backslash is used as escape char

#define GET_REG_CHAR_TYPE(c) ( (size_t)c > 127 ? 0 : REG_CHAR_SET[c] )
#define IS_TEXT(t) ( t & REG_TEXT )
#define IS_DIGIT(t) ( t & REG_DIGIT )
#define IS_ALPHABET(t) ( t & REG_ALPHABET )
#define IS_END_MARK(t) ( t & END_MARK )
#define IS_LEFT_JOIN(t) ( t & LEFT_JOIN )
#define IS_PAIR_MARK(t) ( t & PAIR_MARK )
#define IS_OPER(t) ( t & REG_OPER )
#define IS_ESCAPE(t) ( t & REG_ESCAPE )
#define IS_WILDCHAR(t) ( ( t & REG_WILDCHAR ) == REG_WILDCHAR )

#define IS_REG_RANGE_INPUT(t) ( t & REG_RANGE_INPUT )
#define IS_HEX(t) ( t & REG_HEX )
#define IS_OCT(t) ( t & REG_OCT )

typedef unsigned long REG_CHAR_TYPE;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -