+++ /dev/null
-"""Token constants (from "token.h")."""\r
-\r
-# This file is automatically generated; please don't muck it up!\r
-#\r
-# To update the symbols in this file, 'cd' to the top directory of\r
-# the python source tree after building the interpreter and run:\r
-#\r
-# ./python Lib/token.py\r
-\r
-#--start constants--\r
-ENDMARKER = 0\r
-NAME = 1\r
-NUMBER = 2\r
-STRING = 3\r
-NEWLINE = 4\r
-INDENT = 5\r
-DEDENT = 6\r
-LPAR = 7\r
-RPAR = 8\r
-LSQB = 9\r
-RSQB = 10\r
-COLON = 11\r
-COMMA = 12\r
-SEMI = 13\r
-PLUS = 14\r
-MINUS = 15\r
-STAR = 16\r
-SLASH = 17\r
-VBAR = 18\r
-AMPER = 19\r
-LESS = 20\r
-GREATER = 21\r
-EQUAL = 22\r
-DOT = 23\r
-PERCENT = 24\r
-BACKQUOTE = 25\r
-LBRACE = 26\r
-RBRACE = 27\r
-EQEQUAL = 28\r
-NOTEQUAL = 29\r
-LESSEQUAL = 30\r
-GREATEREQUAL = 31\r
-TILDE = 32\r
-CIRCUMFLEX = 33\r
-LEFTSHIFT = 34\r
-RIGHTSHIFT = 35\r
-DOUBLESTAR = 36\r
-PLUSEQUAL = 37\r
-MINEQUAL = 38\r
-STAREQUAL = 39\r
-SLASHEQUAL = 40\r
-PERCENTEQUAL = 41\r
-AMPEREQUAL = 42\r
-VBAREQUAL = 43\r
-CIRCUMFLEXEQUAL = 44\r
-LEFTSHIFTEQUAL = 45\r
-RIGHTSHIFTEQUAL = 46\r
-DOUBLESTAREQUAL = 47\r
-DOUBLESLASH = 48\r
-DOUBLESLASHEQUAL = 49\r
-AT = 50\r
-OP = 51\r
-ERRORTOKEN = 52\r
-N_TOKENS = 53\r
-NT_OFFSET = 256\r
-#--end constants--\r
-\r
-tok_name = {}\r
-for _name, _value in globals().items():\r
- if type(_value) is type(0):\r
- tok_name[_value] = _name\r
-del _name, _value\r
-\r
-\r
-def ISTERMINAL(x):\r
- return x < NT_OFFSET\r
-\r
-def ISNONTERMINAL(x):\r
- return x >= NT_OFFSET\r
-\r
-def ISEOF(x):\r
- return x == ENDMARKER\r
-\r
-\r
-def main():\r
- import re\r
- import sys\r
- args = sys.argv[1:]\r
- inFileName = args and args[0] or "Include/token.h"\r
- outFileName = "Lib/token.py"\r
- if len(args) > 1:\r
- outFileName = args[1]\r
- try:\r
- fp = open(inFileName)\r
- except IOError, err:\r
- sys.stdout.write("I/O error: %s\n" % str(err))\r
- sys.exit(1)\r
- lines = fp.read().split("\n")\r
- fp.close()\r
- prog = re.compile(\r
- "#define[ \t][ \t]*([A-Z0-9][A-Z0-9_]*)[ \t][ \t]*([0-9][0-9]*)",\r
- re.IGNORECASE)\r
- tokens = {}\r
- for line in lines:\r
- match = prog.match(line)\r
- if match:\r
- name, val = match.group(1, 2)\r
- val = int(val)\r
- tokens[val] = name # reverse so we can sort them...\r
- keys = tokens.keys()\r
- keys.sort()\r
- # load the output skeleton from the target:\r
- try:\r
- fp = open(outFileName)\r
- except IOError, err:\r
- sys.stderr.write("I/O error: %s\n" % str(err))\r
- sys.exit(2)\r
- format = fp.read().split("\n")\r
- fp.close()\r
- try:\r
- start = format.index("#--start constants--") + 1\r
- end = format.index("#--end constants--")\r
- except ValueError:\r
- sys.stderr.write("target does not contain format markers")\r
- sys.exit(3)\r
- lines = []\r
- for val in keys:\r
- lines.append("%s = %d" % (tokens[val], val))\r
- format[start:end] = lines\r
- try:\r
- fp = open(outFileName, 'w')\r
- except IOError, err:\r
- sys.stderr.write("I/O error: %s\n" % str(err))\r
- sys.exit(4)\r
- fp.write("\n".join(format))\r
- fp.close()\r
-\r
-\r
-if __name__ == "__main__":\r
- main()\r