UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

63 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaCoordinateLexer = void 0; const syntaxError_ts_1 = require("../error/syntaxError.js"); const ast_ts_1 = require("./ast.js"); const characterClasses_ts_1 = require("./characterClasses.js"); const lexer_ts_1 = require("./lexer.js"); const tokenKind_ts_1 = require("./tokenKind.js"); class SchemaCoordinateLexer { constructor(source) { this.line = 1; this.lineStart = 0; const startOfFileToken = new ast_ts_1.Token(tokenKind_ts_1.TokenKind.SOF, 0, 0, 0, 0); this.source = source; this.lastToken = startOfFileToken; this.token = startOfFileToken; } get [Symbol.toStringTag]() { return 'SchemaCoordinateLexer'; } advance() { this.lastToken = this.token; const token = (this.token = this.lookahead()); return token; } lookahead() { let token = this.token; if (token.kind !== tokenKind_ts_1.TokenKind.EOF) { const nextToken = readNextToken(this, token.end); token.next = nextToken; nextToken.prev = token; token = nextToken; } return token; } } exports.SchemaCoordinateLexer = SchemaCoordinateLexer; function readNextToken(lexer, start) { const body = lexer.source.body; const bodyLength = body.length; const position = start; if (position < bodyLength) { const code = body.charCodeAt(position); switch (code) { case 0x002e: return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.DOT, position, position + 1); case 0x0028: return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.PAREN_L, position, position + 1); case 0x0029: return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.PAREN_R, position, position + 1); case 0x003a: return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.COLON, position, position + 1); case 0x0040: return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.AT, position, position + 1); } if ((0, characterClasses_ts_1.isNameStart)(code)) { return (0, lexer_ts_1.readName)(lexer, position); } throw (0, syntaxError_ts_1.syntaxError)(lexer.source, position, `Invalid character: ${(0, lexer_ts_1.printCodePointAt)(lexer, position)}.`); } return (0, lexer_ts_1.createToken)(lexer, tokenKind_ts_1.TokenKind.EOF, bodyLength, bodyLength); } //# sourceMappingURL=schemaCoordinateLexer.js.map