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