383 lines
9.7 KiB
Go
383 lines
9.7 KiB
Go
|
package js_lexer
|
||
|
|
||
|
var tokenToString = map[T]string{
|
||
|
TEndOfFile: "end of file",
|
||
|
TSyntaxError: "syntax error",
|
||
|
THashbang: "hashbang comment",
|
||
|
|
||
|
// Literals
|
||
|
TNoSubstitutionTemplateLiteral: "template literal",
|
||
|
TNumericLiteral: "number",
|
||
|
TStringLiteral: "string",
|
||
|
TBigIntegerLiteral: "bigint",
|
||
|
|
||
|
// Pseudo-literals
|
||
|
TTemplateHead: "template literal",
|
||
|
TTemplateMiddle: "template literal",
|
||
|
TTemplateTail: "template literal",
|
||
|
|
||
|
// Punctuation
|
||
|
TAmpersand: "\"&\"",
|
||
|
TAmpersandAmpersand: "\"&&\"",
|
||
|
TAsterisk: "\"*\"",
|
||
|
TAsteriskAsterisk: "\"**\"",
|
||
|
TAt: "\"@\"",
|
||
|
TBar: "\"|\"",
|
||
|
TBarBar: "\"||\"",
|
||
|
TCaret: "\"^\"",
|
||
|
TCloseBrace: "\"}\"",
|
||
|
TCloseBracket: "\"]\"",
|
||
|
TCloseParen: "\")\"",
|
||
|
TColon: "\":\"",
|
||
|
TComma: "\",\"",
|
||
|
TDot: "\".\"",
|
||
|
TDotDotDot: "\"...\"",
|
||
|
TEqualsEquals: "\"==\"",
|
||
|
TEqualsEqualsEquals: "\"===\"",
|
||
|
TEqualsGreaterThan: "\"=>\"",
|
||
|
TExclamation: "\"!\"",
|
||
|
TExclamationEquals: "\"!=\"",
|
||
|
TExclamationEqualsEquals: "\"!==\"",
|
||
|
TGreaterThan: "\">\"",
|
||
|
TGreaterThanEquals: "\">=\"",
|
||
|
TGreaterThanGreaterThan: "\">>\"",
|
||
|
TGreaterThanGreaterThanGreaterThan: "\">>>\"",
|
||
|
TLessThan: "\"<\"",
|
||
|
TLessThanEquals: "\"<=\"",
|
||
|
TLessThanLessThan: "\"<<\"",
|
||
|
TMinus: "\"-\"",
|
||
|
TMinusMinus: "\"--\"",
|
||
|
TOpenBrace: "\"{\"",
|
||
|
TOpenBracket: "\"[\"",
|
||
|
TOpenParen: "\"(\"",
|
||
|
TPercent: "\"%\"",
|
||
|
TPlus: "\"+\"",
|
||
|
TPlusPlus: "\"++\"",
|
||
|
TQuestion: "\"?\"",
|
||
|
TQuestionDot: "\"?.\"",
|
||
|
TQuestionQuestion: "\"??\"",
|
||
|
TSemicolon: "\";\"",
|
||
|
TSlash: "\"/\"",
|
||
|
TTilde: "\"~\"",
|
||
|
|
||
|
// Assignments
|
||
|
TAmpersandAmpersandEquals: "\"&&=\"",
|
||
|
TAmpersandEquals: "\"&=\"",
|
||
|
TAsteriskAsteriskEquals: "\"**=\"",
|
||
|
TAsteriskEquals: "\"*=\"",
|
||
|
TBarBarEquals: "\"||=\"",
|
||
|
TBarEquals: "\"|=\"",
|
||
|
TCaretEquals: "\"^=\"",
|
||
|
TEquals: "\"=\"",
|
||
|
TGreaterThanGreaterThanEquals: "\">>=\"",
|
||
|
TGreaterThanGreaterThanGreaterThanEquals: "\">>>=\"",
|
||
|
TLessThanLessThanEquals: "\"<<=\"",
|
||
|
TMinusEquals: "\"-=\"",
|
||
|
TPercentEquals: "\"%=\"",
|
||
|
TPlusEquals: "\"+=\"",
|
||
|
TQuestionQuestionEquals: "\"??=\"",
|
||
|
TSlashEquals: "\"/=\"",
|
||
|
|
||
|
// Class-private fields and methods
|
||
|
TPrivateIdentifier: "private identifier",
|
||
|
|
||
|
// Identifiers
|
||
|
TIdentifier: "identifier",
|
||
|
TEscapedKeyword: "escaped keyword",
|
||
|
|
||
|
// Reserved words
|
||
|
TBreak: "\"break\"",
|
||
|
TCase: "\"case\"",
|
||
|
TCatch: "\"catch\"",
|
||
|
TClass: "\"class\"",
|
||
|
TConst: "\"const\"",
|
||
|
TContinue: "\"continue\"",
|
||
|
TDebugger: "\"debugger\"",
|
||
|
TDefault: "\"default\"",
|
||
|
TDelete: "\"delete\"",
|
||
|
TDo: "\"do\"",
|
||
|
TElse: "\"else\"",
|
||
|
TEnum: "\"enum\"",
|
||
|
TExport: "\"export\"",
|
||
|
TExtends: "\"extends\"",
|
||
|
TFalse: "\"false\"",
|
||
|
TFinally: "\"finally\"",
|
||
|
TFor: "\"for\"",
|
||
|
TFunction: "\"function\"",
|
||
|
TIf: "\"if\"",
|
||
|
TImport: "\"import\"",
|
||
|
TIn: "\"in\"",
|
||
|
TInstanceof: "\"instanceof\"",
|
||
|
TNew: "\"new\"",
|
||
|
TNull: "\"null\"",
|
||
|
TReturn: "\"return\"",
|
||
|
TSuper: "\"super\"",
|
||
|
TSwitch: "\"switch\"",
|
||
|
TThis: "\"this\"",
|
||
|
TThrow: "\"throw\"",
|
||
|
TTrue: "\"true\"",
|
||
|
TTry: "\"try\"",
|
||
|
TTypeof: "\"typeof\"",
|
||
|
TVar: "\"var\"",
|
||
|
TVoid: "\"void\"",
|
||
|
TWhile: "\"while\"",
|
||
|
TWith: "\"with\"",
|
||
|
}
|
||
|
|
||
|
// This is from https://github.com/microsoft/TypeScript/blob/master/src/compiler/transformers/jsx.ts
|
||
|
var jsxEntity = map[string]rune{
|
||
|
"quot": 0x0022,
|
||
|
"amp": 0x0026,
|
||
|
"apos": 0x0027,
|
||
|
"lt": 0x003C,
|
||
|
"gt": 0x003E,
|
||
|
"nbsp": 0x00A0,
|
||
|
"iexcl": 0x00A1,
|
||
|
"cent": 0x00A2,
|
||
|
"pound": 0x00A3,
|
||
|
"curren": 0x00A4,
|
||
|
"yen": 0x00A5,
|
||
|
"brvbar": 0x00A6,
|
||
|
"sect": 0x00A7,
|
||
|
"uml": 0x00A8,
|
||
|
"copy": 0x00A9,
|
||
|
"ordf": 0x00AA,
|
||
|
"laquo": 0x00AB,
|
||
|
"not": 0x00AC,
|
||
|
"shy": 0x00AD,
|
||
|
"reg": 0x00AE,
|
||
|
"macr": 0x00AF,
|
||
|
"deg": 0x00B0,
|
||
|
"plusmn": 0x00B1,
|
||
|
"sup2": 0x00B2,
|
||
|
"sup3": 0x00B3,
|
||
|
"acute": 0x00B4,
|
||
|
"micro": 0x00B5,
|
||
|
"para": 0x00B6,
|
||
|
"middot": 0x00B7,
|
||
|
"cedil": 0x00B8,
|
||
|
"sup1": 0x00B9,
|
||
|
"ordm": 0x00BA,
|
||
|
"raquo": 0x00BB,
|
||
|
"frac14": 0x00BC,
|
||
|
"frac12": 0x00BD,
|
||
|
"frac34": 0x00BE,
|
||
|
"iquest": 0x00BF,
|
||
|
"Agrave": 0x00C0,
|
||
|
"Aacute": 0x00C1,
|
||
|
"Acirc": 0x00C2,
|
||
|
"Atilde": 0x00C3,
|
||
|
"Auml": 0x00C4,
|
||
|
"Aring": 0x00C5,
|
||
|
"AElig": 0x00C6,
|
||
|
"Ccedil": 0x00C7,
|
||
|
"Egrave": 0x00C8,
|
||
|
"Eacute": 0x00C9,
|
||
|
"Ecirc": 0x00CA,
|
||
|
"Euml": 0x00CB,
|
||
|
"Igrave": 0x00CC,
|
||
|
"Iacute": 0x00CD,
|
||
|
"Icirc": 0x00CE,
|
||
|
"Iuml": 0x00CF,
|
||
|
"ETH": 0x00D0,
|
||
|
"Ntilde": 0x00D1,
|
||
|
"Ograve": 0x00D2,
|
||
|
"Oacute": 0x00D3,
|
||
|
"Ocirc": 0x00D4,
|
||
|
"Otilde": 0x00D5,
|
||
|
"Ouml": 0x00D6,
|
||
|
"times": 0x00D7,
|
||
|
"Oslash": 0x00D8,
|
||
|
"Ugrave": 0x00D9,
|
||
|
"Uacute": 0x00DA,
|
||
|
"Ucirc": 0x00DB,
|
||
|
"Uuml": 0x00DC,
|
||
|
"Yacute": 0x00DD,
|
||
|
"THORN": 0x00DE,
|
||
|
"szlig": 0x00DF,
|
||
|
"agrave": 0x00E0,
|
||
|
"aacute": 0x00E1,
|
||
|
"acirc": 0x00E2,
|
||
|
"atilde": 0x00E3,
|
||
|
"auml": 0x00E4,
|
||
|
"aring": 0x00E5,
|
||
|
"aelig": 0x00E6,
|
||
|
"ccedil": 0x00E7,
|
||
|
"egrave": 0x00E8,
|
||
|
"eacute": 0x00E9,
|
||
|
"ecirc": 0x00EA,
|
||
|
"euml": 0x00EB,
|
||
|
"igrave": 0x00EC,
|
||
|
"iacute": 0x00ED,
|
||
|
"icirc": 0x00EE,
|
||
|
"iuml": 0x00EF,
|
||
|
"eth": 0x00F0,
|
||
|
"ntilde": 0x00F1,
|
||
|
"ograve": 0x00F2,
|
||
|
"oacute": 0x00F3,
|
||
|
"ocirc": 0x00F4,
|
||
|
"otilde": 0x00F5,
|
||
|
"ouml": 0x00F6,
|
||
|
"divide": 0x00F7,
|
||
|
"oslash": 0x00F8,
|
||
|
"ugrave": 0x00F9,
|
||
|
"uacute": 0x00FA,
|
||
|
"ucirc": 0x00FB,
|
||
|
"uuml": 0x00FC,
|
||
|
"yacute": 0x00FD,
|
||
|
"thorn": 0x00FE,
|
||
|
"yuml": 0x00FF,
|
||
|
"OElig": 0x0152,
|
||
|
"oelig": 0x0153,
|
||
|
"Scaron": 0x0160,
|
||
|
"scaron": 0x0161,
|
||
|
"Yuml": 0x0178,
|
||
|
"fnof": 0x0192,
|
||
|
"circ": 0x02C6,
|
||
|
"tilde": 0x02DC,
|
||
|
"Alpha": 0x0391,
|
||
|
"Beta": 0x0392,
|
||
|
"Gamma": 0x0393,
|
||
|
"Delta": 0x0394,
|
||
|
"Epsilon": 0x0395,
|
||
|
"Zeta": 0x0396,
|
||
|
"Eta": 0x0397,
|
||
|
"Theta": 0x0398,
|
||
|
"Iota": 0x0399,
|
||
|
"Kappa": 0x039A,
|
||
|
"Lambda": 0x039B,
|
||
|
"Mu": 0x039C,
|
||
|
"Nu": 0x039D,
|
||
|
"Xi": 0x039E,
|
||
|
"Omicron": 0x039F,
|
||
|
"Pi": 0x03A0,
|
||
|
"Rho": 0x03A1,
|
||
|
"Sigma": 0x03A3,
|
||
|
"Tau": 0x03A4,
|
||
|
"Upsilon": 0x03A5,
|
||
|
"Phi": 0x03A6,
|
||
|
"Chi": 0x03A7,
|
||
|
"Psi": 0x03A8,
|
||
|
"Omega": 0x03A9,
|
||
|
"alpha": 0x03B1,
|
||
|
"beta": 0x03B2,
|
||
|
"gamma": 0x03B3,
|
||
|
"delta": 0x03B4,
|
||
|
"epsilon": 0x03B5,
|
||
|
"zeta": 0x03B6,
|
||
|
"eta": 0x03B7,
|
||
|
"theta": 0x03B8,
|
||
|
"iota": 0x03B9,
|
||
|
"kappa": 0x03BA,
|
||
|
"lambda": 0x03BB,
|
||
|
"mu": 0x03BC,
|
||
|
"nu": 0x03BD,
|
||
|
"xi": 0x03BE,
|
||
|
"omicron": 0x03BF,
|
||
|
"pi": 0x03C0,
|
||
|
"rho": 0x03C1,
|
||
|
"sigmaf": 0x03C2,
|
||
|
"sigma": 0x03C3,
|
||
|
"tau": 0x03C4,
|
||
|
"upsilon": 0x03C5,
|
||
|
"phi": 0x03C6,
|
||
|
"chi": 0x03C7,
|
||
|
"psi": 0x03C8,
|
||
|
"omega": 0x03C9,
|
||
|
"thetasym": 0x03D1,
|
||
|
"upsih": 0x03D2,
|
||
|
"piv": 0x03D6,
|
||
|
"ensp": 0x2002,
|
||
|
"emsp": 0x2003,
|
||
|
"thinsp": 0x2009,
|
||
|
"zwnj": 0x200C,
|
||
|
"zwj": 0x200D,
|
||
|
"lrm": 0x200E,
|
||
|
"rlm": 0x200F,
|
||
|
"ndash": 0x2013,
|
||
|
"mdash": 0x2014,
|
||
|
"lsquo": 0x2018,
|
||
|
"rsquo": 0x2019,
|
||
|
"sbquo": 0x201A,
|
||
|
"ldquo": 0x201C,
|
||
|
"rdquo": 0x201D,
|
||
|
"bdquo": 0x201E,
|
||
|
"dagger": 0x2020,
|
||
|
"Dagger": 0x2021,
|
||
|
"bull": 0x2022,
|
||
|
"hellip": 0x2026,
|
||
|
"permil": 0x2030,
|
||
|
"prime": 0x2032,
|
||
|
"Prime": 0x2033,
|
||
|
"lsaquo": 0x2039,
|
||
|
"rsaquo": 0x203A,
|
||
|
"oline": 0x203E,
|
||
|
"frasl": 0x2044,
|
||
|
"euro": 0x20AC,
|
||
|
"image": 0x2111,
|
||
|
"weierp": 0x2118,
|
||
|
"real": 0x211C,
|
||
|
"trade": 0x2122,
|
||
|
"alefsym": 0x2135,
|
||
|
"larr": 0x2190,
|
||
|
"uarr": 0x2191,
|
||
|
"rarr": 0x2192,
|
||
|
"darr": 0x2193,
|
||
|
"harr": 0x2194,
|
||
|
"crarr": 0x21B5,
|
||
|
"lArr": 0x21D0,
|
||
|
"uArr": 0x21D1,
|
||
|
"rArr": 0x21D2,
|
||
|
"dArr": 0x21D3,
|
||
|
"hArr": 0x21D4,
|
||
|
"forall": 0x2200,
|
||
|
"part": 0x2202,
|
||
|
"exist": 0x2203,
|
||
|
"empty": 0x2205,
|
||
|
"nabla": 0x2207,
|
||
|
"isin": 0x2208,
|
||
|
"notin": 0x2209,
|
||
|
"ni": 0x220B,
|
||
|
"prod": 0x220F,
|
||
|
"sum": 0x2211,
|
||
|
"minus": 0x2212,
|
||
|
"lowast": 0x2217,
|
||
|
"radic": 0x221A,
|
||
|
"prop": 0x221D,
|
||
|
"infin": 0x221E,
|
||
|
"ang": 0x2220,
|
||
|
"and": 0x2227,
|
||
|
"or": 0x2228,
|
||
|
"cap": 0x2229,
|
||
|
"cup": 0x222A,
|
||
|
"int": 0x222B,
|
||
|
"there4": 0x2234,
|
||
|
"sim": 0x223C,
|
||
|
"cong": 0x2245,
|
||
|
"asymp": 0x2248,
|
||
|
"ne": 0x2260,
|
||
|
"equiv": 0x2261,
|
||
|
"le": 0x2264,
|
||
|
"ge": 0x2265,
|
||
|
"sub": 0x2282,
|
||
|
"sup": 0x2283,
|
||
|
"nsub": 0x2284,
|
||
|
"sube": 0x2286,
|
||
|
"supe": 0x2287,
|
||
|
"oplus": 0x2295,
|
||
|
"otimes": 0x2297,
|
||
|
"perp": 0x22A5,
|
||
|
"sdot": 0x22C5,
|
||
|
"lceil": 0x2308,
|
||
|
"rceil": 0x2309,
|
||
|
"lfloor": 0x230A,
|
||
|
"rfloor": 0x230B,
|
||
|
"lang": 0x2329,
|
||
|
"rang": 0x232A,
|
||
|
"loz": 0x25CA,
|
||
|
"spades": 0x2660,
|
||
|
"clubs": 0x2663,
|
||
|
"hearts": 0x2665,
|
||
|
"diams": 0x2666,
|
||
|
}
|