1 #! /usr/bin/env python 2 3 """Keywords (from "graminit.c") 4 5 This file is automatically generated; please don't muck it up! 6 7 To update the symbols in this file, 'cd' to the top directory of 8 the python source tree after building the interpreter and run: 9 10 python Lib/keyword.py 11 """ 12 13 __all__ = ["iskeyword", "kwlist"] 14 15 kwlist = [ 16 #--start keywords-- 17 'and', 18 'as', 19 'assert', 20 'break', 21 'class', 22 'continue', 23 'def', 24 'del', 25 'elif', 26 'else', 27 'except', 28 'exec', 29 'finally', 30 'for', 31 'from', 32 'global', 33 'if', 34 'import', 35 'in', 36 'is', 37 'lambda', 38 'not', 39 'or', 40 'pass', 41 'print', 42 'raise', 43 'return', 44 'try', 45 'while', 46 'with', 47 'yield', 48 #--end keywords-- 49 ] 50 51 iskeyword = frozenset(kwlist).__contains__ 52 53 def main(): 54 import sys, re 55 56 args = sys.argv[1:] 57 iptfile = args and args[0] or "Python/graminit.c" 58 if len(args) > 1: optfile = args[1] 59 else: optfile = "Lib/keyword.py" 60 61 # scan the source file for keywords 62 fp = open(iptfile) 63 strprog = re.compile('"([^"]+)"') 64 lines = [] 65 for line in fp: 66 if '{1, "' in line: 67 match = strprog.search(line) 68 if match: 69 lines.append(" '" + match.group(1) + "',\n") 70 fp.close() 71 lines.sort() 72 73 # load the output skeleton from the target 74 fp = open(optfile) 75 format = fp.readlines() 76 fp.close() 77 78 # insert the lines of keywords 79 try: 80 start = format.index("#--start keywords--\n") + 1 81 end = format.index("#--end keywords--\n") 82 format[start:end] = lines 83 except ValueError: 84 sys.stderr.write("target does not contain format markers\n") 85 sys.exit(1) 86 87 # write the output file 88 fp = open(optfile, 'w') 89 fp.write(''.join(format)) 90 fp.close() 91 92 if __name__ == "__main__": 93 main() 94