UNPKG

@mojir/lits

Version:

Lits is a Lisp dialect implemented in TypeScript

87 lines (86 loc) 7.78 kB
import type { ReservedSymbol } from './reservedNames'; import { type SymbolicBinaryOperator, type SymbolicOperator } from './operators'; export declare const tokenTypes: readonly ["LBrace", "LBracket", "RBrace", "RBracket", "LParen", "RParen", "BasePrefixedNumber", "DocString", "Error", "MultiLineComment", "Number", "Operator", "RegexpShorthand", "ReservedSymbol", "SingleLineComment", "Shebang", "String", "Symbol", "Whitespace"]; export type TokenType = typeof tokenTypes[number]; declare const modifierNames: readonly ["&rest", "&let", "&when", "&while"]; export type ModifierName = typeof modifierNames[number]; type GenericToken<T extends TokenType, V extends string = string> = [T, V] | [T, V, SourceCodeInfo]; export type ErrorToken = ['Error', string, SourceCodeInfo | undefined, string]; export type LBraceToken = GenericToken<'LBrace', '{'>; export type LBracketToken = GenericToken<'LBracket', '['>; export type LParenToken = GenericToken<'LParen', '('>; export type RBraceToken = GenericToken<'RBrace', '}'>; export type RBracketToken = GenericToken<'RBracket', ']'>; export type RParenToken = GenericToken<'RParen', ')'>; export type BasePrefixedNumberToken = GenericToken<'BasePrefixedNumber'>; export type MultiLineCommentToken = GenericToken<'MultiLineComment'>; export type NumberToken = GenericToken<'Number'>; export type OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericToken<'Operator', T>; export type RegexpShorthandToken = GenericToken<'RegexpShorthand'>; export type ReservedSymbolToken<T extends ReservedSymbol = ReservedSymbol> = GenericToken<'ReservedSymbol', T>; export type SingleLineCommentToken = GenericToken<'SingleLineComment'>; export type ShebangToken = GenericToken<'Shebang'>; export type StringToken = GenericToken<'String'>; export type DocStringToken = GenericToken<'DocString'>; export type SymbolToken<T extends string = string> = GenericToken<'Symbol', T>; export type WhitespaceToken = GenericToken<'Whitespace'>; export type Token = LBraceToken | LBracketToken | LParenToken | RBraceToken | RBracketToken | RParenToken | BasePrefixedNumberToken | DocStringToken | ErrorToken | MultiLineCommentToken | NumberToken | OperatorToken | RegexpShorthandToken | ReservedSymbolToken | SingleLineCommentToken | ShebangToken | StringToken | SymbolToken | WhitespaceToken; export type TokenDescriptor<T extends Token> = [length: number, token?: T]; export interface SourceCodeInfo { position: { line: number; column: number; }; code: string; filePath?: string; } export declare function isSymbolToken<T extends string>(token: Token | undefined | undefined, symbolName?: T): token is SymbolToken<T>; export declare function assertSymbolToken<T extends string>(token: Token | undefined | undefined, symbolName?: T): asserts token is SymbolToken<T>; export declare function asSymbolToken<T extends string>(token: Token | undefined | undefined, symbolName?: T): SymbolToken<T>; export declare function isReservedSymbolToken<T extends ReservedSymbol>(token: Token | undefined | undefined, symbolName?: T): token is ReservedSymbolToken<T>; export declare function assertReservedSymbolToken<T extends ReservedSymbol>(token: Token | undefined | undefined, symbolName?: T): asserts token is ReservedSymbolToken<T>; export declare function asReservedSymbolToken<T extends ReservedSymbol>(token: Token | undefined | undefined, symbolName?: T): ReservedSymbolToken<T>; export declare function isShebangToken(token: Token | undefined): token is SingleLineCommentToken; export declare function isSingleLineCommentToken(token: Token | undefined): token is SingleLineCommentToken; export declare function isMultiLineCommentToken(token: Token | undefined): token is MultiLineCommentToken; export declare function isOperatorToken<T extends SymbolicOperator>(token: Token | undefined | undefined, operatorName?: T): token is OperatorToken<T>; export declare function assertOperatorToken<T extends SymbolicOperator>(token: Token | undefined | undefined, operatorName?: T): asserts token is OperatorToken<T>; export declare function asOperatorToken<T extends SymbolicOperator>(token: Token | undefined | undefined, operatorName?: T): OperatorToken<T>; export declare function isWhitespaceToken(token: Token | undefined): token is WhitespaceToken; export declare function assertWhitespaceToken(token: Token | undefined): asserts token is WhitespaceToken; export declare function asWhitespaceToken(token: Token | undefined): WhitespaceToken; export declare function isNumberToken(token: Token | undefined): token is NumberToken; export declare function assertNumberToken(token: Token | undefined): asserts token is NumberToken; export declare function asNumberToken(token: Token | undefined): NumberToken; export declare function isBasePrefixedNumberToken(token: Token | undefined): token is BasePrefixedNumberToken; export declare function assertBasePrefixedNumberToken(token: Token | undefined): asserts token is BasePrefixedNumberToken; export declare function asBasePrefixedNumberToken(token: Token | undefined): BasePrefixedNumberToken; export declare function isLParenToken(token: Token | undefined): token is LParenToken; export declare function assertLParenToken(token: Token | undefined): asserts token is LParenToken; export declare function asLParenToken(token: Token | undefined): LParenToken; export declare function isRParenToken(token: Token | undefined): token is RParenToken; export declare function assertRParenToken(token: Token | undefined): asserts token is RParenToken; export declare function asRParenToken(token: Token | undefined): RParenToken; export declare function isLBracketToken(token: Token | undefined): token is LBracketToken; export declare function assertLBracketToken(token: Token | undefined): asserts token is LBracketToken; export declare function asLBracketToken(token: Token | undefined): LBracketToken; export declare function isRBracketToken(token: Token | undefined): token is RBracketToken; export declare function assertRBracketToken(token: Token | undefined): asserts token is RBracketToken; export declare function asRBracketToken(token: Token | undefined): RBracketToken; export declare function isLBraceToken(token: Token | undefined): token is LBraceToken; export declare function assertLBraceToken(token: Token | undefined): asserts token is LBraceToken; export declare function asLBraceToken(token: Token | undefined): LBraceToken; export declare function isRBraceToken(token: Token | undefined): token is RBraceToken; export declare function assertRBraceToken(token: Token | undefined): asserts token is RBraceToken; export declare function asRBraceToken(token: Token | undefined): RBraceToken; export declare function isStringToken(token: Token | undefined): token is StringToken; export declare function assertStringToken(token: Token | undefined): asserts token is StringToken; export declare function asStringToken(token: Token | undefined): StringToken; export declare function isDocStringToken(token: Token | undefined): token is DocStringToken; export declare function isRegexpShorthandToken(token: Token | undefined): token is RegexpShorthandToken; export declare function assertRegexpShorthandToken(token: Token | undefined): asserts token is RegexpShorthandToken; export declare function asRegexpShorthandToken(token: Token | undefined): RegexpShorthandToken; export declare function isA_BinaryOperatorToken(token: Token | undefined): token is OperatorToken<SymbolicBinaryOperator>; export declare function assertA_BinaryOperatorToken(token: Token | undefined): asserts token is OperatorToken<SymbolicBinaryOperator>; export declare function asA_BinaryOperatorToken(token: Token | undefined): OperatorToken<SymbolicBinaryOperator>; export {};