antlr4ng
Version:
Alternative JavaScript/TypeScript runtime for ANTLR4
164 lines (159 loc) • 4.76 kB
JavaScript
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/LexerPushModeAction.ts
var LexerPushModeAction_exports = {};
__export(LexerPushModeAction_exports, {
LexerPushModeAction: () => LexerPushModeAction
});
module.exports = __toCommonJS(LexerPushModeAction_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/LexerPushModeAction.ts
var LexerPushModeAction = class _LexerPushModeAction {
static {
__name(this, "LexerPushModeAction");
}
mode;
actionType;
isPositionDependent = false;
cachedHashCode;
constructor(mode) {
this.actionType = LexerActionType.PUSH_MODE;
this.mode = mode;
}
/**
* This action is implemented by calling {@link Lexer.pushMode} with the
* value provided by {@link getMode}.
*/
execute(lexer) {
lexer.pushMode(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 _LexerPushModeAction)) {
return false;
}
return this.mode === other.mode;
}
toString() {
return "pushMode(" + this.mode + ")";
}
};