summaryrefslogtreecommitdiff
path: root/Tools/scripts/generate_sre_constants.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-10-17 12:01:00 +0200
committerGitHub <noreply@github.com>2022-10-17 12:01:00 +0200
commit1863302d61a7a5dd8b8d345a00f0ee242c7c10bf (patch)
treea1e41af02147e2a14155d5b19d7b68bbb31c3f6f /Tools/scripts/generate_sre_constants.py
parenteae7dad40255bad42e4abce53ff8143dcbc66af5 (diff)
downloadcpython-git-1863302d61a7a5dd8b8d345a00f0ee242c7c10bf.tar.gz
gh-97669: Create Tools/build/ directory (#97963)
Create Tools/build/ directory. Move the following scripts from Tools/scripts/ to Tools/build/: * check_extension_modules.py * deepfreeze.py * freeze_modules.py * generate_global_objects.py * generate_levenshtein_examples.py * generate_opcode_h.py * generate_re_casefix.py * generate_sre_constants.py * generate_stdlib_module_names.py * generate_token.py * parse_html5_entities.py * smelly.py * stable_abi.py * umarshal.py * update_file.py * verify_ensurepip_wheels.py Update references to these scripts.
Diffstat (limited to 'Tools/scripts/generate_sre_constants.py')
-rwxr-xr-xTools/scripts/generate_sre_constants.py78
1 files changed, 0 insertions, 78 deletions
diff --git a/Tools/scripts/generate_sre_constants.py b/Tools/scripts/generate_sre_constants.py
deleted file mode 100755
index 72715076d2..0000000000
--- a/Tools/scripts/generate_sre_constants.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#! /usr/bin/env python3
-# This script generates Modules/_sre/sre_constants.h from Lib/re/_constants.py.
-
-
-def update_file(file, content):
- try:
- with open(file, 'r') as fobj:
- if fobj.read() == content:
- return False
- except (OSError, ValueError):
- pass
- with open(file, 'w') as fobj:
- fobj.write(content)
- return True
-
-sre_constants_header = """\
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
- *
- * Auto-generated by Tools/scripts/generate_sre_constants.py from
- * Lib/re/_constants.py.
- *
- * Copyright (c) 1997-2001 by Secret Labs AB. All rights reserved.
- *
- * See the sre.c file for information on usage and redistribution.
- */
-
-"""
-
-def main(
- infile="Lib/re/_constants.py",
- outfile_constants="Modules/_sre/sre_constants.h",
- outfile_targets="Modules/_sre/sre_targets.h",
-):
- ns = {}
- with open(infile) as fp:
- code = fp.read()
- exec(code, ns)
-
- def dump(d, prefix):
- items = sorted(d)
- for item in items:
- yield "#define %s_%s %d\n" % (prefix, item, item)
-
- def dump2(d, prefix):
- items = [(value, name) for name, value in d.items()
- if name.startswith(prefix)]
- for value, name in sorted(items):
- yield "#define %s %d\n" % (name, value)
-
- def dump_gotos(d, prefix):
- for i, item in enumerate(sorted(d)):
- assert i == item
- yield f" &&{prefix}_{item},\n"
-
- content = [sre_constants_header]
- content.append("#define SRE_MAGIC %d\n" % ns["MAGIC"])
- content.extend(dump(ns["OPCODES"], "SRE_OP"))
- content.extend(dump(ns["ATCODES"], "SRE"))
- content.extend(dump(ns["CHCODES"], "SRE"))
- content.extend(dump2(ns, "SRE_FLAG_"))
- content.extend(dump2(ns, "SRE_INFO_"))
-
- update_file(outfile_constants, ''.join(content))
-
- content = [sre_constants_header]
- content.append(f"static void *sre_targets[{len(ns['OPCODES'])}] = {{\n")
- content.extend(dump_gotos(ns["OPCODES"], "TARGET_SRE_OP"))
- content.append("};\n")
-
- update_file(outfile_targets, ''.join(content))
-
-
-if __name__ == '__main__':
- import sys
- main(*sys.argv[1:])