| 
									
										
										
										
											2000-02-04 15:28:42 +00:00
										 |  |  | """Token constants (from "token.h").""" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 14:07:41 +00:00
										 |  |  | __all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF'] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2011-11-29 16:45:34 +01: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 | 
					
						
							| 
									
										
										
										
											2012-01-15 19:15:36 -06:00
										 |  |  | LBRACE = 25 | 
					
						
							|  |  |  | RBRACE = 26 | 
					
						
							|  |  |  | EQEQUAL = 27 | 
					
						
							|  |  |  | NOTEQUAL = 28 | 
					
						
							|  |  |  | LESSEQUAL = 29 | 
					
						
							|  |  |  | GREATEREQUAL = 30 | 
					
						
							|  |  |  | TILDE = 31 | 
					
						
							|  |  |  | CIRCUMFLEX = 32 | 
					
						
							|  |  |  | LEFTSHIFT = 33 | 
					
						
							|  |  |  | RIGHTSHIFT = 34 | 
					
						
							|  |  |  | DOUBLESTAR = 35 | 
					
						
							|  |  |  | PLUSEQUAL = 36 | 
					
						
							|  |  |  | MINEQUAL = 37 | 
					
						
							|  |  |  | STAREQUAL = 38 | 
					
						
							|  |  |  | SLASHEQUAL = 39 | 
					
						
							|  |  |  | PERCENTEQUAL = 40 | 
					
						
							|  |  |  | AMPEREQUAL = 41 | 
					
						
							|  |  |  | VBAREQUAL = 42 | 
					
						
							|  |  |  | CIRCUMFLEXEQUAL = 43 | 
					
						
							|  |  |  | LEFTSHIFTEQUAL = 44 | 
					
						
							|  |  |  | RIGHTSHIFTEQUAL = 45 | 
					
						
							|  |  |  | DOUBLESTAREQUAL = 46 | 
					
						
							|  |  |  | DOUBLESLASH = 47 | 
					
						
							|  |  |  | DOUBLESLASHEQUAL = 48 | 
					
						
							|  |  |  | AT = 49 | 
					
						
							| 
									
										
										
										
											2014-04-09 23:55:56 -04:00
										 |  |  | ATEQUAL = 50 | 
					
						
							|  |  |  | RARROW = 51 | 
					
						
							|  |  |  | ELLIPSIS = 52 | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  | # Don't forget to update the table _PyParser_TokenNames in tokenizer.c! | 
					
						
							| 
									
										
										
										
											2014-04-09 23:55:56 -04:00
										 |  |  | OP = 53 | 
					
						
							| 
									
										
										
										
											2018-04-11 19:15:51 +03:00
										 |  |  | ERRORTOKEN = 54 | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  | # These aren't used by the C tokenizer but are needed for tokenize.py | 
					
						
							| 
									
										
										
										
											2018-04-11 19:15:51 +03:00
										 |  |  | COMMENT = 55 | 
					
						
							|  |  |  | NL = 56 | 
					
						
							|  |  |  | ENCODING = 57 | 
					
						
							|  |  |  | N_TOKENS = 58 | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  | # Special definitions for cooperation with parser | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  | NT_OFFSET = 256 | 
					
						
							|  |  |  | #--end constants-- | 
					
						
							| 
									
										
										
										
											1993-11-11 10:31:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 14:07:41 +00:00
										 |  |  | tok_name = {value: name | 
					
						
							|  |  |  |             for name, value in globals().items() | 
					
						
							| 
									
										
										
										
											2012-05-17 18:55:59 +02:00
										 |  |  |             if isinstance(value, int) and not name.startswith('_')} | 
					
						
							| 
									
										
										
										
											2010-11-11 14:07:41 +00:00
										 |  |  | __all__.extend(tok_name.values()) | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-11 14:07:41 +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) | 
					
						
							| 
									
										
										
										
											2012-12-25 16:47:37 +02:00
										 |  |  |     except OSError as err: | 
					
						
							| 
									
										
										
										
											1998-03-26 21:13:24 +00:00
										 |  |  |         sys.stdout.write("I/O error: %s\n" % str(err)) | 
					
						
							|  |  |  |         sys.exit(1) | 
					
						
							| 
									
										
										
										
											2015-04-04 11:01:02 +03:00
										 |  |  |     with fp: | 
					
						
							|  |  |  |         lines = fp.read().split("\n") | 
					
						
							| 
									
										
										
										
											1997-10-22 21:00:49 +00:00
										 |  |  |     prog = re.compile( | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  |         r"#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) | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  |     comment_regex = re.compile( | 
					
						
							|  |  |  |         r"^\s*/\*\s*(.+?)\s*\*/\s*$", | 
					
						
							|  |  |  |         re.IGNORECASE) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  |     tokens = {} | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  |     prev_val = None | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  |             tokens[val] = {'token': name}          # reverse so we can sort them... | 
					
						
							|  |  |  |             prev_val = val | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             comment_match = comment_regex.match(line) | 
					
						
							|  |  |  |             if comment_match and prev_val is not None: | 
					
						
							|  |  |  |                 comment = comment_match.group(1) | 
					
						
							|  |  |  |                 tokens[prev_val]['comment'] = comment | 
					
						
							| 
									
										
										
										
											2007-02-26 14:08:27 +00:00
										 |  |  |     keys = sorted(tokens.keys()) | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  |     # load the output skeleton from the target: | 
					
						
							|  |  |  |     try: | 
					
						
							| 
									
										
										
										
											1998-03-26 21:13:24 +00:00
										 |  |  |         fp = open(outFileName) | 
					
						
							| 
									
										
										
										
											2012-12-25 16:47:37 +02:00
										 |  |  |     except OSError as err: | 
					
						
							| 
									
										
										
										
											1998-03-26 21:13:24 +00:00
										 |  |  |         sys.stderr.write("I/O error: %s\n" % str(err)) | 
					
						
							|  |  |  |         sys.exit(2) | 
					
						
							| 
									
										
										
										
											2015-04-04 11:01:02 +03:00
										 |  |  |     with fp: | 
					
						
							|  |  |  |         format = fp.read().split("\n") | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  |     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 = [] | 
					
						
							| 
									
										
										
										
											2017-05-31 15:00:21 +01:00
										 |  |  |     for key in keys: | 
					
						
							|  |  |  |         lines.append("%s = %d" % (tokens[key]["token"], key)) | 
					
						
							|  |  |  |         if "comment" in tokens[key]: | 
					
						
							|  |  |  |             lines.append("# %s" % tokens[key]["comment"]) | 
					
						
							| 
									
										
										
										
											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') | 
					
						
							| 
									
										
										
										
											2012-12-25 16:47:37 +02:00
										 |  |  |     except OSError as err: | 
					
						
							| 
									
										
										
										
											1998-03-26 21:13:24 +00:00
										 |  |  |         sys.stderr.write("I/O error: %s\n" % str(err)) | 
					
						
							|  |  |  |         sys.exit(4) | 
					
						
							| 
									
										
										
										
											2015-04-04 11:01:02 +03:00
										 |  |  |     with fp: | 
					
						
							|  |  |  |         fp.write("\n".join(format)) | 
					
						
							| 
									
										
										
										
											1996-08-21 14:32:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
										
										
											2010-11-11 14:07:41 +00:00
										 |  |  |     _main() |