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

    Class LexerError

    Error thrown when the lexer encounters an invalid character.

    position is a zero-based UTF-16 offset into the input. It is deliberately absent from message — read it from the field, or uniformly across all roll-parser errors via getErrorSpan.

    Codes: UNEXPECTED_CHARACTER for a character that cannot start any token, UNEXPECTED_IDENTIFIER for a word that is not a known keyword.

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

    try {
    roll('2d6+&');
    } catch (error) {
    const typed = error as LexerError;
    typed.code; // 'UNEXPECTED_CHARACTER'
    typed.character; // '&'
    typed.position; // 4
    }

    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"
      • position: number
      • character: string
      • Optionaloptions: ErrorOptions

      Returns LexerError

    character: string

    The offending text — a single character for UNEXPECTED_CHARACTER (the whole code point, so astral symbols are not split into surrogates), or the unrecognized word for UNEXPECTED_IDENTIFIER.

    Not guaranteed to appear in message — errors that name a rule rather than a character leave it out.

    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.

    position: number

    Zero-based UTF-16 offset of the offending character in the input.