(root)/
Python-3.12.0/
Parser/
token.c
       1  /* Auto-generated by Tools/build/generate_token.py */
       2  
       3  #include "Python.h"
       4  #include "pycore_token.h"
       5  
       6  /* Token names */
       7  
       8  const char * const _PyParser_TokenNames[] = {
       9      "ENDMARKER",
      10      "NAME",
      11      "NUMBER",
      12      "STRING",
      13      "NEWLINE",
      14      "INDENT",
      15      "DEDENT",
      16      "LPAR",
      17      "RPAR",
      18      "LSQB",
      19      "RSQB",
      20      "COLON",
      21      "COMMA",
      22      "SEMI",
      23      "PLUS",
      24      "MINUS",
      25      "STAR",
      26      "SLASH",
      27      "VBAR",
      28      "AMPER",
      29      "LESS",
      30      "GREATER",
      31      "EQUAL",
      32      "DOT",
      33      "PERCENT",
      34      "LBRACE",
      35      "RBRACE",
      36      "EQEQUAL",
      37      "NOTEQUAL",
      38      "LESSEQUAL",
      39      "GREATEREQUAL",
      40      "TILDE",
      41      "CIRCUMFLEX",
      42      "LEFTSHIFT",
      43      "RIGHTSHIFT",
      44      "DOUBLESTAR",
      45      "PLUSEQUAL",
      46      "MINEQUAL",
      47      "STAREQUAL",
      48      "SLASHEQUAL",
      49      "PERCENTEQUAL",
      50      "AMPEREQUAL",
      51      "VBAREQUAL",
      52      "CIRCUMFLEXEQUAL",
      53      "LEFTSHIFTEQUAL",
      54      "RIGHTSHIFTEQUAL",
      55      "DOUBLESTAREQUAL",
      56      "DOUBLESLASH",
      57      "DOUBLESLASHEQUAL",
      58      "AT",
      59      "ATEQUAL",
      60      "RARROW",
      61      "ELLIPSIS",
      62      "COLONEQUAL",
      63      "EXCLAMATION",
      64      "OP",
      65      "AWAIT",
      66      "ASYNC",
      67      "TYPE_IGNORE",
      68      "TYPE_COMMENT",
      69      "SOFT_KEYWORD",
      70      "FSTRING_START",
      71      "FSTRING_MIDDLE",
      72      "FSTRING_END",
      73      "COMMENT",
      74      "NL",
      75      "<ERRORTOKEN>",
      76      "<ENCODING>",
      77      "<N_TOKENS>",
      78  };
      79  
      80  /* Return the token corresponding to a single character */
      81  
      82  int
      83  _PyToken_OneChar(int c1)
      84  {
      85      switch (c1) {
      86      case '!': return EXCLAMATION;
      87      case '%': return PERCENT;
      88      case '&': return AMPER;
      89      case '(': return LPAR;
      90      case ')': return RPAR;
      91      case '*': return STAR;
      92      case '+': return PLUS;
      93      case ',': return COMMA;
      94      case '-': return MINUS;
      95      case '.': return DOT;
      96      case '/': return SLASH;
      97      case ':': return COLON;
      98      case ';': return SEMI;
      99      case '<': return LESS;
     100      case '=': return EQUAL;
     101      case '>': return GREATER;
     102      case '@': return AT;
     103      case '[': return LSQB;
     104      case ']': return RSQB;
     105      case '^': return CIRCUMFLEX;
     106      case '{': return LBRACE;
     107      case '|': return VBAR;
     108      case '}': return RBRACE;
     109      case '~': return TILDE;
     110      }
     111      return OP;
     112  }
     113  
     114  int
     115  _PyToken_TwoChars(int c1, int c2)
     116  {
     117      switch (c1) {
     118      case '!':
     119          switch (c2) {
     120          case '=': return NOTEQUAL;
     121          }
     122          break;
     123      case '%':
     124          switch (c2) {
     125          case '=': return PERCENTEQUAL;
     126          }
     127          break;
     128      case '&':
     129          switch (c2) {
     130          case '=': return AMPEREQUAL;
     131          }
     132          break;
     133      case '*':
     134          switch (c2) {
     135          case '*': return DOUBLESTAR;
     136          case '=': return STAREQUAL;
     137          }
     138          break;
     139      case '+':
     140          switch (c2) {
     141          case '=': return PLUSEQUAL;
     142          }
     143          break;
     144      case '-':
     145          switch (c2) {
     146          case '=': return MINEQUAL;
     147          case '>': return RARROW;
     148          }
     149          break;
     150      case '/':
     151          switch (c2) {
     152          case '/': return DOUBLESLASH;
     153          case '=': return SLASHEQUAL;
     154          }
     155          break;
     156      case ':':
     157          switch (c2) {
     158          case '=': return COLONEQUAL;
     159          }
     160          break;
     161      case '<':
     162          switch (c2) {
     163          case '<': return LEFTSHIFT;
     164          case '=': return LESSEQUAL;
     165          case '>': return NOTEQUAL;
     166          }
     167          break;
     168      case '=':
     169          switch (c2) {
     170          case '=': return EQEQUAL;
     171          }
     172          break;
     173      case '>':
     174          switch (c2) {
     175          case '=': return GREATEREQUAL;
     176          case '>': return RIGHTSHIFT;
     177          }
     178          break;
     179      case '@':
     180          switch (c2) {
     181          case '=': return ATEQUAL;
     182          }
     183          break;
     184      case '^':
     185          switch (c2) {
     186          case '=': return CIRCUMFLEXEQUAL;
     187          }
     188          break;
     189      case '|':
     190          switch (c2) {
     191          case '=': return VBAREQUAL;
     192          }
     193          break;
     194      }
     195      return OP;
     196  }
     197  
     198  int
     199  _PyToken_ThreeChars(int c1, int c2, int c3)
     200  {
     201      switch (c1) {
     202      case '*':
     203          switch (c2) {
     204          case '*':
     205              switch (c3) {
     206              case '=': return DOUBLESTAREQUAL;
     207              }
     208              break;
     209          }
     210          break;
     211      case '.':
     212          switch (c2) {
     213          case '.':
     214              switch (c3) {
     215              case '.': return ELLIPSIS;
     216              }
     217              break;
     218          }
     219          break;
     220      case '/':
     221          switch (c2) {
     222          case '/':
     223              switch (c3) {
     224              case '=': return DOUBLESLASHEQUAL;
     225              }
     226              break;
     227          }
     228          break;
     229      case '<':
     230          switch (c2) {
     231          case '<':
     232              switch (c3) {
     233              case '=': return LEFTSHIFTEQUAL;
     234              }
     235              break;
     236          }
     237          break;
     238      case '>':
     239          switch (c2) {
     240          case '>':
     241              switch (c3) {
     242              case '=': return RIGHTSHIFTEQUAL;
     243              }
     244              break;
     245          }
     246          break;
     247      }
     248      return OP;
     249  }