import * as TSU from "@panyam/tsutils"; import * as TLEX from "tlex"; import { Sym, Grammar, Rule } from "./grammar"; import { PFNode, ParallelParser as ParserBase, BeforeAddingChildCallback, RuleReductionCallback, NextTokenCallback } from "./parser"; import { ParseTable } from "./lr"; type NumMap = TSU.NumMap; export declare class SPPF { nodes: PFNode[]; addNode(sym: Sym, value: any, ...children: PFNode[]): PFNode; } export declare class GSSVertex { readonly id: number; readonly stateId: number; gen: number; outgoing: NumMap; constructor(id: number, stateId: number); addEdge(another: GSSVertex, pfNode: PFNode): void; hasOutgoing(another: GSSVertex): boolean; } export declare class GSS { gen: number; protected vertices: GSSVertex[]; addVertex(stateId: number): GSSVertex; getVertex(id: number): GSSVertex; recurse(startV: GSSVertex, length: number, path: GSSVertex[], callback: any): void; } export declare class Parser extends ParserBase { readonly parseTable: ParseTable; flatten: boolean; beforeAddingChildNode: BeforeAddingChildCallback; onReduction: RuleReductionCallback; onNextToken: NextTokenCallback; gss: GSS; sppf: SPPF; rootVertex: null | GSSVertex; A: GSSVertex[]; U: GSSVertex[]; Unext: GSSVertex[]; R: [GSSVertex, Rule, GSSVertex[]][]; Q: [GSSVertex, number][]; constructor(parseTable: ParseTable, config?: any); get grammar(): Grammar; protected parseInput(input: TLEX.Tape, delegate?: any): PFNode[]; reset(): void; processToken(token: null | TLEX.Token): void; processShifts(nextSym: Sym, nextValue: any): void; processReductions(nextSym: Sym): void; processAction(token: null | TLEX.Token): void; } export {};