UNPKG

@mojir/lits

Version:

Lits is a Lisp dialect implemented in TypeScript

59 lines (58 loc) 2.27 kB
import type { CondNode } from '../builtin/specialExpressions/cond'; import type { LambdaNode } from '../builtin/specialExpressions/functions'; import type { IfNode } from '../builtin/specialExpressions/if'; import type { SwitchNode } from '../builtin/specialExpressions/switch'; import type { UnlessNode } from '../builtin/specialExpressions/unless'; import type { SymbolToken, Token } from '../tokenizer/token'; import type { TokenStream } from '../tokenizer/tokenize'; import { type BindingTarget, type Node, type ParseState } from './types'; type InternalLoopBindingDelimiter = 'let' | 'when' | 'while'; export declare class Parser { private readonly tokenStream; private parseState; constructor(tokenStream: TokenStream, parseState: ParseState); private peek; private peekSourceCodeInfo; private peekAhead; private advance; parse(): Node[]; private parseExpression; asToken(token: Token | undefined): Token; private parseOperand; private parseOperandPart; private parseObject; private parseArray; private parseFunctionCall; parseLambdaFunction(): LambdaNode | null; parseFunctionArguments(): BindingTarget[]; private parseShorthandLamdaFunction; private parseOptionalDefaulValue; private parseBindingTarget; private parseLet; private parseBlock; private parseImplicitBlock; private assertImplicitBlockEnd; private isImplicitBlockEnd; private parseLoop; private parseTry; private parseForOrDoseq; private parseForLoopBinding; assertInternalLoopBindingDelimiter(token: Token, symbols: InternalLoopBindingDelimiter[]): void; isInternalLoopBindingDelimiter(token: Token, symbols: InternalLoopBindingDelimiter[]): boolean; private parseBinding; parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode; parseCond(token: SymbolToken): CondNode; parseSwitch(token: SymbolToken): SwitchNode; private isAtEnd; private isAtExpressionEnd; private parseExport; private stringToSymbolNode; stringFromQuotedSymbol(value: string): string; private parseSymbol; private parseReservedSymbol; private parseNumber; private parseDocString; private parseString; private parseRegexpShorthand; } export {};