UNPKG

chevrotain

Version:

Chevrotain is a high performance fault tolerant javascript parsing DSL for building recursive decent parsers

96 lines 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tokenMatcher = exports.createTokenInstance = exports.EOF = exports.createToken = exports.hasTokenLabel = exports.tokenName = exports.tokenLabel = void 0; var utils_1 = require("../utils/utils"); var lexer_public_1 = require("./lexer_public"); var tokens_1 = require("./tokens"); function tokenLabel(tokType) { if (hasTokenLabel(tokType)) { return tokType.LABEL; } else { return tokType.name; } } exports.tokenLabel = tokenLabel; function tokenName(tokType) { return tokType.name; } exports.tokenName = tokenName; function hasTokenLabel(obj) { return utils_1.isString(obj.LABEL) && obj.LABEL !== ""; } exports.hasTokenLabel = hasTokenLabel; var PARENT = "parent"; var CATEGORIES = "categories"; var LABEL = "label"; var GROUP = "group"; var PUSH_MODE = "push_mode"; var POP_MODE = "pop_mode"; var LONGER_ALT = "longer_alt"; var LINE_BREAKS = "line_breaks"; var START_CHARS_HINT = "start_chars_hint"; function createToken(config) { return createTokenInternal(config); } exports.createToken = createToken; function createTokenInternal(config) { var pattern = config.pattern; var tokenType = {}; tokenType.name = config.name; if (!utils_1.isUndefined(pattern)) { tokenType.PATTERN = pattern; } if (utils_1.has(config, PARENT)) { throw ("The parent property is no longer supported.\n" + "See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details."); } if (utils_1.has(config, CATEGORIES)) { // casting to ANY as this will be fixed inside `augmentTokenTypes`` tokenType.CATEGORIES = config[CATEGORIES]; } tokens_1.augmentTokenTypes([tokenType]); if (utils_1.has(config, LABEL)) { tokenType.LABEL = config[LABEL]; } if (utils_1.has(config, GROUP)) { tokenType.GROUP = config[GROUP]; } if (utils_1.has(config, POP_MODE)) { tokenType.POP_MODE = config[POP_MODE]; } if (utils_1.has(config, PUSH_MODE)) { tokenType.PUSH_MODE = config[PUSH_MODE]; } if (utils_1.has(config, LONGER_ALT)) { tokenType.LONGER_ALT = config[LONGER_ALT]; } if (utils_1.has(config, LINE_BREAKS)) { tokenType.LINE_BREAKS = config[LINE_BREAKS]; } if (utils_1.has(config, START_CHARS_HINT)) { tokenType.START_CHARS_HINT = config[START_CHARS_HINT]; } return tokenType; } exports.EOF = createToken({ name: "EOF", pattern: lexer_public_1.Lexer.NA }); tokens_1.augmentTokenTypes([exports.EOF]); function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) { return { image: image, startOffset: startOffset, endOffset: endOffset, startLine: startLine, endLine: endLine, startColumn: startColumn, endColumn: endColumn, tokenTypeIdx: tokType.tokenTypeIdx, tokenType: tokType }; } exports.createTokenInstance = createTokenInstance; function tokenMatcher(token, tokType) { return tokens_1.tokenStructuredMatcher(token, tokType); } exports.tokenMatcher = tokenMatcher; //# sourceMappingURL=tokens_public.js.map