token_const.go 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. package token
  2. const (
  3. _ Token = iota
  4. ILLEGAL
  5. EOF
  6. COMMENT
  7. KEYWORD
  8. STRING
  9. BOOLEAN
  10. NULL
  11. NUMBER
  12. IDENTIFIER
  13. PLUS // +
  14. MINUS // -
  15. MULTIPLY // *
  16. SLASH // /
  17. REMAINDER // %
  18. AND // &
  19. OR // |
  20. EXCLUSIVE_OR // ^
  21. SHIFT_LEFT // <<
  22. SHIFT_RIGHT // >>
  23. UNSIGNED_SHIFT_RIGHT // >>>
  24. AND_NOT // &^
  25. ADD_ASSIGN // +=
  26. SUBTRACT_ASSIGN // -=
  27. MULTIPLY_ASSIGN // *=
  28. QUOTIENT_ASSIGN // /=
  29. REMAINDER_ASSIGN // %=
  30. AND_ASSIGN // &=
  31. OR_ASSIGN // |=
  32. EXCLUSIVE_OR_ASSIGN // ^=
  33. SHIFT_LEFT_ASSIGN // <<=
  34. SHIFT_RIGHT_ASSIGN // >>=
  35. UNSIGNED_SHIFT_RIGHT_ASSIGN // >>>=
  36. AND_NOT_ASSIGN // &^=
  37. LOGICAL_AND // &&
  38. LOGICAL_OR // ||
  39. INCREMENT // ++
  40. DECREMENT // --
  41. EQUAL // ==
  42. STRICT_EQUAL // ===
  43. LESS // <
  44. GREATER // >
  45. ASSIGN // =
  46. NOT // !
  47. BITWISE_NOT // ~
  48. NOT_EQUAL // !=
  49. STRICT_NOT_EQUAL // !==
  50. LESS_OR_EQUAL // <=
  51. GREATER_OR_EQUAL // >=
  52. LEFT_PARENTHESIS // (
  53. LEFT_BRACKET // [
  54. LEFT_BRACE // {
  55. COMMA // ,
  56. PERIOD // .
  57. RIGHT_PARENTHESIS // )
  58. RIGHT_BRACKET // ]
  59. RIGHT_BRACE // }
  60. SEMICOLON // ;
  61. COLON // :
  62. QUESTION_MARK // ?
  63. firstKeyword // nolint: deadcode
  64. IF
  65. IN
  66. DO
  67. VAR
  68. FOR
  69. NEW
  70. TRY
  71. THIS
  72. ELSE
  73. CASE
  74. VOID
  75. WITH
  76. WHILE
  77. BREAK
  78. CATCH
  79. THROW
  80. RETURN
  81. TYPEOF
  82. DELETE
  83. SWITCH
  84. DEFAULT
  85. FINALLY
  86. FUNCTION
  87. CONTINUE
  88. DEBUGGER
  89. INSTANCEOF
  90. lastKeyword // nolint: deadcode
  91. )
  92. var token2string = [...]string{
  93. ILLEGAL: "ILLEGAL",
  94. EOF: "EOF",
  95. COMMENT: "COMMENT",
  96. KEYWORD: "KEYWORD",
  97. STRING: "STRING",
  98. BOOLEAN: "BOOLEAN",
  99. NULL: "NULL",
  100. NUMBER: "NUMBER",
  101. IDENTIFIER: "IDENTIFIER",
  102. PLUS: "+",
  103. MINUS: "-",
  104. MULTIPLY: "*",
  105. SLASH: "/",
  106. REMAINDER: "%",
  107. AND: "&",
  108. OR: "|",
  109. EXCLUSIVE_OR: "^",
  110. SHIFT_LEFT: "<<",
  111. SHIFT_RIGHT: ">>",
  112. UNSIGNED_SHIFT_RIGHT: ">>>",
  113. AND_NOT: "&^",
  114. ADD_ASSIGN: "+=",
  115. SUBTRACT_ASSIGN: "-=",
  116. MULTIPLY_ASSIGN: "*=",
  117. QUOTIENT_ASSIGN: "/=",
  118. REMAINDER_ASSIGN: "%=",
  119. AND_ASSIGN: "&=",
  120. OR_ASSIGN: "|=",
  121. EXCLUSIVE_OR_ASSIGN: "^=",
  122. SHIFT_LEFT_ASSIGN: "<<=",
  123. SHIFT_RIGHT_ASSIGN: ">>=",
  124. UNSIGNED_SHIFT_RIGHT_ASSIGN: ">>>=",
  125. AND_NOT_ASSIGN: "&^=",
  126. LOGICAL_AND: "&&",
  127. LOGICAL_OR: "||",
  128. INCREMENT: "++",
  129. DECREMENT: "--",
  130. EQUAL: "==",
  131. STRICT_EQUAL: "===",
  132. LESS: "<",
  133. GREATER: ">",
  134. ASSIGN: "=",
  135. NOT: "!",
  136. BITWISE_NOT: "~",
  137. NOT_EQUAL: "!=",
  138. STRICT_NOT_EQUAL: "!==",
  139. LESS_OR_EQUAL: "<=",
  140. GREATER_OR_EQUAL: ">=",
  141. LEFT_PARENTHESIS: "(",
  142. LEFT_BRACKET: "[",
  143. LEFT_BRACE: "{",
  144. COMMA: ",",
  145. PERIOD: ".",
  146. RIGHT_PARENTHESIS: ")",
  147. RIGHT_BRACKET: "]",
  148. RIGHT_BRACE: "}",
  149. SEMICOLON: ";",
  150. COLON: ":",
  151. QUESTION_MARK: "?",
  152. IF: "if",
  153. IN: "in",
  154. DO: "do",
  155. VAR: "var",
  156. FOR: "for",
  157. NEW: "new",
  158. TRY: "try",
  159. THIS: "this",
  160. ELSE: "else",
  161. CASE: "case",
  162. VOID: "void",
  163. WITH: "with",
  164. WHILE: "while",
  165. BREAK: "break",
  166. CATCH: "catch",
  167. THROW: "throw",
  168. RETURN: "return",
  169. TYPEOF: "typeof",
  170. DELETE: "delete",
  171. SWITCH: "switch",
  172. DEFAULT: "default",
  173. FINALLY: "finally",
  174. FUNCTION: "function",
  175. CONTINUE: "continue",
  176. DEBUGGER: "debugger",
  177. INSTANCEOF: "instanceof",
  178. }
  179. var keywordTable = map[string]_keyword{
  180. "if": _keyword{
  181. token: IF,
  182. },
  183. "in": _keyword{
  184. token: IN,
  185. },
  186. "do": _keyword{
  187. token: DO,
  188. },
  189. "var": _keyword{
  190. token: VAR,
  191. },
  192. "for": _keyword{
  193. token: FOR,
  194. },
  195. "new": _keyword{
  196. token: NEW,
  197. },
  198. "try": _keyword{
  199. token: TRY,
  200. },
  201. "this": _keyword{
  202. token: THIS,
  203. },
  204. "else": _keyword{
  205. token: ELSE,
  206. },
  207. "case": _keyword{
  208. token: CASE,
  209. },
  210. "void": _keyword{
  211. token: VOID,
  212. },
  213. "with": _keyword{
  214. token: WITH,
  215. },
  216. "while": _keyword{
  217. token: WHILE,
  218. },
  219. "break": _keyword{
  220. token: BREAK,
  221. },
  222. "catch": _keyword{
  223. token: CATCH,
  224. },
  225. "throw": _keyword{
  226. token: THROW,
  227. },
  228. "return": _keyword{
  229. token: RETURN,
  230. },
  231. "typeof": _keyword{
  232. token: TYPEOF,
  233. },
  234. "delete": _keyword{
  235. token: DELETE,
  236. },
  237. "switch": _keyword{
  238. token: SWITCH,
  239. },
  240. "default": _keyword{
  241. token: DEFAULT,
  242. },
  243. "finally": _keyword{
  244. token: FINALLY,
  245. },
  246. "function": _keyword{
  247. token: FUNCTION,
  248. },
  249. "continue": _keyword{
  250. token: CONTINUE,
  251. },
  252. "debugger": _keyword{
  253. token: DEBUGGER,
  254. },
  255. "instanceof": _keyword{
  256. token: INSTANCEOF,
  257. },
  258. "const": _keyword{
  259. token: KEYWORD,
  260. futureKeyword: true,
  261. },
  262. "class": _keyword{
  263. token: KEYWORD,
  264. futureKeyword: true,
  265. },
  266. "enum": _keyword{
  267. token: KEYWORD,
  268. futureKeyword: true,
  269. },
  270. "export": _keyword{
  271. token: KEYWORD,
  272. futureKeyword: true,
  273. },
  274. "extends": _keyword{
  275. token: KEYWORD,
  276. futureKeyword: true,
  277. },
  278. "import": _keyword{
  279. token: KEYWORD,
  280. futureKeyword: true,
  281. },
  282. "super": _keyword{
  283. token: KEYWORD,
  284. futureKeyword: true,
  285. },
  286. "implements": _keyword{
  287. token: KEYWORD,
  288. futureKeyword: true,
  289. strict: true,
  290. },
  291. "interface": _keyword{
  292. token: KEYWORD,
  293. futureKeyword: true,
  294. strict: true,
  295. },
  296. "let": _keyword{
  297. token: KEYWORD,
  298. futureKeyword: true,
  299. strict: true,
  300. },
  301. "package": _keyword{
  302. token: KEYWORD,
  303. futureKeyword: true,
  304. strict: true,
  305. },
  306. "private": _keyword{
  307. token: KEYWORD,
  308. futureKeyword: true,
  309. strict: true,
  310. },
  311. "protected": _keyword{
  312. token: KEYWORD,
  313. futureKeyword: true,
  314. strict: true,
  315. },
  316. "public": _keyword{
  317. token: KEYWORD,
  318. futureKeyword: true,
  319. strict: true,
  320. },
  321. "static": _keyword{
  322. token: KEYWORD,
  323. futureKeyword: true,
  324. strict: true,
  325. },
  326. }