INNER CODE UNIT · TypeScript
createParser
be-thomas/OpenPineScript · parser/v1/index.ts:52
export function createParser<TParser extends Parser, TTree>(
TokenSourceCtor: new (input: any) => Lexer,
ParserCtor: new (input: CommonTokenStream) => TParser,
entry: (parser: TParser) => TTree,
): (source: string) => ParseResult<TTree> {
return function parse(source: string): ParseResult<TTree> {
const inputStream = CharStreams.fromString(source);
// The custom token source wraps the generated lexer and turns indentation
// into the virtual BEGIN/END/LEND tokens the grammar expects.
const lexer = new TokenSourceCtor(inputStream);
lexer.removeErrorListeners();
const lexerListener = new ErrorCollector();
lexer.addErrorListener(lexerListener);
const tokenStream = new CommonTokenStream(lexer);
const parser = new ParserCtor(tokenStream);