import { CstNode, ICstVisitor, ILexingError, IRecognitionException, IToken, } from "chevrotain"; export function parse( text: string, startProduction?: string ): { cst: CstNode; tokenVector: IToken[]; // TODO: decouple from Chevrotain APIs? lexErrors: ILexingError[]; parseErrors: IRecognitionException[]; }; export const BaseXmlCstVisitor: XmlCstVisitorConstructor; export const BaseXmlCstVisitorWithDefaults: XmlCstVisitorWithDefaultsConstructor< any, any >; export abstract class XmlCstVisitor implements ICstVisitor { // No need to implement these two methods // Generic Visit method implemented by the Chevrotain Library visit(cstNode: CstNode | CstNode[], param?: IN): OUT; validateVisitor(): void; document(ctx: DocumentCtx, param?: IN): OUT; prolog(ctx: PrologCtx, param?: IN): OUT; docTypeDecl(ctx: DocTypeDeclCtx, param?: IN): OUT; externalID(ctx: ExternalIDCtx, param?: IN): OUT; content(ctx: ContentCtx, param?: IN): OUT; element(ctx: ElementCtx, param?: IN): OUT; reference(ctx: ReferenceCtx, param?: IN): OUT; attribute(ctx: AttributeCtx, param?: IN): OUT; chardata(ctx: ChardataCtx, param?: IN): OUT; misc(ctx: MiscCtx, param?: IN): OUT; } interface XmlCstVisitorConstructor { new (): XmlCstVisitor; } export abstract class XmlCstVisitorWithDefaults implements ICstVisitor { // No need to implement these two methods // Generic Visit method implemented by the Chevrotain Library visit(cstNode: CstNode | CstNode[], param?: IN): OUT; validateVisitor(): void; document(ctx: DocumentCtx, param?: IN): OUT; prolog(ctx: PrologCtx, param?: IN): OUT; docTypeDecl(ctx: DocTypeDeclCtx, param?: IN): OUT; externalID(ctx: ExternalIDCtx, param?: IN): OUT; content(ctx: ContentCtx, param?: IN): OUT; element(ctx: ElementCtx, param?: IN): OUT; reference(ctx: ReferenceCtx, param?: IN): OUT; attribute(ctx: AttributeCtx, param?: IN): OUT; chardata(ctx: ChardataCtx, param?: IN): OUT; misc(ctx: MiscCtx, param?: IN): OUT; } interface XmlCstVisitorWithDefaultsConstructor { new (): XmlCstVisitorWithDefaults; } export interface DocumentCstNode extends CstNode { name: "document"; children: DocumentCtx; } export type DocumentCtx = { prolog: PrologCstNode[]; docTypeDecl: DocTypeDeclNode[]; misc: MiscCstNode[]; element: ElementCstNode[]; }; export interface PrologCstNode extends CstNode { name: "prolog"; children: PrologCtx; } export type PrologCtx = { XMLDeclOpen: IToken[]; attribute: AttributeCstNode[]; SPECIAL_CLOSE: IToken[]; }; export interface DocTypeDeclNode extends CstNode { name: "docTypeDecl"; children: DocTypeDeclCtx; } export type DocTypeDeclCtx = { DocType: IToken[]; Name: IToken[]; externalID: ExternalIDNode[]; }; export interface ExternalIDNode extends CstNode { name: "ExternalIDNode"; children: ExternalIDCtx; } export type ExternalIDCtx = { System: IToken[]; Public: IToken[]; PubIDLiteral: IToken[]; SystemLiteral: IToken[]; }; export interface ContentCstNode extends CstNode { name: "content"; children: ContentCtx; } export type ContentCtx = { chardata: ChardataCstNode[]; element: ElementCstNode[]; reference: ReferenceCstNode[]; CData: IToken[]; Comment: IToken[]; }; export interface ElementCstNode extends CstNode { name: "element"; children: ElementCtx; } export type ElementCtx = { OPEN: IToken[]; Name: IToken[]; attribute: AttributeCstNode[]; START_CLOSE: IToken[]; content: ContentCstNode[]; SLASH_OPEN: IToken[]; END_NAME: IToken[]; END: IToken[]; SLASH_CLOSE: IToken[]; }; export interface ReferenceCstNode extends CstNode { name: "reference"; children: ReferenceCtx; } export type ReferenceCtx = { EntityRef: IToken[]; CharRef: IToken[]; }; export interface AttributeCstNode extends CstNode { name: "attribute"; children: AttributeCtx; } export type AttributeCtx = { Name: IToken[]; EQUALS: IToken[]; STRING: IToken[]; }; export interface ChardataCstNode extends CstNode { name: "chardata"; children: ChardataCtx; } export type ChardataCtx = { TEXT: IToken[]; SEA_WS: IToken[]; }; export interface MiscCstNode extends CstNode { name: "misc"; children: MiscCtx; } export type MiscCtx = { Comment: IToken[]; PROCESSING_INSTRUCTION: IToken[]; SEA_WS: IToken[]; };