17627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# 27627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# Secret Labs' Regular Expression Engine 37627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# 47627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# various symbols used by the regular expression engine. 57627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# run this script to update the _sre include files! 67627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# 7770617b23e286f1147f9480b5f625e88e7badd50Fredrik Lundh# Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved. 87627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# 929c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik Lundh# See the sre.py file for information on usage and redistribution. 107627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# 117627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 12b8f22749853cf79bfbe3709309e67d1a448f4cabFred Drake"""Internal support module for sre""" 13b8f22749853cf79bfbe3709309e67d1a448f4cabFred Drake 14b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh# update when constants are added or removed 15b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh 16ad3fc44ccb40f2ad33c0d09f5a2dfbd4feb442ebGustavo NiemeyerMAGIC = 20031017 17b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh 1860bf0e4daa4a498d53c37dba93cf03dd0c1924e8Serhiy Storchakatry: 1960bf0e4daa4a498d53c37dba93cf03dd0c1924e8Serhiy Storchaka from _sre import MAXREPEAT 2060bf0e4daa4a498d53c37dba93cf03dd0c1924e8Serhiy Storchakaexcept ImportError: 2160bf0e4daa4a498d53c37dba93cf03dd0c1924e8Serhiy Storchaka import _sre 2260bf0e4daa4a498d53c37dba93cf03dd0c1924e8Serhiy Storchaka MAXREPEAT = _sre.MAXREPEAT = 65535 23fbc737eda1f6dbe78e4de4f15fd7127f6cb585d4Serhiy Storchaka 24b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh# SRE standard exception (access as sre.error) 25436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh# should this really be here? 26436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh 27436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundhclass error(Exception): 28436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh pass 29436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh 307627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# operators 317627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 327627c0de6968471996ce05aab200115d56efa1d5Guido van RossumFAILURE = "failure" 337627c0de6968471996ce05aab200115d56efa1d5Guido van RossumSUCCESS = "success" 347627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 357627c0de6968471996ce05aab200115d56efa1d5Guido van RossumANY = "any" 36e186983842f0b27606b141010513fa8e3d0cc5dbFredrik LundhANY_ALL = "any_all" 377627c0de6968471996ce05aab200115d56efa1d5Guido van RossumASSERT = "assert" 3843b3b49b5ab486295baef3a35cd8e836f735c065Fredrik LundhASSERT_NOT = "assert_not" 397627c0de6968471996ce05aab200115d56efa1d5Guido van RossumAT = "at" 4019af43d78a8bd85dc39ea62cc4bc130778cfc643Fredrik LundhBIGCHARSET = "bigcharset" 417627c0de6968471996ce05aab200115d56efa1d5Guido van RossumBRANCH = "branch" 427627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCALL = "call" 437627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY = "category" 443562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhCHARSET = "charset" 4572b82ba16dea929b3fa9db5208b2353e8449c2d5Fredrik LundhGROUPREF = "groupref" 4672b82ba16dea929b3fa9db5208b2353e8449c2d5Fredrik LundhGROUPREF_IGNORE = "groupref_ignore" 47ad3fc44ccb40f2ad33c0d09f5a2dfbd4feb442ebGustavo NiemeyerGROUPREF_EXISTS = "groupref_exists" 487627c0de6968471996ce05aab200115d56efa1d5Guido van RossumIN = "in" 497627c0de6968471996ce05aab200115d56efa1d5Guido van RossumIN_IGNORE = "in_ignore" 50436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhINFO = "info" 517627c0de6968471996ce05aab200115d56efa1d5Guido van RossumJUMP = "jump" 527627c0de6968471996ce05aab200115d56efa1d5Guido van RossumLITERAL = "literal" 537627c0de6968471996ce05aab200115d56efa1d5Guido van RossumLITERAL_IGNORE = "literal_ignore" 547627c0de6968471996ce05aab200115d56efa1d5Guido van RossumMARK = "mark" 557627c0de6968471996ce05aab200115d56efa1d5Guido van RossumMAX_REPEAT = "max_repeat" 5629c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik LundhMAX_UNTIL = "max_until" 577627c0de6968471996ce05aab200115d56efa1d5Guido van RossumMIN_REPEAT = "min_repeat" 5829c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik LundhMIN_UNTIL = "min_until" 597627c0de6968471996ce05aab200115d56efa1d5Guido van RossumNEGATE = "negate" 607627c0de6968471996ce05aab200115d56efa1d5Guido van RossumNOT_LITERAL = "not_literal" 617627c0de6968471996ce05aab200115d56efa1d5Guido van RossumNOT_LITERAL_IGNORE = "not_literal_ignore" 627627c0de6968471996ce05aab200115d56efa1d5Guido van RossumRANGE = "range" 637627c0de6968471996ce05aab200115d56efa1d5Guido van RossumREPEAT = "repeat" 64436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhREPEAT_ONE = "repeat_one" 657627c0de6968471996ce05aab200115d56efa1d5Guido van RossumSUBPATTERN = "subpattern" 6641c99e7f96f7a0f192839801c568d8a80dcc7091Guido van RossumMIN_REPEAT_ONE = "min_repeat_one" 677627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 687627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# positions 697627c0de6968471996ce05aab200115d56efa1d5Guido van RossumAT_BEGINNING = "at_beginning" 70b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonAT_BEGINNING_LINE = "at_beginning_line" 71770617b23e286f1147f9480b5f625e88e7badd50Fredrik LundhAT_BEGINNING_STRING = "at_beginning_string" 727627c0de6968471996ce05aab200115d56efa1d5Guido van RossumAT_BOUNDARY = "at_boundary" 737627c0de6968471996ce05aab200115d56efa1d5Guido van RossumAT_NON_BOUNDARY = "at_non_boundary" 747627c0de6968471996ce05aab200115d56efa1d5Guido van RossumAT_END = "at_end" 75b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonAT_END_LINE = "at_end_line" 76770617b23e286f1147f9480b5f625e88e7badd50Fredrik LundhAT_END_STRING = "at_end_string" 77b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_LOC_BOUNDARY = "at_loc_boundary" 78b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_LOC_NON_BOUNDARY = "at_loc_non_boundary" 79b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_UNI_BOUNDARY = "at_uni_boundary" 80b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_UNI_NON_BOUNDARY = "at_uni_non_boundary" 817627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 827627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# categories 837627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_DIGIT = "category_digit" 847627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_NOT_DIGIT = "category_not_digit" 857627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_SPACE = "category_space" 867627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_NOT_SPACE = "category_not_space" 877627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_WORD = "category_word" 887627c0de6968471996ce05aab200115d56efa1d5Guido van RossumCATEGORY_NOT_WORD = "category_not_word" 89b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCATEGORY_LINEBREAK = "category_linebreak" 90b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCATEGORY_NOT_LINEBREAK = "category_not_linebreak" 91b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCATEGORY_LOC_WORD = "category_loc_word" 92b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCATEGORY_LOC_NOT_WORD = "category_loc_not_word" 93436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_DIGIT = "category_uni_digit" 94436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_NOT_DIGIT = "category_uni_not_digit" 95436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_SPACE = "category_uni_space" 96436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_NOT_SPACE = "category_uni_not_space" 97436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_WORD = "category_uni_word" 98436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_NOT_WORD = "category_uni_not_word" 99436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_LINEBREAK = "category_uni_linebreak" 100436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCATEGORY_UNI_NOT_LINEBREAK = "category_uni_not_linebreak" 1017627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 102b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonOPCODES = [ 1037627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 1047627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum # failure=0 success=1 (just because it looks better that way :-) 1057627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum FAILURE, SUCCESS, 1067627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 107e186983842f0b27606b141010513fa8e3d0cc5dbFredrik Lundh ANY, ANY_ALL, 10843b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh ASSERT, ASSERT_NOT, 1097627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum AT, 1107627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum BRANCH, 1117627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum CALL, 1127627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum CATEGORY, 11319af43d78a8bd85dc39ea62cc4bc130778cfc643Fredrik Lundh CHARSET, BIGCHARSET, 114ad3fc44ccb40f2ad33c0d09f5a2dfbd4feb442ebGustavo Niemeyer GROUPREF, GROUPREF_EXISTS, GROUPREF_IGNORE, 1157627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum IN, IN_IGNORE, 116436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh INFO, 1177627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum JUMP, 1187627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum LITERAL, LITERAL_IGNORE, 1197627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum MARK, 12029c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik Lundh MAX_UNTIL, 12129c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik Lundh MIN_UNTIL, 1227627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum NOT_LITERAL, NOT_LITERAL_IGNORE, 1237627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum NEGATE, 1247627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum RANGE, 12529c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik Lundh REPEAT, 12629c4ba9ada44d62988c62c85c8046985f10a1c85Fredrik Lundh REPEAT_ONE, 12741c99e7f96f7a0f192839801c568d8a80dcc7091Guido van Rossum SUBPATTERN, 12841c99e7f96f7a0f192839801c568d8a80dcc7091Guido van Rossum MIN_REPEAT_ONE 1297627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 1307627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum] 1317627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 132b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonATCODES = [ 133770617b23e286f1147f9480b5f625e88e7badd50Fredrik Lundh AT_BEGINNING, AT_BEGINNING_LINE, AT_BEGINNING_STRING, AT_BOUNDARY, 134b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_NON_BOUNDARY, AT_END, AT_END_LINE, AT_END_STRING, 135b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_LOC_BOUNDARY, AT_LOC_NON_BOUNDARY, AT_UNI_BOUNDARY, 136b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_UNI_NON_BOUNDARY 137b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton] 138b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton 139b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCHCODES = [ 140b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton CATEGORY_DIGIT, CATEGORY_NOT_DIGIT, CATEGORY_SPACE, 141b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton CATEGORY_NOT_SPACE, CATEGORY_WORD, CATEGORY_NOT_WORD, 142436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_LINEBREAK, CATEGORY_NOT_LINEBREAK, CATEGORY_LOC_WORD, 143436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_LOC_NOT_WORD, CATEGORY_UNI_DIGIT, CATEGORY_UNI_NOT_DIGIT, 144436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_UNI_SPACE, CATEGORY_UNI_NOT_SPACE, CATEGORY_UNI_WORD, 145436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_UNI_NOT_WORD, CATEGORY_UNI_LINEBREAK, 146436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_UNI_NOT_LINEBREAK 147b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton] 148b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton 149b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hyltondef makedict(list): 150b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton d = {} 151b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton i = 0 152b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton for item in list: 15343b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh d[item] = i 15443b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh i = i + 1 155b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton return d 156b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton 157b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonOPCODES = makedict(OPCODES) 158b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonATCODES = makedict(ATCODES) 159b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCHCODES = makedict(CHCODES) 1607627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 1617627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum# replacement operations for "ignore case" mode 162b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonOP_IGNORE = { 16372b82ba16dea929b3fa9db5208b2353e8449c2d5Fredrik Lundh GROUPREF: GROUPREF_IGNORE, 1647627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum IN: IN_IGNORE, 1657627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum LITERAL: LITERAL_IGNORE, 1667627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum NOT_LITERAL: NOT_LITERAL_IGNORE 1677627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum} 1687627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 169b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonAT_MULTILINE = { 170b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton AT_BEGINNING: AT_BEGINNING_LINE, 171b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton AT_END: AT_END_LINE 1727627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum} 1737627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 174b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_LOCALE = { 175b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_BOUNDARY: AT_LOC_BOUNDARY, 176b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_NON_BOUNDARY: AT_LOC_NON_BOUNDARY 177b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh} 178b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh 179b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik LundhAT_UNICODE = { 180b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_BOUNDARY: AT_UNI_BOUNDARY, 181b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh AT_NON_BOUNDARY: AT_UNI_NON_BOUNDARY 182b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh} 183b25e1ad253a4d96aea31a7a3fb78522ea354f43aFredrik Lundh 184b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy HyltonCH_LOCALE = { 185436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_DIGIT: CATEGORY_DIGIT, 186436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_DIGIT: CATEGORY_NOT_DIGIT, 187436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_SPACE: CATEGORY_SPACE, 188436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_SPACE: CATEGORY_NOT_SPACE, 189b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton CATEGORY_WORD: CATEGORY_LOC_WORD, 190b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton CATEGORY_NOT_WORD: CATEGORY_LOC_NOT_WORD, 191436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_LINEBREAK: CATEGORY_LINEBREAK, 192436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_LINEBREAK: CATEGORY_NOT_LINEBREAK 193436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh} 194436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh 195436c3d58a2570f3b599e59b4071f944f774ec441Fredrik LundhCH_UNICODE = { 196436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_DIGIT: CATEGORY_UNI_DIGIT, 197436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_DIGIT: CATEGORY_UNI_NOT_DIGIT, 198436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_SPACE: CATEGORY_UNI_SPACE, 199436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_SPACE: CATEGORY_UNI_NOT_SPACE, 200436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_WORD: CATEGORY_UNI_WORD, 201436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_WORD: CATEGORY_UNI_NOT_WORD, 202436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_LINEBREAK: CATEGORY_UNI_LINEBREAK, 203436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh CATEGORY_NOT_LINEBREAK: CATEGORY_UNI_NOT_LINEBREAK 2047627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum} 2057627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum 206b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton# flags 2073562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking) 2083562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_IGNORECASE = 2 # case insensitive 2098a3ebf8ca87a7d2989148d7c218974ab4235ca5dFredrik LundhSRE_FLAG_LOCALE = 4 # honour system locale 2103562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_MULTILINE = 8 # treat target as multiline string 2113562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_DOTALL = 16 # treat target as a single string 2123562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_UNICODE = 32 # use unicode locale 2133562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_FLAG_VERBOSE = 64 # ignore whitespace and comments 214770617b23e286f1147f9480b5f625e88e7badd50Fredrik LundhSRE_FLAG_DEBUG = 128 # debugging 2153562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh 2163562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh# flags for INFO primitive 2173562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_INFO_PREFIX = 1 # has prefix 2183562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_INFO_LITERAL = 2 # entire pattern is literal (given by prefix) 2193562f1176403653ebfbef6275d449ad42d1b843aFredrik LundhSRE_INFO_CHARSET = 4 # pattern starts with character from given set 220b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton 2217627c0de6968471996ce05aab200115d56efa1d5Guido van Rossumif __name__ == "__main__": 222b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton def dump(f, d, prefix): 22343b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh items = d.items() 2246b59f5f3fd9bdf00875a7cead15f423fa1c2f910Raymond Hettinger items.sort(key=lambda a: a[1]) 22543b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh for k, v in items: 2268bee76106e8da9fd6011432d2f60861a94c623dbBarry Warsaw f.write("#define %s_%s %s\n" % (prefix, k.upper(), v)) 2277627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum f = open("sre_constants.h", "w") 22843b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh f.write("""\ 22943b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh/* 23043b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * Secret Labs' Regular Expression Engine 23143b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * 23243b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * regular expression matching engine 23343b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * 23443b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * NOTE: This file is generated by sre_constants.py. If you need 23543b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * to change anything in here, edit sre_constants.py and run it. 23643b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * 237770617b23e286f1147f9480b5f625e88e7badd50Fredrik Lundh * Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved. 23843b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * 23943b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh * See the _sre.c file for information on usage and redistribution. 24043b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh */ 24143b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh 24243b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh""") 24343b3b49b5ab486295baef3a35cd8e836f735c065Fredrik Lundh 244b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh f.write("#define SRE_MAGIC %d\n" % MAGIC) 245b35ffc0417a0861ccf466c0503c4151725a0267aFredrik Lundh 246b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton dump(f, OPCODES, "SRE_OP") 247b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton dump(f, ATCODES, "SRE") 248b1aa19515ffdb84c6633ee0344196fd8bd50ade0Jeremy Hylton dump(f, CHCODES, "SRE") 2493562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh 250436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE) 251436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE) 252436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE) 253436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE) 254436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_DOTALL %d\n" % SRE_FLAG_DOTALL) 255436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_UNICODE %d\n" % SRE_FLAG_UNICODE) 256436c3d58a2570f3b599e59b4071f944f774ec441Fredrik Lundh f.write("#define SRE_FLAG_VERBOSE %d\n" % SRE_FLAG_VERBOSE) 2573562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh 2583562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh f.write("#define SRE_INFO_PREFIX %d\n" % SRE_INFO_PREFIX) 2593562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh f.write("#define SRE_INFO_LITERAL %d\n" % SRE_INFO_LITERAL) 2603562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh f.write("#define SRE_INFO_CHARSET %d\n" % SRE_INFO_CHARSET) 2613562f1176403653ebfbef6275d449ad42d1b843aFredrik Lundh 2627627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum f.close() 2637627c0de6968471996ce05aab200115d56efa1d5Guido van Rossum print "done" 264