token.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. """Token constants."""
  2. # Auto-generated by Tools/build/generate_token.py
  3. __all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF',
  4. 'EXACT_TOKEN_TYPES']
  5. ENDMARKER = 0
  6. NAME = 1
  7. NUMBER = 2
  8. STRING = 3
  9. NEWLINE = 4
  10. INDENT = 5
  11. DEDENT = 6
  12. LPAR = 7
  13. RPAR = 8
  14. LSQB = 9
  15. RSQB = 10
  16. COLON = 11
  17. COMMA = 12
  18. SEMI = 13
  19. PLUS = 14
  20. MINUS = 15
  21. STAR = 16
  22. SLASH = 17
  23. VBAR = 18
  24. AMPER = 19
  25. LESS = 20
  26. GREATER = 21
  27. EQUAL = 22
  28. DOT = 23
  29. PERCENT = 24
  30. LBRACE = 25
  31. RBRACE = 26
  32. EQEQUAL = 27
  33. NOTEQUAL = 28
  34. LESSEQUAL = 29
  35. GREATEREQUAL = 30
  36. TILDE = 31
  37. CIRCUMFLEX = 32
  38. LEFTSHIFT = 33
  39. RIGHTSHIFT = 34
  40. DOUBLESTAR = 35
  41. PLUSEQUAL = 36
  42. MINEQUAL = 37
  43. STAREQUAL = 38
  44. SLASHEQUAL = 39
  45. PERCENTEQUAL = 40
  46. AMPEREQUAL = 41
  47. VBAREQUAL = 42
  48. CIRCUMFLEXEQUAL = 43
  49. LEFTSHIFTEQUAL = 44
  50. RIGHTSHIFTEQUAL = 45
  51. DOUBLESTAREQUAL = 46
  52. DOUBLESLASH = 47
  53. DOUBLESLASHEQUAL = 48
  54. AT = 49
  55. ATEQUAL = 50
  56. RARROW = 51
  57. ELLIPSIS = 52
  58. COLONEQUAL = 53
  59. EXCLAMATION = 54
  60. OP = 55
  61. AWAIT = 56
  62. ASYNC = 57
  63. TYPE_IGNORE = 58
  64. TYPE_COMMENT = 59
  65. SOFT_KEYWORD = 60
  66. FSTRING_START = 61
  67. FSTRING_MIDDLE = 62
  68. FSTRING_END = 63
  69. COMMENT = 64
  70. NL = 65
  71. # These aren't used by the C tokenizer but are needed for tokenize.py
  72. ERRORTOKEN = 66
  73. ENCODING = 67
  74. N_TOKENS = 68
  75. # Special definitions for cooperation with parser
  76. NT_OFFSET = 256
  77. tok_name = {value: name
  78. for name, value in globals().items()
  79. if isinstance(value, int) and not name.startswith('_')}
  80. __all__.extend(tok_name.values())
  81. EXACT_TOKEN_TYPES = {
  82. '!': EXCLAMATION,
  83. '!=': NOTEQUAL,
  84. '%': PERCENT,
  85. '%=': PERCENTEQUAL,
  86. '&': AMPER,
  87. '&=': AMPEREQUAL,
  88. '(': LPAR,
  89. ')': RPAR,
  90. '*': STAR,
  91. '**': DOUBLESTAR,
  92. '**=': DOUBLESTAREQUAL,
  93. '*=': STAREQUAL,
  94. '+': PLUS,
  95. '+=': PLUSEQUAL,
  96. ',': COMMA,
  97. '-': MINUS,
  98. '-=': MINEQUAL,
  99. '->': RARROW,
  100. '.': DOT,
  101. '...': ELLIPSIS,
  102. '/': SLASH,
  103. '//': DOUBLESLASH,
  104. '//=': DOUBLESLASHEQUAL,
  105. '/=': SLASHEQUAL,
  106. ':': COLON,
  107. ':=': COLONEQUAL,
  108. ';': SEMI,
  109. '<': LESS,
  110. '<<': LEFTSHIFT,
  111. '<<=': LEFTSHIFTEQUAL,
  112. '<=': LESSEQUAL,
  113. '=': EQUAL,
  114. '==': EQEQUAL,
  115. '>': GREATER,
  116. '>=': GREATEREQUAL,
  117. '>>': RIGHTSHIFT,
  118. '>>=': RIGHTSHIFTEQUAL,
  119. '@': AT,
  120. '@=': ATEQUAL,
  121. '[': LSQB,
  122. ']': RSQB,
  123. '^': CIRCUMFLEX,
  124. '^=': CIRCUMFLEXEQUAL,
  125. '{': LBRACE,
  126. '|': VBAR,
  127. '|=': VBAREQUAL,
  128. '}': RBRACE,
  129. '~': TILDE,
  130. }
  131. def ISTERMINAL(x):
  132. return x < NT_OFFSET
  133. def ISNONTERMINAL(x):
  134. return x >= NT_OFFSET
  135. def ISEOF(x):
  136. return x == ENDMARKER