import Logger from '../Logger'; import Node from './Node'; import ParserContext from './ParserContext'; import Token from './Token'; import TokenType from './TokenType'; declare type ParserPrefixRule = (token: Token, ctx: ParserContext) => Node; declare type ParserInfixRule = (left: Node, token: Token, ctx: ParserContext) => Node; export default class Parser { logger: Logger; prefixRules: { [key: number]: ParserPrefixRule; }; infixRules: { [key: number]: ParserInfixRule; }; infixPrecedence: { [key: string]: number; }; prefixPrecedence: { [key: string]: number; }; constructor(logger: Logger); parse(ctx: ParserContext): Promise; parseNode(precedence: number, ctx: ParserContext): Node; peekToken(type: TokenType | null, ctx: ParserContext): Token | undefined; consumeToken(type: TokenType | null, ctx: ParserContext): Token | undefined; peekPrecedence(infix: boolean, ctx: ParserContext): number; getPrecedence(infix: boolean, token: Token): number; error(msg: string, token: Token | undefined, ctx: ParserContext): void; } export {};