+++ /dev/null
-#\r
-# Secret Labs' Regular Expression Engine\r
-#\r
-# various symbols used by the regular expression engine.\r
-# run this script to update the _sre include files!\r
-#\r
-# Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved.\r
-#\r
-# See the sre.py file for information on usage and redistribution.\r
-#\r
-\r
-"""Internal support module for sre"""\r
-\r
-# update when constants are added or removed\r
-\r
-MAGIC = 20031017\r
-\r
-try:\r
- from _sre import MAXREPEAT\r
-except ImportError:\r
- import _sre\r
- MAXREPEAT = _sre.MAXREPEAT = 65535\r
-\r
-# SRE standard exception (access as sre.error)\r
-# should this really be here?\r
-\r
-class error(Exception):\r
- pass\r
-\r
-# operators\r
-\r
-FAILURE = "failure"\r
-SUCCESS = "success"\r
-\r
-ANY = "any"\r
-ANY_ALL = "any_all"\r
-ASSERT = "assert"\r
-ASSERT_NOT = "assert_not"\r
-AT = "at"\r
-BIGCHARSET = "bigcharset"\r
-BRANCH = "branch"\r
-CALL = "call"\r
-CATEGORY = "category"\r
-CHARSET = "charset"\r
-GROUPREF = "groupref"\r
-GROUPREF_IGNORE = "groupref_ignore"\r
-GROUPREF_EXISTS = "groupref_exists"\r
-IN = "in"\r
-IN_IGNORE = "in_ignore"\r
-INFO = "info"\r
-JUMP = "jump"\r
-LITERAL = "literal"\r
-LITERAL_IGNORE = "literal_ignore"\r
-MARK = "mark"\r
-MAX_REPEAT = "max_repeat"\r
-MAX_UNTIL = "max_until"\r
-MIN_REPEAT = "min_repeat"\r
-MIN_UNTIL = "min_until"\r
-NEGATE = "negate"\r
-NOT_LITERAL = "not_literal"\r
-NOT_LITERAL_IGNORE = "not_literal_ignore"\r
-RANGE = "range"\r
-REPEAT = "repeat"\r
-REPEAT_ONE = "repeat_one"\r
-SUBPATTERN = "subpattern"\r
-MIN_REPEAT_ONE = "min_repeat_one"\r
-\r
-# positions\r
-AT_BEGINNING = "at_beginning"\r
-AT_BEGINNING_LINE = "at_beginning_line"\r
-AT_BEGINNING_STRING = "at_beginning_string"\r
-AT_BOUNDARY = "at_boundary"\r
-AT_NON_BOUNDARY = "at_non_boundary"\r
-AT_END = "at_end"\r
-AT_END_LINE = "at_end_line"\r
-AT_END_STRING = "at_end_string"\r
-AT_LOC_BOUNDARY = "at_loc_boundary"\r
-AT_LOC_NON_BOUNDARY = "at_loc_non_boundary"\r
-AT_UNI_BOUNDARY = "at_uni_boundary"\r
-AT_UNI_NON_BOUNDARY = "at_uni_non_boundary"\r
-\r
-# categories\r
-CATEGORY_DIGIT = "category_digit"\r
-CATEGORY_NOT_DIGIT = "category_not_digit"\r
-CATEGORY_SPACE = "category_space"\r
-CATEGORY_NOT_SPACE = "category_not_space"\r
-CATEGORY_WORD = "category_word"\r
-CATEGORY_NOT_WORD = "category_not_word"\r
-CATEGORY_LINEBREAK = "category_linebreak"\r
-CATEGORY_NOT_LINEBREAK = "category_not_linebreak"\r
-CATEGORY_LOC_WORD = "category_loc_word"\r
-CATEGORY_LOC_NOT_WORD = "category_loc_not_word"\r
-CATEGORY_UNI_DIGIT = "category_uni_digit"\r
-CATEGORY_UNI_NOT_DIGIT = "category_uni_not_digit"\r
-CATEGORY_UNI_SPACE = "category_uni_space"\r
-CATEGORY_UNI_NOT_SPACE = "category_uni_not_space"\r
-CATEGORY_UNI_WORD = "category_uni_word"\r
-CATEGORY_UNI_NOT_WORD = "category_uni_not_word"\r
-CATEGORY_UNI_LINEBREAK = "category_uni_linebreak"\r
-CATEGORY_UNI_NOT_LINEBREAK = "category_uni_not_linebreak"\r
-\r
-OPCODES = [\r
-\r
- # failure=0 success=1 (just because it looks better that way :-)\r
- FAILURE, SUCCESS,\r
-\r
- ANY, ANY_ALL,\r
- ASSERT, ASSERT_NOT,\r
- AT,\r
- BRANCH,\r
- CALL,\r
- CATEGORY,\r
- CHARSET, BIGCHARSET,\r
- GROUPREF, GROUPREF_EXISTS, GROUPREF_IGNORE,\r
- IN, IN_IGNORE,\r
- INFO,\r
- JUMP,\r
- LITERAL, LITERAL_IGNORE,\r
- MARK,\r
- MAX_UNTIL,\r
- MIN_UNTIL,\r
- NOT_LITERAL, NOT_LITERAL_IGNORE,\r
- NEGATE,\r
- RANGE,\r
- REPEAT,\r
- REPEAT_ONE,\r
- SUBPATTERN,\r
- MIN_REPEAT_ONE\r
-\r
-]\r
-\r
-ATCODES = [\r
- AT_BEGINNING, AT_BEGINNING_LINE, AT_BEGINNING_STRING, AT_BOUNDARY,\r
- AT_NON_BOUNDARY, AT_END, AT_END_LINE, AT_END_STRING,\r
- AT_LOC_BOUNDARY, AT_LOC_NON_BOUNDARY, AT_UNI_BOUNDARY,\r
- AT_UNI_NON_BOUNDARY\r
-]\r
-\r
-CHCODES = [\r
- CATEGORY_DIGIT, CATEGORY_NOT_DIGIT, CATEGORY_SPACE,\r
- CATEGORY_NOT_SPACE, CATEGORY_WORD, CATEGORY_NOT_WORD,\r
- CATEGORY_LINEBREAK, CATEGORY_NOT_LINEBREAK, CATEGORY_LOC_WORD,\r
- CATEGORY_LOC_NOT_WORD, CATEGORY_UNI_DIGIT, CATEGORY_UNI_NOT_DIGIT,\r
- CATEGORY_UNI_SPACE, CATEGORY_UNI_NOT_SPACE, CATEGORY_UNI_WORD,\r
- CATEGORY_UNI_NOT_WORD, CATEGORY_UNI_LINEBREAK,\r
- CATEGORY_UNI_NOT_LINEBREAK\r
-]\r
-\r
-def makedict(list):\r
- d = {}\r
- i = 0\r
- for item in list:\r
- d[item] = i\r
- i = i + 1\r
- return d\r
-\r
-OPCODES = makedict(OPCODES)\r
-ATCODES = makedict(ATCODES)\r
-CHCODES = makedict(CHCODES)\r
-\r
-# replacement operations for "ignore case" mode\r
-OP_IGNORE = {\r
- GROUPREF: GROUPREF_IGNORE,\r
- IN: IN_IGNORE,\r
- LITERAL: LITERAL_IGNORE,\r
- NOT_LITERAL: NOT_LITERAL_IGNORE\r
-}\r
-\r
-AT_MULTILINE = {\r
- AT_BEGINNING: AT_BEGINNING_LINE,\r
- AT_END: AT_END_LINE\r
-}\r
-\r
-AT_LOCALE = {\r
- AT_BOUNDARY: AT_LOC_BOUNDARY,\r
- AT_NON_BOUNDARY: AT_LOC_NON_BOUNDARY\r
-}\r
-\r
-AT_UNICODE = {\r
- AT_BOUNDARY: AT_UNI_BOUNDARY,\r
- AT_NON_BOUNDARY: AT_UNI_NON_BOUNDARY\r
-}\r
-\r
-CH_LOCALE = {\r
- CATEGORY_DIGIT: CATEGORY_DIGIT,\r
- CATEGORY_NOT_DIGIT: CATEGORY_NOT_DIGIT,\r
- CATEGORY_SPACE: CATEGORY_SPACE,\r
- CATEGORY_NOT_SPACE: CATEGORY_NOT_SPACE,\r
- CATEGORY_WORD: CATEGORY_LOC_WORD,\r
- CATEGORY_NOT_WORD: CATEGORY_LOC_NOT_WORD,\r
- CATEGORY_LINEBREAK: CATEGORY_LINEBREAK,\r
- CATEGORY_NOT_LINEBREAK: CATEGORY_NOT_LINEBREAK\r
-}\r
-\r
-CH_UNICODE = {\r
- CATEGORY_DIGIT: CATEGORY_UNI_DIGIT,\r
- CATEGORY_NOT_DIGIT: CATEGORY_UNI_NOT_DIGIT,\r
- CATEGORY_SPACE: CATEGORY_UNI_SPACE,\r
- CATEGORY_NOT_SPACE: CATEGORY_UNI_NOT_SPACE,\r
- CATEGORY_WORD: CATEGORY_UNI_WORD,\r
- CATEGORY_NOT_WORD: CATEGORY_UNI_NOT_WORD,\r
- CATEGORY_LINEBREAK: CATEGORY_UNI_LINEBREAK,\r
- CATEGORY_NOT_LINEBREAK: CATEGORY_UNI_NOT_LINEBREAK\r
-}\r
-\r
-# flags\r
-SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking)\r
-SRE_FLAG_IGNORECASE = 2 # case insensitive\r
-SRE_FLAG_LOCALE = 4 # honour system locale\r
-SRE_FLAG_MULTILINE = 8 # treat target as multiline string\r
-SRE_FLAG_DOTALL = 16 # treat target as a single string\r
-SRE_FLAG_UNICODE = 32 # use unicode locale\r
-SRE_FLAG_VERBOSE = 64 # ignore whitespace and comments\r
-SRE_FLAG_DEBUG = 128 # debugging\r
-\r
-# flags for INFO primitive\r
-SRE_INFO_PREFIX = 1 # has prefix\r
-SRE_INFO_LITERAL = 2 # entire pattern is literal (given by prefix)\r
-SRE_INFO_CHARSET = 4 # pattern starts with character from given set\r
-\r
-if __name__ == "__main__":\r
- def dump(f, d, prefix):\r
- items = d.items()\r
- items.sort(key=lambda a: a[1])\r
- for k, v in items:\r
- f.write("#define %s_%s %s\n" % (prefix, k.upper(), v))\r
- f = open("sre_constants.h", "w")\r
- f.write("""\\r
-/*\r
- * Secret Labs' Regular Expression Engine\r
- *\r
- * regular expression matching engine\r
- *\r
- * NOTE: This file is generated by sre_constants.py. If you need\r
- * to change anything in here, edit sre_constants.py and run it.\r
- *\r
- * Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved.\r
- *\r
- * See the _sre.c file for information on usage and redistribution.\r
- */\r
-\r
-""")\r
-\r
- f.write("#define SRE_MAGIC %d\n" % MAGIC)\r
-\r
- dump(f, OPCODES, "SRE_OP")\r
- dump(f, ATCODES, "SRE")\r
- dump(f, CHCODES, "SRE")\r
-\r
- f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE)\r
- f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE)\r
- f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE)\r
- f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE)\r
- f.write("#define SRE_FLAG_DOTALL %d\n" % SRE_FLAG_DOTALL)\r
- f.write("#define SRE_FLAG_UNICODE %d\n" % SRE_FLAG_UNICODE)\r
- f.write("#define SRE_FLAG_VERBOSE %d\n" % SRE_FLAG_VERBOSE)\r
-\r
- f.write("#define SRE_INFO_PREFIX %d\n" % SRE_INFO_PREFIX)\r
- f.write("#define SRE_INFO_LITERAL %d\n" % SRE_INFO_LITERAL)\r
- f.write("#define SRE_INFO_CHARSET %d\n" % SRE_INFO_CHARSET)\r
-\r
- f.close()\r
- print "done"\r