code: function() {
  					var ch, to_check, tc_len;
  
  					gobbleSpaces();
  					ch = exprICode(index);
  
  					if(isDecimalDigit(ch) || ch === PERIOD_CODE) {
  						// Char code 46 is a dot `.` which can start off a numeric literal
  						return gobbleNumericLiteral();
  					} else if(ch === SQUOTE_CODE || ch === DQUOTE_CODE) {
  						// Single or double quotes
  						return gobbleStringLiteral();
  					} else if (ch === OBRACK_CODE) {
  						return gobbleArray();
  					} else {
  						to_check = expr.substr(index, max_unop_len);
  						tc_len = to_check.length;
  						while(tc_len > 0) {
  						// Don't accept an unary op when it is an identifier.
  						// Unary ops that start with a identifier-valid character must be followed
  						// by a non identifier-part valid character
  							if(unary_ops.hasOwnProperty(to_check) && (
  								!isIdentifierStart(exprICode(index)) ||
  								(index+to_check.length < expr.length && !isIdentifierPart(exprICode(index+to_check.length)))
  							)) {
  								index += tc_len;
  								return {
  									type: UNARY_EXP,
  									operator: to_check,
  									argument: gobbleToken(),
  									prefix: true
  								};
  							}
  							to_check = to_check.substr(0, --tc_len);
  						}
  
  						if (isIdentifierStart(ch) || ch === OPAREN_CODE) { // open parenthesis
  							// `foo`, `bar.baz`
  							return gobbleVariable();
  						}
  					}
  
  					return false;
  				}
docs: `index` stores the character number we are currently at while `length` is a constant All of the gobbles below will modify `index` as we move along