import IParserDebug from "../parsertooling/IParserDebug"; import { PRuleResult } from "./PObjectMap"; import SeepParser from "./SeepParser"; import GRule from "./grammar/GRule"; import BreakExpression from "../parsertooling/breakpoint/BreakExpression"; import ParserState from "../parsertooling/ParserState"; import { ISourceList } from "@cafetextual/util"; import SourceLocation from "@cafetextual/util/dist/src/source/SourceLocation"; /** * Manages parsing by line + debugger integration. * */ export default class IncrementalParser implements IParserDebug { /** * Optional debugger */ debugger: IParserDebug; out: PRuleResult; private _p; private _rule0; private _breakExp; private _content; private line0; private isFirst; char0: number; line1: number; char1: number; invOffset: number; line2: number; char2: number; readonly ___currentLineObject: any; private _done; inProgress(): boolean; readonly done: boolean; hasErrored(): boolean; /** * The root result. */ private _root; readonly root: PRuleResult; /** * Simply clears any cached values, doesn't reset state - be sure to subsequently call invalidate */ clearCache(lineID: number): void; getLastValidLine(): number; /** * Invalidates the parser at a given index, and prepares it for incremental parsing * * - requires previous line to have been sucessfully parsed * */ invalidateLine(lineID: number): ParserState; init(p: SeepParser, content: ISourceList, defaultRule: GRule, breakExp?: BreakExpression): void; private _lastState; private _lastOut; private _lastErrorOut; private _lastLineIndex; private _lastLine; private _errored; private _parserStatesByLine; private _resultByLine; private cacheState(state, result, lineID); private getCachedState(lineID); private _debugState; breakpointState(): ParserState; atBreakpoint(): boolean; private _stepDebugger; step(stepDebugger: IParserDebug): PRuleResult; cont(): PRuleResult; private postParse(); private afterFirstLineParse(); afterLineParse(): PRuleResult; curentLine(): string; parseLine(): PRuleResult; erroredAt(): number; errorStr(): string; errLocation(): SourceLocation; private toParentLineRule(state); debug(state: ParserState): boolean; debug_low(state: ParserState): boolean; readonly remainder: string; readonly currentMatch: string; private _objectMapper; mapdata(): Object; }