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);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…