// noinspection RegExpSuspiciousBackref import { createToken, Lexer } from "chevrotain"; // ============================================ // Abstract Tokens (for categorization, not directly matched) // ============================================ /** * Abstract token category for comparison operators. * Used as a parent category for `:`, `:<`, `:>`, `:<=`, `:>=`. */ export const ComparatorToken = createToken({ name: "Comparator", pattern: Lexer.NA, }); /** * Abstract token category for field identifiers. * Used as a parent category for field name tokens. */ export const FieldToken = createToken({ name: "Field", pattern: Lexer.NA, }); /** * Abstract token category for values. * Used as a parent category for all value type tokens. */ export const ValueToken = createToken({ name: "Value", pattern: Lexer.NA, }); // ============================================ // Comparators // ============================================ /** * Greater than or equal operator token (`:>=`). */ export const GreaterThanOrEqualToken = createToken({ name: "GreaterThanOrEqual", pattern: /:>=/, categories: [ComparatorToken], }); /** * Greater than operator token (`:>`). */ export const GreaterThanToken = createToken({ name: "GreaterThan", pattern: /:>/, categories: [ComparatorToken], }); /** * Less than or equal operator token (`:<=`). */ export const LessThanOrEqualToken = createToken({ name: "LessThanOrEqual", pattern: /:<=/, categories: [ComparatorToken], }); /** * Less than operator token (`:<`). */ export const LessThanToken = createToken({ name: "LessThan", pattern: /: