/** * @typedef {typeof GROUP_OPEN_SYMBOLS extends ReadonlyArray ? T : never} GroupKind */ /** * @typedef {typeof GROUP_CLOSE_SYMBOLS extends ReadonlyArray ? T : never} GroupCloseKind */ /** * @typedef {CommonTokenProps & { * kind: GroupKind * separators: SymbolToken[] * error: string | null * isGroup(kind?: string | undefined, nFields?: number | undefined): boolean * }} CommonGroupProps */ /** * @typedef {CommonGroupProps & { * fields: Token[][] * }} TokenGroup */ /** * @typedef {CommonTokenProps & { * kind: "int", * value: bigint * isEqual(other: Token): boolean * }} IntLiteral */ /** * @typedef {CommonTokenProps & { * kind: "real" * value: bigint * isEqual(other: Token): boolean * }} RealLiteral */ /** * @typedef {CommonTokenProps & { * kind: "string" * value: string * isEqual(other: Token): boolean * }} StringLiteral */ /** * @template {string} [T=string] * @typedef {CommonTokenProps & { * kind: "symbol" * value: T * isEqual(other: Token): boolean * matches(value: string | ReadonlyArray): boolean * }} SymbolToken */ /** * @typedef {CommonTokenProps & { * kind: "word" * value: string * isEqual(other: Token): boolean * isInternal(): boolean * isKeyword(): boolean * matches(value: string | string[]): boolean * }} Word */ /** * @typedef {( * BoolLiteral * | ByteArrayLiteral * | Comment * | TokenGroup * | IntLiteral * | RealLiteral * | StringLiteral * | SymbolToken * | Word * )} Token */ /** * @param {Token} t * @returns {t is TokenGroup} */ export function isGroup(t: Token): t is TokenGroup; /** * @import {Site} from "src/index.js" */ /** * @typedef {{ * site: Site * toString(preserveWhitespace?: boolean): string * }} CommonTokenProps */ /** * @typedef {CommonTokenProps & { * kind: "bool" * value: boolean * isEqual(other: Token): boolean * }} BoolLiteral */ /** * @typedef {CommonTokenProps & { * kind: "bytes" * value: number[] * isEqual(other: Token): boolean * }} ByteArrayLiteral */ /** * @typedef {CommonTokenProps & { * kind: "comment" * value: string * isEqual(other: Token): boolean * }} Comment */ export const GROUP_OPEN_SYMBOLS: readonly ["(", "[", "{"]; export const GROUP_CLOSE_SYMBOLS: readonly [")", "]", "}"]; export type GroupKind = typeof GROUP_OPEN_SYMBOLS extends ReadonlyArray ? T : never; export type GroupCloseKind = typeof GROUP_CLOSE_SYMBOLS extends ReadonlyArray ? T : never; export type CommonGroupProps = CommonTokenProps & { kind: GroupKind; separators: SymbolToken[]; error: string | null; isGroup(kind?: string | undefined, nFields?: number | undefined): boolean; }; export type TokenGroup = CommonGroupProps & { fields: Token[][]; }; export type IntLiteral = CommonTokenProps & { kind: "int"; value: bigint; isEqual(other: Token): boolean; }; export type RealLiteral = CommonTokenProps & { kind: "real"; value: bigint; isEqual(other: Token): boolean; }; export type StringLiteral = CommonTokenProps & { kind: "string"; value: string; isEqual(other: Token): boolean; }; export type SymbolToken = CommonTokenProps & { kind: "symbol"; value: T; isEqual(other: Token): boolean; matches(value: string | ReadonlyArray): boolean; }; export type Word = CommonTokenProps & { kind: "word"; value: string; isEqual(other: Token): boolean; isInternal(): boolean; isKeyword(): boolean; matches(value: string | string[]): boolean; }; export type Token = (BoolLiteral | ByteArrayLiteral | Comment | TokenGroup | IntLiteral | RealLiteral | StringLiteral | SymbolToken | Word); export type CommonTokenProps = { site: Site; toString(preserveWhitespace?: boolean): string; }; export type BoolLiteral = CommonTokenProps & { kind: "bool"; value: boolean; isEqual(other: Token): boolean; }; export type ByteArrayLiteral = CommonTokenProps & { kind: "bytes"; value: number[]; isEqual(other: Token): boolean; }; export type Comment = CommonTokenProps & { kind: "comment"; value: string; isEqual(other: Token): boolean; }; import type { Site } from "src/index.js"; //# sourceMappingURL=Token.d.ts.map