@mojir/lits
Version:
Lits is a Lisp dialect implemented in TypeScript
59 lines (58 loc) • 2.27 kB
TypeScript
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 {};