import { FileParser, ProjectFile } from "@atomist/automation-client"; import { PathExpression, TreeNode } from "@atomist/tree-path"; import { ANTLRInputStream, Lexer, Parser, TokenStream } from "antlr4ts"; /** * Required functions on a lexer class generated by ANTLR */ export interface LexerClass { readonly ruleNames: string[]; new (is: ANTLRInputStream): Lexer; } /** * Required functions on a parser class generated by ANTLR */ export interface ParserClass { readonly ruleNames: string[]; new (ts: TokenStream): Parser; } /** * Generic FileParser implementation based on an ANTLR grammars. */ export declare class AntlrFileParser implements FileParser { rootName: string; private readonly lexerClass; private readonly parserClass; /** * Create a generic FileParser using an ANTLR grammar. * Use like this, passing in the lexer and parser classes: * const p = new AntlrFileParser("compilationUnit", JavaLexer, JavaParser); * @param {string} rootName name of top level production. * @param lexerClass lexer class * @param parserClass parser class */ constructor(rootName: string, lexerClass: LexerClass, parserClass: ParserClass); toAst(f: ProjectFile): Promise; validate(pex: PathExpression): void; }