| #! /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: |
| # |
| # PYTHONPATH=./Lib ./python Lib/keyword.py |
| # |
| # (this path allows the import of string.py and regexmodule.so |
| # for a site with no installation in place) |
| |
| kwlist = [ |
| #--start keywords-- |
| 'and', |
| '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', |
| #--end keywords-- |
| ] |
| |
| kwdict = {} |
| for keyword in kwlist: |
| kwdict[keyword] = 1 |
| |
| iskeyword = kwdict.has_key |
| |
| def main(): |
| import sys, regex, string |
| |
| 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 = regex.compile('"\([^"]+\)"') |
| lines = [] |
| while 1: |
| line = fp.readline() |
| if not line: break |
| if string.find(line, '{1, "') > -1 and strprog.search(line) > -1: |
| lines.append(" '" + strprog.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(string.join(format, '')) |
| fp.close() |
| |
| if __name__ == "__main__": main() |