forked from Rust-related/RustPython
86 lines
2.2 KiB
Python
Vendored
86 lines
2.2 KiB
Python
Vendored
import warnings
|
|
warnings.warn(f"module {__name__!r} is deprecated",
|
|
DeprecationWarning,
|
|
stacklevel=2)
|
|
|
|
from re import _constants as _
|
|
globals().update({k: v for k, v in vars(_).items() if k[:2] != '__'})
|
|
|
|
if __name__ == "__main__":
|
|
def dump(f, d, typ, int_t, prefix):
|
|
items = sorted(d)
|
|
f.write(f"""\
|
|
#[derive(num_enum::TryFromPrimitive, Debug)]
|
|
#[repr({int_t})]
|
|
#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
|
|
pub enum {typ} {{
|
|
""")
|
|
for item in items:
|
|
name = str(item).removeprefix(prefix)
|
|
val = int(item)
|
|
f.write(f" {name} = {val},\n")
|
|
f.write("""\
|
|
}
|
|
""")
|
|
import sys
|
|
if len(sys.argv) > 1:
|
|
constants_file = sys.argv[1]
|
|
else:
|
|
import os
|
|
constants_file = os.path.join(os.path.dirname(__file__), "../../sre-engine/src/constants.rs")
|
|
with open(constants_file, "w") as f:
|
|
f.write("""\
|
|
/*
|
|
* Secret Labs' Regular Expression Engine
|
|
*
|
|
* regular expression matching engine
|
|
*
|
|
* NOTE: This file is generated by sre_constants.py. If you need
|
|
* to change anything in here, edit sre_constants.py and run it.
|
|
*
|
|
* Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved.
|
|
*
|
|
* See the _sre.c file for information on usage and redistribution.
|
|
*/
|
|
|
|
""")
|
|
|
|
f.write("use bitflags::bitflags;\n\n");
|
|
|
|
f.write("pub const SRE_MAGIC: usize = %d;\n" % MAGIC)
|
|
|
|
dump(f, OPCODES, "SreOpcode", "u32", "")
|
|
dump(f, ATCODES, "SreAtCode", "u32", "AT_")
|
|
dump(f, CHCODES, "SreCatCode", "u32", "CATEGORY_")
|
|
|
|
def bitflags(typ, int_t, prefix, flags):
|
|
f.write(f"""\
|
|
bitflags! {{
|
|
pub struct {typ}: {int_t} {{
|
|
""")
|
|
for name in flags:
|
|
val = globals()[prefix + name]
|
|
f.write(f" const {name} = {val};\n")
|
|
f.write("""\
|
|
}
|
|
}
|
|
""")
|
|
|
|
bitflags("SreFlag", "u16", "SRE_FLAG_", [
|
|
"TEMPLATE",
|
|
"IGNORECASE",
|
|
"LOCALE",
|
|
"MULTILINE",
|
|
"DOTALL",
|
|
"UNICODE",
|
|
"VERBOSE",
|
|
"DEBUG",
|
|
"ASCII",
|
|
])
|
|
|
|
bitflags("SreInfo", "u32", "SRE_INFO_", [
|
|
"PREFIX", "LITERAL", "CHARSET",
|
|
])
|
|
|
|
print("done")
|