95 lines
3.9 KiB
TypeScript
95 lines
3.9 KiB
TypeScript
/*!
|
|
* Copyright 2016 The ANTLR Project. All rights reserved.
|
|
* Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.
|
|
*/
|
|
import { Array2DHashSet } from "../misc/Array2DHashSet";
|
|
import { ATN } from "../atn/ATN";
|
|
import { ATNState } from "../atn/ATNState";
|
|
import { DecisionState } from "../atn/DecisionState";
|
|
import { DFAState } from "./DFAState";
|
|
import { TokensStartState } from "../atn/TokensStartState";
|
|
import { Vocabulary } from "../Vocabulary";
|
|
export declare class DFA {
|
|
/**
|
|
* A set of all states in the `DFA`.
|
|
*
|
|
* Note that this collection of states holds the DFA states for both SLL and LL prediction. Only the start state
|
|
* needs to be differentiated for these cases, which is tracked by the `s0` and `s0full` fields.
|
|
*/
|
|
readonly states: Array2DHashSet<DFAState>;
|
|
s0: DFAState | undefined;
|
|
s0full: DFAState | undefined;
|
|
readonly decision: number;
|
|
/** From which ATN state did we create this DFA? */
|
|
atnStartState: ATNState;
|
|
/**
|
|
* Note: this field is accessed as `atnStartState.atn` in other targets. The TypeScript target keeps a separate copy
|
|
* to avoid a number of additional null/undefined checks each time the ATN is accessed.
|
|
*/
|
|
atn: ATN;
|
|
private nextStateNumber;
|
|
/**
|
|
* `true` if this DFA is for a precedence decision; otherwise,
|
|
* `false`. This is the backing field for {@link #isPrecedenceDfa}.
|
|
*/
|
|
private precedenceDfa;
|
|
/**
|
|
* Constructs a `DFA` instance associated with a lexer mode.
|
|
*
|
|
* The start state for a `DFA` constructed with this constructor should be a `TokensStartState`, which is the start
|
|
* state for a lexer mode. The prediction made by this DFA determines the lexer rule which matches the current
|
|
* input.
|
|
*
|
|
* @param atnStartState The start state for the mode.
|
|
*/
|
|
constructor(atnStartState: TokensStartState);
|
|
/**
|
|
* Constructs a `DFA` instance associated with a decision.
|
|
*
|
|
* @param atnStartState The decision associated with this DFA.
|
|
* @param decision The decision number.
|
|
*/
|
|
constructor(atnStartState: DecisionState, decision: number);
|
|
/**
|
|
* Gets whether this DFA is a precedence DFA. Precedence DFAs use a special
|
|
* start state {@link #s0} which is not stored in {@link #states}. The
|
|
* {@link DFAState#edges} array for this start state contains outgoing edges
|
|
* supplying individual start states corresponding to specific precedence
|
|
* values.
|
|
*
|
|
* @returns `true` if this is a precedence DFA; otherwise,
|
|
* `false`.
|
|
* @see Parser.precedence
|
|
*/
|
|
get isPrecedenceDfa(): boolean;
|
|
/**
|
|
* Get the start state for a specific precedence value.
|
|
*
|
|
* @param precedence The current precedence.
|
|
* @returns The start state corresponding to the specified precedence, or
|
|
* `undefined` if no start state exists for the specified precedence.
|
|
*
|
|
* @ if this is not a precedence DFA.
|
|
* @see `isPrecedenceDfa`
|
|
*/
|
|
getPrecedenceStartState(precedence: number, fullContext: boolean): DFAState | undefined;
|
|
/**
|
|
* Set the start state for a specific precedence value.
|
|
*
|
|
* @param precedence The current precedence.
|
|
* @param startState The start state corresponding to the specified
|
|
* precedence.
|
|
*
|
|
* @ if this is not a precedence DFA.
|
|
* @see `isPrecedenceDfa`
|
|
*/
|
|
setPrecedenceStartState(precedence: number, fullContext: boolean, startState: DFAState): void;
|
|
get isEmpty(): boolean;
|
|
get isContextSensitive(): boolean;
|
|
addState(state: DFAState): DFAState;
|
|
toString(): string;
|
|
toString(/*@NotNull*/ vocabulary: Vocabulary): string;
|
|
toString(/*@NotNull*/ vocabulary: Vocabulary, ruleNames: string[] | undefined): string;
|
|
toLexerString(): string;
|
|
}
|