Function buildExpressionParser

  • Builds an expression parser that handles operator precedence and associativity. Operators are given as an array of precedence levels, from highest to lowest. Each level is an array of operators at that precedence.

    const expr = buildExpressionParser(
    numberParser,
    [
    [{ op: char("*"), assoc: "left", apply: (a, b) => a * b },
    { op: char("/"), assoc: "left", apply: (a, b) => a / b }],
    [{ op: char("+"), assoc: "left", apply: (a, b) => a + b },
    { op: char("-"), assoc: "left", apply: (a, b) => a - b }],
    ],
    // optional: override how parenthesized sub-expressions are parsed
    // defaults to: seqR(char("("), lazy(() => expr), char(")")) mapped to the middle result
    );

    Type Parameters

    • T

    Parameters

    • atom: Parser<T>

      parser for the smallest unit (numbers, identifiers, parenthesized sub-expressions)

    • operatorTable: OperatorInfo<T>[][]

      array of precedence levels, highest first. Each level is an array of OperatorInfo.

    • Optional parenParser: Parser<T>

      optional parser for parenthesized sub-expressions. If not provided, one is built automatically using ( and ) with lazy to handle recursion.

    Returns Parser<T>

    • a parser that handles the full expression grammar

Generated using TypeDoc