| /* Auto-generated by Tools/scripts/generate_token.py */ | 
 |  | 
 | #include "Python.h" | 
 | #include "token.h" | 
 |  | 
 | /* Token names */ | 
 |  | 
 | const char * const _PyParser_TokenNames[] = { | 
 |     "ENDMARKER", | 
 |     "NAME", | 
 |     "NUMBER", | 
 |     "STRING", | 
 |     "NEWLINE", | 
 |     "INDENT", | 
 |     "DEDENT", | 
 |     "LPAR", | 
 |     "RPAR", | 
 |     "LSQB", | 
 |     "RSQB", | 
 |     "COLON", | 
 |     "COMMA", | 
 |     "SEMI", | 
 |     "PLUS", | 
 |     "MINUS", | 
 |     "STAR", | 
 |     "SLASH", | 
 |     "VBAR", | 
 |     "AMPER", | 
 |     "LESS", | 
 |     "GREATER", | 
 |     "EQUAL", | 
 |     "DOT", | 
 |     "PERCENT", | 
 |     "LBRACE", | 
 |     "RBRACE", | 
 |     "EQEQUAL", | 
 |     "NOTEQUAL", | 
 |     "LESSEQUAL", | 
 |     "GREATEREQUAL", | 
 |     "TILDE", | 
 |     "CIRCUMFLEX", | 
 |     "LEFTSHIFT", | 
 |     "RIGHTSHIFT", | 
 |     "DOUBLESTAR", | 
 |     "PLUSEQUAL", | 
 |     "MINEQUAL", | 
 |     "STAREQUAL", | 
 |     "SLASHEQUAL", | 
 |     "PERCENTEQUAL", | 
 |     "AMPEREQUAL", | 
 |     "VBAREQUAL", | 
 |     "CIRCUMFLEXEQUAL", | 
 |     "LEFTSHIFTEQUAL", | 
 |     "RIGHTSHIFTEQUAL", | 
 |     "DOUBLESTAREQUAL", | 
 |     "DOUBLESLASH", | 
 |     "DOUBLESLASHEQUAL", | 
 |     "AT", | 
 |     "ATEQUAL", | 
 |     "RARROW", | 
 |     "ELLIPSIS", | 
 |     "COLONEQUAL", | 
 |     "OP", | 
 |     "AWAIT", | 
 |     "ASYNC", | 
 |     "TYPE_IGNORE", | 
 |     "TYPE_COMMENT", | 
 |     "<ERRORTOKEN>", | 
 |     "<COMMENT>", | 
 |     "<NL>", | 
 |     "<ENCODING>", | 
 |     "<N_TOKENS>", | 
 | }; | 
 |  | 
 | /* Return the token corresponding to a single character */ | 
 |  | 
 | int | 
 | PyToken_OneChar(int c1) | 
 | { | 
 |     switch (c1) { | 
 |     case '%': return PERCENT; | 
 |     case '&': return AMPER; | 
 |     case '(': return LPAR; | 
 |     case ')': return RPAR; | 
 |     case '*': return STAR; | 
 |     case '+': return PLUS; | 
 |     case ',': return COMMA; | 
 |     case '-': return MINUS; | 
 |     case '.': return DOT; | 
 |     case '/': return SLASH; | 
 |     case ':': return COLON; | 
 |     case ';': return SEMI; | 
 |     case '<': return LESS; | 
 |     case '=': return EQUAL; | 
 |     case '>': return GREATER; | 
 |     case '@': return AT; | 
 |     case '[': return LSQB; | 
 |     case ']': return RSQB; | 
 |     case '^': return CIRCUMFLEX; | 
 |     case '{': return LBRACE; | 
 |     case '|': return VBAR; | 
 |     case '}': return RBRACE; | 
 |     case '~': return TILDE; | 
 |     } | 
 |     return OP; | 
 | } | 
 |  | 
 | int | 
 | PyToken_TwoChars(int c1, int c2) | 
 | { | 
 |     switch (c1) { | 
 |     case '!': | 
 |         switch (c2) { | 
 |         case '=': return NOTEQUAL; | 
 |         } | 
 |         break; | 
 |     case '%': | 
 |         switch (c2) { | 
 |         case '=': return PERCENTEQUAL; | 
 |         } | 
 |         break; | 
 |     case '&': | 
 |         switch (c2) { | 
 |         case '=': return AMPEREQUAL; | 
 |         } | 
 |         break; | 
 |     case '*': | 
 |         switch (c2) { | 
 |         case '*': return DOUBLESTAR; | 
 |         case '=': return STAREQUAL; | 
 |         } | 
 |         break; | 
 |     case '+': | 
 |         switch (c2) { | 
 |         case '=': return PLUSEQUAL; | 
 |         } | 
 |         break; | 
 |     case '-': | 
 |         switch (c2) { | 
 |         case '=': return MINEQUAL; | 
 |         case '>': return RARROW; | 
 |         } | 
 |         break; | 
 |     case '/': | 
 |         switch (c2) { | 
 |         case '/': return DOUBLESLASH; | 
 |         case '=': return SLASHEQUAL; | 
 |         } | 
 |         break; | 
 |     case ':': | 
 |         switch (c2) { | 
 |         case '=': return COLONEQUAL; | 
 |         } | 
 |         break; | 
 |     case '<': | 
 |         switch (c2) { | 
 |         case '<': return LEFTSHIFT; | 
 |         case '=': return LESSEQUAL; | 
 |         case '>': return NOTEQUAL; | 
 |         } | 
 |         break; | 
 |     case '=': | 
 |         switch (c2) { | 
 |         case '=': return EQEQUAL; | 
 |         } | 
 |         break; | 
 |     case '>': | 
 |         switch (c2) { | 
 |         case '=': return GREATEREQUAL; | 
 |         case '>': return RIGHTSHIFT; | 
 |         } | 
 |         break; | 
 |     case '@': | 
 |         switch (c2) { | 
 |         case '=': return ATEQUAL; | 
 |         } | 
 |         break; | 
 |     case '^': | 
 |         switch (c2) { | 
 |         case '=': return CIRCUMFLEXEQUAL; | 
 |         } | 
 |         break; | 
 |     case '|': | 
 |         switch (c2) { | 
 |         case '=': return VBAREQUAL; | 
 |         } | 
 |         break; | 
 |     } | 
 |     return OP; | 
 | } | 
 |  | 
 | int | 
 | PyToken_ThreeChars(int c1, int c2, int c3) | 
 | { | 
 |     switch (c1) { | 
 |     case '*': | 
 |         switch (c2) { | 
 |         case '*': | 
 |             switch (c3) { | 
 |             case '=': return DOUBLESTAREQUAL; | 
 |             } | 
 |             break; | 
 |         } | 
 |         break; | 
 |     case '.': | 
 |         switch (c2) { | 
 |         case '.': | 
 |             switch (c3) { | 
 |             case '.': return ELLIPSIS; | 
 |             } | 
 |             break; | 
 |         } | 
 |         break; | 
 |     case '/': | 
 |         switch (c2) { | 
 |         case '/': | 
 |             switch (c3) { | 
 |             case '=': return DOUBLESLASHEQUAL; | 
 |             } | 
 |             break; | 
 |         } | 
 |         break; | 
 |     case '<': | 
 |         switch (c2) { | 
 |         case '<': | 
 |             switch (c3) { | 
 |             case '=': return LEFTSHIFTEQUAL; | 
 |             } | 
 |             break; | 
 |         } | 
 |         break; | 
 |     case '>': | 
 |         switch (c2) { | 
 |         case '>': | 
 |             switch (c3) { | 
 |             case '=': return RIGHTSHIFTEQUAL; | 
 |             } | 
 |             break; | 
 |         } | 
 |         break; | 
 |     } | 
 |     return OP; | 
 | } |