10c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# 20c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# Secret Labs' Regular Expression Engine 30c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# 40c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# various symbols used by the regular expression engine. 50c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# run this script to update the _sre include files! 60c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# 70c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved. 80c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# 90c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# See the sre.py file for information on usage and redistribution. 100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# 110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi"""Internal support module for sre""" 130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# update when constants are added or removed 150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMAGIC = 20031017 170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yifrom _sre import MAXREPEAT 190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# SRE standard exception (access as sre.error) 210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# should this really be here? 220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiclass error(Exception): 240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi pass 250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# operators 270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiFAILURE = "failure" 290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSUCCESS = "success" 300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiANY = "any" 320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiANY_ALL = "any_all" 330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiASSERT = "assert" 340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiASSERT_NOT = "assert_not" 350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT = "at" 360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiBIGCHARSET = "bigcharset" 370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiBRANCH = "branch" 380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCALL = "call" 390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY = "category" 400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCHARSET = "charset" 410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiGROUPREF = "groupref" 420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiGROUPREF_IGNORE = "groupref_ignore" 430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiGROUPREF_EXISTS = "groupref_exists" 440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiIN = "in" 450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiIN_IGNORE = "in_ignore" 460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiINFO = "info" 470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiJUMP = "jump" 480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiLITERAL = "literal" 490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiLITERAL_IGNORE = "literal_ignore" 500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMARK = "mark" 510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMAX_REPEAT = "max_repeat" 520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMAX_UNTIL = "max_until" 530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMIN_REPEAT = "min_repeat" 540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMIN_UNTIL = "min_until" 550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiNEGATE = "negate" 560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiNOT_LITERAL = "not_literal" 570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiNOT_LITERAL_IGNORE = "not_literal_ignore" 580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiRANGE = "range" 590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiREPEAT = "repeat" 600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiREPEAT_ONE = "repeat_one" 610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSUBPATTERN = "subpattern" 620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiMIN_REPEAT_ONE = "min_repeat_one" 630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# positions 650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_BEGINNING = "at_beginning" 660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_BEGINNING_LINE = "at_beginning_line" 670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_BEGINNING_STRING = "at_beginning_string" 680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_BOUNDARY = "at_boundary" 690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_NON_BOUNDARY = "at_non_boundary" 700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_END = "at_end" 710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_END_LINE = "at_end_line" 720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_END_STRING = "at_end_string" 730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_LOC_BOUNDARY = "at_loc_boundary" 740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_LOC_NON_BOUNDARY = "at_loc_non_boundary" 750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_UNI_BOUNDARY = "at_uni_boundary" 760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_UNI_NON_BOUNDARY = "at_uni_non_boundary" 770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# categories 790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_DIGIT = "category_digit" 800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_NOT_DIGIT = "category_not_digit" 810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_SPACE = "category_space" 820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_NOT_SPACE = "category_not_space" 830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_WORD = "category_word" 840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_NOT_WORD = "category_not_word" 850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_LINEBREAK = "category_linebreak" 860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_NOT_LINEBREAK = "category_not_linebreak" 870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_LOC_WORD = "category_loc_word" 880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_LOC_NOT_WORD = "category_loc_not_word" 890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_DIGIT = "category_uni_digit" 900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_NOT_DIGIT = "category_uni_not_digit" 910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_SPACE = "category_uni_space" 920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_NOT_SPACE = "category_uni_not_space" 930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_WORD = "category_uni_word" 940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_NOT_WORD = "category_uni_not_word" 950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_LINEBREAK = "category_uni_linebreak" 960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCATEGORY_UNI_NOT_LINEBREAK = "category_uni_not_linebreak" 970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiOPCODES = [ 990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # failure=0 success=1 (just because it looks better that way :-) 1010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi FAILURE, SUCCESS, 1020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi ANY, ANY_ALL, 1040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi ASSERT, ASSERT_NOT, 1050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT, 1060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi BRANCH, 1070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CALL, 1080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY, 1090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CHARSET, BIGCHARSET, 1100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi GROUPREF, GROUPREF_EXISTS, GROUPREF_IGNORE, 1110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi IN, IN_IGNORE, 1120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi INFO, 1130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi JUMP, 1140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi LITERAL, LITERAL_IGNORE, 1150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi MARK, 1160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi MAX_UNTIL, 1170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi MIN_UNTIL, 1180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi NOT_LITERAL, NOT_LITERAL_IGNORE, 1190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi NEGATE, 1200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi RANGE, 1210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi REPEAT, 1220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi REPEAT_ONE, 1230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi SUBPATTERN, 1240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi MIN_REPEAT_ONE 1250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi] 1270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiATCODES = [ 1290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_BEGINNING, AT_BEGINNING_LINE, AT_BEGINNING_STRING, AT_BOUNDARY, 1300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_NON_BOUNDARY, AT_END, AT_END_LINE, AT_END_STRING, 1310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_LOC_BOUNDARY, AT_LOC_NON_BOUNDARY, AT_UNI_BOUNDARY, 1320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_UNI_NON_BOUNDARY 1330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi] 1340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCHCODES = [ 1360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_DIGIT, CATEGORY_NOT_DIGIT, CATEGORY_SPACE, 1370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_SPACE, CATEGORY_WORD, CATEGORY_NOT_WORD, 1380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_LINEBREAK, CATEGORY_NOT_LINEBREAK, CATEGORY_LOC_WORD, 1390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_LOC_NOT_WORD, CATEGORY_UNI_DIGIT, CATEGORY_UNI_NOT_DIGIT, 1400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_UNI_SPACE, CATEGORY_UNI_NOT_SPACE, CATEGORY_UNI_WORD, 1410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_UNI_NOT_WORD, CATEGORY_UNI_LINEBREAK, 1420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_UNI_NOT_LINEBREAK 1430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi] 1440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yidef makedict(list): 1460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi d = {} 1470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi i = 0 1480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi for item in list: 1490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi d[item] = i 1500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi i = i + 1 1510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return d 1520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiOPCODES = makedict(OPCODES) 1540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiATCODES = makedict(ATCODES) 1550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCHCODES = makedict(CHCODES) 1560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# replacement operations for "ignore case" mode 1580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiOP_IGNORE = { 1590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi GROUPREF: GROUPREF_IGNORE, 1600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi IN: IN_IGNORE, 1610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi LITERAL: LITERAL_IGNORE, 1620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi NOT_LITERAL: NOT_LITERAL_IGNORE 1630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 1640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_MULTILINE = { 1660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_BEGINNING: AT_BEGINNING_LINE, 1670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_END: AT_END_LINE 1680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 1690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_LOCALE = { 1710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_BOUNDARY: AT_LOC_BOUNDARY, 1720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_NON_BOUNDARY: AT_LOC_NON_BOUNDARY 1730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 1740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiAT_UNICODE = { 1760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_BOUNDARY: AT_UNI_BOUNDARY, 1770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi AT_NON_BOUNDARY: AT_UNI_NON_BOUNDARY 1780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 1790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCH_LOCALE = { 1810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_DIGIT: CATEGORY_DIGIT, 1820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_DIGIT: CATEGORY_NOT_DIGIT, 1830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_SPACE: CATEGORY_SPACE, 1840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_SPACE: CATEGORY_NOT_SPACE, 1850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_WORD: CATEGORY_LOC_WORD, 1860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_WORD: CATEGORY_LOC_NOT_WORD, 1870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_LINEBREAK: CATEGORY_LINEBREAK, 1880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_LINEBREAK: CATEGORY_NOT_LINEBREAK 1890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 1900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiCH_UNICODE = { 1920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_DIGIT: CATEGORY_UNI_DIGIT, 1930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_DIGIT: CATEGORY_UNI_NOT_DIGIT, 1940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_SPACE: CATEGORY_UNI_SPACE, 1950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_SPACE: CATEGORY_UNI_NOT_SPACE, 1960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_WORD: CATEGORY_UNI_WORD, 1970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_WORD: CATEGORY_UNI_NOT_WORD, 1980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_LINEBREAK: CATEGORY_UNI_LINEBREAK, 1990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi CATEGORY_NOT_LINEBREAK: CATEGORY_UNI_NOT_LINEBREAK 2000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi} 2010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# flags 2030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking) 2040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_IGNORECASE = 2 # case insensitive 2050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_LOCALE = 4 # honour system locale 2060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_MULTILINE = 8 # treat target as multiline string 2070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_DOTALL = 16 # treat target as a single string 2080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_UNICODE = 32 # use unicode locale 2090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_VERBOSE = 64 # ignore whitespace and comments 2100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_FLAG_DEBUG = 128 # debugging 2110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi# flags for INFO primitive 2130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_INFO_PREFIX = 1 # has prefix 2140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_INFO_LITERAL = 2 # entire pattern is literal (given by prefix) 2150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill YiSRE_INFO_CHARSET = 4 # pattern starts with character from given set 2160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiif __name__ == "__main__": 2180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def dump(f, d, prefix): 2190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi items = d.items() 2200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi items.sort(key=lambda a: a[1]) 2210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi for k, v in items: 2220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define %s_%s %s\n" % (prefix, k.upper(), v)) 2230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = open("sre_constants.h", "w") 2240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("""\ 2250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi/* 2260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * Secret Labs' Regular Expression Engine 2270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * 2280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * regular expression matching engine 2290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * 2300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * NOTE: This file is generated by sre_constants.py. If you need 2310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * to change anything in here, edit sre_constants.py and run it. 2320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * 2330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved. 2340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * 2350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi * See the _sre.c file for information on usage and redistribution. 2360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi */ 2370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi""") 2390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_MAGIC %d\n" % MAGIC) 2410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi dump(f, OPCODES, "SRE_OP") 2430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi dump(f, ATCODES, "SRE") 2440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi dump(f, CHCODES, "SRE") 2450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE) 2470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE) 2480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE) 2490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE) 2500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_DOTALL %d\n" % SRE_FLAG_DOTALL) 2510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_UNICODE %d\n" % SRE_FLAG_UNICODE) 2520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_FLAG_VERBOSE %d\n" % SRE_FLAG_VERBOSE) 2530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_INFO_PREFIX %d\n" % SRE_INFO_PREFIX) 2550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_INFO_LITERAL %d\n" % SRE_INFO_LITERAL) 2560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.write("#define SRE_INFO_CHARSET %d\n" % SRE_INFO_CHARSET) 2570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f.close() 2590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi print "done" 260