#! /usr/bin/env python | |
"""Keywords (from "graminit.c") | |
This file is automatically generated; please don't muck it up! | |
To update the symbols in this file, 'cd' to the top directory of | |
the python source tree after building the interpreter and run: | |
python Lib/keyword.py | |
""" | |
__all__ = ["iskeyword", "kwlist"] | |
kwlist = [ | |
#--start keywords-- | |
'and', | |
'as', | |
'assert', | |
'break', | |
'class', | |
'continue', | |
'def', | |
'del', | |
'elif', | |
'else', | |
'except', | |
'exec', | |
'finally', | |
'for', | |
'from', | |
'global', | |
'if', | |
'import', | |
'in', | |
'is', | |
'lambda', | |
'not', | |
'or', | |
'pass', | |
'print', | |
'raise', | |
'return', | |
'try', | |
'while', | |
'with', | |
'yield', | |
#--end keywords-- | |
] | |
iskeyword = frozenset(kwlist).__contains__ | |
def main(): | |
import sys, re | |
args = sys.argv[1:] | |
iptfile = args and args[0] or "Python/graminit.c" | |
if len(args) > 1: optfile = args[1] | |
else: optfile = "Lib/keyword.py" | |
# scan the source file for keywords | |
fp = open(iptfile) | |
strprog = re.compile('"([^"]+)"') | |
lines = [] | |
for line in fp: | |
if '{1, "' in line: | |
match = strprog.search(line) | |
if match: | |
lines.append(" '" + match.group(1) + "',\n") | |
fp.close() | |
lines.sort() | |
# load the output skeleton from the target | |
fp = open(optfile) | |
format = fp.readlines() | |
fp.close() | |
# insert the lines of keywords | |
try: | |
start = format.index("#--start keywords--\n") + 1 | |
end = format.index("#--end keywords--\n") | |
format[start:end] = lines | |
except ValueError: | |
sys.stderr.write("target does not contain format markers\n") | |
sys.exit(1) | |
# write the output file | |
fp = open(optfile, 'w') | |
fp.write(''.join(format)) | |
fp.close() | |
if __name__ == "__main__": | |
main() |