roll-parser - v3.4.0
    Preparing search index...

    Class EvaluatorError

    Error thrown during AST evaluation.

    Lives here rather than in evaluator/evaluator.ts so the modifier implementations can throw it without importing back into the evaluator — that value-level round trip was a genuine ESM cycle. evaluator.ts re-exports the class for existing importers.

    Unlike LexerError / ParseError — which point at a single offset — an EvaluatorError carries a full start/end span covering the failing sub-expression, because by evaluation time the AST knows its own extent.

    import { getErrorSpan, roll } from 'roll-parser';

    try {
    roll('2d6+1d0+3');
    } catch (error) {
    (error as Error).name; // 'EvaluatorError'
    getErrorSpan(error); // { start: 4, end: 7 } — the '1d0' sub-expression
    }

    Hierarchy (View Summary)

    Index
    • Parameters

      • message: string
      • code:
            | "UNEXPECTED_CHARACTER"
            | "UNEXPECTED_IDENTIFIER"
            | "UNEXPECTED_TOKEN"
            | "UNEXPECTED_END"
            | "EXPECTED_TOKEN"
            | "INVALID_DICE_COUNT"
            | "INVALID_DICE_SIDES"
            | "DICE_LIMIT_EXCEEDED"
            | "DIVISION_BY_ZERO"
            | "MODULO_BY_ZERO"
            | "UNKNOWN_OPERATOR"
            | "UNKNOWN_NODE_TYPE"
            | "INVALID_KEEP_DROP_COUNT"
            | "INVALID_KEEP_DROP_TARGET"
            | "EXPLODE_LIMIT_EXCEEDED"
            | "INVALID_EXPLODE_TARGET"
            | "REROLL_LIMIT_EXCEEDED"
            | "INVALID_REROLL_TARGET"
            | "INVALID_SUCCESS_COUNT_TARGET"
            | "INVALID_SORT_TARGET"
            | "INVALID_CRIT_THRESHOLD_TARGET"
            | "INVALID_DIE_BOUND_TARGET"
            | "INVALID_THRESHOLD"
            | "NESTED_VERSUS"
            | "INVALID_FUNCTION_ARITY"
            | "UNKNOWN_FUNCTION"
            | "UNDEFINED_VARIABLE"
            | "INVALID_VARIABLE_VALUE"
            | "AMBIGUOUS_DICE_CHAIN"
            | "MAX_DEPTH_EXCEEDED"
            | "NON_FINITE_RESULT"
            | "INCOMPATIBLE_RNG_STATE"
            | "INVALID_EVALUATION_LIMIT"
            | "INVALID_NOTATION_TYPE"
      • OptionalnodeType:
            | "Literal"
            | "Dice"
            | "FateDice"
            | "BinaryOp"
            | "UnaryOp"
            | "KeepDrop"
            | "Explode"
            | "Reroll"
            | "DieBound"
            | "SuccessCount"
            | "Versus"
            | "FunctionCall"
            | "Grouped"
            | "Variable"
            | "Group"
            | "Sort"
            | "CritThreshold"
      • Optionaloptions: ErrorOptions

      Returns EvaluatorError

    code:
        | "UNEXPECTED_CHARACTER"
        | "UNEXPECTED_IDENTIFIER"
        | "UNEXPECTED_TOKEN"
        | "UNEXPECTED_END"
        | "EXPECTED_TOKEN"
        | "INVALID_DICE_COUNT"
        | "INVALID_DICE_SIDES"
        | "DICE_LIMIT_EXCEEDED"
        | "DIVISION_BY_ZERO"
        | "MODULO_BY_ZERO"
        | "UNKNOWN_OPERATOR"
        | "UNKNOWN_NODE_TYPE"
        | "INVALID_KEEP_DROP_COUNT"
        | "INVALID_KEEP_DROP_TARGET"
        | "EXPLODE_LIMIT_EXCEEDED"
        | "INVALID_EXPLODE_TARGET"
        | "REROLL_LIMIT_EXCEEDED"
        | "INVALID_REROLL_TARGET"
        | "INVALID_SUCCESS_COUNT_TARGET"
        | "INVALID_SORT_TARGET"
        | "INVALID_CRIT_THRESHOLD_TARGET"
        | "INVALID_DIE_BOUND_TARGET"
        | "INVALID_THRESHOLD"
        | "NESTED_VERSUS"
        | "INVALID_FUNCTION_ARITY"
        | "UNKNOWN_FUNCTION"
        | "UNDEFINED_VARIABLE"
        | "INVALID_VARIABLE_VALUE"
        | "AMBIGUOUS_DICE_CHAIN"
        | "MAX_DEPTH_EXCEEDED"
        | "NON_FINITE_RESULT"
        | "INCOMPATIBLE_RNG_STATE"
        | "INVALID_EVALUATION_LIMIT"
        | "INVALID_NOTATION_TYPE"

    Stable programmatic identifier for the failure. Branch on this rather than on message, which is free to change between releases.

    nodeType:
        | "Literal"
        | "Dice"
        | "FateDice"
        | "BinaryOp"
        | "UnaryOp"
        | "KeepDrop"
        | "Explode"
        | "Reroll"
        | "DieBound"
        | "SuccessCount"
        | "Versus"
        | "FunctionCall"
        | "Grouped"
        | "Variable"
        | "Group"
        | "Sort"
        | "CritThreshold"
        | undefined

    ASTNode.type of the node that raised the error ('Dice', 'BinaryOp', …). undefined for failures raised outside a node context, such as the whole-expression dice budget.

    • get end(): number | undefined

      Exclusive end offset of the span described by start.

      Returns number | undefined

    • get start(): number | undefined

      Start offset of the tightest AST node that was being evaluated when the error was thrown. undefined when the AST was built without parser spans.

      Returns number | undefined