UNPKG

antlr4ng

Version:

Alternative JavaScript/TypeScript runtime for ANTLR4

164 lines (159 loc) 4.7 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/atn/LexerModeAction.ts var LexerModeAction_exports = {}; __export(LexerModeAction_exports, { LexerModeAction: () => LexerModeAction }); module.exports = __toCommonJS(LexerModeAction_exports); // src/atn/LexerActionType.ts var LexerActionType = { /** The type of a {@link LexerChannelAction} action. */ CHANNEL: 0, /** The type of a {@link LexerCustomAction} action */ CUSTOM: 1, /** The type of a {@link LexerModeAction} action. */ MODE: 2, /** The type of a {@link LexerMoreAction} action. */ MORE: 3, /** The type of a {@link LexerPopModeAction} action. */ POP_MODE: 4, /** The type of a {@link LexerPushModeAction} action. */ PUSH_MODE: 5, /** The type of a {@link LexerSkipAction} action. */ SKIP: 6, /** The type of a {@link LexerTypeAction} action. */ TYPE: 7 }; // src/utils/MurmurHash.ts var c1 = 3432918353; var c2 = 461845907; var r1 = 15; var r2 = 13; var m = 5; var n = 3864292196; var MurmurHash = class _MurmurHash { static { __name(this, "MurmurHash"); } static defaultSeed = 701; constructor() { } /** * Initialize the hash using the specified {@code seed}. * * @param seed the seed * * @returns the intermediate hash value */ static initialize(seed = _MurmurHash.defaultSeed) { return seed; } static updateFromComparable(hash, value) { return this.update(hash, value?.hashCode() ?? 0); } /** * Update the intermediate hash value for the next input {@code value}. * * @param hash The intermediate hash value. * @param value the value to add to the current hash. * * @returns the updated intermediate hash value */ static update(hash, value) { value = Math.imul(value, c1); value = value << r1 | value >>> 32 - r1; value = Math.imul(value, c2); hash = hash ^ value; hash = hash << r2 | hash >>> 32 - r2; hash = Math.imul(hash, m) + n; return hash; } /** * Apply the final computation steps to the intermediate value {@code hash} * to form the final result of the MurmurHash 3 hash function. * * @param hash The intermediate hash value. * @param entryCount The number of values added to the hash. * * @returns the final hash result */ static finish(hash, entryCount) { hash ^= entryCount * 4; hash ^= hash >>> 16; hash = Math.imul(hash, 2246822507); hash ^= hash >>> 13; hash = Math.imul(hash, 3266489909); hash ^= hash >>> 16; return hash; } /** * An all-in-one convenience method to compute a hash for a single value. * * @param value The value to hash. * @param seed The seed for the hash value. * * @returns The computed hash. */ static hashCode(value, seed) { return _MurmurHash.finish(_MurmurHash.update(seed ?? _MurmurHash.defaultSeed, value), 1); } }; // src/atn/LexerModeAction.ts var LexerModeAction = class _LexerModeAction { static { __name(this, "LexerModeAction"); } mode; actionType; isPositionDependent = false; cachedHashCode; constructor(mode) { this.actionType = LexerActionType.MODE; this.mode = mode; } /** * This action is implemented by calling {@link Lexer.mode} with the * value provided by {@link getMode}. */ execute(lexer) { lexer.mode = this.mode; } hashCode() { if (this.cachedHashCode === void 0) { let hash = MurmurHash.initialize(); hash = MurmurHash.update(hash, this.actionType); hash = MurmurHash.update(hash, this.mode); this.cachedHashCode = MurmurHash.finish(hash, 2); } return this.cachedHashCode; } equals(other) { if (this === other) { return true; } if (!(other instanceof _LexerModeAction)) { return false; } return this.mode === other.mode; } toString() { return "mode(" + this.mode + ")"; } };