function gobbleBase10(env) {
			const startIndex = this.index;
			let number = '';

			const gobbleDigits = () => {
				while (Jsep.isDecimalDigit(this.code) || this.code === UNDERSCORE) {
					if (this.code === UNDERSCORE) {
						this.index++;
					}
					else {
						number += this.expr.charAt(this.index++);
					}
				}
			};

			gobbleDigits();
			if (this.code === Jsep.PERIOD_CODE) { // can start with a decimal marker
				number += this.expr.charAt(this.index++);

				gobbleDigits();
			}

			let ch = this.char;
			if (ch === 'e' || ch === 'E') { // exponent marker
				number += this.expr.charAt(this.index++);
				ch = this.char;

				if (ch === '+' || ch === '-') { // exponent sign
					number += this.expr.charAt(this.index++);
				}

				gobbleDigits(); // exponent itself

				if (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) ) {
					this.throwError('Expected exponent (' + number + this.char + ')');
				}
			}

			const chCode = this.code;

			// Check to make sure this isn't a variable name that start with a number (123abc)
			if (Jsep.isIdentifierStart(chCode)) {
				this.throwError('Variable names cannot start with a number (' +
					number + this.char + ')');
			}
			else if (chCode === Jsep.PERIOD_CODE) {
				if (number.length > 1) {
					this.throwError(`Unexpected period ${JSON.stringify({ chCode, number }, null, 2)}`);
				}
				// leave other error-handling to jsep core. Also allows spread operator.
				this.index = startIndex;
				return;
			}

			env.node = {
				type: Jsep.LITERAL,
				value: parseFloat(number),
				raw: this.expr.substring(startIndex, this.index),
			};
		}
Same as core gobbleNumericLiteral, but allows for _ char
@param {{ context?: typeof Jsep, node?: Expression }} env