UNPKG

xast

Version:
44 lines 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readNumber = void 0; const TokenKind_1 = require("../TokenKind"); const createToken_1 = require("../createToken"); const characterClasses_1 = require("../characterClasses"); const readNumber = (lexer, start, firstCode) => { const source = lexer.source; const body = source.body; let position = start; let code = firstCode; if (code === 0x002d) { code = body.charCodeAt(++position); } if (code === 0x0030) { code = body.charCodeAt(++position); if ((0, characterClasses_1.isDigit)(code)) { throw source.syntaxError(position, `Invalid number, unexpected digit after 0: ${source.printCodePointAt(position)}.`); } } else { position = source.readDigits(position, code); code = body.charCodeAt(position); } if (code === 0x002e) { code = body.charCodeAt(++position); position = source.readDigits(position, code); code = body.charCodeAt(position); } if (code === 0x0045 || code === 0x0065) { code = body.charCodeAt(++position); if (code === 0x002b || code === 0x002d) { code = body.charCodeAt(++position); } position = source.readDigits(position, code); code = body.charCodeAt(position); } if (code === 0x002e || (0, characterClasses_1.isNameStart)(code)) { throw source.syntaxError(position, `Invalid number, expected digit but got: ${source.printCodePointAt(position)}.`); } return (0, createToken_1.createToken)(lexer, TokenKind_1.TokenKind.NUMBER, start, position, body.slice(start, position)); }; exports.readNumber = readNumber; //# sourceMappingURL=readNumber.js.map