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