UNPKG

antlr4-runtime

Version:

JavaScript runtime for ANTLR4

39 lines (32 loc) 1.72 kB
/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved. * Use is of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ import DecisionState from "../state/DecisionState.js"; import ATNConfig from "./ATNConfig.js"; export default class LexerATNConfig extends ATNConfig { constructor(params, config) { super(params, config); // This is the backing field for {@link //getLexerActionExecutor}. const lexerActionExecutor = params.lexerActionExecutor || null; this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null); this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false; this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode; this.equalsForConfigSet = LexerATNConfig.prototype.equals; return this; } updateHashCode(hash) { hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor); } equals(other) { return this === other || (other instanceof LexerATNConfig && this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision && (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) && super.equals(other)); } checkNonGreedyDecision(source, target) { return source.passedThroughNonGreedyDecision || (target instanceof DecisionState) && target.nonGreedy; } }