import * as TSU from "@panyam/tsutils"; import { Grammar, Sym, Str, Rule } from "./grammar"; type NumMap = TSU.NumMap; type StringMap = TSU.StringMap; type Nullable = TSU.Nullable; export declare class Trie { protected keyFunc: (t: T) => string; readonly root: TrieNode; constructor(keyFunc: (t: T) => string); add(values: T[], fromIndex?: number): TrieNode; get debugValue(): any; } export declare class TrieNode { isLeaf: boolean; value: Nullable; parent: Nullable>; children: Map>; get debugValue(): any; } export declare class IDSet { protected _entries: T[]; protected _entriesByKey: StringMap; protected keyFunc: (t: T) => string; constructor(keyFunc?: (t: T) => string); clear(): void; remove(predicate: (t: T) => boolean): boolean; get entries(): ReadonlyArray; get(id: number): T; getByKey(key: string): Nullable; ensure(entry: T, throwIfExists?: boolean): T; has(entry: T): boolean; get size(): number; } export declare class SymbolSet { readonly grammar: Grammar; readonly enforceSymbolType: Nullable; entries: Set; hasNull: boolean; constructor(grammar: Grammar, enforceSymbolType?: Nullable); get debugString(): string; labels(skipAux?: boolean): string[]; addFrom(another: SymbolSet, includeNull?: boolean): number; addTo(another: SymbolSet, includeNull?: boolean): number; has(term: Sym): boolean; add(term: Sym): this; delete(term: Sym): boolean; get size(): number; } export declare class NullableSet { readonly grammar: Grammar; entries: Set; private visited; constructor(grammar: Grammar); get nonterms(): Sym[]; refresh(): void; protected visit(nt: Sym): void; isNullable(nt: Sym): boolean; isStrNullable(str: Str, fromIndex?: number, toIndex?: Nullable): boolean; add(nt: Sym): void; } declare class SymSymbolSets { readonly grammar: Grammar; entries: NumMap; private _count; constructor(grammar: Grammar); refresh(): void; forEachTerm(nt: Sym, visitor: (x: Nullable) => boolean | void): void; get debugValue(): any; get count(): number; entriesFor(sym: Sym): SymbolSet; addNull(nt: Sym): boolean; add(nt: Sym, source: Sym, includeNull?: boolean): boolean; } export declare class FirstSets extends SymSymbolSets { readonly nullables: NullableSet; constructor(grammar: Grammar, nullables?: NullableSet); forEachTermIn(str: Str, fromIndex: number | undefined, visitor: (term: Nullable) => void): void; refresh(): void; processRule(rule: Rule): void; } export declare class FollowSets extends SymSymbolSets { readonly firstSets: FirstSets; constructor(grammar: Grammar, firstSets?: FirstSets); get nullables(): NullableSet; refresh(): void; processRule(rule: Rule): void; } export {};