add hw2
This commit is contained in:
		
							
								
								
									
										81
									
								
								node_modules/sucrase/dist/esm/util/isIdentifier.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								node_modules/sucrase/dist/esm/util/isIdentifier.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| import {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from "../parser/util/identifier"; | ||||
|  | ||||
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar | ||||
| // Hard-code a list of reserved words rather than trying to use keywords or contextual keywords | ||||
| // from the parser, since currently there are various exceptions, like `package` being reserved | ||||
| // but unused and various contextual keywords being reserved. Note that we assume that all code | ||||
| // compiled by Sucrase is in a module, so strict mode words and await are all considered reserved | ||||
| // here. | ||||
| const RESERVED_WORDS = new Set([ | ||||
|   // Reserved keywords as of ECMAScript 2015 | ||||
|   "break", | ||||
|   "case", | ||||
|   "catch", | ||||
|   "class", | ||||
|   "const", | ||||
|   "continue", | ||||
|   "debugger", | ||||
|   "default", | ||||
|   "delete", | ||||
|   "do", | ||||
|   "else", | ||||
|   "export", | ||||
|   "extends", | ||||
|   "finally", | ||||
|   "for", | ||||
|   "function", | ||||
|   "if", | ||||
|   "import", | ||||
|   "in", | ||||
|   "instanceof", | ||||
|   "new", | ||||
|   "return", | ||||
|   "super", | ||||
|   "switch", | ||||
|   "this", | ||||
|   "throw", | ||||
|   "try", | ||||
|   "typeof", | ||||
|   "var", | ||||
|   "void", | ||||
|   "while", | ||||
|   "with", | ||||
|   "yield", | ||||
|   // Future reserved keywords | ||||
|   "enum", | ||||
|   "implements", | ||||
|   "interface", | ||||
|   "let", | ||||
|   "package", | ||||
|   "private", | ||||
|   "protected", | ||||
|   "public", | ||||
|   "static", | ||||
|   "await", | ||||
|   // Literals that cannot be used as identifiers | ||||
|   "false", | ||||
|   "null", | ||||
|   "true", | ||||
| ]); | ||||
|  | ||||
| /** | ||||
|  * Determine if the given name is a legal variable name. | ||||
|  * | ||||
|  * This is needed when transforming TypeScript enums; if an enum key is a valid | ||||
|  * variable name, it might be referenced later in the enum, so we need to | ||||
|  * declare a variable. | ||||
|  */ | ||||
| export default function isIdentifier(name) { | ||||
|   if (name.length === 0) { | ||||
|     return false; | ||||
|   } | ||||
|   if (!IS_IDENTIFIER_START[name.charCodeAt(0)]) { | ||||
|     return false; | ||||
|   } | ||||
|   for (let i = 1; i < name.length; i++) { | ||||
|     if (!IS_IDENTIFIER_CHAR[name.charCodeAt(i)]) { | ||||
|       return false; | ||||
|     } | ||||
|   } | ||||
|   return !RESERVED_WORDS.has(name); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 nik
					nik