github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/third_party/stdlib/sre_constants.py (about) 1 # 2 # Secret Labs' Regular Expression Engine 3 # 4 # various symbols used by the regular expression engine. 5 # run this script to update the _sre include files! 6 # 7 # Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved. 8 # 9 # See the sre.py file for information on usage and redistribution. 10 # 11 12 """Internal support module for sre""" 13 __all__ = [ 14 'ANY', 'ANY_ALL', 'ASSERT', 'ASSERT_NOT', 'AT', 'ATCODES', 'AT_BEGINNING', 15 'AT_BEGINNING_LINE', 'AT_BEGINNING_STRING', 'AT_BOUNDARY', 'AT_END', 16 'AT_END_LINE', 'AT_END_STRING', 'AT_LOCALE', 'AT_LOC_BOUNDARY', 17 'AT_LOC_NON_BOUNDARY', 'AT_MULTILINE', 'AT_NON_BOUNDARY', 'AT_UNICODE', 18 'AT_UNI_BOUNDARY', 'AT_UNI_NON_BOUNDARY', 'BIGCHARSET', 'BRANCH', 'CALL', 19 'CATEGORY', 'CATEGORY_DIGIT', 'CATEGORY_LINEBREAK', 'CATEGORY_LOC_NOT_WORD', 20 'CATEGORY_LOC_WORD', 'CATEGORY_NOT_DIGIT', 'CATEGORY_NOT_LINEBREAK', 21 'CATEGORY_NOT_SPACE', 'CATEGORY_NOT_WORD', 'CATEGORY_SPACE', 22 'CATEGORY_UNI_DIGIT', 'CATEGORY_UNI_LINEBREAK', 'CATEGORY_UNI_NOT_DIGIT', 23 'CATEGORY_UNI_NOT_LINEBREAK', 'CATEGORY_UNI_NOT_SPACE', 24 'CATEGORY_UNI_NOT_WORD', 'CATEGORY_UNI_SPACE', 'CATEGORY_UNI_WORD', 25 'CATEGORY_WORD', 'CHARSET', 'CHCODES', 'CH_LOCALE', 'CH_UNICODE', 'FAILURE', 26 'GROUPREF', 'GROUPREF_EXISTS', 'GROUPREF_IGNORE', 'IN', 'INFO', 'IN_IGNORE', 27 'JUMP', 'LITERAL', 'LITERAL_IGNORE', 'MAGIC', 'MARK', 'MAXREPEAT', 28 'MAX_REPEAT', 'MAX_UNTIL', 'MIN_REPEAT', 'MIN_REPEAT_ONE', 'MIN_UNTIL', 29 'NEGATE', 'NOT_LITERAL', 'NOT_LITERAL_IGNORE', 'OPCODES', 'OP_IGNORE', 30 'RANGE', 'REPEAT', 'REPEAT_ONE', 'SRE_FLAG_DOTALL', 'SRE_FLAG_IGNORECASE', 31 'SRE_FLAG_LOCALE', 'SRE_FLAG_MULTILINE', 'SRE_FLAG_TEMPLATE', 32 'SRE_FLAG_UNICODE', 'SRE_FLAG_VERBOSE', 'SRE_INFO_CHARSET', 33 'SRE_INFO_LITERAL', 'SRE_INFO_PREFIX', 'SUBPATTERN', 'SUCCESS', 34 'SRE_FLAG_DEBUG', 'MAXCODE', 'error' 35 ] 36 37 # update when constants are added or removed 38 39 MAGIC = 20031017 40 41 MAXCODE = 65535 42 43 # try: 44 # from _sre import MAXREPEAT 45 # except ImportError: 46 # import _sre 47 # MAXREPEAT = _sre.MAXREPEAT = 65535 48 MAXREPEAT = 65535 49 50 # SRE standard exception (access as sre.error) 51 # should this really be here? 52 53 class error(Exception): 54 pass 55 56 # operators 57 58 FAILURE = "failure" 59 SUCCESS = "success" 60 61 ANY = "any" 62 ANY_ALL = "any_all" 63 ASSERT = "assert" 64 ASSERT_NOT = "assert_not" 65 AT = "at" 66 BIGCHARSET = "bigcharset" 67 BRANCH = "branch" 68 CALL = "call" 69 CATEGORY = "category" 70 CHARSET = "charset" 71 GROUPREF = "groupref" 72 GROUPREF_IGNORE = "groupref_ignore" 73 GROUPREF_EXISTS = "groupref_exists" 74 IN = "in" 75 IN_IGNORE = "in_ignore" 76 INFO = "info" 77 JUMP = "jump" 78 LITERAL = "literal" 79 LITERAL_IGNORE = "literal_ignore" 80 MARK = "mark" 81 MAX_REPEAT = "max_repeat" 82 MAX_UNTIL = "max_until" 83 MIN_REPEAT = "min_repeat" 84 MIN_UNTIL = "min_until" 85 NEGATE = "negate" 86 NOT_LITERAL = "not_literal" 87 NOT_LITERAL_IGNORE = "not_literal_ignore" 88 RANGE = "range" 89 REPEAT = "repeat" 90 REPEAT_ONE = "repeat_one" 91 SUBPATTERN = "subpattern" 92 MIN_REPEAT_ONE = "min_repeat_one" 93 94 # positions 95 AT_BEGINNING = "at_beginning" 96 AT_BEGINNING_LINE = "at_beginning_line" 97 AT_BEGINNING_STRING = "at_beginning_string" 98 AT_BOUNDARY = "at_boundary" 99 AT_NON_BOUNDARY = "at_non_boundary" 100 AT_END = "at_end" 101 AT_END_LINE = "at_end_line" 102 AT_END_STRING = "at_end_string" 103 AT_LOC_BOUNDARY = "at_loc_boundary" 104 AT_LOC_NON_BOUNDARY = "at_loc_non_boundary" 105 AT_UNI_BOUNDARY = "at_uni_boundary" 106 AT_UNI_NON_BOUNDARY = "at_uni_non_boundary" 107 108 # categories 109 CATEGORY_DIGIT = "category_digit" 110 CATEGORY_NOT_DIGIT = "category_not_digit" 111 CATEGORY_SPACE = "category_space" 112 CATEGORY_NOT_SPACE = "category_not_space" 113 CATEGORY_WORD = "category_word" 114 CATEGORY_NOT_WORD = "category_not_word" 115 CATEGORY_LINEBREAK = "category_linebreak" 116 CATEGORY_NOT_LINEBREAK = "category_not_linebreak" 117 CATEGORY_LOC_WORD = "category_loc_word" 118 CATEGORY_LOC_NOT_WORD = "category_loc_not_word" 119 CATEGORY_UNI_DIGIT = "category_uni_digit" 120 CATEGORY_UNI_NOT_DIGIT = "category_uni_not_digit" 121 CATEGORY_UNI_SPACE = "category_uni_space" 122 CATEGORY_UNI_NOT_SPACE = "category_uni_not_space" 123 CATEGORY_UNI_WORD = "category_uni_word" 124 CATEGORY_UNI_NOT_WORD = "category_uni_not_word" 125 CATEGORY_UNI_LINEBREAK = "category_uni_linebreak" 126 CATEGORY_UNI_NOT_LINEBREAK = "category_uni_not_linebreak" 127 128 OPCODES = [ 129 130 # failure=0 success=1 (just because it looks better that way :-) 131 FAILURE, SUCCESS, 132 133 ANY, ANY_ALL, 134 ASSERT, ASSERT_NOT, 135 AT, 136 BRANCH, 137 CALL, 138 CATEGORY, 139 CHARSET, BIGCHARSET, 140 GROUPREF, GROUPREF_EXISTS, GROUPREF_IGNORE, 141 IN, IN_IGNORE, 142 INFO, 143 JUMP, 144 LITERAL, LITERAL_IGNORE, 145 MARK, 146 MAX_UNTIL, 147 MIN_UNTIL, 148 NOT_LITERAL, NOT_LITERAL_IGNORE, 149 NEGATE, 150 RANGE, 151 REPEAT, 152 REPEAT_ONE, 153 SUBPATTERN, 154 MIN_REPEAT_ONE 155 156 ] 157 158 ATCODES = [ 159 AT_BEGINNING, AT_BEGINNING_LINE, AT_BEGINNING_STRING, AT_BOUNDARY, 160 AT_NON_BOUNDARY, AT_END, AT_END_LINE, AT_END_STRING, 161 AT_LOC_BOUNDARY, AT_LOC_NON_BOUNDARY, AT_UNI_BOUNDARY, 162 AT_UNI_NON_BOUNDARY 163 ] 164 165 CHCODES = [ 166 CATEGORY_DIGIT, CATEGORY_NOT_DIGIT, CATEGORY_SPACE, 167 CATEGORY_NOT_SPACE, CATEGORY_WORD, CATEGORY_NOT_WORD, 168 CATEGORY_LINEBREAK, CATEGORY_NOT_LINEBREAK, CATEGORY_LOC_WORD, 169 CATEGORY_LOC_NOT_WORD, CATEGORY_UNI_DIGIT, CATEGORY_UNI_NOT_DIGIT, 170 CATEGORY_UNI_SPACE, CATEGORY_UNI_NOT_SPACE, CATEGORY_UNI_WORD, 171 CATEGORY_UNI_NOT_WORD, CATEGORY_UNI_LINEBREAK, 172 CATEGORY_UNI_NOT_LINEBREAK 173 ] 174 175 def makedict(list): 176 d = {} 177 i = 0 178 for item in list: 179 d[item] = i 180 i = i + 1 181 return d 182 183 OPCODES = makedict(OPCODES) 184 ATCODES = makedict(ATCODES) 185 CHCODES = makedict(CHCODES) 186 187 # replacement operations for "ignore case" mode 188 OP_IGNORE = { 189 GROUPREF: GROUPREF_IGNORE, 190 IN: IN_IGNORE, 191 LITERAL: LITERAL_IGNORE, 192 NOT_LITERAL: NOT_LITERAL_IGNORE 193 } 194 195 AT_MULTILINE = { 196 AT_BEGINNING: AT_BEGINNING_LINE, 197 AT_END: AT_END_LINE 198 } 199 200 AT_LOCALE = { 201 AT_BOUNDARY: AT_LOC_BOUNDARY, 202 AT_NON_BOUNDARY: AT_LOC_NON_BOUNDARY 203 } 204 205 AT_UNICODE = { 206 AT_BOUNDARY: AT_UNI_BOUNDARY, 207 AT_NON_BOUNDARY: AT_UNI_NON_BOUNDARY 208 } 209 210 CH_LOCALE = { 211 CATEGORY_DIGIT: CATEGORY_DIGIT, 212 CATEGORY_NOT_DIGIT: CATEGORY_NOT_DIGIT, 213 CATEGORY_SPACE: CATEGORY_SPACE, 214 CATEGORY_NOT_SPACE: CATEGORY_NOT_SPACE, 215 CATEGORY_WORD: CATEGORY_LOC_WORD, 216 CATEGORY_NOT_WORD: CATEGORY_LOC_NOT_WORD, 217 CATEGORY_LINEBREAK: CATEGORY_LINEBREAK, 218 CATEGORY_NOT_LINEBREAK: CATEGORY_NOT_LINEBREAK 219 } 220 221 CH_UNICODE = { 222 CATEGORY_DIGIT: CATEGORY_UNI_DIGIT, 223 CATEGORY_NOT_DIGIT: CATEGORY_UNI_NOT_DIGIT, 224 CATEGORY_SPACE: CATEGORY_UNI_SPACE, 225 CATEGORY_NOT_SPACE: CATEGORY_UNI_NOT_SPACE, 226 CATEGORY_WORD: CATEGORY_UNI_WORD, 227 CATEGORY_NOT_WORD: CATEGORY_UNI_NOT_WORD, 228 CATEGORY_LINEBREAK: CATEGORY_UNI_LINEBREAK, 229 CATEGORY_NOT_LINEBREAK: CATEGORY_UNI_NOT_LINEBREAK 230 } 231 232 # flags 233 SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking) 234 SRE_FLAG_IGNORECASE = 2 # case insensitive 235 SRE_FLAG_LOCALE = 4 # honour system locale 236 SRE_FLAG_MULTILINE = 8 # treat target as multiline string 237 SRE_FLAG_DOTALL = 16 # treat target as a single string 238 SRE_FLAG_UNICODE = 32 # use unicode locale 239 SRE_FLAG_VERBOSE = 64 # ignore whitespace and comments 240 SRE_FLAG_DEBUG = 128 # debugging 241 242 # flags for INFO primitive 243 SRE_INFO_PREFIX = 1 # has prefix 244 SRE_INFO_LITERAL = 2 # entire pattern is literal (given by prefix) 245 SRE_INFO_CHARSET = 4 # pattern starts with character from given set 246 247 # if __name__ == "__main__": 248 # def dump(f, d, prefix): 249 # items = d.items() 250 # items.sort(key=lambda a: a[1]) 251 # for k, v in items: 252 # f.write("#define %s_%s %s\n" % (prefix, k.upper(), v)) 253 # f = open("sre_constants.h", "w") 254 # f.write("""\ 255 # /* 256 # * Secret Labs' Regular Expression Engine 257 # * 258 # * regular expression matching engine 259 # * 260 # * NOTE: This file is generated by sre_constants.py. If you need 261 # * to change anything in here, edit sre_constants.py and run it. 262 # * 263 # * Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved. 264 # * 265 # * See the _sre.c file for information on usage and redistribution. 266 # */ 267 268 # """) 269 270 # f.write("#define SRE_MAGIC %d\n" % MAGIC) 271 272 # dump(f, OPCODES, "SRE_OP") 273 # dump(f, ATCODES, "SRE") 274 # dump(f, CHCODES, "SRE") 275 276 # f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE) 277 # f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE) 278 # f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE) 279 # f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE) 280 # f.write("#define SRE_FLAG_DOTALL %d\n" % SRE_FLAG_DOTALL) 281 # f.write("#define SRE_FLAG_UNICODE %d\n" % SRE_FLAG_UNICODE) 282 # f.write("#define SRE_FLAG_VERBOSE %d\n" % SRE_FLAG_VERBOSE) 283 284 # f.write("#define SRE_INFO_PREFIX %d\n" % SRE_INFO_PREFIX) 285 # f.write("#define SRE_INFO_LITERAL %d\n" % SRE_INFO_LITERAL) 286 # f.write("#define SRE_INFO_CHARSET %d\n" % SRE_INFO_CHARSET) 287 288 # f.close() 289 # print "done"