UNPKG

antlr4ng

Version:

Alternative JavaScript/TypeScript runtime for ANTLR4

143 lines (139 loc) 4.23 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/LexerIndexedCustomAction.ts var LexerIndexedCustomAction_exports = {}; __export(LexerIndexedCustomAction_exports, { LexerIndexedCustomAction: () => LexerIndexedCustomAction }); module.exports = __toCommonJS(LexerIndexedCustomAction_exports); // 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/LexerIndexedCustomAction.ts var LexerIndexedCustomAction = class _LexerIndexedCustomAction { static { __name(this, "LexerIndexedCustomAction"); } offset; action; actionType; isPositionDependent = true; cachedHashCode; constructor(offset, action) { this.actionType = action.actionType; this.offset = offset; this.action = action; } /** * This method calls {@link execute} on the result of {@link getAction} * using the provided `lexer`. */ execute(lexer) { this.action.execute(lexer); } hashCode() { if (this.cachedHashCode === void 0) { let hash = MurmurHash.initialize(); hash = MurmurHash.update(hash, this.offset); hash = MurmurHash.updateFromComparable(hash, this.action); this.cachedHashCode = MurmurHash.finish(hash, 2); } return this.cachedHashCode; } equals(other) { if (this === other) { return true; } if (!(other instanceof _LexerIndexedCustomAction)) { return false; } return this.offset === other.offset && this.action === other.action; } };