parse.d.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { Tree } from "./tree";
  2. export interface ChangedRange {
  3. fromA: number;
  4. toA: number;
  5. fromB: number;
  6. toB: number;
  7. }
  8. export declare class TreeFragment {
  9. readonly from: number;
  10. readonly to: number;
  11. readonly tree: Tree;
  12. readonly offset: number;
  13. constructor(from: number, to: number, tree: Tree, offset: number, openStart?: boolean, openEnd?: boolean);
  14. get openStart(): boolean;
  15. get openEnd(): boolean;
  16. static addTree(tree: Tree, fragments?: readonly TreeFragment[], partial?: boolean): TreeFragment[];
  17. static applyChanges(fragments: readonly TreeFragment[], changes: readonly ChangedRange[], minGap?: number): readonly TreeFragment[];
  18. }
  19. export interface PartialParse {
  20. advance(): Tree | null;
  21. readonly parsedPos: number;
  22. stopAt(pos: number): void;
  23. readonly stoppedAt: number | null;
  24. }
  25. export declare abstract class Parser {
  26. abstract createParse(input: Input, fragments: readonly TreeFragment[], ranges: readonly {
  27. from: number;
  28. to: number;
  29. }[]): PartialParse;
  30. startParse(input: Input | string, fragments?: readonly TreeFragment[], ranges?: readonly {
  31. from: number;
  32. to: number;
  33. }[]): PartialParse;
  34. parse(input: Input | string, fragments?: readonly TreeFragment[], ranges?: readonly {
  35. from: number;
  36. to: number;
  37. }[]): Tree;
  38. }
  39. export interface Input {
  40. readonly length: number;
  41. chunk(from: number): string;
  42. readonly lineChunks: boolean;
  43. read(from: number, to: number): string;
  44. }
  45. export declare type ParseWrapper = (inner: PartialParse, input: Input, fragments: readonly TreeFragment[], ranges: readonly {
  46. from: number;
  47. to: number;
  48. }[]) => PartialParse;