| 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()
 |